Conversation
check_stage_4 only checked that build-plan.md existed and a Stage-4 decision was CONFIRMED. A plan missing the three closing rows from brd-to-build-plan.md (verify-module.sh per module, coherence passes, final gate-check 5 row) passed, and nothing that walks the plan does a step it does not list. Now counts the rows against the module denominator (brief dirs + "Module brief" headings, else modules named by close rows). Plans with no numbered step rows are "not counted" and pass as before. Fixture T16 added. Implements the fix proposed in #189. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01VJgWP5vEoAsNsJYqCDMGNw
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.
Direct lane
What changed and why (one paragraph):
check_stage_4only checked thatbuild-plan.mdexisted and that a Stage-4 decision was CONFIRMED. A plan missing the three closing rowsbrd-to-build-plan.mdrequires (averify-module.sh <Module>row per module, ⌈N/3⌉ coherence-pass rows when N ≥ 2, and a finalgate-check.sh … 5row) passed the gate — and nothing that walks the plan performs a step the plan does not list, so per-module verification and the LOOK never ran. The gate now counts those rows against the module denominator (brief dirs undermodules/plus## Module brief — Xheadings; if neither exists, the modules named by close rows, with at least one owed). Only numbered step rows count, and when any row carries a Kind cell (BRIEF/BUILD/PROVE/RUN/HARNESS) only Kind rows count, so numbered question tables are not mistaken for steps. A plan with no numbered rows reports "not counted" and passes as before. The skill gains one paragraph saying the gate now checks this.Supersedes #189 — this implements the fix #189 proposed. Please close #189 rather than merging it (its branch history carries a commit that should not land on master; closing keeps master clean).
Field evidence: the #189 field report — an unattended requirements-driven build whose approved 137-row plan covered 7 modules and had no closing rows; Stage 4 passed it, and the build declared modules done that were never verified or looked at. Re-run against that plan shape (module dirs, no closing rows), the new gate FAILs and names the missing modules, the missing coherence rows and the missing final gate row.
tests/wave2/test-bug03-gates.shencodes four of them. T1 (bash tests/wave2/test-bug03-gates.sh bin/gate-check.sh) pending maintainer OK; T3 runs in CI. Existing fixtures that use plans with no numbered rows (T13,test-bug02-register) stay PASS by construction.check_stage_4lookup)CHANGELOG.mdline appended under## Unreleased, credited to the inbox: stage-4 gate passes a build plan without the mandatory closing rows (#163 unenforced) #189 field reportNote: a plan approved before this rule FAILs Stage 4 until the rows are added — intended, and stated in the skill.
🤖 Generated with Claude Code
https://claude.ai/code/session_01VJgWP5vEoAsNsJYqCDMGNw
Generated by Claude Code