Invariants / DC-NODE-42

DC-NODE-42

DC derived enforced

LIVE-FORGE-HARDENING S1 within-epoch forge-path rollback guard (INV-FH-4). On the --mode node forge / live-follow path (run_node_sync), a peer RollBackward whose target slot LOCATES to an epoch BELOW the in-memory promoted forge authority's epoch (ActiveEpochAuthority.epoch()) fails closed with UnexpectedRollback BEFORE the shared resolve_and_apply_peer_rollback runs -- zero durable mutation (no commit_rollback, no WalEntry::RollBack, no ChainDb / ledger / chain_dep change). S1 flips ONLY the routine within-k within-epoch fork to a durable follow; a cross-epoch-start target would rewind the sealed epoch-indexed leadership authority (S4-L2 / DC-EPOCH-25), deliberately OUT of S1's scope. The guard is INERT when the authority is absent (a keyless follower has no promoted forge authority to protect; the within-epoch follow still applies via the shared helper). Durable state is protected regardless by the BLUE admit/materialize k-guards (DC-NODE-29 canonical binding + the rollback admission k-bound). The target epoch is computed from the era geometry (EraSchedule.locate), NEVER from a peer-supplied epoch.

Source

docs/clusters/LIVE-FORGE-HARDENING/SLICE-S1-forge-path-rollback-follow.md (INV-FH-4)

Introduced in
LIVE-FORGE-HARDENING-S1

Enforcement trace

Tests 1

  • forge_path_rollback_across_epoch_start_fails_closed

CI 0

no CI script — gap

Cross-references

Evidence notes

The guard shipped with LIVE-FORGE-HARDENING S1 (node_sync.rs) and was confirmed fail-closed by the per-cluster cross-slice security review (a target below the promoted authority's epoch fails closed before any mutation). Its named proof forge_path_rollback_across_epoch_start_fails_closed was landed post-cluster-close (this rule; TRACEABILITY G1 gap): ActiveEpochAuthority::seed at epoch 1 + a rollback to slot 100 (epoch 0 under the 432000-slot schedule) -> UnexpectedRollback + durable tip unchanged + no WalEntry::RollBack. Sibling to the participant-path DC-NODE-33; distinct from the S1 rollback-FOLLOW strengthening recorded on DC-NODE-28/29.