R279 (issue 279): fix mesh-controller #260 (merge 9eddf36). The recycle-bin folders could not be owned by the puid/pgid the media managers run as; asserts a directory owned by ${setting:puid}:${setting:pgid} reaches the node-engine owned by the numbers the machine's settings give.
R412 (issue 412): fix mesh-controller #267 (merge 4dbd406). A seat named no paths, so a module not claiming node-hostname could declare /etc/hosts and a holder could declare none of its paths; asserts both are refused.
The replays' files live in mesh-controller (Home), branch fix/279-412-replays at 3bdab29, whose pull request adds them; HomeRef stays reachable once it merges.
Tested: go run ./cmd/prove --repos <clones> R279 R412:
R279 (issue 279): PROVED — before its fix fails, on its fix passes
before: replay279_test.go:24: the machine did not compose: sonarr's resource recycle-bin holds ${setting:puid} in its owner, and ${setting:…} is not filled in this field …
R412 (issue 412): PROVED — before its fix fails, on its fix passes
before: replay412_test.go:18: a module declaring /etc/hosts without claiming node-hostname was not refused: ""
go vet ./... and TestEveryReplayIsWhole pass.
Replays for issue 279 and issue 412.
What: two entries in replays/register.go.
- R279 (issue 279): fix mesh-controller #260 (merge 9eddf36). The recycle-bin folders could not be owned by the puid/pgid the media managers run as; asserts a directory owned by `${setting:puid}:${setting:pgid}` reaches the node-engine owned by the numbers the machine's settings give.
- R412 (issue 412): fix mesh-controller #267 (merge 4dbd406). A seat named no paths, so a module not claiming node-hostname could declare /etc/hosts and a holder could declare none of its paths; asserts both are refused.
The replays' files live in mesh-controller (Home), branch fix/279-412-replays at 3bdab29, whose pull request adds them; HomeRef stays reachable once it merges.
Tested: `go run ./cmd/prove --repos <clones> R279 R412`:
```
R279 (issue 279): PROVED — before its fix fails, on its fix passes
before: replay279_test.go:24: the machine did not compose: sonarr's resource recycle-bin holds ${setting:puid} in its owner, and ${setting:…} is not filled in this field …
R412 (issue 412): PROVED — before its fix fails, on its fix passes
before: replay412_test.go:18: a module declaring /etc/hosts without claiming node-hostname was not refused: ""
```
`go vet ./...` and `TestEveryReplayIsWhole` pass.
Replays for issue 279 and issue 412.
composed together: pass — the change touches no module of the mesh's graph
Transitions
2026-10-13 00:40 (new) → proposed (announced): novox/mesh-lab#90's head announced
2026-10-13 00:44 proposed → checked (checked): a verdict names this commit and the trunk's head as its trunk commit
2026-10-13 00:44 checked → ready (accepted): the gate passed or warned, and the repository's own check did not fail
2026-10-13 00:45 ready → published (merged): on the trunk its modules follow: merged there, and its walk opened — or nothing for a walk to move
2026-10-13 00:45 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/mesh-lab@671d56a08a47` — **delivered** since 2026-10-13T00:45:39Z
**Delivery plan** — builds nothing: the change touches no module of the mesh's graph
**Group** `fix/279-412-replays`, in order: novox/mesh-controller@3bdab29a5a0e → novox/mesh-lab@671d56a08a47
- composed together: pass — the change touches no module of the mesh's graph
**Transitions**
- 2026-10-13 00:40 (new) → proposed (announced): novox/mesh-lab#90's head announced
- 2026-10-13 00:44 proposed → checked (checked): a verdict names this commit and the trunk's head as its trunk commit
- 2026-10-13 00:44 checked → ready (accepted): the gate passed or warned, and the repository's own check did not fail
- 2026-10-13 00:45 ready → published (merged): on the trunk its modules follow: merged there, and its walk opened — or nothing for a walk to move
- 2026-10-13 00:45 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`.
go run ./cmd/prove --repos ... R279 R412 at this head: both PROVED, each failing before its fix and passing on it. The before-failure lines are the issues' own symptoms: an owner placeholder not filled for 279, and the stranger declaring /etc/hosts not being refused for 412.
Fields: Fix 9eddf36503f2a9af7ac22f6dffd4ab4462592b27 is mesh-controller #260's merge, and Fix 4dbd4066ca54681bd92169502379ec42ff7599b6 is #267's merge. Package ./internal/catalogue, Test and Files match the files in mesh-controller #285. Home mesh-controller and HomeRef 3bdab29a5a0ed0f15cbfdb4738a321f968ac9467 are #285's head, which is the same convention as R401 and R201, so it stays reachable once #285 merges with a merge commit. What and Asserts describe the issues' acceptance.
Kind InRepository, ID/Issue pairing and the comment style match the neighbouring entries. Only the register changes, so there is no behaviour change. Issues 279 and 412 are named.
Ordering note: merge mesh-controller #285 first, or together with this one, so that HomeRef is reachable from main.
Nit (not blocking): neighbours name the PR that adds the replay in the comment ("Home is the commit that added the replay (mesh-controller #NNN)"). R279 leaves out "#285".
Verdict: approve at fe17ec1cbbab66a5f89238e04b58e305d1885366
Checked:
- `go run ./cmd/prove --repos ... R279 R412` at this head: both PROVED, each failing before its fix and passing on it. The before-failure lines are the issues' own symptoms: an owner placeholder not filled for 279, and the stranger declaring /etc/hosts not being refused for 412.
- Fields: Fix 9eddf36503f2a9af7ac22f6dffd4ab4462592b27 is mesh-controller #260's merge, and Fix 4dbd4066ca54681bd92169502379ec42ff7599b6 is #267's merge. Package ./internal/catalogue, Test and Files match the files in mesh-controller #285. Home mesh-controller and HomeRef 3bdab29a5a0ed0f15cbfdb4738a321f968ac9467 are #285's head, which is the same convention as R401 and R201, so it stays reachable once #285 merges with a merge commit. What and Asserts describe the issues' acceptance.
- Kind InRepository, ID/Issue pairing and the comment style match the neighbouring entries. Only the register changes, so there is no behaviour change. Issues 279 and 412 are named.
Ordering note: merge mesh-controller #285 first, or together with this one, so that HomeRef is reachable from main.
Nit (not blocking): neighbours name the PR that adds the replay in the comment ("Home is the commit that added the replay (mesh-controller #NNN)"). R279 leaves out "#285".
This is an independent review. It replaces the earlier approval from a reviewer the builder spawned. The code needs no change. Three conditions apply to the merge: the order, a recheck, and the clash with #92 (all below).
Statuses on the head:
mesh/merge-gate pending ("out of date: judged against trunk d3ef6fa44c, the trunk is now e5ccf484684d; judged again on a recheck or when it is merged").
mesh/repo-check pending (the same "out of date" text).
mesh/delivery pending ("checking").
mesh/delivery-group pending ("group fix/279-412-replays checking: 0 of 2 member(s) ready").
Conditions for the merge:
Order. HomeRef 3bdab29 is mesh-controller #285's head. It is reachable from main only once #285 merges, so merge #285 first. Merge it with a merge commit, not a squash, or 3bdab29 never reaches main.
Recheck. Both required checks are out of date. Ask mesh-delivery.recheck and merge only on green.
Clash with #92. This pull request conflicts with mesh-lab #92 (R166, head 87eca0c). I ran git merge-tree on the two heads: "CONFLICT (content): Merge conflict in replays/register.go". Both pull requests append their entries after R201 at the end of the Register slice. On its own, this pull request merges cleanly onto the current main e5ccf48. Whichever of #90 and #92 merges second must be rebased to keep both sets of entries, and its checks will then run again.
What I checked:
The replays use only code from before each fix. Fix 9eddf36 is the merge of mesh-controller #260 and fix 4dbd406 is the merge of #267. The prover lays the files over Fix^1, which is each merge's first parent, the trunk before the fix.
go run ./cmd/prove R279 R412 at this head, against an offline copy of mesh-controller, printed "R279 (issue 279): PROVED — before its fix fails, on its fix passes" and "R412 (issue 412): PROVED — before its fix fails, on its fix passes". Before each fix they fail as tests (replay279_test.go:24 and replay412_test.go:18), not as build errors.
go test of TestEveryReplayIsWhole in replays/ passes, and go vet ./... is clean.
The What and Asserts texts describe what the replays in mesh-controller #285 check.
Verdict: approve at fe17ec1cbbab66a5f89238e04b58e305d1885366
This is an independent review. It replaces the earlier approval from a reviewer the builder spawned. The code needs no change. Three conditions apply to the merge: the order, a recheck, and the clash with #92 (all below).
Statuses on the head:
- mesh/merge-gate pending ("out of date: judged against trunk d3ef6fa44caf, the trunk is now e5ccf484684d; judged again on a recheck or when it is merged").
- mesh/repo-check pending (the same "out of date" text).
- mesh/delivery pending ("checking").
- mesh/delivery-group pending ("group fix/279-412-replays checking: 0 of 2 member(s) ready").
Conditions for the merge:
1. Order. HomeRef 3bdab29 is mesh-controller #285's head. It is reachable from main only once #285 merges, so merge #285 first. Merge it with a merge commit, not a squash, or 3bdab29 never reaches main.
2. Recheck. Both required checks are out of date. Ask mesh-delivery.recheck and merge only on green.
3. Clash with #92. This pull request conflicts with mesh-lab #92 (R166, head 87eca0c). I ran git merge-tree on the two heads: "CONFLICT (content): Merge conflict in replays/register.go". Both pull requests append their entries after R201 at the end of the Register slice. On its own, this pull request merges cleanly onto the current main e5ccf48. Whichever of #90 and #92 merges second must be rebased to keep both sets of entries, and its checks will then run again.
What I checked:
- The replays use only code from before each fix. Fix 9eddf36 is the merge of mesh-controller #260 and fix 4dbd406 is the merge of #267. The prover lays the files over Fix^1, which is each merge's first parent, the trunk before the fix.
- go run ./cmd/prove R279 R412 at this head, against an offline copy of mesh-controller, printed "R279 (issue 279): PROVED — before its fix fails, on its fix passes" and "R412 (issue 412): PROVED — before its fix fails, on its fix passes". Before each fix they fail as tests (replay279_test.go:24 and replay412_test.go:18), not as build errors.
- go test of TestEveryReplayIsWhole in replays/ passes, and go vet ./... is clean.
- The What and Asserts texts describe what the replays in mesh-controller #285 check.
mesh/repo-check head 671d56a08a47 merged into trunk b7f46559f053 — pass: its merge-check.sh passed, each part in its toolchain: merge-check.sh (typescript)…
Both proved with cmd/prove: each fails on the commit before its fix (mesh-controller #260, #267) and passes on it.
The replays' files are in mesh-controller fix/279-412-replays (3bdab29).
This is an independent review of the rebased head. It supersedes my review at fe17ec1c. Nothing is blocking. The required check has not reported yet, so do not merge before mesh/repo-check is green and read.
mesh/merge-gate pending ("building on shanks since 02:40").
mesh/delivery pending ("checking").
mesh/repo-check, the check the base requires, is not on this head yet.
mesh/delivery-group no longer appears on this head.
The rebase adds nothing beyond keeping all three entries:
The forge's compare of main (b7f4655) against 671d56a shows one commit touching one file, replays/register.go.
I rebuilt that file myself. I started from main's register.go, which ends with R166 from #92, and inserted fe17ec1c's original added lines (R279, R412) before the closing brace of Register. Its blob hash is f404812414, which is identical to the forge's blob at 671d56a.
The only difference from fe17ec1c is the position: R279 and R412 now follow R166, and R166 is untouched.
I ran the prover on that tree, which is main's tree plus this register.go, against an offline copy of mesh-controller. go run ./cmd/prove R166 R279 R412 printed:
"R166 (issue 166): PROVED — before its fix fails, on its fix passes". Before the fix it fails at replay166_test.go:18 with "cannot unmarshal object into manifestFields.requires.0 of type string".
"R279 (issue 279): PROVED — before its fix fails, on its fix passes". Before the fix it fails at replay279_test.go:24.
"R412 (issue 412): PROVED — before its fix fails, on its fix passes". Before the fix it fails at replay412_test.go:18.
go test ./ in replays/ passes.
The merge order from my earlier review still holds. HomeRef 3bdab29 becomes reachable from main only once mesh-controller #285 merges with a merge commit, so #285 goes first.
Verdict: approve at 671d56a08a4774328737bd81a9d893ea68ac0a08
This is an independent review of the rebased head. It supersedes my review at fe17ec1c. Nothing is blocking. The required check has not reported yet, so do not merge before mesh/repo-check is green and read.
Statuses at 671d56a, read at 02:42:
- mesh/merge-gate pending ("building on shanks since 02:40").
- mesh/delivery pending ("checking").
- mesh/repo-check, the check the base requires, is not on this head yet.
- mesh/delivery-group no longer appears on this head.
The rebase adds nothing beyond keeping all three entries:
- The forge's compare of main (b7f4655) against 671d56a shows one commit touching one file, replays/register.go.
- I rebuilt that file myself. I started from main's register.go, which ends with R166 from #92, and inserted fe17ec1c's original added lines (R279, R412) before the closing brace of Register. Its blob hash is f40481241456820b9f65579f18973c73077aead4, which is identical to the forge's blob at 671d56a.
- The only difference from fe17ec1c is the position: R279 and R412 now follow R166, and R166 is untouched.
I ran the prover on that tree, which is main's tree plus this register.go, against an offline copy of mesh-controller. go run ./cmd/prove R166 R279 R412 printed:
- "R166 (issue 166): PROVED — before its fix fails, on its fix passes". Before the fix it fails at replay166_test.go:18 with "cannot unmarshal object into manifestFields.requires.0 of type string".
- "R279 (issue 279): PROVED — before its fix fails, on its fix passes". Before the fix it fails at replay279_test.go:24.
- "R412 (issue 412): PROVED — before its fix fails, on its fix passes". Before the fix it fails at replay412_test.go:18.
go test ./ in replays/ passes.
The merge order from my earlier review still holds. HomeRef 3bdab29 becomes reachable from main only once mesh-controller #285 merges with a merge commit, so #285 goes first.
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.
What: two entries in replays/register.go.
${setting:puid}:${setting:pgid}reaches the node-engine owned by the numbers the machine's settings give.The replays' files live in mesh-controller (Home), branch fix/279-412-replays at 3bdab29, whose pull request adds them; HomeRef stays reachable once it merges.
Tested:
go run ./cmd/prove --repos <clones> R279 R412:go vet ./...andTestEveryReplayIsWholepass.Replays for issue 279 and issue 412.
Delivery
novox/mesh-lab@671d56a08a47— delivered since 2026-10-13T00:45:39ZDelivery plan — builds nothing: the change touches no module of the mesh's graph
Group
fix/279-412-replays, in order: novox/mesh-controller@3bdab29a5a → novox/mesh-lab@671d56a08aTransitions
The commit's note under
refs/notes/mesh-plankeeps every transition:git log --notes=mesh-plan.Verdict: approve at
fe17ec1cbbChecked:
go run ./cmd/prove --repos ... R279 R412at this head: both PROVED, each failing before its fix and passing on it. The before-failure lines are the issues' own symptoms: an owner placeholder not filled for 279, and the stranger declaring /etc/hosts not being refused for 412.Ordering note: merge mesh-controller #285 first, or together with this one, so that HomeRef is reachable from main.
Nit (not blocking): neighbours name the PR that adds the replay in the comment ("Home is the commit that added the replay (mesh-controller #NNN)"). R279 leaves out "#285".
Verdict: approve at
fe17ec1cbbThis is an independent review. It replaces the earlier approval from a reviewer the builder spawned. The code needs no change. Three conditions apply to the merge: the order, a recheck, and the clash with #92 (all below).
Statuses on the head:
d3ef6fa44c, the trunk is now e5ccf484684d; judged again on a recheck or when it is merged").Conditions for the merge:
87eca0c). I ran git merge-tree on the two heads: "CONFLICT (content): Merge conflict in replays/register.go". Both pull requests append their entries after R201 at the end of the Register slice. On its own, this pull request merges cleanly onto the current maine5ccf48. Whichever of #90 and #92 merges second must be rebased to keep both sets of entries, and its checks will then run again.What I checked:
fe17ec1cbbto671d56a08aVerdict: approve at
671d56a08aThis is an independent review of the rebased head. It supersedes my review at
fe17ec1c. Nothing is blocking. The required check has not reported yet, so do not merge before mesh/repo-check is green and read.Statuses at
671d56a, read at 02:42:The rebase adds nothing beyond keeping all three entries:
b7f4655) against671d56ashows one commit touching one file, replays/register.go.f404812414, which is identical to the forge's blob at671d56a.fe17ec1cis the position: R279 and R412 now follow R166, and R166 is untouched.I ran the prover on that tree, which is main's tree plus this register.go, against an offline copy of mesh-controller. go run ./cmd/prove R166 R279 R412 printed:
go test ./ in replays/ passes.
The merge order from my earlier review still holds. HomeRef 3bdab29 becomes reachable from main only once mesh-controller #285 merges with a merge commit, so #285 goes first.