New module dbus, the first holder of the node seat node-message-bus (hq ADR 0215).
What it declares
claims node-message-bus (scope node), capabilities package-manager and service-manager
packages dbus, dbus-broker, dbus-broker-units. All four machines have them (dbus 1.16.2-1, dbus-broker 37-3), and no other module declares them.
service dbus-broker.service: state: running only. No boot, no restart-on, no reload-on.
Why no boot state.dbus.service is an alias, so the host cannot declare it enabled. dbus-broker.service reads disabled on three machines and enabled on one. At boot it is started through dbus.socket, which the dbus package links into sockets.target, and the alias link that dbus-broker-units ships in /usr/lib. Declaring it enabled would make the host write a new alias link into /etc on three running machines for no gain. ADR 0215 §1 says "running and enabled". On these machines it is enabled through the package, not through the unit file. This may deserve a progressive-insight note on the ADR.
Watcher (godbus, system bus, as the operator account). Emits bus.stalled (GetId takes more than 3 s, or the bus cannot be reached), bus.recovered, bus.restarted (bus id or driver pid changed within one boot), service.appeared / service.left (well-known names only, 10 s debounce, with pid, process and unit), and policy.denied (from the bus unit's journal, at most once per 5 min, with a count and up to 5 header-only examples). It never monitors and never publishes traffic. It reconnects when the bus goes away. Events queue in order while the mesh bus is unreachable, capped at 1000 with the oldest dropped first.
Tools:dbus_names, dbus_introspect (uses --auto-start=no and never returns property values), dbus_monitor (at most 15 s, headers only, system bus through sudo -n), dbus_check (shows when a reboot is due because the running bus is older than its package, missing SystemdService units, denials in the last hour, watcher state), dbus_health.
Tested: go vet, go test -race (fake bus: debounce, unique names ignored, stall and recovery, restart against a boot, queueing, denial rate limit, no traffic in any event body; parsing against recorded answers; manifest test). mctl module check modules/*: all 105 manifests pass. A read-only live test (MESH_LIVE=1) passed on the laptop.
Not merged, built or assigned.
New module `dbus`, the first holder of the node seat `node-message-bus` (hq ADR 0215).
**What it declares**
- claims `node-message-bus` (scope node), capabilities package-manager and service-manager
- packages `dbus`, `dbus-broker`, `dbus-broker-units`. All four machines have them (dbus 1.16.2-1, dbus-broker 37-3), and no other module declares them.
- service `dbus-broker.service`: `state: running` only. No `boot`, no `restart-on`, no `reload-on`.
**Why no boot state.** `dbus.service` is an alias, so the host cannot declare it enabled. `dbus-broker.service` reads `disabled` on three machines and `enabled` on one. At boot it is started through `dbus.socket`, which the dbus package links into sockets.target, and the alias link that dbus-broker-units ships in /usr/lib. Declaring it enabled would make the host write a new alias link into /etc on three running machines for no gain. ADR 0215 §1 says "running and enabled". On these machines it is enabled through the package, not through the unit file. This may deserve a progressive-insight note on the ADR.
**Watcher (godbus, system bus, as the operator account).** Emits `bus.stalled` (GetId takes more than 3 s, or the bus cannot be reached), `bus.recovered`, `bus.restarted` (bus id or driver pid changed within one boot), `service.appeared` / `service.left` (well-known names only, 10 s debounce, with pid, process and unit), and `policy.denied` (from the bus unit's journal, at most once per 5 min, with a count and up to 5 header-only examples). It never monitors and never publishes traffic. It reconnects when the bus goes away. Events queue in order while the mesh bus is unreachable, capped at 1000 with the oldest dropped first.
**Tools:** `dbus_names`, `dbus_introspect` (uses --auto-start=no and never returns property values), `dbus_monitor` (at most 15 s, headers only, system bus through sudo -n), `dbus_check` (shows when a reboot is due because the running bus is older than its package, missing SystemdService units, denials in the last hour, watcher state), `dbus_health`.
**Tested:** go vet, go test -race (fake bus: debounce, unique names ignored, stall and recovery, restart against a boot, queueing, denial rate limit, no traffic in any event body; parsing against recorded answers; manifest test). `mctl module check modules/*`: all 105 manifests pass. A read-only live test (MESH_LIVE=1) passed on the laptop.
Not merged, built or assigned.
A live restart of the system bus during an upgrade hung every login on a
workstation until a reboot. The module owns the bus's packages, declares
the bus running with no restart or reload trigger, publishes only curated
events (health, services, denials; never traffic) and serves tools to look
at both buses.
Deliverynovox/mesh-catalog@45f27eb30031 — 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 dbus → ace, g14, novox, shanks; no bus step
tier 0: dbus
ace: receives dbus
g14: receives dbus
novox: receives dbus
shanks: receives dbus
Transitions
2026-10-06 23:05 (new) → proposed (announced): novox/mesh-catalog#51 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@45f27eb30031` — **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 dbus → ace, g14, novox, shanks; no bus step
- tier 0: dbus
- ace: receives dbus
- g14: receives dbus
- novox: receives dbus
- shanks: receives dbus
**Transitions**
- 2026-10-06 23:05 (new) → proposed (announced): novox/mesh-catalog#51 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.
New module
dbus, the first holder of the node seatnode-message-bus(hq ADR 0215).What it declares
node-message-bus(scope node), capabilities package-manager and service-managerdbus,dbus-broker,dbus-broker-units. All four machines have them (dbus 1.16.2-1, dbus-broker 37-3), and no other module declares them.dbus-broker.service:state: runningonly. Noboot, norestart-on, noreload-on.Why no boot state.
dbus.serviceis an alias, so the host cannot declare it enabled.dbus-broker.servicereadsdisabledon three machines andenabledon one. At boot it is started throughdbus.socket, which the dbus package links into sockets.target, and the alias link that dbus-broker-units ships in /usr/lib. Declaring it enabled would make the host write a new alias link into /etc on three running machines for no gain. ADR 0215 §1 says "running and enabled". On these machines it is enabled through the package, not through the unit file. This may deserve a progressive-insight note on the ADR.Watcher (godbus, system bus, as the operator account). Emits
bus.stalled(GetId takes more than 3 s, or the bus cannot be reached),bus.recovered,bus.restarted(bus id or driver pid changed within one boot),service.appeared/service.left(well-known names only, 10 s debounce, with pid, process and unit), andpolicy.denied(from the bus unit's journal, at most once per 5 min, with a count and up to 5 header-only examples). It never monitors and never publishes traffic. It reconnects when the bus goes away. Events queue in order while the mesh bus is unreachable, capped at 1000 with the oldest dropped first.Tools:
dbus_names,dbus_introspect(uses --auto-start=no and never returns property values),dbus_monitor(at most 15 s, headers only, system bus through sudo -n),dbus_check(shows when a reboot is due because the running bus is older than its package, missing SystemdService units, denials in the last hour, watcher state),dbus_health.Tested: go vet, go test -race (fake bus: debounce, unique names ignored, stall and recovery, restart against a boot, queueing, denial rate limit, no traffic in any event body; parsing against recorded answers; manifest test).
mctl module check modules/*: all 105 manifests pass. A read-only live test (MESH_LIVE=1) passed on the laptop.Not merged, built or assigned.
Delivery
novox/mesh-catalog@45f27eb30031— 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 dbus → ace, g14, novox, shanks; no bus step
Transitions
The commit's note under
refs/notes/mesh-plankeeps every transition:git log --notes=mesh-plan.