DC-NODE-27
DC derived enforcedRollback+reselection replay-equivalence (rung-2). The ordered live receive-event sequence (RollForward headers, RollBackward points, body deliveries) replayed against the same bootstrap anchor + durable log produces a BYTE-IDENTICAL durable tip + ledger fingerprint + PraosChainDepState -- INCLUDING any rollback+reselection. A live rollback is recorded durably (append-only, canonical bytes -- CN-WAL-01) such that replay re-invokes the SAME materialize / reducer authority (CN-STORE-07 / DC-CONS-20) at that point; the durable record is NOT a second rollback implementation. No implicit live-only rollback: a rollback that happened live MUST be reproducible on recovery (T-REC-03/05, DC-CONS-06/22). OQ-1 RESOLVED -> A (the version-gated WalEntry::RollBack marker re-invoking the existing rollback / materialize authority on replay; option B WAL-tail reconciliation rejected); enforced when the AI-S1 BLUE foundation + replay-equivalence land.
- Source
docs/planning/phase4-n-ai-live-fork-choice-invariants.md (section 4, OQ-1)
- Introduced in
- PHASE4-N-AI
Enforcement trace
Code
Tests 4
- apply_rolledback_replays_byte_identical_recovers_forkpoint
- replay_with_rollback_recovers_selected_not_abandoned
- replay_with_rollback_two_runs_byte_identical
- rollback_replay_reanchor_fp_equals_materialized_fp