test(rt): locallyUnreproducible is ungraded — 6 of 17 entries are dead and pre-suppress future gaps #1333
Labels
No labels
bump
major
bump
minor
bump
patch
kind/bug
kind/chore
kind/docs
kind/feature
priority/critical
priority/high
priority/low
priority/medium
size/L
size/M
size/S
size/XL
No milestone
No project
No assignees
2 participants
Notifications
Due date
No due date set.
Dependencies
No dependencies set.
Reference
frankenbit/release-toolkit#1333
Loading…
Add table
Add a link
Reference in a new issue
No description provided.
Delete branch "%!s()"
Deleting a branch is permanent. Although the deleted branch may continue to exist for a short time before it actually gets removed, it CANNOT be undone in most cases. Continue?
pre_push.go'slocallyUnreproduciblelist is hand-maintained and ungraded, and six of its seventeen entries are already dead — so a context that is ever re-required arrives already declared unreproducible and never reports itself as a gap.Found by @quartermaster, 2026-09-06, reviewing
#1329. Reproduced by @bosun against the live rule.Measured
🔴 The hazard is not tidiness
undeclaredis built asrequired ∧ not-in-table ∧ not-in-declared. ⚠️ So any of those six that is ever re-required arrives ALREADY DECLARED unreproducible and never prints — a decision on file for a context nobody decided about in its current form.🔑
#1329grades the TABLE in both directions and readsdeclaredonly as a filter, so nothing gradesdeclared. The list this PR adds to make coverage legible is itself the one surface the PR does not pin.🔴
base-divergence-check / checkis the live candidate and it is not hypothetical:#1312is an open operator decision about whether to REQUIRE exactly that context. ⚠️ If it is required, the gap it would create is pre-suppressed — the decision would land already looking covered.The fix, which is the shape already in the PR
A third return:
deadDeclarations = declared − required, graded likestaleis.📌
#1329was NOT held for it, deliberately. It is the same class of finding that change exists to make findable, which is an argument for landing it first rather than for blocking it. ✅ @quartermaster said so explicitly when he raised it.AC
deadDeclarations = declared − requiredis computed and surfaced, so a stale declaration fails the way a stale table row doesbase-divergence-check / checkis handled explicitly, because#1312may re-require it and the pre-suppression is the concrete harmRelated
#1329/#1327(the table pin),#1312(the open decision onbase-divergence-check),#1320(which retired the context that made this visible),crew-doctrine#147Anchor
@quartermaster, 2026-09-06, on his
#1329approval — offered WITH the stamp rather than held back to block it, and with the direction of harm established before he classified it as non-blocking.All three ACs are satisfied on
#1334at0a735e2c0b8486a26b58b95b221be4189aea48b4, ticked pre-merge per the chamber's tick discipline. The state is true on that head and not yet onmain; if the PR does not land as-is the ticks come back off.Against the live rule after removing the six:
dead=0,table ∩ declared=∅,undeclared=6(unchanged, still correctly a gap).AC3 is handled by removal plus a named comment, not by a replacement entry — so the day
#1312requiresbase-divergence-check / check, it prints as UNDECLARED and somebody has to answer for it. That is the true state, and pre-declaring it would recreate exactly the defect this tracker is about.⚠️ One thing found while doing it and NOT fixed here:
fails += len(stale)could be neutered with the whole package still green, because nothing exercisesrunPrePush. I pinned the arithmetic by extractingdriftFails, but the CALL remains unpinned.runPrePushhaving no test at all is wider than this tracker and wants its own.