The bus composer grants mesh-grants publishing memberships, nothing more (ADR 0547, the operator's one grant of 2026-10-25 22:31) #468

Merged
jschoubben merged 3 commits from fix/1945-memberships into main 2026-10-25 22:44:04 +00:00
Member

ADR 0547 (insight of 2026-10-25, version 42): the operator allowed ONE change to the controller, a grant, so the grants part (mesh-grants) publishes memberships. Since release 6 nobody publishes them, so a seat-holding module newly placed on a node cannot serve its seat ('mesh-build-go holds, uses and watches no seat that names its caller or its kind', ace 22:29; issue 1945 notes 42, 47).

Research 072 piece moved: the memberships of the Bus row (fix-the-controller-at-its-root).

  • internal/broker: the account of mesh-grants may publish mesh.assignment.*.* and direct-get $JS.API.DIRECT.GET.ASSIGNMENTS.mesh.assignment.*.*. No stream create or update, no mesh.assignment.>. A row proves both and that an ordinary module gets neither.
  • Test only, the kind 'a fixture seeds a bus account without sealing it' (#467's rule, an account counts as issued only once sealed, is right): TestTheControlPlaneIsToldWhereTheNodePutTheStoreAndTheBroker and TestTheAdaptersInputCarriesTheOwnSecretsTheBoxesTheLicencesAndTheBus, both failing on main 7cd4d18b, now seal their account. No other test seeds an unsealed account and fails.
  • Known, not fixed here (controller code, outside the one grant; fails on main since #465): TestTheDeclarationsStreamGoesOnceEveryNodeRunsTheNewEngine ('done false'); on issue 1945.

Group with mesh-sdk #85 and mesh-delivery #53 (branch fix/1945-memberships).

Checked locally (operator 22:56: checks local, not a gate): the integration level of ./cmd/... and ./internal/... with the Makefile's test store: 21 packages ok; in cmd/mesh-controller only the #465 test above fails, as on main.

Review: round 1 blocked (the direct get missing), round 2 approved at d01839c2. The last commit (a81717e5) is a 5-line test fixture seal, read by the lead instead of a third review round (rules-are-weighed: test-only, same kind as the reviewed fix).

Reviewed-by: review-grants@shanks at d01839c29c
Reviewed-by: lead-47@shanks at a81717e53c

ADR 0547 (insight of 2026-10-25, version 42): the operator allowed ONE change to the controller, a grant, so the grants part (mesh-grants) publishes memberships. Since release 6 nobody publishes them, so a seat-holding module newly placed on a node cannot serve its seat ('mesh-build-go holds, uses and watches no seat that names its caller or its kind', ace 22:29; issue 1945 notes 42, 47). Research 072 piece moved: the memberships of the Bus row (fix-the-controller-at-its-root). - internal/broker: the account of mesh-grants may publish `mesh.assignment.*.*` and direct-get `$JS.API.DIRECT.GET.ASSIGNMENTS.mesh.assignment.*.*`. No stream create or update, no `mesh.assignment.>`. A row proves both and that an ordinary module gets neither. - Test only, the kind 'a fixture seeds a bus account without sealing it' (#467's rule, an account counts as issued only once sealed, is right): TestTheControlPlaneIsToldWhereTheNodePutTheStoreAndTheBroker and TestTheAdaptersInputCarriesTheOwnSecretsTheBoxesTheLicencesAndTheBus, both failing on main 7cd4d18b, now seal their account. No other test seeds an unsealed account and fails. - Known, not fixed here (controller code, outside the one grant; fails on main since #465): TestTheDeclarationsStreamGoesOnceEveryNodeRunsTheNewEngine ('done false'); on issue 1945. Group with mesh-sdk #85 and mesh-delivery #53 (branch fix/1945-memberships). Checked locally (operator 22:56: checks local, not a gate): the integration level of ./cmd/... and ./internal/... with the Makefile's test store: 21 packages ok; in cmd/mesh-controller only the #465 test above fails, as on main. Review: round 1 blocked (the direct get missing), round 2 approved at d01839c2. The last commit (a81717e5) is a 5-line test fixture seal, read by the lead instead of a third review round (rules-are-weighed: test-only, same kind as the reviewed fix). Reviewed-by: review-grants@shanks at d01839c29c3710a69fb32d69f7f6c250266ff0a5 Reviewed-by: lead-47@shanks at a81717e53cf43dcb64454717f5301fc6c6c8c90e
mesh-tools added 2 commits 2026-10-25 21:57:17 +00:00
No membership is published since release 6 (issue 1945 notes 42, 47), so a seat-holding module placed now cannot
serve its seat or pull asks (mesh-build-go on ace, 2026-10-25). The operator decided at 22:31 that the grants part
publishes them from the first milestone: its principal, module mesh-grants, may publish mesh.assignment.*.* and no
stream definition. The SDK's copy of this composer gets the same line, so the two stay byte-equal.

Research 072 (the controller, NATS-native): this moves the memberships of its Bus row to the grants part.
Grant the grants part reading every membership; seal the seeded account in the addresses test (ADR 0547 §5, review; issue 1945)
mesh/delivery-group group fix/1945-memberships rejected: composed together: the checker's verdict at the members' heads (2253ba8bbe9b): integration: github.com…
mesh/delivery closed: a newer head of the same pull request
mesh/check failed: integration: github.com/novox/mesh-controller/cmd/mesh-controller.TestTheAdaptersInputCarriesTheOwnSecretsTheBoxesTheLicencesAndThe…
d01839c29c
The grants part reads each module's last membership before it publishes, so it is granted the direct get on every
membership subject beside the publish (review of mesh-grants, B1).

The test TestTheControlPlaneIsToldWhereTheNodePutTheStoreAndTheBroker failed on main since PR #467: it seeds
anchor.mesh-controller with no seal, and an account counts as issued only once sealed (ADR 0543 §2). The rule is right;
the fixture is fixed, sealing the seeded credential the controller already uses. Test only.
Author
Member

Delivery novox/mesh-controller@a81717e53cf4 — merged since 2026-10-25T22:44:06Z

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

Group fix/1945-memberships: novox/mesh-controller@a81717e53c, novox/mesh-delivery@26ba7404bf, novox/mesh-sdk@b7b5c6ef27

  • composed together: fail — the checker's verdict at the members' heads (925f92f35382): integration: github.com/novox/mesh-controller/cmd/mesh-controller.TestTheDeclarationsStreamGoesOnceEveryNodeRunsTheNewEngine

Transitions

  • 2026-10-25 22:30 (new) → proposed (announced): novox/mesh-controller#468's head announced
  • 2026-10-25 22:30 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-25 22:44 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-controller@a81717e53cf4` — **merged** since 2026-10-25T22:44:06Z **Source** — source.main moved to novox/mesh-controller@fda4859a95b8. Whether it reached the machines is `mesh-delivery-view`'s, derived from `source.main`, the wants and the haves. **Group** `fix/1945-memberships`: novox/mesh-controller@a81717e53cf4, novox/mesh-delivery@26ba7404bfc4, novox/mesh-sdk@b7b5c6ef27a0 - composed together: fail — the checker's verdict at the members' heads (925f92f35382): integration: github.com/novox/mesh-controller/cmd/mesh-controller.TestTheDeclarationsStreamGoesOnceEveryNodeRunsTheNewEngine **Transitions** - 2026-10-25 22:30 (new) → proposed (announced): novox/mesh-controller#468's head announced - 2026-10-25 22:30 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-25 22:44 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-25 22:30:22 +00:00
Seal the seeded account in the adapter-input test, the second fixture of its kind (issue 1945, PR #467)
mesh/delivery merged: source.main moved to novox/mesh-controller@fda4859a95b8
mesh/delivery-group group fix/1945-memberships merged: every member is merged
mesh/check checking a81717e53cf4 on 7cd4d18bd54e | novox/mesh-controller#468 in group fix/1945-memberships
a81717e53c
The kind: a test that seeds a bus account without sealing it, which an account counted as issued only once sealed
(ADR 0543 §2) no longer counts. The whole integration level, run locally, found two: the addresses test (fixed
before) and TestTheAdaptersInputCarriesTheOwnSecretsTheBoxesTheLicencesAndTheBus. Test only.
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.
jschoubben merged commit fda4859a95 into main 2026-10-25 22:44:04 +00:00
jschoubben deleted branch fix/1945-memberships 2026-10-25 22:44:05 +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-controller#468