Parent: #45
Blocked by: ExaDev/wire-mesh#45 (P1 prerequisites), P0 above
WireMeshTransport implements MeshTransport, carrying the existing MeshMessage union as an opaque payload in a namespaced domain (no spec change needed). identity-store.ts persists an IdentityPort. One shared factory replaces the four-line substrate-coupling block in six bridges. The whole existing test suite (state-sync-convergence.test.ts, downtime-replay.test.ts — both transport-free by design) stays valid as the oracle through this phase; if it can't pass unmodified, something about this substrate swap changed a property it shouldn't have.
Design complete: write-the-cddl-spec-calm-pascal-agent-p2-substrate-swap.md.
Correction to the parent plan surfaced by the design: wire-mesh#50 (createTlsTransport) is a hard blocker for this phase, not parallel work -- agent-comms' current TlsTransport does real mutual-TLS cert-fingerprint peer authentication; wire-mesh's only transport today is plaintext TCP with identity resolved from unauthenticated gossip. Shipping P2 on that substrate would silently downgrade a real security guarantee inside a phase whose whole premise is "semantics unchanged". Sequencing: wire-mesh#50 lands first (createTlsTransport + an additive Connection.peerDeviceId/unref port extension), then WireMeshTransport is built against it.
Sequencing plan (each its own PR, oracle tests green throughout): 1) wire-mesh#50, 2) agent-comms identity swap (additive, TlsTransport keeps working), 3) WireMeshTransport standalone behind a flag with its own parity test suite, 4) cut one bridge (mcp) over end-to-end, 5) roll out to the rest, 6) delete tls-transport.ts, 7) ship as agent-comms-v2.
Parent: #45
Blocked by: ExaDev/wire-mesh#45 (P1 prerequisites), P0 above
WireMeshTransport implements MeshTransport, carrying the existing MeshMessage union as an opaque payload in a namespaced domain (no spec change needed). identity-store.ts persists an IdentityPort. One shared factory replaces the four-line substrate-coupling block in six bridges. The whole existing test suite (state-sync-convergence.test.ts, downtime-replay.test.ts — both transport-free by design) stays valid as the oracle through this phase; if it can't pass unmodified, something about this substrate swap changed a property it shouldn't have.
Design complete:
write-the-cddl-spec-calm-pascal-agent-p2-substrate-swap.md.Correction to the parent plan surfaced by the design: wire-mesh#50 (createTlsTransport) is a hard blocker for this phase, not parallel work -- agent-comms' current TlsTransport does real mutual-TLS cert-fingerprint peer authentication; wire-mesh's only transport today is plaintext TCP with identity resolved from unauthenticated gossip. Shipping P2 on that substrate would silently downgrade a real security guarantee inside a phase whose whole premise is "semantics unchanged". Sequencing: wire-mesh#50 lands first (createTlsTransport + an additive Connection.peerDeviceId/unref port extension), then WireMeshTransport is built against it.
Sequencing plan (each its own PR, oracle tests green throughout): 1) wire-mesh#50, 2) agent-comms identity swap (additive, TlsTransport keeps working), 3) WireMeshTransport standalone behind a flag with its own parity test suite, 4) cut one bridge (mcp) over end-to-end, 5) roll out to the rest, 6) delete tls-transport.ts, 7) ship as agent-comms-v2.