Invariants / DC-NODE-24

DC-NODE-24

DC derived enforced

Venue-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

Cross-references

Strengthened in