Skip to content

ci(2396): flip .github and rfcs to required, and delete the anchor they emptied - #319

Merged
LukasWodka merged 4 commits into
developfrom
ci/2396-flip-release-train-row
Aug 24, 2026
Merged

ci(2396): flip .github and rfcs to required, and delete the anchor they emptied#319
LukasWodka merged 4 commits into
developfrom
ci/2396-flip-release-train-row

Conversation

@LukasWodka

@LukasWodka LukasWodka commented Aug 24, 2026

Copy link
Copy Markdown
Contributor

Flips one row: release-train's customer-priority-bump.yml, exemptrequired.

Why now, and why only one row

release-train#117 merged, so that repo's caller exists — and a caller that exists while
its row says exempt is itself a finding. The org audit on develop has been red
since 06:47 today, naming it exactly:

run 32698788477 · exit 1 · 1 drift finding

release-train: customer-priority-bump.yml is marked `exempt` but a caller exists
(customer-priority-bump.yml). The exemption is stale - promote it to `required` or
delete the caller.

That is caller-drift.py:2309 working as designed. The window is the price of this
file's own rule — land the caller first, flip the entry after — because the audit reads
caller presence from the audited branch over the API, so a combined PR can never go
green. It is not a regression.

Only release-train, deliberately. The other two citations (.github, rfcs) flip
when their callers land — .github#316 and rfcs#47, both open. Flipping all three now
would go red on the two missing callers, which is the mirror image of the same rule.

Splitting costs one extra serialised guarded-file merge. Worth it: the alternative is
leaving the fleet audit red for as long as two reviews take, and a persistently red check
trains people to skip the tier — the "arm while green" rule exists for exactly this.

Two things this PR falsified, fixed in the same PR

  1. A comment asserting the anchor "is cited 3x and stays." True until this flip, false
    after it. Now says 2x, names which two repos still cite it, and points at the PRs that
    will flip them. Counted by hand because nothing asserts it — the paragraph directly
    above already records that gap (no check flags an orphaned YAML anchor, and
    stale_exemptions() in kanban-columns-check.py is a different mechanism entirely).

  2. The anchor's stated reason, which had expired. It read "three dead inputs and
    hard-codes the priority label (backend#1408 P3), so wiring more repos to it is
    sequenced behind that cleanup."
    Measured 2026-08-23:

    claim today
    sequenced behind backend#1408 P3 #1408 is CLOSED COMPLETED
    three dead inputs all four are consumedtrigger-label ×1, bug-label ×2, project-number ×1, org ×1
    hard-codes priority true, and deliberate — RFC-BACKEND-0008 D5 made priority a binary label, not a board field; documented at the call site

    The rewrite says what is actually true (the callers are not wired yet), names
    backend#2396 as the work wiring them, and carries a self-destruct clause: if the anchor
    outlives #2396 it has become the same finding as wip_limit_check_has_no_callers — a
    written excuse — and is to be treated as a defect. It also records the red-window cost
    so a future reader does not misread it as a regression.

Verification

Real audit, this branch, against the live org:

AUDIT_EXIT=0
No drift. Every repo read, every entry matched.

Closes tracebloc/backend#2396 is not claimed here — #2396 also covers the two
remaining callers and their row flips. Part of tracebloc/backend#2396.


Note

Low Risk
Inventory-only contract update after callers already landed; no workflow or auth logic changes. Wrong flips would fail caller-drift rather than silently weaken a gate.

Overview
Closes the last two customer-priority-bump.yml exemptions now that those callers exist. .github and rfcs flip from exempt to required, matching the live callers (.github#316, rfcs#47).

Deletes the unused customer_priority_bump_caller_missing anchor (0 citations after the flips) instead of leaving dead prose. The kanban_closure_router_caller_missing note is updated to use that deletion as the bookkeeping example for when rfcs#41 lands.

Reviewed by Cursor Bugbot for commit 4374998. Bugbot is set up for automated code reviews on this repo. Configure here.

…ops being stale (backend#2396)

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
@LukasWodka LukasWodka self-assigned this Aug 24, 2026
@LukasWodka

Copy link
Copy Markdown
Contributor Author

bugbot run

@cursor cursor Bot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

✅ Bugbot reviewed your changes and found no new issues!

Comment @cursor review or bugbot run to trigger another review on this PR

Reviewed by Cursor Bugbot for commit c49edb0. Configure here.

saqlainsyed007
saqlainsyed007 previously approved these changes Aug 24, 2026

@saqlainsyed007 saqlainsyed007 left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Reviewed — approving. This flips release-train's customer-priority-bump.yml row from exempt to required now that its caller landed (release-train#117), and rewrites the shared exemption reason because it genuinely expired: backend#1408 is CLOSED COMPLETED, all four reusable inputs are consumed, and the hard-coded priority label is RFC-BACKEND-0008 D5 as decided — so the old "sequenced behind cleanup" justification is no longer true, and the rewrite says so rather than leaving a stale excuse. The citation-count comment (3x→2x) tracks the flip correctly (.github and rfcs still cite it, flipping in #316/#47). The whole change is gated by this repo's own caller-drift audit, which is green — so the flip matches reality. Green: checks pass, no open threads.

…#320)

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
@LukasWodka LukasWodka changed the title fix(2396): release-train rides the label trigger, so its exemption stops being stale (backend#2396) docs(2396): the customer-priority-bump exemption's reason has expired (backend#1408 is closed) Aug 24, 2026
@LukasWodka

Copy link
Copy Markdown
Contributor Author

Rebased onto develop. The row flip in this PR is now redundant#320 landed the same
one-row flip at 08:35, and I opened this without checking for an existing PR first. The merge
took develop's side there, so the flip half of this PR is gone.

What remains is the half #320 did not touch: the anchor's reason is factually expired.
It still reads that wiring more repos is "sequenced behind" backend#1408 — but #1408 is
CLOSED COMPLETED (2026-08-06), all four inputs are consumed, and the hard-coded priority
label is RFC-BACKEND-0008 D5 working as decided. We wired release-train despite that sentence,
which is the demonstration that it no longer describes anything.

Retitled accordingly. If you'd rather fold this into the next flip (.github#316 / rfcs#47),
say so and I'll close it.

saqlainsyed007
saqlainsyed007 previously approved these changes Aug 24, 2026

@saqlainsyed007 saqlainsyed007 left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Re-approving. My earlier approval was auto-dismissed by a develop merge that pulled in #314 and the release-train row flip. After that merge, the customer-priority-bump.yml: exempt→required flip is already on the base, so this PR's remaining diff is just the customer_priority_bump_caller_missing shared-reason rewrite — recording that the original blocker (backend#1408) has expired: #1408 is CLOSED COMPLETED, all four reusable inputs are consumed, and the hard-coded priority label is RFC-BACKEND-0008 D5 as decided. Accurate, single-file (repo-inventory.yml), and consistent with what I verified before. CI green, no open threads.

LukasWodka and others added 2 commits August 24, 2026 11:34
…ey emptied

Both callers are live on their default branches (.github#316, rfcs#47), so the
`exempt` rows became the stale-exemption finding caller-drift.py:2309 exists to
catch. Flipping them takes the anchor to zero citations, so its definition is
deleted in the same PR rather than left as dead prose.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
@LukasWodka LukasWodka changed the title docs(2396): the customer-priority-bump exemption's reason has expired (backend#1408 is closed) ci(2396): flip .github and rfcs to required, and delete the anchor they emptied Aug 24, 2026
@LukasWodka

Copy link
Copy Markdown
Contributor Author

Repurposed as flip 2 now that both callers are live (.github#316, rfcs#47 — both merged 09:31–09:32).

Rewriting the anchor's reason (the previous contents of this PR) is moot once the anchor itself
goes, so this PR now does the thing that supersedes it:

  • flips .githubrequired # customer-priority-bump-caller.yml (the reusable owns the
    plain name in this repo, so the caller takes the -caller suffix)
  • flips rfcsrequired # customer-priority-bump.yml
  • deletes customer_priority_bump_caller_missing — 0 citations remain, and the file's own
    bookkeeping paragraph says an anchor left defined-and-uncited is dead prose that no check flags
  • rewrites the count comment as a completed worked example (3x → 2x → 0), pointing the next
    person at rfcs#41 to do the same for kanban_closure_router_caller_missing

This closes the red-audit window that opened when the two callers landed against exempt rows —
the caller-drift.py:2309 stale-exemption finding, which is the documented price of
"land the caller first, flip the entry after."

Verified locally: 0 anchor definitions, 0 aliases, YAML parses, all three rows read required.
The authoritative audit is the one CI runs on this head SHA.

@LukasWodka
LukasWodka requested a review from saadqbal August 24, 2026 09:40

@saadqbal saadqbal left a comment

Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Approving — the sequencing is right and I checked it rather than taking the description's word for it,
which turned out to matter.

What I verified:

  • the anchor is genuinely at zero citations: grep finds no surviving *customer_priority_bump_caller_missing
    alias, and the file still parses (19 repos), so deleting the definition can't orphan an alias;
  • the two flipped rows are .github (:545) and rfcs (:1264);
  • both prerequisite callers landed this morning — .github#316 at 09:32, rfcs#47 at 09:31 — so the
    flip is on the safe side of this file's own "land the caller first" rule;
  • and the audit branches line up, which is the part that could have quietly gone red. .github is
    release_train: true so it's audited on develop, where customer-priority-bump-caller.yml now
    exists; rfcs is release_train: false so it's audited on its default branch main, where its
    caller exists. rfcs has no caller on develop, so had it been a train repo this flip would
    have been red.

I also nearly flagged .github's trailing comment for saying customer-priority-bump-caller.yml
where all eighteen other rows say customer-priority-bump.yml. It's correct: .github hosts the
reusable under that name, so its caller needs the suffix. Worth the two minutes.

One thing to fix before merge: the body is stale. It describes the single-row version that
shipped as #320"Flips one row: release-train's" and "Only release-train, deliberately. The
other two citations (.github, rfcs) flip when their callers land — .github#316 and rfcs#47,
both open."
All three of those are now false, and the title is the accurate one. In this repo of all
places that reads oddly, and it's the text that survives into the merge commit.

@LukasWodka
LukasWodka merged commit 26bb09d into develop Aug 24, 2026
13 checks passed
@LukasWodka
LukasWodka deleted the ci/2396-flip-release-train-row branch August 24, 2026 09:50
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.

3 participants