Registers issue 339 (status: located, critical). Do not merge without review.
Symptom (read in code, not run): the places setting moves a module's directory to any absolute path with any uid:gid owner, and accesses names any path to mount into its container. Both went through the ordinary settings verb (and command "settings set …"). The node-engine then chowned and chmodded the directory as root, through a link too. One call plus a push hands /etc to an account. A line break in any setting adds a line to a file written as root.
ADR 0266's boundary depends on this fix. The issue says so. ADR 0266 is still on PR #225, so it is named without a link.
Located: mesh-controller #168 (terminal-only keys through every verb route, system-tree refusal everywhere, one-line settings) and mesh-host #63 (the engine's guard, links not followed, a found directory used as found). They are independent.
Step 3 (live, read-only): all 381 layers were read (136 modules, whole mesh plus each assigned machine). 15 set places/accesses, all legitimate data placements, none in a system tree. The engine's guard over today's declarations for all four nodes refused nothing.
The diagnosis ends with the live acceptance calls to run after both merge.
Checks run locally: records.py, index.py, cycle.py, words.py (with the catalogue's list) all pass.
Registers issue 339 (status: located, critical). Do not merge without review.
- **Symptom (read in code, not run):** the `places` setting moves a module's directory to any absolute path with any `uid:gid` owner, and `accesses` names any path to mount into its container. Both went through the ordinary `settings` verb (and `command "settings set …"`). The node-engine then chowned and chmodded the directory as root, through a link too. One call plus a push hands `/etc` to an account. A line break in any setting adds a line to a file written as root.
- **ADR 0266's boundary depends on this fix.** The issue says so. ADR 0266 is still on PR #225, so it is named without a link.
- **Located:** mesh-controller #168 (terminal-only keys through every verb route, system-tree refusal everywhere, one-line settings) and mesh-host #63 (the engine's guard, links not followed, a found directory used as found). They are independent.
- **Step 3 (live, read-only):** all 381 layers were read (136 modules, whole mesh plus each assigned machine). 15 set `places`/`accesses`, all legitimate data placements, none in a system tree. The engine's guard over today's declarations for all four nodes refused nothing.
- The diagnosis ends with the live acceptance calls to run after both merge.
Checks run locally: records.py, index.py, cycle.py, words.py (with the catalogue's list) all pass.
Located in the controller (places and accesses taken through every verb, no line-break check) and the node-engine (a found directory chowned as root, through a link too, and any path mounted). ADR 0266's boundary depends on the fix.
Deliverynovox/hq@ac3a67ebaba5 — delivered since 2026-10-08T22:21:10Z
Delivery plan — builds nothing: the change touches no module of the mesh's graph
Transitions
2026-10-08 22:01 (new) → proposed (announced): novox/hq#234's head announced
2026-10-08 22:01 proposed → checked (checked): the verdict names this commit
2026-10-08 22:01 checked → ready (accepted): the gate passed or warned, and the repository's own check did not fail
2026-10-08 22:21 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 22:21 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@ac3a67ebaba5` — **delivered** since 2026-10-08T22:21:10Z
**Delivery plan** — builds nothing: the change touches no module of the mesh's graph
**Transitions**
- 2026-10-08 22:01 (new) → proposed (announced): novox/hq#234's head announced
- 2026-10-08 22:01 proposed → checked (checked): the verdict names this commit
- 2026-10-08 22:01 checked → ready (accepted): the gate passed or warned, and the repository's own check did not fail
- 2026-10-08 22:21 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 22:21 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`.
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.
Registers issue 339 (status: located, critical). Do not merge without review.
placessetting moves a module's directory to any absolute path with anyuid:gidowner, andaccessesnames any path to mount into its container. Both went through the ordinarysettingsverb (andcommand "settings set …"). The node-engine then chowned and chmodded the directory as root, through a link too. One call plus a push hands/etcto an account. A line break in any setting adds a line to a file written as root.places/accesses, all legitimate data placements, none in a system tree. The engine's guard over today's declarations for all four nodes refused nothing.Checks run locally: records.py, index.py, cycle.py, words.py (with the catalogue's list) all pass.
Delivery
novox/hq@ac3a67ebaba5— delivered since 2026-10-08T22:21: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.