Skip to content

Commit 03a37a6

Browse files
docs: Phase 0 closure record (CHANGELOG + maintenance report + wiki + STATE.a2ml) — session-close pass (#64)
## Summary Final documentation pass for the 2026-05-24/25 Phase 0 closure work. Records the same outcome at three levels of formality for three audiences. ## Files | Audience | File | What | |---|---|---| | Humans / changelog readers | `CHANGELOG.md` | New `[Unreleased]` §"Phase 0 closure pass" listing all 11 PRs + aggregate numbers | | Humans / archival reader six months later | `docs/reports/maintenance/2026-05-25-phase-0-closure.adoc` (new) | Canonical written record: summary, per-PR table, before/after numbers, outstanding work, process notes / lessons | | Wiki / outside readers | `docs/wiki/Phase-0-Status.md` | Headline updated to 2026-05-25 + gates state; added headline-numbers block; #63 moves from "in flight" to "shipped" | | Machines / agents / dashboards | `.machine_readable/6a2/STATE.a2ml` | `last-updated` bumped; session line refreshed (7 PRs → 11); milestones[] expanded with tree-sitter v1, full-EBNF parity, RSR taxonomy, wiki source-of-truth, parser-migration progress | No code changes. ## Verification Aspect tests all green: - claim-envelope: 57 passed, 0 failed - security-envelope: 10 passed, 0 failed - proof-regression: 25 passed, 0 failed, 1 skipped (idris2 not on PATH) ## After this lands This is the session-close documentation pass. With this PR merged, **it is safe to close this session.** Phase 0 outstanding work (Idris2 parser + codegen v0 + Track B cross-repo) is the next-session / multi-week handoff. The next session can resume with a clean ledger by reading `docs/reports/maintenance/2026-05-25-phase-0-closure.adoc` + the live state in issue #48. ## Test plan - [x] Aspect tests green locally - [x] `STATE.a2ml` parses as valid TOML - [x] Cross-references in the maintenance report resolve (#48#54, PR numbers) - [ ] CI pattern matches the post-#63 baseline (cargo-audit / smoke / structural / cargo-verify green; anti-pattern / A2ML / K9 / Build+E2E advisory) --- _Generated by [Claude Code](https://claude.ai/code/session_01ExgUTJmU5UQQNLKynwxDjm)_
2 parents 9916460 + 7535b74 commit 03a37a6

6 files changed

Lines changed: 248 additions & 10 deletions

File tree

.machine_readable/6a2/ECOSYSTEM.a2ml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -31,7 +31,7 @@ projects = [
3131
[integration-points]
3232
systems = [
3333
{ system = "Idris2 proof build", direction = "inbound", protocol = "idris2 --build" },
34-
{ system = "ReScript parser toolchain", direction = "inbound", protocol = "rescript build" },
34+
{ system = "AffineScript parser toolchain", direction = "inbound", protocol = "affinescript build (post-2026-05-25 ReScript -> AffineScript migration)" },
3535
{ system = "Zig FFI and oracle tests", direction = "inbound", protocol = "zig build" },
3636
{ system = "ECHIDNA property testing", direction = "inbound", protocol = "node harness + oracle tests" },
3737
]

.machine_readable/6a2/META.a2ml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -10,7 +10,7 @@ last-updated = "2026-03-30"
1010

1111
[project-info]
1212
type = "library"
13-
languages = ["idris2", "rescript", "zig", "javascript", "ebnf", "latex", "asciidoc"]
13+
languages = ["idris2", "affinescript", "zig", "javascript", "ebnf", "latex", "asciidoc"]
1414
license = "MPL-2.0"
1515
author = "Jonathan D.A. Jewell (hyperpolymath)"
1616

.machine_readable/6a2/STATE.a2ml

Lines changed: 11 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -6,9 +6,9 @@
66
[metadata]
77
project = "typed-wasm"
88
version = "0.1.0"
9-
last-updated = "2026-05-24"
9+
last-updated = "2026-05-25"
1010
status = "active" # active | paused | archived
11-
session = "2026-05-24 — Phase 0 closure pass. 7 PRs landed (#46 CI triage, #47 PRODUCTION-PATH doc, #55 cargo-audit CI, #57 Track C complete +64 assertions, #58 tree-sitter scaffold, #59 CI hardening non-blocking, #60 ROADMAP truthfulness audit + drift-detection aspect §8). Phase 0 gates 1 + 3 met; gate 2 (codegen v0) outstanding."
11+
session = "2026-05-24/25 — Phase 0 closure pass. 11 PRs landed (#46 CI triage, #47 PRODUCTION-PATH doc, #55 cargo-audit CI, #57 Track C complete +64 assertions and 2 real bugs fixed, #58 tree-sitter scaffold, #59 CI hardening non-blocking, #60 ROADMAP truthfulness audit + drift-detection aspect §8, #61 wiki source-of-truth + STATE.a2ml comprehensive, #62 tree-sitter v1 parses example 01 end-to-end with 0 ERROR, #63 repo tidy RSR-aligned + smoke fix + duplication scrub). Phase 0 gates 1 + 3 met; gate 2 (codegen v0) is the terminal Phase-1-handoff item."
1212

1313
[project-context]
1414
name = "typed-wasm"
@@ -43,9 +43,14 @@ milestones = [
4343
{ name = "L11-L12 checked integration", completion = 0 },
4444
{ name = "Preprint published on Zenodo (12-level)", completion = 100 },
4545
{ name = "Production-path canonical plan (6-phase) + tracking issues", completion = 100 }, # added 2026-05-24 (PR #47)
46-
{ name = "Tree-sitter grammar scaffold (Track A kickoff)", completion = 20 }, # added 2026-05-24 (PR #58); region-decls only, full EBNF parity pending
47-
{ name = "CI persistent-reds hardening (non-blocking + documented)", completion = 100 }, # added 2026-05-24 (PR #59)
48-
{ name = "ROADMAP truthfulness audit + drift-detection aspect", completion = 100 }, # added 2026-05-24 (PR #60)
46+
{ name = "Tree-sitter grammar v0 scaffold (Track A kickoff)", completion = 100 }, # 2026-05-24 (PR #58)
47+
{ name = "Tree-sitter grammar v1 — parses example 01 end-to-end (0 ERROR)", completion = 100 }, # 2026-05-25 (PR #62)
48+
{ name = "Tree-sitter grammar at full spec/grammar.ebnf parity", completion = 35 }, # ~60-70% by production count at v1; imports/L11-L16/match/proof/lifetime/striated still ahead
49+
{ name = "CI persistent-reds hardening (non-blocking + documented)", completion = 100 }, # 2026-05-24 (PR #59)
50+
{ name = "ROADMAP truthfulness audit + drift-detection aspect", completion = 100 }, # 2026-05-24 (PR #60)
51+
{ name = "Wiki source-of-truth at docs/wiki/", completion = 100 }, # 2026-05-25 (PR #61)
52+
{ name = "RSR-template taxonomy alignment (AUDIT.adoc + onboarding/status/proposals stubs)", completion = 100 }, # 2026-05-25 (PR #63)
53+
{ name = "Parser migration ReScript -> AffineScript -> Idris2", completion = 50 }, # ReScript->AffineScript landed; AffineScript->Idris2 still ahead
4954
]
5055

5156
[blockers-and-issues]
@@ -75,7 +80,7 @@ actions = [
7580
]
7681

7782
[maintenance-status]
78-
last-run-utc = "2026-05-24T20:00:00Z"
83+
last-run-utc = "2026-05-25T20:00:00Z"
7984
last-report = "docs/PRODUCTION-PATH.adoc" # the canonical strategic doc supersedes one-off audit reports
8085
last-result = "pass" # unknown | pass | warn | fail
8186
open-warnings = 4 # Build+E2E + A2ML + K9 non-blocking advisories (PR #59) + anti-pattern policy (fixed by Track A's ReScript cut)

CHANGELOG.md

Lines changed: 27 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -10,6 +10,33 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
1010

1111
## [Unreleased]
1212

13+
### Phase 0 closure pass (2026-05-24 / 2026-05-25)
14+
15+
Two sessions of focused engineering-surface stabilisation, closing the
16+
foundation gates of `docs/PRODUCTION-PATH.adoc` §Phase 0. Gates 1
17+
(CI green-or-advisory) and 3 (ROADMAP truthful + drift-detected) met;
18+
gate 2 (codegen v0 round-trips through verifier) remains as the
19+
terminal Phase-1-handoff item.
20+
21+
**11 PRs landed**:
22+
23+
- **#46** — CI triage round 1 (3 of 6 reds fixed: cargo install, structural E2E, hypatia exemption)
24+
- **#47**`docs/PRODUCTION-PATH.adoc` canonical 6-phase plan + ROADMAP version↔phase mapping + README pointer
25+
- **#55**`cargo audit` workflow (RustSec advisories, weekly cron)
26+
- **#57** — Track C complete: `tests/property/property_test.mjs` (29 assertions), `tests/aspect/security-envelope.mjs` (10), `tests/proof/regression.mjs` (25 + optional idris2 layer). Caught + fixed 2 real bugs (`.well-known/security.txt` template residue, missing SPDX on `ffi/zig/src/main.zig` and `.machine_readable/scripts/forge/git-cleanup.sh`).
27+
- **#58**`tools/tree-sitter-twasm/` scaffold (Track A kickoff): region-decls grammar v0
28+
- **#59** — A2ML / K9 / Build+E2E persistent-red jobs marked non-blocking with documented removal preconditions
29+
- **#60** — ROADMAP truthfulness audit (3 real path drifts fixed: `spec/10-levels-for-wasm.adoc` rename → `type-safety-levels-for-wasm.adoc` in 5 callers; EXPLAINME.adoc pre-restructure file table; stray `src/abi/Foreign.idr` reference) + `claim-envelope.mjs` §8 drift-detection aspect
30+
- **#61** — Wiki source-of-truth at `docs/wiki/` (`Home.md`, `Production-Path.md`, `Phase-0-Status.md`, `Comparison.md`, sync workflow) + comprehensive `.machine_readable/6a2/STATE.a2ml` update
31+
- **#62** — tree-sitter v1 grammar — parses `examples/01-single-module.twasm` end-to-end with 0 ERROR nodes (~270 lines covering memory decls, functions, parameters, statements, expressions, nested field paths)
32+
- **#63** — Repo tidy: RSR-template taxonomy alignment (added `AUDIT.adoc`, `docs/onboarding/`, `docs/status/`, `docs/proposals/`, `docs/architecture/ABI-PIPELINE.adoc`); deleted 8 worthless files (3 template-residue QUICKSTARTs, 2 heuristic `.invariants.md` artefacts, empty `docs/wikis/`, stray `generated/abi/README.adoc`); README Quick Tour rebuilt; smoke job made graceful for the in-flight parser migration; `claim-envelope.mjs` §4 tolerates build outputs whose source exists; stale ReScript references scrubbed from `.hypatia-ignore`, `README.adoc`, `AUDIT.adoc`
33+
34+
**Test surface after Phase 0 pass**: 545+ assertions across 11 surfaces (88 parser + 53 verify + 56 per-level + 53+10 aspect + 29 property + 25 proof + 40 smoke + 53 structural + 14 integration + 124 ECHIDNA). Up from ~430 pre-session.
35+
36+
**Out of scope for this pass** (multi-week / cross-repo): Track A's full `spec/grammar.ebnf` parity + Idris2 parser at 188-test parity + codegen v0; Track B's cross-repo AffineScript verifier migration (requires separate session pointed at `hyperpolymath/affinescript`).
37+
38+
**Tracking**: GitHub issue #48 carries the live ledger; phases 1–6 at #49#54.
39+
1340
### Added
1441
- **typed-wasm-verify** Rust crate (`crates/typed-wasm-verify/`) — post-codegen verifier for L7 (aliasing) + L10 (linearity) on emitted wasm modules. Rust port of `hyperpolymath/affinescript:lib/{tw_verify,tw_interface}.ml`. 50/50 tests pass (40 unit + 10 cross-compat integration). Replaces the AffineScript verifier path which is on its way out.
1542
- C1 (#19) — Scaffold: crate skeleton, public types (`OwnershipKind`, `OwnershipError`, `CrossError`, `FuncInterface`, `VerifyError`), `OWNERSHIP_SECTION_NAME` constant, stubbed entry points.
Lines changed: 197 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,197 @@
1+
// SPDX-License-Identifier: MPL-2.0
2+
// Copyright (c) 2026 Jonathan D.A. Jewell (hyperpolymath) <j.d.a.jewell@open.ac.uk>
3+
= 2026-05-24/25 — Phase 0 Closure Pass
4+
:author: Jonathan D.A. Jewell
5+
:revdate: 2026-05-25
6+
:toc:
7+
8+
== Purpose
9+
10+
Canonical written record of the two-day Phase 0 closure pass.
11+
Companion to `CHANGELOG.md` (which lists what shipped per release)
12+
and `docs/wiki/Phase-0-Status.md` (the live ledger). This document
13+
exists so a reader six months from now can reconstruct what
14+
happened, why, and where to look next.
15+
16+
== Summary
17+
18+
11 PRs landed across two sessions of focused engineering-surface
19+
stabilisation. Phase 0 §"What advancing to Phase 1 requires" gates:
20+
21+
* **Gate 1** — every commit on main exits CI green (or explicitly
22+
advisory): **met** via PR #59
23+
* **Gate 2** — codegen v0 emits valid wasm for example 01,
24+
verifiable end-to-end: **not yet** — terminal blocker; needs
25+
Idris2 parser + codegen implementation (weeks of work)
26+
* **Gate 3** — `ROADMAP.adoc` reflects reality: **met** via PR #60
27+
and the drift-detection aspect that prevents recurrence
28+
29+
State at end of pass: the project is *defensibly engineered* — a
30+
research prototype that builds, tests, ships without hand-holding,
31+
with honest CI status and a complete documentation surface for
32+
humans and machines. Not yet a working compile target; that's
33+
Phase 1.
34+
35+
== PRs that landed (chronological)
36+
37+
[cols="1,4",options="header"]
38+
|===
39+
| PR | What
40+
41+
| #46 | CI triage round 1 — three of six persistent red jobs fixed
42+
(cargo install, structural E2E, hypatia exemption)
43+
44+
| #47 | `docs/PRODUCTION-PATH.adoc` canonical 6-phase plan; version
45+
axis ↔ phase axis mapping in `ROADMAP.adoc`; README pointer
46+
47+
| #55 | `cargo audit` workflow — RustSec advisories on every PR and
48+
weekly cron
49+
50+
| #57 | Track C audit-floor cleanup complete: real
51+
`tests/property/property_test.mjs` (29 assertions),
52+
`tests/aspect/security-envelope.mjs` (10),
53+
`tests/proof/regression.mjs` (25 + optional idris2 layer).
54+
The new security-envelope caught two real bugs the moment it
55+
ran: `.well-known/security.txt` still had template placeholders
56+
(`{{SECURITY_EMAIL}}`, `{{PGP_KEY_URL}}`, `{{FORGE}}`,
57+
`{{WEBSITE}}`), and `ffi/zig/src/main.zig` plus
58+
`.machine_readable/scripts/forge/git-cleanup.sh` were missing
59+
SPDX headers. Fixed in the same commit.
60+
61+
| #58 | `tools/tree-sitter-twasm/` scaffold (Track A kickoff) —
62+
region-decls grammar v0
63+
64+
| #59 | A2ML / K9 / Build+E2E persistent-red jobs marked
65+
non-blocking via `continue-on-error: true` with explicit
66+
Phase 0 NOTE comments documenting the removal precondition
67+
for each
68+
69+
| #60 | ROADMAP truthfulness audit — three real path drifts fixed
70+
(the `spec/10-levels-for-wasm.adoc` → `type-safety-levels-for-wasm.adoc`
71+
rename had five stale callers; EXPLAINME.adoc described a
72+
pre-restructure Idris2 ABI architecture; stray
73+
`src/abi/Foreign.idr` reference). Added `claim-envelope.mjs`
74+
§8 — path-reference drift detection that catches this class
75+
automatically going forward.
76+
77+
| #61 | Wiki source-of-truth at `docs/wiki/`
78+
(`Home.md`, `Production-Path.md`, `Phase-0-Status.md`,
79+
`Comparison.md`, sync workflow) — the GitHub wiki had stale
80+
PMPL license and pre-restructure proof paths.
81+
Comprehensive `.machine_readable/6a2/STATE.a2ml` update:
82+
completion 55 → 70, new `production-phase` keys,
83+
`[test-surface]` enumeration of 545+ assertions across 11
84+
surfaces, `[tracking-issues]` mapping each phase to its
85+
GitHub issue, removed ReScript from `depends-on`, added
86+
`ships-to` for AffineScript + Ephapax
87+
88+
| #62 | tree-sitter v1 grammar — parses
89+
`examples/01-single-module.twasm` end-to-end with 0 ERROR
90+
nodes. Extended from ~80-line scaffold to ~270 lines
91+
covering memory declarations, function declarations
92+
(parameters, return types, effects), and all statement and
93+
expression forms used in example 01 (`region.get`,
94+
`region.set`, `region.scan`, `let [mut]`, assignment,
95+
`if/else`, `return`, binary operators with full precedence
96+
chain, `unary`, `is_null`, nested field paths)
97+
98+
| #63 | Repo tidy for humans and machines:
99+
*RSR-template taxonomy alignment* — added `AUDIT.adoc` at
100+
root, `docs/onboarding/README.adoc`, `docs/status/README.adoc`,
101+
`docs/proposals/README.adoc`, `docs/architecture/ABI-PIPELINE.adoc`.
102+
*Eight deletions* — three template-residue QUICKSTARTs (still
103+
contained `{{BUILD_CMD}}`, `{{LANG_STACK}}` placeholders and
104+
"Typed Wasm — See README.adoc for details." body text), two
105+
heuristic `.invariants.md` artefacts, empty `docs/wikis/`
106+
placeholder, stray `generated/abi/README.adoc`.
107+
*README Quick Tour rebuilt* with current paths
108+
(`src/abi/TypedWasm/ABI/*.idr`, tree-sitter grammar, verifier
109+
crate, status documents, AUDIT.adoc, onboarding index).
110+
*Smoke job made graceful* for the in-flight ReScript →
111+
AffineScript parser migration (build step tries AffineScript
112+
first, ReScript as fallback, skips cleanly with CI warning if
113+
neither compiler is available; downstream invocations guard
114+
on `[ -f src/parser/Parser.mjs ]`).
115+
*`claim-envelope.mjs` §4 patch* — tolerates `tests/parser/*.mjs`
116+
build outputs whose `.affine` (or `.res`) source exists.
117+
*Duplication scrub* — stale ReScript references cleared from
118+
`.hypatia-ignore`, `README.adoc`, `AUDIT.adoc`.
119+
|===
120+
121+
== What changed in numbers
122+
123+
[cols="2,1,1",options="header"]
124+
|===
125+
| Surface | Before pass | After pass
126+
127+
| Test assertions across all surfaces | ~430 | 545+
128+
| CI jobs gating merge | unknown red+green mix; PRs merged with 8 red | all gating jobs green or explicitly advisory with documented removal precondition
129+
| Phase 0 gates met | 0 of 3 | 2 of 3
130+
| Phase 0 issue ledger | placeholder TODO links | live cross-linked PR ledger
131+
| Documentation surface | template-residue + drift-prone | RSR-aligned + drift-checked
132+
| Wiki | 1 stale page (PMPL license, pre-restructure paths) | 5 current pages tracked in `docs/wiki/` with sync workflow
133+
| `.machine_readable/6a2/STATE.a2ml` | anchored to 2026-04-12, completion 55% | anchored to 2026-05-25, completion 70%, new `production-phase` and `[test-surface]` sections
134+
| Tree-sitter grammar | 0 lines | ~270 lines; parses example 01 with 0 ERROR
135+
| Stale `.res` references | 6 in `.hypatia-ignore` + others scattered | 0 in human-facing docs
136+
| Template-residue files at root | 3 QUICKSTARTs + 2 invariants.md | 0
137+
|===
138+
139+
== What is *not* done (Phase 0 outstanding work)
140+
141+
These three items together close Phase 0 → Phase 1:
142+
143+
. **Idris2 parser at 188-test parity** with the AffineScript parser
144+
(currently at `src/parser/*.affine`). Multi-week implementation.
145+
. **Codegen v0** for `examples/01-single-module.twasm` end-to-end —
146+
the terminal gate-2 deliverable. Multi-week implementation.
147+
. **Track B AffineScript verifier migration** — swap
148+
`hyperpolymath/affinescript/lib/{tw_verify,tw_interface}.ml` for
149+
subprocess call to `typed-wasm-verify` binary; retire ~491 LOC of
150+
OCaml. Requires a separate Claude session pointed at the
151+
`affinescript` repo (cross-repo, MCP scope locked here to typed-wasm).
152+
153+
== Process notes / lessons
154+
155+
* **Drift-detection aspects pay for themselves immediately.** The
156+
security-envelope test introduced in PR #57 caught two real bugs
157+
before its first commit shipped — neither would have surfaced for
158+
months otherwise. Same pattern with claim-envelope §8 in PR #60.
159+
Whenever the project adds a new documentation surface or claims
160+
invariant, a corresponding aspect should land in the same PR.
161+
162+
* **"Persistent red" CI is an honesty problem before it is a
163+
technical one.** PRs were merging with 8 red checks before this
164+
pass; the cargo-verify job intended to catch wasmparser breaks
165+
was *itself silently broken on every PR*. The fix wasn't to
166+
make the checks green by lowering the bar — it was to repair the
167+
checks that should be green and mark the ones that genuinely
168+
can't be (third-party action failures, in-flight migrations)
169+
as advisory with explicit removal preconditions in the workflow
170+
YAML.
171+
172+
* **In-flight migrations need to land complete or be self-skipping.**
173+
The ReScript → AffineScript parser migration partially landed in
174+
one session (sources renamed) without updating the build
175+
wiring (`package.json` empty, workflow still ran `rescript build`)
176+
or the test scripts (`tests/e2e.sh` still asserted `.res`).
177+
Result: every subsequent PR's CI showed misleading red. Fixed by
178+
making the workflow + scripts gracefully detect and skip when
179+
the migration is mid-way, with CI annotations surfacing the
180+
actual gap.
181+
182+
* **Bot signal-to-noise matters.** The Hypatia security scan posts
183+
100+ findings on every PR; most are false positives matching its
184+
own banlist tokens inside Idris2 anti-pattern banner comments
185+
(e.g. `-- NO believe_me`). Documented in `AUDIT.adoc` and queued
186+
for upstream filing at `hyperpolymath/hypatia`. Skipping these as
187+
duplicates is correct; sinking time into each one would drown the
188+
PR loop.
189+
190+
== Where to look next
191+
192+
* `docs/PRODUCTION-PATH.adoc` — the 6-phase strategic plan
193+
* `docs/wiki/Phase-0-Status.md` — the live closure ledger
194+
* GitHub issue [#48](https://github.com/hyperpolymath/typed-wasm/issues/48) — Phase 0 tracking
195+
* GitHub issue [#49](https://github.com/hyperpolymath/typed-wasm/issues/49) — Phase 1 (next)
196+
* `.machine_readable/6a2/STATE.a2ml` — machine-readable state
197+
* `AUDIT.adoc` — hard rules and audit posture

docs/wiki/Phase-0-Status.md

Lines changed: 11 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,9 +1,18 @@
11
# Phase 0 Status
22

3-
**Foundation defensibly engineered as of 2026-05-24.**
3+
**Foundation defensibly engineered as of 2026-05-25. Gates 1 + 3 met; gate 2 (codegen v0) remains as the Phase-1-handoff item.**
44

55
Phase 0 closes the engineering-surface fragility around the proofs so all subsequent phases have a load-bearing foundation. See [Production-Path](Production-Path) §Phase 0 for the full statement and [#48](https://github.com/hyperpolymath/typed-wasm/issues/48) for live tracking.
66

7+
## Headline numbers
8+
9+
- **11 PRs landed** across two sessions
10+
- **545+ test assertions** across 11 surfaces (up from ~430)
11+
- **2 of 3 Phase 0 gates met** (gate 2 needs Idris2 parser + codegen v0)
12+
- **8 deletions** of worthless / template-residue files
13+
- **4 new RSR-aligned taxonomy stubs** (`AUDIT.adoc`, `docs/onboarding/`, `docs/status/`, `docs/proposals/`)
14+
- **2 real bugs caught and fixed** by drift-detection aspects (`.well-known/security.txt` template residue, missing SPDX headers)
15+
716
## Sub-tracks
817

918
### Track A — Codegen pipeline
@@ -58,7 +67,7 @@ Phase 0 closes the engineering-surface fragility around the proofs so all subseq
5867
| ROADMAP truthfulness audit (3 real drifts fixed) | ✅ Shipped | [#60](https://github.com/hyperpolymath/typed-wasm/pull/60) |
5968
| claim-envelope §8 drift-detection (catches rename + missing-file drift) | ✅ Shipped | #60 |
6069
| Wiki source-of-truth at `docs/wiki/` + comprehensive STATE.a2ml update | ✅ Shipped | [#61](https://github.com/hyperpolymath/typed-wasm/pull/61) |
61-
| Repo taxonomy tidy: RSR-aligned (AUDIT.adoc, docs/status/, docs/onboarding/, docs/proposals/); deletions (3 template-residue QUICKSTARTs, 2 .invariants.md heuristic artefacts, empty docs/wikis/, stray generated/abi/README); ABI-PIPELINE doc move | 🟡 In flight | This PR |
70+
| Repo taxonomy tidy: RSR-aligned (AUDIT.adoc, docs/status/, docs/onboarding/, docs/proposals/); deletions (3 template-residue QUICKSTARTs, 2 .invariants.md heuristic artefacts, empty docs/wikis/, stray generated/abi/README); ABI-PIPELINE doc move; smoke job graceful for in-flight parser migration; duplication scrub (stale ReScript references) | ✅ Shipped | [#63](https://github.com/hyperpolymath/typed-wasm/pull/63) |
6271

6372
## When does Phase 0 "close"?
6473

0 commit comments

Comments
 (0)