Repository navigation
fix(gate-check): a blank line inside the Decisions table no longer ends it (#676) - #693
Merged
Merged
Conversation
…ds it (#676) The five Decisions-table readers ended the table at any non-pipe line, so a CONFIRMED row after a blank line was ignored and Stage 3/4 FAILed (Stage 7 read PENDING). They now share DECISIONS_TABLE_AWK, a two-pass prefix that skips blank lines and still ends the table at a heading, prose, or a new header row whose first cell is not "Stage" (an Open-questions table). Fixture: tests/wave2/test-decisions-blank-line.sh — D1, D2, D4 FAIL on origin/master ee12a61; D3 FAILs on a blanks-only fix. Fixes #676 Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_013jQvaonym9V1wKKfAEPmRr
…review) On a CRLF register the separator row did not match, so after a blank line the Open-questions header was not recognised and its rows read as Decisions (a false PASS). Fixture case D3c: the CRLF variant of D3; it FAILs (false PASS on Stages 4 and 7) without the \r. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_013jQvaonym9V1wKKfAEPmRr
…ne (bash 3.2) check-portability flagged 5 heredocs opened inside command substitution. mkproj now sets P itself and is called as `mkproj <name> <<'EOF'`. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_013jQvaonym9V1wKKfAEPmRr
Keep both sides of CHANGELOG.md. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_013jQvaonym9V1wKKfAEPmRr
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.
Fixes #676
What changed
bin/gate-check.sh: the five Decisions-table readers all ended the table at any non-pipe line, blank lines included:has_confirmed_decision,has_auto_assumed_decision,auto_hand_pending,stage_exit_recorded, plus a fifth copy incheck_stage_7that the issue did not list. A CONFIRMED row after a blank line was therefore ignored. Stage 3/4 FAILed with "no Stage-N CONFIRMED decision", and Stage 7 read PENDING.DECISIONS_TABLE_AWK, and read the register in two passes ("$f" "$f"). The first pass records which lines are separator rows, so the second can look one line ahead.Stage. An Open-questions table after a blank line is therefore still never read as Decisions.auto_hand_pendingnow usesFNRfor its line ids, becauseNRcounts both passes.tests/wave2/test-decisions-blank-line.sh:| 4 |…CONFIRMED|and| 7 |…CONFIRMED|. Expected: Stages 4 and 7 do NOT pass.PROJECT.md:6.Evidence
Time cost (#687)
gate-check.sh p1 4averaged 921 ms before and 844 ms after, so any difference is below the noise.Regression risk after sync
stage_exit_recordedcan now raise the "approved over a failing gate" flag for such rows. The auto-mode ✋ list (and with it the Stage 6 FAIL) can list rows it used to miss.| Stage |header falls back to scanning every table, as before.auto_hand_pendingare unchanged.FNR == NR, array lookahead), no gawk-isms. It does not depend on the project layout: the register comes from the existingREGISTERresolver.Review: pending independent review
Generated by Claude Code