Invariants / DC-SESS-01

DC-SESS-01

DC derived enforced

Handshake-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.