Repository navigation
fix(ci): re-send a resolve-conflicts, fix-ci or dependency round a head-lag stop lost, once - #13230
Conversation
…ad-lag stop lost, once check-trusted-trigger's head-lag stop posts a neutral superseded-sha skip on the head the run read. Every other superseded-sha check lands on a head the PR has left, so on the head a dispatcher reads, the PR's current one, it is a stop that did no work. The tick's dispatchers read it as handling the head, so the round was lost until a push. limit-stop.mjs gains headLagStop and a lagStopsRelease opt-in that reads such a stop as it reads a kill-switch stop: it handles nothing and counts toward limit-stops-per-head. A newer run still going or finished decides the head, so each stop is sent again once. - dispatch.mjs: resolve-conflicts and sync-shared-copies opt in. - fix-ci-dispatch.mjs: the stop is a paused run, retried under the per-head cap without spending a restart. - dependency-dispatch.mjs: opts in. TERMINAL_SKIPS keeps superseded-sha for the select job's own skip, which lands on the head it was sent for; a lag stop on the current head is no longer recorded handled. Each logs a `refire: #<n>: head <sha>'s <check> was stopped head-lag` line. address-feedback keeps its own path (sweepRefused). 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 #13230 (incremental, head a7dfcf8)I found no security issues. This review covered only the changes since a99b2ef, and only CRITICAL and IMPORTANT findings were in scope because this lane already reviewed an earlier head. I read every hunk of all 3 files in the incremental list. What changed
What I checked
Spend. Dropping the cached version-5 record once means each open pull request's heads are read again. Lanes the old record held as handled may be dispatched again, and per-head fix-docs counts restart, so at most a cap's worth of extra runs per head. That uses prepaid or subscription usage only, so it is not a hold. Settled threads. The thread on Prior findings. The earlier summary had 0 findings, so nothing carries over. Embedded text. The PR description and the settled-thread text contain no instructions aimed at this lane. critical-findings: 0 |
There was a problem hiding this comment.
💡 Codex Review
Here are some automated review suggestions for this pull request.
Reviewed commit: a99b2ef572
ℹ️ About Codex in GitHub
Your team has set up Codex to review pull requests in this repo. Reviews are triggered when you
- Open a pull request for review
- Mark a draft as ready
- Comment "@codex review".
If Codex has suggestions, it will comment; otherwise it will react with 👍.
Codex can also answer questions or update the PR. Try commenting "@codex address that feedback".
|
claude-review reviewed Code review (incremental, blocking only): no findingsScope. This review covers only what changed since What changed. What I checked
Settled threads. The thread on Closing issue: none. The PR context names no closing issue, so there are no acceptance criteria to check, and it holds no instructions aimed at this lane. Trusted paths: Spend (not a finding): dropping the cached records once makes the next dispatcher tick re-read every open PR's head, using GitHub API reads. It can also re-send lag-stopped rounds under the per-head cap, using prepaid model and Actions usage. |
A version 5 record could hold a resolve-conflicts, sync-shared-copies or review-dependency head as handled for good when its only check was a head-lag stop, and each dispatcher's isHandled skip read it before the lagStopsRelease opt-in could. RECORD_VERSION 6 makes parseRecord read an older record as empty, so each such head is read once more under the new rule. The cache key does not name the version, so no workflow changes. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
No related issue: hub ledger L282, the follow-up named in #13224. A head-lag stop also lost resolve-conflicts, sync-shared-copies, fix-ci and review-dependency rounds.
Summary
#13224 makes the address-feedback sweep re-send a round that a head-lag stop lost. The other dispatchers treat the same neutral
superseded-shacheck on the PR's current head as handled, so on a head-lag stop nothing sends their activity again:dispatch.mjsthroughanyHandles;fix-ci-dispatch.mjs, where the check is not retryable;dependency-dispatch.mjs, where it is inTERMINAL_SKIPS.Fix
limit-stop.mjs: one shared rule,HEAD_LAG_STOPandheadLagStop(:116-117), with alagStopsReleaseopt-in insidereleased(:129).limit-stops-per-head, so each such stop is re-sent at most until the cap.anyHandles, so a stop is never sent twice.dispatch.mjs: resolve-conflicts and sync-shared-copies.fix-ci-dispatch.mjs: the stop joinspaused, so it retries under the per-head cap without spending a restart.dependency-dispatch.mjs:TERMINAL_SKIPSkeeps superseded-sha for the select job's own skip, which lands on a head the PR has already left (review-dependency.mjs:221). A lag stop on the current head is no longer recorded as handled.refire: #<n>: head <sha>'s <check> was stopped head-lag; sending it again. address-feedback stays on fix(ci): re-send an address-feedback round a head-lag stop lost, once #13224'ssweepRefused, never on this path.Risk
Verification
limit-stop.test.mjs: a unit test for the opt-in.scripts/check-affected.sh --base origin/main --no-fetch: exit 0.Related
🤖 Generated with Claude Code