diff --git a/03-DESIGN/01-to-be/28-building-the-bus.md b/03-DESIGN/01-to-be/28-building-the-bus.md index ba1a84e..53ab087 100644 --- a/03-DESIGN/01-to-be/28-building-the-bus.md +++ b/03-DESIGN/01-to-be/28-building-the-bus.md @@ -252,7 +252,17 @@ pays for itself furthest away. The seam turned out to be eight call sites — the same smallness that said this bus could be replaced at all. Still on `*amqp.Channel`: `RequestBuild` and `Ask`, which carry reply-queue machinery, and the whole consume side (the control loop, enrolment, serving). -- [ ] 3.5 the host's link on NATS — mirroring, still importing nothing +- [~] 3.5 the host's link on NATS — **the outbound half is through a seam**, mirroring the + controller's and still importing nothing of the mesh's own (ADR 0005): the host's own + interface over its own libraries, agreeing with the controller only because a fixture holds + both to one envelope. A report goes through JetStream because it is the message the + store-window guarantee is about; a heartbeat stays on core, because a heartbeat in a stream + is the mesh's least valuable message competing for retention with its most valuable. + + Still on the old client: dialling, the declaration consumer, and enrolment. The host's + **"newest wins" window narrows at the rollout rather than disappearing** — last-per-subject + makes catch-up the stream's and sequence orders definitively, but three pushes to a + connected node are still three deliveries. Recorded in the code where it is read. - [x] 3.6 the tool runtime's client on NATS, behind the unchanged sdk contract — round-tripped against a real server: a tool answered across two connections, a throwing handler reaching the caller as an error rather than a timeout, an event delivered once with its key, body,