Uh oh!
There was an error while loading. Please reload this page.
ci(1979): call the board-aware stale sweep instead of copying actions/stale - #543
Conversation
saqlainsyed007
left a comment
There was a problem hiding this comment.
The diff itself is correct — the thin stale-backlog-caller.yml (reusable @main, secrets: inherit, contents: read) and the deletion of the local actions/stale copy match the rest of the backend#1979 wave, and I'd approve it on that basis.
Not approving yet because a required check is red: quality / pipefail early-close fails. Note it's not caused by this diff — the shared code-quality reusable (now at @main) newly enforces the early-close rule and flags pre-existing shell in this repo that this PR doesn't touch:
scripts/sync-schema.sh:57-58scripts/sync-backend-fixtures.sh:51-52scripts/file-budget.sh:37scripts/coverage-floor.sh:51,57
Each is a … | grep -q … (or similar) piped into an early-closing reader under set -e -o pipefail: the reader exits before draining the pipe, the producer takes SIGPIPE, and errexit trips. The rule suggests a here-string or capture-then-slice instead.
Since it's a required check it blocks the merge regardless of origin. Cleanest path is a sibling shell-fix PR (or fold the fixes in here) so this repo's leg of the wave goes green — the workflow swap and the shell cleanup are independent, so a separate PR keeps this one a pure dedup. Happy to approve the moment CI is green.
LukasWodka
commented
Aug 22, 2026
@saqlainsyed007 you were right that No sibling fix PR needed: the fix is already on I've merged Sorry for the wasted look. Re-requesting review — the only change since yours is the |
saqlainsyed007
left a comment
There was a problem hiding this comment.
Re-reviewed at head. The required check I was holding on — quality / pipefail early-close — is now green (the pre-existing shell it flagged got fixed on the base branch, so the re-run against the updated base passes). Every check is pass/skip now, no open Bugbot threads.
The PR's own diff is unchanged and correct: the thin stale-backlog-caller.yml (reusable @main, secrets: inherit, contents: read) plus deletion of the local actions/stale copy — identical to the rest of the backend#1979 wave. Approving.
LukasWodka
commented
Aug 23, 2026
/fr-pass |
Part of the backend#1979 wave.
backend#1680closes on this landing.What changes
.github/workflows/stale-backlog.yml— a byte-identical copy of anactions/staleconfig carried in 16 repos — becomes a thin caller of the reusable that
.github#288landed, following the
-caller.ymlconvention already used byfr-gate-caller.yml,code-quality-caller.ymlandfr-pass-comment-caller.yml.Why it is not just deduplication
The copy called
actions/stale, which is column-blind: it can see labels anddates, not the board. So it would close a
North Starsepic, or anything already inthe pipeline, on the same 6-week/8-week timer as a forgotten
Backlogitem — thedefect behind backend#1597 item 1.
Board awareness needs a script, and a script cannot be maintained as sixteen
byte-identical copies. The reusable's eligibility is exactly
Backlog, and itfails toward skipping, because the destructive direction here is closing.
No inputs passed, on purpose
Every input the callee declares is defaulted (
project-number: 2,dry-run: false,strict: false,script-ref: main). A caller may only pass inputs the@maincallee declares — passing one it lacks kills the run at
startup_failure, which isexactly why the callee had to reach
mainbefore any caller could be armed.permissions: contents: readonly: the sweep's writes go through the App tokenminted inside the reusable, and asking for more here than the callee needs fails the
run at startup with no jobs.
DRAFT — and what un-drafts it
This cannot merge yet, and draft is the mechanical guarantee of that. Callers pin
@main, and.github/mainstill carries the old 1174-byte copy — the reusable is on.github/develop, 4 commits ahead. Merging this first would leave a scheduledworkflow that fails at startup every Monday.
Order, per the note carried in
repo-inventory.yml:.githubpromotesdevelop → staging → main, carrying the reusable.githubPR adds.github's own caller and flips all 17 inventoryentries from
exempttorequiredStep 3 is last for a stated reason: flipping to
requiredbefore a repo's callerlands would redden the org audit for every repo still waiting — the drift window made
to look permanent. And
.github's caller ships with the flip rather than before it,because
exemptplus a caller on the audited branch is itself a finding(
caller-drift.py:2260).🤖 Generated with Claude Code
Note
Medium Risk
Changes a scheduled workflow that can auto-close issues. Behavior is more conservative (Backlog-only) but still destructive if the reusable or token is misconfigured.
Overview
Replaces the local Monday
actions/stalecopy with a thin caller oftracebloc/.github’sstale-backlog.yml@main.The sweep is now board-aware: only Backlog cards are eligible, so North Stars and in-pipeline items are no longer auto-closed on inactivity. No workflow inputs are passed (callee defaults); permissions are
contents: readbecause writes use the App token inside the reusable.Reviewed by Cursor Bugbot for commit 4a18e75. Bugbot is set up for automated code reviews on this repo. Configure here.