node-files lists a place a secret is kept, entries without content, and stat says a missing path is missing (issue 1409) #665

Merged
mesh-tools merged 4 commits from fix/1409-list-secret-place into main 2026-11-12 15:28:23 +00:00
Member

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
mesh-tools added 4 commits 2026-11-12 14:53:31 +00:00
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
Review 1 of S1: the served-text row finds the list tool by its full name; list's text is the contract's word for word
mesh/delivery merged: source.main moved to novox/mesh-catalog@7b5062862758
mesh/delivery-group group fix/1409-list-secret-place merged: every member is merged
mesh/check checking ab1eb0cb4781 on 7b5062862758 | novox/mesh-catalog#665 in group fix/1409-list-secret-place
ab1eb0cb47
Builds: design 39 parts D3 (§15), bullets 2 and 4.
Author
Member

Delivery novox/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.

Group fix/1409-list-secret-place: novox/mesh-catalog@ab1eb0cb47, novox/mesh-contracts@31e84ba67c

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.

<!-- 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`.
mesh-tools merged commit 7b50628627 into main 2026-11-12 15:28:23 +00:00
mesh-tools deleted branch fix/1409-list-secret-place 2026-11-12 15:28:23 +00:00
Sign in to join this conversation.
No Reviewers
1 Participants
Notifications
Due Date
No due date set.
Dependencies

No dependencies set.

Reference: novox/mesh-catalog#665