Handle stale production subject
A PRODUCTION_PROMOTION ticket is bound to subject_sha. If the runtime HEAD moves between signing and consumption, the ticket is stale.
Symptoms
- The orchestrator reports
ticket stale: subject_sha mismatch. signed_ticket_verifier.verifysucceeds but consumption fails.
Steps
- Confirm the head moved:
git rev-parse origin/mainvs the ticket'ssubject_sha. - Re-base the work onto the new head.
- Push the new head.
- Re-run the merge to bind the new head to the goal.
- Re-emit the production ticket at the new head.
- Sign the new ticket offline.
- Submit the new ticket to the orchestrator.
Why not consume the old ticket?
The orchestrator's subject-binding rule refuses to consume a ticket whose subject_sha does not match the current HEAD. This is a hard fail-closed.