DC-NODE-24
DC derived enforcedVenue-split fork-choice resolver (rung-2). The DC-NODE-23 detector's non-spine consequent is gated by venue and TOTAL over the closed venue set: VenueRole::SingleProducer => fail closed (the DC-NODE-20 rung-1 behavior, byte-unchanged -- never adopt a peer candidate); VenueRole::Participant => NeedsForkChoice => the existing ade_runtime::consensus::chain_selector orchestrator (process_stream_input -> BLUE select_best_chain, DC-CONS-03). Venue input is explicit and fail-safe (an undeclared / unknown venue takes the conservative SingleProducer refuse arm). In Participant mode the peer's VALIDATED header summary (post validate_and_apply_header) becomes a candidate; a raw followed_peer_tip signal MUST NOT reach select_best_chain.
- Source
docs/planning/phase4-n-ai-live-fork-choice-invariants.md (I-6)
- Introduced in
- PHASE4-N-AI
Enforcement trace
Tests 4
- resolve_singleproducer_competing_refuses
- resolve_participant_competing_needs_fork_choice
- resolve_participant_already_have_and_linear_extend_do_not_call_fork_choice
- resolve_unknown_venue_fails_closed