release
Release
Prepare and cut a release as a strict sequence of gates. Create one todo per step below and work them in order.
The stop rule: any step that fails means STOP — report exactly what failed and what remains, and leave the repo un-released. There are no partial releases: no tag without a passing build, no notes for artifacts that do not exist, no "we'll fix it after tagging."
Terminal reject vs stop rule: after a stop-rule failure, ask once whether the
user issues an explicit terminal reject. Yes → REQUIRED SUB-SKILL: use
record-decision with verdict release-reject, Boundary-Type: release, durable
evidence inline; leave the repo un-released. No / silence / "fix later" → no
decision record (mechanical stop alone is not a terminal verdict). The same
release-reject handoff applies if the user rejects at version or tag approval.
Stop-rule discipline is unchanged: no partial releases.
Read the repo's commands from docs/agents/project.md (verify commands, release steps, smoke command). If it is missing, say so, suggest setup-repo, and ask the user for the commands before proceeding.
a. Verify gate
Run every verify command in order — typecheck, lint, unit, e2e — plus the trace check (REQUIRED SUB-SKILL: use trace). All must pass fresh, now; prior green runs do not count. The trace check must be clean: an implemented requirement with no covering test is an untraced requirement, and untraced requirements block a release.