Repository navigation
Description
Part of epic #337 (linked as parent). The owner approved the epic and all its batches on 2026-10-10, including this merge-check change under clause 2; this child is batch 8 and inherits that approval.
User story
As the owner, I want a release to wait for every open ship-blocker and a green full run on main, so that nothing must-fix ships.
Acceptance criteria
merge-check --shipexits 1 and names every open issue labelledship-blocker.merge-check --shipfails and names each ship-blocker that also carriesdeferredorparked.merge-check --shipfails when the repo has noship-blockerlabel.- In an opted-in repo,
merge-check --shipfails without a greendevbox/verify-fullon the default-branch head. - In an opted-in repo,
merge-check --shipfails without a green push CI run on the default-branch head. merge-check --shipexits 0 only when every result passes or reads NA.merge-check --shiprefuses a PR number,--epic,--mergeand--close.- A bug issue states
ship-blocker: yesornoagainst the three criteria in the epic's Context.
What I'd notice: a new merge-check --ship that answers SHIPPABLE or BLOCKED and names the blockers.
Tasks
-
--shipin merge-check (scratch copy, then install on both machines). - Unit tests with
gh_jsonandgh_textmocked, per the contract's test list. -
CONTRACT.md:--shipand the ship-blocker criteria. - The planner's issue-writing rule: every bug states
ship-blocker: yesorno.
Contract
The planner's contract is the comment on #337, section 5 and child E. Clause 2: yes, approved by the owner on 2026-10-10. This child has no relay PR; it closes with a comment naming the installed md5s.
Ownership (outside the repo): ~/.claude/merge-check/merge-check (dev), ~/.claude/merge-check/test_merge_check.py (test writer), ~/.claude/merge-check/CONTRACT.md (coordinator), ~/.claude/agents/planner.md (issue-writing rule).
Budget: 4 files, about 350 lines. Depends on child D's merge-check install (#344).
Waits: none; tests are pure functions over mocked gh.
Decisions made for the owner
- See the contract comment on Epic: PRs run only the e2e tests their change affects, with a full run at epic close #337.
Activity
barelyworkingcode commentedon Oct 10, 2026
Approval: the owner approved epic #337 and all its batches on 2026-10-10, including this clause 2 change. This child inherits the approval (coordinator).
barelyworkingcode commentedon Oct 10, 2026
Coordinator approval: the owner approved epic #337 and all its batches on 2026-10-10 (clause 2 changes included); this child is one of the epic's listed batches and inherits that approval.
barelyworkingcode commentedon Oct 10, 2026
Installed on the Mac and the devbox and confirmed by the watcher: merge-check e0c9f45dbe8031b2cf07ef7aa3cc4f82, CONTRACT.md 4900a7a7fc7f43c9e12a1d0256c59b29, test_merge_check.py b512aff1caed08b0581a8e3217ab6c58. 62 unit tests pass on both machines. Review: 2 rounds, last round no blocking findings. Break-and-restore went red on the ship blocker and blocker-read paths. planner.md carries the ship-blocker rule. No relay PR: every file is outside the repo.