Issue 774 (design 47): the lease write could not act on the operator's yes.
The controller's node comes from placement (the node that places mesh-controller), never from the lease holder's host: the act asked node-service-manager.stop@novox-be, a hostname no node answers, so both of the operator's yeses (2026-11-02 09:15, 09:26) failed at the first step. None or several placing nodes refuse the act by name and stop nothing (ADR 0582 clause 3).
A failed step logs its act, step and reason beside the condition it raises (it was silent).
The router's record is read from the seat's own bucketmessenger_asks in mesh-grants and in mesh-delivery-teller (both read KV_asks, which no grant allows; mesh-sdk seattraffic.go composes $KV.messenger_asks.<module>.>).
Tests: fixtures separate host and node; the asks reads run on a real bucket; all failed on the old code.
Tested locally before the push (GOWORK=off): gofmt, go vet, go vet -tags integration and the unit suites of mesh-grants and mesh-delivery-teller pass. Integration tests against an embedded bus: TestTheLeaseWriteOnTheBus (mesh-grants): ok, 3.1 s; the teller's integration package: ok, 34 s.
Reviewed-by: review-g1@shanks at 8f87dbe94d
Pushed-by: lead-47@shanks
Issue 774 (design 47): the lease write could not act on the operator's yes.
- **The controller's node comes from placement** (the node that places mesh-controller), never from the lease holder's host: the act asked `node-service-manager.stop@novox-be`, a hostname no node answers, so both of the operator's yeses (2026-11-02 09:15, 09:26) failed at the first step. None or several placing nodes refuse the act by name and stop nothing (ADR 0582 clause 3).
- **A failed step logs** its act, step and reason beside the condition it raises (it was silent).
- **The router's record is read from the seat's own bucket** `messenger_asks` in mesh-grants and in mesh-delivery-teller (both read `KV_asks`, which no grant allows; mesh-sdk seattraffic.go composes `$KV.messenger_asks.<module>.>`).
- Tests: fixtures separate host and node; the asks reads run on a real bucket; all failed on the old code.
**Tested locally before the push** (GOWORK=off): gofmt, `go vet`, `go vet -tags integration` and the unit suites of mesh-grants and mesh-delivery-teller pass. Integration tests against an embedded bus: `TestTheLeaseWriteOnTheBus` (mesh-grants): ok, 3.1 s; the teller's integration package: ok, 34 s.
Reviewed-by: review-g1@shanks at 8f87dbe94d760c00db2c2361f5b402f8832c5cf7
Pushed-by: lead-47@shanks
https://claude.ai/code/session_01NcbgfJ9Gum47zkFKWRaovL
The lease write addressed node-service-manager at the lease holder's host, a
hostname no node carries ("novox-be" on novox), so the operator's yes timed out
at its first step and failed without a log line. The node now comes from
placement (exactly one node placing mesh-controller, else refused by name), a
failed act is logged beside its condition, and the asks record is read from
messenger_asks, the bucket the composed grant names, instead of asks, which no
grant allows. The fixtures give the lease a host unlike the node, so the tests
no longer agree with the mistake. (issue 774)
Claude-Session: https://claude.ai/code/session_01NcbgfJ9Gum47zkFKWRaovL
The teller read the router's record from KV_asks, a bucket no composed grant
names, so every read was denied and its operator answers could not be read
back. It now reads messenger_asks, as mesh-grants does. The integration bed
grants the real subject and reads a record on the teller's credential, so it
no longer agrees with the mistake. (issue 774)
Claude-Session: https://claude.ai/code/session_01NcbgfJ9Gum47zkFKWRaovL
Deliverynovox/mesh-delivery@8f87dbe94d76 — merged since 2026-11-02T08:52:50Z
Source — source.main moved to novox/mesh-delivery@cc9c681fa3. Whether it reached the machines is mesh-delivery-view's, derived from source.main, the wants and the haves.
Transitions
2026-11-02 08:45 (new) → proposed (announced): novox/mesh-delivery#135's head announced
2026-11-02 08:45 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-11-02 08:52 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-delivery@8f87dbe94d76` — **merged** since 2026-11-02T08:52:50Z
**Source** — source.main moved to novox/mesh-delivery@cc9c681fa348. Whether it reached the machines is `mesh-delivery-view`'s, derived from `source.main`, the wants and the haves.
**Transitions**
- 2026-11-02 08:45 (new) → proposed (announced): novox/mesh-delivery#135's head announced
- 2026-11-02 08:45 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-11-02 08:52 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`.
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.
Issue 774 (design 47): the lease write could not act on the operator's yes.
node-service-manager.stop@novox-be, a hostname no node answers, so both of the operator's yeses (2026-11-02 09:15, 09:26) failed at the first step. None or several placing nodes refuse the act by name and stop nothing (ADR 0582 clause 3).messenger_asksin mesh-grants and in mesh-delivery-teller (both readKV_asks, which no grant allows; mesh-sdk seattraffic.go composes$KV.messenger_asks.<module>.>).Tested locally before the push (GOWORK=off): gofmt,
go vet,go vet -tags integrationand the unit suites of mesh-grants and mesh-delivery-teller pass. Integration tests against an embedded bus:TestTheLeaseWriteOnTheBus(mesh-grants): ok, 3.1 s; the teller's integration package: ok, 34 s.Reviewed-by: review-g1@shanks at
8f87dbe94dPushed-by: lead-47@shanks
https://claude.ai/code/session_01NcbgfJ9Gum47zkFKWRaovL
The lease write addressed node-service-manager at the lease holder's host, a hostname no node carries ("novox-be" on novox), so the operator's yes timed out at its first step and failed without a log line. The node now comes from placement (exactly one node placing mesh-controller, else refused by name), a failed act is logged beside its condition, and the asks record is read from messenger_asks, the bucket the composed grant names, instead of asks, which no grant allows. The fixtures give the lease a host unlike the node, so the tests no longer agree with the mistake. (issue 774) Claude-Session: https://claude.ai/code/session_01NcbgfJ9Gum47zkFKWRaovLDelivery
novox/mesh-delivery@8f87dbe94d76— merged since 2026-11-02T08:52:50ZSource — source.main moved to novox/mesh-delivery@cc9c681fa3. Whether it reached the machines is
mesh-delivery-view's, derived fromsource.main, the wants and the haves.Transitions
The commit's note under
refs/notes/mesh-plankeeps every transition of this change up to its merge:git log --notes=mesh-plan.