Skip to content

Commit 5e932bd

Browse files
docs: proposals 0001 + 0002 → [accepted] (owner decision 2026-05-30) (#115)
## Summary Owner-decision close of the proposal-acceptance arc. Both proposals satisfied every acceptance gate this session ([see #106 wrap-up comment](#106 (comment))); this PR applies the status flip. ## Status changes - `docs/proposals/0001-multi-producer-carrier-section.adoc` — `review → accepted` - `docs/proposals/0002-access-site-carrier.adoc` — `review → accepted` - `docs/proposals/README.adoc` — "Current proposals" table updated; NOTE block clarifies files remain in `docs/proposals/` (ADR promotion is a separate file-restructure follow-up). ## LEVEL-STATUS.md updates | Level | Before | After | |-------|--------|-------| | L2 (region binding) | proposal-stage | **YES** (carrier-backed) — `verify_access_sites_from_module` (PR #109); gated `unstable-l2` | | L3–L6 (type-compat, null, bounds, result-type) | proposal-stage | **YES** (carrier-backed, schema half) — regions codec PR #107; per-access enforcement gated on producer codegen | | L15-A/B (capabilities) | proposal-stage | **YES** (carrier-backed) — `verify_capabilities_from_module` (PR #109); gated `unstable-l15` | | L13 cross-module (positive form) | — | proposal-stage — proposal 0003 `[draft]` (new row) | "Open gating items" section rewritten to remove obsolete pre-acceptance gates (all shipped via #107/#109) and enumerate the remaining producer-side prerequisites + [draft] proposal 0003/0004 work. ## What this DOES NOT change - **File locations**: proposals stay in `docs/proposals/`. ADR promotion to `docs/decisions/` (with renumbering — existing ADR 0001 is "adopt-rsr-standard", so proposals 0001/0002 would become ADRs 0002/0003) is a deliberate separate PR to keep the status flip cleanly auditable. - **Code**: no source or test changes. Verifier passes already shipped in #107/#109 behind `unstable-l2` / `unstable-l15` feature flags. - **Producer-side codegen**: still pending per Appendix B prerequisites in proposal 0001. ## Test plan - [x] Status field flipped on both proposals. - [x] README table reflects new statuses with date. - [x] LEVEL-STATUS L2/L3-L6/L15 rows show carrier-backed YES. - [x] Open gating items rewritten (4 items: producer codegen, L13 cross-module, L15-C, ADR promotion). - [ ] CI passes (doc-only changes; no Cargo/Idris2 build risk). ## Related - #34 (proposal 0001 umbrella) - #78 (proposal 0002 RFC) - #106 (acceptance roadmap tracker — full wrap-up comment) - This session's 5-PR sprint that satisfied every gate: #107 (codec), #108 (spec doc), #109 (verifier), #110 (Criterion 2 appendix), #111 (proposal 0004 draft for #96), #112 (proposal 0003 draft for #95), #113 (WBool pin for #94), #114 (producer-readiness for #97). 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-authored-by: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
1 parent 2f36f51 commit 5e932bd

4 files changed

Lines changed: 33 additions & 26 deletions

File tree

LEVEL-STATUS.md

Lines changed: 21 additions & 20 deletions
Original file line numberDiff line numberDiff line change
@@ -143,28 +143,29 @@ pins affinescript SHA for drift detection).
143143
| L7 (aliasing) | **YES** | `verify_function` per-path use-range |
144144
| L10 (linearity) | **YES** | `verify_function` per-path use-range |
145145
| L13 (module isolation, negative form) | **YES** | `verify_from_module`, gated on ownership-section presence (PR #37, 2026-05-19) |
146-
| L2–L6 (region binding, type-compat, null, bounds, result-type) | **proposal-stage** | Carrier-section ABI draft at PR #76 (`docs/proposals/0001`); codec pre-staged behind `cargo feature = "unstable-l2"` at PR #77 |
147-
| L15 (resource capabilities, L15-A/B) | **proposal-stage** | Same proposal 0001 (separate `typedwasm.capabilities` section) |
146+
| L13 (cross-module schema agreement, positive form) | **proposal-stage** | `typedwasm.region-imports` carrier — proposal 0003 `[draft]` (`docs/proposals/0003`); blocked on producer-side multi-module emission |
147+
| L2 (region binding) | **YES** (carrier-backed) | `verify_access_sites_from_module` PR #109; reads `typedwasm.regions` + `typedwasm.access-sites` (proposals 0001 + 0002 `[accepted]` 2026-05-30; codec PR #107; gated `cargo feature = "unstable-l2"`) |
148+
| L3–L6 (type-compat, null, bounds, result-type) | **YES** (carrier-backed, schema half) | `typedwasm.regions` codec PR #107; cross-checks against `Region.idr::WasmType`, `Pointer.idr::Nullability`, cardinality. Per-access enforcement gated on producer codegen of access-sites (`affinescript#462`, ephapax pending). |
149+
| L15 (resource capabilities, L15-A/B) | **YES** (carrier-backed) | `verify_capabilities_from_module` PR #109; reads `typedwasm.capabilities` (proposal 0001 `[accepted]`; codec PR #107; gated `cargo feature = "unstable-l15"`). L15-C deferred to proposal 0004 `[draft]`. |
148150
| L14, L16 | **out of scope** | Gated on AffineScript surface work (no `session`/`choreography` producer emission yet) |
149151

150-
**Open gating items** (post proposal 0001 acceptance):
151-
152-
1. **Access-site carrier** — issue #78. Proposal 0001's region/schema
153-
carrier says *which regions exist*; it does not say which
154-
`(region_id, field_id)` any individual wasm `i32.load offset=N`
155-
targets. Owner-resolved 2026-05-27 as **option A**
156-
(per-instruction `typedwasm.access-sites` carrier mapping
157-
`(func_idx, instruction_byte_offset) → (region_id, field_id)`).
158-
Wire-format design lands as `docs/proposals/0002-access-site-carrier.adoc`
159-
(future session). Encoding-B size measurement recorded on issue #78
160-
(~5 B/access, ~1.1% module overhead vs ~3.5 B raw access).
161-
2. **Cross-repo wire-format review**affinescript#402, ephapax#165.
162-
Both producers must sign off on the `typedwasm.regions` and
163-
`typedwasm.capabilities` formats before proposal 0001 moves from
164-
`[draft]``[review]``[accepted]`.
165-
3. **`verify_region_binding` Rust pass** — explicitly omitted from
166-
PR #77; gated on proposal 0002's acceptance (needs the access-site
167-
carrier to bind individual loads/stores back to regions).
152+
**Open gating items** (post proposals 0001 + 0002 acceptance, 2026-05-30):
153+
154+
1. **Producer codegen** — verifier passes ship; producer-side emission
155+
lags. See proposal 0001 §"Appendix B — Producer-readiness checklist"
156+
for IR prerequisites of each carrier. Tracking:
157+
`affinescript#444` (Tw_section dedup, ✅ merged), `affinescript#462`
158+
(access-sites codegen), `ephapax#221` (Ty::Borrow surfacing) +
159+
ephapax access-sites issue (owner action pending).
160+
2. **L13 cross-module (positive form)** — proposal 0003 `[draft]`
161+
(`docs/proposals/0003`). Gated on producer-side multi-module
162+
emission (AffineScript Roadmap C3 / Ephapax not yet on roadmap).
163+
3. **L15-C (call-graph monotonicity)** — proposal 0004 `[draft]`
164+
(`docs/proposals/0004`). Gated on producer-side L15-A emission
165+
(Roadmap C2 not started in either producer).
166+
4. **ADR promotion** — proposals 0001 + 0002 remain in
167+
`docs/proposals/` post-acceptance; promotion to
168+
`docs/decisions/` is a follow-up file-restructure.
168169

169170
**Spec-of-record alignment (2026-05-27, PR #79).** The
170171
`TypedWasm.ABI.VerifierSpec` Idris2 module now states the

docs/proposals/0001-multi-producer-carrier-section.adoc

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -7,10 +7,11 @@
77

88
[cols="1,3"]
99
|===
10-
| Status | review
10+
| Status | accepted
1111
| Author | hyperpolymath
1212
| Date | 2026-05-27
13-
| Last-updated | 2026-05-30 (+ Criterion 2 wire↔spec review appendix)
13+
| Last-updated | 2026-05-30 (review → accepted; owner-decision after all gates ✅)
14+
| Accepted-by | hyperpolymath (owner), 2026-05-30
1415
| Tracks issue | https://github.com/hyperpolymath/typed-wasm/issues/34[#34]
1516
| Phase | Phase 2 (https://github.com/hyperpolymath/typed-wasm/issues/50[#50]) — multi-producer adoption
1617
|===

docs/proposals/0002-access-site-carrier.adoc

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -7,10 +7,11 @@
77

88
[cols="1,3"]
99
|===
10-
| Status | review
10+
| Status | accepted
1111
| Author | hyperpolymath
1212
| Date | 2026-05-28
13-
| Last-updated | 2026-05-30
13+
| Last-updated | 2026-05-30 (review → accepted; owner-decision after all 6 gates ✅)
14+
| Accepted-by | hyperpolymath (owner), 2026-05-30
1415
| Tracks issue | https://github.com/hyperpolymath/typed-wasm/issues/78[#78]
1516
| Phase | Phase 2 (https://github.com/hyperpolymath/typed-wasm/issues/50[#50]) — multi-producer adoption
1617
| Builds on | link:0001-multi-producer-carrier-section.adoc[Proposal 0001] (multi-producer carrier sections)

docs/proposals/README.adoc

Lines changed: 6 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -22,11 +22,11 @@ Status legend:
2222

2323
| link:0001-multi-producer-carrier-section.adoc[0001]
2424
| Multi-producer carrier sections for L2–L6 and L15
25-
| `[review]`
25+
| `[accepted]` (2026-05-30)
2626

2727
| link:0002-access-site-carrier.adoc[0002]
2828
| Access-site carrier section (`typedwasm.access-sites`) for L2 enforcement
29-
| `[review]`
29+
| `[accepted]` (2026-05-30)
3030

3131
| link:0003-region-imports-carrier.adoc[0003]
3232
| Region imports carrier section (`typedwasm.region-imports`) for L13 cross-module schema agreement
@@ -37,6 +37,10 @@ Status legend:
3737
| `[draft]`
3838
|===
3939

40+
NOTE: Proposals 0001 and 0002 are `[accepted]` as of 2026-05-30. They
41+
remain in `docs/proposals/` for now; ADR promotion to
42+
`docs/decisions/` is a separate file-restructure follow-up.
43+
4044
The strategic decisions (D1–D6) from
4145
link:../PRODUCTION-PATH.adoc[`docs/PRODUCTION-PATH.adoc`] §"Load-bearing
4246
decisions" are tracked there directly; each will land an ADR under

0 commit comments

Comments
 (0)