DC-NODE-25
DC derived enforcedLive fork-choice durable application authority (rung-2). A ChainSelected / RolledBack outcome from the chain_selector orchestrator is applied to the durable stores ONLY via the existing enforced authorities: the lockstep receive reducer (DC-CONS-20 -- ChainDb + LedgerState + PraosChainDepState advanced / rolled-back as one structural transition) + materialize_rolled_back_state (CN-STORE-07) for the rollback target + pump_block (DC-NODE-05/12) for roll-forward. NO second apply path, NO second durable tip-advance path, NO second rollback-materialize path. A fork-choice win is provisional: the chain is durably adopted ONLY when its BODIES validate and apply through pump_block (no header-only tip advance). A TiebreakerLossKeepCurrent outcome makes no durable change.
- Source
docs/planning/phase4-n-ai-live-fork-choice-invariants.md (I-2, I-3, I-4, I-11)
- Introduced in
- PHASE4-N-AI
Enforcement trace
Code
Tests 5
- apply_rolledback_rolls_back_and_appends_wal_record_after_commit
- apply_chain_selected_invalid_body_fails_via_pump_no_advance
- apply_chain_selected_without_block_bytes_fails_closed
- participant_rollback_applies_durably
- participant_block_with_no_durable_tip_pumps