The openrazer daemon refuses to start for an account outside the openrazer group, and the fix was sudo gpasswd -a $USER openrazer by hand, which nothing recorded.
The module now declares ${machine:account} as a user resource with the group openrazer and nothing else of the account, written after its three packages (the driver's package makes the group). The zsh module keeps the account's shell; the controller lets several modules add groups to one account.
module.json: the account resource.
manifest_test.go: holds that one resource, its one group, and its place after the packages.
openrazer_check: the finding for an account outside the group says the module declares it and a new login follows, instead of the sudo step.
README.md: the group section, the migration and relies on.
After the operator's send, the account is put in the group, and openrazer's health on that machine says relogin needed (mesh-host #54) until the operator logs out and in again.
merge-check.sh passes locally with MESH_GATE set to the controller of mesh-controller's branch.
The openrazer daemon refuses to start for an account outside the `openrazer` group, and the fix was `sudo gpasswd -a $USER openrazer` by hand, which nothing recorded.
The module now declares `${machine:account}` as a `user` resource with the group `openrazer` and nothing else of the account, written after its three packages (the driver's package makes the group). The `zsh` module keeps the account's shell; the controller lets several modules add groups to one account.
- `module.json`: the `account` resource.
- `manifest_test.go`: holds that one resource, its one group, and its place after the packages.
- `openrazer_check`: the finding for an account outside the group says the module declares it and a new login follows, instead of the `sudo` step.
- `README.md`: the group section, the migration and *relies on*.
After the operator's send, the account is put in the group, and openrazer's health on that machine says *relogin needed* (mesh-host #54) until the operator logs out and in again.
`merge-check.sh` passes locally with `MESH_GATE` set to the controller of mesh-controller's branch.
composed together: pass — every machine composes with the change as it did without (4 of 4 compose)
Transitions
2026-10-08 10:04 (new) → proposed (announced): novox/mesh-catalog#125's head announced
2026-10-08 10:06 proposed → checked (checked): the verdict names this commit
2026-10-08 10:06 checked → ready (accepted): the gate passed or warned, and the repository's own check did not fail
2026-10-08 10:09 ready → published (merged): on the trunk its modules follow: merged there, and its walk opened — or nothing for a walk to move
2026-10-08 10:09 published → held (hold): something holds it for a person: its group's composed check did not pass for the heads that merged, or it merged and no walk was opened for it
2026-10-09 15:05 held → covered (covered): covered: a later merge that contains it was delivered: novox/mesh-catalog@5d7d9020b8 (merged as bf542128 into main, walk plan-1791469645497863448): openrazer
The commit's note under refs/notes/mesh-plan keeps every transition: git log --notes=mesh-plan.
<!-- mesh-delivery:view -->
**Delivery** `novox/mesh-catalog@da57051fa3b9` — **covered** since 2026-10-09T15:05:08Z
**Delivery plan** — builds openrazer → g14, shanks; no bus step
- tier 0: openrazer
- g14: receives openrazer
- shanks: receives openrazer
**Group** `feat/module-groups`, in order: novox/mesh-catalog@da57051fa3b9 → novox/mesh-host@ab4ca44f98e8
- composed together: pass — every machine composes with the change as it did without (4 of 4 compose)
**Transitions**
- 2026-10-08 10:04 (new) → proposed (announced): novox/mesh-catalog#125's head announced
- 2026-10-08 10:06 proposed → checked (checked): the verdict names this commit
- 2026-10-08 10:06 checked → ready (accepted): the gate passed or warned, and the repository's own check did not fail
- 2026-10-08 10:09 ready → published (merged): on the trunk its modules follow: merged there, and its walk opened — or nothing for a walk to move
- 2026-10-08 10:09 published → held (hold): something holds it for a person: its group's composed check did not pass for the heads that merged, or it merged and no walk was opened for it
- 2026-10-09 15:05 held → covered (covered): covered: a later merge that contains it was delivered: novox/mesh-catalog@5d7d9020b8c7 (merged as bf542128 into main, walk plan-1791469645497863448): openrazer
The commit's note under `refs/notes/mesh-plan` keeps every transition: `git log --notes=mesh-plan`.
mesh/delivery covered: a later merge that contains it was delivered: novox/mesh-catalog@5d7d9020b8c7 (merged as bf542128 into main, walk plan-17914696454…
The daemon refuses to start outside the group, and the fix was a sudo step by hand that nothing
recorded. The module now declares it; the operator logs in again once.
mesh-admin
changed title from Declare the operator's account in the openrazer group (hq ADR 0251, issue 247) to Declare the operator's account in the openrazer group (hq ADR 0252, issue 247)2026-10-08 10:04:37 +00:00
mesh/merge-gate: PASS — every machine composes with the change as it did without (4 of 4 compose) (modules: openrazer)
mesh/repo-check: PASS — its merge-check.sh passed
Delivery plan — builds openrazer → g14, shanks; no bus step
tier 0: openrazer
g14: receives openrazer
shanks: receives openrazer
Run by the build seat on novox as build-1791453791198541636 (builds --log build-1791453791198541636).
--- the gate: openrazer
openrazer: ok, 3 tool(s)
long-running resources without health: 0
1 manifest(s) checked. Judged against the seats this binary carries; a claim on one of the mesh's own seats is judged fully at registration, and a seat declared by a module not given here reads as unknown. Identities judged on a 6-character machine name, against the bounds of the providers given here
judging 1 module(s) changed against 4 machine(s), as the snapshot of 2026-10-08T09:54:03Z says they run
composing every machine as the mesh is
the bus's user list leaves out 5 user(s) the mesh has minted no credential for: controller, node.f35, node.idt, node.ygcyr, node.yvbpsm. Each is a user that cannot connect until one is issued
the bus's user list leaves out 5 user(s) the mesh has minted no credential for: controller, node.f35, node.idt, node.ygcyr, node.yvbpsm. Each is a user that cannot connect until one is issued
composing every machine with the change
the bus's user list leaves out 5 user(s) the mesh has minted no credential for: controller, node.f35, node.idt, node.ygcyr, node.yvbpsm. Each is a user that cannot connect until one is issued
the bus's user list leaves out 5 user(s) the mesh has minted no credential for: controller, node.f35, node.idt, node.ygcyr, node.yvbpsm. Each is a user that cannot connect until one is issued
merge gate: PASS — every machine composes with the change as it did without (4 of 4 compose)
judged by controller development build against the facts of 2026-10-08T09:54:03Z
modules the change moves:
- openrazer (changed)
machines:
- a machine (f35): composes; the change adds 1 resource(s) and removes 0 (+user:openrazer.account)
- holds mesh-dns-resolver (idt): composes
- holds git, holds mesh-artifact-store, holds mesh-broker, holds mesh-catalog, holds mesh-delivery, holds mesh-dns-resolver, holds mesh-store, holds mesh-vault, holds npm-package-registry, the control node, the hub (ygcyr): composes
- a machine (yvbpsm): composes; the change adds 1 resource(s) and removes 0 (+user:openrazer.account)
a merge would rebuild 1 module(s) in 1 tier(s): openrazer
--- its merge-check.sh (go toolchain)
ok git.novox.be/novox/mesh-catalog/checks/words 0.002s
words: 12 retired words, none in the 28729 strings of 533 files
long-running resources without health: 70, as kept
testing modules/openrazer
ok openrazer/cmd/openrazer-tools 1.302s
**Merge check** at `a68371f3`
- `mesh/merge-gate`: **PASS** — every machine composes with the change as it did without (4 of 4 compose) (modules: openrazer)
- `mesh/repo-check`: **PASS** — its merge-check.sh passed
**Delivery plan** — builds openrazer → g14, shanks; no bus step
- tier 0: openrazer
- g14: receives openrazer
- shanks: receives openrazer
Run by the build seat on novox as `build-1791453791198541636` (`builds --log build-1791453791198541636`).
```
--- the gate: openrazer
openrazer: ok, 3 tool(s)
long-running resources without health: 0
1 manifest(s) checked. Judged against the seats this binary carries; a claim on one of the mesh's own seats is judged fully at registration, and a seat declared by a module not given here reads as unknown. Identities judged on a 6-character machine name, against the bounds of the providers given here
judging 1 module(s) changed against 4 machine(s), as the snapshot of 2026-10-08T09:54:03Z says they run
composing every machine as the mesh is
the bus's user list leaves out 5 user(s) the mesh has minted no credential for: controller, node.f35, node.idt, node.ygcyr, node.yvbpsm. Each is a user that cannot connect until one is issued
the bus's user list leaves out 5 user(s) the mesh has minted no credential for: controller, node.f35, node.idt, node.ygcyr, node.yvbpsm. Each is a user that cannot connect until one is issued
composing every machine with the change
the bus's user list leaves out 5 user(s) the mesh has minted no credential for: controller, node.f35, node.idt, node.ygcyr, node.yvbpsm. Each is a user that cannot connect until one is issued
the bus's user list leaves out 5 user(s) the mesh has minted no credential for: controller, node.f35, node.idt, node.ygcyr, node.yvbpsm. Each is a user that cannot connect until one is issued
merge gate: PASS — every machine composes with the change as it did without (4 of 4 compose)
judged by controller development build against the facts of 2026-10-08T09:54:03Z
modules the change moves:
- openrazer (changed)
machines:
- a machine (f35): composes; the change adds 1 resource(s) and removes 0 (+user:openrazer.account)
- holds mesh-dns-resolver (idt): composes
- holds git, holds mesh-artifact-store, holds mesh-broker, holds mesh-catalog, holds mesh-delivery, holds mesh-dns-resolver, holds mesh-store, holds mesh-vault, holds npm-package-registry, the control node, the hub (ygcyr): composes
- a machine (yvbpsm): composes; the change adds 1 resource(s) and removes 0 (+user:openrazer.account)
a merge would rebuild 1 module(s) in 1 tier(s): openrazer
--- its merge-check.sh (go toolchain)
ok git.novox.be/novox/mesh-catalog/checks/words 0.002s
words: 12 retired words, none in the 28729 strings of 533 files
long-running resources without health: 70, as kept
testing modules/openrazer
ok openrazer/cmd/openrazer-tools 1.302s
```
mesh/merge-gate: PASS — every machine composes with the change as it did without (4 of 4 compose) (modules: openrazer)
mesh/repo-check: PASS — its merge-check.sh passed
Delivery plan — builds openrazer → g14, shanks; no bus step
tier 0: openrazer
g14: receives openrazer
shanks: receives openrazer
Run by the build seat on g14 as build-1791453884552345624 (builds --log build-1791453884552345624).
--- the gate: openrazer
openrazer: ok, 3 tool(s)
long-running resources without health: 0
1 manifest(s) checked. Judged against the seats this binary carries; a claim on one of the mesh's own seats is judged fully at registration, and a seat declared by a module not given here reads as unknown. Identities judged on a 6-character machine name, against the bounds of the providers given here
judging 1 module(s) changed against 4 machine(s), as the snapshot of 2026-10-08T10:04:03Z says they run
composing every machine as the mesh is
the bus's user list leaves out 5 user(s) the mesh has minted no credential for: controller, node.f35, node.idt, node.ygcyr, node.yvbpsm. Each is a user that cannot connect until one is issued
the bus's user list leaves out 5 user(s) the mesh has minted no credential for: controller, node.f35, node.idt, node.ygcyr, node.yvbpsm. Each is a user that cannot connect until one is issued
composing every machine with the change
the bus's user list leaves out 5 user(s) the mesh has minted no credential for: controller, node.f35, node.idt, node.ygcyr, node.yvbpsm. Each is a user that cannot connect until one is issued
the bus's user list leaves out 5 user(s) the mesh has minted no credential for: controller, node.f35, node.idt, node.ygcyr, node.yvbpsm. Each is a user that cannot connect until one is issued
merge gate: PASS — every machine composes with the change as it did without (4 of 4 compose)
judged by controller development build against the facts of 2026-10-08T10:04:03Z
modules the change moves:
- openrazer (changed)
machines:
- a machine (f35): composes; the change adds 1 resource(s) and removes 0 (+user:openrazer.account)
- holds mesh-dns-resolver (idt): composes
- holds git, holds mesh-artifact-store, holds mesh-broker, holds mesh-catalog, holds mesh-delivery, holds mesh-dns-resolver, holds mesh-store, holds mesh-vault, holds npm-package-registry, the control node, the hub (ygcyr): composes
- a machine (yvbpsm): composes; the change adds 1 resource(s) and removes 0 (+user:openrazer.account)
a merge would rebuild 1 module(s) in 1 tier(s): openrazer
--- its merge-check.sh (go toolchain)
ok git.novox.be/novox/mesh-catalog/checks/words 0.001s
words: 12 retired words, none in the 28729 strings of 533 files
long-running resources without health: 70, as kept
testing modules/openrazer
ok openrazer/cmd/openrazer-tools 1.246s
**Merge check** at `da57051f`
- `mesh/merge-gate`: **PASS** — every machine composes with the change as it did without (4 of 4 compose) (modules: openrazer)
- `mesh/repo-check`: **PASS** — its merge-check.sh passed
**Delivery plan** — builds openrazer → g14, shanks; no bus step
- tier 0: openrazer
- g14: receives openrazer
- shanks: receives openrazer
Run by the build seat on g14 as `build-1791453884552345624` (`builds --log build-1791453884552345624`).
```
--- the gate: openrazer
openrazer: ok, 3 tool(s)
long-running resources without health: 0
1 manifest(s) checked. Judged against the seats this binary carries; a claim on one of the mesh's own seats is judged fully at registration, and a seat declared by a module not given here reads as unknown. Identities judged on a 6-character machine name, against the bounds of the providers given here
judging 1 module(s) changed against 4 machine(s), as the snapshot of 2026-10-08T10:04:03Z says they run
composing every machine as the mesh is
the bus's user list leaves out 5 user(s) the mesh has minted no credential for: controller, node.f35, node.idt, node.ygcyr, node.yvbpsm. Each is a user that cannot connect until one is issued
the bus's user list leaves out 5 user(s) the mesh has minted no credential for: controller, node.f35, node.idt, node.ygcyr, node.yvbpsm. Each is a user that cannot connect until one is issued
composing every machine with the change
the bus's user list leaves out 5 user(s) the mesh has minted no credential for: controller, node.f35, node.idt, node.ygcyr, node.yvbpsm. Each is a user that cannot connect until one is issued
the bus's user list leaves out 5 user(s) the mesh has minted no credential for: controller, node.f35, node.idt, node.ygcyr, node.yvbpsm. Each is a user that cannot connect until one is issued
merge gate: PASS — every machine composes with the change as it did without (4 of 4 compose)
judged by controller development build against the facts of 2026-10-08T10:04:03Z
modules the change moves:
- openrazer (changed)
machines:
- a machine (f35): composes; the change adds 1 resource(s) and removes 0 (+user:openrazer.account)
- holds mesh-dns-resolver (idt): composes
- holds git, holds mesh-artifact-store, holds mesh-broker, holds mesh-catalog, holds mesh-delivery, holds mesh-dns-resolver, holds mesh-store, holds mesh-vault, holds npm-package-registry, the control node, the hub (ygcyr): composes
- a machine (yvbpsm): composes; the change adds 1 resource(s) and removes 0 (+user:openrazer.account)
a merge would rebuild 1 module(s) in 1 tier(s): openrazer
--- its merge-check.sh (go toolchain)
ok git.novox.be/novox/mesh-catalog/checks/words 0.001s
words: 12 retired words, none in the 28729 strings of 533 files
long-running resources without health: 70, as kept
testing modules/openrazer
ok openrazer/cmd/openrazer-tools 1.246s
```
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.
The openrazer daemon refuses to start for an account outside the
openrazergroup, and the fix wassudo gpasswd -a $USER openrazerby hand, which nothing recorded.The module now declares
${machine:account}as auserresource with the groupopenrazerand nothing else of the account, written after its three packages (the driver's package makes the group). Thezshmodule keeps the account's shell; the controller lets several modules add groups to one account.module.json: theaccountresource.manifest_test.go: holds that one resource, its one group, and its place after the packages.openrazer_check: the finding for an account outside the group says the module declares it and a new login follows, instead of thesudostep.README.md: the group section, the migration and relies on.After the operator's send, the account is put in the group, and openrazer's health on that machine says relogin needed (mesh-host #54) until the operator logs out and in again.
merge-check.shpasses locally withMESH_GATEset to the controller of mesh-controller's branch.Delivery
novox/mesh-catalog@da57051fa3b9— covered since 2026-10-09T15:05:08ZDelivery plan — builds openrazer → g14, shanks; no bus step
Group
feat/module-groups, in order: novox/mesh-catalog@da57051fa3 → novox/mesh-host@ab4ca44f98Transitions
bf542128into main, walk plan-1791469645497863448): openrazerThe commit's note under
refs/notes/mesh-plankeeps every transition:git log --notes=mesh-plan.a68371f30ctoda57051fa3Declare the operator's account in the openrazer group (hq ADR 0251, issue 247)to Declare the operator's account in the openrazer group (hq ADR 0252, issue 247)Merge check at
a68371f3mesh/merge-gate: PASS — every machine composes with the change as it did without (4 of 4 compose) (modules: openrazer)mesh/repo-check: PASS — its merge-check.sh passedDelivery plan — builds openrazer → g14, shanks; no bus step
Run by the build seat on novox as
build-1791453791198541636(builds --log build-1791453791198541636).Merge check at
da57051fmesh/merge-gate: PASS — every machine composes with the change as it did without (4 of 4 compose) (modules: openrazer)mesh/repo-check: PASS — its merge-check.sh passedDelivery plan — builds openrazer → g14, shanks; no bus step
Run by the build seat on g14 as
build-1791453884552345624(builds --log build-1791453884552345624).