Validate independent Nowhere Protocol implementations against Nowhere's Rust runtime. The Core specification entry identifies the Wire baseline. The Prelude Extension defines Morph TCP bootstrap authentication; the Egress Extension defines remote-exit behavior. This guide describes integration and validation, not a second Wire specification.
- Transport and authentication
- Flow direction and framing
- UDP delivery and lifetime
- Morph
- Reference vectors and observation
Follow Core transport and authentication. When connecting to Nowhere, use its Shared Key provisioning and certificate trust interfaces. Configuration URL parsing is independent of the authenticated Wire frames.
Test fresh and resumed connections, invalid credentials and replayed tags. A failed connection must not dial a target or claim Egress registration ownership. The authentication fixtures include Egress/TLS as a negative case; Egress does not support that carrier.
Exercise both TLS and QUIC with TCP and UDP payloads. Include authentication-only Stream 0, a pipelined first request, partial reads, reserved-bit decoding, TCP half-close, rejection before READY and failure isolation after READY.
A standard Vector uses the same Core protocol when Portal selects Egress as its exit. It does not implement registration or reverse Stream initiation. Egress peers separately test the registration barrier, role-direction rejection and Slot ownership.
Validate empty packets, Stream-derived ID boundaries, fragmented payloads, out-of-order delivery, duplicate/conflicting fragments and unknown or not-yet-ready routes. Missing QUIC DATAGRAM capability must not trigger a hidden carrier fallback.
Exercise control-stream FIN, reset and STOP_SENDING without relying on a CLOSE DATAGRAM. Reassembly and queue pressure must not prevent unrelated Flows from making progress. For Egress, validate both bridge legs and disconnect cleanup; reconnection must not recover a previous Flow.
Use the Core Morph contract. Test both enabled and disabled configurations, TCP partial reads/writes and continuous cipher offsets, UDP segmentation boundaries and nonce overhead. The receive path must accept the 64-byte prelude independently of the sender's generation policy. Nowhere's prelude policies do not require a matching policy on the peer.
Morph TCP senders encode the Prelude Extension. Portal verifies Tags independently of the generation policy. A nonmatching Tag permits silent ClientHello parsing without replay state. A matching Tag requires a valid Counter and successful replay checks before any TLS response. Test all three policies, matching and nonmatching tags, Counter rejection and the commit boundary after ClientHello acceptance. An input rejected by replay checks must not enter the Tag-mismatch path.
The wire fixtures, Morph fixtures and Prelude fixtures cover Core and extension encoding. Fixed byte agreement complements live transport and lifecycle tests; it does not replace them. See Testing.
Third-party observers use the separate Telemetry JSON contract. Local IPC, discovery, process identity and statistics are implementation interfaces, not requirements for a forwarding protocol peer.