Files
mesh-contracts/seats/node-service-manager/seat.json
T
jschoubben df74b712c0 SD-M3: every other seat at the seat list's grain, in its reading order (ADR 0613 §2)
Converted mechanically from mesh-sdk's compiled list at 5a38a12 by a program kept out of the repository; the three new
registry seats follow npm-package-registry, operator-channel the mesh's own seats.

Claude-Session: https://claude.ai/code/session_01JG73KJNrH5EgFXMKKYSrig
2026-11-04 11:50:54 +01:00

306 lines
9.8 KiB
JSON

{
"format": 1,
"seat": "node-service-manager",
"scope": "node",
"grain": "seat-list",
"decision": "novox/hq ADR 0177",
"verbs": [
{
"name": "units",
"description": "The units the service manager knows in a scope, each with its load, active and sub state; narrowed to a pattern when asked.",
"replaces": [
"systemctl list-units"
],
"input": {
"properties": {
"pattern": {
"description": "a glob the unit's name must match (optional)",
"type": "string"
},
"scope": {
"description": "\"system\" (the default) or \"user\": the operator account's own manager",
"type": "string"
}
},
"type": "object"
}
},
{
"name": "status",
"description": "One unit as the service manager sees it now: its states, whether it starts at boot, its main process, and whether the mesh declares it.",
"replaces": [
"systemctl status",
"systemctl is-active"
],
"input": {
"properties": {
"scope": {
"description": "\"system\" (the default) or \"user\": the operator account's own manager",
"type": "string"
},
"unit": {
"description": "the unit's name, as the service manager knows it",
"type": "string"
}
},
"required": [
"unit"
],
"type": "object"
}
},
{
"name": "start",
"description": "Start one unit. For a unit the mesh declares, the answer says the host will restore what its declaration says at the next apply.",
"replaces": [
"systemctl start"
],
"input": {
"properties": {
"scope": {
"description": "\"system\" (the default) or \"user\": the operator account's own manager",
"type": "string"
},
"unit": {
"description": "the unit's name, as the service manager knows it",
"type": "string"
}
},
"required": [
"unit"
],
"type": "object"
}
},
{
"name": "stop",
"description": "Stop one unit; for a mesh-declared unit the answer says the host will restore its declared state.",
"replaces": [
"systemctl stop"
],
"input": {
"properties": {
"scope": {
"description": "\"system\" (the default) or \"user\": the operator account's own manager",
"type": "string"
},
"unit": {
"description": "the unit's name, as the service manager knows it",
"type": "string"
}
},
"required": [
"unit"
],
"type": "object"
}
},
{
"name": "restart",
"description": "Restart one unit.",
"replaces": [
"systemctl restart"
],
"input": {
"properties": {
"scope": {
"description": "\"system\" (the default) or \"user\": the operator account's own manager",
"type": "string"
},
"unit": {
"description": "the unit's name, as the service manager knows it",
"type": "string"
}
},
"required": [
"unit"
],
"type": "object"
}
},
{
"name": "enable",
"description": "Make one unit start at boot (or at the account's login, in user scope).",
"replaces": [
"systemctl enable"
],
"input": {
"properties": {
"scope": {
"description": "\"system\" (the default) or \"user\": the operator account's own manager",
"type": "string"
},
"unit": {
"description": "the unit's name, as the service manager knows it",
"type": "string"
}
},
"required": [
"unit"
],
"type": "object"
}
},
{
"name": "disable",
"description": "Stop one unit starting at boot (or at login, in user scope).",
"replaces": [
"systemctl disable"
],
"input": {
"properties": {
"scope": {
"description": "\"system\" (the default) or \"user\": the operator account's own manager",
"type": "string"
},
"unit": {
"description": "the unit's name, as the service manager knows it",
"type": "string"
}
},
"required": [
"unit"
],
"type": "object"
}
},
{
"name": "journal",
"description": "The last lines of one unit's journal (at most 2000), in a time window and narrowed to a priority and to lines holding a text when asked. A secret the unit printed is shown as [redacted: \u003cwhat it was\u003e].",
"replaces": [
"journalctl"
],
"input": {
"properties": {
"lines": {
"description": "how many lines from the end of what matches (default 100, at most 2000)",
"type": "string"
},
"match": {
"description": "only the lines holding this text, as written — a fixed string, not a pattern (optional)",
"type": "string"
},
"priority": {
"description": "only entries this severe or more: 0-7 or emerg, alert, crit, err, warning, notice, info, debug (optional)",
"type": "string"
},
"scope": {
"description": "\"system\" (the default) or \"user\": the operator account's own manager",
"type": "string"
},
"since": {
"description": "the window's start: an RFC 3339 time (2026-10-07T09:30:00Z) or relative to now (-30min, -2h, yesterday) (optional)",
"type": "string"
},
"unit": {
"description": "the unit's name, as the service manager knows it",
"type": "string"
},
"until": {
"description": "the window's end, in the same forms (optional; now when absent)",
"type": "string"
}
},
"required": [
"unit"
],
"type": "object"
}
},
{
"name": "failed",
"description": "Every failed unit on this machine, in the system manager and in the operator account's; a manager that does not answer is reported with its error, never as nothing failed.",
"optional": true,
"replaces": [
"systemctl --failed"
],
"input": {
"properties": {
"scope": {
"description": "\"system\" or \"user\": only that manager (both when absent)",
"type": "string"
}
},
"type": "object"
}
},
{
"name": "reset-failed",
"description": "Clear one unit's failed record in its manager — its failed state and its start-limit count — and answer its state after. It removes no file and starts nothing.",
"replaces": [
"systemctl reset-failed"
],
"input": {
"properties": {
"scope": {
"description": "\"system\" (the default) or \"user\": the operator account's own manager",
"type": "string"
},
"unit": {
"description": "the unit's name, as the service manager knows it",
"type": "string"
}
},
"required": [
"unit"
],
"type": "object"
}
},
{
"name": "wanted-by",
"description": "What wants, requires or triggers one unit, read-only: the manager's reverse dependencies (WantedBy, RequiredBy, UpheldBy, BoundBy, TriggeredBy and the rest) and every enable link naming it in the scope's configuration directories (*.wants, *.requires, *.upholds), each with where it points and whether it dangles — the account's own directory included in user scope.",
"replaces": [
"systemctl list-dependencies --reverse",
"systemctl show -p WantedBy",
"ls ~/.config/systemd/user/*.wants"
],
"input": {
"properties": {
"scope": {
"description": "\"system\" (the default) or \"user\": the operator account's own manager",
"type": "string"
},
"unit": {
"description": "the unit's name, as the service manager knows it",
"type": "string"
}
},
"required": [
"unit"
],
"type": "object"
}
},
{
"name": "unlink-dangling",
"description": "Remove the dangling enable links named for one unit — links in a *.wants, *.requires or *.upholds directory of the account's or the machine's own configuration whose target does not exist, which `disable` leaves once the unit's file is gone — on the person's word: `why` is required. Each is recorded (its path, its target, the reason) before it is removed, and the manager reloaded; a link whose target exists, or one a package, a generator or the runtime placed, is left and said.",
"replaces": [
"rm ~/.config/systemd/user/*.wants/\u003cunit\u003e",
"unlink /etc/systemd/system/*.wants/\u003cunit\u003e"
],
"input": {
"properties": {
"scope": {
"description": "\"system\" (the default) or \"user\": the operator account's own manager",
"type": "string"
},
"unit": {
"description": "the unit's name, as the service manager knows it",
"type": "string"
},
"why": {
"description": "the person's reason for removing the links, kept in the record",
"type": "string"
}
},
"required": [
"unit",
"why"
],
"type": "object"
}
}
]
}