The remaining tray applets of the workstations, each a module with one start (novox/hq ADR 0205, 0207, 0208, 0210, 0212, 0182).
New modules
openrazer: openrazer-driver-dkms, openrazer-daemon, python-openrazer (official, extra). No start of its own: D-Bus activation of org.razer through the package's user unit is the daemon's one start. Tools: openrazer_status, openrazer_restart, openrazer_check (driver built by DKMS for the running kernel and loaded, devices bound, account in the openrazer group and its service manager with it, daemon running once from its unit, devices seen over D-Bus, always --auto-start=no).
polychromatic: the AUR tray, kept as found (no package). Its one start is a node-display-session contribution, exec --no-startup-id polychromatic-tray-applet, taken over from the i3 module, which drops the line in this change (config/config and module.json). The package's login helper also starts the tray while the app's setting is ticked: polychromatic_check names that as a second start; the operator unticks it once.
forticlient: the AUR VPN client, kept as found; forticlient.service declared running and enabled. The tray's one start is the vendor's XDG autostart entry (dex). Tools report running and connected state only: no profile, credential, gateway, certificate, interface name or address is read or answered; tests plant them on a fake machine and assert no answer carries them.
nm-applet: network-manager-applet (official). Separate from networkmanager, which runs on servers and holds node-uplink; declares none of its packages. One start: the package's XDG autostart entry.
Other changes
desktop.go (shared by blueman, nextcloud-client and the four new bundles) gains procsOf/stopProcs/waitForOf: polychromatic-tools and polychromatic-tray-applet share the 15-character command name, so the tray is matched by its full program name and the tools never count or end themselves. A copies_test.go keeps the six copies identical.
cups README: the desktop's print applet (system-config-printer) is not cups's (it needs a display, and cups needs none); left as found, a future desktop module if wanted.
xdg README: the autostart owners updated, and geoclue's demo agent (a dependency's piece on the desktop) noted as left as found.
Found while inspecting
The openrazer daemon has failed at every login on both workstations: the account is in plugdev but not in openrazer, which openrazer's udev rules and daemon now require. The module cannot declare the membership, because the account's user resource is zsh's and a second module declaring it collides at composition. One-off step per workstation: sudo gpasswd -a $USER openrazer, then log out of every session or reboot.
Checks
mctl module check modules/*: the new modules pass; the 10 problems are the existing node-backup ones. go vet and go test pass for openrazer, polychromatic, forticlient, nm-applet, blueman, nextcloud-client, i3 (including the catalogue-wide contribution test with i3 -C), xdg and cups.
Not merged, built, assigned or pushed to any machine.
The remaining tray applets of the workstations, each a module with one start (novox/hq ADR 0205, 0207, 0208, 0210, 0212, 0182).
## New modules
- **openrazer**: `openrazer-driver-dkms`, `openrazer-daemon`, `python-openrazer` (official, `extra`). No start of its own: D-Bus activation of `org.razer` through the package's user unit is the daemon's one start. Tools: `openrazer_status`, `openrazer_restart`, `openrazer_check` (driver built by DKMS for the running kernel and loaded, devices bound, account in the `openrazer` group and its service manager with it, daemon running once from its unit, devices seen over D-Bus, always `--auto-start=no`).
- **polychromatic**: the AUR tray, kept as found (no package). Its one start is a `node-display-session` contribution, `exec --no-startup-id polychromatic-tray-applet`, taken over from the i3 module, which drops the line in this change (`config/config` and module.json). The package's login helper also starts the tray while the app's setting is ticked: `polychromatic_check` names that as a second start; the operator unticks it once.
- **forticlient**: the AUR VPN client, kept as found; `forticlient.service` declared running and enabled. The tray's one start is the vendor's XDG autostart entry (dex). Tools report running and connected state only: no profile, credential, gateway, certificate, interface name or address is read or answered; tests plant them on a fake machine and assert no answer carries them.
- **nm-applet**: `network-manager-applet` (official). Separate from `networkmanager`, which runs on servers and holds `node-uplink`; declares none of its packages. One start: the package's XDG autostart entry.
## Other changes
- `desktop.go` (shared by blueman, nextcloud-client and the four new bundles) gains `procsOf`/`stopProcs`/`waitForOf`: `polychromatic-tools` and `polychromatic-tray-applet` share the 15-character command name, so the tray is matched by its full program name and the tools never count or end themselves. A `copies_test.go` keeps the six copies identical.
- cups README: the desktop's print applet (`system-config-printer`) is not cups's (it needs a display, and cups needs none); left as found, a future desktop module if wanted.
- xdg README: the autostart owners updated, and geoclue's demo agent (a dependency's piece on the desktop) noted as left as found.
## Found while inspecting
The openrazer daemon has **failed at every login on both workstations**: the account is in `plugdev` but not in `openrazer`, which openrazer's udev rules and daemon now require. The module cannot declare the membership, because the account's `user` resource is zsh's and a second module declaring it collides at composition. One-off step per workstation: `sudo gpasswd -a $USER openrazer`, then log out of every session or reboot.
## Checks
`mctl module check modules/*`: the new modules pass; the 10 problems are the existing `node-backup` ones. `go vet` and `go test` pass for openrazer, polychromatic, forticlient, nm-applet, blueman, nextcloud-client, i3 (including the catalogue-wide contribution test with `i3 -C`), xdg and cups.
Not merged, built, assigned or pushed to any machine.
openrazer (the official driver, daemon and library), polychromatic (the
AUR tray, kept as found; its i3 line moves out of the i3 module into its
own node-display-session contribution), forticlient (the AUR VPN client:
its service declared, its configuration never read) and nm-applet (the
desktop half of NetworkManager, apart from the server-side module).
The openrazer daemon fails on both workstations because the account is
not in the openrazer group; openrazer_check names it and the README
carries the one-off step, since the account's user resource is zsh's.
desktop.go learns to tell a program from another sharing its 15-character
command name, so polychromatic's tools never count or end themselves, and
a copies test holds the six carriers to one text.
2026-10-06 23:05 (new) → proposed (announced): novox/mesh-catalog#60 merged; its head was not heard by this owner, so it is made from the forge's word
2026-10-06 23:05 proposed → held (merged-unchecked): merged without a passing check — a verdict known with it is taken first: only a person decides that it goes on
The commit's note under refs/notes/mesh-plan keeps every transition: git log --notes=mesh-plan.
<!-- mesh-delivery:view -->
**Delivery** `novox/mesh-catalog@97b1b2b36bec` — **held** since 2026-10-06T23:05:28Z
Held for a person: merged without a passing check: only a person decides that it goes on — `mesh-delivery.release` with why lets it go on.
**Delivery plan** — builds blueman, cups, forticlient, i3, nextcloud-client, nm-applet, openrazer, polychromatic → g14, shanks; no bus step
- tier 0: blueman, cups, forticlient, i3, nextcloud-client, nm-applet, openrazer, polychromatic
- g14: receives blueman, cups, forticlient, i3, nextcloud-client, nm-applet, openrazer, polychromatic
- shanks: receives blueman, cups, forticlient, i3, nextcloud-client, nm-applet, openrazer, polychromatic
**Transitions**
- 2026-10-06 23:05 (new) → proposed (announced): novox/mesh-catalog#60 merged; its head was not heard by this owner, so it is made from the forge's word
- 2026-10-06 23:05 proposed → held (merged-unchecked): merged without a passing check — a verdict known with it is taken first: only a person decides that it goes on
The commit's note under `refs/notes/mesh-plan` keeps every transition: `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.
The remaining tray applets of the workstations, each a module with one start (novox/hq ADR 0205, 0207, 0208, 0210, 0212, 0182).
New modules
openrazer-driver-dkms,openrazer-daemon,python-openrazer(official,extra). No start of its own: D-Bus activation oforg.razerthrough the package's user unit is the daemon's one start. Tools:openrazer_status,openrazer_restart,openrazer_check(driver built by DKMS for the running kernel and loaded, devices bound, account in theopenrazergroup and its service manager with it, daemon running once from its unit, devices seen over D-Bus, always--auto-start=no).node-display-sessioncontribution,exec --no-startup-id polychromatic-tray-applet, taken over from the i3 module, which drops the line in this change (config/configand module.json). The package's login helper also starts the tray while the app's setting is ticked:polychromatic_checknames that as a second start; the operator unticks it once.forticlient.servicedeclared running and enabled. The tray's one start is the vendor's XDG autostart entry (dex). Tools report running and connected state only: no profile, credential, gateway, certificate, interface name or address is read or answered; tests plant them on a fake machine and assert no answer carries them.network-manager-applet(official). Separate fromnetworkmanager, which runs on servers and holdsnode-uplink; declares none of its packages. One start: the package's XDG autostart entry.Other changes
desktop.go(shared by blueman, nextcloud-client and the four new bundles) gainsprocsOf/stopProcs/waitForOf:polychromatic-toolsandpolychromatic-tray-appletshare the 15-character command name, so the tray is matched by its full program name and the tools never count or end themselves. Acopies_test.gokeeps the six copies identical.system-config-printer) is not cups's (it needs a display, and cups needs none); left as found, a future desktop module if wanted.Found while inspecting
The openrazer daemon has failed at every login on both workstations: the account is in
plugdevbut not inopenrazer, which openrazer's udev rules and daemon now require. The module cannot declare the membership, because the account'suserresource is zsh's and a second module declaring it collides at composition. One-off step per workstation:sudo gpasswd -a $USER openrazer, then log out of every session or reboot.Checks
mctl module check modules/*: the new modules pass; the 10 problems are the existingnode-backupones.go vetandgo testpass for openrazer, polychromatic, forticlient, nm-applet, blueman, nextcloud-client, i3 (including the catalogue-wide contribution test withi3 -C), xdg and cups.Not merged, built, assigned or pushed to any machine.
7c55d0557atod0d5546088Delivery
novox/mesh-catalog@97b1b2b36bec— held since 2026-10-06T23:05:28ZHeld for a person: merged without a passing check: only a person decides that it goes on —
mesh-delivery.releasewith why lets it go on.Delivery plan — builds blueman, cups, forticlient, i3, nextcloud-client, nm-applet, openrazer, polychromatic → g14, shanks; no bus step
Transitions
The commit's note under
refs/notes/mesh-plankeeps every transition:git log --notes=mesh-plan.