Repository navigation
fix(pr-pipeline): check a resumed issue run over its whole branch - #8567
Conversation
A resumed work-resolve-issue run that finished the inherited work with no commit of its own kept no branch, so run-checks found nothing to check and report-outcome stopped every such run for a person. run-checks now falls back to the branch the run resumed (lane.json resume) and runs the activity's checks over that whole branch. report-outcome opens the PR from it only when the results name that branch, at least one check ran and none failed, the branch is still at the tip checked, and every commit on it ahead of the default branch is verified, authored by the lanes App and committed by web-flow. The PR body's Verification section records that; any other case still hands back. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01Xk7Lz7d2twxvA3LfRxnLkT
…ch and checked tip lane.json can be rewritten by code the model started, so run-checks now checks its resume branch only when it equals the resume-branch issue-prior chose before the mint, exported as a new output of pr-run-activity-write. report-outcome counts results only for the branch they name, so a mismatch leaves no results and the run stops. The branch name can move after the tip check, so report-outcome reads the compare at the checked SHA and closes a new PR whose head is not that SHA, handing the issue back. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01Xk7Lz7d2twxvA3LfRxnLkT
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. |
There was a problem hiding this comment.
💡 Codex Review
Here are some automated review suggestions for this pull request.
Reviewed commit: 0296dbceeb
ℹ️ 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 Incremental review of 1020824 (since 87fb50e)No blocking findings. I read the three changed files and the surrounding code in I did not run the tests. The sandbox refused What the change does. A resumed run's statuses now land on the checked tip only when the same gate report-outcome applies to opening that PR passes. That gate has three parts:
The helpers are exported from
Notes, none blocking:
|
|
claude-security-review reviewed No security findings in the incremental change since 87fb50e. I reviewed The change tightens a gate. A resumed run's commit statuses are now posted on the resumed branch's checked tip only when all of these hold:
Points checked:
|
…'s checked tip A resumed run that committed nothing has its PR opened from the branch it resumed, but post-statuses found no branch of the run and posted nothing, so the earlier run's failing pipeline/resolve-issue status stayed on the PR head and held the merge gate. post-statuses now posts on the tip run-checks checked, when lane.json's resume equals the runner's resume-branch and the check results name that branch. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01Xk7Lz7d2twxvA3LfRxnLkT
…come's gate post-statuses took the resumed branch's checked tip whenever the check results parsed for it, so a failing or empty check list, or a branch with a commit not the lanes App's, still got the run's statuses although report-outcome opened no PR. Both scripts now share report-outcome's gate: checksPassed (a check ran, none failed) and allLaneCommits over the compare at the checked tip. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01Xk7Lz7d2twxvA3LfRxnLkT
Refs: #8425
Summary
A resumed work-resolve-issue run whose work was already committed reported done with no new commit, and the runner stopped it for a person (issue-lane run 39386636889, #8530):
run-checksonly checked the run's own lane branch, which a resume with no new commit does not have, soreport-outcomehad no check over the work and opened no PR. Every resume whose work was already done stopped the same way; resumed admissions (#8425) are held on this.Fix
run-checks(.github/workflows/work-resolve-issue.yml, "Pick the lane branch") checks the resumed branch when the run kept no branch, but only whenlane.json'sresumeequals the runner-computedneeds.resolve-issue.outputs.resume-branchand matches^work-resolve-issue/issue-<this issue>-<n>-<n>$; it reaches checkout only throughwith: ref.pr-run-activity-write.ymlexposesresume-branchas aworkflow_calloutput (no trigger, input or permission change).report-outcome.mjsopens a PR from the resumed branch only if the check results name that branch, the branch is still at the checked tip, at least one check ran and none failed, and every commit ahead of the default branch is the lanes App's (a truncated commit list fails). The compare usesmain...<checked tip>; after opening (or reusing an open App PR), a head SHA other than the checked tip closes the PR and hands the issue back.Security pass: GitHub Security & Cost passed 84b0a4c and the F1/F2 hardening in 99c3929. Context recorded by that review: the App-commit check proves only "not a human's branch", since the model also holds the App token.
Verification
report-outcome.test.mjs182/182 (new tests failed first), withcallers.test.mjs197/197; actionlint clean on both workflows; pre-push check-affected passed.Related
🤖 Generated with Claude Code
https://claude.ai/code/session_01Xk7Lz7d2twxvA3LfRxnLkT