From 487504bee0913b1d941f8f7e544eef7be50ea20d Mon Sep 17 00:00:00 2001 From: "Jonathan D.A. Jewell" <6759885+hyperpolymath@users.noreply.github.com> Date: Fri, 15 May 2026 08:30:08 +0100 Subject: [PATCH] docs: record typed-wasm-verify integration (C6/C7) in repo-level docs MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit C6 (#70) and C7 (#72) merged on 2026-05-15 but the repo-level docs didn't catch up. Fixes that. Changes ------- * CHANGELOG.md `[Unreleased] → Added`: new top-level entry covering C6 (`affinescript.ownership` section emission in ephapax-wasm) and C7 (`ephapax compile --verify-ownership` flag). Includes the typed-wasm-verify rev pin history (`e11bb985` at C6, bumped to `67006edd` at C7 to grab the cross-module verifier). * .machine_readable/6a2/ECOSYSTEM.a2ml: update the typed-wasm entry in `[related-projects]` from the placeholder "aggregate-library" relationship + "Shared binary layout conventions" note to the actual relationship that now exists — `code-dependency`, with a concrete description of which ephapax crates depend on what. No code changes. Closes the documentation gap on what was already merged across #70 and #72. Co-Authored-By: Claude Opus 4.7 --- .machine_readable/6a2/ECOSYSTEM.a2ml | 2 +- CHANGELOG.md | 4 ++++ 2 files changed, 5 insertions(+), 1 deletion(-) diff --git a/.machine_readable/6a2/ECOSYSTEM.a2ml b/.machine_readable/6a2/ECOSYSTEM.a2ml index 119d80a..492053d 100644 --- a/.machine_readable/6a2/ECOSYSTEM.a2ml +++ b/.machine_readable/6a2/ECOSYSTEM.a2ml @@ -19,6 +19,6 @@ notes = "Ephapax provides the resource-safety guarantees (no-leak, no-use-after- projects = [ { name = "proven", relationship = "downstream-consumer", notes = "Proven consumes ephapax via Zig bindings for high-assurance resource management." }, { name = "007-lang", relationship = "sibling-language", notes = "Shares linear logic concepts for agent handles and session types." }, - { name = "typed-wasm", relationship = "aggregate-library", notes = "Shared binary layout conventions for WasmGC cross-language calls." }, + { name = "typed-wasm", relationship = "code-dependency", notes = "ephapax-wasm + ephapax-cli depend on `crates/typed-wasm-verify` (Cargo git dep, pinned by rev) for L7 (aliasing) + L10 (linearity) post-codegen verification. ephapax emits the `affinescript.ownership` custom section on every compile (C6); `ephapax compile --verify-ownership` runs the verifier on the emitted module (C7). Shared binary layout conventions for cross-language calls remain a longer-term concern." }, { name = "standards", relationship = "parent", notes = "Enforces the RSR 2026 standards that ephapax implements." }, ] diff --git a/CHANGELOG.md b/CHANGELOG.md index 5374ea6..3588699 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -6,6 +6,10 @@ All notable changes to Ephapax are documented here. ## [Unreleased] ### Added +- **typed-wasm L7+L10 integration** (closes the typed-wasm-verify loop for ephapax): + - **C6 (#70)** — `ephapax-wasm` emits an `affinescript.ownership` custom section on every compile when any user fn has a Linear parameter. Section format and encoder come from the new `typed-wasm-verify` Rust crate (`hyperpolymath/typed-wasm:crates/typed-wasm-verify/`, rev `e11bb985` at C6, bumped to `67006edd` at C7). Driven by `Ty::is_linear()`; entries sorted by `func_idx` for deterministic output. 4 new unit tests; `cargo test --workspace` clean. + - **C7 (#72)** — New `--verify-ownership` flag on `ephapax compile`. After codegen and before output write, runs `typed_wasm_verify::verify_from_module` on the emitted module and surfaces any aliasing / linearity violation as a non-zero exit. Output: `✓ typed-wasm L7+L10 verification: clean` on success; per-violation diagnostics on failure. 3 new integration tests spawn the built binary. + - Net effect: ephapax-emitted wasm now has end-to-end L7+L10 guarantees — producer side (custom section emission) + opt-in consumer side (verifier flag), both backed by the canonical Rust verifier shared with `hyperpolymath/typed-wasm`. - `module Qualified.Name` declarations (dotted module paths) - `--` Haskell-style line comments (alongside existing `//` and `/* */`) - Qualified names in imports: `import Foo.Bar.Baz`