Invariants / DC-SESS-02

DC-SESS-02

DC derived enforced

Closed mini-protocol id registry: the dispatch table over MiniProtocolId is a closed match on a closed AcceptedMiniProtocol enum. Unknown ids return SessionError::UnknownMiniProtocolId { id } (peer-fatal). No runtime extension; no silent acceptance.

Source

docs/planning/phase4-n-l-wire-protocol-invariants.md §1 (I-2)

Enforcement trace

Tests 4

  • crates/ade_network/src/session/event.rs::tests::accepted_mini_protocol_round_trips_all_ids
  • crates/ade_network/src/session/event.rs::tests::accepted_mini_protocol_unknown_id_returns_none
  • crates/ade_network/src/session/event.rs::tests::accepted_mini_protocol_match_is_exhaustive
  • crates/ade_network/src/session/core.rs::tests::session_unknown_mini_protocol_id_is_peer_fatal

Cross-references

Strengthened in

Evidence notes

PHASE4-N-L S1+S2 (2026-05-26): AcceptedMiniProtocol::from_id closes with _ => None; session::core dispatches on AcceptedMiniProtocol with no wildcard accept arm. CI grep enforces both.