systemd: port to Go, and read a system unit's journal as root (hq issue 255) #65

Merged
mesh-admin merged 1 commits from feat/systemd-in-go into main 2026-10-05 16:10:03 +00:00
Contributor

node-service-manager.journal answered "-- No entries --" for every system service on three of four machines: journalctl ran as the operator account, which outside the journal's group sees only its own entries. The read now escalates with sudo -n like the acts (the operator account has passwordless escalation on all four through the mesh's drop-in — checked with sudo.sudo_check). The account's own (user-scope) journal is not escalated.

Ported to Go (operator's rule): the eight seat verbs as node-service-manager.<verb> and systemd_failed, behaviour unchanged otherwise. Every TypeScript test ported (escalation, user scope env, system scope no session words, wrong account refused, acts and state after, restore note, mesh_declared, sudo/polkit refusals named, unreachable user manager, failed per manager, unit names never options) plus the journal escalation and a manifest/tools agreement test. go vet, gofmt clean; module check ok.

`node-service-manager.journal` answered "-- No entries --" for every system service on three of four machines: journalctl ran as the operator account, which outside the journal's group sees only its own entries. The read now escalates with `sudo -n` like the acts (the operator account has passwordless escalation on all four through the mesh's drop-in — checked with `sudo.sudo_check`). The account's own (user-scope) journal is not escalated. Ported to Go (operator's rule): the eight seat verbs as `node-service-manager.<verb>` and `systemd_failed`, behaviour unchanged otherwise. Every TypeScript test ported (escalation, user scope env, system scope no session words, wrong account refused, acts and state after, restore note, mesh_declared, sudo/polkit refusals named, unreachable user manager, failed per manager, unit names never options) plus the journal escalation and a manifest/tools agreement test. `go vet`, gofmt clean; `module check` ok.
mesh-admin added 1 commit 2026-10-05 16:09:54 +00:00
The journal verb ran journalctl as the operator account, which outside the
journal's group sees only its own entries: every system service read
'-- No entries --', and a person reached for a shell. The read now
escalates with sudo -n like the acts; ported to Go with every test. hq
issue 255.
mesh-admin merged commit b651137d95 into main 2026-10-05 16:10:03 +00:00
mesh-admin deleted branch feat/systemd-in-go 2026-10-05 16:10:03 +00:00
Author
Contributor

Delivery novox/mesh-catalog@b651137d95a7 — 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 systemd → ace, g14, novox, shanks; no bus step

  • tier 0: systemd
  • ace: receives systemd
  • g14: receives systemd
  • novox: receives systemd
  • shanks: receives systemd

Transitions

  • 2026-10-06 23:05 (new) → proposed (announced): novox/mesh-catalog#65 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@b651137d95a7` — **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 systemd → ace, g14, novox, shanks; no bus step - tier 0: systemd - ace: receives systemd - g14: receives systemd - novox: receives systemd - shanks: receives systemd **Transitions** - 2026-10-06 23:05 (new) → proposed (announced): novox/mesh-catalog#65 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`.
Sign in to join this conversation.
No Reviewers
1 Participants
Notifications
Due Date
No due date set.
Dependencies

No dependencies set.

Reference: novox/mesh-catalog#65