|
| 1 | +// SPDX-License-Identifier: MPL-2.0 |
| 2 | +// SPDX-FileCopyrightText: 2026 Jonathan D.A. Jewell <j.d.a.jewell@open.ac.uk> |
| 3 | + |
| 4 | += ARG-PROFILE — typed-wasm |
| 5 | +:toc: left |
| 6 | +:toclevels: 2 |
| 7 | + |
| 8 | +[cols="1,3"] |
| 9 | +|=== |
| 10 | +| Field | Value |
| 11 | + |
| 12 | +| Artefact | typed-wasm (compilation target, language-shaped) |
| 13 | +| Repository | https://github.com/hyperpolymath/typed-wasm |
| 14 | +| Current ARG Grade | *D* (X \| F \| E \| D \| C \| B \| A) |
| 15 | +| Assessed | 2026-05-28 |
| 16 | +| Assessor | Jonathan D.A. Jewell <j.d.a.jewell@open.ac.uk> |
| 17 | +| ARG Spec Version | 1.0 |
| 18 | +| TRG Profile | spec/TRG-PROFILE.adoc |
| 19 | +| FRG Profile | spec/FRG-PROFILE.adoc |
| 20 | +| CRG Profile | spec/CRG-PROFILE.adoc |
| 21 | +|=== |
| 22 | + |
| 23 | +== About this profile |
| 24 | + |
| 25 | +typed-wasm is not a user-facing language but a *language-shaped |
| 26 | +compilation target*: it has a defined grammar (binary + textual |
| 27 | +form per `spec/grammar.ebnf`), instruction AST, operational |
| 28 | +semantics (per `spec/type-safety-levels-for-wasm.adoc`), a layered |
| 29 | +type system (L1-L10 checked, L11-L12 draft, L13-L16 live in v1.4 |
| 30 | +and v1.5 per `LEVEL-STATUS.md`, L17 reserved), and a runtime |
| 31 | +contract (WebAssembly executor + verifier crate). ARG applies to |
| 32 | +it the same way it applies to a language, with the understanding |
| 33 | +that *"adoption"* means *"downstream languages targeting it as a |
| 34 | +compilation backend"* rather than end-users writing it. |
| 35 | + |
| 36 | +ARG = *D*. The full chain of axes: |
| 37 | + |
| 38 | +* ARG: *D* (this profile) |
| 39 | +* TRG: *C* (per `spec/TRG-PROFILE.adoc`) |
| 40 | +* FRG: *C* (per `spec/FRG-PROFILE.adoc` — 22 Idris2 verifier files |
| 41 | + with QTT linearity + dependent types; A10 closure landed PR #79 |
| 42 | + inhabiting `VerifierSpecAgreement` + `SourceVerifierAgreement`) |
| 43 | +* CRG: *D* (per `spec/CRG-PROFILE.adoc`; `typed-wasm-verify` v0.1.0 |
| 44 | + not yet on crates.io) |
| 45 | +* RSR: Compliant at TRG-C level |
| 46 | + |
| 47 | +Cross-axis rule: ARG ≤ TRG holds (TRG = C ≥ ARG = D). ARG can |
| 48 | +climb to C without TRG promotion because TRG is already C. |
| 49 | + |
| 50 | +== Grade rationale (evidence for D) |
| 51 | + |
| 52 | +[cols="2,1,4", options="header"] |
| 53 | +|=== |
| 54 | +| Criterion | Met? | Evidence |
| 55 | + |
| 56 | +| *D1 — Landing page / README* |
| 57 | +| YES |
| 58 | +| `README.adoc` (sectioned: Specification and surface syntax / Proofs and implementation / Examples / Status and strategy) + `EXPLAINME.adoc` + `QUICKSTART.adoc`. |
| 59 | + |
| 60 | +| *D2 — Elevator pitch* |
| 61 | +| YES |
| 62 | +| README header pitches typed-wasm as a layered safety-bearing compilation target for hyperpolymath languages. |
| 63 | + |
| 64 | +| *D3 — Provenance* |
| 65 | +| YES |
| 66 | +| `LICENSE` (MPL-2.0), `CHANGELOG.md`, `LEVEL-STATUS.md` tracks active version (v1.5), `Cargo.toml` workspace shape. |
| 67 | + |
| 68 | +| *Required TRG grade (ARG-D ⇒ TRG ≥ D)* |
| 69 | +| YES |
| 70 | +| TRG-C — see spec/TRG-PROFILE.adoc. |
| 71 | + |
| 72 | +| *Onboarding O1 — 5-minute hello-world* |
| 73 | +| PARTIAL |
| 74 | +| `examples/01-single-module.twasm` + 5 more example modules; consumer-side QUICKSTART exists but not measured against a 5-minute floor. |
| 75 | + |
| 76 | +| *Onboarding O2 — Tutorial covering distinctive features* |
| 77 | +| YES |
| 78 | +| The 6 example `.twasm` files cover module structure, multi-module, ownership/linearity, ECS, tropical cost, epistemic sync — the load-bearing safety dimensions. |
| 79 | + |
| 80 | +| *Onboarding O3 — Playground* |
| 81 | +| PARTIAL |
| 82 | +| `examples/web-project-deno.json` ships a runnable Deno-based playground harness; no public web playground yet. |
| 83 | + |
| 84 | +| *Onboarding O4 — Cookbook in ≥ 2 substantive domains* |
| 85 | +| YES |
| 86 | +| `features/{boj-server,panic-attacker,ssg}/` — three substantive consumer surfaces; examples span 6 domains. |
| 87 | + |
| 88 | +| *Reference R1 — Reference manual* |
| 89 | +| YES |
| 90 | +| `spec/type-safety-levels-for-wasm.adoc` (load-bearing) + `spec/L13-L16-reserved-syntax.adoc` + `spec/async-convergence-abi.adoc` + `docs/proposals/`. |
| 91 | + |
| 92 | +| *Reference R2 — Stdlib reference* |
| 93 | +| YES |
| 94 | +| `src/abi/Layout/Stdlib.idr` — typed stdlib surface declared at Idris2 level. |
| 95 | + |
| 96 | +| *Reference R3 — Formal grammar* |
| 97 | +| YES |
| 98 | +| `spec/grammar.ebnf` (load-bearing) + parsing handled by `Parser.affine` in the AffineScript surface. |
| 99 | + |
| 100 | +| *Reference R4 — Operational/denotational semantics* |
| 101 | +| YES |
| 102 | +| `spec/type-safety-levels-for-wasm.adoc` covers the per-level operational semantics. Mechanised semantics in 22 Idris2 files at `src/abi/`. |
| 103 | + |
| 104 | +| *Reference R5 — Stable error-code index* |
| 105 | +| NO |
| 106 | +| Verifier errors are typed (`thiserror`-based) but no public error-code index. |
| 107 | + |
| 108 | +| *Community C1-C5* |
| 109 | +| PARTIAL |
| 110 | +| CONTRIBUTING + CoC + SECURITY present. Discussion venues + RFC list partial: `docs/proposals/0001-*.md`, `docs/proposals/0002-*.md` are the current RFC process. |
| 111 | + |
| 112 | +| *Distribution Δ1-Δ5* |
| 113 | +| PARTIAL |
| 114 | +| `Cargo.toml` ships `typed-wasm-verify` v0.1.0 (unpublished). SemVer policy implicit. No deprecation log. `SECURITY.md` present. |
| 115 | + |
| 116 | +| *Education E1-E4 (grade-dependent)* |
| 117 | +| NO |
| 118 | +| No curriculum / external educators. |
| 119 | + |
| 120 | +| *Ecosystem X1-X4 (grade B+)* |
| 121 | +| PARTIAL |
| 122 | +| 2 known consumer languages (ephapax via `ephapax-syntax` git-dep; AffineScript via Parser.affine integration). Below the B threshold. |
| 123 | + |
| 124 | +| *Diversity metrics (grade C+)* |
| 125 | +| NO |
| 126 | +| Single-maintainer; no diversity surface. |
| 127 | + |
| 128 | +| *VeriSimDB attestation (grade C+)* |
| 129 | +| NO |
| 130 | +| typed-wasm not yet `DECLARE`'d. |
| 131 | + |
| 132 | +| *Founder bus-factor test (grade A only)* |
| 133 | +| N/A |
| 134 | +| Not at grade A. |
| 135 | +|=== |
| 136 | + |
| 137 | +== Language-specific tightening (this profile only) |
| 138 | + |
| 139 | +ARG §1.1 permits per-language tightening. For typed-wasm: |
| 140 | + |
| 141 | +* *Grade C tightening:* Every level L1-L17 MUST be either checked |
| 142 | + (with a status entry in `LEVEL-STATUS.md`) or explicitly |
| 143 | + reserved (not silently absent). Currently met: v1.5 ships |
| 144 | + L1-L10 + L13-L16 checked, L11-L12 draft-only, L17 reserved. |
| 145 | +* *Grade B tightening:* At least one consumer language MUST run |
| 146 | + its own CI as a typed-wasm consumer (i.e. typed-wasm release |
| 147 | + changes are surfaced as CI failures in the consumer). |
| 148 | +* *Grade A tightening:* Registered VeriSimDB instance + third- |
| 149 | + party language adopter not maintained by hyperpolymath. |
| 150 | + |
| 151 | +== What is NOT yet met (honest gaps) |
| 152 | + |
| 153 | +* No public error-code index (R5). |
| 154 | +* No public playground beyond the Deno harness. |
| 155 | +* No educator-facing curriculum. |
| 156 | +* Below the B-threshold for downstream consumer count (2 known). |
| 157 | +* No VeriSimDB attestation. |
| 158 | + |
| 159 | +== Path to next grade (*C*) |
| 160 | + |
| 161 | +* Publish error-code index. (~1 week) |
| 162 | +* Publish a web playground. (~3-4 weeks) |
| 163 | +* Land VeriSimDB attestation. (~1 week) |
| 164 | +* Document the implicit RFC process at `docs/proposals/` as a |
| 165 | + discoverable contributor surface. (~1 week) |
| 166 | + |
| 167 | +*Realistic timeline estimate:* 6-8 weeks. |
| 168 | + |
| 169 | +== Path to grade beyond that (*B*) |
| 170 | + |
| 171 | +* Land ≥6 downstream language consumers (or document with rationale |
| 172 | + why typed-wasm is a hyperpolymath-internal target and the |
| 173 | + ≥6-target metric is interpreted as ≥6 downstream surfaces such |
| 174 | + as `features/{boj-server,panic-attacker,ssg}/`). |
| 175 | +* Consumer-language CI integration. |
| 176 | + |
| 177 | +== Demotion risk |
| 178 | + |
| 179 | +* *Lowest:* `typed-wasm-verify` CI flips to red. |
| 180 | +* *Medium:* A verifier-level regression invalidates a closed proof |
| 181 | + obligation (e.g. A10's `VerifierSpecAgreement` regresses). |
| 182 | +* *Catastrophic:* A consumer (ephapax or AffineScript) is broken |
| 183 | + by a typed-wasm release and the breakage is not rolled back. |
| 184 | + |
| 185 | +== Iteration history |
| 186 | + |
| 187 | +[cols="1,1,4", options="header"] |
| 188 | +|=== |
| 189 | +| Date | Grade | Notes |
| 190 | + |
| 191 | +| 2026-05-28 | D | Initial ARG assessment per ARG v1.0. Compilation target treated as language-shaped artefact. |
| 192 | +|=== |
| 193 | + |
| 194 | +== Review cycle |
| 195 | + |
| 196 | +* *Routine:* Reassess on every release cycle (per ARG §6). |
| 197 | +* *Immediate:* Reassess within 7 days of any demotion trigger. |
| 198 | +* *VeriSimDB drift alert:* Reassess within 24 hours. |
| 199 | + |
| 200 | +== Footer |
| 201 | + |
| 202 | +Run `just arg-badge` in this repo to generate the shields.io badge. |
0 commit comments