Research 044: the operator's direction, a mesh-monitor module, is the leading hypothesis
mesh/merge-gate pass: the change touches no module of the mesh's graph
mesh/repo-check pass: its merge-check.sh passed
mesh/delivery delivered

This commit is contained in:
jochen
2026-10-10 19:52:05 +02:00
parent 0cabe5d391
commit f2250b4471
@@ -50,6 +50,29 @@ Issue 382 in the issue tracker (a small fix takes 45 minutes to reach a node) me
behind two other walks, and each tier costs about 4 to 5 minutes. A change to a part that does not
need to be in the controller still pays that price, and still holds up every other walk while it does.
## The operator's direction (2026-10-10)
The operator holds that the controller should not be the mesh's monitor, and proposes a module of its
own for it: a **mesh-monitor** module claiming a seat for watching the mesh. This is the effort's leading
hypothesis, to be tested by the questions below rather than assumed by them. What it would hold:
- the probes (resolvers answering, version drift, the machine's network checks);
- the bus's advisories, read live, including JetStream's API errors with the user, subject and code that
caused each (issue 328 waits for this module rather than adding a reader to the controller);
- conditions: raised, cleared, silenced and handed to the operator's channels;
- the hand-act log and its *healer wanted* counts;
- what a bundle-only module cannot raise today
([ADR 0240](../../02-DECISIONS/0240-a-module-says-how-it-is-healthy-and-the-node-engine-judges-it.md) rule 8), such as the
issue tracker's fix stuck after its merge
([ADR 0281](../../02-DECISIONS/0281-an-issue-knows-whether-its-fix-is-delivered-and-a-fix-stuck-after-its-merge-is-loud.md)): a module reports it on
the bus and the monitor raises it.
What it would gain: a change to watching no longer walks the controller's tier, and the mesh keeps
watching while the controller is down. What it must answer: who notices when the monitor itself is
down (the controller's liveness check of every module is the candidate, the one piece of watching the
controller keeps), and how conditions move from the controller's store to the monitor's without a gap
(question 5).
## The questions
1. **Where the change goes, by domain.** Group the last month's controller merges by the domains of