From edbb53bb7834ff0d4be14a8a9bf8dc141c24d22c Mon Sep 17 00:00:00 2001 From: jochen Date: Wed, 28 Oct 2026 09:40:05 +0100 Subject: [PATCH] Design 47: milestones L4 to L7 give the controller's other jobs their homes before L3's lease write MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit The operator said yes on 2026-10-28 to making research 072's proposed homes milestones after L3, so their decision records and design can start beside L3. ADR 0547 §11 makes the lease write wait for every one of them; issues 1952 to 1955 carry each, a decision record first. --- .../47-delivery-from-commit-to-delivered.md | 14 ++++++++++++-- 1 file changed, 12 insertions(+), 2 deletions(-) diff --git a/03-DESIGN/01-to-be/47-delivery-from-commit-to-delivered.md b/03-DESIGN/01-to-be/47-delivery-from-commit-to-delivered.md index 43d1de9d..8771b9cf 100644 --- a/03-DESIGN/01-to-be/47-delivery-from-commit-to-delivered.md +++ b/03-DESIGN/01-to-be/47-delivery-from-commit-to-delivered.md @@ -2,7 +2,7 @@ layer: to-be status: in-progress code: [mesh-controller, mesh-catalog modules/mesh-delivery-gate, mesh-delivery, mesh-host, mesh-sdk, mesh-vault, hq 00-META/checks] -updated: 2026-10-27 +updated: 2026-10-28 decisions: - "ADR 0559" - "ADR 0555" @@ -1217,6 +1217,10 @@ release reports the controller's code lines against research 063's baseline (acc | L2 | Nodes compose: each node agent composes its own modules, and no node applies a composition made elsewhere but the bus's user list (ADR 0547 §11) | — | the node-engine (`mesh-host`), mesh-sdk, mesh-controller | 1126 | | L3 | Nothing is left with the controller: the vault mints bus accounts and signs, the grants part writes grants, the try is the checker's own verb, placement is read from the catalogue alone, and the lease passes to a holder that is no controller (ADR 0547 §11, ADR 0549 §5, §6, ADR 0550 §2); the rest of the controller's code lines is the issue of L2 | — | mesh-controller, mesh-catalog (the vault, the grants part), mesh-delivery | 774 | | M1 | A milestone is a record of the issue tracker: each row of a design's milestone table is a milestone record its issues are linked to by `issue-tracker.link`, an issue to at most one, and pull requests and commits to issues the same way; the knowledge base's `progress` reads the milestones from the tracker, not from this table (ADR 0493 §1 to §4) | — (ADR 0493 §13 in part) | hq, mesh-catalog (mesh-issues, mesh-knowledge) | 1781 | +| L4 | Health leaves the controller: the seat `mesh-conditions` keeps every condition and its looks in its own bucket and says `condition.raised` and `condition.cleared`; the watchman judges the signals' watchdogs; the seat `mesh-self-check` runs `doctor` and its probes and says `checked`; the seat `mesh-healers` keeps the healers, their budgets and drills and says `healed-attempt`; `status` is the view's derivation and `dead-letters` a read of the watchman; each a part with its own bus account, and the controller's health verbs answer that they moved (a decision record first, under research 072; ADR 0231, ADR 0547 §11) | — | mesh-sdk, mesh-controller, mesh-catalog (the health parts), mesh-delivery (watchman, view) | 1952 | +| L5 | Control records leave the controller: mesh-config keeps each module's declared config and the predefined keys in its own buckets and hears a pull request's config declarations from the indexer; each node agent writes its node's declared packages beside its compositions; the upgrade policy and the bus step are answered by their new owner; the hand-act log (`hand-act`, `hand-acts`, `warranted`) is a stream of a seat of its own; `settings`, `move-config` and `move-placement` go (a decision record first, under research 072; ADR 0348 §9, ADR 0502 §2, ADR 0539 §14, §15, ADR 0547 §11) | — | mesh-sdk, mesh-controller, mesh-catalog (mesh-config, pacman), mesh-delivery (indexer, assigner), the node-engine (`mesh-host`) | 1953 | +| L6 | Provisioning leaves the controller: each node agent writes each handed module's provisioning plan on its own have key, which the vault, the node's provisioner client and every provider read through mesh-sdk instead of the controller's assignments; providers retire and clean up the consumers no plan names by themselves; `rotate` and `issued` are answered by the vault alone (a decision record first for the plan's home; ADR 0349 §10, §12, ADR 0230, ADR 0547 §11) | — | mesh-sdk, the node-engine (`mesh-host`), mesh-tools (the tool runner's provisioner client), mesh-catalog (the vault, the provisioner client, postgres, keycloak, gitea, route-adapter), mesh-controller | 1954 | +| L7 | History and records leave the controller: builds, artifacts, durations and delivery history are read from the builder's keys and streams; the artifact store's sweep (`collect`, `held`, `mirrors`, `images`) is a seat's own; data readings are node-backup's own state; modules, seats and tools are read from the indexer, placement and the tool runner; no manifest but the controller's reads a controller bucket, so the lease write's check passes (a decision record first, under research 072; ADR 0189, ADR 0547 §11, ADR 0549 §6) | — | mesh-sdk, mesh-controller, mesh-delivery (builder, indexer, view), mesh-catalog (artifact-store-tools, the backup seat's holder, mounts, nfs-server, minio, mesh-watcher), mesh-tools (the tool runner) | 1955 | An issue is in one row only (ADR 0493 §2): where a row named an issue another row names too, the last row keeps it and the earlier row says so in words (the operator, 2026-10-26). Milestone M1 makes each row a record of the issue tracker @@ -1226,7 +1230,13 @@ reads them, and this table keeps its rows without the Issues column (the operato Milestones L1 to L3 are the three of "The controller leaves build and delivery" above (ADR 0547 §11), given rows on 2026-10-26 so that a reader of this table, the knowledge base's `progress` among them (issue 1947), sees the work that runs; 1945 is L1's and 1126 L2's only, as an issue belongs to at most one milestone (ADR 0493 §2); R6, delivered, -names the parts of 1945 it carried in words. Release 5 (the assigner's wants, compared only) is not a milestone of its own: ADR 0524 §1 folds it into R4g, whose row above holds +names the parts of 1945 it carried in words. Milestones L4 to L7 are the homes research 072 proposes for the controller's +other jobs, made milestones after L3 by the operator's yes on 2026-10-28, so their design can start beside L3's work: +L3's lease write waits until all four are delivered (ADR 0547 §11), while the rest of L3 is delivered before them with +its switches off. They are ordered health first, since every later part says its faults through the conditions; then the +control records, provisioning, and the history and records, whose last step is the check that no reader is left. Each +starts with its decision record (issues 1952 to 1955). Adoption's record is L3's (ADR 0561 §5), and the licences' move +into the vault is decided by ADR 0550 §3 under issue 1126. Release 5 (the assigner's wants, compared only) is not a milestone of its own: ADR 0524 §1 folds it into R4g, whose row above holds it. Release 6 is milestone R6, prepared on 2026-10-24 with ADR 0539. Its prepare step found six repositories where its row first named three: the gate's code is in mesh-catalog, mesh-sdk holds the composition's layout and the seat verb tables, and hq the design and the glossary.