Skip to content

feat(hygiene): schedule the advisory org hygiene sweep from a public runner - #37

Merged
ExtraToast merged 2 commits into
mainfrom
feat/org-hygiene-sweep-caller
Aug 29, 2026
Merged

feat(hygiene): schedule the advisory org hygiene sweep from a public runner#37
ExtraToast merged 2 commits into
mainfrom
feat/org-hygiene-sweep-caller

Conversation

@ExtraToast

Copy link
Copy Markdown
Contributor

What

Schedules the advisory org-wide hygiene sweep from this public repo. Companion to JorisJonkers-dev/github-workflows#125.

Why here

Actions minutes are billed to the caller, never to the repo holding the reusable workflow. The blocking guard runs in the repo being checked, so each private repo firing it pays for the run — ~292 min/month across fleet-infra and nix-config for a job averaging 6.6 seconds. Standard runners are free in public repos, and this one is public.

This does not replace the blocking guard

repository-hygiene-guard.yml is untouched and still runs per-PR where it's wired up. The guard blocks a merge; this only reports.

fleet-infra and nix-config are excluded precisely because they still run the blocking guard — otherwise the sweep reports the same thing twice. The comment on that input says to remove a name in the same change that removes its gate. That's #34's job, and it needs the ruleset updated too, or PRs there will wait forever on a context nothing reports.

Cadence

Every 6 hours, not every 15 minutes. Advisory findings gain nothing from a tighter loop, and the sticky PR comment is the real signal.

Merge order

Merge JorisJonkers-dev/github-workflows#125 first — this calls @main.

Refs #34

…runner

Actions minutes are billed to the caller, never to the repo holding the
reusable workflow. The blocking guard runs in the repo being checked, so each
private repo firing it pays for the run -- ~292 minutes a month across
fleet-infra and nix-config for a job averaging 6.6 seconds. Standard runners
are free in public repositories, and this repo is public.

This does not replace repository-hygiene-guard.yml. The guard blocks a merge;
this only reports. fleet-infra and nix-config are excluded for now precisely
because they still run the blocking guard, so the sweep would otherwise
report the same thing twice. Remove a name from that list in the same change
that removes its gate.

Every 6 hours rather than every 15 minutes: advisory findings gain nothing
from a tighter loop, and the sticky PR comment is the real signal.

Depends on the sweep added in JorisJonkers-dev/github-workflows#125.

Refs #34

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01AJYmuNrmiYv9wGRABoQYUi
@ExtraToast ExtraToast added type: feature New user-facing or operator-facing capability. area: tooling Reusable workflows, Gradle, templates, Renovate, and API tooling. component: ci Continuous integration workflow or check behavior. priority: P2 Medium; normal planned work. governance Repo protection, permissions, visibility labels Aug 27, 2026
Repository Hygiene is not a required status check in any repo in this org --
only Pipeline Complete is, and no repo uses classic branch protection.
Verified by reading the rulesets directly rather than inferring from the
workflow's name.

So the guard already only reports, and replacing it with the sweep gives up
nothing. The previous comment claimed a blocking gate that does not exist.

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01AJYmuNrmiYv9wGRABoQYUi
@ExtraToast

Copy link
Copy Markdown
Contributor Author

Correction to this PR's own description.

I claimed the guard blocks merges and that replacing it trades away a blocking gate. That is wrong. Repository Hygiene is not a required status check in any repo in this org — only Pipeline Complete is, and no repo uses classic branch protection. Verified by reading the rulesets directly:

fleet-infra Main  -> required contexts: Pipeline Complete
nix-config  Main  -> required contexts: Pipeline Complete
classic branch protection -> 404 Branch not protected (both)

So the guard already only reports. Moving it to a sweep gives up nothing, and the trade-off flagged on #123 and #34 does not apply. The workflow comment has been corrected in the latest commit.

fleet-infra and nix-config stay excluded only to avoid double-reporting while both paths exist — not because they have a gate worth protecting.

@ExtraToast
ExtraToast merged commit 1c18fa1 into main Aug 29, 2026
3 checks passed
@ExtraToast
ExtraToast deleted the feat/org-hygiene-sweep-caller branch August 29, 2026 18:50
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

area: tooling Reusable workflows, Gradle, templates, Renovate, and API tooling. component: ci Continuous integration workflow or check behavior. governance Repo protection, permissions, visibility priority: P2 Medium; normal planned work. type: feature New user-facing or operator-facing capability.

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant