You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
First Stage-E widening slice (the agent-scoped doable-now, high-value
level). Emitted-wasm enforcement was L7(aliasing)+L10(linearity) only.
This adds **L13 module isolation, negative form**:
- `Tw_verify.ModuleNotIsolated` + `verify_module_isolation`: a module
that owns its own linear memory yet also imports a memory or table
has a cross-module shared-state channel outside the declared
function-import boundary. AffineScript codegen always emits a private
memory and never imports one, so a violation is a codegen/isolation
regression — exactly the class tw_verify catches on emitted wasm.
- Wired into `verify_from_module`, gated behind the same
`affinescript.ownership` presence so the "no section ⇒ Ok" contract
is preserved. `pp_error` case added.
- **Carrier-free**: reads only the standard wasm import/memory
sections — NO ownership-section wire-format change, so the
multi-producer ABI (ephapax + typed-wasm) is untouched (no unilateral
ABI change, per the ECOSYSTEM contract).
Tests: `test/test_tw_isolation.ml` (5 cases — clean module Ok;
imported memory + own memory ⇒ ModuleNotIsolated; imported table ⇒
flagged; pure-consumer shim not in scope; no-ownership-section ⇒ Ok
contract). `dune test --force` 295/295. Zero regression.
ECOSYSTEM/TECH-DEBT coverage truthed. L1–6/L14–16 need a new
region/capability carrier section = a multi-producer ABI proposal
(filed for typed-wasm; explicitly NOT implemented unilaterally). The
Rust-verifier mirror (typed-wasm crates/typed-wasm-verify) and INT-12
C5.1 are tracked cross-repo follow-ups.
Refs #234#235. Stage-E typed-wasm convergence widening (CONV-04).
Not Closes — Stage E continues; owner closes per ISSUE-CLOSURE.
0 commit comments