DC-PUMP-02
DC derived enforcedA CLOSED authority event is emitted on every chain-sync reply carrying a Tip: TipUpdate for IntersectFound / IntersectNotFound / RollForward; the DISTINCT AdmissionPeerEvent::RollBackward for RollBackward (PHASE4-N-AI AI-S4a -- a rollback is NEVER represented as a TipUpdate only; it is the closed fork-choice / durable-rollback signal carrying the peer's post-rollback tip). The runner's next verdict::derive / fork-choice call sees the freshest peer comparison input. (PHASE4-N-AN gate triage refined the RollBackward case to the AI-S4a event; the "closed event per reply" invariant is preserved -- the RollBackward reply's closed event is its own variant, not a generic TipUpdate.)
- Source
docs/planning/phase4-n-m-c-operator-pass-invariants.md §1 (I-C7); refined for PHASE4-N-AI AI-S4a in the PHASE4-N-AN gate triage
Enforcement trace
Tests 3
- admission::wire_pump::tests::pump_emits_tip_update_and_request_next_on_intersect_found_no_block_fetch
- admission::wire_pump::tests::pump_emits_tip_update_on_intersect_not_found
- admission::wire_pump::tests::rollforward_drives_block_fetch_then_request_next