From 85c0a3e567bf1059a1a14aa4da5b7b26deb3b430 Mon Sep 17 00:00:00 2001 From: jochen Date: Sun, 27 Sep 2026 16:02:17 +0200 Subject: [PATCH] 4.2 done: a build is work submitted to a role, on both buses Both sides behind a seam, one implementation per bus, and the outcome is the role's own event so one publish reaches the asker, the controller and the catalogue. Checked against a running server, including the part the decision rests on: a third party hears the same outcome the asker does. --- 03-DESIGN/01-to-be/28-building-the-bus.md | 21 +++++++++++++++++---- 1 file changed, 17 insertions(+), 4 deletions(-) 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 a56a9a9..d01b66e 100644 --- a/03-DESIGN/01-to-be/28-building-the-bus.md +++ b/03-DESIGN/01-to-be/28-building-the-bus.md @@ -517,10 +517,23 @@ it, and the beds that need a mesh living on NATS can finally run. happens, and every claim above has a unit test or a check against a running server behind it. What none of them can stand in for is a mesh raising itself, which is what this bed is — so this is where the code stops and the lab starts -- [ ] 4.2 a build source's change reaches the builder over the bus, and the build that follows is - the one the change asked for — **unblocked**: - [issue 127](../../04-ISSUES/127-a-module-event-derives-a-subject-nothing-publishes/00-report.md) - is resolved, so an emitter and a consumer of the same event now land on the same subject +- [x] 4.2 a build source's change reaches the builder over the bus, and the build that follows is + the one the change asked for — **a build is work submitted to a role now** + ([ADR 0121](../../02-DECISIONS/0121-a-seat-carries-the-protocol-of-its-role.md)). Both sides + are behind a seam with an implementation per bus, and on the bus being built one publish does + what two did: the outcome is the role's own event, so the asker matches it by the id its + request carried, the controller records it and the catalogue places it in the graph. A build + machine needs a reply queue for nothing and a grant over nobody's inbox. + + Checked against a running server: the round trip; a third party on the role's event hearing + the same outcome the asker did, which is what the decision rests on; work leaving the queue + once settled, so no second machine repeats it; work submitted with no machine holding the role + **waiting rather than failing**, and being done when one arrives; and work a machine handed + back coming round again. + + The outcome carries the module name, because only the manifest says what was built and one + message now has three readers. A failed build names none: it produced no module version, and + the catalogue would otherwise place something that was never made. - [ ] 4.3 an installation completes over the bus, with the same outcome as the path it replaces — **unblocked, same** - [~] 4.4 a person's client — **the account is done**: a person is not a module and holds no