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
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.
mesh/delivery-group group fix/1945-memberships rejected: composed together: the checker's verdict at the members' heads (2253ba8bbe9b): integration: github.com…
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.
Deliverynovox/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.
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`.
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.
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.
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.
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).
mesh.assignment.*.*and direct-get$JS.API.DIRECT.GET.ASSIGNMENTS.mesh.assignment.*.*. No stream create or update, nomesh.assignment.>. A row proves both and that an ordinary module gets neither.7cd4d18b, now seal their account. No other test seeds an unsealed account and fails.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
d01839c29cReviewed-by: lead-47@shanks at
a81717e53cDelivery
novox/mesh-controller@a81717e53cf4— merged since 2026-10-25T22:44:06ZSource — source.main moved to novox/mesh-controller@fda4859a95. Whether it reached the machines is
mesh-delivery-view's, derived fromsource.main, the wants and the haves.Group
fix/1945-memberships: novox/mesh-controller@a81717e53c, novox/mesh-delivery@26ba7404bf, novox/mesh-sdk@b7b5c6ef27Transitions
The commit's note under
refs/notes/mesh-plankeeps every transition of this change up to its merge:git log --notes=mesh-plan.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.