The prose case that would have caught the gate presenting a made call - #992
Open
leeovery wants to merge 3 commits into
Open
The prose case that would have caught the gate presenting a made call#992leeovery wants to merge 3 commits into
leeovery wants to merge 3 commits into
Conversation
leeovery
force-pushed
the
feat/finding-gate-case
branch
from
August 23, 2026 20:10
9f9c338 to
68c21a2
Compare
…de call One walk pins both moves against a live auto gate. Three findings: a settled call the user answers with auto, a second settled call that must land with no stop, and a choice that must stop anyway. The choice is the load-bearing half. The user picks the option that is not recommended, so the end state distinguishes a presented choice from a rubber-stamped recommendation — a walk that lands the recommendation has done the thing this contract exists to prevent. Every row ends Approved: there is no skip route out of a finding. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
With auto set at finding 1 and review_cycle at 1, spec-review runs the follow-up cycle without stopping — the reloop gate renders only at cycle 5 or under gated, so the case's invariant demanded a render this world can never produce, and cycle 2's input dispatch had no armed stub. The clean stub now arms for cycle 2+, the reloop render moves to calls_exclude, and the walk ends where auto semantics take it: a clean follow-up cycle straight into completion. The deterministic layer now pins the contract the case exists to pin: render finding appears twice in calls_in_order after the auto flip, so a walk that applied findings 2 and 3 without rendering them fails on computed evidence, not on the asserter's reading. The choice's assert expects the engine's auto-override line. The stub's finding 2 quotes the document as the agent read it — the loop re-derives Current once finding 1 lands — and its options are one line each, as the format prescribes. Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
…writes spec-review's increment is the positional pair — review_cycle 2, no equals — and the invariant matcher is a substring test, so the batch form the case demanded could never match a faithful walk. The same defect class the previous fix removed, reintroduced one line over; the sibling planning case already pins the space form. Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
leeovery
force-pushed
the
feat/finding-gate-case
branch
from
August 23, 2026 21:05
68c21a2 to
7459cc1
Compare
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Layer 4 of the finding-gate programme. Stacked on #991. Design log: #987.
One walk pins both moves against a live
autogate — the exact situation that produced the original complaint.Input review returns three findings:
auto.autoexists to give.autonotwithstanding, with noa/autorow.The choice is the load-bearing half. The user picks the option that is not recommended, so the end state distinguishes a presented choice from a rubber-stamped recommendation: a walk that lands the three-attempt ceiling instead of the 24-hour one has done exactly the thing this contract exists to prevent.
Also asserted: every tracking row ends
Approved(there is no skip route out of a finding), nothing routes to a source, and the discussion document is untouched.Snapshot generated with
node tests/prose/run.cjs snap, not hand-edited.Gates
npm test2352/2352 (corpus validation + snapshot goldens included) ·npm run typecheckclean.The walk itself is not run as part of a gate —
/prose-test spec-auto-applies-settled-stops-on-choicewhen you want it.🤖 Generated with Claude Code