Expand description
RFC-020 Wave 9 Spine-A pt.1 — operator-control mutating methods
(cancel_execution + revoke_lease).
Both methods follow the §4.2 shared spine template:
BEGIN ISOLATION LEVEL SERIALIZABLE.SELECT ... FOR UPDATEonff_exec_core(+ff_attemptfor the current-attempt row) — captures pre-state and acquires row locks against thelease_expiry/attempt_timeoutreconcilers (§4.2.6).- Validate against Valkey-canonical semantics (§5.2).
- Mutate with compare-and-set fencing (lease_epoch CAS on
revoke_lease; lifecycle_phase check oncancel_execution). - Emit the outbox row per §4.2.7 matrix (
ff_lease_event). COMMIT. On40001/40P01(serialization / deadlock) retry up toCANCEL_FLOW_MAX_ATTEMPTS = 3; exhaustion surfacesContentionKind::RetryExhaustedto the caller.
Per §4.2.6: existing reconcilers (lease_expiry, attempt_timeout)
filter on lifecycle_phase = 'active', so a 'cancelled' row
surfaced by cancel_execution is silently skipped — no new
reconciler modifications required.