|
12 | 12 | Step 6). `build.zig.zon` `.zwasm` = tag pin |
13 | 13 | `v2.4.0` (2026-08-03; zwasm's external-consumer release — nothing in |
14 | 14 | it reaches cljw, pin hygiene only). Latest release: |
15 | | - **v1.5.1** (2026-07-17; zwasm-pin patch release on top of v1.5.0 = |
16 | | - the ADR-0174 host-class campaign + Thread lifecycle; tap carries |
17 | | - cljw 1.5.1 + zwasm). CHANGELOG is the release-history SSOT. |
18 | | -- **First task on resume MUST be**: continue the 2026-08-04 audit-remediation |
19 | | - arc (`private/analysis/2026-08-04-tri-project/09_improvement_backlog.md` is |
20 | | - the ordered list). Landed so far: doc-truth + `size_claims` widened |
21 | | - (`77f690a3`), Issues/PR surface opened (`e897cbfc`), **ADR-0177** |
22 | | - capability-claim gate + ROADMAP §1.1/§1.2/§1.3/§8.1/§8.3/§10.3 amendment. |
23 | | - Next in order: **P1-2** (`data/placement.yaml` — kill or gate; it cites 3 |
24 | | - scripts of which 2 do not exist, is not wired into `run_all.sh`, covers |
25 | | - 49/683 vars, unchanged since 2026-05-25), **P1-5** (`category: security` |
26 | | - active rows, one sweep), **P1-4** (`clojure.core` public surface: ~60 `-` |
27 | | - internals + ~30 interface names are `ns-publics` — must land before 2.0), |
28 | | - **P1-1** (NaN-box tag space is 64/64 — ADR + F-004 question for the user), |
29 | | - then **release v1.6.0** and the distribution follow (tap + the three demo |
30 | | - repos, all still pinned to cljw v1.0.0). |
| 15 | + **v1.6.0** (2026-08-04; four hang/abort fixes — ADR-0175 spawn-to-register |
| 16 | + safepoint, ADR-0176 live-worker teardown, D-347 unmetered `wasm/run`, D-339 |
| 17 | + `run-server` head deadline — plus the opened Issues/PR surface). |
| 18 | + CHANGELOG is the release-history SSOT. |
| 19 | +- **First task on resume MUST be**: the NaN-box tag-space surgery |
| 20 | + (`private/notes/2026-08-04-nanbox-tag-space-investigation.md` has the |
| 21 | + measured classification + the ADR outline). The audit's "64/64 full, needs a |
| 22 | + user F-004 decision" was WRONG: 53 tags are actually NaN-boxed, 3 are |
| 23 | + heap-only (`tail_node` / `hamt_map_node` / `tval` — GC-traced, never a |
| 24 | + Value), and **7 are pure unused reservations** (`reader_conditional` / |
| 25 | + `class` / `array_chunk` / `matcher` / `tuple` / `box` / `wasm_fn` — zero |
| 26 | + references outside the enum; `Class` is a `.type_descriptor` and `Matcher` |
| 27 | + is a `host_instance`). So ~10 slots are recoverable WITHOUT touching F-004. |
| 28 | + Treating the reservations as binding was the Reservation-as-bias smell |
| 29 | + CLAUDE.md names explicitly. Then **P1-6** (WIT↔Clojure type-mapping shared |
| 30 | + spec with ClojureWit). |
| 31 | + The 2026-08-04 audit-remediation arc otherwise closed: doc-truth + |
| 32 | + `size_claims` widened (`77f690a3`), Issues/PR opened (`e897cbfc`), |
| 33 | + ADR-0177 capability-claim gate (`92d7926d`), D-339 (`c601aa75`), ADR-0178 |
| 34 | + generated placement index (`4c52ebcc`), AD-057 + core-surface gate |
| 35 | + (`18e9ea5f`), D-347 (`b4b5ef83`), D-343 + security triage (`6bdeeeb2`). |
31 | 36 | - **Unreleased on main**: envelope v9 (op_var_meta — def-meta rides |
32 | 37 | the AOT wire), computed def-meta (D-316) — incl. `:tag` uniform-eval |
33 | 38 | (`^String`→Class, `^Foo`→name error; the bare-symbol workaround |
|
56 | 61 | - **v1.5.1** is the released line; v1.5.0 was the ADR-0174 host-class campaign |
57 | 62 | + Thread lifecycle. The v1.4.0 binary-size campaign (ADR-0172/0173) and the |
58 | 63 | v1.3.x arc are in CHANGELOG. |
59 | | -- Debug tooling: `scripts/nrepl_send.py`, `scripts/clj_diff_sweep.sh` + |
60 | | - corpora, `scripts/binary_size_report.sh` (now gates every public size claim, |
61 | | - ADR-0177), `scripts/check_capability_claims.sh` (ADR-0177). |
| 64 | +- Debug tooling: `nrepl_send.py`, `clj_diff_sweep.sh` + corpora, |
| 65 | + `binary_size_report.sh` / `check_capability_claims.sh` (ADR-0177), |
| 66 | + `gen_placement.sh` / `check_placement_status.sh` (ADR-0178), |
| 67 | + `check_core_surface.sh` (AD-057). |
62 | 68 | - nREPL is single-connection (serial accept, D-117(a)): a second client waits |
63 | 69 | while an editor is attached — probe via a fresh server, not the editor's port. |
64 | 70 | - **Issues and PRs are OPEN** as of 2026-08-04 (`e897cbfc`); three issue |
|
68 | 74 | ## Standing units (tracked in .dev/debt.yaml) |
69 | 75 |
|
70 | 76 | - **D-565** — external-contributor reproducibility / doc-staleness sweep |
71 | | - (fresh-clone onboarding audit, Discussion #11). Build/test/CI reproduce |
72 | | - cleanly; gaps are doc rot (`zwasm_from_scratch`→`zwasm`, dead `OSS/zig` |
73 | | - ref, missing `cleanup_orphans.sh`, README 1.0.0-vs-1.5.1, autonomous-vs- |
74 | | - maintenance mismatch) + no CONTRIBUTING opt-out notes. Companion: zwasm D-526. |
| 77 | + (Discussion #11). PARTLY drained 2026-08-04: README version + CONTRIBUTING |
| 78 | + opt-out notes landed with the Issues/PR opening (`e897cbfc`). Residual is |
| 79 | + path rot (`zwasm_from_scratch`→`zwasm`, dead `OSS/zig` ref, |
| 80 | + `cleanup_orphans.sh`). Companion: zwasm D-526. |
75 | 81 |
|
76 | 82 | - **Perf campaign (§9.2.S) — PAUSED** (D-520 / D-386 / D-005/006). |
77 | 83 | - **D-513** — clojure.core.reducers / clojure.repl / var :doc. |
78 | 84 | - **D-548** — (a) DISCHARGED (ADR-0176); residual = (b) pmap |
79 | 85 | wall-clock on the 3-vCPU runner (timing envelope, still gated). |
80 | | -- CIDER upstream banner patch draft: |
81 | | - `private/notes/cider-clojurewasm-banner-patch.md` (user-side PR). |
| 86 | +- CIDER upstream banner patch draft (user-side PR): |
| 87 | + `private/notes/cider-clojurewasm-banner-patch.md`. |
82 | 88 |
|
83 | 89 | ## North star (ACTIVE, distal) |
84 | 90 |
|
85 | | -cljw's differentiator = **Wasm/edge-native (gap II) × VM-perf |
86 | | -fusion→JIT (gap III)**. zwasm JIT (ADR-0200) is the cljw default; |
87 | | -remaining = components-through-the-JIT (zwasm-side, D-500). Distal — |
88 | | -needs a user nod; the §9.2.T public-ization sweep (easiest-first debt |
89 | | -drain) is the active near-term mode. |
| 91 | +cljw's differentiator = **Wasm interop (gap II) × VM-perf fusion→JIT (gap |
| 92 | +III)**. zwasm JIT (ADR-0200) is the cljw default; remaining = |
| 93 | +components-through-the-JIT (zwasm-side, D-500). Distal — needs a user nod. |
| 94 | +NOTE ADR-0177: "edge execution" is an AIM owned by D-552, not a capability. |
90 | 95 |
|
91 | 96 | ## Reading order (resume) |
92 | 97 |
|
93 | | -handover → `yq` the live `active:` list → ADR-0166 (public-ization |
94 | | -sweep mode) → ROADMAP §9.0. Memories: |
| 98 | +handover → `yq` the live `active:` list → ADR-0166 → ROADMAP §9.0. Memories: |
95 | 99 | `verify_against_releasesafe_binary` / `smoke_first_batch_full_gate` / |
96 | 100 | `external-publish-payload-guard`. |
0 commit comments