Repository navigation
fix(source-control): hold the babysit merge on a body line starting Hold: - #7349
Conversation
…old: BODY_MERGE_HOLD_RE now also matches a PR body line that starts with `Hold:`, the form lane-power PRs use and the rule the pull-request ready hold check applies, so the merge gate and the merge-entry hold both refuse such a PR. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01W6SjPvY7DmXBGzboeCq8nj
…e CR The Hold: alternative now accepts any non-newline whitespace before the word (an NBSP pasted from a rich-text editor no longer slips past) and treats a bare CR as a line break. The comment and changelog fragment no longer claim parity with check-ready-holds.sh, which leaves a Hold: line to the merge. The merge-entry hold gains a Hold: line test. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01W6SjPvY7DmXBGzboeCq8nj
|
Claude finished @kyle-sexton's task in 1m 11s —— View job Security review complete
Scope: changes in this PR only ( Analysis:
No security issues found (no CRITICAL / IMPORTANT / SUGGESTION findings). claude-lane-summary: lane=claude-security-review sha=fbbe1d17cbf946d3aa653626f3dbdc6b2822832e run=38328602902 |
Reviewing PR #7349
|
|
Claude finished @kyle-sexton's task in 3m 51s —— View job Code review:
|
|
claude-security-review has reviewed this pull request through 1aa9a32; a later push is reviewed from there. |
|
Claude finished @kyle-sexton's task in 2m 44s —— View job Security review complete
Scope (incremental, since What changed: the merge-hold pattern widened from Security read:
No security issues found in this incremental scope. claude-lane-summary: lane=claude-security-review sha=0aa346668f0b4bcff5bdb4597f6a2f829e3f3e21 run=38328607848 |
There was a problem hiding this comment.
💡 Codex Review
Here are some automated review suggestions for this pull request.
Reviewed commit: 0aa346668f
ℹ️ 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".
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-review has reviewed this pull request through 1aa9a32; a later push is reviewed from there. |
Reflow the do-not-merge hold paragraphs so babysit-loop (501 lines on main) and babysit-prs (500 after the Hold: wording) pass the static skill-quality contract's hard cap. No wording changes. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01W6SjPvY7DmXBGzboeCq8nj
|
Claude finished @kyle-sexton's task in 1m 35s —— View job Code review:
|
|
Claude finished @kyle-sexton's task in 33s —— View job Security review complete
Scope: incremental, since Analysis: diffed via
No instruction-surface deletion, no narrowing of the hold/guardrail language, no new logic, no code change. This is a formatting-only fix for the skill-body line cap and carries no security implications. No security issues found (no CRITICAL / IMPORTANT / SUGGESTION findings). Branch · claude-lane-summary: lane=claude-security-review sha=1aa9a325e3447c6a6a8dccc3f6ab4202bef7563b run=38329299404 |

No related issue: owner-approved follow-up to the auto-ready plan; aligns the babysit merge gate with the merge-only
Hold:line #7345 documents.Summary
The babysit merge gate's
BODY_MERGE_HOLD_REheld a PR only when its body said "do not merge" or "don't merge". Lane-power PRs in this repo hold with a body line startingHold:(for exampleHold: a human merges this), which the gate did not see. It now does. AHold:line holds the merge only: #7345'scheck-ready-holds.shshares just the do-not-merge part of the pattern and lets the ready flip go ahead past aHold:line.Fix
babysit_merge.py:BODY_MERGE_HOLD_REalso matches(?:^|\r)[^\S\r\n]*hold:per line (case-insensitive, multiline): any non-newline whitespace before it, NBSP included, and a bare CR counts as a line break. The merge gate and the merge-entry hold inbabysit_merge_policy.pyboth read this one pattern. The blocker message now says the body holds the merge and names both forms.babysit-prs/SKILL.mdandbabysit-loop/SKILL.md: the do-not-merge hold wording lists theHold:line.docs/conventions/loop-lane/README.mddoes not list body forms, so it is unchanged.Verification
test_babysit_merge.py(PullRequestBodyHold): aHold:line (CRLF, indented lowercase, NBSP-prefixed, bare-CR cases) blocks with and without the tier;hold:inside a line andThreshold:do not block.test_babysit_merge_policy.py: the merge-entry hold returnsbody-holdfor aHold:line. The NBSP and bare-CR cases fail on the earlier^[ \t]*hold:pattern (4 failures) and pass after.python3 -m unittestoverbabysit-prs/scripts/tests: 1405 tests OK on 0aa3466.scripts/check-affected.sh --testson 0aa3466 (merged with main, afternpm ci): 8 passed, 1 skipped (no shell changed).Related
readyhold check; its comment calling its body patternBODY_MERGE_HOLD_REshould say it shares only the do-not-merge alternative)/work-items:ship runfollow-up opened alongside this PR🤖 Generated with Claude Code
https://claude.ai/code/session_01W6SjPvY7DmXBGzboeCq8nj