What.cmd/mesh-controller/replay401_test.go: TestReplay401, and one line naming it in testdata/store-tests. No code change.
Why. The lab registers a replay for every core issue and proves it fails on the commit before its fix and passes on the fix (mesh-lab replays/register.go). The fix for issue 401 (#262, merge 1e28342) has a test, TestTheSendMakesNoValueForAnOutsideSecretNobodyGave, but it reads inventory.GivenOwnSecret, which the commit before does not have, so it does not build there. This replay asserts the same outcome with only what the controller had before: register, assign, planFor, declarationFor, ModuleSecretIfIssued, SecretForModule, AcceptSecretForModule. Same pattern as replay237_test.go.
Asserted: the send makes no value for an own secret issued outside the mesh that nobody gave (the mounts module's smb-credentials, as on 2026-10-10) and places none; a value the mesh made for it before is not placed either; once a person gives one, that value is placed.
How it was tested (throwaway postgres 17, MESH_TEST_POSTGRES):
On 1e28342^1 (c672b3d): FAIL, the send placed a value for smb-credentials, which nobody gave and the send made a value for a secret issued outside the mesh (held true).
On this head (main + the file): PASS.
sh merge-check.sh with the store: exit 0, every listed store test ran and passed, TestReplay401 among them.
Files. Only a new test file and one line at the end of testdata/store-tests; #266 and #268 also add a line to that file, at other places.
Replay for hq issue 401 (the mesh made a random value for an own secret issued outside the mesh that nobody gave). mesh-lab's R401 entry points at this commit. Test-only: nothing the mesh runs changes. Not merged.
**What.** `cmd/mesh-controller/replay401_test.go`: `TestReplay401`, and one line naming it in `testdata/store-tests`. No code change.
**Why.** The lab registers a replay for every core issue and proves it fails on the commit before its fix and passes on the fix (mesh-lab `replays/register.go`). The fix for issue 401 (#262, merge 1e28342) has a test, `TestTheSendMakesNoValueForAnOutsideSecretNobodyGave`, but it reads `inventory.GivenOwnSecret`, which the commit before does not have, so it does not build there. This replay asserts the same outcome with only what the controller had before: `register`, `assign`, `planFor`, `declarationFor`, `ModuleSecretIfIssued`, `SecretForModule`, `AcceptSecretForModule`. Same pattern as `replay237_test.go`.
Asserted: the send makes no value for an own secret issued outside the mesh that nobody gave (the mounts module's `smb-credentials`, as on 2026-10-10) and places none; a value the mesh made for it before is not placed either; once a person gives one, that value is placed.
**How it was tested** (throwaway postgres 17, `MESH_TEST_POSTGRES`):
- On 1e28342^1 (c672b3d): FAIL, `the send placed a value for smb-credentials, which nobody gave` and `the send made a value for a secret issued outside the mesh (held true)`.
- On this head (main + the file): PASS.
- `sh merge-check.sh` with the store: exit 0, every listed store test ran and passed, `TestReplay401` among them.
**Files.** Only a new test file and one line at the end of `testdata/store-tests`; #266 and #268 also add a line to that file, at other places.
Replay for hq issue 401 (the mesh made a random value for an own secret issued outside the mesh that nobody gave). mesh-lab's R401 entry points at this commit. Test-only: nothing the mesh runs changes. Not merged.
The fix's own test reads GivenOwnSecret, which the commit before does not have, so it cannot be laid over it. TestReplay401 asserts the same outcome with register, assign, planFor, declarationFor and the inventory's secret reads; it fails on 1e28342^1 and passes on main. Named in testdata/store-tests so a skip without the store fails the check. Replay for hq issue 401.
composed together: pass — the change touches no module of the mesh's graph
Transitions
2026-10-12 16:36 (new) → proposed (announced): novox/mesh-controller#274's head announced
2026-10-12 17:25 proposed → checked (checked): a verdict names this commit and the trunk's head as its trunk commit
2026-10-12 17:25 checked → ready (accepted): the gate passed or warned, and the repository's own check did not fail
2026-10-12 17:36 ready → proposed (trunk moved): out of date: judged against trunk ba685b17f5, the trunk is now d8f36a8fb706; judged again on a recheck or when it is merged
2026-10-12 18:13 proposed → checked (checked): a verdict names this commit and the trunk's head as its trunk commit
2026-10-12 18:13 checked → ready (accepted): the gate passed or warned, and the repository's own check did not fail
2026-10-12 18:22 ready → published (merged): on the trunk its modules follow: merged there, and its walk opened — or nothing for a walk to move
2026-10-12 18:22 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-controller@f3c15e00af50` — **delivered** since 2026-10-12T18:22:13Z
**Delivery plan** — builds nothing: the change touches no module of the mesh's graph
**Group** `fix/401-replay`, in order: novox/mesh-controller@f3c15e00af50 → novox/mesh-lab@3c655d83e11e
- composed together: pass — the change touches no module of the mesh's graph
**Transitions**
- 2026-10-12 16:36 (new) → proposed (announced): novox/mesh-controller#274's head announced
- 2026-10-12 17:25 proposed → checked (checked): a verdict names this commit and the trunk's head as its trunk commit
- 2026-10-12 17:25 checked → ready (accepted): the gate passed or warned, and the repository's own check did not fail
- 2026-10-12 17:36 ready → proposed (trunk moved): out of date: judged against trunk ba685b17f5e1, the trunk is now d8f36a8fb706; judged again on a recheck or when it is merged
- 2026-10-12 18:13 proposed → checked (checked): a verdict names this commit and the trunk's head as its trunk commit
- 2026-10-12 18:13 checked → ready (accepted): the gate passed or warned, and the repository's own check did not fail
- 2026-10-12 18:22 ready → published (merged): on the trunk its modules follow: merged there, and its walk opened — or nothing for a walk to move
- 2026-10-12 18:22 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`.
Out of date when it landed: out of date: judged against trunk f10aedac58, the trunk is now f8daec01d3f0; judged again on a recheck or when it is merged
**Merge check** at `f3c15e00`: head f3c15e00af50 merged into trunk f10aedac5880, pass
**Out of date when it landed**: out of date: judged against trunk f10aedac5880, the trunk is now f8daec01d3f0; judged again on a recheck or when it is merged
Independent review (fix-401 replay, delivery group fix/401-replay).
What I checked:
TestReplay401 exercises issue 401's symptom: a module declaring an own secret issued outside (smb-credentials) that nobody gave; it asserts the send places no value for it and holds none, that a value the mesh made earlier (SecretForModule) is not placed either, and that a value given with AcceptSecretForModule is placed as given.
Every name it uses exists on 1e28342^1 (c672b3d, the commit before the fix#262): aMesh, register, assign, planFor, declarationFor, ModuleSecretIfIssued, SecretForModule, AcceptSecretForModule, catalogue.OwnSecrets, TakenAtStart, IssuedOutside. It compiles there.
Ran mesh-lab #87's prover locally (go run ./cmd/prove R401 R561, throwaway Postgres 18 as MESH_TEST_POSTGRES): R401 PROVED. Before the fix it fails at replay401_test.go:58 "the send placed a value for smb-credentials, which nobody gave", which is exactly the symptom; on 1e28342 it passes.
The store-tests line merges cleanly with current main ba685b17 (#266 and #268 each added lines elsewhere in the file). TestReplay401 passes on that merge, and go vet ./cmd/mesh-controller is clean there.
Statuses at this head: mesh/merge-gate and mesh/repo-check both said PASS but are now pending as out of date (judged against trunk f10aedac, trunk is now ba685b17); mesh/delivery pending (waits for its check); mesh/delivery-group pending (group checking, 1 of 2 members ready). It is not mergeable until those are re-judged green.
Note for the merge: mesh-lab #87's R401 names HomeRef f3c15e00af (this head). Merge with a merge commit, not a squash or rebase, so that commit stays reachable from main.
Verdict: approve at f3c15e00af5004d053bc424fe01c7f9a24656d59
Independent review (fix-401 replay, delivery group fix/401-replay).
What I checked:
1. TestReplay401 exercises issue 401's symptom: a module declaring an own secret issued outside (smb-credentials) that nobody gave; it asserts the send places no value for it and holds none, that a value the mesh made earlier (SecretForModule) is not placed either, and that a value given with AcceptSecretForModule is placed as given.
2. Every name it uses exists on 1e28342^1 (c672b3d, the commit before the fix #262): aMesh, register, assign, planFor, declarationFor, ModuleSecretIfIssued, SecretForModule, AcceptSecretForModule, catalogue.OwnSecrets, TakenAtStart, IssuedOutside. It compiles there.
3. Ran mesh-lab #87's prover locally (go run ./cmd/prove R401 R561, throwaway Postgres 18 as MESH_TEST_POSTGRES): R401 PROVED. Before the fix it fails at replay401_test.go:58 "the send placed a value for smb-credentials, which nobody gave", which is exactly the symptom; on 1e28342 it passes.
4. The store-tests line merges cleanly with current main ba685b17 (#266 and #268 each added lines elsewhere in the file). TestReplay401 passes on that merge, and go vet ./cmd/mesh-controller is clean there.
Statuses at this head: mesh/merge-gate and mesh/repo-check both said PASS but are now pending as out of date (judged against trunk f10aedac, trunk is now ba685b17); mesh/delivery pending (waits for its check); mesh/delivery-group pending (group checking, 1 of 2 members ready). It is not mergeable until those are re-judged green.
Note for the merge: mesh-lab #87's R401 names HomeRef f3c15e00af50 (this head). Merge with a merge commit, not a squash or rebase, so that commit stays reachable from main.
Merge check at f3c15e00
Judged: head f3c15e00af50 merged into trunk ba685b17f5e1; read beside it: mesh-catalog 23ea0f431faf, mesh-controller-main ba685b17f5e1, mesh-host a1f9856b3957, mesh-tools 954e1a53eef9
mesh/merge-gate: PASS — every machine composes with the change as it did without (4 of 4 compose) (modules: build-agent)
mesh/repo-check: PASS — its merge-check.sh passed
Delivery plan — builds build-agent → ace, g14, novox, shanks; no bus step
tier 0: build-agent
ace: receives build-agent
g14: receives build-agent
novox: receives build-agent
shanks: receives build-agent
build-agent keeps data (ADR 0233): what it holds is backed up before it moves
grants step: if this changes what the bus's user list says (a new tool, subject or user), novox is sent that list alone, every build there kept, before build-agent is judged on its first machine
Run by the build seat on novox as build-1791825215476637790 (builds --log build-1791825215476637790).
--- the gate: build-agent
judging 0 module(s) changed against 4 machine(s), as the snapshot of 2026-10-12T17:09:24Z says they run
composing every machine as the mesh is
the bus's user list leaves out 5 user(s) the mesh has minted no credential for: controller, node.f35, node.idt, node.ygcyr, node.yvbpsm. Each is a user that cannot connect until one is issued
the bus's user list leaves out 5 user(s) the mesh has minted no credential for: controller, node.f35, node.idt, node.ygcyr, node.yvbpsm. Each is a user that cannot connect until one is issued
composing every machine with the change
the bus's user list leaves out 5 user(s) the mesh has minted no credential for: controller, node.f35, node.idt, node.ygcyr, node.yvbpsm. Each is a user that cannot connect until one is issued
the bus's user list leaves out 5 user(s) the mesh has minted no credential for: controller, node.f35, node.idt, node.ygcyr, node.yvbpsm. Each is a user that cannot connect until one is issued
merge gate: PASS — every machine composes with the change as it did without (4 of 4 compose)
judged by controller development build against the facts of 2026-10-12T17:09:24Z
machines:
- a machine (f35): composes
- holds mesh-dns-resolver (idt): composes
- holds git, holds mesh-artifact-store, holds mesh-broker, holds mesh-catalog, holds mesh-delivery, holds mesh-dns-resolver, holds mesh-store, holds mesh-vault, holds npm-package-registry, the control node, the hub (ygcyr): composes
- a machine (yvbpsm): composes
a merge would rebuild 1 module(s) in 1 tier(s): build-agent
--- its merge-check.sh (go toolchain)
ok github.com/novox/mesh-controller/cmd/mesh-builder 1.063s
ok github.com/novox/mesh-controller/cmd/mesh-controller 330.127s
ok github.com/novox/mesh-controller/examples/objectstore-provisioner 1.026s
ok github.com/novox/mesh-controller/examples/postgres-provisioner 1.071s
ok github.com/novox/mesh-controller/examples/redis-provisioner 1.021s
ok github.com/novox/mesh-controller/examples/route-proxy 1.163s
ok github.com/novox/mesh-controller/internal/artifacts 1.058s
? github.com/novox/mesh-controller/internal/beside [no test files]
ok github.com/novox/mesh-controller/internal/broker 5.436s
ok github.com/novox/mesh-controller/internal/builder 59.457s
ok github.com/novox/mesh-controller/internal/catalogue 10.520s
ok github.com/novox/mesh-controller/internal/conditions 3.210s
ok github.com/novox/mesh-controller/internal/envfile 1.042s
ok github.com/novox/mesh-controller/internal/facts 1.054s
ok github.com/novox/mesh-controller/internal/identity 13.631s
ok github.com/novox/mesh-controller/internal/inventory 130.769s
ok github.com/novox/mesh-controller/internal/lease 17.788s
ok github.com/novox/mesh-controller/internal/licences 12.286s
ok github.com/novox/mesh-controller/internal/licences/adapters 1.019s
ok github.com/novox/mesh-controller/internal/link 72.456s
ok github.com/novox/mesh-controller/internal/lint 2.837s
ok github.com/novox/mesh-controller/internal/outward 1.050s
ok github.com/novox/mesh-controller/internal/overlay 1.034s
ok github.com/novox/mesh-controller/internal/secrets 1.681s
ok github.com/novox/mesh-controller/internal/store 7.037s
ok github.com/novox/mesh-controller/internal/testbus 1.243s
ok github.com/novox/mesh-controller/internal/token 1.018s
store tests, each run against the store:
./cmd/mesh-controller --- PASS: TestAStopWithoutAMergeWalksTheOthersAgain (0.49s)
./cmd/mesh-controller --- PASS: TestAStopWithoutAMergeEndsTheMergesThatContainIt (0.51s)
./cmd/mesh-controller --- PASS: TestAStopWalksTheOthersAgainInTheOpenBatch (0.49s)
./cmd/mesh-controller --- PASS: TestAStopNamesWhatStaysOnTheMachinesAndWhatStillCarriesIt (0.52s)
./cmd/mesh-controller --- PASS: TestAStopWithoutAMergeLeavesItOutOfABatch (0.45s)
./cmd/mesh-controller --- PASS: TestSavingPlansAndMovingMergesIsOneAct (0.43s)
./cmd/mesh-controller --- PASS: TestAPlanFollowedFromTheStoreAnswersWhenItMoves (4.50s)
./cmd/mesh-controller --- PASS: TestNodeShowAndStatusReadTheLastSendFromTheStore (0.51s)
./cmd/mesh-controller --- PASS: TestTheConditionsVerbReadsTheLooksTheBucketNoLongerHolds (0.37s)
./cmd/mesh-controller --- PASS: TestAWalkLetGoAndStoppedByVerbsIsSaidStartedAndEnded (0.55s)
./cmd/mesh-controller --- PASS: TestAWalkStoppedOrClosedByAPersonIsSaidEndedStopped (0.54s)
./cmd/mesh-controller --- PASS: TestAWalkRetriedByAPersonIsSaidStartedAgain (0.55s)
./cmd/mesh-controller --- PASS: TestABacklogReleasedByAPersonIsSaidStarted (0.49s)
./cmd/mesh-controller --- PASS: TestAWalkEndedByCancelOrClearIsSaidEnded (0.54s)
./cmd/mesh-controller --- PASS: TestAWalkRestartedByARebuildIsSaidStarted (0.46s)
./cmd/mesh-controller --- PASS: TestAWalkStoppedByHandAndRetriedEndsFailedWhenItFailsAgain (0.63s)
./cmd/mesh-controller --- PASS: TestReplay237 (0.48s)
./cmd/mesh-controller --- PASS: TestAnUnassignThatLeavesItsNodeUnresolvedSaysSoOnceInItsAnswer (0.46s)
./cmd/mesh-controller --- PASS: TestAnUnassignThatLeavesItsNodeResolvedSaysNothingOfIt (0.47s)
./cmd/mesh-controller --- PASS: TestAnAssignThatLeavesItsNodeUnresolvedSaysOnlyThePlansRefusal (0.44s)
./cmd/mesh-controller --- PASS: TestADirectoryOwnersKeyIsRefusedThroughAVerb (0.49s)
./cmd/mesh-controller --- PASS: TestTheSendMakesNoValueForAnOutsideSecretNobodyGave (0.70s)
./cmd/mesh-controller --- PASS: TestAQuestionComposesWithoutAnOutsideSecretNobodyGave (0.54s)
./cmd/mesh-controller --- PASS: TestReplay401 (0.57s)
./internal/inventory --- PASS: TestTheLastSendSaysWhatTheMachineAnswered (0.34s)
./internal/inventory --- PASS: TestAReportIsTheLastSendsAnswerOnlyWhenItIsAboutThatSend (0.35s)
./internal/inventory --- PASS: TestAnIssuedValueIsSealedToEveryHolderOnceAndNotAgain (0.48s)
./internal/inventory --- PASS: TestAnIssuedValueIsSealedAgainAfterAKeyChangeOrAnAcceptance (0.56s)
./internal/inventory --- PASS: TestAConditionsLooksAreKeptBesideTheBucket (0.35s)
./internal/inventory --- PASS: TestAPlanIdHoldingAQuoteIsReadAsAPlainId (0.40s)
./internal/inventory --- PASS: TestAWalksStartIsKeptAndARefusedSaveLeavesItUnsaid (0.35s)
**Merge check** at `f3c15e00`
Judged: head `f3c15e00af50` merged into trunk `ba685b17f5e1`; read beside it: mesh-catalog `23ea0f431faf`, mesh-controller-main `ba685b17f5e1`, mesh-host `a1f9856b3957`, mesh-tools `954e1a53eef9`
- `mesh/merge-gate`: **PASS** — every machine composes with the change as it did without (4 of 4 compose) (modules: build-agent)
- `mesh/repo-check`: **PASS** — its merge-check.sh passed
**Delivery plan** — builds build-agent → ace, g14, novox, shanks; no bus step
- tier 0: build-agent
- ace: receives build-agent
- g14: receives build-agent
- novox: receives build-agent
- shanks: receives build-agent
- build-agent keeps data (ADR 0233): what it holds is backed up before it moves
- grants step: if this changes what the bus's user list says (a new tool, subject or user), novox is sent that list alone, every build there kept, before build-agent is judged on its first machine
Run by the build seat on novox as `build-1791825215476637790` (`builds --log build-1791825215476637790`).
```
--- the gate: build-agent
judging 0 module(s) changed against 4 machine(s), as the snapshot of 2026-10-12T17:09:24Z says they run
composing every machine as the mesh is
the bus's user list leaves out 5 user(s) the mesh has minted no credential for: controller, node.f35, node.idt, node.ygcyr, node.yvbpsm. Each is a user that cannot connect until one is issued
the bus's user list leaves out 5 user(s) the mesh has minted no credential for: controller, node.f35, node.idt, node.ygcyr, node.yvbpsm. Each is a user that cannot connect until one is issued
composing every machine with the change
the bus's user list leaves out 5 user(s) the mesh has minted no credential for: controller, node.f35, node.idt, node.ygcyr, node.yvbpsm. Each is a user that cannot connect until one is issued
the bus's user list leaves out 5 user(s) the mesh has minted no credential for: controller, node.f35, node.idt, node.ygcyr, node.yvbpsm. Each is a user that cannot connect until one is issued
merge gate: PASS — every machine composes with the change as it did without (4 of 4 compose)
judged by controller development build against the facts of 2026-10-12T17:09:24Z
machines:
- a machine (f35): composes
- holds mesh-dns-resolver (idt): composes
- holds git, holds mesh-artifact-store, holds mesh-broker, holds mesh-catalog, holds mesh-delivery, holds mesh-dns-resolver, holds mesh-store, holds mesh-vault, holds npm-package-registry, the control node, the hub (ygcyr): composes
- a machine (yvbpsm): composes
a merge would rebuild 1 module(s) in 1 tier(s): build-agent
--- its merge-check.sh (go toolchain)
ok github.com/novox/mesh-controller/cmd/mesh-builder 1.063s
ok github.com/novox/mesh-controller/cmd/mesh-controller 330.127s
ok github.com/novox/mesh-controller/examples/objectstore-provisioner 1.026s
ok github.com/novox/mesh-controller/examples/postgres-provisioner 1.071s
ok github.com/novox/mesh-controller/examples/redis-provisioner 1.021s
ok github.com/novox/mesh-controller/examples/route-proxy 1.163s
ok github.com/novox/mesh-controller/internal/artifacts 1.058s
? github.com/novox/mesh-controller/internal/beside [no test files]
ok github.com/novox/mesh-controller/internal/broker 5.436s
ok github.com/novox/mesh-controller/internal/builder 59.457s
ok github.com/novox/mesh-controller/internal/catalogue 10.520s
ok github.com/novox/mesh-controller/internal/conditions 3.210s
ok github.com/novox/mesh-controller/internal/envfile 1.042s
ok github.com/novox/mesh-controller/internal/facts 1.054s
ok github.com/novox/mesh-controller/internal/identity 13.631s
ok github.com/novox/mesh-controller/internal/inventory 130.769s
ok github.com/novox/mesh-controller/internal/lease 17.788s
ok github.com/novox/mesh-controller/internal/licences 12.286s
ok github.com/novox/mesh-controller/internal/licences/adapters 1.019s
ok github.com/novox/mesh-controller/internal/link 72.456s
ok github.com/novox/mesh-controller/internal/lint 2.837s
ok github.com/novox/mesh-controller/internal/outward 1.050s
ok github.com/novox/mesh-controller/internal/overlay 1.034s
ok github.com/novox/mesh-controller/internal/secrets 1.681s
ok github.com/novox/mesh-controller/internal/store 7.037s
ok github.com/novox/mesh-controller/internal/testbus 1.243s
ok github.com/novox/mesh-controller/internal/token 1.018s
store tests, each run against the store:
./cmd/mesh-controller --- PASS: TestAStopWithoutAMergeWalksTheOthersAgain (0.49s)
./cmd/mesh-controller --- PASS: TestAStopWithoutAMergeEndsTheMergesThatContainIt (0.51s)
./cmd/mesh-controller --- PASS: TestAStopWalksTheOthersAgainInTheOpenBatch (0.49s)
./cmd/mesh-controller --- PASS: TestAStopNamesWhatStaysOnTheMachinesAndWhatStillCarriesIt (0.52s)
./cmd/mesh-controller --- PASS: TestAStopWithoutAMergeLeavesItOutOfABatch (0.45s)
./cmd/mesh-controller --- PASS: TestSavingPlansAndMovingMergesIsOneAct (0.43s)
./cmd/mesh-controller --- PASS: TestAPlanFollowedFromTheStoreAnswersWhenItMoves (4.50s)
./cmd/mesh-controller --- PASS: TestNodeShowAndStatusReadTheLastSendFromTheStore (0.51s)
./cmd/mesh-controller --- PASS: TestTheConditionsVerbReadsTheLooksTheBucketNoLongerHolds (0.37s)
./cmd/mesh-controller --- PASS: TestAWalkLetGoAndStoppedByVerbsIsSaidStartedAndEnded (0.55s)
./cmd/mesh-controller --- PASS: TestAWalkStoppedOrClosedByAPersonIsSaidEndedStopped (0.54s)
./cmd/mesh-controller --- PASS: TestAWalkRetriedByAPersonIsSaidStartedAgain (0.55s)
./cmd/mesh-controller --- PASS: TestABacklogReleasedByAPersonIsSaidStarted (0.49s)
./cmd/mesh-controller --- PASS: TestAWalkEndedByCancelOrClearIsSaidEnded (0.54s)
./cmd/mesh-controller --- PASS: TestAWalkRestartedByARebuildIsSaidStarted (0.46s)
./cmd/mesh-controller --- PASS: TestAWalkStoppedByHandAndRetriedEndsFailedWhenItFailsAgain (0.63s)
./cmd/mesh-controller --- PASS: TestReplay237 (0.48s)
./cmd/mesh-controller --- PASS: TestAnUnassignThatLeavesItsNodeUnresolvedSaysSoOnceInItsAnswer (0.46s)
./cmd/mesh-controller --- PASS: TestAnUnassignThatLeavesItsNodeResolvedSaysNothingOfIt (0.47s)
./cmd/mesh-controller --- PASS: TestAnAssignThatLeavesItsNodeUnresolvedSaysOnlyThePlansRefusal (0.44s)
./cmd/mesh-controller --- PASS: TestADirectoryOwnersKeyIsRefusedThroughAVerb (0.49s)
./cmd/mesh-controller --- PASS: TestTheSendMakesNoValueForAnOutsideSecretNobodyGave (0.70s)
./cmd/mesh-controller --- PASS: TestAQuestionComposesWithoutAnOutsideSecretNobodyGave (0.54s)
./cmd/mesh-controller --- PASS: TestReplay401 (0.57s)
./internal/inventory --- PASS: TestTheLastSendSaysWhatTheMachineAnswered (0.34s)
./internal/inventory --- PASS: TestAReportIsTheLastSendsAnswerOnlyWhenItIsAboutThatSend (0.35s)
./internal/inventory --- PASS: TestAnIssuedValueIsSealedToEveryHolderOnceAndNotAgain (0.48s)
./internal/inventory --- PASS: TestAnIssuedValueIsSealedAgainAfterAKeyChangeOrAnAcceptance (0.56s)
./internal/inventory --- PASS: TestAConditionsLooksAreKeptBesideTheBucket (0.35s)
./internal/inventory --- PASS: TestAPlanIdHoldingAQuoteIsReadAsAPlainId (0.40s)
./internal/inventory --- PASS: TestAWalksStartIsKeptAndARefusedSaveLeavesItUnsaid (0.35s)
```
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.
cmd/mesh-controller/replay401_test.go:TestReplay401, and one line naming it intestdata/store-tests. No code change.Why. The lab registers a replay for every core issue and proves it fails on the commit before its fix and passes on the fix (mesh-lab
replays/register.go). The fix for issue 401 (#262, merge1e28342) has a test,TestTheSendMakesNoValueForAnOutsideSecretNobodyGave, but it readsinventory.GivenOwnSecret, which the commit before does not have, so it does not build there. This replay asserts the same outcome with only what the controller had before:register,assign,planFor,declarationFor,ModuleSecretIfIssued,SecretForModule,AcceptSecretForModule. Same pattern asreplay237_test.go.Asserted: the send makes no value for an own secret issued outside the mesh that nobody gave (the mounts module's
smb-credentials, as on 2026-10-10) and places none; a value the mesh made for it before is not placed either; once a person gives one, that value is placed.How it was tested (throwaway postgres 17,
MESH_TEST_POSTGRES):c672b3d): FAIL,the send placed a value for smb-credentials, which nobody gaveandthe send made a value for a secret issued outside the mesh (held true).sh merge-check.shwith the store: exit 0, every listed store test ran and passed,TestReplay401among them.Files. Only a new test file and one line at the end of
testdata/store-tests; #266 and #268 also add a line to that file, at other places.Replay for hq issue 401 (the mesh made a random value for an own secret issued outside the mesh that nobody gave). mesh-lab's R401 entry points at this commit. Test-only: nothing the mesh runs changes. Not merged.
Delivery
novox/mesh-controller@f3c15e00af50— delivered since 2026-10-12T18:22:13ZDelivery plan — builds nothing: the change touches no module of the mesh's graph
Group
fix/401-replay, in order: novox/mesh-controller@f3c15e00af → novox/mesh-lab@3c655d83e1Transitions
ba685b17f5, the trunk is now d8f36a8fb706; judged again on a recheck or when it is mergedThe commit's note under
refs/notes/mesh-plankeeps every transition:git log --notes=mesh-plan.Merge check at
f3c15e00: headf3c15e00afmerged into trunkf10aedac58, passOut of date when it landed: out of date: judged against trunk
f10aedac58, the trunk is now f8daec01d3f0; judged again on a recheck or when it is mergedVerdict: approve at
f3c15e00afIndependent review (fix-401 replay, delivery group fix/401-replay).
What I checked:
c672b3d, the commit before the fix #262): aMesh, register, assign, planFor, declarationFor, ModuleSecretIfIssued, SecretForModule, AcceptSecretForModule, catalogue.OwnSecrets, TakenAtStart, IssuedOutside. It compiles there.1e28342it passes.ba685b17(#266 and #268 each added lines elsewhere in the file). TestReplay401 passes on that merge, and go vet ./cmd/mesh-controller is clean there.Statuses at this head: mesh/merge-gate and mesh/repo-check both said PASS but are now pending as out of date (judged against trunk
f10aedac, trunk is nowba685b17); mesh/delivery pending (waits for its check); mesh/delivery-group pending (group checking, 1 of 2 members ready). It is not mergeable until those are re-judged green.Note for the merge: mesh-lab #87's R401 names HomeRef
f3c15e00af(this head). Merge with a merge commit, not a squash or rebase, so that commit stays reachable from main.Merge check at
f3c15e00Judged: head
f3c15e00af50merged into trunkba685b17f5e1; read beside it: mesh-catalog23ea0f431faf, mesh-controller-mainba685b17f5e1, mesh-hosta1f9856b3957, mesh-tools954e1a53eef9mesh/merge-gate: PASS — every machine composes with the change as it did without (4 of 4 compose) (modules: build-agent)mesh/repo-check: PASS — its merge-check.sh passedDelivery plan — builds build-agent → ace, g14, novox, shanks; no bus step
Run by the build seat on novox as
build-1791825215476637790(builds --log build-1791825215476637790).