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 53092020eb - Show all commits
+13 -2
View File
@@ -259,8 +259,19 @@ pays for itself furthest away.
of the declaration it is about, so supersession becomes a check rather than something the
controller remembers. Pure and tested without a bus, a store or a clock.
Still outstanding: wiring that decision into the loop, `RequestBuild` and `Ask`, enrolment,
and serving.
**Asking a tool is through the seam and loses two problems**: there is no reply queue to
declare and no correlation to check, because each account has one inbox prefix and an
answer cannot reach the wrong asker — which settles a cost the build code records having
paid, where every asker saw every result. And a tool nobody serves says so at once instead
of after the whole wait, which is the difference between "that module is down" and "that
tool is slow".
**A build is a different shape, not the same one.** It takes minutes, so it is work
submitted to a queue with the outcome returning to a reply subject the request carries —
the pattern design 25 §2 already sets for anything crossing a stream. It touches the
builder as well, so it travels with that conversion in step 4.
Still outstanding: wiring the window decision into the loop, enrolment, and serving.
- [~] 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