Repository navigation
fix(ci): re-send an address-feedback round a head-lag stop lost, once - #13224
Conversation
check-trusted-trigger stops a run head-lag when GET /pulls and the branch ref never agree inside its 60 s wait, and report-check-run posts that as a neutral superseded-sha skip on the head the select job read. The run ends green, so the tick's workflow-modified refire (sweepRefused) never took it, and the skip handled the head for every other pass: #13194's address-feedback run 41826593020 needed a hand re-dispatch. sweepRefused now also takes the PR's newest address-feedback run when its own check on the PR's current head is that skip. Every other superseded-sha check lands on a head the PR has left, so a head that moved since keeps its stop. The same rules hold as for a refusal: newest run only, inside FAILED_RUN_WINDOW_HOURS, under SWEEP_HEAD_CAP, earlier checks released through requestSince, and the record names the stopped run as refire_of_run_id. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Codex Review SummaryThis comment shows the latest Codex review activity on this pull request.
ℹ️ About Codex in GitHubYour team has set up Codex to review pull requests in this repo. Reviews are triggered when you
Codex reacts with 👀 while any review is running, comments if it has suggestions, and reacts with 👍 once all reviews finish with no findings. |
|
claude-security-review reviewed Security review: PR #13224 (head bb80f99)I found no security issues. I read every hunk of all 3 changed files. What changed. Trust and control checks:
Spend (not a finding, not a hold): a head-lag stop can now start at most one extra address-feedback lane run per stopped run, capped by Embedded text: none in the PR context. critical-findings: 0 |
|
claude-review reviewed Code review: PR #13224, head-lag refire in
|
No related issue: hub ledger L281. #13194's address-feedback round (run 41826593020, 12:10Z) stopped on head-lag and needed a hand re-dispatch.
Summary
check-trusted-triggerstops a run withhead-lagwhenGET /pullshead.sha does not match the branch ref within about 60 s (check-trusted-trigger.mjs:600-623). Run 41826593020's address-feedback and publish-feedback gates loggedproceed=false reason=head-lag, and the run concludedsuccess. On main, nothing sent the round again:sweepRefusedtakes only runs that concludedfailure(feedback-dispatch.mjs:1211);Skipped: superseded-shacheck counts as handling the head (limit-stop.mjs:145-146).Fix
feedback-dispatch.mjs:headLagStop(:271), andsweepRefused(:1215-1247) now also takes the newest run when it posted asuperseded-shacheck on the PR's current head.decide.mjs:87-91) and the moved-tip skip (pr-run-activity-write.yml:1132-1138). So a superseded-sha check at the current head, from the newest run, is a lag stop, and no log read is needed.FAILED_RUN_WINDOW_HOURS,SWEEP_HEAD_CAP,requestSince.refire_of_run_idas a workflow-modified refire does, and logsrefire: ... was stopped head-lag at head ....check-trusted-trigger/README.md:44-49: says what follows a head-lag stop.Verification
feedback-dispatch.test.mjs(tests at :2501, :2511, :2527 and :2541) covers these cases:refire-of;With origin/main's
feedback-dispatch.mjs, the re-send and not-twice tests dispatch nothing.All 67 affected node suites pass.
scripts/check-affected.sh --base origin/main --no-fetch: exit 0.Left out: a run where only the publish-feedback gate head-lags is not re-sent. During the lag window, a stale PR listing could send one refire too early; the head cap bounds that.
Remaining
dispatch.mjs:254,270,anyHandles), fix-ci (fix-ci-dispatch.mjs:195,425) and dependency (dependency-dispatch.mjs:50,165,TERMINAL_SKIPS) also treat a superseded-sha check at the head as handled, so a head-lag stop loses those activities too. A follow-up should add an opt-in re-send inlimit-stop.mjs, counted towardlimit-stops-per-head. That keeps address-feedback off a second retry path.Related
sweepRefusedpass this extends).🤖 Generated with Claude Code