Handle gate replay rejection
A consumed gate cannot be replayed. If the orchestrator detects a replay attempt, it raises a GateReplayError.
Symptoms
gate replay rejected: ticket_id already consumed.dispatches_used == max_dispatches.
Steps
- Confirm the gate is consumed:
goal-gate.ps1 -Action inspect -GateId …. - Determine why the replay was attempted:
- The orchestrator was re-run with a stale
next_actionsrecord. - A manual retry was attempted.
- The orchestrator was re-run with a stale
- Reset the orchestrator's next-action record by re-running
goal-run.ps1 -DryRun. - Re-issue a fresh gate if needed.
- Continue.
Why replay protection exists
Replay protection prevents an attacker who has captured a ticket from re-using it. Once consumed, the ticket is dead.