Fixes hq issue 762: the operator's three local follow pages on g14 call plans every few seconds, and the controller wrote a journal line for each (~14,000 a day), burying its journal and adding to the control node's journald writes.
runForMeshCLI asks first whether the line only reads, judged by the command verb's existing ADR 0266 list of reading lines (commandReads, terminalOnly), every word of the line considered: plans go/stop/close/retry, conditions silence, settings set/clear are acts and logged; plans, plans wait, conditions, settings show are reads. A command the list does not name is logged.
A read that succeeds writes no line and is counted per caller; changes, refusals, lines carrying stdin, server commands, and failed or refused reads keep their line (a failed read says its exit).
sayReadCalls writes one line an hour with the read calls per caller, only if there were any.
The hand-act log is written by the verbs themselves and does not depend on this line. Seat verbs are not affected (they write no per-call line).
Checks: gofmt, go vet, meshcli_reads_test.go (4 tests), merge-check.sh with the store tests. Reviewed independently before push: APPROVE at 9e11790bd7.
Fixes hq issue 762: the operator's three local follow pages on g14 call `plans` every few seconds, and the controller wrote a journal line for each (~14,000 a day), burying its journal and adding to the control node's journald writes.
- `runForMeshCLI` asks first whether the line only reads, judged by the `command` verb's existing ADR 0266 list of reading lines (`commandReads`, `terminalOnly`), every word of the line considered: `plans go/stop/close/retry`, `conditions silence`, `settings set/clear` are acts and logged; `plans`, `plans wait`, `conditions`, `settings show` are reads. A command the list does not name is logged.
- A read that succeeds writes no line and is counted per caller; changes, refusals, lines carrying stdin, server commands, and failed or refused reads keep their line (a failed read says its exit).
- `sayReadCalls` writes one line an hour with the read calls per caller, only if there were any.
- The hand-act log is written by the verbs themselves and does not depend on this line. Seat verbs are not affected (they write no per-call line).
Checks: gofmt, go vet, meshcli_reads_test.go (4 tests), merge-check.sh with the store tests. Reviewed independently before push: APPROVE at 9e11790bd74a9e7234069c26808ef0b313e5fd8f.
mesh/merge-gate head 9e11790bd74a merged into trunk 3ed08c3464e3 — pass: builds mesh-controller → novox; no bus step; every machine composes with the chang…
A page polling plans every few seconds wrote about 14,000 journal lines a day. A line is judged a
read by the generic command verb's reading forms (ADR 0266), on its every word, so plans go,
conditions silence and settings set are still said; a refused or failed read is said too.
Deliverynovox/mesh-controller@9e11790bd74a — delivered since 2026-10-14T22:34:41Z
Delivery plan — builds mesh-controller → novox; no bus step
tier 0: mesh-controller
novox: receives mesh-controller
Machines
mesh-controller on every machine running it: sent
Transitions
2026-10-14 22:30 (new) → proposed (announced): novox/mesh-controller#341's head announced
2026-10-14 22:33 proposed → checked (checked): a verdict names this commit and the trunk's head as its trunk commit
2026-10-14 22:33 checked → ready (accepted): the gate passed or warned, and the repository's own check did not fail
2026-10-14 22:33 ready → published (merged): on the trunk its modules follow: merged there, and its walk opened — or nothing for a walk to move
2026-10-14 22:33 published → delivering (go): its walk started: let go by this owner in its group's order, by a person, or on the controller's own path — not a failed walk that carried a later commit for it, after which it waits for a walk of its own commit
2026-10-14 22:34 delivering → delivered (done): its walk is done, carrying its own commit: every machine of its deploy plan passed, or was left as its policy says
The commit's note under refs/notes/mesh-plan keeps every transition: git log --notes=mesh-plan.
<!-- mesh-delivery:view -->
**Delivery** `novox/mesh-controller@9e11790bd74a` — **delivered** since 2026-10-14T22:34:41Z
**Delivery plan** — builds mesh-controller → novox; no bus step
- tier 0: mesh-controller
- novox: receives mesh-controller
**Machines**
- mesh-controller on every machine running it: sent
**Transitions**
- 2026-10-14 22:30 (new) → proposed (announced): novox/mesh-controller#341's head announced
- 2026-10-14 22:33 proposed → checked (checked): a verdict names this commit and the trunk's head as its trunk commit
- 2026-10-14 22:33 checked → ready (accepted): the gate passed or warned, and the repository's own check did not fail
- 2026-10-14 22:33 ready → published (merged): on the trunk its modules follow: merged there, and its walk opened — or nothing for a walk to move
- 2026-10-14 22:33 published → delivering (go): its walk started: let go by this owner in its group's order, by a person, or on the controller's own path — not a failed walk that carried a later commit for it, after which it waits for a walk of its own commit
- 2026-10-14 22:34 delivering → delivered (done): its walk is done, carrying its own commit: every machine of its deploy plan passed, or was left as its policy says
The commit's note under `refs/notes/mesh-plan` keeps every transition: `git log --notes=mesh-plan`.
Merge check at 9e11790b
Judged: head 9e11790bd74a merged into trunk 3ed08c3464e3; read beside it: mesh-catalog 7913b56d66f7, mesh-controller-main 3ed08c3464e3, mesh-host 1a2677882380, mesh-tools 5d70eb3e35a9
mesh/merge-gate: PASS — every machine composes with the change as it did without (4 of 4 compose) (modules: mesh-controller)
mesh/repo-check: PASS — its merge-check.sh passed
Delivery plan — builds mesh-controller → novox; no bus step
tier 0: mesh-controller
novox: receives mesh-controller
read by no module's build: cmd/mesh-controller/meshcli_reads_test.go, cmd/mesh-controller/sayable_test.go
Run by the build seat on ace as build-1792017001563472029 (builds --log build-1792017001563472029).
--- the gate: mesh-controller
mesh-controller: ok, 60 tool(s); WARNING: merge-window ask(s) for a setting and do(es) not say whether it is trusted, so it counts as trusted: set at the terminal alone; say "trusted" false where nothing trusts it (novox/hq issue 339); WARNING: controller stay(s) up and say(s) not how it is ready — judged by liveness alone, refused from 2026-11-18 (ADR 0240 rule 8)
long-running resources without health: 1
files asking for a setting without saying whether it is trusted: 1
1 manifest(s) checked. Judged against the seats this binary carries; a claim on one of the mesh's own seats is judged fully at registration, and a seat declared by a module not given here reads as unknown. Identities judged on a 6-character machine name, against the bounds of the providers given here
judging 1 module(s) changed against 4 machine(s), as the snapshot of 2026-10-14T22:08:46Z 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-14T22:08:46Z
modules the change moves:
- mesh-controller (changed)
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): mesh-controller
notes:
- cmd/mesh-controller/meshcli_reads_test.go and cmd/mesh-controller/sayable_test.go read by no module's build, and rebuild nothing (issue 280)
--- its merge-check.sh (go toolchain)
ok github.com/novox/mesh-controller/cmd/mesh-builder 1.104s
ok github.com/novox/mesh-controller/examples/objectstore-provisioner 1.023s
ok github.com/novox/mesh-controller/examples/postgres-provisioner 1.030s
ok github.com/novox/mesh-controller/examples/redis-provisioner 1.021s
ok github.com/novox/mesh-controller/examples/route-proxy 1.110s
ok github.com/novox/mesh-controller/internal/artifacts 1.047s
? github.com/novox/mesh-controller/internal/beside [no test files]
ok github.com/novox/mesh-controller/internal/broker 5.104s
ok github.com/novox/mesh-controller/internal/catalogue 13.901s
ok github.com/novox/mesh-controller/internal/conditions 2.681s
ok github.com/novox/mesh-controller/internal/envfile 1.017s
ok github.com/novox/mesh-controller/internal/facts 1.018s
ok github.com/novox/mesh-controller/internal/identity 6.333s
ok github.com/novox/mesh-controller/internal/lease 10.272s
ok github.com/novox/mesh-controller/internal/licences 4.599s
ok github.com/novox/mesh-controller/internal/licences/adapters 1.083s
ok github.com/novox/mesh-controller/internal/lint 2.598s
ok github.com/novox/mesh-controller/internal/outward 1.109s
ok github.com/novox/mesh-controller/internal/overlay 1.084s
ok github.com/novox/mesh-controller/internal/secrets 1.498s
ok github.com/novox/mesh-controller/internal/store 3.530s
ok github.com/novox/mesh-controller/internal/testbus 1.284s
ok github.com/novox/mesh-controller/internal/token 1.081s
ok github.com/novox/mesh-controller/cmd/mesh-controller 35s (shard 1 of 8: 117 tests)
ok github.com/novox/mesh-controller/cmd/mesh-controller 32s (shard 2 of 8: 117 tests)
ok github.com/novox/mesh-controller/cmd/mesh-controller 46s (shard 3 of 8: 117 tests)
ok github.com/novox/mesh-controller/cmd/mesh-controller 40s (shard 4 of 8: 117 tests)
ok github.com/novox/mesh-controller/cmd/mesh-controller 33s (shard 5 of 8: 116 tests)
ok github.com/novox/mesh-controller/cmd/mesh-controller 38s (shard 6 of 8: 116 tests)
ok github.com/novox/mesh-controller/cmd/mesh-controller 32s (shard 7 of 8: 116 tests)
ok github.com/novox/mesh-controller/cmd/mesh-controller 32s (shard 8 of 8: 116 tests)
ok github.com/novox/mesh-controller/internal/inventory 14s (shard 1 of 4: 69 tests)
ok github.com/novox/mesh-controller/internal/inventory 13s (shard 2 of 4: 68 tests)
ok github.com/novox/mesh-controller/internal/inventory 14s (shard 3 of 4: 68 tests)
ok github.com/novox/mesh-controller/internal/inventory 15s (shard 4 of 4: 68 tests)
ok github.com/novox/mesh-controller/internal/builder 44s (shard 1 of 4: 52 tests)
ok github.com/novox/mesh-controller/internal/builder 14s (shard 2 of 4: 51 tests)
ok github.com/novox/mesh-controller/internal/builder 29s (shard 3 of 4: 51 tests)
ok github.com/novox/mesh-controller/internal/builder 16s (shard 4 of 4: 51 tests)
ok github.com/novox/mesh-controller/internal/link 14s (shard 1 of 4: 44 tests)
ok github.com/novox/mesh-controller/internal/link 20s (shard 2 of 4: 44 tests)
ok github.com/novox/mesh-controller/internal/link 13s (shard 3 of 4: 44 tests)
ok github.com/novox/mesh-controller/internal/link 17s (shard 4 of 4: 44 tests)
store tests, each run against the store:
./cmd/mesh-controller --- PASS: TestAStopWithoutAMergeWalksTheOthersAgain (0.39s)
./cmd/mesh-controller --- PASS: TestAStopWithoutAMergeEndsTheMergesThatContainIt (0.35s)
./cmd/mesh-controller --- PASS: TestAStopWalksTheOthersAgainInTheOpenBatch (0.32s)
./cmd/mesh-controller --- PASS: TestAStopNamesWhatStaysOnTheMachinesAndWhatStillCarriesIt (0.32s)
./cmd/mesh-controller --- PASS: TestAStopWithoutAMergeLeavesItOutOfABatch (0.35s)
./cmd/mesh-controller --- PASS: TestSavingPlansAndMovingMergesIsOneAct (0.27s)
./cmd/mesh-controller --- PASS: TestAPlanFollowedFromTheStoreAnswersWhenItMoves (1.96s)
./cmd/mesh-controller --- PASS: TestNodeShowAndStatusReadTheLastSendFromTheStore (0.30s)
./cmd/mesh-controller --- PASS: TestTheConditionsVerbReadsTheLooksTheBucketNoLongerHolds (0.31s)
./cmd/mesh-controller --- PASS: TestAWalkLetGoAndStoppedByVerbsIsSaidStartedAndEnded (0.92s)
./cmd/mesh-controller --- PASS: TestAWalkStoppedOrClosedByAPersonIsSaidEndedStopped (1.02s)
./cmd/mesh-controller --- PASS: TestAWalkRetriedByAPersonIsSaidStartedAgain (0.78s)
./cmd/mesh-controller --- PASS: TestABacklogReleasedByAPersonIsSaidStarted (2.02s)
./cmd/mesh-controller --- PASS: TestAWalkEndedByCancelOrClearIsSaidEnded (1.24s)
./cmd/mesh-controller --- PASS: TestAWalkRestartedByARebuildIsSaidStarted (2.83s)
./cmd/mesh-controller --- PASS: TestAWalkStoppedByHandAndRetriedEndsFailedWhenItFailsAgain (3.19s)
./cmd/mesh-controller --- PASS: TestReplay237 (0.35s)
./cmd/mesh-controller --- PASS: TestAnUnassignThatLeavesItsNodeUnresolvedSaysSoOnceInItsAnswer (0.25s)
./cmd/mesh-controller --- PASS: TestAnUnassignThatLeavesItsNodeResolvedSaysNothingOfIt (0.25s)
./cmd/mesh-controller --- PASS: TestAnAssignThatLeavesItsNodeUnresolvedSaysOnlyThePlansRefusal (0.39s)
./cmd/mesh-controller --- PASS: TestADirectoryOwnersKeyIsRefusedThroughAVerb (0.30s)
./cmd/mesh-controller --- PASS: TestTheSendMakesNoValueForAnOutsideSecretNobodyGave (0.35s)
./cmd/mesh-controller --- PASS: TestAQuestionComposesWithoutAnOutsideSecretNobodyGave (0.28s)
./cmd/mesh-controller --- PASS: TestReplay201 (0.35s)
./cmd/mesh-controller --- PASS: TestARollbackWhoseSendWasRefusedIsCompletedByTheNextSend (0.31s)
./cmd/mesh-controller --- PASS: TestAGateJudgesTheOtherMovesBesideAKeptCore (0.33s)
./cmd/mesh-controller --- PASS: TestReplay401 (0.31s)
./cmd/mesh-controller --- PASS: TestReplay201ThePlansSend (0.23s)
./cmd/mesh-controller --- PASS: TestPlanAndNodeListAnOptionalRequirementLeftUnbound (0.43s)
./cmd/mesh-controller --- PASS: TestReplay340 (0.28s)
./cmd/mesh-controller --- PASS: TestOnlyATrustedFilesNamedKeyIsRefusedThroughAVerb (0.29s)
./cmd/mesh-controller --- PASS: TestReplay349 (0.22s)
./cmd/mesh-controller --- PASS: TestReplay348AFaultFromBeforeTheSendFailsNoGate (0.23s)
./cmd/mesh-controller --- PASS: TestReplay239AModuleNameIsNotTakenOverByAnotherRepository (0.15s)
./cmd/mesh-controller --- PASS: TestAWalkThatMovedNothingSaysWhichModulesMatchedWhatRuns (0.29s)
./cmd/mesh-controller --- PASS: TestAWalkWhoseEveryBuildCameOutTheSameIsDone (0.27s)
./cmd/mesh-controller --- PASS: TestReplay614ANewSDKPlansTheToolchainAndThenItsBundles (0.12s)
./cmd/mesh-controller --- PASS: TestOneAcceptForAProviderIsPlacedForEveryConsumer (0.53s)
./cmd/mesh-controller --- PASS: TestReplay164 (0.28s)
./cmd/mesh-controller --- PASS: TestAnApprovedLayerOpensTheWalkThatSendsIt (0.26s)
./cmd/mesh-controller --- PASS: TestASettingsWalkSendsOneMachineAtATimeEachJudged (0.26s)
./cmd/mesh-controller --- PASS: TestAFailedSettingsWalkStopsAndHoldsNothingBack (0.31s)
./cmd/mesh-controller --- PASS: TestASettingsWalkSendsTheLayerAloneEveryBuildKept (0.26s)
./cmd/mesh-controller --- PASS: TestASettingsWalkStopsBeforeADataMoveAndPassesOverAMachineAway (0.76s)
./cmd/mesh-controller --- PASS: TestACrossingSendSupersedesASettingsGate (0.29s)
./cmd/mesh-controller --- PASS: TestASettingsWalkFailsOnARefusalThatCannotClear (0.24s)
./cmd/mesh-controller --- PASS: TestAProviderElsewhereServesItsOwnComposedName (0.32s)
./cmd/mesh-controller --- PASS: TestAReusedCheckBuildIsRegisteredByItsDigestAndGatedAsABuiltOne (0.85s)
./cmd/mesh-controller --- PASS: TestAReleaseSendsTheRestAtOnceAfterTheFirstPasses (0.63s)
./cmd/mesh-controller --- PASS: TestARestMachineThatFailsIsPutBackAloneAndTheOthersAreJudgedOn (0.42s)
./cmd/mesh-controller --- PASS: TestAWalkTakesOverTheReadingsOfAGateJudgingTheSameBuildThere (0.29s)
./cmd/mesh-controller --- PASS: TestAFirstSendMadeAndNotKeptIsNotSentAgain (0.32s)
./cmd/mesh-controller --- PASS: TestAReleaseSendKeptAndMadeIsNotMadeAgain (0.23s)
./cmd/mesh-controller --- PASS: TestAFirstMachineThatFailsStillStopsTheWalk (0.29s)
./cmd/mesh-controller --- PASS: TestTheControlNodeIsSentLastInAStep (0.29s)
./cmd/mesh-controller --- PASS: TestARestMachineSilentPastItsBoundIsLeftAndSaid (0.27s)
./cmd/mesh-controller --- PASS: TestANoMoveTierWaitsForNoNewReport (0.30s)
./cmd/mesh-controller --- PASS: TestOneProviderDownAndThreeConsumersFailingAreOneCondition (0.17s)
./cmd/mesh-controller --- PASS: TestAConsumerFailingBesideAHealthyProviderIsItsOwn (0.15s)
./internal/inventory --- PASS: TestTheLastSendSaysWhatTheMachineAnswered (0.11s)
./internal/inventory --- PASS: TestAReportIsTheLastSendsAnswerOnlyWhenItIsAboutThatSend (0.11s)
./internal/inventory --- PASS: TestAnIssuedValueIsSealedToEveryHolderOnceAndNotAgain (0.20s)
./internal/inventory --- PASS: TestAnIssuedValueIsSealedAgainAfterAKeyChangeOrAnAcceptance (0.15s)
./internal/inventory --- PASS: TestAConditionsLooksAreKeptBesideTheBucket (0.10s)
./internal/inventory --- PASS: TestAPlanIdHoldingAQuoteIsReadAsAPlainId (0.11s)
./internal/inventory --- PASS: TestAWalksStartIsKeptAndARefusedSaveLeavesItUnsaid (0.17s)
./internal/inventory --- PASS: TestAWalksRestIsReadFromEachMachinesOwnSend (0.19s)
./internal/inventory --- PASS: TestAStoredBuildWithASilentMergeableFileIsStillReadAndComposed (0.10s)
./internal/inventory --- PASS: TestACredentialIssuedOutsideIsNeverMade (0.11s)
./internal/inventory --- PASS: TestOneAcceptForAProviderIsSealedToEveryConsumer (0.10s)
./internal/inventory --- PASS: TestASharedOwnSecretIssuedOutsideIsNeverMade (0.10s)
./internal/inventory --- PASS: TestAReportOfABusyContainerIsKeptAndReadBack (0.47s)
./internal/inventory --- PASS: TestWhatRunsIsTheRegisteredBuildNotANewerOnePutBack (0.13s)
**Merge check** at `9e11790b`
Judged: head `9e11790bd74a` merged into trunk `3ed08c3464e3`; read beside it: mesh-catalog `7913b56d66f7`, mesh-controller-main `3ed08c3464e3`, mesh-host `1a2677882380`, mesh-tools `5d70eb3e35a9`
- `mesh/merge-gate`: **PASS** — every machine composes with the change as it did without (4 of 4 compose) (modules: mesh-controller)
- `mesh/repo-check`: **PASS** — its merge-check.sh passed
**Delivery plan** — builds mesh-controller → novox; no bus step
- tier 0: mesh-controller
- novox: receives mesh-controller
- read by no module's build: cmd/mesh-controller/meshcli_reads_test.go, cmd/mesh-controller/sayable_test.go
Run by the build seat on ace as `build-1792017001563472029` (`builds --log build-1792017001563472029`).
```
--- the gate: mesh-controller
mesh-controller: ok, 60 tool(s); WARNING: merge-window ask(s) for a setting and do(es) not say whether it is trusted, so it counts as trusted: set at the terminal alone; say "trusted" false where nothing trusts it (novox/hq issue 339); WARNING: controller stay(s) up and say(s) not how it is ready — judged by liveness alone, refused from 2026-11-18 (ADR 0240 rule 8)
long-running resources without health: 1
files asking for a setting without saying whether it is trusted: 1
1 manifest(s) checked. Judged against the seats this binary carries; a claim on one of the mesh's own seats is judged fully at registration, and a seat declared by a module not given here reads as unknown. Identities judged on a 6-character machine name, against the bounds of the providers given here
judging 1 module(s) changed against 4 machine(s), as the snapshot of 2026-10-14T22:08:46Z 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-14T22:08:46Z
modules the change moves:
- mesh-controller (changed)
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): mesh-controller
notes:
- cmd/mesh-controller/meshcli_reads_test.go and cmd/mesh-controller/sayable_test.go read by no module's build, and rebuild nothing (issue 280)
--- its merge-check.sh (go toolchain)
ok github.com/novox/mesh-controller/cmd/mesh-builder 1.104s
ok github.com/novox/mesh-controller/examples/objectstore-provisioner 1.023s
ok github.com/novox/mesh-controller/examples/postgres-provisioner 1.030s
ok github.com/novox/mesh-controller/examples/redis-provisioner 1.021s
ok github.com/novox/mesh-controller/examples/route-proxy 1.110s
ok github.com/novox/mesh-controller/internal/artifacts 1.047s
? github.com/novox/mesh-controller/internal/beside [no test files]
ok github.com/novox/mesh-controller/internal/broker 5.104s
ok github.com/novox/mesh-controller/internal/catalogue 13.901s
ok github.com/novox/mesh-controller/internal/conditions 2.681s
ok github.com/novox/mesh-controller/internal/envfile 1.017s
ok github.com/novox/mesh-controller/internal/facts 1.018s
ok github.com/novox/mesh-controller/internal/identity 6.333s
ok github.com/novox/mesh-controller/internal/lease 10.272s
ok github.com/novox/mesh-controller/internal/licences 4.599s
ok github.com/novox/mesh-controller/internal/licences/adapters 1.083s
ok github.com/novox/mesh-controller/internal/lint 2.598s
ok github.com/novox/mesh-controller/internal/outward 1.109s
ok github.com/novox/mesh-controller/internal/overlay 1.084s
ok github.com/novox/mesh-controller/internal/secrets 1.498s
ok github.com/novox/mesh-controller/internal/store 3.530s
ok github.com/novox/mesh-controller/internal/testbus 1.284s
ok github.com/novox/mesh-controller/internal/token 1.081s
ok github.com/novox/mesh-controller/cmd/mesh-controller 35s (shard 1 of 8: 117 tests)
ok github.com/novox/mesh-controller/cmd/mesh-controller 32s (shard 2 of 8: 117 tests)
ok github.com/novox/mesh-controller/cmd/mesh-controller 46s (shard 3 of 8: 117 tests)
ok github.com/novox/mesh-controller/cmd/mesh-controller 40s (shard 4 of 8: 117 tests)
ok github.com/novox/mesh-controller/cmd/mesh-controller 33s (shard 5 of 8: 116 tests)
ok github.com/novox/mesh-controller/cmd/mesh-controller 38s (shard 6 of 8: 116 tests)
ok github.com/novox/mesh-controller/cmd/mesh-controller 32s (shard 7 of 8: 116 tests)
ok github.com/novox/mesh-controller/cmd/mesh-controller 32s (shard 8 of 8: 116 tests)
ok github.com/novox/mesh-controller/internal/inventory 14s (shard 1 of 4: 69 tests)
ok github.com/novox/mesh-controller/internal/inventory 13s (shard 2 of 4: 68 tests)
ok github.com/novox/mesh-controller/internal/inventory 14s (shard 3 of 4: 68 tests)
ok github.com/novox/mesh-controller/internal/inventory 15s (shard 4 of 4: 68 tests)
ok github.com/novox/mesh-controller/internal/builder 44s (shard 1 of 4: 52 tests)
ok github.com/novox/mesh-controller/internal/builder 14s (shard 2 of 4: 51 tests)
ok github.com/novox/mesh-controller/internal/builder 29s (shard 3 of 4: 51 tests)
ok github.com/novox/mesh-controller/internal/builder 16s (shard 4 of 4: 51 tests)
ok github.com/novox/mesh-controller/internal/link 14s (shard 1 of 4: 44 tests)
ok github.com/novox/mesh-controller/internal/link 20s (shard 2 of 4: 44 tests)
ok github.com/novox/mesh-controller/internal/link 13s (shard 3 of 4: 44 tests)
ok github.com/novox/mesh-controller/internal/link 17s (shard 4 of 4: 44 tests)
store tests, each run against the store:
./cmd/mesh-controller --- PASS: TestAStopWithoutAMergeWalksTheOthersAgain (0.39s)
./cmd/mesh-controller --- PASS: TestAStopWithoutAMergeEndsTheMergesThatContainIt (0.35s)
./cmd/mesh-controller --- PASS: TestAStopWalksTheOthersAgainInTheOpenBatch (0.32s)
./cmd/mesh-controller --- PASS: TestAStopNamesWhatStaysOnTheMachinesAndWhatStillCarriesIt (0.32s)
./cmd/mesh-controller --- PASS: TestAStopWithoutAMergeLeavesItOutOfABatch (0.35s)
./cmd/mesh-controller --- PASS: TestSavingPlansAndMovingMergesIsOneAct (0.27s)
./cmd/mesh-controller --- PASS: TestAPlanFollowedFromTheStoreAnswersWhenItMoves (1.96s)
./cmd/mesh-controller --- PASS: TestNodeShowAndStatusReadTheLastSendFromTheStore (0.30s)
./cmd/mesh-controller --- PASS: TestTheConditionsVerbReadsTheLooksTheBucketNoLongerHolds (0.31s)
./cmd/mesh-controller --- PASS: TestAWalkLetGoAndStoppedByVerbsIsSaidStartedAndEnded (0.92s)
./cmd/mesh-controller --- PASS: TestAWalkStoppedOrClosedByAPersonIsSaidEndedStopped (1.02s)
./cmd/mesh-controller --- PASS: TestAWalkRetriedByAPersonIsSaidStartedAgain (0.78s)
./cmd/mesh-controller --- PASS: TestABacklogReleasedByAPersonIsSaidStarted (2.02s)
./cmd/mesh-controller --- PASS: TestAWalkEndedByCancelOrClearIsSaidEnded (1.24s)
./cmd/mesh-controller --- PASS: TestAWalkRestartedByARebuildIsSaidStarted (2.83s)
./cmd/mesh-controller --- PASS: TestAWalkStoppedByHandAndRetriedEndsFailedWhenItFailsAgain (3.19s)
./cmd/mesh-controller --- PASS: TestReplay237 (0.35s)
./cmd/mesh-controller --- PASS: TestAnUnassignThatLeavesItsNodeUnresolvedSaysSoOnceInItsAnswer (0.25s)
./cmd/mesh-controller --- PASS: TestAnUnassignThatLeavesItsNodeResolvedSaysNothingOfIt (0.25s)
./cmd/mesh-controller --- PASS: TestAnAssignThatLeavesItsNodeUnresolvedSaysOnlyThePlansRefusal (0.39s)
./cmd/mesh-controller --- PASS: TestADirectoryOwnersKeyIsRefusedThroughAVerb (0.30s)
./cmd/mesh-controller --- PASS: TestTheSendMakesNoValueForAnOutsideSecretNobodyGave (0.35s)
./cmd/mesh-controller --- PASS: TestAQuestionComposesWithoutAnOutsideSecretNobodyGave (0.28s)
./cmd/mesh-controller --- PASS: TestReplay201 (0.35s)
./cmd/mesh-controller --- PASS: TestARollbackWhoseSendWasRefusedIsCompletedByTheNextSend (0.31s)
./cmd/mesh-controller --- PASS: TestAGateJudgesTheOtherMovesBesideAKeptCore (0.33s)
./cmd/mesh-controller --- PASS: TestReplay401 (0.31s)
./cmd/mesh-controller --- PASS: TestReplay201ThePlansSend (0.23s)
./cmd/mesh-controller --- PASS: TestPlanAndNodeListAnOptionalRequirementLeftUnbound (0.43s)
./cmd/mesh-controller --- PASS: TestReplay340 (0.28s)
./cmd/mesh-controller --- PASS: TestOnlyATrustedFilesNamedKeyIsRefusedThroughAVerb (0.29s)
./cmd/mesh-controller --- PASS: TestReplay349 (0.22s)
./cmd/mesh-controller --- PASS: TestReplay348AFaultFromBeforeTheSendFailsNoGate (0.23s)
./cmd/mesh-controller --- PASS: TestReplay239AModuleNameIsNotTakenOverByAnotherRepository (0.15s)
./cmd/mesh-controller --- PASS: TestAWalkThatMovedNothingSaysWhichModulesMatchedWhatRuns (0.29s)
./cmd/mesh-controller --- PASS: TestAWalkWhoseEveryBuildCameOutTheSameIsDone (0.27s)
./cmd/mesh-controller --- PASS: TestReplay614ANewSDKPlansTheToolchainAndThenItsBundles (0.12s)
./cmd/mesh-controller --- PASS: TestOneAcceptForAProviderIsPlacedForEveryConsumer (0.53s)
./cmd/mesh-controller --- PASS: TestReplay164 (0.28s)
./cmd/mesh-controller --- PASS: TestAnApprovedLayerOpensTheWalkThatSendsIt (0.26s)
./cmd/mesh-controller --- PASS: TestASettingsWalkSendsOneMachineAtATimeEachJudged (0.26s)
./cmd/mesh-controller --- PASS: TestAFailedSettingsWalkStopsAndHoldsNothingBack (0.31s)
./cmd/mesh-controller --- PASS: TestASettingsWalkSendsTheLayerAloneEveryBuildKept (0.26s)
./cmd/mesh-controller --- PASS: TestASettingsWalkStopsBeforeADataMoveAndPassesOverAMachineAway (0.76s)
./cmd/mesh-controller --- PASS: TestACrossingSendSupersedesASettingsGate (0.29s)
./cmd/mesh-controller --- PASS: TestASettingsWalkFailsOnARefusalThatCannotClear (0.24s)
./cmd/mesh-controller --- PASS: TestAProviderElsewhereServesItsOwnComposedName (0.32s)
./cmd/mesh-controller --- PASS: TestAReusedCheckBuildIsRegisteredByItsDigestAndGatedAsABuiltOne (0.85s)
./cmd/mesh-controller --- PASS: TestAReleaseSendsTheRestAtOnceAfterTheFirstPasses (0.63s)
./cmd/mesh-controller --- PASS: TestARestMachineThatFailsIsPutBackAloneAndTheOthersAreJudgedOn (0.42s)
./cmd/mesh-controller --- PASS: TestAWalkTakesOverTheReadingsOfAGateJudgingTheSameBuildThere (0.29s)
./cmd/mesh-controller --- PASS: TestAFirstSendMadeAndNotKeptIsNotSentAgain (0.32s)
./cmd/mesh-controller --- PASS: TestAReleaseSendKeptAndMadeIsNotMadeAgain (0.23s)
./cmd/mesh-controller --- PASS: TestAFirstMachineThatFailsStillStopsTheWalk (0.29s)
./cmd/mesh-controller --- PASS: TestTheControlNodeIsSentLastInAStep (0.29s)
./cmd/mesh-controller --- PASS: TestARestMachineSilentPastItsBoundIsLeftAndSaid (0.27s)
./cmd/mesh-controller --- PASS: TestANoMoveTierWaitsForNoNewReport (0.30s)
./cmd/mesh-controller --- PASS: TestOneProviderDownAndThreeConsumersFailingAreOneCondition (0.17s)
./cmd/mesh-controller --- PASS: TestAConsumerFailingBesideAHealthyProviderIsItsOwn (0.15s)
./internal/inventory --- PASS: TestTheLastSendSaysWhatTheMachineAnswered (0.11s)
./internal/inventory --- PASS: TestAReportIsTheLastSendsAnswerOnlyWhenItIsAboutThatSend (0.11s)
./internal/inventory --- PASS: TestAnIssuedValueIsSealedToEveryHolderOnceAndNotAgain (0.20s)
./internal/inventory --- PASS: TestAnIssuedValueIsSealedAgainAfterAKeyChangeOrAnAcceptance (0.15s)
./internal/inventory --- PASS: TestAConditionsLooksAreKeptBesideTheBucket (0.10s)
./internal/inventory --- PASS: TestAPlanIdHoldingAQuoteIsReadAsAPlainId (0.11s)
./internal/inventory --- PASS: TestAWalksStartIsKeptAndARefusedSaveLeavesItUnsaid (0.17s)
./internal/inventory --- PASS: TestAWalksRestIsReadFromEachMachinesOwnSend (0.19s)
./internal/inventory --- PASS: TestAStoredBuildWithASilentMergeableFileIsStillReadAndComposed (0.10s)
./internal/inventory --- PASS: TestACredentialIssuedOutsideIsNeverMade (0.11s)
./internal/inventory --- PASS: TestOneAcceptForAProviderIsSealedToEveryConsumer (0.10s)
./internal/inventory --- PASS: TestASharedOwnSecretIssuedOutsideIsNeverMade (0.10s)
./internal/inventory --- PASS: TestAReportOfABusyContainerIsKeptAndReadBack (0.47s)
./internal/inventory --- PASS: TestWhatRunsIsTheRegisteredBuildNotANewerOnePutBack (0.13s)
```
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.
Fixes hq issue 762: the operator's three local follow pages on g14 call
plansevery few seconds, and the controller wrote a journal line for each (~14,000 a day), burying its journal and adding to the control node's journald writes.runForMeshCLIasks first whether the line only reads, judged by thecommandverb's existing ADR 0266 list of reading lines (commandReads,terminalOnly), every word of the line considered:plans go/stop/close/retry,conditions silence,settings set/clearare acts and logged;plans,plans wait,conditions,settings showare reads. A command the list does not name is logged.sayReadCallswrites one line an hour with the read calls per caller, only if there were any.Checks: gofmt, go vet, meshcli_reads_test.go (4 tests), merge-check.sh with the store tests. Reviewed independently before push: APPROVE at
9e11790bd7.Delivery
novox/mesh-controller@9e11790bd74a— delivered since 2026-10-14T22:34:41ZDelivery plan — builds mesh-controller → novox; no bus step
Machines
Transitions
The commit's note under
refs/notes/mesh-plankeeps every transition:git log --notes=mesh-plan.ready at
9e11790bd7(the operator's word, 2026-10-15; independent review APPROVE at this sha).Merge check at
9e11790bJudged: head
9e11790bd74amerged into trunk3ed08c3464e3; read beside it: mesh-catalog7913b56d66f7, mesh-controller-main3ed08c3464e3, mesh-host1a2677882380, mesh-tools5d70eb3e35a9mesh/merge-gate: PASS — every machine composes with the change as it did without (4 of 4 compose) (modules: mesh-controller)mesh/repo-check: PASS — its merge-check.sh passedDelivery plan — builds mesh-controller → novox; no bus step
Run by the build seat on ace as
build-1792017001563472029(builds --log build-1792017001563472029).