Skip to content

fix(gate-check): stage decisions read from the Decisions table only; Stage 7 accepts a dated CONFIRMED - #176

Merged
MendixMau merged 2 commits into
masterfrom
fix/gate-check-stage7-detector
Sep 30, 2026
Merged

MendixMau merged 2 commits into
masterfrom
fix/gate-check-stage7-detector

Conversation

@MendixMau

@MendixMau MendixMau commented Sep 29, 2026 •

Copy link
Copy Markdown
Owner

What changed and why (one paragraph)

has_confirmed_decision (Stages 3 and 4) and check_stage_7 scanned every pipe row in the register. The template register has a second table, Open questions (| # | Question | Raised at | Status |), so a question numbered 4 or 7 with Status CONFIRMED passed that ✋ gate with no decision behind it. Both readers now count only rows under a header whose first cell is Stage. A register with no such header keeps the old every-row scan, so hand-built registers do not regress. Stage 7 also matched the status string-exactly, so CONFIRMED 2026-08-10 failed Stage 7 while passing Stages 3 and 4. It now uses the same word-anchored match (TD-07); NOT CONFIRMED and a Notes cell that mentions the word still fail.

Field evidence

Ran bin/gate-check.sh on scratch projects, pre-fix (master cee5c9a) vs this branch:

Register master this PR
Decisions has only Stage 3; Open questions has rows #4 and #7 CONFIRMED Stage 4 PASS, Stage 7 PASS (false greens) Stage 4 FAIL, Stage 7 PENDING "no cutover decision row"
Plus a second Stage-headed table with Stage 4 CONFIRMED and Stage 7 CONFIRMED 2026-08-10 n/a Stage 4 PASS, Stage 7 PASS
Stage 7 row CONFIRMED 2026-08-10 only Stage 7 FAIL (false red) Stage 7 PASS
Header-less register, ` 7 Cutover plan

Also ran against a copy of a real greenfield PoC register (Mendix 11.x, 69 decision rows plus Open questions and a defects table): Stage 4 PASS as before, Stage 7 WAIVED by entry mode as before.

Checklist

  • No client data: diff grepped against the denylist terms, leak guard passes
  • Size cap: 3 files, +79/−12
  • Test tier: T1. New cases T13–T15 in tests/wave2/test-bug03-gates.sh, T7's message grep updated. Verified by running the gate on the same scratch registers; the fixture itself runs in CI
  • Instrument rules: register path resolution untouched, so both layouts are unaffected; positive control shown above
  • Routing row: n/a
  • CHANGELOG line: yes, under Unreleased
  • Bug entries: n/a

🤖 Generated with Claude Code

https://claude.ai/code/session_01VJgWP5vEoAsNsJYqCDMGNw

…Stage 7 accepts a dated CONFIRMED

has_confirmed_decision and check_stage_7 scanned every pipe row, so an
Open-questions row numbered 4 or 7 with Status CONFIRMED passed the stage.
Both now count only rows under a header whose first cell is Stage, falling
back to the old scan when no such header exists. Stage 7 now uses the
word-anchored CONFIRMED match the other stages use.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01VJgWP5vEoAsNsJYqCDMGNw
@MendixMau
MendixMau marked this pull request as ready for review September 29, 2026 23:49
… Unreleased lines)

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01VJgWP5vEoAsNsJYqCDMGNw
@MendixMau
MendixMau merged commit 42988d4 into master Sep 30, 2026
1 check passed
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