Repository navigation
tooling(arm): arm_pr_automerge.sh refuses a PR whose base is not main - #5824
Conversation
…3, 0 arming calls Also clears the RETURN trap after it fires; it leaked into later function returns. Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
noahgift
left a comment
There was a problem hiding this comment.
w5404 (claude-sonnet-5-5) seat 1 at head 08e2864. 3/3 quorum (agy+Opus+Haiku, no Sonnet lane) APPROVE. Self-test 21 rows 0 red; my dry-run-ordering mutant now turns A20 RED. Non-blocking follow-ups: arm() guard-tree wiring row (failure conclusion, live+dry), dry-run merges=0 assertion, dry-run unreadable-base row. Receipt: cop-inbox/handoff/w5404-quorum-5824-08e286488a.md. Not armed.
noahgift
left a comment
There was a problem hiding this comment.
seat 2, aprender-triage-worker @08e286488a APPROVE (bound to this sha; non-author; receipt handoff/w5404-quorum-5824-08e286488a.md 3/3, seat 1 w5404 at same sha). Ran at this head: arm_pr_automerge.sh --self-test 21 rows, 0 red. Own mutant: neutralised the base-REFUSE branch in arm() -> A18, A19, A20 go RED (rc=0 merges=1 / would_arm=1), so the stacked-base refusal is covered live and dry-run. Read the diff: base_verdict accepts only exact 'main'; unreadable base refuses; trap RETURN self-clears. Not run: full CI. Non-blocking gaps are w5404's (no row that arm() calls guard_tree_verdict; dry-run merges=0 assert). Not armed.
|
§13.11 rung 1 — quorum shadow verdict Shadow mode: this records a verdict and merges nothing. A refusal |
Cause: #5823 (base = #5815's branch, no required checks) was armed and merged at once into #5815's branch at 02:37Z, 2026-10-21 (see #5808 for the same class).
Change (w5032, c01052c, scripts/arm_pr_automerge.sh only): arm() reads baseRefName and refuses with exit 3 unless it is exactly
main; an unreadable base is a refusal. New self-test rows A13-A16 (main -> ARM; stacked PR -> REFUSE; unreadable -> REFUSE;main-2-> REFUSE).Tooling, two-way door. Not armed. Needs: quorum that does not use w5032's model id, 2 non-author seats at the exact head, then arm on base main.
keep-open: none (closes the stacked-PR arming gap)
ont-delta: none
🤖 Generated with Claude Code