internal: stop re-polling QUEUED checks during the Dependabot batch - #6141
internal: stop re-polling QUEUED checks during the Dependabot batch#6141prql-bot wants to merge 2 commits into
Conversation
prql-bot
left a comment
There was a problem hiding this comment.
Two notes on the new section — both about making the rule unambiguous for a future run that has only this text to go on.
One gap without an obvious fix: applying the rule requires seeing which states are pending, but the pending() helper in CI Monitoring collapses the states inside jq and returns only a count, so a run following that recipe verbatim never observes QUEUED vs IN_PROGRESS. Naming the query in this section (gh pr view <n> --json statusCheckRollup and reading .status // .state) would make the rule mechanically applicable rather than dependent on the model deciding to look.
(Skipped /code-review here: .claude/ is bind-mounted read-only in the sandbox, so the working tree shows the base version of the file and the pass would have seen an empty diff. Reviewed against git show HEAD:.claude/skills/running-tend/SKILL.md instead.)
Daily review of the previous night's tend runs surfaced one finding that clears both gates:
tend-reviewsessions on the daily Dependabot batch spend 20–45 minutes re-entering the CI poll loop against checks that structurally cannot settle inside the session.What happens
Five Dependabot PRs (#6130, #6132–#6135) plus pre-commit-ci's #6131 opened over 2m13s — 17:14:32 to 17:16:45 — on 2026-08-03. On #6130's branch alone, five
testsruns were created at17:14:37; thecancel-in-progressconcurrency group culled four, and the survivor — run 30835855220 — took 73 minutes end to end (17:14:37→18:27:46), most of itQUEUEDbehind the five sibling matrices.The poll loop under CI Monitoring in the bundled
running-in-ciskill caps at 9 minutes per invocation, so each review re-entered it repeatedly and still ended unverified:queuedat exitQUEUEDat exitThe reviews themselves were good — each one diagnosed the stale
check-ok-to-mergered as a cancellation-cascade artifact rather than treating it as real, and each named the checks it had not observed reach terminal rather than implying coverage. The waste is purely the extra rounds. In #6130's own words: "Polling has run ~29 minutes; the replacementtestsrun is stillqueued(concurrency-queued) … It won't settle in this session." — three rounds after that observation, it still hadn't.The rule
The two runs that did settle (#6134, #6135) were watching checks that were progressing; the three that wasted rounds were watching checks stuck in
QUEUED. That distinction is the discriminator, so the rule keys on it rather than banning re-entry outright: stop after one round when pending checks are stillQUEUED, keep going while they areIN_PROGRESS.Gate assessment
QUEUEDPRQL matrix during the batch means 40–75 minutes, which only an overlay can supply.Session evidence
Runs analyzed:
30835853083,30835879825,30835900705,30835922625,30836026660,30838560578,30846380951,30852089164,30858704413,30886931468,30887510480,30887553479,30887961990,30887996356,30888281468,30888469905,30888779216,30888815275.Poll-round counts come from counting
seq 1 9loop invocations in each session's JSONL. The five concurrenttestsruns on #6130's branch:30835854409,30835854490,30835854594,30835854618(allcancelled) and30835855220(success).