DC-NODE-28
DC derived enforcedNo forge across unresolved re-selection (rung-2). Once a peer-origin candidate is classified NeedsForkChoice (DC-NODE-23) in a Participant venue, forging is DISABLED until the fork-choice outcome is either (a) durably applied and reconciled (DC-NODE-25/26) or (b) rejected with durable state unchanged. The forge base is NEVER selected from a stale pre-resolution ChainDb::tip while a decision is pending -- a producer tick that fires during a pending decision fails closed (typed ForgeRefused), never forges on the old local tip. This is a producer race fence DISTINCT from pump_block durable admit, rollback replay, or selector / durable reconciliation, so it carries its own evidence. Prevents stale local authority leaking into block production. Derived tier with a true-tier authority consequence.
- Source
docs/planning/phase4-n-ai-live-fork-choice-invariants.md (I-12)
- Introduced in
- PHASE4-N-AI
Enforcement trace
Tests 5
- pending_reselection_forge_refusal_gate
- participant_rollback_beyond_k_fails_closed_clears_pending
- singleproducer_rollback_refused_by_run_node_sync
- forge_path_rollback_applies_durably
- forge_path_rollback_beyond_k_fails_closed_clears_pending