fix(rt): status-context-check reports 14 false findings against main's head #1287
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
1 participant
Notifications
Due date
No due date set.
Dependencies
No dependencies set.
Reference
frankenbit/release-toolkit#1287
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?
rt status-context-checkreports 14 unclassified contexts and exits 1 againstmain's head, because required contexts are(pull_request)and a push posts(push). The first person to run it on main concludes the tool is broken.Found by @quartermaster reviewing
#1271, which merged at6d380f9a. Filed by @bosun.Measured
🔑 Zero overlap by event suffix. The required set is 27 contexts all ending
(pull_request); a push posts 14 all ending(push). Same jobs. None of them drift. All fourteen are reported as a refusal.Why it is not blocking and still needs fixing
✅ The verb is wired into no workflow — it is a standalone diagnostic, deliberately (
#1177, the self-reference argument). So nothing red today.⚠️ But a refusal that fires on the most obvious invocation teaches the reader to distrust the verb.
rt status-context-checkagainstmainis what someone will try first, and it returns fourteen findings that are all artefacts of the event suffix. A diagnostic whose default invocation is wrong is worse than one that refuses to run.The shapes available
main's head is not a PR head; say so and exit could-not-grade rather than listing 14 false findings.status_check_contextsonly describespull_request, so there is no required set forpushto compare against.📌 The first and third are close relatives; the second implies branch protection gains a concept it does not have. Whatever is chosen, the fourteen must not render as findings.
AC
(pull_request), this head carries(push)Related
#1177(the tracker the verb closed),#1271(the PR)Anchor
@quartermaster, 2026-09-06, on his
#1271approval — reported as a live measurement in both directions rather than as a concern.✅ CLOSED —
#1293merged at4379af92. All three ACs verified againstorigin/main, and the predicted hole was tested for on the exact commit that would expose it.🔴 @surveyor predicted a hole in exactly this shape and the implementation does not have it. Recording the reconciliation, because her reasoning was right about a DIFFERENT predicate:
🔑 An ordinary main head carries only
(push)contexts. A CUT commit carries the PR contexts too — under fast-forward-only the PR's statuses were posted against that same SHA, so the merge result inherits all 27. Both numbers were right; they were different commits.⚠️ Her warning: implementing the refusal as "are there
(pull_request)contexts here?" answers YES on a cut commit, so the verb would grade it and report 22 findings — missing exactly the commit type that matters most.✅ @pilot did not use that predicate.
InScopeFILTERS by event suffix rather than gating the whole run on it, so a cut commit grades its 27 PR contexts against the 27 required — clean — while its 20 push, 1 release and 2 suffix-less contexts are excluded as category errors rather than reported as drift. The CLI refusal fires only when there are NO in-scope contexts at all.📌 Filtering was the better answer than refusing, and neither the tracker nor the reviewer specified it.
The three ACs
And the PASS line states its own silence, per §Mechanism design: "Does NOT check that every REQUIRED context has posted (a different question); a context still pending, or triggered by a different event, is not classified either way."
Found by @quartermaster, refined by @surveyor, fixed by @pilot in one PR with
#1289.