Repository navigation
feat(pr-merge): leave lane pull requests to native auto-merge - #9448
Conversation
merge.lane-prs (default native) stops pr-merge's merge job from listing the lanes App's pull requests, so the gate never scores, escalates or enqueues one; enable-auto-merge and ci-status are their merge path. Adopted owner pull requests and Dependabot's are gated as before. gate lists the lanes App's pull requests too, as the lane ran before. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
…tive clear-escalations took a pr-merge escalation off once the head moved, on the premise that pr-merge judges the new head and escalates again. Under merge.lane-prs native pr-merge never lists a lanes App pull request, so such a label now stays. The require-verifier-verdict comment now says it applies to the PRs the gate lists. 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 Incremental security review of the changes since e9d310c, covering
critical-findings: 0 |
There was a problem hiding this comment.
💡 Codex Review
Here are some automated review suggestions for this pull request.
Reviewed commit: e9d310cc6b
ℹ️ 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 the changes since e9d310c. I read
I did not run any tests. The test results in the PR description are author-claimed and unverified by me. |
…ges are verified Under native nothing yet requires the pr-verify verdict for a lanes App pull request, and the post-merge check reads a native merge's missing pin comment as a failure. The gate stays the only place both hold, so this repository sets gate; the key's default stays native. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Refs: #9276
Summary
This is PR 9 of the #9276 plan. The new
merge.lane-prssetting, defaultnative, retires pr-merge's gate and enqueue for lanes App pull requests. Since #9399 those pull requests merge through GitHub's native auto-merge: theenable-auto-mergejob arms them andci-statusgates them. Undernative, themergejob's candidate listing stops asking for them, so the gate no longer scores, escalates, toggles or enqueues one. Adopted owner pull requests and Dependabot's are listed and gated exactly as before.This repository ships on
lane-prs: gate, so merging this PR changes no behavior.docs/conventions/pr-pipeline.yamlsetsgate, and the key's default staysnative.nativeis a one-line follow-up that depends on the native-merge verdict fix and fix(source-control): judge native lane auto-merges without a pin read-back #9447. Make that change only after both land.Fix
docs/conventions/pr-pipeline/pr-pipeline.schema.json: addsmerge.lane-prs, enumnative | gate, defaultnative..github/actions/resolve-config/resolve.mjs:resolveMergereturnslane-prs, defaulting tonative.docs/conventions/pr-pipeline.yaml: setslane-prs: gatefor now. A comment explains both values and the two prerequisites for switching tonative..github/workflows/pr-merge.yml,mergejob:Read report-onlyoutputslane-prsas resolve-config resolved it.List the candidate PRsaddsapp/<agent-identity slug>to the authors only when the value is notnative. The slug is still validated.(add // []), so a run with no listed author yields an empty list instead of an error.enable-auto-mergejob, post-merge-dispatch, dispatch-full-run, refire-refused, clear-escalations (it lists pull requests itself), the Dependabot tiers and owner adoption.head-ref-map.mjs,rotation.mjsandbabysit_verify_evidence.py. Those belong to a peer session, and they only see fewer candidates.gatelists the lanes App's pull requests for the gate as well, which is the behavior on main today: the authors list, its order and the gh calls are identical.enable-auto-mergearms lane pull requests in both modes, sogateis today's double path, not a gate-only fallback.Calls removed per pr-merge run once this repository sets
native(no call is added in either mode)gh pr list --author app/melodic-automation-lanescall permergerun (GITHUB_TOKEN).sweep-costlines of merge jobs 120497375990 (lane 484, github-token 151, 4 candidates) and 120492084819 (lane 480, github-token 394, 3 candidates), divided per candidate, fixed run overhead included.Verification
npm testin.github/actions/resolve-config: 679/679 pass. New test:lane-prstakesnativeandgate, rejects anything else, and the schema default equals the resolver default.VALID_MERGEand the materialized-defaults test now includelane-prs: native.node --test .github/scripts/pr-merge/*.test.mjs: 217/217 pass. New tests inmerge-job.test.mjs, each failing on main's workflow:native, the listing never asks forapp/melodic-automation-lanes, while the adopted person andapp/dependabotare still listed.gate, the author list is today's (app/melodic-automation-lanesfirst).nativewith no other author makes noghcall and writes empty candidates and drafts withcount=0.Read report-onlyrun against a resolved config outputslane-prs=nativeandlane-prs=gate.gateunchanged.actionlint1.7.12 (local): no findings apart from the pre-existingconcurrency.queuekey, which this local version does not know. CI's pinned action runs its own version.pr-pipeline.schema.jsonandpr-pipeline.yamltogether from main as trust files (fixtures/broker-vendored-lists.jsonbinding.trust_files), so the new key and its schema entry arrive at the same time. A warm instance's cachedresolve.mjsonly lacks the new resolved field, which the broker does not read.scripts/check-affected.sh --testson the merged head: 10 passed, 4 skipped.clear-escalations.test.mjs: undernative, a lanes App PR's pr-merge escalation at an old head is kept. Undergateit clears as before, and an adopted owner PR clears undernative.Review (ready, local fresh-context code and security reviews)
clear-escalations.mjslifted a pr-merge escalation ashead-movedon the premise that pr-merge re-judges the new head. Undernativeit never does, soLANE_PRSnow reaches that step, and a lanes App PR keeps its label. No added call: the pull it checks is already read.gateuntil the verdict is enforced outside the gate and fix(source-control): judge native lane auto-merges without a pin read-back #9447 lands.require-verifier-verdictcomment inpr-pipeline.yamlnow says it applies to the PRs the gate lists.HOLD_PATH_FLOORlacks, marketplacesourcechanges and cost paths. These gaps predate this PR, but undernative, ci-status and enable-auto-merge become the only controls on lane PRs.native, lane PRs drop out of the gate's "Blocked for over 24 hours" summary and refusal counts, and lose the gate's risk escalation. ci-status and the review-lane holds still stop them.mergegate-check on a lane PR's unchanged head stays. It is informational and not required.Related
native) and fix(pr-pipeline): hold lane PRs on marketplace sources and cost paths under native auto-merge #9449. feat(pr-pipeline): arm native auto-merge for lane pull requests #9399 (item 8, native auto-merge) and feat(pr-pipeline): turn on review-lane holds and require both review lanes in ci-status #9361 (ci-status review gate) are what this relies on.babysit-merge-pincomment. feat(source-control): hold only the takeover set on the babysit HIGH floor #9413 shows that the account enabling auto-merge becomes theAddedToMergeQueueEventenqueuer. For a lane pull request that is the lanes App, sobabysit_postmerge._judgewould judge itby_identity. With no pin, that becomes a read-back failure after the dispatch deadline (babysit_postmerge.py:1492-1506). The consequences would be a demotion record and an in-flight count that never clears, which would hold the gate for adopted and Dependabot pull requests. Filed as fix(source-control): judge native lane auto-merges without a pin read-back #9447.resolve-configand.github/**, so the babysit HIGH floor holds it for a person.🤖 Generated with Claude Code