Promise reset-failed and wanted-by on the service manager, optional (hq issue 332) #158

Merged
mesh-admin merged 1 commits from feat/service-manager-reset-failed-why-started into main 2026-10-08 15:31:41 +00:00
Contributor

Step 1 of ADR 0246 (a seat's new verb is promised before it is required) for two verbs on node-service-manager, hq issue 332 (the service manager cannot clear or explain a failed unit).

  • reset-failed {unit, scope}: clears one unit's failed record. Replaces systemctl reset-failed.
  • wanted-by {unit, scope}: read-only; the manager's reverse dependencies and every enable link naming the unit in the scope's configuration directories, each said dangling or not. Replaces systemctl list-dependencies --reverse, systemctl show -p WantedBy, reading ~/.config/systemd/user/*.wants.

Both are Optional, so the systemd module running today (nine verbs) still holds the seat, and the holder serving eleven (mesh-catalog, next) is accepted. Read back from the store's seat row they stay optional.

Test: TestResetFailedAndWantedByAreOptionalVerbsOfTheServiceManager; the seat's verb list in TestTheServiceManagerSeatServesTheUnitVerbs. merge-check.sh passed locally.

Step 3 (require both) is a later pull request, once the systemd module serving them is delivered everywhere.

Step 1 of ADR 0246 (a seat's new verb is promised before it is required) for two verbs on `node-service-manager`, hq issue 332 (the service manager cannot clear or explain a failed unit). - `reset-failed {unit, scope}`: clears one unit's failed record. Replaces `systemctl reset-failed`. - `wanted-by {unit, scope}`: read-only; the manager's reverse dependencies and every enable link naming the unit in the scope's configuration directories, each said dangling or not. Replaces `systemctl list-dependencies --reverse`, `systemctl show -p WantedBy`, reading `~/.config/systemd/user/*.wants`. Both are `Optional`, so the systemd module running today (nine verbs) still holds the seat, and the holder serving eleven (mesh-catalog, next) is accepted. Read back from the store's seat row they stay optional. Test: `TestResetFailedAndWantedByAreOptionalVerbsOfTheServiceManager`; the seat's verb list in `TestTheServiceManagerSeatServesTheUnitVerbs`. `merge-check.sh` passed locally. Step 3 (require both) is a later pull request, once the systemd module serving them is delivered everywhere.
mesh-admin added 1 commit 2026-10-08 15:21:57 +00:00
Promise reset-failed and wanted-by on the service manager, optional (hq issue 332)
mesh/merge-gate pass: builds build-agent, mesh-controller, route-proxy → ace, g14, novox, shanks; no bus step; every machine composes with the change as it…
mesh/repo-check pass: its merge-check.sh passed
mesh/delivery delivered
1acce7132e
A failed unit whose file is gone stays raised until its record is reset,
and nothing could say which unit or enable link still asks for it. Both
verbs are optional until the systemd module serves them (ADR 0246 step 1).
Author
Contributor

Delivery novox/mesh-controller@1acce7132e65 — delivered since 2026-10-08T15:46:27Z

Delivery plan — builds build-agent, mesh-controller, route-proxy → ace, g14, novox, shanks; no bus step

  • tier 0: mesh-controller
  • tier 1: build-agent
  • tier 2: route-proxy
  • ace: receives build-agent, route-proxy
  • g14: receives build-agent
  • novox: receives mesh-controller, build-agent, route-proxy
  • shanks: receives build-agent
  • build-agent keeps data (ADR 0233): what it holds is backed up before it moves
  • route-proxy provides route: its consumers are sent again after it
  • route-proxy keeps data (ADR 0233): what it holds is backed up before it moves

Machines

  • mesh-controller on novox: passed — healthy 3 times over 3m39s
  • mesh-controller on the rest running it: sent
  • build-agent on ace: passed — healthy 3 times over 3m26s
  • build-agent on the rest running it: sent
  • route-proxy on ace: passed — healthy 3 times over 3m34s
  • route-proxy on the rest running it: sent

Transitions

  • 2026-10-08 15:22 (new) → proposed (announced): novox/mesh-controller#158's head announced
  • 2026-10-08 15:26 proposed → checked (checked): the verdict names this commit
  • 2026-10-08 15:26 checked → ready (accepted): the gate passed or warned, and the repository's own check did not fail
  • 2026-10-08 15:31 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 15:31 published → delivering (go): its walk started: let go by this owner in its group's order, by a person, or on the controller's own path
  • 2026-10-08 15:46 delivering → delivered (done): its walk is done: every machine of its deploy plan passed, or was left as its policy says

The commit's note under refs/notes/mesh-plan keeps every transition: git log --notes=mesh-plan.

<!-- mesh-delivery:view --> **Delivery** `novox/mesh-controller@1acce7132e65` — **delivered** since 2026-10-08T15:46:27Z **Delivery plan** — builds build-agent, mesh-controller, route-proxy → ace, g14, novox, shanks; no bus step - tier 0: mesh-controller - tier 1: build-agent - tier 2: route-proxy - ace: receives build-agent, route-proxy - g14: receives build-agent - novox: receives mesh-controller, build-agent, route-proxy - shanks: receives build-agent - build-agent keeps data (ADR 0233): what it holds is backed up before it moves - route-proxy provides route: its consumers are sent again after it - route-proxy keeps data (ADR 0233): what it holds is backed up before it moves **Machines** - mesh-controller on novox: passed — healthy 3 times over 3m39s - mesh-controller on the rest running it: sent - build-agent on ace: passed — healthy 3 times over 3m26s - build-agent on the rest running it: sent - route-proxy on ace: passed — healthy 3 times over 3m34s - route-proxy on the rest running it: sent **Transitions** - 2026-10-08 15:22 (new) → proposed (announced): novox/mesh-controller#158's head announced - 2026-10-08 15:26 proposed → checked (checked): the verdict names this commit - 2026-10-08 15:26 checked → ready (accepted): the gate passed or warned, and the repository's own check did not fail - 2026-10-08 15:31 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 15:31 published → delivering (go): its walk started: let go by this owner in its group's order, by a person, or on the controller's own path - 2026-10-08 15:46 delivering → delivered (done): its walk is done: every machine of its deploy plan passed, or was left as its policy says The commit's note under `refs/notes/mesh-plan` keeps every transition: `git log --notes=mesh-plan`.
Author
Contributor

Merge check at 1acce713

  • mesh/merge-gate: PASS — every machine composes with the change as it did without (4 of 4 compose) (modules: build-agent, mesh-controller, route-proxy)
  • mesh/repo-check: PASS — its merge-check.sh passed

Delivery plan — builds build-agent, mesh-controller, route-proxy → ace, g14, novox, shanks; no bus step

  • tier 0: mesh-controller
  • tier 1: build-agent
  • tier 2: route-proxy
  • ace: receives build-agent, route-proxy
  • g14: receives build-agent
  • novox: receives mesh-controller, build-agent, route-proxy
  • shanks: receives build-agent
  • build-agent keeps data (ADR 0233): what it holds is backed up before it moves
  • route-proxy provides route: its consumers are sent again after it
  • route-proxy keeps data (ADR 0233): what it holds is backed up before it moves

Run by the build seat on ace as build-1791472921698311469 (builds --log build-1791472921698311469).

--- the gate: build-agent, mesh-controller, route-proxy
mesh-controller: ok, 51 tool(s); WARNING: controller stay(s) up and say(s) not how it is ready — judged by liveness alone, refused from 2026-11-18 (ADR 0240 rule 8)
long-running resources without health: 1
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 0 module(s) changed against 4 machine(s), as the snapshot of 2026-10-08T15:20:36Z 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-08T15:20:36Z

machines:
  - a machine (f35): composes
  - 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

a merge would rebuild 3 module(s) in 3 tier(s): build-agent, mesh-controller, route-proxy
--- its merge-check.sh (go toolchain)
ok  	github.com/novox/mesh-controller/cmd/mesh-builder	1.034s
ok  	github.com/novox/mesh-controller/cmd/mesh-controller	157.570s
ok  	github.com/novox/mesh-controller/examples/objectstore-provisioner	1.012s
ok  	github.com/novox/mesh-controller/examples/postgres-provisioner	1.017s
ok  	github.com/novox/mesh-controller/examples/redis-provisioner	1.011s
ok  	github.com/novox/mesh-controller/examples/route-proxy	1.142s
ok  	github.com/novox/mesh-controller/internal/artifacts	1.032s
ok  	github.com/novox/mesh-controller/internal/broker	2.411s
ok  	github.com/novox/mesh-controller/internal/builder	1.784s
ok  	github.com/novox/mesh-controller/internal/catalogue	3.951s
ok  	github.com/novox/mesh-controller/internal/conditions	2.185s
ok  	github.com/novox/mesh-controller/internal/envfile	1.056s
ok  	github.com/novox/mesh-controller/internal/facts	1.098s
ok  	github.com/novox/mesh-controller/internal/identity	4.006s
ok  	github.com/novox/mesh-controller/internal/inventory	69.197s
ok  	github.com/novox/mesh-controller/internal/lease	17.724s
ok  	github.com/novox/mesh-controller/internal/licences	3.657s
ok  	github.com/novox/mesh-controller/internal/licences/adapters	1.090s
ok  	github.com/novox/mesh-controller/internal/link	43.734s
ok  	github.com/novox/mesh-controller/internal/lint	1.924s
ok  	github.com/novox/mesh-controller/internal/outward	1.080s
ok  	github.com/novox/mesh-controller/internal/overlay	1.062s
ok  	github.com/novox/mesh-controller/internal/secrets	1.422s
ok  	github.com/novox/mesh-controller/internal/store	3.251s
ok  	github.com/novox/mesh-controller/internal/testbus	1.217s
ok  	github.com/novox/mesh-controller/internal/token	1.016s
**Merge check** at `1acce713` - `mesh/merge-gate`: **PASS** — every machine composes with the change as it did without (4 of 4 compose) (modules: build-agent, mesh-controller, route-proxy) - `mesh/repo-check`: **PASS** — its merge-check.sh passed **Delivery plan** — builds build-agent, mesh-controller, route-proxy → ace, g14, novox, shanks; no bus step - tier 0: mesh-controller - tier 1: build-agent - tier 2: route-proxy - ace: receives build-agent, route-proxy - g14: receives build-agent - novox: receives mesh-controller, build-agent, route-proxy - shanks: receives build-agent - build-agent keeps data (ADR 0233): what it holds is backed up before it moves - route-proxy provides route: its consumers are sent again after it - route-proxy keeps data (ADR 0233): what it holds is backed up before it moves Run by the build seat on ace as `build-1791472921698311469` (`builds --log build-1791472921698311469`). ``` --- the gate: build-agent, mesh-controller, route-proxy mesh-controller: ok, 51 tool(s); WARNING: controller stay(s) up and say(s) not how it is ready — judged by liveness alone, refused from 2026-11-18 (ADR 0240 rule 8) long-running resources without health: 1 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 0 module(s) changed against 4 machine(s), as the snapshot of 2026-10-08T15:20:36Z 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-08T15:20:36Z machines: - a machine (f35): composes - 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 a merge would rebuild 3 module(s) in 3 tier(s): build-agent, mesh-controller, route-proxy --- its merge-check.sh (go toolchain) ok github.com/novox/mesh-controller/cmd/mesh-builder 1.034s ok github.com/novox/mesh-controller/cmd/mesh-controller 157.570s ok github.com/novox/mesh-controller/examples/objectstore-provisioner 1.012s ok github.com/novox/mesh-controller/examples/postgres-provisioner 1.017s ok github.com/novox/mesh-controller/examples/redis-provisioner 1.011s ok github.com/novox/mesh-controller/examples/route-proxy 1.142s ok github.com/novox/mesh-controller/internal/artifacts 1.032s ok github.com/novox/mesh-controller/internal/broker 2.411s ok github.com/novox/mesh-controller/internal/builder 1.784s ok github.com/novox/mesh-controller/internal/catalogue 3.951s ok github.com/novox/mesh-controller/internal/conditions 2.185s ok github.com/novox/mesh-controller/internal/envfile 1.056s ok github.com/novox/mesh-controller/internal/facts 1.098s ok github.com/novox/mesh-controller/internal/identity 4.006s ok github.com/novox/mesh-controller/internal/inventory 69.197s ok github.com/novox/mesh-controller/internal/lease 17.724s ok github.com/novox/mesh-controller/internal/licences 3.657s ok github.com/novox/mesh-controller/internal/licences/adapters 1.090s ok github.com/novox/mesh-controller/internal/link 43.734s ok github.com/novox/mesh-controller/internal/lint 1.924s ok github.com/novox/mesh-controller/internal/outward 1.080s ok github.com/novox/mesh-controller/internal/overlay 1.062s ok github.com/novox/mesh-controller/internal/secrets 1.422s ok github.com/novox/mesh-controller/internal/store 3.251s ok github.com/novox/mesh-controller/internal/testbus 1.217s ok github.com/novox/mesh-controller/internal/token 1.016s ```
mesh-admin merged commit 0cf5a3a5ba into main 2026-10-08 15:31:41 +00:00
mesh-admin deleted branch feat/service-manager-reset-failed-why-started 2026-10-08 15:31:41 +00:00
This repo is archived. You cannot comment on pull requests.
No Reviewers
1 Participants
Due Date
No due date set.
Dependencies

No dependencies set.

Reference: novox/mesh-controller#158