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.
This commit is contained in:
2026-09-27 16:02:17 +02:00
parent c8f430290e
commit 85c0a3e567
+17 -4
View File
@@ -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. 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 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 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 - [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 — **unblocked**: the one the change asked for — **a build is work submitted to a role now**
[issue 127](../../04-ISSUES/127-a-module-event-derives-a-subject-nothing-publishes/00-report.md) ([ADR 0121](../../02-DECISIONS/0121-a-seat-carries-the-protocol-of-its-role.md)). Both sides
is resolved, so an emitter and a consumer of the same event now land on the same subject 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 — - [ ] 4.3 an installation completes over the bus, with the same outcome as the path it replaces —
**unblocked, same** **unblocked, same**
- [~] 4.4 a person's client — **the account is done**: a person is not a module and holds no - [~] 4.4 a person's client — **the account is done**: a person is not a module and holds no