DC-NODE-34
DC derived enforcedPeer-identity restoration (PHASE4-N-AO, SELECT foundation). The live receive path preserves the origin peer identity end-to-end: AdmissionPeerEvent (peer: String) -> NodeSyncItem -> the participant loop. The NodeBlockSource -> NodeSyncItem conversion MUST carry the peer label (today it is discarded at node_sync.rs from_wire_pump/next_item), so per-peer candidate tracking (DC-NODE-35) is possible. Restoration is provenance-only: a single-peer FOLLOW run admits + replays BYTE-IDENTICALLY to the pre-restoration baseline, and identity restoration MUST NOT alter selection, admission, rollback, or evidence-verdict semantics. RED/GREEN feed shape; NO BLUE change; NodeSyncItem is a transient feed type (not persisted / hashed), so no canonical-type or replay obligation.
- Source
docs/planning/phase4-select-multicandidate-fork-choice-invariants.md (FC-2/FC-10 enabler) + docs/clusters/PHASE4-N-AO/cluster.md
- Introduced in
- PHASE4-N-AO
Enforcement trace
Code
Tests 2
- best_of_two_peers_wins_and_is_identified
- peer_identity_preserved_through_merge
Cross-references
Evidence notes
Declared at PHASE4-N-AO cluster-doc; enforced at S1 close (CE-AO-1) via ci_check_peer_identity_preserved.sh + a single-peer FOLLOW byte-unchanged replay test. Non-goal (hard): S1 restores peer identity ONLY -- no selection/admission/rollback/verdict change. The aggregator that CONSUMES the identity is DC-NODE-35 (latent until S3). Predecessor: PHASE4-N-AI single-best-peer FOLLOW flattened peer identity into one merged feed.