ADR 0245: a verb says what it replaces, and the agent is guarded from working round the mesh #173

Merged
mesh-admin merged 1 commits from decision/0242-a-verb-says-what-it-replaces into main 2026-10-07 19:10:01 +00:00
Contributor

The agent reached the mesh's machines over ssh (journalctl, docker logs) because mesh_search never found the verbs by the commands it knew. Operator's decision, 2026-10-07: make the mesh's own tools win, three ways.

Records the rules and how each is checked:

  1. A seat verb (in its definition) or a module's own tool (in its manifest) says which shell commands it replaces; the controller answers both.
  2. The agent's managed instructions carry an "instead of" table generated from that on every render.
  3. mesh_search (the mesh MCP server) finds a tool by the command it replaces, ranked.
  4. A PreToolUse guard, delivered in the agent module's plugin, refuses ssh (and kin) to a mesh machine and the local work-arounds for a mesh name, naming the tool or saying one must be created. The forge's git account passes, stated.
  5. The operator's override: read only from the session's start environment, every override and refusal recorded; an unrecordable override is not honoured.

Numbered 0245 (0242, 0243 and 0244 were taken while it was written; the branch name keeps the first number). Rebased on main; to-be 36 names the decision (§3, How it is checked). records, index (written with --write), cycle and words pass.

Implementation: mesh-controller#118, mesh-tools#21, mesh-catalog#110.

The agent reached the mesh's machines over ssh (`journalctl`, `docker logs`) because `mesh_search` never found the verbs by the commands it knew. Operator's decision, 2026-10-07: make the mesh's own tools win, three ways. Records the rules and how each is checked: 1. A seat verb (in its definition) or a module's own tool (in its manifest) says which shell commands it `replaces`; the controller answers both. 2. The agent's managed instructions carry an "instead of" table **generated** from that on every render. 3. `mesh_search` (the mesh MCP server) finds a tool by the command it replaces, ranked. 4. A PreToolUse guard, delivered in the agent module's plugin, refuses ssh (and kin) to a mesh machine and the local work-arounds for a mesh name, naming the tool or saying one must be created. The forge's git account passes, stated. 5. The operator's override: read only from the session's start environment, every override and refusal recorded; an unrecordable override is not honoured. Numbered 0245 (0242, 0243 and 0244 were taken while it was written; the branch name keeps the first number). Rebased on main; to-be 36 names the decision (§3, How it is checked). records, index (written with `--write`), cycle and words pass. Implementation: mesh-controller#118, mesh-tools#21, mesh-catalog#110.
Author
Contributor

Delivery novox/hq@6cacf772dc64 — delivered since 2026-10-07T19:10:10Z

Delivery plan — builds nothing: the change touches no module of the mesh's graph

Transitions

  • 2026-10-07 19:04 (new) → proposed (announced): novox/hq#173's head announced
  • 2026-10-07 19:06 proposed → checked (checked): the verdict names this commit
  • 2026-10-07 19:06 checked → ready (accepted): the gate passed or warned, and the repository's own check did not fail
  • 2026-10-07 19:10 ready → published (merged): on the trunk its modules follow: merged there, and its walk opened — or nothing for a walk to move
  • 2026-10-07 19:10 published → delivered (done): nothing for a walk to move

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

<!-- mesh-delivery:view --> **Delivery** `novox/hq@6cacf772dc64` — **delivered** since 2026-10-07T19:10:10Z **Delivery plan** — builds nothing: the change touches no module of the mesh's graph **Transitions** - 2026-10-07 19:04 (new) → proposed (announced): novox/hq#173's head announced - 2026-10-07 19:06 proposed → checked (checked): the verdict names this commit - 2026-10-07 19:06 checked → ready (accepted): the gate passed or warned, and the repository's own check did not fail - 2026-10-07 19:10 ready → published (merged): on the trunk its modules follow: merged there, and its walk opened — or nothing for a walk to move - 2026-10-07 19:10 published → delivered (done): nothing for a walk to move The commit's note under `refs/notes/mesh-plan` keeps every transition: `git log --notes=mesh-plan`.
jschoubben force-pushed decision/0242-a-verb-says-what-it-replaces from 71339dc48d to 666095c4ab 2026-10-07 17:53:06 +00:00 Compare
mesh-admin changed title from ADR 0242: a verb says what it replaces, and the agent is guarded from working round the mesh to ADR 0245: a verb says what it replaces, and the agent is guarded from working round the mesh 2026-10-07 18:28:27 +00:00
jschoubben force-pushed decision/0242-a-verb-says-what-it-replaces from 666095c4ab to 24aeeadfe3 2026-10-07 18:29:12 +00:00 Compare
jschoubben force-pushed decision/0242-a-verb-says-what-it-replaces from 24aeeadfe3 to 10ab240eea 2026-10-07 18:54:21 +00:00 Compare
jschoubben added 1 commit 2026-10-07 19:04:28 +00:00
ADR 0245: a verb says what it replaces, and the agent is guarded from working round the mesh
mesh/merge-gate pass: the change touches no module of the mesh's graph
mesh/repo-check pass: its merge-check.sh passed
mesh/delivery delivered
6cacf772dc
The agent reached machines over ssh because search never found the verbs by the commands it knew.
Records the three rules (generated instead-of table, search by replaced command, the shell guard
with the operator's recorded override) and how each is checked; to-be 36 names it.
jschoubben force-pushed decision/0242-a-verb-says-what-it-replaces from 10ab240eea to 6cacf772dc 2026-10-07 19:04:28 +00:00 Compare
mesh-admin merged commit 921ff3e6c4 into main 2026-10-07 19:10:01 +00:00
mesh-admin deleted branch decision/0242-a-verb-says-what-it-replaces 2026-10-07 19:10:01 +00:00
Sign in to join this conversation.
No Reviewers
2 Participants
Notifications
Due Date
No due date set.
Dependencies

No dependencies set.

Reference: novox/hq#173