Issue 1086 (critical): the first delivery after milestone 4 of design 47 (mesh-catalog #356, 2026-10-18 01:44) sent gitea to novox without the backup ADR 0404 requires, and said nothing.
Cause: a plan cut from a batch asks its first tier itself (batches.go planBatch, askTier), and advanceOnce takes the backups only while the first tier is not yet asked (release_plan.go:810-813), so no merge's plan ever took its backups. Milestone 4's integration test saved its plan by hand and never cut one.
Fix: the cut runs backupsFirst before its askTier (askFirstTierAtCut); a plan whose backups wait or are held is saved with its first tier unasked and advanced by the open-plans loop; facts that cannot be worked out leave a 'backups:' note and are tried again. A machine with no backup holder stays as ADR 0404 §2 says (recorded, said, goes on).
Tests: unit tests for the cut (each failed on main 47f9290b); integration test TestAPlanCutFromAMergeOfABackedUpModuleAsksItsBackupAndNotItsTierUntilItIsDone cuts a plan through cutBatch and asserts no tier is asked before the backup is done, then one ask (compiled only; runs in the merge gate). Reviewed in 2 rounds.
Issue 1086 (critical): the first delivery after milestone 4 of design 47 (mesh-catalog #356, 2026-10-18 01:44) sent gitea to novox without the backup ADR 0404 requires, and said nothing.
Cause: a plan cut from a batch asks its first tier itself (batches.go planBatch, askTier), and advanceOnce takes the backups only while the first tier is not yet asked (release_plan.go:810-813), so no merge's plan ever took its backups. Milestone 4's integration test saved its plan by hand and never cut one.
Fix: the cut runs backupsFirst before its askTier (askFirstTierAtCut); a plan whose backups wait or are held is saved with its first tier unasked and advanced by the open-plans loop; facts that cannot be worked out leave a 'backups:' note and are tried again. A machine with no backup holder stays as ADR 0404 §2 says (recorded, said, goes on).
Tests: unit tests for the cut (each failed on main 47f9290b); integration test TestAPlanCutFromAMergeOfABackedUpModuleAsksItsBackupAndNotItsTierUntilItIsDone cuts a plan through cutBatch and asserts no tier is asked before the backup is done, then one ask (compiled only; runs in the merge gate). Reviewed in 2 rounds.
Reviewed-by: reviewer-1086@shanks at b6f8aef4d4f11b86ea82cbee92149c688385b906
The cut asked tier 0 itself, so the step before a first tier never ran and gitea was sent to novox with no restore point. A machine with no backup holder is now a failed backup that holds the plan.
mesh/merge-gate head b6f8aef4d4f1 merged into trunk 47f9290b37aa — pass: builds mesh-controller → novox; no bus step; every machine composes with the chang…
Deliverynovox/mesh-controller@b6f8aef4d4f1 — delivered since 2026-10-18T00:17:08Z
Delivery plan — builds mesh-controller → novox; no bus step
tier 0: mesh-controller
novox: receives mesh-controller
Machines
mesh-controller on every machine running it: sent
Transitions
2026-10-17 23:58 (new) → proposed (announced): novox/mesh-controller#377's head announced
2026-10-18 00:05 proposed → checked (checked): a verdict names this commit and the trunk's head as its trunk commit
2026-10-18 00:05 checked → ready (accepted): the gate passed or warned, and the repository's own check did not fail
2026-10-18 00:15 ready → published (merged): on the trunk its modules follow: merged there, and its walk opened — or nothing for a walk to move
2026-10-18 00:15 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-18 00:17 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-controller@b6f8aef4d4f1` — **delivered** since 2026-10-18T00:17:08Z
**Delivery plan** — builds mesh-controller → novox; no bus step
- tier 0: mesh-controller
- novox: receives mesh-controller
**Machines**
- mesh-controller on every machine running it: sent
**Transitions**
- 2026-10-17 23:58 (new) → proposed (announced): novox/mesh-controller#377's head announced
- 2026-10-18 00:05 proposed → checked (checked): a verdict names this commit and the trunk's head as its trunk commit
- 2026-10-18 00:05 checked → ready (accepted): the gate passed or warned, and the repository's own check did not fail
- 2026-10-18 00:15 ready → published (merged): on the trunk its modules follow: merged there, and its walk opened — or nothing for a walk to move
- 2026-10-18 00:15 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-18 00:17 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`.
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.
Issue 1086 (critical): the first delivery after milestone 4 of design 47 (mesh-catalog #356, 2026-10-18 01:44) sent gitea to novox without the backup ADR 0404 requires, and said nothing.
Cause: a plan cut from a batch asks its first tier itself (batches.go planBatch, askTier), and advanceOnce takes the backups only while the first tier is not yet asked (release_plan.go:810-813), so no merge's plan ever took its backups. Milestone 4's integration test saved its plan by hand and never cut one.
Fix: the cut runs backupsFirst before its askTier (askFirstTierAtCut); a plan whose backups wait or are held is saved with its first tier unasked and advanced by the open-plans loop; facts that cannot be worked out leave a 'backups:' note and are tried again. A machine with no backup holder stays as ADR 0404 §2 says (recorded, said, goes on).
Tests: unit tests for the cut (each failed on main
47f9290b); integration test TestAPlanCutFromAMergeOfABackedUpModuleAsksItsBackupAndNotItsTierUntilItIsDone cuts a plan through cutBatch and asserts no tier is asked before the backup is done, then one ask (compiled only; runs in the merge gate). Reviewed in 2 rounds.Reviewed-by: reviewer-1086@shanks at
b6f8aef4d4Delivery
novox/mesh-controller@b6f8aef4d4f1— delivered since 2026-10-18T00:17:08ZDelivery plan — builds mesh-controller → novox; no bus step
Machines
Transitions
The commit's note under
refs/notes/mesh-plankeeps every transition:git log --notes=mesh-plan.Merge check at
b6f8aef4Judged: head
b6f8aef4d4f1merged into trunk47f9290b37aa; read beside it: mesh-catalog44e7002d3c84, mesh-controller-main47f9290b37aa, mesh-host6469e8238443, mesh-tools7412c5b6c9c5mesh/merge-gate: PASS — every machine composes with the change as it did without (4 of 4 compose) (modules: mesh-controller)mesh/repo-check: PASS — its merge-check.sh passedDelivery plan — builds mesh-controller → novox; no bus step
Run by the build seat on shanks as
build-1792281501147262498(builds --log build-1792281501147262498).