Judge each machine on a plan's last send and resume a plan lost to silence with plans retry, so a resumed plan is not failed by its own old sends (issue 1886, ADR 0531)
#444
Merged
mesh-toolsmerged 2 commits from fix/1886-resume-times into main2026-10-23 07:26:32 +00:00
Issue 1886 note 13: R4e's resumed plan plan-1792707174627079192 failed at 07:50-07:51 on 2026-10-23 'every machine it waits on said nothing on its send within 15m0s' in the same second the machines applied, and plans retry then refused it. Causes: walkReports judged each machine on every send the plan ever made to it (tier 0's of 00:23), so silence was measured from 00:23; tierLeftOf kept TierEntered from before the stop. Decision: ADR 0531 (accepted).
Now: each machine is judged on the plan's last send to it (laterSend; it carries the whole declaration); a plan set open again enters its tier anew; plans retry resumes a plan failed only as lost to silence once its machines reported (lostToSilence, resumeLost), refused while every machine is still silent, beside a newer open plan of its branch, beside a related open plan, or when a newer done plan passed it. Comments cite ADR 0360 §7 and ADR 0531.
Tests seen failing first: walk_resumed_silence_1886_test.go (built on R4e's timings), tier_entered_resume_1886_test.go; TestRetryRefusesAWalkLostToSilenceBesideANewerOrARelatedOpenPlan added at 4d4d51eb (passes on the code). Unit suite and vet (with and without the integration tag) green. Integration try: try-1792735572110135527 on b7d99687 (the first try failed on ace's full disk, not the code).
After delivery: mesh-controller.plans {retry: plan-1792707174627079192}.
Reviewed-by: review-1886-times@shanks at 4d4d51eb01
Issue 1886 note 13: R4e's resumed plan plan-1792707174627079192 failed at 07:50-07:51 on 2026-10-23 'every machine it waits on said nothing on its send within 15m0s' in the same second the machines applied, and `plans retry` then refused it. Causes: walkReports judged each machine on every send the plan ever made to it (tier 0's of 00:23), so silence was measured from 00:23; tierLeftOf kept TierEntered from before the stop. Decision: ADR 0531 (accepted).
Now: each machine is judged on the plan's last send to it (laterSend; it carries the whole declaration); a plan set open again enters its tier anew; `plans retry` resumes a plan failed only as lost to silence once its machines reported (lostToSilence, resumeLost), refused while every machine is still silent, beside a newer open plan of its branch, beside a related open plan, or when a newer done plan passed it. Comments cite ADR 0360 §7 and ADR 0531.
Tests seen failing first: walk_resumed_silence_1886_test.go (built on R4e's timings), tier_entered_resume_1886_test.go; TestRetryRefusesAWalkLostToSilenceBesideANewerOrARelatedOpenPlan added at 4d4d51eb (passes on the code). Unit suite and vet (with and without the integration tag) green. Integration try: try-1792735572110135527 on b7d99687 (the first try failed on ace's full disk, not the code).
After delivery: mesh-controller.plans {retry: plan-1792707174627079192}.
Reviewed-by: review-1886-times@shanks at 4d4d51eb017f0567998ce7d2d7c9f3dca72a84a6
R4e, resumed at tier 1 after a stop of five hours, named ace and shanks silent within seconds of tier 1's send: the
walk judged each machine on every send it had made it, tier 0's of 00:23 too, held against tier 1's templates, and
measured the bound from it. A send carries the whole declaration, so the last one is what a machine is judged on.
The resume kept the tier's entry of before the stop, so the plan read waiting for 5h48m. And plans retry refused a
walk failed only by the gate's silence, though its machines had since applied.
mesh/merge-gate head 4d4d51eb017f merged into trunk 219fdcd7f00c — pass: builds build-agent, mesh-controller → ace, g14, novox, shanks; no bus step; the ch…
Deliverynovox/mesh-controller@4d4d51eb017f — delivered since 2026-10-23T07:46:03Z
Delivery plan — builds build-agent, mesh-controller → ace, g14, novox, shanks; no bus step
tier 0: mesh-controller
tier 1: build-agent
ace: receives build-agent
g14: receives build-agent
novox: receives mesh-controller, build-agent
shanks: receives build-agent
build-agent 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 build-agent is judged on its first machine
Machines
mesh-controller on every machine running it: sent
build-agent on every machine running it: sent
Transitions
2026-10-23 06:11 (new) → proposed (announced): novox/mesh-controller#444's head announced
2026-10-23 06:26 proposed → checked (checked): a verdict names this commit and the trunk's head as its trunk commit
2026-10-23 06:26 checked → ready (accepted): the gate passed or warned, and the repository's own check did not fail
2026-10-23 07:27 ready → published (merged): on the trunk its modules follow: merged there, and its walk opened — or nothing for a walk to move
2026-10-23 07:27 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-23 07:46 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@4d4d51eb017f` — **delivered** since 2026-10-23T07:46:03Z
**Delivery plan** — builds build-agent, mesh-controller → ace, g14, novox, shanks; no bus step
- tier 0: mesh-controller
- tier 1: build-agent
- ace: receives build-agent
- g14: receives build-agent
- novox: receives mesh-controller, build-agent
- shanks: receives build-agent
- build-agent 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 build-agent is judged on its first machine
**Machines**
- mesh-controller on every machine running it: sent
- build-agent on every machine running it: sent
**Transitions**
- 2026-10-23 06:11 (new) → proposed (announced): novox/mesh-controller#444's head announced
- 2026-10-23 06:26 proposed → checked (checked): a verdict names this commit and the trunk's head as its trunk commit
- 2026-10-23 06:26 checked → ready (accepted): the gate passed or warned, and the repository's own check did not fail
- 2026-10-23 07:27 ready → published (merged): on the trunk its modules follow: merged there, and its walk opened — or nothing for a walk to move
- 2026-10-23 07:27 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-23 07:46 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`.
Merge check at 4d4d51eb
Judged: head 4d4d51eb017f merged into trunk 219fdcd7f00c; read beside it: mesh-catalog 89e15c7bcda6, mesh-controller-main 219fdcd7f00c, mesh-host 48c3e3834c69, mesh-tools e0fadc43d9dd
mesh/merge-gate: PASS — the change touches no module of the mesh's graph
mesh/repo-check: PASS — its merge-check.sh passed
Delivery plan — builds build-agent, mesh-controller → ace, g14, novox, shanks; no bus step
tier 0: mesh-controller
tier 1: build-agent
ace: receives build-agent
g14: receives build-agent
novox: receives mesh-controller, build-agent
shanks: receives build-agent
build-agent 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 build-agent is judged on its first machine
read by no module's build: cmd/mesh-controller/walk_resumed_silence_1886_test.go, internal/inventory/tier_entered_resume_1886_test.go
Run by the build seat on shanks as build-1792735877060223971 (builds --log build-1792735877060223971).
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 1886 note 13: R4e's resumed plan plan-1792707174627079192 failed at 07:50-07:51 on 2026-10-23 'every machine it waits on said nothing on its send within 15m0s' in the same second the machines applied, and
plans retrythen refused it. Causes: walkReports judged each machine on every send the plan ever made to it (tier 0's of 00:23), so silence was measured from 00:23; tierLeftOf kept TierEntered from before the stop. Decision: ADR 0531 (accepted).Now: each machine is judged on the plan's last send to it (laterSend; it carries the whole declaration); a plan set open again enters its tier anew;
plans retryresumes a plan failed only as lost to silence once its machines reported (lostToSilence, resumeLost), refused while every machine is still silent, beside a newer open plan of its branch, beside a related open plan, or when a newer done plan passed it. Comments cite ADR 0360 §7 and ADR 0531.Tests seen failing first: walk_resumed_silence_1886_test.go (built on R4e's timings), tier_entered_resume_1886_test.go; TestRetryRefusesAWalkLostToSilenceBesideANewerOrARelatedOpenPlan added at
4d4d51eb(passes on the code). Unit suite and vet (with and without the integration tag) green. Integration try: try-1792735572110135527 onb7d99687(the first try failed on ace's full disk, not the code).After delivery: mesh-controller.plans {retry: plan-1792707174627079192}.
Reviewed-by: review-1886-times@shanks at
4d4d51eb01Delivery
novox/mesh-controller@4d4d51eb017f— delivered since 2026-10-23T07:46:03ZDelivery plan — builds build-agent, mesh-controller → ace, g14, novox, shanks; no bus step
Machines
Transitions
The commit's note under
refs/notes/mesh-plankeeps every transition:git log --notes=mesh-plan.Merge check at
4d4d51ebJudged: head
4d4d51eb017fmerged into trunk219fdcd7f00c; read beside it: mesh-catalog89e15c7bcda6, mesh-controller-main219fdcd7f00c, mesh-host48c3e3834c69, mesh-toolse0fadc43d9ddmesh/merge-gate: PASS — the change touches no module of the mesh's graphmesh/repo-check: PASS — its merge-check.sh passedDelivery plan — builds build-agent, mesh-controller → ace, g14, novox, shanks; no bus step
Run by the build seat on shanks as
build-1792735877060223971(builds --log build-1792735877060223971).