Skip to content

The prose case that would have caught the gate presenting a made call - #992

Open
leeovery wants to merge 3 commits into
feat/finding-gate-incoherencefrom
feat/finding-gate-case
Open

The prose case that would have caught the gate presenting a made call#992
leeovery wants to merge 3 commits into
feat/finding-gate-incoherencefrom
feat/finding-gate-case

Conversation

@leeovery

Copy link
Copy Markdown
Owner

Layer 4 of the finding-gate programme. Stacked on #991. Design log: #987.

One walk pins both moves against a live auto gate — the exact situation that produced the original complaint.

Input review returns three findings:

  1. settled — the 30-day refund window the discussion decides and the spec omits. The user answers auto.
  2. settled — partial refunds, also decided. Must land with no stop. This is what auto exists to give.
  3. choice — how long a failed webhook keeps retrying. Nothing in the record decides it and both ways cost something real. Must stop anyway, auto notwithstanding, with no a/auto row.

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 test 2352/2352 (corpus validation + snapshot goldens included) · npm run typecheck clean.

The walk itself is not run as part of a gate — /prose-test spec-auto-applies-settled-stops-on-choice when you want it.

🤖 Generated with Claude Code

@leeovery
leeovery force-pushed the feat/finding-gate-case branch from 9f9c338 to 68c21a2 Compare August 23, 2026 20:10
leeovery and others added 3 commits August 23, 2026 22:05
…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>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant