ship: merge a proven pull request
A green check is not the same as a decision to merge. ship is the one way a story's pull request lands: it checks
the evidence again on the exact commit, needs a person's yes, then merges and writes down who approved what.
| Field | Value |
|---|---|
| In plain words | Merges a proven pull request after your yes, and writes down who approved what, on which evidence. |
| Journey stage | Ship it |
| Accountable seat | Engineering Manager (Drona) |
| Does the work | Drona, the Accountable seat's twin, in the chore model lane, with the seat's paired human when it has one |
| Consulted | Quality Architect (Yama) |
| Informed | Product Strategist (Arjun), Marketer & Documenter (Sauti) |
| Layers it can touch | every layer |
| Who reasons | no model: it is deterministic |
| Writes as | a person's own GitHub identity |
| Where it runs | the aayu command, a skill in your agent |
| The skill your agent reads | skills/ship/SKILL.md |
When to use it
- The merge gate is green on your story's pull request,
inspectsaysmerge, and you have read the change. - You work alone and GitHub will not let you approve your own pull request: use
--solo-bypass, in the open.
Not yet green? Let the builder fix the findings first (inspect). Moving merged work to a release is
release, not ship.
Run it
Your agent runs aayu ship <pr> on its own story pull requests once the merge gate is green, and never merges one with
gh. When everything but a person's approval holds, ship comments Ready to ship on the pull request, and it waits
in your aayu inbox, which ships it with every gate below. Only --solo-bypass is yours alone.
To have your agent walk you through one, ask:
Use the ship skill to tell me whether pull request 148 is ready to ship, and what I still need to do.
aayu ship <pr>
| Input | Required | What it does |
|---|---|---|
<pr> |
yes | Pull request to ship. |
--solo-bypass |
no | Solo mode only (one human, no bot App): merge without a second person's approval, recorded in the PR, the ship record, and the actions log. Person only. |
What you get back
A squash-merge commit on the base branch, the story's Outcome (Complete) section filled in, and the story moved to
status:merged. The approval, the rule that let it pass, and the layer streak are recorded in ship.json beside
the proof pack on the ledger. The build lease, the branch, and the worktree are cleaned up.
You should see the pull request merged and the story's Outcome section filled in. Stuck? See ship problems.
Gates
It checks these before it acts, and stops when one fails:
- merge-gate: The base-branch merge gate is green with an authoritative pack for the head SHA.
- human-pass: An approving review from a human (type != Bot, not a bot login).
When the change touches a risky layer (domain policy, stored data, or the platform), a CODEOWNER of those paths must approve too, whatever the streak, and the plan's review must be on the ledger.
With [autonomy] proof on, a pull request into your integration branch merges on proof alone: every required check
green, the proof pack verified with its floors holding, and the review at merge. A short list of paths still needs
you per pull request, because a change there decides who may approve, changes the gate, or reaches a release or a
secret. That list is [autonomy] always_person, plus any workflow that reads a secret. Ship marks those Ready to
ship, and they wait in your inbox.
What only a person does
- It writes under a person's own GitHub identity.
- It is never offered to agents as an MCP tool.
- A person approves the pull request. Working alone, you record a solo-mode bypass instead; it is never counted as an approval.
--solo-bypass: Solo mode only (one human, no bot App): merge without a second person's approval, recorded in the PR, the ship record, and the actions log.
Working alone, first post a pull request comment that starts with Solo-mode bypass:, names the head commit, and
says why, then run aayu ship <pr> --solo-bypass. A bypass counts only for the commit it names: after a push, post
one for the new head. The record says "Human pass: none possible", and audit lists every
bypass. See the human pass and solo mode.
What's next
- Promote merged work to a snapshot or a stable release:
release. - The whole flow, from a ready pull request to a merge: a pull request is ready.
- Every skill.