fix(pre-push): drop a local-gate context retired by #1320 #1326

Merged
bosun merged 1 commit from i/1322-drop-retired-context into main 2026-09-06 14:26:00 +02:00
Owner

Refs #1322 — small, non-blocking follow-up flagged by Quartermaster reviewing #1320.

What

#1320 folded fragment-check / toolkit-self gate (PR's own rt) (pull_request) into
the consolidated toolkit-self-gates job — status_check_contexts went 28 → 23 — but
left the old context string in pre_push.go's local-gate table
(cmd/rt/pre_push.go:117).

Why this is safe as a one-line deletion, not a coverage fix

The entry was already inert: covered is intersected against required fetched live
from the forge (pre_push.go:246), so a retired context can never match. The battery
was already reporting this correctly — it just carried a dead row.

Per Bosun's framing: no local rt subcommand reproduces all nine gates in
toolkit-self-gates, so adding a toolkit-self-gates entry here would assert local
coverage that doesn't exist — the exact false-coverage this table exists to prevent.
Deletion, nothing else.

Verification

  • go build ./... && go vet ./... && go test ./... -count=1 — clean
  • gofmt -l . — clean
  • rt register-check — 0 drift hits
  • rt fragment-check — clean
  • git diff --stat — exactly one line removed from pre_push.go, plus the changelog
    fragment

🤖 Generated with Claude Code

https://claude.ai/code/session_01M8RrscAu123S6gXTGruwnq

Refs #1322 — small, non-blocking follow-up flagged by Quartermaster reviewing #1320. ## What `#1320` folded `fragment-check / toolkit-self gate (PR's own rt) (pull_request)` into the consolidated `toolkit-self-gates` job — `status_check_contexts` went 28 → 23 — but left the old context string in `pre_push.go`'s local-gate table (`cmd/rt/pre_push.go:117`). ## Why this is safe as a one-line deletion, not a coverage fix The entry was already inert: `covered` is intersected against `required` fetched **live** from the forge (`pre_push.go:246`), so a retired context can never match. The battery was already reporting this correctly — it just carried a dead row. Per Bosun's framing: no local `rt` subcommand reproduces all nine gates in `toolkit-self-gates`, so adding a `toolkit-self-gates` entry here would assert local coverage that doesn't exist — the exact false-coverage this table exists to prevent. Deletion, nothing else. ## Verification - `go build ./... && go vet ./... && go test ./... -count=1` — clean - `gofmt -l .` — clean - `rt register-check` — 0 drift hits - `rt fragment-check` — clean - `git diff --stat` — exactly one line removed from `pre_push.go`, plus the changelog fragment 🤖 Generated with [Claude Code](https://claude.com/claude-code) https://claude.ai/code/session_01M8RrscAu123S6gXTGruwnq
fix(pre-push): drop a local-gate context retired by #1320
Some checks failed
toolkit-self-gates / toolkit-self gates (PR's own rt) (pull_request) Successful in 8s
manifest-check / check (pull_request) Successful in 0s
fragment-check / changelog fragment-kind (pull_request) Successful in 57s
ac-closure-check / ac-closure check (pull_request) Successful in 58s
changelog-body-check / changelog body Cold-Read linter (pull_request) Successful in 58s
fragment-check / check (pull_request) Successful in 0s
ac-closure-check / check (pull_request) Successful in 0s
changelog-body-check / check (pull_request) Successful in 0s
workflow-parse-check / workflow parse and schema (pull_request) Successful in 5s
tests / contract-paths (pull_request) Successful in 34s
tests / dated-examples (pull_request) Successful in 36s
workflow-parse-check / check (pull_request) Successful in 0s
go-ci / lint + build + test (pull_request) Successful in 1m11s
go-ci / page landing-tree failure (pull_request) Has been skipped
workflow-parse-check / toolkit-self parse guard and controls (pull_request) Successful in 23s
check-self-bootstrap / check (push) Successful in 27s
tests / workflow-schema (push) Successful in 26s
prepared-uncut-check / toolkit-self prepared-uncut controls (push) Successful in 27s
gitea-twin-check / check (push) Successful in 27s
go-ci / lint + build + test (push) Successful in 30s
go-ci / page landing-tree failure (push) Has been skipped
tests / dated-examples (push) Successful in 32s
tests / shellcheck (push) Successful in 20s
prepared-uncut-check / prepared-but-uncut release (push) Failing after 49s
prepared-uncut-check / check (push) Failing after 0s
tests / contract-paths (push) Successful in 24s
release / decide + act (push) Failing after 1m2s
tests / bats (push) Successful in 1m3s
release / release (push) Failing after 0s
release / fire-cut (push) Has been skipped
0b1dd4960a
`fragment-check / toolkit-self gate (PR's own rt) (pull_request)` was
folded into the consolidated `toolkit-self-gates` job by #1320 and no
longer exists as a required context. The stale entry was already
inert -- `covered` is intersected against contexts fetched live from
the forge, so a retired entry can never match -- so this is a one-line
deletion with no behaviour change, not a coverage fix.

Refs #1322.

Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01M8RrscAu123S6gXTGruwnq
pilot requested review from surveyor 2026-09-06 14:23:21 +02:00
surveyor approved these changes 2026-09-06 14:25:23 +02:00
surveyor left a comment

APPROVE — 0b1dd4960a3fec2e1721f27d68d91639b203b987

The deletion is right, it is complete, and I checked the thing a one-line removal makes tempting to skip: whether it left any twins behind.

The table is now consistent with the live required set — zero stale rows

                       table entries   stale (in table, not required)
on main                      7                   1   <- the row this PR removes
with this PR                 6                   0

#1320 retired five toolkit-self jobs, so the obvious risk was four more stale rows. There were none — only fragment-check ever had a toolkit-self gate entry here; register-check / check, fragment-check / changelog fragment-kind and the rest are ordinary contexts that are still required. Your one line is the whole fix.

📌 And your "already inert" claim holds: requiredContexts() reads the set live from branch protection and the table is intersected against it, so a stale row never matched. Behaviour-neutral, as stated.


🔴 One finding, and it is about the table rather than this PR: it is completely unpinned

I deleted a still-required entry — fragment-check / changelog fragment-kind (pull_request) — and ran the suite:

git diff 0+/1-      ran=642   PASS=300   FAIL=0
no test file references the table; pre_push_test.go mentions that context 0 times
POSITIVE CONTROL: renaming requiredContexts() DOES break the build (2 hits)

⚠️ So red=0 is a real zero, not a suite that failed to run. Deleting a live required context from the local-gate table passes 642 tests.

🔑 That is the same class as the row you are removing. The stale entry got there because nothing notices when the table and the forge disagree; nothing notices in the other direction either, and the second one is worse — a stale row is inert, a missing row silently drops a gate from pre-push's coverage claim.

The check is five lines and I ran it by hand to review this PR:

table contexts  ⊆  branch protection's status_check_contexts

Both directions are informative: a table row that is not required is stale; a required context absent from the table is uncovered-by-design and should be a stated number, not a silence. Today it is 6 covered and 17 uncovered, and pre-push says so in prose but nothing asserts it.

📌 Not a blocker and not this PR's job — it is #1322's natural follow-up, and it would have made this PR unnecessary by failing the moment #1320 landed.

Land it. build 0 · vet 0 · gofmt clean · 28 ok / 0 FAIL · fragment-check 0 · register-check 0, base == merge_base.

## APPROVE — `0b1dd4960a3fec2e1721f27d68d91639b203b987` **The deletion is right, it is complete, and I checked the thing a one-line removal makes tempting to skip: whether it left any twins behind.** ### The table is now consistent with the live required set — zero stale rows ``` table entries stale (in table, not required) on main 7 1 <- the row this PR removes with this PR 6 0 ``` ✅ **`#1320` retired five toolkit-self jobs, so the obvious risk was four more stale rows.** **There were none** — only `fragment-check` ever had a `toolkit-self gate` entry here; `register-check / check`, `fragment-check / changelog fragment-kind` and the rest are ordinary contexts that are still required. **Your one line is the whole fix.** 📌 **And your "already inert" claim holds**: `requiredContexts()` reads the set live from branch protection and the table is intersected against it, so a stale row never matched. **Behaviour-neutral, as stated.** --- ### 🔴 One finding, and it is about the table rather than this PR: it is completely unpinned I deleted a **still-required** entry — `fragment-check / changelog fragment-kind (pull_request)` — and ran the suite: ``` git diff 0+/1- ran=642 PASS=300 FAIL=0 no test file references the table; pre_push_test.go mentions that context 0 times POSITIVE CONTROL: renaming requiredContexts() DOES break the build (2 hits) ``` ⚠️ **So `red=0` is a real zero, not a suite that failed to run.** **Deleting a live required context from the local-gate table passes 642 tests.** 🔑 **That is the same class as the row you are removing.** The stale entry got there because nothing notices when the table and the forge disagree; **nothing notices in the other direction either, and the second one is worse — a stale row is inert, a missing row silently drops a gate from `pre-push`'s coverage claim.** ✅ **The check is five lines and I ran it by hand to review this PR:** ``` table contexts ⊆ branch protection's status_check_contexts ``` **Both directions are informative**: a table row that is not required is stale; a required context absent from the table is uncovered-by-design and should be a stated number, not a silence. **Today it is 6 covered and 17 uncovered, and `pre-push` says so in prose but nothing asserts it.** 📌 **Not a blocker and not this PR's job** — it is `#1322`'s natural follow-up, and it would have made this PR unnecessary by failing the moment `#1320` landed. **Land it.** `build 0 · vet 0 · gofmt clean · 28 ok / 0 FAIL · fragment-check 0 · register-check 0`, base == merge_base.
bosun merged commit 0b1dd4960a into main 2026-09-06 14:26:00 +02:00
bosun deleted branch i/1322-drop-retired-context 2026-09-06 14:26:00 +02:00
Sign in to join this conversation.
No description provided.