Skip to content

Commit f99a6bf

Browse files
committed
fix(ci): re-anchor SOUNDNESS.adoc #555-stub/#560 row to clear soundness-ledger guard
check-soundness-ledger.sh fails on main: the #555-stub/#560 row (Lean/Why3 backends drop `return`) was marked `residual (pinned)` and cited the fixture test/e2e/fixtures/stub_backend_return_dropped.affine + test_stub_backend_return_xfail, but neither was ever committed — so the guard's "every cited anchor exists" check fails (and the row's "pinned" claim was untrue). The hole is real but genuinely unpinned, so downgrade the row to `open (tracked)` and drop the phantom anchor (now: tracked by #560; experimental gating is the only current fence). Truthful and minimal — no fabricated fixture/test. Creating the real pin (fixture + xfail) remains the #560/#624 follow-up. Verified: check-soundness-ledger.sh and check-doc-truthing.sh both exit 0; all remaining cited fixtures exist. Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01Lz7pRcec2Z3tVtaAhvB3M8
1 parent 769d6ff commit f99a6bf

1 file changed

Lines changed: 4 additions & 4 deletions

File tree

docs/SOUNDNESS.adoc

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -108,17 +108,17 @@ Every row in this table is in scope for the gate. There are no soundness-relevan
108108
| `test/test_borrow_polonius.ml` (parallel-run diff gate + `known_divergences`, count pinned at 7)
109109

110110
| #555-stub / #560
111-
| The Lean and Why3 experimental backends drop `return` statements wholesale — a silent-wrong-value shape, the same _category_ as the #555 codegen hole but on the stub-backend path. Not yet fenced. The fixture asserts the *current wrong behaviour* and the backends are gated `experimental` so no production verdict depends on them.
112-
| `residual (pinned)`
113-
| `test/e2e/fixtures/stub_backend_return_dropped.affine` + `test_stub_backend_return_xfail` (asserts the drop; flips to failing the day the backends fail loud or are removed). See _Still open_.
111+
| The Lean and Why3 experimental backends drop `return` statements wholesale — a silent-wrong-value shape, the same _category_ as the #555 codegen hole but on the stub-backend path. Not yet fenced, and not yet pinned by a fixture; the backends are gated `experimental` so no production verdict depends on them.
112+
| `open (tracked)`
113+
| Tracked by #560 — not yet pinned by a fixture/test; the planned anchor (an xfail asserting the drop, flipping the day the backends fail loud or are removed) is the follow-up. The `experimental` gating is the only current fence. See _Still open_.
114114
|===
115115

116116
== Still open — read before claiming "sound"
117117

118118
The implementation holes marked `fixed` / `loud-fail` / `removed` above are closed. Honesty requires naming what is *not* a guarantee. Each item here is a row in the table above, restated for the hurried reader — not a separate list:
119119

120120
* *Interpreter non-tail resume* (#555, `residual (pinned)`) — the `5`-not-`105` shape. Silent on the interpreter path; pinned.
121-
* *Stub backends drop `return`* (#555-stub / #560, `residual (pinned)`) — Lean and Why3 drop `return` wholesale. Silent-wrong-value, broader than #555 codegen, fenced only by `experimental` gating and a pinning fixture, not by a loud failure. Treat all non-reference backends as experimental (see `docs/CAPABILITY-MATRIX.adoc`).
121+
* *Stub backends drop `return`* (#555-stub / #560, `open (tracked)`) — Lean and Why3 drop `return` wholesale. Silent-wrong-value, broader than #555 codegen, fenced only by `experimental` gating (not yet pinned by a fixture, nor by a loud failure). Treat all non-reference backends as experimental (see `docs/CAPABILITY-MATRIX.adoc`).
122122
* *Generic-subsumption coherence* (#559 generic, `open (tracked)`) — concrete overlaps caught; generic-impl overlaps not yet detected.
123123

124124
If you are deciding whether AffineScript is "sound enough" for a use, these three rows are the answer, and the metatheory caveat below applies to *all* of them.

0 commit comments

Comments
 (0)