Repository navigation
System-1: a gate nothing waits for goes back to the structure pass - #239
Merged
Merged
Conversation
An overnight audit of 15 default compiles found gates that block nothing: no later node read the gate or listed it in `after`, so the step the approval guards could run before the person answered, or without the answer. The skill's reference run waits. The structure pass now checks it from the data flow alone. A top-level hitl_gate with no reader through reads/after is a contradiction, sent back like the pass's other evidence checks, naming the gate and asking which step the approval guards. A gate that is the run's only exit passes: that is a final sign-off, as the BDR gold's manual_enrollment_handoff is. What survives the repairs becomes an Open question; resolve adds no ordering, since which step a gate guards is a reading of the skill. Not IR validation: every committed BDR pipeline ends in a terminal gate, and the rule is about the skill's meaning, not about what the IR can run. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01RPP1Mjr1neTbmgg1eUaQZg
Owner
Author
|
Measured with the default compile (
The check didn't fire on either dev skill. Their gates already have a dependent, both here and in 24 earlier default compiles. So these runs show fidelity holding, not the fix. The failing shape comes from the audit: 3 of 16 gates in its default compiles (ooo-coverage-handoff
|
review6's mutation (count in_loop nodes' reads) survived every test. Also say plainly that one direct dependent is enough: the old docstring described a transitive search the code does not do. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01RPP1Mjr1neTbmgg1eUaQZg
trevhud
marked this pull request as ready for review
October 23, 2026 01:19
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.
An overnight audit of 15 default compiles found
hitl_gates that block nothing: no later node reads the gate or lists it inafter, so the step the approval guards can run before the person answers. The reference run waits. 3 of the 16 gates in the audit's default compiles had this shape.What changed
structure._check_gate_waiters, run insidestructure.check: a top-level gate that no node reaches byreadsoraftercounts as a contradiction. It goes back to the pass like the other evidence checks, names the gate, asks which step in the skill the approval guards, and says how to add the dependency (readsif the step uses the answer,afterwithafter_quoteif it doesn't).manual_enrollment_handoff, gold included). A gate with another exit running beside it does not pass.resolvelists it as an Open question. It adds no edge, because which step a gate guards is a reading of the skill.Why not IR validation: every committed BDR pipeline ends in a gate nothing waits for, and that is valid. The rule depends on what the skill means, not on what the IR can run. I left the legacy (
--no-system1) path alone. It could get the same check as a verification finding; that's a follow-up if wanted.Tests (tests/test_system1_structure.py) cover the finding text, clearing it through
readsand throughafter, a transitive dependent, the terminal sign-off and its negative half, two terminal gates, repair end to end, and the Open question after repairs run out. Four mutations were checked against them (check removed, terminal exemption removed,afterignored, resolve note removed), and each one fails at least one test.Measurement: see the comment below.
🤖 Generated with Claude Code
https://claude.ai/code/session_01RPP1Mjr1neTbmgg1eUaQZg