Ship behind a gate
Write the conditions, attach real evidence, and let the release publish itself.
1. Write the conditions
add_gate_condition gate=LAUNCH-1 kind=automated label="Acceptance tests green"
add_gate_condition gate=LAUNCH-1 kind=manual label="Runbook published"
add_gate_condition gate=LAUNCH-1 kind=ai-assessed label="Cost forecast reviewed"2. Attach evidence, do not assert
add_gate_evidence records what actually happened - a test run, a link, an agent's assessment with its reasoning. A condition marked done with nothing behind it is a checkbox; a condition with evidence is a record.
3. Try the transition
{
"code": "GATE_NOT_PASSED",
"message": "Gate LAUNCH-1 cannot pass: 1 of 5 conditions is unmet.",
"hint": "Complete 'Security review' (tsk_41c), then retry."
}4. The release publishes itself
Before you touch infrastructure
preflight_operation is a separate, advisory check for operational work. It answers proceed, caution or stop with reasons - blast radius, unowned databases, protected resources. It is advice, never a block; the one hard constraint is database protection, which cannot be set or cleared by an agent in either direction.