The catalogue's placement files: listed at a merge and checked (issue 1126) #505

Merged
mesh-tools merged 6 commits from feat/1126-nodes-compose into main 2026-10-26 21:11:17 +00:00
Member

Milestone L2 "nodes compose" (issue 1126; ADR 0549 §1, §2, §3, §5; ADR 0550 §5; ADR 0555). Member of the delivery group feat/1126-nodes-compose, which the milestone's one review approved; checks/placement pins mesh-sdk 979644420117 (mesh-sdk #98's head) exactly.

  • gitea: gitea_commit_trees takes listed and answers the files directly under each named directory, from the same one listing, so the forge bridge finds the placement files at a merge.
  • checks/placement: every placement/<node>.json reads as its node's placement (mesh-sdk #98's layout, with its config placement layers and a settings-form module's values), and the files together refuse two modules of one node on one host port, a pin, binding or holding naming a provider not placed there, a mesh seat held twice, one address on two nodes and a second hub. The tree holds no placement file yet; the seed pull request comes later (ADR 0549 §4, ADR 0555 §6).
  • mesh-config: resolves the values of every module the catalogue's placement or the controller's assignments name on a node, while both stand (ADR 0549 §5); placement not readable yet is said and the assignments alone are resolved.
  • mesh-vault: the verb own answers a machine's node-engine, about its own machine alone, the own secrets of its modules and the pair credentials it asks for (as consumer or provider), each sealed to the key that engine stated; a credential the vault does not hold is named missing.

A rule bent (rules-are-weighed). how-work-is-done asks that a change to how a module runs carry an integration test starting the module whole against the real bus and store. The vault's own is not proven that way here: the vault has no harness that starts it as a process, and building one is new work for this one verb. What covers the risk instead: TestOnARealBusANodeEngineStatesOnlyItsOwnKey runs the vault's tools against a real NATS server with per-account permissions as the grants give them, and shows node.ace asking own over the bus and getting its secret sealed to its stated key, node.g14 unable to ask in ace's name, and the controller refused. The node's side over a real bus is mesh-host's H8 integration test.

The branch was rewritten once on 2026-10-26 19:51 with the operator's leave, to drop two compiled programs; compiled programs are refused by main's checks/nobinaries.

Reviewed-by: review-1126@shanks at c085975146

Milestone L2 "nodes compose" (issue 1126; ADR 0549 §1, §2, §3, §5; ADR 0550 §5; ADR 0555). Member of the delivery group feat/1126-nodes-compose, which the milestone's one review approved; checks/placement pins mesh-sdk 979644420117 (mesh-sdk #98's head) exactly. - gitea: `gitea_commit_trees` takes `listed` and answers the files directly under each named directory, from the same one listing, so the forge bridge finds the placement files at a merge. - `checks/placement`: every `placement/<node>.json` reads as its node's placement (mesh-sdk #98's layout, with its config placement layers and a settings-form module's values), and the files together refuse two modules of one node on one host port, a pin, binding or holding naming a provider not placed there, a mesh seat held twice, one address on two nodes and a second hub. The tree holds no placement file yet; the seed pull request comes later (ADR 0549 §4, ADR 0555 §6). - mesh-config: resolves the values of every module the catalogue's placement or the controller's assignments name on a node, while both stand (ADR 0549 §5); placement not readable yet is said and the assignments alone are resolved. - mesh-vault: the verb `own` answers a machine's node-engine, about its own machine alone, the own secrets of its modules and the pair credentials it asks for (as consumer or provider), each sealed to the key that engine stated; a credential the vault does not hold is named missing. **A rule bent (rules-are-weighed).** how-work-is-done asks that a change to how a module runs carry an integration test starting the module whole against the real bus and store. The vault's `own` is not proven that way here: the vault has no harness that starts it as a process, and building one is new work for this one verb. What covers the risk instead: `TestOnARealBusANodeEngineStatesOnlyItsOwnKey` runs the vault's tools against a real NATS server with per-account permissions as the grants give them, and shows node.ace asking `own` over the bus and getting its secret sealed to its stated key, node.g14 unable to ask in ace's name, and the controller refused. The node's side over a real bus is mesh-host's H8 integration test. The branch was rewritten once on 2026-10-26 19:51 with the operator's leave, to drop two compiled programs; compiled programs are refused by main's checks/nobinaries. Reviewed-by: review-1126@shanks at c0859751461aa112c60a163b25b5694cfd402b06
Author
Member

Delivery novox/mesh-catalog@c0859751461a — merged since 2026-10-26T21:11:19Z

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

Group feat/1126-nodes-compose: novox/hq@28d84f31bf, novox/mesh-catalog@c085975146, novox/mesh-controller@df8ebf6a77, novox/mesh-delivery@297992a4ae, novox/mesh-host@1d44288514, novox/mesh-sdk@9796444201

Transitions

  • 2026-10-26 21:10 (new) → proposed (announced): novox/mesh-catalog#505's head announced
  • 2026-10-26 21:10 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-26 21:11 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-catalog@c0859751461a` — **merged** since 2026-10-26T21:11:19Z **Source** — source.main moved to novox/mesh-catalog@78d7ef71cc27. Whether it reached the machines is `mesh-delivery-view`'s, derived from `source.main`, the wants and the haves. **Group** `feat/1126-nodes-compose`: novox/hq@28d84f31bfcb, novox/mesh-catalog@c0859751461a, novox/mesh-controller@df8ebf6a77c1, novox/mesh-delivery@297992a4ae55, novox/mesh-host@1d442885148a, novox/mesh-sdk@979644420117 **Transitions** - 2026-10-26 21:10 (new) → proposed (announced): novox/mesh-catalog#505's head announced - 2026-10-26 21:10 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-26 21:11 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`.
jschoubben added 1 commit 2026-10-26 18:49:43 +00:00
Nodes compose: the catalogue's placement files and their check, mesh-config reading placement, the vault's own and pair credentials, the forge's commit trees (issue 1126)
mesh/delivery closed: a newer head of the same pull request
mesh/check checking 851e8782d569 on da29f77b1081 | novox/mesh-catalog#505 in group feat/1126-nodes-compose
851e8782d5
One commit for the branch feat/1126-nodes-compose of mesh-catalog: its 15 commits squashed so its history does not carry two compiled programs committed by mistake and removed later, mesh-config (5.5 MB) and checks/placement (6.2 MB) (issue 1577). The tree equals the former head 2db56067. The operator allowed this rewrite of the feature branch on 2026-10-26.
jschoubben force-pushed feat/1126-nodes-compose from 2db5606721 to 851e8782d5 2026-10-26 18:49:43 +00:00 Compare
jschoubben added 1 commit 2026-10-26 19:12:23 +00:00
jschoubben added 1 commit 2026-10-26 19:35:49 +00:00
Pin mesh-sdk feat/1126-nodes-compose 03dce12, the group's head: the checker refuses a pin that is neither trunk nor the group's head (issue 1126)
mesh/delivery-group group feat/1126-nodes-compose checking: 4 of 6 member(s) ready
mesh/delivery closed: a newer head of the same pull request
mesh/check checking 1e6b15786562 on eba4bab00aa7 | novox/mesh-catalog#505 in group feat/1126-nodes-compose
1e6b157865
mesh-tools marked the pull request as ready for review 2026-10-26 21:09:37 +00:00
jschoubben added 3 commits 2026-10-26 21:10:03 +00:00
Pin mesh-sdk 9796444 (l2-next: feat/1126-nodes-compose merged with sdk main #101, the standing-test race fixes) (issue 1126)
mesh/delivery merged: source.main moved to novox/mesh-catalog@78d7ef71cc27
mesh/delivery-group group feat/1126-nodes-compose merged: every member is merged
mesh/check checking c0859751461a on 78d7ef71cc27 | novox/mesh-catalog#505 in group feat/1126-nodes-compose
c085975146
mesh-tools merged commit 78d7ef71cc into main 2026-10-26 21:11:17 +00:00
mesh-tools deleted branch feat/1126-nodes-compose 2026-10-26 21:11:18 +00:00
Sign in to join this conversation.
No Reviewers
2 Participants
Notifications
Due Date
No due date set.
Dependencies

No dependencies set.

Reference: novox/mesh-catalog#505