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-tools merged 4 commits from fix/1126-seed-same into main 2026-10-28 09:46:48 +00:00
Member

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 c912bcab6e

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
mesh-tools added 4 commits 2026-10-28 09:05:48 +00:00
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).
The node agent finds a drifted own secret's running file by its id as the node runs it, its module's name first (issue 1126, cause C4; review round 2)
mesh/delivery merged: source.main moved to novox/mesh-host@f6c0520f26b9
mesh/delivery-group group fix/1126-seed-same merged: every member is merged
mesh/check checking c912bcab6e73 on f6c0520f26b9 | novox/mesh-host#158 in group fix/1126-seed-same
c912bcab6e
Pins mesh-sdk 3028c7e (delivery.OwnNeedName). The fixtures carry the id shape captured from novox's shadow answer.
Author
Member

Delivery novox/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.

Group fix/1126-seed-same: novox/mesh-catalog@0974d1a57d, novox/mesh-delivery@2cccbfd096, novox/mesh-host@c912bcab6e, novox/mesh-sdk@3028c7ec4e

  • 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`.
mesh-tools merged commit f6c0520f26 into main 2026-10-28 09:46:48 +00:00
mesh-tools deleted branch fix/1126-seed-same 2026-10-28 09:46:48 +00:00
Sign in to join this conversation.
No Reviewers
1 Participants
Notifications
Due Date
No due date set.
Dependencies

No dependencies set.

Reference: novox/mesh-host#158