A placement change is answered by the nodes it places: the candidate contract, composing a given placement, and replicated seats in the placement check (issue 1126, ADR 0559) #106

Merged
mesh-tools merged 7 commits from feat/1126-l2b into main 2026-10-27 07:21:03 +00:00
Member

Milestone L2b of design 47 (issue 1126, notes 19-21), ADR 0559. Delivery group feat/1126-l2b with mesh-host, mesh-delivery, mesh-catalog, hq.

  • CheckPlacements lets a replicated mesh seat (mesh-dns-resolver) be held on several nodes; the placement seed of the live export now passes (dry run wrote all four files).
  • Candidate contract: a catalogue pull message may carry its placement files; state placement-candidates keyed .; CandidateAnswer in HaveNode.Candidates (same / differs / added / removed / refusals, Revision 0 = no key of the node's own, judged by head); HaveNode.Sealed; CompositionUnanswered.
  • frombus composes a given placement (Placed, Scope.Placements, Case.Placements); CompareComposed; CompositionsShadow; frombus.Answer asks the vault only for consumer keys of modules the node runs (an added module is answered as added, not refused).
  • NodeComposeReads grants a node a read of every candidate key.

Quick vs thorough (S7): quick = a guard applying nothing that differs at a node's first switch; thorough chosen = the nodes answer every placement change before it merges (covers every later placement PR, closes A2).
Tests: whole untagged suite, go vet -tags integration pass; no new test functions (rows in existing tables).

Reviewed-by: review-l2b@shanks at cadd7b1b2f

Milestone L2b of design 47 (issue 1126, notes 19-21), ADR 0559. Delivery group feat/1126-l2b with mesh-host, mesh-delivery, mesh-catalog, hq. - CheckPlacements lets a replicated mesh seat (mesh-dns-resolver) be held on several nodes; the placement seed of the live export now passes (dry run wrote all four files). - Candidate contract: a catalogue pull message may carry its placement files; state `placement-candidates` keyed <group>.<node>; `CandidateAnswer` in `HaveNode.Candidates` (same / differs / added / removed / refusals, Revision 0 = no key of the node's own, judged by head); `HaveNode.Sealed`; `CompositionUnanswered`. - frombus composes a given placement (`Placed`, `Scope.Placements`, `Case.Placements`); `CompareComposed`; `CompositionsShadow`; `frombus.Answer` asks the vault only for consumer keys of modules the node runs (an added module is answered as added, not refused). - `NodeComposeReads` grants a node a read of every candidate key. Quick vs thorough (S7): quick = a guard applying nothing that differs at a node's first switch; thorough chosen = the nodes answer every placement change before it merges (covers every later placement PR, closes A2). Tests: whole untagged suite, go vet -tags integration pass; no new test functions (rows in existing tables). Reviewed-by: review-l2b@shanks at cadd7b1b2f8fa3499e40287c69972a1880f6f6a5
mesh-tools added 7 commits 2026-10-27 01:49:49 +00:00
Ask the vault in a candidate answer only for credentials of modules the node runs, and refuse a stand-in of a running module, so a placement that adds a module is answered as added (issue 1126, ADR 0559 §4)
mesh/delivery merged: source.main moved to novox/mesh-sdk@56de5ba84010
mesh/delivery-group group feat/1126-l2b merged: every member is merged
mesh/check being carried to cadd7b1b2f8f on 43eef46c4121 | from b0cbc4e6aca8, mesh-catalog 64530a8dcb08 | novox/mesh-sdk#106 in group feat/1126-l2b
cadd7b1b2f
Author
Member

Delivery novox/mesh-sdk@cadd7b1b2f8f — merged since 2026-10-27T07:21:05Z

Source — source.main moved to novox/mesh-sdk@56de5ba840. Whether it reached the machines is mesh-delivery-view's, derived from source.main, the wants and the haves.

Group feat/1126-l2b: novox/hq@043f8ecf9c, novox/mesh-catalog@2ac511ce6b, novox/mesh-delivery@06d4f45e18, novox/mesh-host@1803d25c3a, novox/mesh-sdk@cadd7b1b2f

Transitions

  • 2026-10-27 01:49 (new) → proposed (announced): novox/mesh-sdk#106's head announced
  • 2026-10-27 01:49 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-27 07:21 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-sdk@cadd7b1b2f8f` — **merged** since 2026-10-27T07:21:05Z **Source** — source.main moved to novox/mesh-sdk@56de5ba84010. Whether it reached the machines is `mesh-delivery-view`'s, derived from `source.main`, the wants and the haves. **Group** `feat/1126-l2b`: novox/hq@043f8ecf9cfa, novox/mesh-catalog@2ac511ce6b19, novox/mesh-delivery@06d4f45e1885, novox/mesh-host@1803d25c3a67, novox/mesh-sdk@cadd7b1b2f8f **Transitions** - 2026-10-27 01:49 (new) → proposed (announced): novox/mesh-sdk#106's head announced - 2026-10-27 01:49 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-27 07:21 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`.
Author
Member

mesh-delivery: the operator's Approve of this pull request's merge into main is ended: a head it covers moved on: the heads it covers are no longer the group's heads. Nothing is merged on it. The operator is asked again once the checks pass at the new head.

mesh-delivery: the operator's Approve of this pull request's merge into main is ended: a head it covers moved on: the heads it covers are no longer the group's heads. Nothing is merged on it. The operator is asked again once the checks pass at the new head.
Author
Member

mesh-delivery: the operator's Approve of this pull request's merge into main is ended: a head it covers moved on: the heads it covers are no longer the group's heads. Nothing is merged on it. The operator is asked again once the checks pass at the new head.

mesh-delivery: the operator's Approve of this pull request's merge into main is ended: a head it covers moved on: the heads it covers are no longer the group's heads. Nothing is merged on it. The operator is asked again once the checks pass at the new head.
Author
Member

mesh-delivery: the operator's Approve of this pull request's merge into main is ended: a head it covers moved on: the heads it covers are no longer the group's heads. Nothing is merged on it. The operator is asked again once the checks pass at the new head.

mesh-delivery: the operator's Approve of this pull request's merge into main is ended: a head it covers moved on: the heads it covers are no longer the group's heads. Nothing is merged on it. The operator is asked again once the checks pass at the new head.
mesh-tools merged commit 56de5ba840 into main 2026-10-27 07:21:03 +00:00
mesh-tools deleted branch feat/1126-l2b 2026-10-27 07:21:04 +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-sdk#106