ADRs 0184 and 0185: a service is still running a moment later; a control plane behind its row serves what it can; issue 201 half closed

This commit is contained in:
2026-10-02 18:16:24 +02:00
parent 7f72f3b79a
commit 329a24fdae
5 changed files with 182 additions and 1 deletions
@@ -3,7 +3,7 @@ status: open
opened: 2026-10-02
located-in:
- mesh-controller
fixed-by:
fixed-by: 02-DECISIONS/0185-a-control-plane-behind-its-seats-row-serves-what-it-can.md
amended-design:
---
@@ -56,3 +56,19 @@ one, wait for `node show` on the control node to report the new controller befor
- [ADR 0154](../../02-DECISIONS/0154-the-meshs-own-verbs-are-the-controller-seats-tools.md), [ADR 0162](../../02-DECISIONS/0162-a-merge-produces-a-tiered-plan-the-mesh-keeps.md)
- mesh-controller `cmd/mesh-controller/seatverbs.go` (`seatToolHandlers`, the start-up check), `cmd/mesh-controller/push.go`
## Half of it is closed, 2026-10-02
[ADR 0185](../../02-DECISIONS/0185-a-control-plane-behind-its-seats-row-serves-what-it-can.md) takes
the outage out of it: a control plane behind its seat's row now serves every verb it can run, says
which it cannot, and answers the reason when one of those is called. The same race today would cost
the verbs the newer build added, for as long as the older binary is in place, and the ordinary
"this machine is behind" machinery would put the newer one back without a hand.
**The race itself is still open**, and this report stays open for it. A push sends the declaration
it composed; two waves overlapping on one machine can leave the later send carrying the earlier
content, and the declaration's sequence orders the sends rather than what is in them
(the numbering of [issue 107](../107-a-declaration-carries-no-order/00-report.md) orders arrival, not freshness). The
smaller of the two fixes the report first suggested — a push never sending a control plane a digest
older than the one it is running — is still the one to build, and is now a correctness nicety rather
than the difference between a working mesh and a dead one.