Issue 1409; design 39 bus-and-switch C1 and C2 (hq PR #571). The operator, 2026-11-12: "the licence manager module should have a service part and a tools part".
Live symptom: run inside novox's tool runner, the delivered manager (#657) was issued none of its logs (usage, audit), so its carry-over cannot finish; condition carry-over-failed since 01:08 UTC; no token refreshed.
C1: runs-as claude-licence-manager with its own account (user resource, owners, own-secrets broker, secrets-owner), as the vault and the mail reader; invokes gains claude-code.claude_code_grant; its runtime runs the service and serves the tools.
C2: a key pair the manager cannot read (left by the tool runner's account) is made anew, written beside and renamed over, said in its journal.
Tests: 72 unit (was 70), 4 whole tests on an embedded bus; each new test failed first. 33 repository checks pass; the judge accepts the manifest (local re-creation).
Reviewed-by: mesh-code-reviewer@shanks at 8291502cbb (round 2 of 3, approved)
Pushed-by: fix-1965@shanks
Issue 1409; design 39 bus-and-switch C1 and C2 (hq PR #571). The operator, 2026-11-12: "the licence manager module should have a service part and a tools part".
Live symptom: run inside novox's tool runner, the delivered manager (#657) was issued none of its logs (`usage`, `audit`), so its carry-over cannot finish; condition carry-over-failed since 01:08 UTC; no token refreshed.
- C1: `runs-as claude-licence-manager` with its own account (user resource, owners, own-secrets broker, secrets-owner), as the vault and the mail reader; `invokes` gains `claude-code.claude_code_grant`; its runtime runs the service and serves the tools.
- C2: a key pair the manager cannot read (left by the tool runner's account) is made anew, written beside and renamed over, said in its journal.
Tests: 72 unit (was 70), 4 whole tests on an embedded bus; each new test failed first. 33 repository checks pass; the judge accepts the manifest (local re-creation).
Reviewed-by: mesh-code-reviewer@shanks at 8291502cbbafe6460ca0ce865ad512f2a09949ef (round 2 of 3, approved)
Pushed-by: fix-1965@shanks
https://claude.ai/code/session_01NcbgfHb9d4T9nq5Q6WqdiJ
Run inside the machine's tool runner, the manager was issued none of its own logs and states, so the carry-over
failed live ("keeps no log called usage ... it was issued: none"). It now declares runs-as claude-licence-manager,
makes that account, owns what it places on its machine and its secrets, reaches the bus with its own broker secret,
and invokes a node's claude_code_grant, which the tool runner's account could ask and its own could not.
The whole tests play the manager's own runtime: they issue only the states, logs, asks and events its manifest
names, and fail on a manifest without runs-as; a unit test holds every ask in the code to the manifest's invokes.
Builds: design 39 bus-and-switch C1
Claude-Session: https://claude.ai/code/session_01NcbgfHb9d4T9nq5Q6WqdiJ
Moved to its own account, the manager finds manager-key.json still owned by the tool runner's account, which the
node-engine does not hand over; it skipped making a pair because the file existed, and every verb answered the read
error. Now a pair it cannot read is replaced by a new one, renamed over it, and said in its journal; every use passes
the public key per ask, so nothing depends on the old pair.
Builds: design 39 bus-and-switch C2
Claude-Session: https://claude.ai/code/session_01NcbgfHb9d4T9nq5Q6WqdiJ
Deliverynovox/mesh-catalog@8291502cbbaf — merged since 2026-11-12T08:41:51Z
Source — source.main moved to novox/mesh-catalog@6181d9afb3. Whether it reached the machines is mesh-delivery-view's, derived from source.main, the wants and the haves.
Transitions
2026-11-12 08:39 (new) → proposed (announced): novox/mesh-catalog#659's head announced
2026-11-12 08:39 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-12 08:41 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@8291502cbbaf` — **merged** since 2026-11-12T08:41:51Z
**Source** — source.main moved to novox/mesh-catalog@6181d9afb3e5. Whether it reached the machines is `mesh-delivery-view`'s, derived from `source.main`, the wants and the haves.
**Transitions**
- 2026-11-12 08:39 (new) → proposed (announced): novox/mesh-catalog#659's head announced
- 2026-11-12 08:39 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-12 08:41 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 1409; design 39 bus-and-switch C1 and C2 (hq PR #571). The operator, 2026-11-12: "the licence manager module should have a service part and a tools part".
Live symptom: run inside novox's tool runner, the delivered manager (#657) was issued none of its logs (
usage,audit), so its carry-over cannot finish; condition carry-over-failed since 01:08 UTC; no token refreshed.runs-as claude-licence-managerwith its own account (user resource, owners, own-secrets broker, secrets-owner), as the vault and the mail reader;invokesgainsclaude-code.claude_code_grant; its runtime runs the service and serves the tools.Tests: 72 unit (was 70), 4 whole tests on an embedded bus; each new test failed first. 33 repository checks pass; the judge accepts the manifest (local re-creation).
Reviewed-by: mesh-code-reviewer@shanks at
8291502cbb(round 2 of 3, approved)Pushed-by: fix-1965@shanks
https://claude.ai/code/session_01NcbgfHb9d4T9nq5Q6WqdiJ
Run inside the machine's tool runner, the manager was issued none of its own logs and states, so the carry-over failed live ("keeps no log called usage ... it was issued: none"). It now declares runs-as claude-licence-manager, makes that account, owns what it places on its machine and its secrets, reaches the bus with its own broker secret, and invokes a node's claude_code_grant, which the tool runner's account could ask and its own could not. The whole tests play the manager's own runtime: they issue only the states, logs, asks and events its manifest names, and fail on a manifest without runs-as; a unit test holds every ask in the code to the manifest's invokes. Builds: design 39 bus-and-switch C1 Claude-Session: https://claude.ai/code/session_01NcbgfHb9d4T9nq5Q6WqdiJDelivery
novox/mesh-catalog@8291502cbbaf— merged since 2026-11-12T08:41:51ZSource — source.main moved to novox/mesh-catalog@6181d9afb3. 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.