Invariants / DC-SESS-01
DC-SESS-01
DC derived enforcedHandshake-before-traffic: no mini-protocol frame reaches the
orchestrator inbox until the handshake state machine has emitted
Accepted. Type-state: a MuxSession in Handshaking cannot emit
SessionEffect::DeliverPeerFrame; only Connected can. Compile-
time guarantee + runtime test.
- Source
docs/planning/phase4-n-l-wire-protocol-invariants.md §1 (I-1)
Enforcement trace
Tests 2
- crates/ade_network/src/session/core.rs::tests::session_blocks_frames_before_handshake
- crates/ade_network/src/session/core.rs::tests::session_post_handshake_handshake_frame_is_peer_fatal
Cross-references
Strengthened in
Evidence notes
PHASE4-N-L S2 (2026-05-26): SessionState splits Handshaking/Connected; the reducer rejects pre-handshake mini-protocol frames with SessionError::PreHandshakeMiniProtocolFrame (peer-fatal). Post-handshake handshake frames are rejected with PostHandshakeHandshakeFrame.