Invariants / DC-NODE-30

DC-NODE-30

DC derived enforced

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

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

Cross-references