One push leaves the mesh consistent; the foundation's ports are forwarded (057, 063) #31

Merged
jschoubben merged 3 commits from fix/one-push-is-enough into main 2026-09-20 10:53:15 +00:00
3 Commits
Author SHA1 Message Date
jschoubben 97c076ea48 The one-push cascade compares against what was last sent (issue 057)
The first cut compared a before/after snapshot of the named push — but
the provision is minted at assign or module-issue, before push runs, so
by push time the provider is already behind with no delta to detect.
Fixed to flush machines whose declaration differs from what they were
last SENT (the same Waiting path --behind uses), which is the honest
meaning of 'one push leaves the mesh consistent' (ADR 0083). Verified
live on a kept two-node mesh: pushing the consumer populates the
provider's grant and the vhost is minted.
2026-09-18 02:37:26 +02:00
jschoubben 25e42b3ad6 The foundation's ports are forwarded, not only accepted on input (issue 063)
The broker's amqps port is opened from anywhere so a node can enrol
before it has an overlay address — but only in the input chain. The
broker is a published container port, so a cross-node dial is DNAT'd
and forwarded, never reaching input; it survived on the first
connection's conntrack entry and no more. Adopting the foundation's own
broker restarts it, dropping that entry, after which a joined node
could never receive another declaration. The forward chain now carries
the foundation ports too, from anywhere, matching their input rule.

Intermittent in the built-store-cross-node bed: it passed whenever the
broker did not happen to restart after the joined node first connected.
2026-09-18 02:19:34 +02:00
jschoubben f47b6e1c31 One push leaves the mesh consistent (issue 057)
A provision is minted while composing the consumer's node, and the
provider's grant list is a pure read of secrets already issued — so
pushing the consumer left the provider blind until somebody pushed it
again, with no signal to. A named push now captures what every machine
should be before composing, recomputes after, and sends the machines
whose declaration changed because of this push — by name, never
silently, converging over bounded rounds.
2026-09-18 02:05:55 +02:00