From 7c8e1f521db9f21c7be5432a255b45ed0e87f78f Mon Sep 17 00:00:00 2001 From: jochen Date: Wed, 21 Oct 2026 12:53:37 +0200 Subject: [PATCH] Add milestone F2b to design 60, and write into playbook 07's prepare step that every strict reader of manifests ships a new word first --- 00-META/process/07-feature-branches.md | 8 +++++++- 03-DESIGN/01-to-be/60-the-brother-module.md | 6 ++++-- 2 files changed, 11 insertions(+), 3 deletions(-) diff --git a/00-META/process/07-feature-branches.md b/00-META/process/07-feature-branches.md index 7e90f89b..9214cffc 100644 --- a/00-META/process/07-feature-branches.md +++ b/00-META/process/07-feature-branches.md @@ -127,7 +127,13 @@ never into the running one, unless it blocks the running one. since the node-engine's decoder refuses an unknown key; the first module of a repository the catalogue has never built registers only by the route the controller allows for it; and a part that needs something the bus or a manifest cannot yet give (an event only a system account hears, a bucket whose keys expire) needs its decision - first. Each order found is said to the operator with the cut it asks for, never built around. + first. **A new manifest word is read by more than the controller**: every program that parses a manifest strictly + (with the SDK's `ParseManifest`) refuses a key its pinned SDK does not know, so the prepare step lists them by search + (`ParseManifest` across every repository, with the SDK commit each pins) and each one older than the word ships + first (2026-10-21: the milestones of design 60 counted only the controller, and the prepare step of the catalogue's + milestone found the build module mesh-build-go and the delivery's indexer reading manifests strictly with an SDK + from before the word, which became a release of its own). Each order found is said to the operator with the cut + it asks for, never built around. 7. **Write fixtures from the shape the other side writes, never from memory** (2026-10-18: a watchman's tests mirrored a build key the controller never writes, and every test passed): copy a value from the writer's code or from the live bus, and name where it came from. diff --git a/03-DESIGN/01-to-be/60-the-brother-module.md b/03-DESIGN/01-to-be/60-the-brother-module.md index 4c41bd04..bda8c970 100644 --- a/03-DESIGN/01-to-be/60-the-brother-module.md +++ b/03-DESIGN/01-to-be/60-the-brother-module.md @@ -201,12 +201,14 @@ missing page and expects the error. The milestones build ADR 0468, feature `files-through-the-store`. They are cut by release order: the catalogue's merge check reads manifests with the controller the mesh runs, and the controller vendors the SDK, so a new -manifest field ships SDK first, then the controller, then the catalogue (playbook 07, *a new manifest word*). +manifest field ships SDK first, then the controller and every other strict reader of manifests (the build modules, +the delivery's indexer), then the catalogue (playbook 07, *a new manifest word*). | # | Outcome | Proves | Repository | Issues | |---|---|---|---|---| | F1 | A manifest may name who else may read or write its bucket, and every module has one helper that signs and streams a store link. Usable only by F2 and F3. | ADR 0468 §3, §8 (the field) | mesh-sdk | 1591 (`shares` on a requires of s3-bucket), 1592 (link signing and streaming) | | F2 | The controller accepts `shares` and writes it into the consumer's grant. Usable only by F3. | ADR 0468 §8 | mesh-controller | 1593 (take the SDK); depends on F1 | -| F3 | The operator prints a stored scan, a file on any machine (a .docx on a laptop among them) or a web link in one call, and scans land in the scan folder from the store; no document these verbs move crosses the bus (the parts verbs stay until issue 1569). Depends on F2. | the acceptance above; ADR 0468 §1–§9 | mesh-catalog | minio: 1594 (a signing key per bucket), 1516 (`object-store.link`, retiring the root-signed link); mesh-files: 1597 (upload, download); only-office: 1595 (`document-converter.convert`), 1596 (the converter process); brother: 1598 (print by key or a machine's file), 1599 (print a web link), 1600 (convert before printing), 1601 (the scan folder from the store) | +| F2b | The build modules read a manifest that names `shares`, so a module carrying it builds. Usable only by F3. | ADR 0468 §8 | mesh-catalog | 1657 (mesh-build-go and mesh-build-node take the SDK); depends on F1; the delivery's indexer takes the same SDK in design 47's own work | +| F3 | The operator prints a stored scan, a file on any machine (a .docx on a laptop among them) or a web link in one call, and scans land in the scan folder from the store; no document these verbs move crosses the bus (the parts verbs stay until issue 1569). Depends on F2 and F2b. | the acceptance above; ADR 0468 §1–§9 | mesh-catalog | minio: 1594 (a signing key per bucket), 1516 (`object-store.link`, retiring the root-signed link); mesh-files: 1597 (upload, download); only-office: 1595 (`document-converter.convert`), 1596 (the converter process); brother: 1598 (print by key or a machine's file), 1599 (print a web link), 1600 (convert before printing), 1601 (the scan folder from the store) | Order inside F3: minio, then mesh-files and only-office, then brother; one pull request of `mesh-catalog`.