Repository navigation
fix(docs): one row per bug id in state.md, and a gate that keeps it that way - #1322
Merged
Merged
Conversation
11 of 14 tasks
…hat way Five bug ids appeared twice. T-CUDA-INIT-SUBMIT-LEAKS-2026-06-19 and T-UPSTREAM-1564-ADM-CM-GPU-BORDER-AND-ROUNDING-2026-09-03 sat in BOTH "Open bugs" (the stale present-tense row) and "Recently closed" (the past-tense row the fixing PR added), so two bugs that are fixed on master read as open in every audit and in every "what is left for 1.0.0" count. Three more rows were duplicated inside "Recently closed". The cause is the keep-both conflict resolution that the merge train and the agent worktrees use for the append-only doc sections: it is correct when two PRs each append a row, and wrong when one PR is MOVING a row between sections. scripts/ci/check-state-md-rows.sh now rejects any id that appears more than once, wired into pre-commit, `make lint-sh` and the Rules workflow, with a hermetic self-test covering both shapes (same id in two sections, same id twice in one section) and the clean/missing-file cases.
lusoris
force-pushed
the
fix/state-md-duplicate-rows
branch
from
September 5, 2026 21:02
53eb403 to
dbb03a2
Compare
9 of 14 tasks
lusoris
marked this pull request as ready for review
September 5, 2026 23:03
The first version of this gate anchored row ids on `^\| \*\*(T-[A-Z0-9-]+)\*\* \|`,
which only matches a row whose first cell is the bold id and nothing else. The
majority shape in docs/state.md is `| **T-ID** -- one-line description | ...`,
so 30 of 335 rows were invisible to the gate, and its character class excluded
`.`, hiding every dotted id.
Two real duplicate pairs survived the first sweep because of exactly those two
holes, and the gate reported OK over them:
- T-SYCL-DMABUF-IMPORT-WIN32-ENOSYS was filed once under "Confirmed
not-affected (by design)" and again under "Deferred (waiting on external
trigger)" while its own text says "no action required". Kept the
not-affected row, which is the accurate verdict, and folded in the
ADR-0374 disabled-interface citation the deferred row carried.
- T-VK-VIF-1.4-RESIDUAL was filed twice under "Recently closed". Kept the
verified row citing PR #511 (merged 2026-05-09) and dropped the earlier
one, whose provenance cell still read "this PR" -- a placeholder the
ADR-0165 touch gate rejects.
The matcher now anchors on the bold token that opens the first cell and admits
`.` in ids. Two regression cases cover the shapes that slipped through; both
are detected by the new matcher and invisible to the old one.
Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
This was referenced Sep 6, 2026
lusoris
added a commit
that referenced
this pull request
Sep 6, 2026
Every merge to master appends to docs/rebase-notes.md, docs/adr/README.md, docs/adr/_index_fragments/_order.txt and CHANGELOG.md, so every other open PR conflicted on them and had to be rebased by hand. Across three batch rebases on 2026-09-05 that was 32 conflicts — 17 in rebase-notes.md, 7 in the ADR index, 7 in _order.txt, 1 in CHANGELOG.md — and the resolution was always the same: keep both sides. merge=union does exactly that, automatically. docs/state.md is deliberately NOT included. Its rows move between 'Open bugs' and 'Recently closed', so keeping both sides duplicates a row and a fixed bug reads as open forever — the defect PR #1322 removes and gates. Those conflicts stay manual so whoever moves a row has to think about it. Verified on this repo: two branches each prepending a section to docs/rebase-notes.md rebase onto each other with 0 conflicts and both entries present. Caveat, stated in the rebase note: git reads a merge driver from the merge base, so branches already open when this lands conflict once more and are clean from then on.
5 of 9 tasks
lusoris
added a commit
that referenced
this pull request
Sep 6, 2026
Every merge to master appends to docs/rebase-notes.md, docs/adr/README.md, docs/adr/_index_fragments/_order.txt and CHANGELOG.md, so every other open PR conflicted on them and had to be rebased by hand. Across three batch rebases on 2026-09-05 that was 32 conflicts — 17 in rebase-notes.md, 7 in the ADR index, 7 in _order.txt, 1 in CHANGELOG.md — and the resolution was always the same: keep both sides. merge=union does exactly that, automatically. docs/state.md is deliberately NOT included. Its rows move between 'Open bugs' and 'Recently closed', so keeping both sides duplicates a row and a fixed bug reads as open forever — the defect PR #1322 removes and gates. Those conflicts stay manual so whoever moves a row has to think about it. Verified on this repo: two branches each prepending a section to docs/rebase-notes.md rebase onto each other with 0 conflicts and both entries present. Caveat, stated in the rebase note: git reads a merge driver from the merge base, so branches already open when this lands conflict once more and are clean from then on.
lusoris
added a commit
that referenced
this pull request
Sep 6, 2026
Every merge to master appends to docs/rebase-notes.md, docs/adr/README.md, docs/adr/_index_fragments/_order.txt and CHANGELOG.md, so every other open PR conflicted on them and had to be rebased by hand. Across three batch rebases on 2026-09-05 that was 32 conflicts — 17 in rebase-notes.md, 7 in the ADR index, 7 in _order.txt, 1 in CHANGELOG.md — and the resolution was always the same: keep both sides. merge=union does exactly that, automatically. docs/state.md is deliberately NOT included. Its rows move between 'Open bugs' and 'Recently closed', so keeping both sides duplicates a row and a fixed bug reads as open forever — the defect PR #1322 removes and gates. Those conflicts stay manual so whoever moves a row has to think about it. Verified on this repo: two branches each prepending a section to docs/rebase-notes.md rebase onto each other with 0 conflicts and both entries present. Caveat, stated in the rebase note: git reads a merge driver from the merge base, so branches already open when this lands conflict once more and are clean from then on.
lusoris
added a commit
that referenced
this pull request
Sep 7, 2026
Every merge to master appends to docs/rebase-notes.md, docs/adr/README.md, docs/adr/_index_fragments/_order.txt and CHANGELOG.md, so every other open PR conflicted on them and had to be rebased by hand. Across three batch rebases on 2026-09-05 that was 32 conflicts — 17 in rebase-notes.md, 7 in the ADR index, 7 in _order.txt, 1 in CHANGELOG.md — and the resolution was always the same: keep both sides. merge=union does exactly that, automatically. docs/state.md is deliberately NOT included. Its rows move between 'Open bugs' and 'Recently closed', so keeping both sides duplicates a row and a fixed bug reads as open forever — the defect PR #1322 removes and gates. Those conflicts stay manual so whoever moves a row has to think about it. Verified on this repo: two branches each prepending a section to docs/rebase-notes.md rebase onto each other with 0 conflicts and both entries present. Caveat, stated in the rebase note: git reads a merge driver from the merge base, so branches already open when this lands conflict once more and are clean from then on. Co-authored-by: Lusoris <lusoris@pm.me>
This was referenced Sep 7, 2026
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.
Summary
Five bug ids appeared twice in
docs/state.md. Two of them —T-CUDA-INIT-SUBMIT-LEAKS-2026-06-19(fixed by #1279) andT-UPSTREAM-1564-ADM-CM-GPU-BORDER-AND-ROUNDING-2026-09-03(fixed by #1224) — sat in both "Open bugs", with the stale present-tense wording, and "Recently closed", with the past-tense wording the fixing PR added. Two bugs that are fixed on master therefore read as open in every audit and in every "what is left for 1.0.0" count. Three more rows (T-SPEED-GPU-REGISTRY-ORPHAN-2026-06-19,T-SIMD-BIT-EXACT-ROUND2-2026-05-30,T-SIMD-ICX-FP-CONTRACT-2026-05-30) were duplicated inside "Recently closed".The cause is the keep-both conflict resolution that the merge train and the agent worktrees use for the append-only doc sections. It is right when two PRs each append a row and wrong when one PR is moving a row between sections, and the result is invisible in a diff hunk. So the duplicates are removed and
scripts/ci/check-state-md-rows.shnow rejects any id that appears more than once, in pre-commit, inmake lint-shand in the Rules workflow, with a hermetic self-test for both shapes. Open-bug rows drop from 17 to 15.Type
fix— bug-ledger correctness + a new gateChecklist
make format && make lintis green locally (pre-commit on every touched file; shellcheck/shfmt; actionlint clean).scripts/ci/tests/test-check-state-md-rows.sh(5 cases).docs/rebase-notes.mdtells the next rebaser to run it.Bug-status hygiene (ADR-0165)
docs/state.md— the five duplicates removed;T-STATE-MD-DUPLICATE-ROWS-2026-09-05added to Recently closed.Netflix golden-data gate (ADR-0024)
assertAlmostEqual(...)score in the Netflix golden Python tests.Deep-dive deliverables (ADR-0108)
AGENTS.mdinvariant note — no rebase-sensitive invariants: the coupling is recorded indocs/rebase-notes.mdbecause it is a rebase note (run the gate after any keep-both resolution).changelog.d/fixed/state-md-duplicate-rows.md.docs/rebase-notes.mdentry.Reproducer
🤖 Generated with Claude Code