During a 20-repo merge campaign (2026-08-05/06), scripts/pr-status.sh --watch returned immediately more than ten times with NEXT: triage-ci — UNSTABLE although no check had failed — the non-required checks were merely still pending. Each return forced the caller back into its own polling loop; the hand-rolled substitutes eventually exhausted both the GraphQL and REST rate budgets (5000/h each) mid-campaign.
Proposal: distinguish "non-required check failed" (actionable, return) from "non-required checks still running while everything required is green" (not actionable), and keep waiting in the latter case — either by default or behind a flag such as --until-final. The NEXT: text for the pending case should also stop saying "a non-required check is red" when nothing is red.
During a 20-repo merge campaign (2026-08-05/06),
scripts/pr-status.sh --watchreturned immediately more than ten times withNEXT: triage-ci — UNSTABLEalthough no check had failed — the non-required checks were merely still pending. Each return forced the caller back into its own polling loop; the hand-rolled substitutes eventually exhausted both the GraphQL and REST rate budgets (5000/h each) mid-campaign.Proposal: distinguish "non-required check failed" (actionable, return) from "non-required checks still running while everything required is green" (not actionable), and keep waiting in the latter case — either by default or behind a flag such as
--until-final. TheNEXT:text for the pending case should also stop saying "a non-required check is red" when nothing is red.