Building the bus: the decisions the work needed, and what it taught back #150

Merged
jschoubben merged 45 commits from feat/nats-genesis into main 2026-09-27 17:06:40 +00:00
Showing only changes of commit 672c994afa - Show all commits
+10 -1
View File
@@ -242,7 +242,16 @@ pays for itself furthest away.
`x-event-id`. Claims checked against a running server are marked *verified* in the text, so
a reader can tell what was measured from what was reasoned. One limitation lifts with the
transport: a module may now call another's tool, which issue 049 recorded it could not.
- [ ] 3.4 the controller's link on NATS
- [~] 3.4 the controller's link on NATS — **the seam exists and the outbound half is through
it.** `Bus` is stated in the mesh's words (publish an event, declare to a node) rather than
a transport's, with an AMQP and a NATS implementation, both shipping: steps 1 to 4 leave
every node on AMQP, and both shipping is what lets one conformance fixture hold them to the
same envelope. The NATS one is checked against a real server, reading back from the stream
rather than from the code that wrote it.
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
- [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