Issue 1409; design 39 parts §15 and the lead's answer D3 (hq design/39-list-secret-place). Group with mesh-contracts fix/1409-list-secret-place (the node-files seat's list text).
Live: novox/node-files.list of a module's state directory is refused as a place a secret is kept, and stat of a missing file there answers "its file modes refuse it", so no tool can say design 39 parts §15's files are gone.
S1 (mesh-files): a list of a place in the mesh's places or a machine's credential places, at any depth and through root, answers each entry's name, type, owner, group, mode, size and a link's target held to the content rule, never content, marked secret-place; /proc// entries stay refused; read, search and the refuser are unchanged; the lines touched cite ADR 0394 §7.
S2 (mesh-files): stat of a path root finds missing says it does not exist.
The served list text is the contract's word for word.
Playbook 08's one-repository rule is bent for one line of contract text (no verb, no field) in mesh-contracts, as D3 says. Known limit: S2 reads sudo's English "No such file or directory"; whether a locale setting reaches stat through sudo depends on the node's sudoers.
Tests: rows in existing tests (no new function); vet, vet -tags integration, unit; checks secrets, paths, words, gofmt with a trunk beside.
Reviewed-by: mesh-code-reviewer@shanks at ab1eb0cb47 (round 3)
Pushed-by: fix-1965@shanks
Issue 1409; design 39 parts §15 and the lead's answer D3 (hq design/39-list-secret-place). Group with mesh-contracts fix/1409-list-secret-place (the node-files seat's list text).
Live: novox/node-files.list of a module's state directory is refused as a place a secret is kept, and stat of a missing file there answers "its file modes refuse it", so no tool can say design 39 parts §15's files are gone.
- S1 (mesh-files): a list of a place in the mesh's places or a machine's credential places, at any depth and through root, answers each entry's name, type, owner, group, mode, size and a link's target held to the content rule, never content, marked secret-place; /proc/<pid>/ entries stay refused; read, search and the refuser are unchanged; the lines touched cite ADR 0394 §7.
- S2 (mesh-files): stat of a path root finds missing says it does not exist.
- The served list text is the contract's word for word.
Playbook 08's one-repository rule is bent for one line of contract text (no verb, no field) in mesh-contracts, as D3 says. Known limit: S2 reads sudo's English "No such file or directory"; whether a locale setting reaches stat through sudo depends on the node's sudoers.
Tests: rows in existing tests (no new function); vet, vet -tags integration, unit; checks secrets, paths, words, gofmt with a trunk beside.
Reviewed-by: mesh-code-reviewer@shanks at ab1eb0cb4781512c08aa5fe50ae4cbf2a6031aaf (round 3)
Pushed-by: fix-1965@shanks
Issue 1409. A list of a place the mesh keeps a secret, or of a machine's credential places, at any depth,
answers each entry's name, type, owner, group, mode, size and a link's target held to the content rule,
never content, and says secret-place; a process's environ, mem, fd, map_files, root and cwd stay refused.
Lines touched cite ADR 0394 §7.
Builds: design 39 parts D3 (§15), bullets 2 and 5
Issue 1409. A stat through root of a path that is not there answered that the file modes refuse it; it says
it does not exist, so design 39 parts §15's "gone" can be read.
Builds: design 39 parts D3 (§15), bullet 3
Issue 1409. readTools no longer appends the refusal sentence to list. A row in
TestSecretPlacesAreRefusedByNameBeforeAnyRead holds a link's target in a secret place to the content rule.
S2's match on sudo's English message is left as it is: the root path sets no locale, and sudo's environment
handling decides whether LC_ALL reaches stat.
Builds: design 39 parts D3 (§15), bullets 2 and 4
Deliverynovox/mesh-catalog@ab1eb0cb4781 — merged since 2026-11-12T15:28:25Z
Source — source.main moved to novox/mesh-catalog@7b50628627. Whether it reached the machines is mesh-delivery-view's, derived from source.main, the wants and the haves.
2026-11-12 14:53 (new) → proposed (announced): novox/mesh-catalog#665's head announced
2026-11-12 14:53 proposed → ready (accepted): a verdict names this commit and the trunk's head as its trunk commit, the gate passed or warned, and the repository's own check did not fail; or the check gates no merge (check-gates-merge false)
2026-11-12 15:28 ready → merged (merged): on the trunk its modules follow: merged there
The commit's note under refs/notes/mesh-plan keeps every transition of this change up to its merge: git log --notes=mesh-plan.
<!-- mesh-delivery:view -->
**Delivery** `novox/mesh-catalog@ab1eb0cb4781` — **merged** since 2026-11-12T15:28:25Z
**Source** — source.main moved to novox/mesh-catalog@7b5062862758. Whether it reached the machines is `mesh-delivery-view`'s, derived from `source.main`, the wants and the haves.
**Group** `fix/1409-list-secret-place`: novox/mesh-catalog@ab1eb0cb4781, novox/mesh-contracts@31e84ba67cac
**Transitions**
- 2026-11-12 14:53 (new) → proposed (announced): novox/mesh-catalog#665's head announced
- 2026-11-12 14:53 proposed → ready (accepted): a verdict names this commit and the trunk's head as its trunk commit, the gate passed or warned, and the repository's own check did not fail; or the check gates no merge (check-gates-merge false)
- 2026-11-12 15:28 ready → merged (merged): on the trunk its modules follow: merged there
The commit's note under `refs/notes/mesh-plan` keeps every transition of this change up to its merge: `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.
Issue 1409; design 39 parts §15 and the lead's answer D3 (hq design/39-list-secret-place). Group with mesh-contracts fix/1409-list-secret-place (the node-files seat's list text).
Live: novox/node-files.list of a module's state directory is refused as a place a secret is kept, and stat of a missing file there answers "its file modes refuse it", so no tool can say design 39 parts §15's files are gone.
Playbook 08's one-repository rule is bent for one line of contract text (no verb, no field) in mesh-contracts, as D3 says. Known limit: S2 reads sudo's English "No such file or directory"; whether a locale setting reaches stat through sudo depends on the node's sudoers.
Tests: rows in existing tests (no new function); vet, vet -tags integration, unit; checks secrets, paths, words, gofmt with a trunk beside.
Reviewed-by: mesh-code-reviewer@shanks at
ab1eb0cb47(round 3)Pushed-by: fix-1965@shanks
Delivery
novox/mesh-catalog@ab1eb0cb4781— merged since 2026-11-12T15:28:25ZSource — source.main moved to novox/mesh-catalog@7b50628627. Whether it reached the machines is
mesh-delivery-view's, derived fromsource.main, the wants and the haves.Group
fix/1409-list-secret-place: novox/mesh-catalog@ab1eb0cb47, novox/mesh-contracts@31e84ba67cTransitions
The commit's note under
refs/notes/mesh-plankeeps every transition of this change up to its merge:git log --notes=mesh-plan.