Files
hq/04-ISSUES/259-a-named-push-sent-every-machine/00-report.md
T

2.0 KiB

status, opened, located-in, fixed-by, amended-design
status opened located-in fixed-by amended-design
resolved 2026-10-05
mesh-controller
novox/mesh-controller#64 (002d5e5) 03-DESIGN/01-to-be/30-the-mesh-updates-itself-on-a-push.md

259. A push to one machine sent every machine

Symptom

A change to the resolver modules was merged with the upgrade policy record, so that each machine would get it only when pushed. The plan was to go one machine at a time: the anchor first, then each of the others, each checked before the next.

push <anchor> sent all four machines, each a new declaration carrying the change. A later push <laptop> did the same. A further fault in the change (issue 260) was therefore met on every machine at once, not on one.

Cause

A named push ends by flushing every other machine whose declaration differs from what it was last sent (issue 057, ADR 0083). This was meant for consequences of the push, such as a provider's grant list after a consumer was assigned. It cannot tell a consequence from a change the upgrade policy is holding back. Under record, every machine running the module differs, so every machine is flushed.

Issue 249 met the same confusion for the machine holding the bus, and narrowed that check to the user list alone. The flush has no such narrowing.

What it costs

record is the policy for a change that must be walked through the mesh by hand. A named push cannot do that, so the policy does not hold the change back from anything but the merge. The command's name says one machine, and the command's output is the only place that says otherwise.

Open

  • Should the flush send a machine only what changed as a consequence: grants, user lists and bound facts, not module versions held by a policy?
  • Or should it list such machines as behind and leave them, as push --behind would find them?

Verified

2026-10-05: after the fix, a named push sent only the machine named. Upgrades held by a policy were then sent with push --behind, as ADR 0221 has it.