Skip to content

Ask per workflow for whatever the runs feed missed - #3

Merged
tschm merged 1 commit into
mainfrom
fix/paginate-workflow-runs
Aug 29, 2026
Merged

Ask per workflow for whatever the runs feed missed#3
tschm merged 1 commit into
mainfrom
fix/paginate-workflow-runs

Conversation

@tschm

@tschm tschm commented Aug 29, 2026

Copy link
Copy Markdown
Member

The bug

/actions/runs is ordered by created_at and is not a per-workflow view, so on a busy repo it is dominated by whatever runs most often. cvxgrp/simulator has 2406 completed runs on main; the first hundred cover only 6 of its 23 active workflows. Everything else is invisible — and a quiet workflow that is failing stays invisible indefinitely.

That is how the board reported 0 red while simulator's (RHIZA) WEEKLY had failed three times running over 40 days.

Fixing it also surfaced a failure that had never once been reported: Jebel-Quant/jquantstats / Autopilot, red for 156 days on its only ever run.

The change

Anything the feed does not account for is now requested directly, one call per missing workflow. Quiet repos pay nothing extra; only busy ones do, and only for what was actually hidden.

Workflows with no completed run on the default branch stay correctly absent rather than being assumed green — simulator has four of those ((RHIZA) RELEASE, the three Copilot agents), which is why it reports 19 workflows rather than 23.

Why the feed alone was never going to work

This is the third bug in the same family, and the root cause each time was treating run history as an authority it is not:

  1. per_page=1 → only ever saw one workflow per repo
  2. run names → deleted and renamed workflows lingered as ghosts (Take the workflow list from GitHub, not from run history #2)
  3. first page only → quiet workflows on busy repos fall off entirely (this PR)

/actions/workflows is the authority for which workflows exist and what they are called; the runs feed is only a fast path for their recent state. This change makes that split complete.

Measured

before after
workflows tracked 175 207
simulator workflows visible 6 19 of 23 (4 have never run on main)
duplicate label sets 0 0
API cost ~55/refresh 80/refresh — ~960/hour against 5000
refresh duration 14s 26s

Verified from a clean git archive of the branch against live GitHub.

🤖 Generated with Claude Code

The runs feed is ordered by created_at and is not a per-workflow view, so on a
busy repo it is dominated by whatever runs most often. cvxgrp/simulator has
2406 completed runs on main; the first hundred cover only 6 of its 23 active
workflows. Every other workflow is invisible, and a quiet one that is failing
stays invisible indefinitely.

That is how the board reported 0 red while simulator's (RHIZA) WEEKLY had
failed three times running over 40 days. Fixing it also surfaced
Jebel-Quant/jquantstats "Autopilot", red for 156 days on its only ever run and
never once reported.

Anything the feed does not account for is now requested directly, one call per
missing workflow. Quiet repos pay nothing; only busy ones do, and only for what
was actually hidden. Workflows with no completed run on the default branch are
correctly absent rather than assumed green - simulator has four such.

Measured after the change: 207 workflows tracked, up from 175; 80 calls per
refresh, about 960/hour against the 5000 budget; refresh 14s -> 26s.

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
@tschm
tschm merged commit 228fa12 into main Aug 29, 2026
1 check passed
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.

1 participant