Repository navigation
feat(source-control): merge MED lane PRs on review pass and cut the path floor to external effects - #9280
Conversation
…ath floor to external effects A MED score merges unattended when every reason is a class or size reason (#9270); unbound or missing review evidence, an open claude-review finding, an unread listing, the rung and every HIGH reason still hold. The security lane holds only on a CRITICAL finding, read from severity lines the security-review skill now writes. The HIGH path floor keeps only settings, submodules, code owners, package manifests and lockfiles, and the release and id-token workflows; the capability, script, eval, declaration and non-executable manifest checks go, with floor-paths and floor-script-scopes. A structural work class merges as scoped. Closes #9270 Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_014jM255zWtpKVsuYWs5jToN
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_014jM255zWtpKVsuYWs5jToN
Scope update: #9276 moves very-high security escalation into the review lanes, so this change adds no severity parsing. Every open claude-security-review finding still scores HIGH, as on main. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_014jM255zWtpKVsuYWs5jToN
Restores the security lane's CRITICAL-only count: the claude-security-review lane flags, and only a CRITICAL finding, or one whose severity the gate cannot read, holds the merge for the owner. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_014jM255zWtpKVsuYWs5jToN
Takes #9278's apply-patch tests, which drop the instruction-path refusal. Brings feedback-thread.sh's instruction set in line with the narrowed INSTRUCTION_PATH, and states what the HIGH path floor holds in the patch-refusal paragraph. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_014jM255zWtpKVsuYWs5jToN
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_014jM255zWtpKVsuYWs5jToN
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 d6e4a0b against 6d5ca05: no security findings. I read all seven changed files in
|
There was a problem hiding this comment.
💡 Codex Review
Here are some automated review suggestions for this pull request.
Reviewed commit: 6d5ca059e4
ℹ️ 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 d6e4a0b against 6d5ca05: no findings. Read
Manifest checks: this increment changes no |
- Read `critical-findings:` from the review's summary comment as well as the head marker, so the older producer shape counts its line. - Test only the holding reasons for a whole-review request. - State what the HIGH path floor holds and why, and cite /review:security-review by name. - The pr-pipeline fragment is a major bump with a Breaking line for the removed floor-paths and floor-script-scopes keys. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_014jM255zWtpKVsuYWs5jToN
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_014jM255zWtpKVsuYWs5jToN
Closes #9270
Summary
The owner's 2026-10-22 direction, given to this session as the guardrail-cut task, sets this PR's scope: the review lanes are the only gate, and the merge gate holds only what has an effect outside the repository or its review. It supersedes the 2026-10-18 floor decision. #9270 (merging MED lane PRs on a review pass) is one part of it.
class-contradicted,blast-radius-missing,lines-over,files-over,no-patch:*). Unbound or missing review evidence, an open claude-review finding, an unread file listing,class-missing/class-above-rung(the rung), the cost hold and every HIGH reason still hold, and every policy hold (do-not-merge, needs-human, body hold, wait comment, untrusted origin) is unchanged. Such a MED gets no reasons comment and no risk escalation (A14).severity:line on each inline comment and acritical-findings:line in the summary, which/review:security-reviewnow writes; a finding whose severity it cannot read counts as CRITICAL.**/settings*.json,**/.gitmodules,**/CODEOWNERS,**/package.json,**/package-lock.json,**/requirements*.txt,.github/workflows/release-*.yml, the nineid-token: writeworkflows, and.github/actions/check-trusted-trigger/**. The unsafe-path, symlink, submodule and mode rules stay.high-capability,high-script, the test-only and eval-data exemptions,eval-scaffold-review-required, base-side declarations,FLOOR_ADDITIONS,floor_extensions, andmerge.diff-check.floor-paths/floor-script-scopeswith their schema and README rows.manifest-review-requirednow holds only executableplugin.jsonkeys and a marketplace plugin added, removed, renamed or re-sourced.NEVER_FLOOR_EXEMPTis the floor;INSTRUCTION_PATH_RE, itsthread-scope.mjstwin andfeedback-thread.shname only submodule, code-owner, settings and package-manifest files.work-class: structuralscores as C3 in the local merge gate and the promotion evidence (audit D10); untrusted-provenance stays C5.Fix
babysit_risk.py: newHIGH_FLOOR,holds()andMERGEABLE_MED,blocking()andLaneEvidence.blocking_findings; the manifest check runs on its own.babysit_review_evidence.py: a CRITICAL count beside the open-finding total for the security lane.babysit_merge.pyandbabysit_whole_review.py:holds()replaces each LOW-only test.babysit_merge_policy.py: config keys, readers and the floor exemption lists.In the local babysit lane, where the C2 contradiction check stays on, a removed, renamed or schema-changing C2 diff, a C1-labelled PR, and at rung C3 an unrated C3 or structural PR now merge unattended too. That matches the owner direction; the pr-merge lane is unaffected (its class is always C2 and the check is off).
Release PRs (the release App's, both lanes skipped by design) land through their own queue path in
release-publish-plugins.yml, not through this gate.Verification
python3 -m unittest discover -s tests -t .inbabysit-prs/scripts: 2485 tests OK.node --testin.github/scripts/pr-unblock(544 pass),.github/scripts/apply-patch(104 pass) andbabysit-loop/scripts(124 pass);feedback-thread.test.shpasses.scripts/run-ruff.sh check: clean.Related
instruction-pathrefusal; this PR narrows the sharedINSTRUCTION_PATHregex.🤖 Generated with Claude Code
https://claude.ai/code/session_014jM255zWtpKVsuYWs5jToN