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
fix(#624): fence Lean/Why3 backends to fail loud on early return
The experimental Lean/Why3 emitters silently dropped early `return` statements
(gen_block skipped them, lowering `fn f(){ return 1; … }` to `:= ()`). Add an
Ast.fn_body_contains_return fence so codegen_lean/codegen_why3 return Error
instead. The hole moves residual(pinned) -> loud-fail; the xfail pin flipped to
XPASS (verified by running the harness) and is converted to a positive
fence-check (test_stub_backend_return_fenced).
Also (the "small calls"):
- Content-bind suite-file anchors too (whole-file hash) — the manifest now seals
test/test_borrow_polonius.ml; verified property 3 catches a mutation to it.
Ledger's "each anchor content-bound" claim is now fully true.
- Add a best-effort branch-freshness check to property 4 (origin/main-guarded):
if main moved a soundness path under the branch, the gate asks for a rebase.
- Fix a gate false-positive: pinned_row_pins now matches the STATUS CELL, not a
prose mention of the status word (caught by running the gate, not eyeballing).
- #555-stub row cites #624 (not #560 — that's variable-string wasm ops).
Verified: dune build + dune runtest green (534 tests); all 5 gate properties +
the three sibling gates green; self-tests for content-binding (incl. suite) red
as expected. #623 (interp non-tail resume) left for owner-steer — it needs a CPS
rewrite of eval, not a small fix.
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01BbxKhXQwTvVgkYDgBMLJoa
0 commit comments