op:ship
The release ritual. Steps run in order; a failing step stops the pipeline and reports.
- Preflight:
git status— summarize what ships. Run the recipetestcommand when present; failures stop here. - Commit: follow the repo's own style (
git log --oneline -5first). Stage files by name. - Push: gated (confirm) unless co-pilot armed; to an existing upstream only.
- Deploy: recipe
deploy— always confirm, armed or not (production). Missing key → op:project-recipes discovery; never guess a target. - Live verify (the blocking step): set
BUSTto the current epoch seconds; run recipecache_checkwith$URLand$BUSTsubstituted, or fetchlive_url?v=$BUSTand look for a marker from the just-shipped change (new text, version string, asset hash). Stale → report loudly, offer reciperollbackwhen present, and do not use the word "shipped". - Smoke: every URL in recipe
smokeanswers 200 —curl -s -o /dev/null -w "%{http_code}" <url>. - Screenshot the live page at a desktop width: Playwright MCP when available, else
npx playwright screenshot --viewport-size=1440,900 "$URL" <scratchpad>/ship-<date>.png.
Proof at end: live URL, screenshot path, status line.