Accept ADR 0282: the operator decided the delivery budgets on 2026-10-10
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

To-be 47 lists the record among its decisions, ADR 0236 and ADR 0276 say
where their mechanism moves, and the glossary drops 'proposed'.
This commit is contained in:
jochen
2026-10-10 19:57:07 +02:00
parent 8b6c306cfd
commit 0a6172640c
5 changed files with 21 additions and 7 deletions
+2 -2
View File
@@ -368,13 +368,13 @@ planner, the walk). **Downstream of** Module, Core, Health and repair and Data.
back, no condition raised since the send (ADR 0236 §2). Not *the gate* bare (see [Homonyms](#homonyms)).
- **core module** and **leaf module** — a core module is one on the controller's own path (the controller,
the node-engine, the tool runner, the bus, mesh-delivery) or the mesh's resolver, whose judgement protects
the mesh's ability to reach a node at all; a leaf module is every other module. Proposed by
the mesh's ability to reach a node at all; a leaf module is every other module. Decided by
[ADR 0282](../02-DECISIONS/0282-a-fix-to-a-leaf-module-runs-healthy-on-every-node-within-five-minutes-of-its-merge-and-a-core-module-within-ten.md).
Not a *core component* (ADR 0236's controller, node-engine, tool runner and bus, each with a health probe):
the core modules add mesh-delivery and the resolver.
- **delivery time** — from a delivery's merge to every node of its deploy plan that is heard from running its
modules' builds and reporting them healthy. Its **delivery budget** is what it is held to: five minutes for
a leaf module, ten for a core module (proposed by ADR 0282). Not the walk's time, which ends at the send.
a leaf module, ten for a core module (ADR 0282). Not the walk's time, which ends at the send.
- **release** — a person's word that a held delivery goes on; the verb `mesh-delivery.release`. Used in
this sense only.
- **rollback** — putting a node back on the build it ran before, by something other than the build being
@@ -111,6 +111,13 @@ gated: it is the module saying it must change everywhere at once.
> passes, so that when the send fails, a module healthy on its own for the passes asked keeps a pass and is
> not put back (issue 318).
> **The mechanism changed — 2026-10-10, by [ADR 0282](0282-a-fix-to-a-leaf-module-runs-healthy-on-every-node-within-five-minutes-of-its-merge-and-a-core-module-within-ten.md).**
> What stands: a core module's three judgings, their spacing and bound, and every other point above. What
> moved: a leaf module (every module off the controller's own path and the mesh's resolver) is judged on two
> readings when it has a long-running resource and on one when its every resource is a tools bundle, and one
> tier's first machines are judged at once. Until ADR 0282's third slice is built, three judgings hold for every
> module.
**3. A build that fails its gate is put back there, once, and never sent again on its own.** The plan
stops; the build is marked failed at its gate; the module's registered build goes back to the build the
first machine ran before — the newest successful build of that commit still kept ([ADR 0189](0189-the-store-keeps-what-the-records-name.md)
@@ -135,6 +135,13 @@ either, because **delivery group** already names deliveries that share a head br
are replaced by it. A merge heard after a later merge of its repository and branch was put in a walk is
answered by that walk: by the batch still assembling, by the open walk, or, when that walk was delivered,
it ends `covered` at once.
> **The mechanism changed — 2026-10-10, by [ADR 0282](0282-a-fix-to-a-leaf-module-runs-healthy-on-every-node-within-five-minutes-of-its-merge-and-a-core-module-within-ten.md).**
> What stands: the window for a merge whose delivery group has a member not yet merged or that arrives while a
> batch assembles (decision 1), two walks of one repository never at once, and no walk superseded once it
> started. What moved: a lone merge is cut at once without the window, and walks that share no repository,
> module or module-graph edge run at once, one first-node judgement per machine at a time. Until ADR 0282's
> second and fourth slices are built, the window for every merge and one walk at a time hold.
5. **The order of a delivery group holds inside a walk** (ADR 0249 unchanged). The pairs its order rules
give (declared, built by, version skew, engine before controller, each with the rule that won) become
edges of the walk's tiers beside the module graph: the modules of a member ordered after another are in
@@ -1,6 +1,6 @@
---
topic: the mesh
status: proposed
status: accepted
date: 2026-10-10
deciders: jochen
reconstructed: false
@@ -4,6 +4,7 @@ status: designed
code: []
updated: 2026-10-10
decisions:
- 02-DECISIONS/0282-a-fix-to-a-leaf-module-runs-healthy-on-every-node-within-five-minutes-of-its-merge-and-a-core-module-within-ten.md
- 02-DECISIONS/0276-merges-are-assembled-in-a-rolling-window-and-each-batch-is-delivered-by-one-walk-with-one-commit-per-repository.md
- 02-DECISIONS/0270-a-held-delivery-that-moves-nothing-or-that-a-later-delivered-merge-contains-ends-by-itself-and-a-hold-whose-reason-is-gone-lifts.md
- 02-DECISIONS/0250-a-merge-heard-only-from-the-buss-history-is-retired-and-owed-work-the-forge-cannot-do-ends.md
@@ -160,10 +161,9 @@ controller's `plan-moved` event, never inferred from time.
## The delivery budget
*Proposed 2026-10-10 by [ADR 0282](../../02-DECISIONS/0282-a-fix-to-a-leaf-module-runs-healthy-on-every-node-within-five-minutes-of-its-merge-and-a-core-module-within-ten.md),
which awaits the operator's decision. Nothing in this section is in force until that record is accepted; then it
joins this document's decisions and replaces, where they differ, the window for every merge and the one walk at a
time above.*
*Decided 2026-10-10 by [ADR 0282](../../02-DECISIONS/0282-a-fix-to-a-leaf-module-runs-healthy-on-every-node-within-five-minutes-of-its-merge-and-a-core-module-within-ten.md).
Where it differs, this section replaces the window for every merge and the one walk at a time above, slice by
slice as each slice below is built; until a slice is built, the text above is what runs.*
**The target.** A delivery's **delivery time** runs from its merge to every node of its deploy plan that is heard
from running its modules' builds and reporting them healthy. A **leaf module's** delivery budget is five minutes;