Invariants / DC-NODE-30
DC-NODE-30
DC derived enforcedParticipant-path convergence evidence emission (PHASE4-N-AJ). The live
--mode node --participant-venue rollback-follow path emits the existing closed
AgreementVerdict vocabulary to a dedicated --convergence-evidence-path JSONL as a
deterministic GREEN side-output of already-authoritative outcomes:
- BlockReceived for EACH peer block considered by the receive path (before drop/admit/refuse),
- BlockAdmitted per pump_block admit,
- AgreementVerdict = verdict::derive(outcome, observed_peer_tip), each carrying consensus_inputs_fingerprint_hex. MUST NOT become authority: never gates admission, never triggers or parameterizes a rollback, never influences fork-choice, never mutates the durable chain. pump_block stays the sole roll-forward admit; apply_chain_event the sole rollback authority; classify_receive unchanged. Emit-only on Diverged. An evidence write failure is non-fatal to authority (the node continues consensus operation; the sink is distinct from the authoritative WAL), but the convergence-evidence transcript is then marked incomplete/unusable for CE-AI-6 -- it MUST NOT silently produce a partial transcript that later passes the gate. No path supplied => no file and node behavior byte-unchanged. No new evidence enum; no BLUE change.
- Source
docs/planning/phase4-n-aj-participant-convergence-evidence-invariants.md §1 (I-AJ-1) + §7 (D-1/D-2/D-3)
- Introduced in
- PHASE4-N-AJ
Enforcement trace
Code
Tests 7
- ade_node::convergence_evidence::tests::convergence_evidence_absent_path_emits_no_file
- ade_node::convergence_evidence::tests::convergence_evidence_writer_emits_closed_vocabulary
- ade_node::convergence_evidence::tests::convergence_evidence_write_failure_poisons_and_is_surfaced
- ade_node::convergence_evidence::tests::convergence_evidence_context_marks_incomplete_on_write_failure
- participant_cold_start_admit_emits_received_admitted_agreed
- participant_block_received_does_not_imply_admission
- participant_convergence_evidence_replay_byte_identical