Skip to content

feat(project): sweep the whole org onto the board from a public runner - #36

Merged
ExtraToast merged 1 commit into
mainfrom
feat/org-wide-project-sweep
Aug 29, 2026
Merged

feat(project): sweep the whole org onto the board from a public runner#36
ExtraToast merged 1 commit into
mainfrom
feat/org-wide-project-sweep

Conversation

@ExtraToast

Copy link
Copy Markdown
Contributor

What

Adds org-project-sweep.yml — a scheduled workflow that boards every open issue and PR across the organization, running from this public repo.

Companion to JorisJonkers-dev/github-workflows#124, which adds the scope: org input this calls.

Why it lives here

Actions minutes are billed to the caller, never to the repo holding the reusable workflow. The per-repo uses: shims already point at github-workflows and that saves nothing — a private repo firing the event pays for the run.

Standard runners are free in public repositories. This repo is public, so every run of this sweep costs nothing. That is also why the cron can be */15 — there is no minute budget to ration, only GitHub's own scheduling latency.

Boarding across the private repos currently costs ~516 billable minutes/month for a job that averages 7 seconds and reads no repository content.

Second reason this is worth having

When GitHub stops creating runs from webhook events — which has happened in this estate, stranding 24 issues at once — the event-driven path silently stops boarding anything, and there is no signal that it has. A sweep keeps working, because it isn't waiting on a webhook.

Notes

  • concurrency with cancel-in-progress: false so a slow sweep doesn't stack behind the next tick
  • The existing event-driven add-to-project-caller.yml in this repo is left alone — it's free here and boards instantly
  • Scheduled workflows are disabled after 60 days of repo inactivity; worth knowing if this repo ever goes quiet

Merge order

Merge JorisJonkers-dev/github-workflows#124 first — this calls @main and will fail until scope: org exists there.

Refs #33

Actions minutes are billed to the caller, never to the repo holding the
reusable workflow. The per-repo 'uses:' shims already point at
github-workflows and that saves nothing -- a private repo firing the event
pays for the run.

Standard runners are free in public repositories, and this repo is public, so
every run of this sweep costs nothing. That is also why the cron can be this
frequent: there is no minute budget to ration, only GitHub's scheduling
latency.

Boarding across the private repos currently costs ~516 billable minutes a
month for a job that averages 7 seconds and reads no repository content --
it is pure Projects-V2 GraphQL and never needed to run where the content is.

Second reason this exists: when GitHub stops creating runs from webhook
events -- which has happened in this estate, stranding 24 issues at once --
the event-driven path silently stops boarding anything. A sweep keeps
working, because it is not waiting on a webhook.

Depends on the scope: org input added in
JorisJonkers-dev/github-workflows#124.

Refs #33

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: P1 High; important and should be handled in the current iteration. governance Repo protection, permissions, visibility labels Aug 27, 2026
@ExtraToast
ExtraToast merged commit 93bb5e0 into main Aug 29, 2026
4 checks passed
@ExtraToast
ExtraToast deleted the feat/org-wide-project-sweep 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: P1 High; important and should be handled in the current iteration. type: feature New user-facing or operator-facing capability.

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant