aayudha docs Built from de79988 (2026-10-26)

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

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:

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

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