Design 47 milestone 4 (issue 980, ADR 0404), one delivery group with mesh-controller's feat/backup-before-send.
Issue 1067 (restic). A backup asked for now that cannot start (the night's lock held, the repository unopenable, nothing declared) is recorded as that module's last night with its reason, so the controller reads the backup's own words instead of silence.
Issue 1068 (mesh-delivery). A new observed row backup failed takes a delivering delivery to held while nothing of its plan was sent, reading the plan's backups record; the held reason names module, machine and words, and the hold does not lift by itself. release of such a hold calls the controller's delivery-backups-again and goes to delivering; a refused re-ask leaves it held. invokes grants the verb.
Integration test in bus_test.go: a plan-moved carrying a failed backup holds the delivery over a real bus; it runs here in the merge check. Its first check failed on the test's own ordering (a merge handled before the passing check, build-1792270513945903864); c898a93 publishes each event only after the module took the one before.
4d03755 merges main (#354) into the branch: the trunk moved at 23:34 and no check was asked again (issue 1047); the patch against main is unchanged.
Design 47 milestone 4 (issue 980, ADR 0404), one delivery group with mesh-controller's `feat/backup-before-send`.
- **Issue 1067 (restic).** A backup asked for now that cannot start (the night's lock held, the repository unopenable, nothing declared) is recorded as that module's last night with its reason, so the controller reads the backup's own words instead of silence.
- **Issue 1068 (mesh-delivery).** A new observed row `backup failed` takes a delivering delivery to held while nothing of its plan was sent, reading the plan's `backups` record; the held reason names module, machine and words, and the hold does not lift by itself. `release` of such a hold calls the controller's `delivery-backups-again` and goes to delivering; a refused re-ask leaves it held. `invokes` grants the verb.
- Integration test in bus_test.go: a plan-moved carrying a failed backup holds the delivery over a real bus; it runs here in the merge check. Its first check failed on the test's own ordering (a merge handled before the passing check, build-1792270513945903864); c898a93 publishes each event only after the module took the one before.
- 4d03755 merges main (#354) into the branch: the trunk moved at 23:34 and no check was asked again (issue 1047); the patch against main is unchanged.
Reviewed-by: review@shanks at 4d03755c6598b94697500d553b072aa54e98a711
Deliverynovox/mesh-catalog@4d03755c6598 — delivered since 2026-10-17T22:11:35Z
Delivery plan — builds mesh-delivery, restic → ace, g14, novox, shanks; no bus step
tier 0: mesh-delivery, restic
ace: receives restic
g14: receives restic
novox: receives mesh-delivery, restic
shanks: receives restic
restic keeps data (ADR 0233): what it holds is backed up before it moves
grants step: if this changes what the bus's user list says (a new tool, subject or user), novox is sent that list alone, every build there kept, before restic is judged on its first machine
composed together: pass — every machine composes with the change as it did without (4 of 4 compose)
Machines
mesh-delivery on every machine running it: sent
restic on every machine running it: sent
Transitions
2026-10-17 21:44 (new) → proposed (announced): novox/mesh-catalog#353's head announced
2026-10-17 21:45 proposed → checked (checked): a verdict names this commit and the trunk's head as its trunk commit
2026-10-17 21:45 checked → ready (accepted): the gate passed or warned, and the repository's own check did not fail
2026-10-17 22:08 ready → published (merged): on the trunk its modules follow: merged there, and its walk opened — or nothing for a walk to move
2026-10-17 22:08 published → delivering (go): its walk started: let go by this owner in its group's order, by a person, or on the controller's own path — not a failed walk that carried a later commit for it, after which it waits for a walk of its own commit
2026-10-17 22:11 delivering → delivered (done): its walk is done, carrying its own commit: every machine of its deploy plan passed, or was left as its policy says
The commit's note under refs/notes/mesh-plan keeps every transition: git log --notes=mesh-plan.
<!-- mesh-delivery:view -->
**Delivery** `novox/mesh-catalog@4d03755c6598` — **delivered** since 2026-10-17T22:11:35Z
**Delivery plan** — builds mesh-delivery, restic → ace, g14, novox, shanks; no bus step
- tier 0: mesh-delivery, restic
- ace: receives restic
- g14: receives restic
- novox: receives mesh-delivery, restic
- shanks: receives restic
- restic keeps data (ADR 0233): what it holds is backed up before it moves
- grants step: if this changes what the bus's user list says (a new tool, subject or user), novox is sent that list alone, every build there kept, before restic is judged on its first machine
**Group** `feat/backup-before-send`: novox/mesh-catalog@4d03755c6598, novox/mesh-controller@91a7c1eaffd2
- composed together: pass — every machine composes with the change as it did without (4 of 4 compose)
**Machines**
- mesh-delivery on every machine running it: sent
- restic on every machine running it: sent
**Transitions**
- 2026-10-17 21:44 (new) → proposed (announced): novox/mesh-catalog#353's head announced
- 2026-10-17 21:45 proposed → checked (checked): a verdict names this commit and the trunk's head as its trunk commit
- 2026-10-17 21:45 checked → ready (accepted): the gate passed or warned, and the repository's own check did not fail
- 2026-10-17 22:08 ready → published (merged): on the trunk its modules follow: merged there, and its walk opened — or nothing for a walk to move
- 2026-10-17 22:08 published → delivering (go): its walk started: let go by this owner in its group's order, by a person, or on the controller's own path — not a failed walk that carried a later commit for it, after which it waits for a walk of its own commit
- 2026-10-17 22:11 delivering → delivered (done): its walk is done, carrying its own commit: every machine of its deploy plan passed, or was left as its policy says
The commit's note under `refs/notes/mesh-plan` keeps every transition: `git log --notes=mesh-plan`.
mesh/repo-check head c898a937a1e3 merged into trunk f076cadecedc beside mesh-controller#375@a39d6ce7 — pass: its merge-check.sh passed, each part in its to…
mesh/repo-check head 4d03755c6598 merged into trunk ad80048c22d8 beside mesh-controller#375@91a7c1ea — pass: its merge-check.sh passed, each part in its to…
mesh/merge-gate head 4d03755c6598 merged into trunk ad80048c22d8 — pass: group feat/backup-before-send composed: every machine composes with the change as …
mesh-delivery: the operator's Approve of this pull request's merge into main is ended: its head 91a7c1eaffd2 is no longer the pull request's head, or the pull request closed. Nothing is merged on it. The operator is asked again once the checks pass at the new head.
mesh-delivery: the operator's Approve of this pull request's merge into main is ended: its head 91a7c1eaffd2 is no longer the pull request's head, or the pull request closed. Nothing is merged on it. The operator is asked again once the checks pass at the new head.
Blocking a user prevents them from interacting with repositories, such as opening or commenting on pull requests or issues. Learn more about blocking a user.
Design 47 milestone 4 (issue 980, ADR 0404), one delivery group with mesh-controller's
feat/backup-before-send.backup failedtakes a delivering delivery to held while nothing of its plan was sent, reading the plan'sbackupsrecord; the held reason names module, machine and words, and the hold does not lift by itself.releaseof such a hold calls the controller'sdelivery-backups-againand goes to delivering; a refused re-ask leaves it held.invokesgrants the verb.c898a93publishes each event only after the module took the one before.4d03755merges main (#354) into the branch: the trunk moved at 23:34 and no check was asked again (issue 1047); the patch against main is unchanged.Reviewed-by: review@shanks at
4d03755c65Delivery
novox/mesh-catalog@4d03755c6598— delivered since 2026-10-17T22:11:35ZDelivery plan — builds mesh-delivery, restic → ace, g14, novox, shanks; no bus step
Group
feat/backup-before-send: novox/mesh-catalog@4d03755c65, novox/mesh-controller@91a7c1eaffMachines
Transitions
The commit's note under
refs/notes/mesh-plankeeps every transition:git log --notes=mesh-plan.mesh-delivery: the operator's Approve of this pull request's merge into main is ended: its head 91a7c1eaffd2 is no longer the pull request's head, or the pull request closed. Nothing is merged on it. The operator is asked again once the checks pass at the new head.