The lease write stops the controller on its placed node and reads the operator's answer from the right bucket (issue 774) #135

Merged
mesh-tools merged 2 commits from fix/774-lease-write-node into main 2026-11-02 08:52:48 +00:00
Member

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 8f87dbe94d
Pushed-by: lead-47@shanks

https://claude.ai/code/session_01NcbgfJ9Gum47zkFKWRaovL

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
mesh-tools added 2 commits 2026-11-02 08:45:29 +00:00
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
mesh-delivery-teller: read asks from the router's bucket the grant names
mesh/delivery merged: source.main moved to novox/mesh-delivery@cc9c681fa348
mesh/check being carried to 8f87dbe94d76 on cc9c681fa348 | from f1c33439292d
8f87dbe94d
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
Author
Member

Delivery novox/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`.
mesh-tools merged commit cc9c681fa3 into main 2026-11-02 08:52:48 +00:00
mesh-tools deleted branch fix/774-lease-write-node 2026-11-02 08:52:48 +00:00
Sign in to join this conversation.
No Reviewers
No labels
1 Participants
Notifications
Due Date
No due date set.
Dependencies

No dependencies set.

Reference: novox/mesh-delivery#135