Node shadow: reuse a seal only at its slot, lay values as the controller does, newest candidate first, and hand the vault a drifted own secret (issue 1126, group fix/1126-seed-same)
#158
Merged
mesh-toolsmerged 4 commits from fix/1126-seed-same into main2026-10-28 09:46:48 +00:00
C1: the node keeps running boxes after composing (keepRunning) by slot, from what runs or the have's new sealed-at; an older have's sealed list is reused only within its own module.
C2: the node lays its own and served values with the SDK's one rule.
T2: an answer logs its start, a line every 60 s naming what it waits on, and its end.
T3: candidates are answered newest first, each handed as it lands.
C4: when its shadow answer says another value of an own secret, while it applies the controller's compositions, the node hands the vault what runs through move-in with replace_running (internal/ownresync), once per value, and checks the vault's fingerprint.
Quick vs thorough: C1/C2 thorough (SDK rule); C4 through the existing move-in verb rather than a new verb, so the controller is not a member (rule 'a verb named for its act' bent; the explicit argument and the vault's refusals cover it).
Tests: rows only, each fails without its fix (ids captured from novox's shadow answer); gofmt, vet, -tags integration, go test pass.
Delivery group fix/1126-seed-same (mesh-sdk, mesh-host, mesh-delivery, mesh-catalog), design 47 milestone L2; pins mesh-sdk 3028c7ec4ed2.
- C1: the node keeps running boxes after composing (keepRunning) by slot, from what runs or the have's new `sealed-at`; an older have's `sealed` list is reused only within its own module.
- C2: the node lays its own and served values with the SDK's one rule.
- T2: an answer logs its start, a line every 60 s naming what it waits on, and its end.
- T3: candidates are answered newest first, each handed as it lands.
- C4: when its shadow answer says another value of an own secret, while it applies the controller's compositions, the node hands the vault what runs through move-in with replace_running (internal/ownresync), once per value, and checks the vault's fingerprint.
Quick vs thorough: C1/C2 thorough (SDK rule); C4 through the existing move-in verb rather than a new verb, so the controller is not a member (rule 'a verb named for its act' bent; the explicit argument and the vault's refusals cover it).
Tests: rows only, each fails without its fix (ids captured from novox's shadow answer); gofmt, vet, -tags integration, go test pass.
Reviewed-by: rev-seed-same@shanks at c912bcab6e739a09c56e415eb07115c5415e976a
A box is reused by slot (resource, field) after the composition, from what runs or the
have's slots; a have written before slots is reused within its module alone. Config
values are laid by mesh-sdk's one rule (never a default). The shadow answers the
newest candidate first and hands each answer as it lands, says when an answer starts,
every minute what it waits on, and when it ends, and fits an answer to the node's key.
Needs mesh-sdk fix/1126-seed-same (16b8d8a1).
A new step, internal/ownresync, after each shadow answer: for each own secret masked as another value, while the node
applies the controller's compositions and runs the one its want names, it asks the vault's move-in with
replace_running: true and the running value sealed to the call's key, once per value, and says what it asked and what
the vault answered. The answer written to the node's have key carries values_differ. Pins the group's mesh-sdk head
1062b33 (go.sum is filled once that head is pushed).
Deliverynovox/mesh-host@c912bcab6e73 — merged since 2026-10-28T09:46:55Z
Source — source.main moved to novox/mesh-host@f6c0520f26. Whether it reached the machines is mesh-delivery-view's, derived from source.main, the wants and the haves.
composed together: fail — the checker's verdict at the members' heads (3cb7f74b347d): integration: github.com/novox/mesh-host/cmd/mesh-host.TestNatsANodeThePlacementNamesComposesAndAppliesItsOwn
Transitions
2026-10-28 09:05 (new) → proposed (announced): novox/mesh-host#158's head announced
2026-10-28 09:05 proposed → ready (accepted): a verdict names this commit and the trunk's head as its trunk commit, the gate passed or warned, and the repository's own check did not fail; or the check gates no merge (check-gates-merge false)
2026-10-28 09:46 ready → merged (merged): on the trunk its modules follow: merged there
The commit's note under refs/notes/mesh-plan keeps every transition of this change up to its merge: git log --notes=mesh-plan.
<!-- mesh-delivery:view -->
**Delivery** `novox/mesh-host@c912bcab6e73` — **merged** since 2026-10-28T09:46:55Z
**Source** — source.main moved to novox/mesh-host@f6c0520f26b9. Whether it reached the machines is `mesh-delivery-view`'s, derived from `source.main`, the wants and the haves.
**Group** `fix/1126-seed-same`: novox/mesh-catalog@0974d1a57d99, novox/mesh-delivery@2cccbfd096d8, novox/mesh-host@c912bcab6e73, novox/mesh-sdk@3028c7ec4ed2
- composed together: fail — the checker's verdict at the members' heads (3cb7f74b347d): integration: github.com/novox/mesh-host/cmd/mesh-host.TestNatsANodeThePlacementNamesComposesAndAppliesItsOwn
**Transitions**
- 2026-10-28 09:05 (new) → proposed (announced): novox/mesh-host#158's head announced
- 2026-10-28 09:05 proposed → ready (accepted): a verdict names this commit and the trunk's head as its trunk commit, the gate passed or warned, and the repository's own check did not fail; or the check gates no merge (check-gates-merge false)
- 2026-10-28 09:46 ready → merged (merged): on the trunk its modules follow: merged there
The commit's note under `refs/notes/mesh-plan` keeps every transition of this change up to its merge: `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.
Delivery group fix/1126-seed-same (mesh-sdk, mesh-host, mesh-delivery, mesh-catalog), design 47 milestone L2; pins mesh-sdk 3028c7ec4ed2.
sealed-at; an older have'ssealedlist is reused only within its own module.Quick vs thorough: C1/C2 thorough (SDK rule); C4 through the existing move-in verb rather than a new verb, so the controller is not a member (rule 'a verb named for its act' bent; the explicit argument and the vault's refusals cover it).
Tests: rows only, each fails without its fix (ids captured from novox's shadow answer); gofmt, vet, -tags integration, go test pass.
Reviewed-by: rev-seed-same@shanks at
c912bcab6eDelivery
novox/mesh-host@c912bcab6e73— merged since 2026-10-28T09:46:55ZSource — source.main moved to novox/mesh-host@f6c0520f26. Whether it reached the machines is
mesh-delivery-view's, derived fromsource.main, the wants and the haves.Group
fix/1126-seed-same: novox/mesh-catalog@0974d1a57d, novox/mesh-delivery@2cccbfd096, novox/mesh-host@c912bcab6e, novox/mesh-sdk@3028c7ec4eTransitions
The commit's note under
refs/notes/mesh-plankeeps every transition of this change up to its merge:git log --notes=mesh-plan.