Skip to content

Commit b722b2e

Browse files
hyperpolymathclaude
andcommitted
docs(proof): clear proof-status header drift + cross-ref the assurance ladder
Under one-time owner authorization, fix two pre-existing header-drift files that blocked their own commits, then re-apply the codegen→verified-wasm assurance-ladder cross-references so the proof-status docs stay non-drifted: - docs/proof-debt.md: add the canonical owner Copyright line (the file carried only the `(hyperpolymath)` SPDX-FileCopyrightText form); refresh the zero-debt invariant with the 2026-06-16 idris2 re-verification; add a scope note pointing to PROOF-NEEDS.md for the T1–T5 ladder. - docs/wiki/Proof-Debt-Status.md: add the missing SPDX + owner header; add the "Codegen→verified-wasm assurance ladder" subsection (T1 ✅, T2 ✅, T3–T5). The strict pre-commit hook is retained; both files now pass it. Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
1 parent 80ba314 commit b722b2e

2 files changed

Lines changed: 32 additions & 1 deletion

File tree

docs/proof-debt.md

Lines changed: 13 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,7 @@
11
<!--
22
SPDX-License-Identifier: MPL-2.0
33
SPDX-FileCopyrightText: 2026 Jonathan D.A. Jewell (hyperpolymath)
4+
Copyright (c) 2026 Jonathan D.A. Jewell <j.d.a.jewell@open.ac.uk>
45
-->
56

67
# Proof Debt — typed-wasm
@@ -9,7 +10,11 @@ SPDX-FileCopyrightText: 2026 Jonathan D.A. Jewell (hyperpolymath)
910

1011
## Current state
1112

12-
**Zero soundness-relevant escape hatches** in this repo as of 2026-05-26.
13+
**Zero soundness-relevant escape hatches** in this repo as of 2026-05-26;
14+
**re-confirmed 2026-06-16** (`idris2 --build src/abi/typed-wasm.ipkg` → exit 0,
15+
22/22 modules; marker grep for `believe_me` / `assert_total` / `postulate` /
16+
`sorry` / `Admitted` / `assert_smaller` / holes returns only docstring
17+
disclaimers).
1318

1419
Verified by `scripts/check-trusted-base.sh` from
1520
[hyperpolymath/standards](https://github.com/hyperpolymath/standards)
@@ -18,6 +23,13 @@ stating the file does NOT use `believe_me` / `assert_total` /
1823
`postulate` / `sorry` / `Admitted` (the "no escape hatches"
1924
discipline pattern).
2025

26+
> **Scope note.** This ledger covers the _Idris-model_ proof axis (escape-hatch
27+
> freedom in `src/abi/`). The complementary _codegen→verified-wasm_ assurance
28+
> axis (T1 execution gate … T5 wasm-semantics tie-back) is tracked in
29+
> [`PROOF-NEEDS.md`](../PROOF-NEEDS.md) §"RECONCILIATION 2026-06-16 (codegen
30+
> climb)". Those tiers are tests / decode-time checks in the Rust trusted base,
31+
> not Idris proof obligations, so they introduce no escape-hatch debt here.
32+
2133
## (a) DISCHARGED in this repo
2234

2335
*(None — never any to discharge.)*

docs/wiki/Proof-Debt-Status.md

Lines changed: 19 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,8 @@
1+
<!--
2+
SPDX-License-Identifier: MPL-2.0
3+
Copyright (c) 2026 Jonathan D.A. Jewell <j.d.a.jewell@open.ac.uk>
4+
-->
5+
16
# Proof Debt Status
27

38
**What's mechanically proven in typed-wasm, what's outstanding, and what's blocked on prerequisites.**
@@ -128,6 +133,20 @@ The `composeWitnessLegacyAgree` lemma pins down: composing the legacy projection
128133

129134
In rough decreasing priority:
130135

136+
### Codegen→verified-wasm assurance ladder (the second axis) — ACTIVE
137+
138+
**Status:** climbing (2026-06-16). This is a _second, complementary_ axis to the
139+
Idris-model proofs above: the assurance that the Rust producer's emitted bytes
140+
are what an independent verifier accepts and a wasm engine executes correctly.
141+
Full per-tier detail (T1…T5) lives in
142+
[`PROOF-NEEDS.md` §"RECONCILIATION 2026-06-16 (codegen climb)"](https://github.com/hyperpolymath/typed-wasm/blob/main/PROOF-NEEDS.md). Headline:
143+
144+
- **T1 execution gate** — ✅ landed (`tests/execute_lowering.rs`, wasmi round-trip + no-clobber, non-vacuous by mutation). _Empirical stand-in for the byte-equality / WasmCert items below until those land._
145+
- **T2 verifier self-certification** — ✅ landed (`verify_access_typing_from_module` + `AccessTypingReport`): the verifier decodes the code section and checks each pinned access lands on a load/store of the field's exact type/width/offset, in-region. Closes proposal-0002's deferred `AccessSiteMisalignment`. Tests in `tests/access_typing.rs` (positive + 5 teeth + control, mutation-proven).
146+
- **T3 parser totality** — ⚠️ 3 pre-existing arithmetic panics remain (hardening PR pending).
147+
- **T4 layout-equivalence lemma** — ❌ `Layout/ABI.idr` offsets vs Rust `resolve_field`, unproven equal (next bridge).
148+
- **T5a verifier↔spec** — ◐ trusted-base via ADR-0005; **T5b WasmCert tie-back** — ❌ (same item as below).
149+
131150
### Verifier L1–L6 + L13–L16 coverage on emitted wasm (#34 / #35)
132151

133152
**Status:** in progress on PRs #76 (carrier-section wire-format proposal) + #77 (L2 codec pre-staged behind `cfg(feature = "unstable-l2")`). DO NOT interfere — actively worked by a parallel session.

0 commit comments

Comments
 (0)