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:
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.
The agent's managed instructions carry an "instead of" table generated from that on every render.
mesh_search (the mesh MCP server) finds a tool by the command it replaces, ranked.
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.
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.
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.
Deliverynovox/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`.
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 mesh2026-10-07 18:28:27 +00:00
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.
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.
The agent reached the mesh's machines over ssh (
journalctl,docker logs) becausemesh_searchnever 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:
replaces; the controller answers both.mesh_search(the mesh MCP server) finds a tool by the command it replaces, ranked.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.
Delivery
novox/hq@6cacf772dc64— delivered since 2026-10-07T19:10:10ZDelivery plan — builds nothing: the change touches no module of the mesh's graph
Transitions
The commit's note under
refs/notes/mesh-plankeeps every transition:git log --notes=mesh-plan.71339dc48dto666095c4abADR 0242: a verb says what it replaces, and the agent is guarded from working round the meshto ADR 0245: a verb says what it replaces, and the agent is guarded from working round the mesh666095c4abto24aeeadfe324aeeadfe3to10ab240eea10ab240eeato6cacf772dc