Invariants / DC-NODE-25

DC-NODE-25

DC derived enforced

Live 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

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

Cross-references

Strengthened in