diff --git a/Justfile b/Justfile index 5e1bc39..6eef62a 100644 --- a/Justfile +++ b/Justfile @@ -351,27 +351,27 @@ validate-rsr: for f in .editorconfig .gitignore Justfile README.adoc LICENSE 0-AI-MANIFEST.a2ml; do [ -f "$f" ] || MISSING="$MISSING $f" done - for f in .machine_readable/STATE.a2ml .machine_readable/META.a2ml .machine_readable/ECOSYSTEM.a2ml .machine_readable/anchors/ANCHOR.a2ml .machine_readable/policies/MAINTENANCE-AXES.a2ml .machine_readable/policies/MAINTENANCE-CHECKLIST.a2ml .machine_readable/policies/SOFTWARE-DEVELOPMENT-APPROACH.a2ml; do + for f in .machine_readable/6a2/STATE.a2ml .machine_readable/6a2/META.a2ml .machine_readable/6a2/ECOSYSTEM.a2ml .machine_readable/anchors/ANCHOR.a2ml .machine_readable/policies/MAINTENANCE-AXES.a2ml .machine_readable/policies/MAINTENANCE-CHECKLIST.a2ml .machine_readable/policies/SOFTWARE-DEVELOPMENT-APPROACH.a2ml; do [ -f "$f" ] || MISSING="$MISSING $f" done - for f in licensing/exhibits/EXHIBIT-A-ETHICAL-USE.txt licensing/exhibits/EXHIBIT-B-QUANTUM-SAFE.txt licensing/texts/MPL-2.0.txt; do + for f in docs/legal/EXHIBIT-A-ETHICAL-USE.txt docs/legal/EXHIBIT-B-QUANTUM-SAFE.txt LICENSES/MPL-2.0.txt; do [ -f "$f" ] || MISSING="$MISSING $f" done for f in src/interface/abi src/interface/generated ffi/zig; do [ -d "$f" ] || MISSING="$MISSING $f" done - for f in docs/maintenance/MAINTENANCE-CHECKLIST.adoc docs/practice/SOFTWARE-DEVELOPMENT-APPROACH.adoc; do + for f in docs/governance/MAINTENANCE-CHECKLIST.adoc docs/governance/SOFTWARE-DEVELOPMENT-APPROACH.adoc; do [ -f "$f" ] || MISSING="$MISSING $f" done - if [ -f ".machine_readable/META.a2ml" ]; then - grep -q 'axis-1 = "must > intend > like"' .machine_readable/META.a2ml || MISSING="$MISSING META.a2ml:axis-1" - grep -q 'axis-2 = "corrective > adaptive > perfective"' .machine_readable/META.a2ml || MISSING="$MISSING META.a2ml:axis-2" - grep -q 'axis-3 = "systems > compliance > effects"' .machine_readable/META.a2ml || MISSING="$MISSING META.a2ml:axis-3" - grep -q 'scoping-first = true' .machine_readable/META.a2ml || MISSING="$MISSING META.a2ml:scoping-first" - grep -q 'idris-unsound-scan = "believe_me/assert_total"' .machine_readable/META.a2ml || MISSING="$MISSING META.a2ml:idris-unsound-scan" - grep -q 'audit-focus = "systems in place, documentation explains actual state, safety/security accounted for, observed effects reviewed"' .machine_readable/META.a2ml || MISSING="$MISSING META.a2ml:audit-focus" - grep -q 'compliance-focus = "seams/compromises/exception register, bounded exceptions, anti-drift checks"' .machine_readable/META.a2ml || MISSING="$MISSING META.a2ml:compliance-focus" - grep -q 'effects-evidence = "benchmark execution/results and maintainer status dialogue/review"' .machine_readable/META.a2ml || MISSING="$MISSING META.a2ml:effects-evidence" + if [ -f ".machine_readable/6a2/META.a2ml" ]; then + grep -q 'axis-1 = "must > intend > like"' .machine_readable/6a2/META.a2ml || MISSING="$MISSING META.a2ml:axis-1" + grep -q 'axis-2 = "corrective > adaptive > perfective"' .machine_readable/6a2/META.a2ml || MISSING="$MISSING META.a2ml:axis-2" + grep -q 'axis-3 = "systems > compliance > effects"' .machine_readable/6a2/META.a2ml || MISSING="$MISSING META.a2ml:axis-3" + grep -q 'scoping-first = true' .machine_readable/6a2/META.a2ml || MISSING="$MISSING META.a2ml:scoping-first" + grep -q 'idris-unsound-scan = "believe_me/assert_total"' .machine_readable/6a2/META.a2ml || MISSING="$MISSING META.a2ml:idris-unsound-scan" + grep -q 'audit-focus = "systems in place, documentation explains actual state, safety/security accounted for, observed effects reviewed"' .machine_readable/6a2/META.a2ml || MISSING="$MISSING META.a2ml:audit-focus" + grep -q 'compliance-focus = "seams/compromises/exception register, bounded exceptions, anti-drift checks"' .machine_readable/6a2/META.a2ml || MISSING="$MISSING META.a2ml:compliance-focus" + grep -q 'effects-evidence = "benchmark execution/results and maintainer status dialogue/review"' .machine_readable/6a2/META.a2ml || MISSING="$MISSING META.a2ml:effects-evidence" grep -q 'compliance-tooling = "panic-attack"' .machine_readable/policies/MAINTENANCE-AXES.a2ml || MISSING="$MISSING MAINTENANCE-AXES.a2ml:compliance-tooling" grep -q 'effects-tooling = "ecological checking with sustainabot guidance"' .machine_readable/policies/MAINTENANCE-AXES.a2ml || MISSING="$MISSING MAINTENANCE-AXES.a2ml:effects-tooling" grep -q 'source-human = "docs/maintenance/MAINTENANCE-CHECKLIST.adoc"' .machine_readable/policies/MAINTENANCE-CHECKLIST.a2ml || MISSING="$MISSING MAINTENANCE-CHECKLIST.a2ml:source-human" diff --git a/README.adoc b/README.adoc index ef40b88..2e53d6f 100644 --- a/README.adoc +++ b/README.adoc @@ -11,6 +11,8 @@ image:https://img.shields.io/badge/OpenSSF-Best_Practices-green?logo=opensources image:https://img.shields.io/badge/believe__me-0-brightgreen[believe_me: 0] image:https://img.shields.io/badge/Levels-L1--10_checked_core_(L11--12_draft)-blue[Levels: checked core] +image::brand/social-preview.svg[typed-wasm,align="center"] + [NOTE] .typed-wasm is a meeting point for two unrelated languages ==== diff --git a/brand/BRAND.adoc b/brand/BRAND.adoc new file mode 100644 index 0000000..3c41a16 --- /dev/null +++ b/brand/BRAND.adoc @@ -0,0 +1,72 @@ +// SPDX-License-Identifier: CC-BY-SA-4.0 += typed-wasm Brand Pack +:toc: + +== Mark + +The typed-wasm mark is a grid of memory cells — the schemaless linear-memory +byte array — laid out behind a single violet *schema bracket* that binds the +cells into a typed *region*. Two cells glow as typed fields; the rest stay +faint, still untyped bytes. One linear cell carries an exactly-once tick. The +glyph states the whole idea in one image: a schema (region) drawn over a +schemaless database (WASM linear memory), so every load and store is checked +against the type before it runs. + +The name is the symbolism: WebAssembly's linear memory is an untyped byte +array; *typed-wasm* puts TypeLL's progressive type safety over it — regions +are tables, loads are SELECT, stores are UPDATE, and the Idris2 prover verifies +each access at compile time. + +|=== +| File | Use + +| `icon.svg` | Primary mark with dark background (rounded corners). README, docs, about screens. +| `icon-square.svg` | Transparent background mark. Favicon, app icon, overlay on custom backgrounds. +| `social-preview.svg` | GitHub / Open Graph social preview (1280x640). "typed-wasm" wordmark + mark. +| `marr-levels.svg` | Explainer: the project at David Marr's three levels of analysis. +| `sandler-submarine.svg` | Impact / case-making: the seven sealed compartments of adoption. +|=== + +== Colours + +[cols="1,1,2"] +|=== +| Name | Hex | Use + +| WASM Violet | `#a371f7` | Primary brand colour. The schema bracket, typed cells, active states, headings. +| Schema Indigo | `#8957e5` | Secondary. Untyped-cell outlines, the region grid, muted accents. +| Background | `#0d1117` | Dark surfaces. GitHub-dark compatible. +| Foreground | `#e6edf3` | Text on dark background. +| Glow | `#1d1233` | Radial background glow behind the mark. +|=== + +== Typography + +Wordmark uses the system font stack: `system-ui, -apple-system, 'Segoe UI', Helvetica, Arial, sans-serif` at weight 300 (light), lowercase. The subtitle is set at the same stack, weight 300. + +No custom font is required. All text is set in the SVG, not a separate font file. + +== Rules + +- The mark always shows the memory-cell grid with the schema bracket binding a typed region over it. Never draw the typed cells without the faint untyped cells — that would deny the core insight (a schema *over* a schemaless byte array). +- The violet must be `#a371f7` — do not approximate with other violets/purples. +- The wordmark is always lowercase `typed-wasm`. +- On light backgrounds, invert: violet `#6f42c1` strokes and `#1b1f24` text on white/light grey. +- The subtitle ("regions over a schemaless byte array") is the etymology of the idea, not a marketing strapline; it may appear on repository assets. Sales/marketing straplines never appear on repository assets. +- Claims on assets stay inside the checked envelope: the L1-L10 core is checked (0 `believe_me`); L11-L12 are draft. Do not put "all levels verified" on any asset (ADR-003). + +== Generating raster assets + +[source,shell] +---- +# Requires Inkscape or rsvg-convert (librsvg) + +# Favicon (64x64 PNG) +rsvg-convert -w 64 -h 64 icon-square.svg > favicon-64.png + +# App icon (512x512 PNG) +rsvg-convert -w 512 -h 512 icon.svg > icon-512.png + +# Social preview (1280x640 PNG for GitHub) +rsvg-convert -w 1280 -h 640 social-preview.svg > social-preview.png +---- diff --git a/brand/icon-square.svg b/brand/icon-square.svg new file mode 100644 index 0000000..4b6b0cd --- /dev/null +++ b/brand/icon-square.svg @@ -0,0 +1,53 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/brand/icon.svg b/brand/icon.svg new file mode 100644 index 0000000..24622a1 --- /dev/null +++ b/brand/icon.svg @@ -0,0 +1,71 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/brand/marr-levels.svg b/brand/marr-levels.svg new file mode 100644 index 0000000..b73b64d --- /dev/null +++ b/brand/marr-levels.svg @@ -0,0 +1,52 @@ + + + + + + + + + + + + + + + typed-wasm — at Marr's three levels + one system, read from intent down to substrate + + + + + abstract → concrete + + + + + + + ? + Computational — what & why + Guarantee type-safe access to WASM linear memory — no type-mismatched + load/store, no UAF, exactly-once — so untyped bytes become a typed database. + + + + + + + + Algorithmic — representation & process + Regions are schemas (tables); loads are SELECT, stores are UPDATE. TypeLL's + checked L1-L10 ladder verifies each typed access against the schema. + + + + + + + + Implementational — physical substrate + Idris2 ABI (TypedWasm/ABI/, 0 believe_me) + Zig FFI (ffi/zig/) + Rust verifier + crates/typed-wasm-verify/. .twasm grammar; target WasmGC; katagoria→typell→typed-wasm→PanLL. + diff --git a/brand/sandler-submarine.svg b/brand/sandler-submarine.svg new file mode 100644 index 0000000..5412c5f --- /dev/null +++ b/brand/sandler-submarine.svg @@ -0,0 +1,92 @@ + + + + + + + + + + + + + + + + + typed-wasm — the seven sealed compartments + impact & case-making, Sandler-submarine logic: seal each before you go deeper + surface + deep + + + + + + + + + + + + + + + + + + + + + + + + + + + 1 + 2 + 3 + 4 + 5 + 6 + 7 + + + + + + 1 · Bonding + Open MPL-2.0, 0 believe_me + badge, Zenodo DOI in the open + + 2 · Up-front contract + IS TypeLL safety for WasmGC; + IS the aggregate ABI library + + + 3 · Pain + Untyped linear memory: bad + loads, UAF, no cross-lang ABI + + 4 · Budget + Marshalling layers vs proof- + carrying zero-overhead access + + + 5 · Decision + Checked L1-L10 core, each + access proved in Idris2 + + 6 · Fulfilment + VerifierSpec gates crates/ + typed-wasm-verify; ECHIDNA tested + + + 7 · Post-sell + Phase 0, 70%: carrier-ABI for + AffineScript + Ephapax; codegen v0 next + + + diff --git a/brand/social-preview.svg b/brand/social-preview.svg new file mode 100644 index 0000000..86c80dd --- /dev/null +++ b/brand/social-preview.svg @@ -0,0 +1,70 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + typed-wasm + + regions over a schemaless byte array · checked L1-L10 + + + + + +