A module moves only when its program changes (hq issue 721) #336

Merged
mesh-admin merged 7 commits from fix/a-module-moves-only-when-its-program-changes into main 2026-10-14 20:21:06 +00:00
Contributor

Fixes hq issue 721 (a change a module's program does not contain still rebuilds and rolls that module).

Proof. mesh-controller #335 changed one sentence in internal/inventory/walkphases.go. cmd/mesh-builder built from the source tree alone (no .git, -trimpath, as build-agent's image builds it) at a5500f73 and c2ec0a60: sha256 a7fe6422… vs 78f2b7a2…, 79 bytes apart. The only difference is Go's build ID, whose action ID hashes every input package; the content ID part is the same (HPdlp2UU…). Built with -ldflags=-buildid= both are c02a337c… The changed string is in neither binary.

Change.

  • builder: a merge check's build for the merge is compared with the build the mesh holds of the module (Held): the whole image (platform, config without Labels/Image/Hostname, every file by path, type, mode, owner, link, xattrs and bytes, never times). Equal on every artifact → CheckBuilt.Same ("unchanged: its program is the same as running build …") and SameAs (the held reference compared). A non-image artifact, no held build, or a failed comparison says nothing: the module moves as today.
  • controller: a walk is cut without a module when every pull request it answers was checked at the head it merged, each check found the module the same, and the mesh still holds the build it was compared with. It is named in Delivery.Unchanged with the check's sentence; a walk left with no module is done.

Tests: TestAModuleWhoseProgramDidNotChangeIsSaidUnchanged, TestAnImageWithAnotherEntrypointIsNotTheSame (internal/builder), TestAWalkLeavesOutAModuleWhoseProgramDidNotChange (cmd/mesh-controller). gofmt, go vet, go test -race on the changed packages pass locally.

The build ID itself is dropped from build-agent's and route-proxy's images in novox/mesh-catalog (same branch name), which goes after this.

Fixes hq issue 721 (a change a module's program does not contain still rebuilds and rolls that module). **Proof.** mesh-controller #335 changed one sentence in internal/inventory/walkphases.go. cmd/mesh-builder built from the source tree alone (no .git, -trimpath, as build-agent's image builds it) at a5500f73 and c2ec0a60: sha256 a7fe6422… vs 78f2b7a2…, 79 bytes apart. The only difference is Go's build ID, whose action ID hashes every input package; the content ID part is the same (HPdlp2UU…). Built with -ldflags=-buildid= both are c02a337c… The changed string is in neither binary. **Change.** - builder: a merge check's build for the merge is compared with the build the mesh holds of the module (`Held`): the whole image (platform, config without Labels/Image/Hostname, every file by path, type, mode, owner, link, xattrs and bytes, never times). Equal on every artifact → `CheckBuilt.Same` ("unchanged: its program is the same as running build …") and `SameAs` (the held reference compared). A non-image artifact, no held build, or a failed comparison says nothing: the module moves as today. - controller: a walk is cut without a module when every pull request it answers was checked at the head it merged, each check found the module the same, and the mesh still holds the build it was compared with. It is named in `Delivery.Unchanged` with the check's sentence; a walk left with no module is done. Tests: `TestAModuleWhoseProgramDidNotChangeIsSaidUnchanged`, `TestAnImageWithAnotherEntrypointIsNotTheSame` (internal/builder), `TestAWalkLeavesOutAModuleWhoseProgramDidNotChange` (cmd/mesh-controller). gofmt, go vet, go test -race on the changed packages pass locally. The build ID itself is dropped from build-agent's and route-proxy's images in novox/mesh-catalog (same branch name), which goes after this.
mesh-admin added 1 commit 2026-10-14 19:07:42 +00:00
Leave a module out of a walk when its check built it the same as what runs (hq issue 721)
mesh/merge-gate head 32bd8b5d5fb2 merged into trunk c2ec0a601acb — pass: builds build-agent, mesh-controller → ace, g14, novox, shanks; no bus step; every …
mesh/repo-check head 32bd8b5d5fb2 merged into trunk c2ec0a601acb — fail: its merge-check.sh failed: --- FAIL: TestNoReaderAnswersEmptyForAnError (2.20s)
mesh/delivery-group group fix/a-module-moves-only-when-its-program-changes rejected: a member's own check failed
mesh/delivery superseded: a newer head of the same pull request
32bd8b5d5f
A one-sentence change in a package mesh-builder imports but never reaches moved
build-agent. A merge check now compares each module it builds with the build the
mesh holds, the whole image without file times, labels or creation time, and a
walk is cut without a module every check of its pull requests found the same,
while the mesh still holds that build. A comparison that fails moves the module
as before.
Author
Contributor

Delivery novox/mesh-controller@b34055f580d4 — failed since 2026-10-14T20:32:11Z

Covered: covered after its failure: a later walk that contains it was delivered: plan-1792009731456564734 (novox/mesh-controller at 60cc9ec3 into main, done, contains its merge 5d22d7df)

Delivery plan — builds build-agent, mesh-controller, route-proxy → ace, g14, novox, shanks; no bus step

  • tier 0: mesh-controller, route-proxy
  • tier 1: build-agent
  • ace: receives route-proxy, build-agent
  • g14: receives build-agent
  • novox: receives mesh-controller, route-proxy, build-agent
  • shanks: receives build-agent
  • route-proxy provides route: its consumers are sent again after it
  • route-proxy keeps data (ADR 0233): what it holds is backed up before it moves
  • 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 route-proxy, build-agent is judged on its first machine

Group fix/a-module-moves-only-when-its-program-changes, in order: novox/mesh-controller@b34055f580 → novox/mesh-catalog@d94764f001

Transitions

  • 2026-10-14 19:56 (new) → proposed (announced): novox/mesh-controller#336's head announced
  • 2026-10-14 19:59 proposed → checked (checked): a verdict names this commit and the trunk's head as its trunk commit
  • 2026-10-14 19:59 checked → ready (accepted): the gate passed or warned, and the repository's own check did not fail
  • 2026-10-14 20:14 ready → proposed (trunk moved): out of date: judged against trunk c2ec0a601a, the trunk is now 86057f455194; judged again on a recheck or when it is merged
  • 2026-10-14 20:18 proposed → checked (checked): a verdict names this commit and the trunk's head as its trunk commit
  • 2026-10-14 20:18 checked → ready (accepted): the gate passed or warned, and the repository's own check did not fail
  • 2026-10-14 20:28 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 20:28 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 20:32 delivering → failed (failed): its walk failed, carrying its own commit: a gate on a first machine (what it carried put back), a build, a machine

The commit's note under refs/notes/mesh-plan keeps every transition: git log --notes=mesh-plan.

<!-- mesh-delivery:view --> **Delivery** `novox/mesh-controller@b34055f580d4` — **failed** since 2026-10-14T20:32:11Z **Covered**: covered after its failure: a later walk that contains it was delivered: plan-1792009731456564734 (novox/mesh-controller at 60cc9ec3 into main, done, contains its merge 5d22d7df) **Delivery plan** — builds build-agent, mesh-controller, route-proxy → ace, g14, novox, shanks; no bus step - tier 0: mesh-controller, route-proxy - tier 1: build-agent - ace: receives route-proxy, build-agent - g14: receives build-agent - novox: receives mesh-controller, route-proxy, build-agent - shanks: receives build-agent - route-proxy provides route: its consumers are sent again after it - route-proxy keeps data (ADR 0233): what it holds is backed up before it moves - 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 route-proxy, build-agent is judged on its first machine **Group** `fix/a-module-moves-only-when-its-program-changes`, in order: novox/mesh-controller@b34055f580d4 → novox/mesh-catalog@d94764f00168 - novox/mesh-controller@b34055f580d4 before novox/mesh-catalog@d94764f00168: declared, over built by - composed together: pass — every machine composes with the change as it did without (4 of 4 compose) **Transitions** - 2026-10-14 19:56 (new) → proposed (announced): novox/mesh-controller#336's head announced - 2026-10-14 19:59 proposed → checked (checked): a verdict names this commit and the trunk's head as its trunk commit - 2026-10-14 19:59 checked → ready (accepted): the gate passed or warned, and the repository's own check did not fail - 2026-10-14 20:14 ready → proposed (trunk moved): out of date: judged against trunk c2ec0a601acb, the trunk is now 86057f455194; judged again on a recheck or when it is merged - 2026-10-14 20:18 proposed → checked (checked): a verdict names this commit and the trunk's head as its trunk commit - 2026-10-14 20:18 checked → ready (accepted): the gate passed or warned, and the repository's own check did not fail - 2026-10-14 20:28 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 20:28 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 20:32 delivering → failed (failed): its walk failed, carrying its own commit: a gate on a first machine (what it carried put back), a build, a machine The commit's note under `refs/notes/mesh-plan` keeps every transition: `git log --notes=mesh-plan`.
Author
Contributor

Merge check at 32bd8b5d
Judged: head 32bd8b5d5fb2 merged into trunk c2ec0a601acb; read beside it: mesh-catalog 482232e8c51c, mesh-controller-main c2ec0a601acb, mesh-host 1a2677882380, 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-controller)
  • mesh/repo-check: FAIL — its merge-check.sh failed: --- FAIL: TestNoReaderAnswersEmptyForAnError (2.20s)

Delivery plan — builds build-agent, mesh-controller → ace, g14, novox, shanks; no bus step

  • tier 0: mesh-controller
  • tier 1: build-agent
  • ace: receives build-agent
  • g14: receives build-agent
  • novox: receives mesh-controller, 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
  • read by no module's build: cmd/mesh-controller/same_program_test.go, internal/builder/same_program_test.go

Run by the build seat on novox as build-1792004879060520962 (builds --log build-1792004879060520962).

--- the gate: build-agent, 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-14T19:01:09Z 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-14T19:01:09Z

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 2 module(s) in 2 tier(s): build-agent, mesh-controller

notes:
  - cmd/mesh-controller/same_program_test.go and internal/builder/same_program_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.540s
ok  	github.com/novox/mesh-controller/examples/objectstore-provisioner	1.055s
ok  	github.com/novox/mesh-controller/examples/postgres-provisioner	1.071s
ok  	github.com/novox/mesh-controller/examples/redis-provisioner	1.033s
ok  	github.com/novox/mesh-controller/examples/route-proxy	1.180s
ok  	github.com/novox/mesh-controller/internal/artifacts	1.101s
?   	github.com/novox/mesh-controller/internal/beside	[no test files]
ok  	github.com/novox/mesh-controller/internal/broker	9.680s
ok  	github.com/novox/mesh-controller/internal/catalogue	13.030s
ok  	github.com/novox/mesh-controller/internal/conditions	2.916s
ok  	github.com/novox/mesh-controller/internal/envfile	1.049s
ok  	github.com/novox/mesh-controller/internal/facts	1.069s
ok  	github.com/novox/mesh-controller/internal/identity	19.553s
ok  	github.com/novox/mesh-controller/internal/lease	10.200s
ok  	github.com/novox/mesh-controller/internal/licences	15.764s
ok  	github.com/novox/mesh-controller/internal/licences/adapters	1.022s
--- FAIL: TestNoReaderAnswersEmptyForAnError (2.20s)
    emptyonerror_test.go:23: cmd/mesh-controller/same_program.go:105 (leaveSameAsRunning) answers an empty collection and no error when it could not read: refuse by name (return the error), or say at the return why empty is the truth (// empty-on-error: <why>)
    emptyonerror_test.go:23: cmd/mesh-controller/same_program.go:110 (leaveSameAsRunning) answers an empty collection and no error when it could not read: refuse by name (return the error), or say at the return why empty is the truth (// empty-on-error: <why>)
    emptyonerror_test.go:26: 7 error branch(es) answer empty, each saying why
FAIL
FAIL	github.com/novox/mesh-controller/internal/lint	2.224s
ok  	github.com/novox/mesh-controller/internal/outward	1.124s
ok  	github.com/novox/mesh-controller/internal/overlay	1.108s
ok  	github.com/novox/mesh-controller/internal/secrets	1.821s
ok  	github.com/novox/mesh-controller/internal/store	7.612s
ok  	github.com/novox/mesh-controller/internal/testbus	1.441s
ok  	github.com/novox/mesh-controller/internal/token	1.062s
FAIL
ok  	github.com/novox/mesh-controller/cmd/mesh-controller	96s	(shard 1 of 8: 115 tests)
ok  	github.com/novox/mesh-controller/cmd/mesh-controller	101s	(shard 2 of 8: 115 tests)
ok  	github.com/novox/mesh-controller/cmd/mesh-controller	108s	(shard 3 of 8: 115 tests)
ok  	github.com/novox/mesh-controller/cmd/mesh-controller	91s	(shard 4 of 8: 115 tests)
ok  	github.com/novox/mesh-controller/cmd/mesh-controller	85s	(shard 5 of 8: 115 tests)
ok  	github.com/novox/mesh-controller/cmd/mesh-controller	94s	(shard 6 of 8: 115 tests)
ok  	github.com/novox/mesh-controller/cmd/mesh-controller	102s	(shard 7 of 8: 115 tests)
ok  	github.com/novox/mesh-controller/cmd/mesh-controller	99s	(shard 8 of 8: 114 tests)
ok  	github.com/novox/mesh-controller/internal/inventory	40s	(shard 1 of 4: 68 tests)
ok  	github.com/novox/mesh-controller/internal/inventory	35s	(shard 2 of 4: 67 tests)
ok  	github.com/novox/mesh-controller/internal/inventory	36s	(shard 3 of 4: 67 tests)
ok  	github.com/novox/mesh-controller/internal/inventory	39s	(shard 4 of 4: 67 tests)
ok  	github.com/novox/mesh-controller/internal/builder	92s	(shard 1 of 4: 52 tests)
ok  	github.com/novox/mesh-controller/internal/builder	37s	(shard 2 of 4: 51 tests)
ok  	github.com/novox/mesh-controller/internal/builder	103s	(shard 3 of 4: 51 tests)
ok  	github.com/novox/mesh-controller/internal/builder	67s	(shard 4 of 4: 51 tests)
ok  	github.com/novox/mesh-controller/internal/link	20s	(shard 1 of 4: 44 tests)
ok  	github.com/novox/mesh-controller/internal/link	24s	(shard 2 of 4: 44 tests)
ok  	github.com/novox/mesh-controller/internal/link	22s	(shard 3 of 4: 44 tests)
ok  	github.com/novox/mesh-controller/internal/link	21s	(shard 4 of 4: 43 tests)
store tests, each run against the store:
  ./cmd/mesh-controller --- PASS: TestAStopWithoutAMergeWalksTheOthersAgain (0.87s)
  ./cmd/mesh-controller --- PASS: TestAStopWithoutAMergeEndsTheMergesThatContainIt (2.63s)
  ./cmd/mesh-controller --- PASS: TestAStopWalksTheOthersAgainInTheOpenBatch (2.71s)
  ./cmd/mesh-controller --- PASS: TestAStopNamesWhatStaysOnTheMachinesAndWhatStillCarriesIt (0.91s)
  ./cmd/mesh-controller --- PASS: TestAStopWithoutAMergeLeavesItOutOfABatch (1.42s)
  ./cmd/mesh-controller --- PASS: TestSavingPlansAndMovingMergesIsOneAct (0.74s)
  ./cmd/mesh-controller --- PASS: TestAPlanFollowedFromTheStoreAnswersWhenItMoves (2.50s)
  ./cmd/mesh-controller --- PASS: TestNodeShowAndStatusReadTheLastSendFromTheStore (0.82s)
  ./cmd/mesh-controller --- PASS: TestTheConditionsVerbReadsTheLooksTheBucketNoLongerHolds (0.59s)
  ./cmd/mesh-controller --- PASS: TestAWalkLetGoAndStoppedByVerbsIsSaidStartedAndEnded (0.62s)
  ./cmd/mesh-controller --- PASS: TestAWalkStoppedOrClosedByAPersonIsSaidEndedStopped (2.20s)
  ./cmd/mesh-controller --- PASS: TestAWalkRetriedByAPersonIsSaidStartedAgain (2.32s)
  ./cmd/mesh-controller --- PASS: TestABacklogReleasedByAPersonIsSaidStarted (1.15s)
  ./cmd/mesh-controller --- PASS: TestAWalkEndedByCancelOrClearIsSaidEnded (1.86s)
  ./cmd/mesh-controller --- PASS: TestAWalkRestartedByARebuildIsSaidStarted (0.74s)
  ./cmd/mesh-controller --- PASS: TestAWalkStoppedByHandAndRetriedEndsFailedWhenItFailsAgain (2.45s)
  ./cmd/mesh-controller --- PASS: TestReplay237 (0.61s)
  ./cmd/mesh-controller --- PASS: TestAnUnassignThatLeavesItsNodeUnresolvedSaysSoOnceInItsAnswer (0.54s)
  ./cmd/mesh-controller --- PASS: TestAnUnassignThatLeavesItsNodeResolvedSaysNothingOfIt (0.88s)
  ./cmd/mesh-controller --- PASS: TestAnAssignThatLeavesItsNodeUnresolvedSaysOnlyThePlansRefusal (0.97s)
  ./cmd/mesh-controller --- PASS: TestADirectoryOwnersKeyIsRefusedThroughAVerb (2.11s)
  ./cmd/mesh-controller --- PASS: TestTheSendMakesNoValueForAnOutsideSecretNobodyGave (1.04s)
  ./cmd/mesh-controller --- PASS: TestAQuestionComposesWithoutAnOutsideSecretNobodyGave (1.81s)
  ./cmd/mesh-controller --- PASS: TestReplay201 (1.16s)
  ./cmd/mesh-controller --- PASS: TestARollbackWhoseSendWasRefusedIsCompletedByTheNextSend (0.53s)
  ./cmd/mesh-controller --- PASS: TestAGateJudgesTheOtherMovesBesideAKeptCore (0.88s)
  ./cmd/mesh-controller --- PASS: TestReplay401 (1.15s)
  ./cmd/mesh-controller --- PASS: TestReplay201ThePlansSend (0.97s)
  ./cmd/mesh-controller --- PASS: TestPlanAndNodeListAnOptionalRequirementLeftUnbound (0.81s)
  ./cmd/mesh-controller --- PASS: TestReplay340 (0.90s)
  ./cmd/mesh-controller --- PASS: TestOnlyATrustedFilesNamedKeyIsRefusedThroughAVerb (1.47s)
  ./cmd/mesh-controller --- PASS: TestReplay349 (0.65s)
  ./cmd/mesh-controller --- PASS: TestReplay348AFaultFromBeforeTheSendFailsNoGate (0.64s)
  ./cmd/mesh-controller --- PASS: TestReplay239AModuleNameIsNotTakenOverByAnotherRepository (0.49s)
  ./cmd/mesh-controller --- PASS: TestAWalkThatMovedNothingSaysWhichModulesMatchedWhatRuns (0.88s)
  ./cmd/mesh-controller --- PASS: TestReplay614ANewSDKPlansTheToolchainAndThenItsBundles (0.23s)
  ./cmd/mesh-controller --- PASS: TestOneAcceptForAProviderIsPlacedForEveryConsumer (1.99s)
  ./cmd/mesh-controller --- PASS: TestReplay164 (1.55s)
  ./cmd/mesh-controller --- PASS: TestAnApprovedLayerOpensTheWalkThatSendsIt (6.07s)
  ./cmd/mesh-controller --- PASS: TestASettingsWalkSendsOneMachineAtATimeEachJudged (2.29s)
  ./cmd/mesh-controller --- PASS: TestAFailedSettingsWalkStopsAndHoldsNothingBack (1.70s)
  ./cmd/mesh-controller --- PASS: TestASettingsWalkSendsTheLayerAloneEveryBuildKept (1.35s)
  ./cmd/mesh-controller --- PASS: TestASettingsWalkStopsBeforeADataMoveAndPassesOverAMachineAway (2.69s)
  ./cmd/mesh-controller --- PASS: TestACrossingSendSupersedesASettingsGate (1.22s)
  ./cmd/mesh-controller --- PASS: TestASettingsWalkFailsOnARefusalThatCannotClear (1.86s)
  ./cmd/mesh-controller --- PASS: TestAProviderElsewhereServesItsOwnComposedName (1.48s)
  ./cmd/mesh-controller --- PASS: TestAReusedCheckBuildIsRegisteredByItsDigestAndGatedAsABuiltOne (2.94s)
  ./cmd/mesh-controller --- PASS: TestAReleaseSendsTheRestAtOnceAfterTheFirstPasses (0.96s)
  ./cmd/mesh-controller --- PASS: TestARestMachineThatFailsIsPutBackAloneAndTheOthersAreJudgedOn (1.11s)
  ./cmd/mesh-controller --- PASS: TestAWalkTakesOverTheReadingsOfAGateJudgingTheSameBuildThere (1.30s)
  ./cmd/mesh-controller --- PASS: TestAFirstSendMadeAndNotKeptIsNotSentAgain (0.87s)
  ./cmd/mesh-controller --- PASS: TestAReleaseSendKeptAndMadeIsNotMadeAgain (1.31s)
  ./cmd/mesh-controller --- PASS: TestAFirstMachineThatFailsStillStopsTheWalk (0.58s)
  ./cmd/mesh-controller --- PASS: TestTheControlNodeIsSentLastInAStep (1.46s)
  ./cmd/mesh-controller --- PASS: TestARestMachineSilentPastItsBoundIsLeftAndSaid (2.25s)
  ./cmd/mesh-controller --- PASS: TestANoMoveTierWaitsForNoNewReport (1.11s)
  ./cmd/mesh-controller --- PASS: TestOneProviderDownAndThreeConsumersFailingAreOneCondition (0.87s)
  ./cmd/mesh-controller --- PASS: TestAConsumerFailingBesideAHealthyProviderIsItsOwn (0.97s)
  ./internal/inventory --- PASS: TestTheLastSendSaysWhatTheMachineAnswered (0.14s)
  ./internal/inventory --- PASS: TestAReportIsTheLastSendsAnswerOnlyWhenItIsAboutThatSend (0.14s)
  ./internal/inventory --- PASS: TestAnIssuedValueIsSealedToEveryHolderOnceAndNotAgain (0.20s)
  ./internal/inventory --- PASS: TestAnIssuedValueIsSealedAgainAfterAKeyChangeOrAnAcceptance (0.14s)
  ./internal/inventory --- PASS: TestAConditionsLooksAreKeptBesideTheBucket (0.11s)
  ./internal/inventory --- PASS: TestAPlanIdHoldingAQuoteIsReadAsAPlainId (0.14s)
  ./internal/inventory --- PASS: TestAWalksStartIsKeptAndARefusedSaveLeavesItUnsaid (0.12s)
  ./internal/inventory --- PASS: TestAWalksRestIsReadFromEachMachinesOwnSend (0.12s)
  ./internal/inventory --- PASS: TestAStoredBuildWithASilentMergeableFileIsStillReadAndComposed (0.12s)
  ./internal/inventory --- PASS: TestACredentialIssuedOutsideIsNeverMade (0.14s)
  ./internal/inventory --- PASS: TestOneAcceptForAProviderIsSealedToEveryConsumer (0.15s)
  ./internal/inventory --- PASS: TestASharedOwnSecretIssuedOutsideIsNeverMade (0.12s)
  ./internal/inventory --- PASS: TestAReportOfABusyContainerIsKeptAndReadBack (0.54s)
the suite failed: each package or shard that failed is said above with its output
--- what failed, picked from the whole of its output (the whole is in the build's log)
--- FAIL: TestNoReaderAnswersEmptyForAnError (2.20s)
    emptyonerror_test.go:23: cmd/mesh-controller/same_program.go:105 (leaveSameAsRunning) answers an empty collection and no error when it could not read: refuse by name (return the error), or say at the return why empty is the truth (// empty-on-error: <why>)
    emptyonerror_test.go:23: cmd/mesh-controller/same_program.go:110 (leaveSameAsRunning) answers an empty collection and no error when it could not read: refuse by name (return the error), or say at the return why empty is the truth (// empty-on-error: <why>)
    emptyonerror_test.go:26: 7 error branch(es) answer empty, each saying why
FAIL	github.com/novox/mesh-controller/internal/lint	2.224s
**Merge check** at `32bd8b5d` Judged: head `32bd8b5d5fb2` merged into trunk `c2ec0a601acb`; read beside it: mesh-catalog `482232e8c51c`, mesh-controller-main `c2ec0a601acb`, mesh-host `1a2677882380`, 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-controller) - `mesh/repo-check`: **FAIL** — its merge-check.sh failed: --- FAIL: TestNoReaderAnswersEmptyForAnError (2.20s) **Delivery plan** — builds build-agent, mesh-controller → ace, g14, novox, shanks; no bus step - tier 0: mesh-controller - tier 1: build-agent - ace: receives build-agent - g14: receives build-agent - novox: receives mesh-controller, 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 - read by no module's build: cmd/mesh-controller/same_program_test.go, internal/builder/same_program_test.go Run by the build seat on novox as `build-1792004879060520962` (`builds --log build-1792004879060520962`). ``` --- the gate: build-agent, 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-14T19:01:09Z 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-14T19:01:09Z 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 2 module(s) in 2 tier(s): build-agent, mesh-controller notes: - cmd/mesh-controller/same_program_test.go and internal/builder/same_program_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.540s ok github.com/novox/mesh-controller/examples/objectstore-provisioner 1.055s ok github.com/novox/mesh-controller/examples/postgres-provisioner 1.071s ok github.com/novox/mesh-controller/examples/redis-provisioner 1.033s ok github.com/novox/mesh-controller/examples/route-proxy 1.180s ok github.com/novox/mesh-controller/internal/artifacts 1.101s ? github.com/novox/mesh-controller/internal/beside [no test files] ok github.com/novox/mesh-controller/internal/broker 9.680s ok github.com/novox/mesh-controller/internal/catalogue 13.030s ok github.com/novox/mesh-controller/internal/conditions 2.916s ok github.com/novox/mesh-controller/internal/envfile 1.049s ok github.com/novox/mesh-controller/internal/facts 1.069s ok github.com/novox/mesh-controller/internal/identity 19.553s ok github.com/novox/mesh-controller/internal/lease 10.200s ok github.com/novox/mesh-controller/internal/licences 15.764s ok github.com/novox/mesh-controller/internal/licences/adapters 1.022s --- FAIL: TestNoReaderAnswersEmptyForAnError (2.20s) emptyonerror_test.go:23: cmd/mesh-controller/same_program.go:105 (leaveSameAsRunning) answers an empty collection and no error when it could not read: refuse by name (return the error), or say at the return why empty is the truth (// empty-on-error: <why>) emptyonerror_test.go:23: cmd/mesh-controller/same_program.go:110 (leaveSameAsRunning) answers an empty collection and no error when it could not read: refuse by name (return the error), or say at the return why empty is the truth (// empty-on-error: <why>) emptyonerror_test.go:26: 7 error branch(es) answer empty, each saying why FAIL FAIL github.com/novox/mesh-controller/internal/lint 2.224s ok github.com/novox/mesh-controller/internal/outward 1.124s ok github.com/novox/mesh-controller/internal/overlay 1.108s ok github.com/novox/mesh-controller/internal/secrets 1.821s ok github.com/novox/mesh-controller/internal/store 7.612s ok github.com/novox/mesh-controller/internal/testbus 1.441s ok github.com/novox/mesh-controller/internal/token 1.062s FAIL ok github.com/novox/mesh-controller/cmd/mesh-controller 96s (shard 1 of 8: 115 tests) ok github.com/novox/mesh-controller/cmd/mesh-controller 101s (shard 2 of 8: 115 tests) ok github.com/novox/mesh-controller/cmd/mesh-controller 108s (shard 3 of 8: 115 tests) ok github.com/novox/mesh-controller/cmd/mesh-controller 91s (shard 4 of 8: 115 tests) ok github.com/novox/mesh-controller/cmd/mesh-controller 85s (shard 5 of 8: 115 tests) ok github.com/novox/mesh-controller/cmd/mesh-controller 94s (shard 6 of 8: 115 tests) ok github.com/novox/mesh-controller/cmd/mesh-controller 102s (shard 7 of 8: 115 tests) ok github.com/novox/mesh-controller/cmd/mesh-controller 99s (shard 8 of 8: 114 tests) ok github.com/novox/mesh-controller/internal/inventory 40s (shard 1 of 4: 68 tests) ok github.com/novox/mesh-controller/internal/inventory 35s (shard 2 of 4: 67 tests) ok github.com/novox/mesh-controller/internal/inventory 36s (shard 3 of 4: 67 tests) ok github.com/novox/mesh-controller/internal/inventory 39s (shard 4 of 4: 67 tests) ok github.com/novox/mesh-controller/internal/builder 92s (shard 1 of 4: 52 tests) ok github.com/novox/mesh-controller/internal/builder 37s (shard 2 of 4: 51 tests) ok github.com/novox/mesh-controller/internal/builder 103s (shard 3 of 4: 51 tests) ok github.com/novox/mesh-controller/internal/builder 67s (shard 4 of 4: 51 tests) ok github.com/novox/mesh-controller/internal/link 20s (shard 1 of 4: 44 tests) ok github.com/novox/mesh-controller/internal/link 24s (shard 2 of 4: 44 tests) ok github.com/novox/mesh-controller/internal/link 22s (shard 3 of 4: 44 tests) ok github.com/novox/mesh-controller/internal/link 21s (shard 4 of 4: 43 tests) store tests, each run against the store: ./cmd/mesh-controller --- PASS: TestAStopWithoutAMergeWalksTheOthersAgain (0.87s) ./cmd/mesh-controller --- PASS: TestAStopWithoutAMergeEndsTheMergesThatContainIt (2.63s) ./cmd/mesh-controller --- PASS: TestAStopWalksTheOthersAgainInTheOpenBatch (2.71s) ./cmd/mesh-controller --- PASS: TestAStopNamesWhatStaysOnTheMachinesAndWhatStillCarriesIt (0.91s) ./cmd/mesh-controller --- PASS: TestAStopWithoutAMergeLeavesItOutOfABatch (1.42s) ./cmd/mesh-controller --- PASS: TestSavingPlansAndMovingMergesIsOneAct (0.74s) ./cmd/mesh-controller --- PASS: TestAPlanFollowedFromTheStoreAnswersWhenItMoves (2.50s) ./cmd/mesh-controller --- PASS: TestNodeShowAndStatusReadTheLastSendFromTheStore (0.82s) ./cmd/mesh-controller --- PASS: TestTheConditionsVerbReadsTheLooksTheBucketNoLongerHolds (0.59s) ./cmd/mesh-controller --- PASS: TestAWalkLetGoAndStoppedByVerbsIsSaidStartedAndEnded (0.62s) ./cmd/mesh-controller --- PASS: TestAWalkStoppedOrClosedByAPersonIsSaidEndedStopped (2.20s) ./cmd/mesh-controller --- PASS: TestAWalkRetriedByAPersonIsSaidStartedAgain (2.32s) ./cmd/mesh-controller --- PASS: TestABacklogReleasedByAPersonIsSaidStarted (1.15s) ./cmd/mesh-controller --- PASS: TestAWalkEndedByCancelOrClearIsSaidEnded (1.86s) ./cmd/mesh-controller --- PASS: TestAWalkRestartedByARebuildIsSaidStarted (0.74s) ./cmd/mesh-controller --- PASS: TestAWalkStoppedByHandAndRetriedEndsFailedWhenItFailsAgain (2.45s) ./cmd/mesh-controller --- PASS: TestReplay237 (0.61s) ./cmd/mesh-controller --- PASS: TestAnUnassignThatLeavesItsNodeUnresolvedSaysSoOnceInItsAnswer (0.54s) ./cmd/mesh-controller --- PASS: TestAnUnassignThatLeavesItsNodeResolvedSaysNothingOfIt (0.88s) ./cmd/mesh-controller --- PASS: TestAnAssignThatLeavesItsNodeUnresolvedSaysOnlyThePlansRefusal (0.97s) ./cmd/mesh-controller --- PASS: TestADirectoryOwnersKeyIsRefusedThroughAVerb (2.11s) ./cmd/mesh-controller --- PASS: TestTheSendMakesNoValueForAnOutsideSecretNobodyGave (1.04s) ./cmd/mesh-controller --- PASS: TestAQuestionComposesWithoutAnOutsideSecretNobodyGave (1.81s) ./cmd/mesh-controller --- PASS: TestReplay201 (1.16s) ./cmd/mesh-controller --- PASS: TestARollbackWhoseSendWasRefusedIsCompletedByTheNextSend (0.53s) ./cmd/mesh-controller --- PASS: TestAGateJudgesTheOtherMovesBesideAKeptCore (0.88s) ./cmd/mesh-controller --- PASS: TestReplay401 (1.15s) ./cmd/mesh-controller --- PASS: TestReplay201ThePlansSend (0.97s) ./cmd/mesh-controller --- PASS: TestPlanAndNodeListAnOptionalRequirementLeftUnbound (0.81s) ./cmd/mesh-controller --- PASS: TestReplay340 (0.90s) ./cmd/mesh-controller --- PASS: TestOnlyATrustedFilesNamedKeyIsRefusedThroughAVerb (1.47s) ./cmd/mesh-controller --- PASS: TestReplay349 (0.65s) ./cmd/mesh-controller --- PASS: TestReplay348AFaultFromBeforeTheSendFailsNoGate (0.64s) ./cmd/mesh-controller --- PASS: TestReplay239AModuleNameIsNotTakenOverByAnotherRepository (0.49s) ./cmd/mesh-controller --- PASS: TestAWalkThatMovedNothingSaysWhichModulesMatchedWhatRuns (0.88s) ./cmd/mesh-controller --- PASS: TestReplay614ANewSDKPlansTheToolchainAndThenItsBundles (0.23s) ./cmd/mesh-controller --- PASS: TestOneAcceptForAProviderIsPlacedForEveryConsumer (1.99s) ./cmd/mesh-controller --- PASS: TestReplay164 (1.55s) ./cmd/mesh-controller --- PASS: TestAnApprovedLayerOpensTheWalkThatSendsIt (6.07s) ./cmd/mesh-controller --- PASS: TestASettingsWalkSendsOneMachineAtATimeEachJudged (2.29s) ./cmd/mesh-controller --- PASS: TestAFailedSettingsWalkStopsAndHoldsNothingBack (1.70s) ./cmd/mesh-controller --- PASS: TestASettingsWalkSendsTheLayerAloneEveryBuildKept (1.35s) ./cmd/mesh-controller --- PASS: TestASettingsWalkStopsBeforeADataMoveAndPassesOverAMachineAway (2.69s) ./cmd/mesh-controller --- PASS: TestACrossingSendSupersedesASettingsGate (1.22s) ./cmd/mesh-controller --- PASS: TestASettingsWalkFailsOnARefusalThatCannotClear (1.86s) ./cmd/mesh-controller --- PASS: TestAProviderElsewhereServesItsOwnComposedName (1.48s) ./cmd/mesh-controller --- PASS: TestAReusedCheckBuildIsRegisteredByItsDigestAndGatedAsABuiltOne (2.94s) ./cmd/mesh-controller --- PASS: TestAReleaseSendsTheRestAtOnceAfterTheFirstPasses (0.96s) ./cmd/mesh-controller --- PASS: TestARestMachineThatFailsIsPutBackAloneAndTheOthersAreJudgedOn (1.11s) ./cmd/mesh-controller --- PASS: TestAWalkTakesOverTheReadingsOfAGateJudgingTheSameBuildThere (1.30s) ./cmd/mesh-controller --- PASS: TestAFirstSendMadeAndNotKeptIsNotSentAgain (0.87s) ./cmd/mesh-controller --- PASS: TestAReleaseSendKeptAndMadeIsNotMadeAgain (1.31s) ./cmd/mesh-controller --- PASS: TestAFirstMachineThatFailsStillStopsTheWalk (0.58s) ./cmd/mesh-controller --- PASS: TestTheControlNodeIsSentLastInAStep (1.46s) ./cmd/mesh-controller --- PASS: TestARestMachineSilentPastItsBoundIsLeftAndSaid (2.25s) ./cmd/mesh-controller --- PASS: TestANoMoveTierWaitsForNoNewReport (1.11s) ./cmd/mesh-controller --- PASS: TestOneProviderDownAndThreeConsumersFailingAreOneCondition (0.87s) ./cmd/mesh-controller --- PASS: TestAConsumerFailingBesideAHealthyProviderIsItsOwn (0.97s) ./internal/inventory --- PASS: TestTheLastSendSaysWhatTheMachineAnswered (0.14s) ./internal/inventory --- PASS: TestAReportIsTheLastSendsAnswerOnlyWhenItIsAboutThatSend (0.14s) ./internal/inventory --- PASS: TestAnIssuedValueIsSealedToEveryHolderOnceAndNotAgain (0.20s) ./internal/inventory --- PASS: TestAnIssuedValueIsSealedAgainAfterAKeyChangeOrAnAcceptance (0.14s) ./internal/inventory --- PASS: TestAConditionsLooksAreKeptBesideTheBucket (0.11s) ./internal/inventory --- PASS: TestAPlanIdHoldingAQuoteIsReadAsAPlainId (0.14s) ./internal/inventory --- PASS: TestAWalksStartIsKeptAndARefusedSaveLeavesItUnsaid (0.12s) ./internal/inventory --- PASS: TestAWalksRestIsReadFromEachMachinesOwnSend (0.12s) ./internal/inventory --- PASS: TestAStoredBuildWithASilentMergeableFileIsStillReadAndComposed (0.12s) ./internal/inventory --- PASS: TestACredentialIssuedOutsideIsNeverMade (0.14s) ./internal/inventory --- PASS: TestOneAcceptForAProviderIsSealedToEveryConsumer (0.15s) ./internal/inventory --- PASS: TestASharedOwnSecretIssuedOutsideIsNeverMade (0.12s) ./internal/inventory --- PASS: TestAReportOfABusyContainerIsKeptAndReadBack (0.54s) the suite failed: each package or shard that failed is said above with its output --- what failed, picked from the whole of its output (the whole is in the build's log) --- FAIL: TestNoReaderAnswersEmptyForAnError (2.20s) emptyonerror_test.go:23: cmd/mesh-controller/same_program.go:105 (leaveSameAsRunning) answers an empty collection and no error when it could not read: refuse by name (return the error), or say at the return why empty is the truth (// empty-on-error: <why>) emptyonerror_test.go:23: cmd/mesh-controller/same_program.go:110 (leaveSameAsRunning) answers an empty collection and no error when it could not read: refuse by name (return the error), or say at the return why empty is the truth (// empty-on-error: <why>) emptyonerror_test.go:26: 7 error branch(es) answer empty, each saying why FAIL github.com/novox/mesh-controller/internal/lint 2.224s ```
jschoubben added 1 commit 2026-10-14 19:15:29 +00:00
Say why the walk moves every module when the checks' builds cannot be read (lint, hq issue 721)
mesh/delivery-group group fix/a-module-moves-only-when-its-program-changes checking: 1 of 2 member(s) ready
mesh/merge-gate head e6a28a2d2814 merged into trunk c2ec0a601acb — pass: builds build-agent, mesh-controller → ace, g14, novox, shanks; no bus step; every …
mesh/repo-check head e6a28a2d2814 merged into trunk c2ec0a601acb — pass: its merge-check.sh passed
mesh/delivery superseded: a newer head of the same pull request
e6a28a2d28
Author
Contributor

Merge check at e6a28a2d
Judged: head e6a28a2d2814 merged into trunk c2ec0a601acb; read beside it: mesh-catalog 482232e8c51c, mesh-controller-main c2ec0a601acb, mesh-host 1a2677882380, 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-controller)
  • mesh/repo-check: PASS — its merge-check.sh passed

Delivery plan — builds build-agent, mesh-controller → ace, g14, novox, shanks; no bus step

  • tier 0: mesh-controller
  • tier 1: build-agent
  • ace: receives build-agent
  • g14: receives build-agent
  • novox: receives mesh-controller, 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
  • read by no module's build: cmd/mesh-controller/same_program_test.go, internal/builder/same_program_test.go

Run by the build seat on ace as build-1792005340069273947 (builds --log build-1792005340069273947).

--- the gate: build-agent, 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-14T19:10:09Z 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-14T19:10:09Z

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 2 module(s) in 2 tier(s): build-agent, mesh-controller

notes:
  - cmd/mesh-controller/same_program_test.go and internal/builder/same_program_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.119s
ok  	github.com/novox/mesh-controller/examples/objectstore-provisioner	1.023s
ok  	github.com/novox/mesh-controller/examples/postgres-provisioner	1.029s
ok  	github.com/novox/mesh-controller/examples/redis-provisioner	1.025s
ok  	github.com/novox/mesh-controller/examples/route-proxy	1.121s
ok  	github.com/novox/mesh-controller/internal/artifacts	1.061s
?   	github.com/novox/mesh-controller/internal/beside	[no test files]
ok  	github.com/novox/mesh-controller/internal/broker	5.044s
ok  	github.com/novox/mesh-controller/internal/catalogue	12.691s
ok  	github.com/novox/mesh-controller/internal/conditions	2.812s
ok  	github.com/novox/mesh-controller/internal/envfile	1.042s
ok  	github.com/novox/mesh-controller/internal/facts	1.040s
ok  	github.com/novox/mesh-controller/internal/identity	6.394s
ok  	github.com/novox/mesh-controller/internal/lease	10.195s
ok  	github.com/novox/mesh-controller/internal/licences	4.896s
ok  	github.com/novox/mesh-controller/internal/licences/adapters	1.033s
ok  	github.com/novox/mesh-controller/internal/lint	2.829s
ok  	github.com/novox/mesh-controller/internal/outward	1.075s
ok  	github.com/novox/mesh-controller/internal/overlay	1.055s
ok  	github.com/novox/mesh-controller/internal/secrets	1.513s
ok  	github.com/novox/mesh-controller/internal/store	3.556s
ok  	github.com/novox/mesh-controller/internal/testbus	1.302s
ok  	github.com/novox/mesh-controller/internal/token	1.078s
ok  	github.com/novox/mesh-controller/cmd/mesh-controller	25s	(shard 1 of 8: 115 tests)
ok  	github.com/novox/mesh-controller/cmd/mesh-controller	29s	(shard 2 of 8: 115 tests)
ok  	github.com/novox/mesh-controller/cmd/mesh-controller	31s	(shard 3 of 8: 115 tests)
ok  	github.com/novox/mesh-controller/cmd/mesh-controller	27s	(shard 4 of 8: 115 tests)
ok  	github.com/novox/mesh-controller/cmd/mesh-controller	23s	(shard 5 of 8: 115 tests)
ok  	github.com/novox/mesh-controller/cmd/mesh-controller	25s	(shard 6 of 8: 115 tests)
ok  	github.com/novox/mesh-controller/cmd/mesh-controller	30s	(shard 7 of 8: 115 tests)
ok  	github.com/novox/mesh-controller/cmd/mesh-controller	28s	(shard 8 of 8: 114 tests)
ok  	github.com/novox/mesh-controller/internal/inventory	14s	(shard 1 of 4: 68 tests)
ok  	github.com/novox/mesh-controller/internal/inventory	12s	(shard 2 of 4: 67 tests)
ok  	github.com/novox/mesh-controller/internal/inventory	12s	(shard 3 of 4: 67 tests)
ok  	github.com/novox/mesh-controller/internal/inventory	13s	(shard 4 of 4: 67 tests)
ok  	github.com/novox/mesh-controller/internal/builder	32s	(shard 1 of 4: 52 tests)
ok  	github.com/novox/mesh-controller/internal/builder	13s	(shard 2 of 4: 51 tests)
ok  	github.com/novox/mesh-controller/internal/builder	26s	(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	15s	(shard 2 of 4: 44 tests)
ok  	github.com/novox/mesh-controller/internal/link	16s	(shard 3 of 4: 44 tests)
ok  	github.com/novox/mesh-controller/internal/link	16s	(shard 4 of 4: 43 tests)
store tests, each run against the store:
  ./cmd/mesh-controller --- PASS: TestAStopWithoutAMergeWalksTheOthersAgain (0.58s)
  ./cmd/mesh-controller --- PASS: TestAStopWithoutAMergeEndsTheMergesThatContainIt (0.48s)
  ./cmd/mesh-controller --- PASS: TestAStopWalksTheOthersAgainInTheOpenBatch (0.56s)
  ./cmd/mesh-controller --- PASS: TestAStopNamesWhatStaysOnTheMachinesAndWhatStillCarriesIt (0.46s)
  ./cmd/mesh-controller --- PASS: TestAStopWithoutAMergeLeavesItOutOfABatch (0.40s)
  ./cmd/mesh-controller --- PASS: TestSavingPlansAndMovingMergesIsOneAct (0.37s)
  ./cmd/mesh-controller --- PASS: TestAPlanFollowedFromTheStoreAnswersWhenItMoves (2.07s)
  ./cmd/mesh-controller --- PASS: TestNodeShowAndStatusReadTheLastSendFromTheStore (0.53s)
  ./cmd/mesh-controller --- PASS: TestTheConditionsVerbReadsTheLooksTheBucketNoLongerHolds (0.19s)
  ./cmd/mesh-controller --- PASS: TestAWalkLetGoAndStoppedByVerbsIsSaidStartedAndEnded (0.35s)
  ./cmd/mesh-controller --- PASS: TestAWalkStoppedOrClosedByAPersonIsSaidEndedStopped (0.35s)
  ./cmd/mesh-controller --- PASS: TestAWalkRetriedByAPersonIsSaidStartedAgain (0.25s)
  ./cmd/mesh-controller --- PASS: TestABacklogReleasedByAPersonIsSaidStarted (0.25s)
  ./cmd/mesh-controller --- PASS: TestAWalkEndedByCancelOrClearIsSaidEnded (0.32s)
  ./cmd/mesh-controller --- PASS: TestAWalkRestartedByARebuildIsSaidStarted (0.28s)
  ./cmd/mesh-controller --- PASS: TestAWalkStoppedByHandAndRetriedEndsFailedWhenItFailsAgain (0.32s)
  ./cmd/mesh-controller --- PASS: TestReplay237 (0.21s)
  ./cmd/mesh-controller --- PASS: TestAnUnassignThatLeavesItsNodeUnresolvedSaysSoOnceInItsAnswer (0.47s)
  ./cmd/mesh-controller --- PASS: TestAnUnassignThatLeavesItsNodeResolvedSaysNothingOfIt (0.50s)
  ./cmd/mesh-controller --- PASS: TestAnAssignThatLeavesItsNodeUnresolvedSaysOnlyThePlansRefusal (0.40s)
  ./cmd/mesh-controller --- PASS: TestADirectoryOwnersKeyIsRefusedThroughAVerb (0.32s)
  ./cmd/mesh-controller --- PASS: TestTheSendMakesNoValueForAnOutsideSecretNobodyGave (0.40s)
  ./cmd/mesh-controller --- PASS: TestAQuestionComposesWithoutAnOutsideSecretNobodyGave (0.42s)
  ./cmd/mesh-controller --- PASS: TestReplay201 (0.25s)
  ./cmd/mesh-controller --- PASS: TestARollbackWhoseSendWasRefusedIsCompletedByTheNextSend (0.23s)
  ./cmd/mesh-controller --- PASS: TestAGateJudgesTheOtherMovesBesideAKeptCore (0.25s)
  ./cmd/mesh-controller --- PASS: TestReplay401 (0.27s)
  ./cmd/mesh-controller --- PASS: TestReplay201ThePlansSend (0.26s)
  ./cmd/mesh-controller --- PASS: TestPlanAndNodeListAnOptionalRequirementLeftUnbound (0.36s)
  ./cmd/mesh-controller --- PASS: TestReplay340 (0.25s)
  ./cmd/mesh-controller --- PASS: TestOnlyATrustedFilesNamedKeyIsRefusedThroughAVerb (0.29s)
  ./cmd/mesh-controller --- PASS: TestReplay349 (0.19s)
  ./cmd/mesh-controller --- PASS: TestReplay348AFaultFromBeforeTheSendFailsNoGate (0.21s)
  ./cmd/mesh-controller --- PASS: TestReplay239AModuleNameIsNotTakenOverByAnotherRepository (0.16s)
  ./cmd/mesh-controller --- PASS: TestAWalkThatMovedNothingSaysWhichModulesMatchedWhatRuns (0.40s)
  ./cmd/mesh-controller --- PASS: TestReplay614ANewSDKPlansTheToolchainAndThenItsBundles (0.08s)
  ./cmd/mesh-controller --- PASS: TestOneAcceptForAProviderIsPlacedForEveryConsumer (0.75s)
  ./cmd/mesh-controller --- PASS: TestReplay164 (0.42s)
  ./cmd/mesh-controller --- PASS: TestAnApprovedLayerOpensTheWalkThatSendsIt (0.21s)
  ./cmd/mesh-controller --- PASS: TestASettingsWalkSendsOneMachineAtATimeEachJudged (0.23s)
  ./cmd/mesh-controller --- PASS: TestAFailedSettingsWalkStopsAndHoldsNothingBack (0.23s)
  ./cmd/mesh-controller --- PASS: TestASettingsWalkSendsTheLayerAloneEveryBuildKept (0.19s)
  ./cmd/mesh-controller --- PASS: TestASettingsWalkStopsBeforeADataMoveAndPassesOverAMachineAway (1.02s)
  ./cmd/mesh-controller --- PASS: TestACrossingSendSupersedesASettingsGate (0.35s)
  ./cmd/mesh-controller --- PASS: TestASettingsWalkFailsOnARefusalThatCannotClear (0.25s)
  ./cmd/mesh-controller --- PASS: TestAProviderElsewhereServesItsOwnComposedName (0.41s)
  ./cmd/mesh-controller --- PASS: TestAReusedCheckBuildIsRegisteredByItsDigestAndGatedAsABuiltOne (0.61s)
  ./cmd/mesh-controller --- PASS: TestAReleaseSendsTheRestAtOnceAfterTheFirstPasses (0.23s)
  ./cmd/mesh-controller --- PASS: TestARestMachineThatFailsIsPutBackAloneAndTheOthersAreJudgedOn (0.24s)
  ./cmd/mesh-controller --- PASS: TestAWalkTakesOverTheReadingsOfAGateJudgingTheSameBuildThere (0.25s)
  ./cmd/mesh-controller --- PASS: TestAFirstSendMadeAndNotKeptIsNotSentAgain (0.27s)
  ./cmd/mesh-controller --- PASS: TestAReleaseSendKeptAndMadeIsNotMadeAgain (0.21s)
  ./cmd/mesh-controller --- PASS: TestAFirstMachineThatFailsStillStopsTheWalk (0.21s)
  ./cmd/mesh-controller --- PASS: TestTheControlNodeIsSentLastInAStep (0.23s)
  ./cmd/mesh-controller --- PASS: TestARestMachineSilentPastItsBoundIsLeftAndSaid (0.22s)
  ./cmd/mesh-controller --- PASS: TestANoMoveTierWaitsForNoNewReport (0.52s)
  ./cmd/mesh-controller --- PASS: TestOneProviderDownAndThreeConsumersFailingAreOneCondition (0.19s)
  ./cmd/mesh-controller --- PASS: TestAConsumerFailingBesideAHealthyProviderIsItsOwn (0.21s)
  ./internal/inventory --- PASS: TestTheLastSendSaysWhatTheMachineAnswered (0.08s)
  ./internal/inventory --- PASS: TestAReportIsTheLastSendsAnswerOnlyWhenItIsAboutThatSend (0.09s)
  ./internal/inventory --- PASS: TestAnIssuedValueIsSealedToEveryHolderOnceAndNotAgain (0.09s)
  ./internal/inventory --- PASS: TestAnIssuedValueIsSealedAgainAfterAKeyChangeOrAnAcceptance (0.08s)
  ./internal/inventory --- PASS: TestAConditionsLooksAreKeptBesideTheBucket (0.07s)
  ./internal/inventory --- PASS: TestAPlanIdHoldingAQuoteIsReadAsAPlainId (0.09s)
  ./internal/inventory --- PASS: TestAWalksStartIsKeptAndARefusedSaveLeavesItUnsaid (0.07s)
  ./internal/inventory --- PASS: TestAWalksRestIsReadFromEachMachinesOwnSend (0.07s)
  ./internal/inventory --- PASS: TestAStoredBuildWithASilentMergeableFileIsStillReadAndComposed (0.07s)
  ./internal/inventory --- PASS: TestACredentialIssuedOutsideIsNeverMade (0.09s)
  ./internal/inventory --- PASS: TestOneAcceptForAProviderIsSealedToEveryConsumer (0.10s)
  ./internal/inventory --- PASS: TestASharedOwnSecretIssuedOutsideIsNeverMade (0.11s)
  ./internal/inventory --- PASS: TestAReportOfABusyContainerIsKeptAndReadBack (0.64s)
**Merge check** at `e6a28a2d` Judged: head `e6a28a2d2814` merged into trunk `c2ec0a601acb`; read beside it: mesh-catalog `482232e8c51c`, mesh-controller-main `c2ec0a601acb`, mesh-host `1a2677882380`, 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-controller) - `mesh/repo-check`: **PASS** — its merge-check.sh passed **Delivery plan** — builds build-agent, mesh-controller → ace, g14, novox, shanks; no bus step - tier 0: mesh-controller - tier 1: build-agent - ace: receives build-agent - g14: receives build-agent - novox: receives mesh-controller, 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 - read by no module's build: cmd/mesh-controller/same_program_test.go, internal/builder/same_program_test.go Run by the build seat on ace as `build-1792005340069273947` (`builds --log build-1792005340069273947`). ``` --- the gate: build-agent, 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-14T19:10:09Z 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-14T19:10:09Z 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 2 module(s) in 2 tier(s): build-agent, mesh-controller notes: - cmd/mesh-controller/same_program_test.go and internal/builder/same_program_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.119s ok github.com/novox/mesh-controller/examples/objectstore-provisioner 1.023s ok github.com/novox/mesh-controller/examples/postgres-provisioner 1.029s ok github.com/novox/mesh-controller/examples/redis-provisioner 1.025s ok github.com/novox/mesh-controller/examples/route-proxy 1.121s ok github.com/novox/mesh-controller/internal/artifacts 1.061s ? github.com/novox/mesh-controller/internal/beside [no test files] ok github.com/novox/mesh-controller/internal/broker 5.044s ok github.com/novox/mesh-controller/internal/catalogue 12.691s ok github.com/novox/mesh-controller/internal/conditions 2.812s ok github.com/novox/mesh-controller/internal/envfile 1.042s ok github.com/novox/mesh-controller/internal/facts 1.040s ok github.com/novox/mesh-controller/internal/identity 6.394s ok github.com/novox/mesh-controller/internal/lease 10.195s ok github.com/novox/mesh-controller/internal/licences 4.896s ok github.com/novox/mesh-controller/internal/licences/adapters 1.033s ok github.com/novox/mesh-controller/internal/lint 2.829s ok github.com/novox/mesh-controller/internal/outward 1.075s ok github.com/novox/mesh-controller/internal/overlay 1.055s ok github.com/novox/mesh-controller/internal/secrets 1.513s ok github.com/novox/mesh-controller/internal/store 3.556s ok github.com/novox/mesh-controller/internal/testbus 1.302s ok github.com/novox/mesh-controller/internal/token 1.078s ok github.com/novox/mesh-controller/cmd/mesh-controller 25s (shard 1 of 8: 115 tests) ok github.com/novox/mesh-controller/cmd/mesh-controller 29s (shard 2 of 8: 115 tests) ok github.com/novox/mesh-controller/cmd/mesh-controller 31s (shard 3 of 8: 115 tests) ok github.com/novox/mesh-controller/cmd/mesh-controller 27s (shard 4 of 8: 115 tests) ok github.com/novox/mesh-controller/cmd/mesh-controller 23s (shard 5 of 8: 115 tests) ok github.com/novox/mesh-controller/cmd/mesh-controller 25s (shard 6 of 8: 115 tests) ok github.com/novox/mesh-controller/cmd/mesh-controller 30s (shard 7 of 8: 115 tests) ok github.com/novox/mesh-controller/cmd/mesh-controller 28s (shard 8 of 8: 114 tests) ok github.com/novox/mesh-controller/internal/inventory 14s (shard 1 of 4: 68 tests) ok github.com/novox/mesh-controller/internal/inventory 12s (shard 2 of 4: 67 tests) ok github.com/novox/mesh-controller/internal/inventory 12s (shard 3 of 4: 67 tests) ok github.com/novox/mesh-controller/internal/inventory 13s (shard 4 of 4: 67 tests) ok github.com/novox/mesh-controller/internal/builder 32s (shard 1 of 4: 52 tests) ok github.com/novox/mesh-controller/internal/builder 13s (shard 2 of 4: 51 tests) ok github.com/novox/mesh-controller/internal/builder 26s (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 15s (shard 2 of 4: 44 tests) ok github.com/novox/mesh-controller/internal/link 16s (shard 3 of 4: 44 tests) ok github.com/novox/mesh-controller/internal/link 16s (shard 4 of 4: 43 tests) store tests, each run against the store: ./cmd/mesh-controller --- PASS: TestAStopWithoutAMergeWalksTheOthersAgain (0.58s) ./cmd/mesh-controller --- PASS: TestAStopWithoutAMergeEndsTheMergesThatContainIt (0.48s) ./cmd/mesh-controller --- PASS: TestAStopWalksTheOthersAgainInTheOpenBatch (0.56s) ./cmd/mesh-controller --- PASS: TestAStopNamesWhatStaysOnTheMachinesAndWhatStillCarriesIt (0.46s) ./cmd/mesh-controller --- PASS: TestAStopWithoutAMergeLeavesItOutOfABatch (0.40s) ./cmd/mesh-controller --- PASS: TestSavingPlansAndMovingMergesIsOneAct (0.37s) ./cmd/mesh-controller --- PASS: TestAPlanFollowedFromTheStoreAnswersWhenItMoves (2.07s) ./cmd/mesh-controller --- PASS: TestNodeShowAndStatusReadTheLastSendFromTheStore (0.53s) ./cmd/mesh-controller --- PASS: TestTheConditionsVerbReadsTheLooksTheBucketNoLongerHolds (0.19s) ./cmd/mesh-controller --- PASS: TestAWalkLetGoAndStoppedByVerbsIsSaidStartedAndEnded (0.35s) ./cmd/mesh-controller --- PASS: TestAWalkStoppedOrClosedByAPersonIsSaidEndedStopped (0.35s) ./cmd/mesh-controller --- PASS: TestAWalkRetriedByAPersonIsSaidStartedAgain (0.25s) ./cmd/mesh-controller --- PASS: TestABacklogReleasedByAPersonIsSaidStarted (0.25s) ./cmd/mesh-controller --- PASS: TestAWalkEndedByCancelOrClearIsSaidEnded (0.32s) ./cmd/mesh-controller --- PASS: TestAWalkRestartedByARebuildIsSaidStarted (0.28s) ./cmd/mesh-controller --- PASS: TestAWalkStoppedByHandAndRetriedEndsFailedWhenItFailsAgain (0.32s) ./cmd/mesh-controller --- PASS: TestReplay237 (0.21s) ./cmd/mesh-controller --- PASS: TestAnUnassignThatLeavesItsNodeUnresolvedSaysSoOnceInItsAnswer (0.47s) ./cmd/mesh-controller --- PASS: TestAnUnassignThatLeavesItsNodeResolvedSaysNothingOfIt (0.50s) ./cmd/mesh-controller --- PASS: TestAnAssignThatLeavesItsNodeUnresolvedSaysOnlyThePlansRefusal (0.40s) ./cmd/mesh-controller --- PASS: TestADirectoryOwnersKeyIsRefusedThroughAVerb (0.32s) ./cmd/mesh-controller --- PASS: TestTheSendMakesNoValueForAnOutsideSecretNobodyGave (0.40s) ./cmd/mesh-controller --- PASS: TestAQuestionComposesWithoutAnOutsideSecretNobodyGave (0.42s) ./cmd/mesh-controller --- PASS: TestReplay201 (0.25s) ./cmd/mesh-controller --- PASS: TestARollbackWhoseSendWasRefusedIsCompletedByTheNextSend (0.23s) ./cmd/mesh-controller --- PASS: TestAGateJudgesTheOtherMovesBesideAKeptCore (0.25s) ./cmd/mesh-controller --- PASS: TestReplay401 (0.27s) ./cmd/mesh-controller --- PASS: TestReplay201ThePlansSend (0.26s) ./cmd/mesh-controller --- PASS: TestPlanAndNodeListAnOptionalRequirementLeftUnbound (0.36s) ./cmd/mesh-controller --- PASS: TestReplay340 (0.25s) ./cmd/mesh-controller --- PASS: TestOnlyATrustedFilesNamedKeyIsRefusedThroughAVerb (0.29s) ./cmd/mesh-controller --- PASS: TestReplay349 (0.19s) ./cmd/mesh-controller --- PASS: TestReplay348AFaultFromBeforeTheSendFailsNoGate (0.21s) ./cmd/mesh-controller --- PASS: TestReplay239AModuleNameIsNotTakenOverByAnotherRepository (0.16s) ./cmd/mesh-controller --- PASS: TestAWalkThatMovedNothingSaysWhichModulesMatchedWhatRuns (0.40s) ./cmd/mesh-controller --- PASS: TestReplay614ANewSDKPlansTheToolchainAndThenItsBundles (0.08s) ./cmd/mesh-controller --- PASS: TestOneAcceptForAProviderIsPlacedForEveryConsumer (0.75s) ./cmd/mesh-controller --- PASS: TestReplay164 (0.42s) ./cmd/mesh-controller --- PASS: TestAnApprovedLayerOpensTheWalkThatSendsIt (0.21s) ./cmd/mesh-controller --- PASS: TestASettingsWalkSendsOneMachineAtATimeEachJudged (0.23s) ./cmd/mesh-controller --- PASS: TestAFailedSettingsWalkStopsAndHoldsNothingBack (0.23s) ./cmd/mesh-controller --- PASS: TestASettingsWalkSendsTheLayerAloneEveryBuildKept (0.19s) ./cmd/mesh-controller --- PASS: TestASettingsWalkStopsBeforeADataMoveAndPassesOverAMachineAway (1.02s) ./cmd/mesh-controller --- PASS: TestACrossingSendSupersedesASettingsGate (0.35s) ./cmd/mesh-controller --- PASS: TestASettingsWalkFailsOnARefusalThatCannotClear (0.25s) ./cmd/mesh-controller --- PASS: TestAProviderElsewhereServesItsOwnComposedName (0.41s) ./cmd/mesh-controller --- PASS: TestAReusedCheckBuildIsRegisteredByItsDigestAndGatedAsABuiltOne (0.61s) ./cmd/mesh-controller --- PASS: TestAReleaseSendsTheRestAtOnceAfterTheFirstPasses (0.23s) ./cmd/mesh-controller --- PASS: TestARestMachineThatFailsIsPutBackAloneAndTheOthersAreJudgedOn (0.24s) ./cmd/mesh-controller --- PASS: TestAWalkTakesOverTheReadingsOfAGateJudgingTheSameBuildThere (0.25s) ./cmd/mesh-controller --- PASS: TestAFirstSendMadeAndNotKeptIsNotSentAgain (0.27s) ./cmd/mesh-controller --- PASS: TestAReleaseSendKeptAndMadeIsNotMadeAgain (0.21s) ./cmd/mesh-controller --- PASS: TestAFirstMachineThatFailsStillStopsTheWalk (0.21s) ./cmd/mesh-controller --- PASS: TestTheControlNodeIsSentLastInAStep (0.23s) ./cmd/mesh-controller --- PASS: TestARestMachineSilentPastItsBoundIsLeftAndSaid (0.22s) ./cmd/mesh-controller --- PASS: TestANoMoveTierWaitsForNoNewReport (0.52s) ./cmd/mesh-controller --- PASS: TestOneProviderDownAndThreeConsumersFailingAreOneCondition (0.19s) ./cmd/mesh-controller --- PASS: TestAConsumerFailingBesideAHealthyProviderIsItsOwn (0.21s) ./internal/inventory --- PASS: TestTheLastSendSaysWhatTheMachineAnswered (0.08s) ./internal/inventory --- PASS: TestAReportIsTheLastSendsAnswerOnlyWhenItIsAboutThatSend (0.09s) ./internal/inventory --- PASS: TestAnIssuedValueIsSealedToEveryHolderOnceAndNotAgain (0.09s) ./internal/inventory --- PASS: TestAnIssuedValueIsSealedAgainAfterAKeyChangeOrAnAcceptance (0.08s) ./internal/inventory --- PASS: TestAConditionsLooksAreKeptBesideTheBucket (0.07s) ./internal/inventory --- PASS: TestAPlanIdHoldingAQuoteIsReadAsAPlainId (0.09s) ./internal/inventory --- PASS: TestAWalksStartIsKeptAndARefusedSaveLeavesItUnsaid (0.07s) ./internal/inventory --- PASS: TestAWalksRestIsReadFromEachMachinesOwnSend (0.07s) ./internal/inventory --- PASS: TestAStoredBuildWithASilentMergeableFileIsStillReadAndComposed (0.07s) ./internal/inventory --- PASS: TestACredentialIssuedOutsideIsNeverMade (0.09s) ./internal/inventory --- PASS: TestOneAcceptForAProviderIsSealedToEveryConsumer (0.10s) ./internal/inventory --- PASS: TestASharedOwnSecretIssuedOutsideIsNeverMade (0.11s) ./internal/inventory --- PASS: TestAReportOfABusyContainerIsKeptAndReadBack (0.64s) ```
jschoubben added 1 commit 2026-10-14 19:19:18 +00:00
Leave out a dependent of a base that came out the same, and end a walk with every build the same as done (ADR 0267 rule 3; hq issues 607, 611, 721)
mesh/merge-gate head 4390589c61a4 merged into trunk c2ec0a601acb — pass: builds build-agent, mesh-controller → ace, g14, novox, shanks; no bus step; every …
mesh/repo-check head 4390589c61a4 merged into trunk c2ec0a601acb — pass: its merge-check.sh passed
mesh/delivery superseded: a newer head of the same pull request
4390589c61
Author
Contributor

Merge check at 4390589c
Judged: head 4390589c61a4 merged into trunk c2ec0a601acb; read beside it: mesh-catalog 482232e8c51c, mesh-controller-main c2ec0a601acb, mesh-host 1a2677882380, 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-controller)
  • mesh/repo-check: PASS — its merge-check.sh passed

Delivery plan — builds build-agent, mesh-controller → ace, g14, novox, shanks; no bus step

  • tier 0: mesh-controller
  • tier 1: build-agent
  • ace: receives build-agent
  • g14: receives build-agent
  • novox: receives mesh-controller, 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
  • read by no module's build: cmd/mesh-controller/same_program_test.go, internal/builder/same_program_test.go

Run by the build seat on ace as build-1792005569383627685 (builds --log build-1792005569383627685).

--- the gate: build-agent, 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-14T19:10:09Z 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-14T19:10:09Z

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 2 module(s) in 2 tier(s): build-agent, mesh-controller

notes:
  - cmd/mesh-controller/same_program_test.go and internal/builder/same_program_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.098s
ok  	github.com/novox/mesh-controller/examples/objectstore-provisioner	1.016s
ok  	github.com/novox/mesh-controller/examples/postgres-provisioner	1.024s
ok  	github.com/novox/mesh-controller/examples/redis-provisioner	1.017s
ok  	github.com/novox/mesh-controller/examples/route-proxy	1.103s
ok  	github.com/novox/mesh-controller/internal/artifacts	1.049s
?   	github.com/novox/mesh-controller/internal/beside	[no test files]
ok  	github.com/novox/mesh-controller/internal/broker	4.955s
ok  	github.com/novox/mesh-controller/internal/catalogue	13.455s
ok  	github.com/novox/mesh-controller/internal/conditions	2.649s
ok  	github.com/novox/mesh-controller/internal/envfile	1.039s
ok  	github.com/novox/mesh-controller/internal/facts	1.043s
ok  	github.com/novox/mesh-controller/internal/identity	6.491s
ok  	github.com/novox/mesh-controller/internal/lease	10.216s
ok  	github.com/novox/mesh-controller/internal/licences	4.551s
ok  	github.com/novox/mesh-controller/internal/licences/adapters	1.041s
ok  	github.com/novox/mesh-controller/internal/lint	2.444s
ok  	github.com/novox/mesh-controller/internal/outward	1.063s
ok  	github.com/novox/mesh-controller/internal/overlay	1.047s
ok  	github.com/novox/mesh-controller/internal/secrets	1.474s
ok  	github.com/novox/mesh-controller/internal/store	3.410s
ok  	github.com/novox/mesh-controller/internal/testbus	1.239s
ok  	github.com/novox/mesh-controller/internal/token	1.041s
ok  	github.com/novox/mesh-controller/cmd/mesh-controller	27s	(shard 1 of 8: 116 tests)
ok  	github.com/novox/mesh-controller/cmd/mesh-controller	29s	(shard 2 of 8: 115 tests)
ok  	github.com/novox/mesh-controller/cmd/mesh-controller	34s	(shard 3 of 8: 115 tests)
ok  	github.com/novox/mesh-controller/cmd/mesh-controller	30s	(shard 4 of 8: 115 tests)
ok  	github.com/novox/mesh-controller/cmd/mesh-controller	24s	(shard 5 of 8: 115 tests)
ok  	github.com/novox/mesh-controller/cmd/mesh-controller	25s	(shard 6 of 8: 115 tests)
ok  	github.com/novox/mesh-controller/cmd/mesh-controller	26s	(shard 7 of 8: 115 tests)
ok  	github.com/novox/mesh-controller/cmd/mesh-controller	27s	(shard 8 of 8: 115 tests)
ok  	github.com/novox/mesh-controller/internal/inventory	15s	(shard 1 of 4: 68 tests)
ok  	github.com/novox/mesh-controller/internal/inventory	13s	(shard 2 of 4: 67 tests)
ok  	github.com/novox/mesh-controller/internal/inventory	14s	(shard 3 of 4: 67 tests)
ok  	github.com/novox/mesh-controller/internal/inventory	15s	(shard 4 of 4: 67 tests)
ok  	github.com/novox/mesh-controller/internal/builder	36s	(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	32s	(shard 3 of 4: 51 tests)
ok  	github.com/novox/mesh-controller/internal/builder	17s	(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	15s	(shard 2 of 4: 44 tests)
ok  	github.com/novox/mesh-controller/internal/link	16s	(shard 3 of 4: 44 tests)
ok  	github.com/novox/mesh-controller/internal/link	15s	(shard 4 of 4: 43 tests)
store tests, each run against the store:
  ./cmd/mesh-controller --- PASS: TestAStopWithoutAMergeWalksTheOthersAgain (0.40s)
  ./cmd/mesh-controller --- PASS: TestAStopWithoutAMergeEndsTheMergesThatContainIt (0.33s)
  ./cmd/mesh-controller --- PASS: TestAStopWalksTheOthersAgainInTheOpenBatch (0.32s)
  ./cmd/mesh-controller --- PASS: TestAStopNamesWhatStaysOnTheMachinesAndWhatStillCarriesIt (0.36s)
  ./cmd/mesh-controller --- PASS: TestAStopWithoutAMergeLeavesItOutOfABatch (0.30s)
  ./cmd/mesh-controller --- PASS: TestSavingPlansAndMovingMergesIsOneAct (0.26s)
  ./cmd/mesh-controller --- PASS: TestAPlanFollowedFromTheStoreAnswersWhenItMoves (1.97s)
  ./cmd/mesh-controller --- PASS: TestNodeShowAndStatusReadTheLastSendFromTheStore (0.30s)
  ./cmd/mesh-controller --- PASS: TestTheConditionsVerbReadsTheLooksTheBucketNoLongerHolds (0.32s)
  ./cmd/mesh-controller --- PASS: TestAWalkLetGoAndStoppedByVerbsIsSaidStartedAndEnded (0.31s)
  ./cmd/mesh-controller --- PASS: TestAWalkStoppedOrClosedByAPersonIsSaidEndedStopped (0.33s)
  ./cmd/mesh-controller --- PASS: TestAWalkRetriedByAPersonIsSaidStartedAgain (0.25s)
  ./cmd/mesh-controller --- PASS: TestABacklogReleasedByAPersonIsSaidStarted (0.31s)
  ./cmd/mesh-controller --- PASS: TestAWalkEndedByCancelOrClearIsSaidEnded (0.35s)
  ./cmd/mesh-controller --- PASS: TestAWalkRestartedByARebuildIsSaidStarted (0.27s)
  ./cmd/mesh-controller --- PASS: TestAWalkStoppedByHandAndRetriedEndsFailedWhenItFailsAgain (0.30s)
  ./cmd/mesh-controller --- PASS: TestReplay237 (0.21s)
  ./cmd/mesh-controller --- PASS: TestAnUnassignThatLeavesItsNodeUnresolvedSaysSoOnceInItsAnswer (0.26s)
  ./cmd/mesh-controller --- PASS: TestAnUnassignThatLeavesItsNodeResolvedSaysNothingOfIt (0.25s)
  ./cmd/mesh-controller --- PASS: TestAnAssignThatLeavesItsNodeUnresolvedSaysOnlyThePlansRefusal (0.23s)
  ./cmd/mesh-controller --- PASS: TestADirectoryOwnersKeyIsRefusedThroughAVerb (0.27s)
  ./cmd/mesh-controller --- PASS: TestTheSendMakesNoValueForAnOutsideSecretNobodyGave (0.44s)
  ./cmd/mesh-controller --- PASS: TestAQuestionComposesWithoutAnOutsideSecretNobodyGave (0.38s)
  ./cmd/mesh-controller --- PASS: TestReplay201 (0.39s)
  ./cmd/mesh-controller --- PASS: TestARollbackWhoseSendWasRefusedIsCompletedByTheNextSend (0.36s)
  ./cmd/mesh-controller --- PASS: TestAGateJudgesTheOtherMovesBesideAKeptCore (0.28s)
  ./cmd/mesh-controller --- PASS: TestReplay401 (0.34s)
  ./cmd/mesh-controller --- PASS: TestReplay201ThePlansSend (0.26s)
  ./cmd/mesh-controller --- PASS: TestPlanAndNodeListAnOptionalRequirementLeftUnbound (0.34s)
  ./cmd/mesh-controller --- PASS: TestReplay340 (0.35s)
  ./cmd/mesh-controller --- PASS: TestOnlyATrustedFilesNamedKeyIsRefusedThroughAVerb (0.25s)
  ./cmd/mesh-controller --- PASS: TestReplay349 (0.22s)
  ./cmd/mesh-controller --- PASS: TestReplay348AFaultFromBeforeTheSendFailsNoGate (0.17s)
  ./cmd/mesh-controller --- PASS: TestReplay239AModuleNameIsNotTakenOverByAnotherRepository (0.16s)
  ./cmd/mesh-controller --- PASS: TestAWalkThatMovedNothingSaysWhichModulesMatchedWhatRuns (0.28s)
  ./cmd/mesh-controller --- PASS: TestReplay614ANewSDKPlansTheToolchainAndThenItsBundles (0.07s)
  ./cmd/mesh-controller --- PASS: TestOneAcceptForAProviderIsPlacedForEveryConsumer (0.71s)
  ./cmd/mesh-controller --- PASS: TestReplay164 (0.27s)
  ./cmd/mesh-controller --- PASS: TestAnApprovedLayerOpensTheWalkThatSendsIt (2.29s)
  ./cmd/mesh-controller --- PASS: TestASettingsWalkSendsOneMachineAtATimeEachJudged (0.25s)
  ./cmd/mesh-controller --- PASS: TestAFailedSettingsWalkStopsAndHoldsNothingBack (0.26s)
  ./cmd/mesh-controller --- PASS: TestASettingsWalkSendsTheLayerAloneEveryBuildKept (0.25s)
  ./cmd/mesh-controller --- PASS: TestASettingsWalkStopsBeforeADataMoveAndPassesOverAMachineAway (0.70s)
  ./cmd/mesh-controller --- PASS: TestACrossingSendSupersedesASettingsGate (0.21s)
  ./cmd/mesh-controller --- PASS: TestASettingsWalkFailsOnARefusalThatCannotClear (0.25s)
  ./cmd/mesh-controller --- PASS: TestAProviderElsewhereServesItsOwnComposedName (0.91s)
  ./cmd/mesh-controller --- PASS: TestAReusedCheckBuildIsRegisteredByItsDigestAndGatedAsABuiltOne (0.81s)
  ./cmd/mesh-controller --- PASS: TestAReleaseSendsTheRestAtOnceAfterTheFirstPasses (0.25s)
  ./cmd/mesh-controller --- PASS: TestARestMachineThatFailsIsPutBackAloneAndTheOthersAreJudgedOn (0.33s)
  ./cmd/mesh-controller --- PASS: TestAWalkTakesOverTheReadingsOfAGateJudgingTheSameBuildThere (0.32s)
  ./cmd/mesh-controller --- PASS: TestAFirstSendMadeAndNotKeptIsNotSentAgain (0.30s)
  ./cmd/mesh-controller --- PASS: TestAReleaseSendKeptAndMadeIsNotMadeAgain (0.18s)
  ./cmd/mesh-controller --- PASS: TestAFirstMachineThatFailsStillStopsTheWalk (2.69s)
  ./cmd/mesh-controller --- PASS: TestTheControlNodeIsSentLastInAStep (0.40s)
  ./cmd/mesh-controller --- PASS: TestARestMachineSilentPastItsBoundIsLeftAndSaid (0.31s)
  ./cmd/mesh-controller --- PASS: TestANoMoveTierWaitsForNoNewReport (0.42s)
  ./cmd/mesh-controller --- PASS: TestOneProviderDownAndThreeConsumersFailingAreOneCondition (0.18s)
  ./cmd/mesh-controller --- PASS: TestAConsumerFailingBesideAHealthyProviderIsItsOwn (0.18s)
  ./internal/inventory --- PASS: TestTheLastSendSaysWhatTheMachineAnswered (0.10s)
  ./internal/inventory --- PASS: TestAReportIsTheLastSendsAnswerOnlyWhenItIsAboutThatSend (0.11s)
  ./internal/inventory --- PASS: TestAnIssuedValueIsSealedToEveryHolderOnceAndNotAgain (0.09s)
  ./internal/inventory --- PASS: TestAnIssuedValueIsSealedAgainAfterAKeyChangeOrAnAcceptance (0.10s)
  ./internal/inventory --- PASS: TestAConditionsLooksAreKeptBesideTheBucket (0.08s)
  ./internal/inventory --- PASS: TestAPlanIdHoldingAQuoteIsReadAsAPlainId (0.11s)
  ./internal/inventory --- PASS: TestAWalksStartIsKeptAndARefusedSaveLeavesItUnsaid (0.10s)
  ./internal/inventory --- PASS: TestAWalksRestIsReadFromEachMachinesOwnSend (0.11s)
  ./internal/inventory --- PASS: TestAStoredBuildWithASilentMergeableFileIsStillReadAndComposed (0.08s)
  ./internal/inventory --- PASS: TestACredentialIssuedOutsideIsNeverMade (0.21s)
  ./internal/inventory --- PASS: TestOneAcceptForAProviderIsSealedToEveryConsumer (0.13s)
  ./internal/inventory --- PASS: TestASharedOwnSecretIssuedOutsideIsNeverMade (0.13s)
  ./internal/inventory --- PASS: TestAReportOfABusyContainerIsKeptAndReadBack (0.47s)
**Merge check** at `4390589c` Judged: head `4390589c61a4` merged into trunk `c2ec0a601acb`; read beside it: mesh-catalog `482232e8c51c`, mesh-controller-main `c2ec0a601acb`, mesh-host `1a2677882380`, 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-controller) - `mesh/repo-check`: **PASS** — its merge-check.sh passed **Delivery plan** — builds build-agent, mesh-controller → ace, g14, novox, shanks; no bus step - tier 0: mesh-controller - tier 1: build-agent - ace: receives build-agent - g14: receives build-agent - novox: receives mesh-controller, 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 - read by no module's build: cmd/mesh-controller/same_program_test.go, internal/builder/same_program_test.go Run by the build seat on ace as `build-1792005569383627685` (`builds --log build-1792005569383627685`). ``` --- the gate: build-agent, 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-14T19:10:09Z 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-14T19:10:09Z 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 2 module(s) in 2 tier(s): build-agent, mesh-controller notes: - cmd/mesh-controller/same_program_test.go and internal/builder/same_program_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.098s ok github.com/novox/mesh-controller/examples/objectstore-provisioner 1.016s ok github.com/novox/mesh-controller/examples/postgres-provisioner 1.024s ok github.com/novox/mesh-controller/examples/redis-provisioner 1.017s ok github.com/novox/mesh-controller/examples/route-proxy 1.103s ok github.com/novox/mesh-controller/internal/artifacts 1.049s ? github.com/novox/mesh-controller/internal/beside [no test files] ok github.com/novox/mesh-controller/internal/broker 4.955s ok github.com/novox/mesh-controller/internal/catalogue 13.455s ok github.com/novox/mesh-controller/internal/conditions 2.649s ok github.com/novox/mesh-controller/internal/envfile 1.039s ok github.com/novox/mesh-controller/internal/facts 1.043s ok github.com/novox/mesh-controller/internal/identity 6.491s ok github.com/novox/mesh-controller/internal/lease 10.216s ok github.com/novox/mesh-controller/internal/licences 4.551s ok github.com/novox/mesh-controller/internal/licences/adapters 1.041s ok github.com/novox/mesh-controller/internal/lint 2.444s ok github.com/novox/mesh-controller/internal/outward 1.063s ok github.com/novox/mesh-controller/internal/overlay 1.047s ok github.com/novox/mesh-controller/internal/secrets 1.474s ok github.com/novox/mesh-controller/internal/store 3.410s ok github.com/novox/mesh-controller/internal/testbus 1.239s ok github.com/novox/mesh-controller/internal/token 1.041s ok github.com/novox/mesh-controller/cmd/mesh-controller 27s (shard 1 of 8: 116 tests) ok github.com/novox/mesh-controller/cmd/mesh-controller 29s (shard 2 of 8: 115 tests) ok github.com/novox/mesh-controller/cmd/mesh-controller 34s (shard 3 of 8: 115 tests) ok github.com/novox/mesh-controller/cmd/mesh-controller 30s (shard 4 of 8: 115 tests) ok github.com/novox/mesh-controller/cmd/mesh-controller 24s (shard 5 of 8: 115 tests) ok github.com/novox/mesh-controller/cmd/mesh-controller 25s (shard 6 of 8: 115 tests) ok github.com/novox/mesh-controller/cmd/mesh-controller 26s (shard 7 of 8: 115 tests) ok github.com/novox/mesh-controller/cmd/mesh-controller 27s (shard 8 of 8: 115 tests) ok github.com/novox/mesh-controller/internal/inventory 15s (shard 1 of 4: 68 tests) ok github.com/novox/mesh-controller/internal/inventory 13s (shard 2 of 4: 67 tests) ok github.com/novox/mesh-controller/internal/inventory 14s (shard 3 of 4: 67 tests) ok github.com/novox/mesh-controller/internal/inventory 15s (shard 4 of 4: 67 tests) ok github.com/novox/mesh-controller/internal/builder 36s (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 32s (shard 3 of 4: 51 tests) ok github.com/novox/mesh-controller/internal/builder 17s (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 15s (shard 2 of 4: 44 tests) ok github.com/novox/mesh-controller/internal/link 16s (shard 3 of 4: 44 tests) ok github.com/novox/mesh-controller/internal/link 15s (shard 4 of 4: 43 tests) store tests, each run against the store: ./cmd/mesh-controller --- PASS: TestAStopWithoutAMergeWalksTheOthersAgain (0.40s) ./cmd/mesh-controller --- PASS: TestAStopWithoutAMergeEndsTheMergesThatContainIt (0.33s) ./cmd/mesh-controller --- PASS: TestAStopWalksTheOthersAgainInTheOpenBatch (0.32s) ./cmd/mesh-controller --- PASS: TestAStopNamesWhatStaysOnTheMachinesAndWhatStillCarriesIt (0.36s) ./cmd/mesh-controller --- PASS: TestAStopWithoutAMergeLeavesItOutOfABatch (0.30s) ./cmd/mesh-controller --- PASS: TestSavingPlansAndMovingMergesIsOneAct (0.26s) ./cmd/mesh-controller --- PASS: TestAPlanFollowedFromTheStoreAnswersWhenItMoves (1.97s) ./cmd/mesh-controller --- PASS: TestNodeShowAndStatusReadTheLastSendFromTheStore (0.30s) ./cmd/mesh-controller --- PASS: TestTheConditionsVerbReadsTheLooksTheBucketNoLongerHolds (0.32s) ./cmd/mesh-controller --- PASS: TestAWalkLetGoAndStoppedByVerbsIsSaidStartedAndEnded (0.31s) ./cmd/mesh-controller --- PASS: TestAWalkStoppedOrClosedByAPersonIsSaidEndedStopped (0.33s) ./cmd/mesh-controller --- PASS: TestAWalkRetriedByAPersonIsSaidStartedAgain (0.25s) ./cmd/mesh-controller --- PASS: TestABacklogReleasedByAPersonIsSaidStarted (0.31s) ./cmd/mesh-controller --- PASS: TestAWalkEndedByCancelOrClearIsSaidEnded (0.35s) ./cmd/mesh-controller --- PASS: TestAWalkRestartedByARebuildIsSaidStarted (0.27s) ./cmd/mesh-controller --- PASS: TestAWalkStoppedByHandAndRetriedEndsFailedWhenItFailsAgain (0.30s) ./cmd/mesh-controller --- PASS: TestReplay237 (0.21s) ./cmd/mesh-controller --- PASS: TestAnUnassignThatLeavesItsNodeUnresolvedSaysSoOnceInItsAnswer (0.26s) ./cmd/mesh-controller --- PASS: TestAnUnassignThatLeavesItsNodeResolvedSaysNothingOfIt (0.25s) ./cmd/mesh-controller --- PASS: TestAnAssignThatLeavesItsNodeUnresolvedSaysOnlyThePlansRefusal (0.23s) ./cmd/mesh-controller --- PASS: TestADirectoryOwnersKeyIsRefusedThroughAVerb (0.27s) ./cmd/mesh-controller --- PASS: TestTheSendMakesNoValueForAnOutsideSecretNobodyGave (0.44s) ./cmd/mesh-controller --- PASS: TestAQuestionComposesWithoutAnOutsideSecretNobodyGave (0.38s) ./cmd/mesh-controller --- PASS: TestReplay201 (0.39s) ./cmd/mesh-controller --- PASS: TestARollbackWhoseSendWasRefusedIsCompletedByTheNextSend (0.36s) ./cmd/mesh-controller --- PASS: TestAGateJudgesTheOtherMovesBesideAKeptCore (0.28s) ./cmd/mesh-controller --- PASS: TestReplay401 (0.34s) ./cmd/mesh-controller --- PASS: TestReplay201ThePlansSend (0.26s) ./cmd/mesh-controller --- PASS: TestPlanAndNodeListAnOptionalRequirementLeftUnbound (0.34s) ./cmd/mesh-controller --- PASS: TestReplay340 (0.35s) ./cmd/mesh-controller --- PASS: TestOnlyATrustedFilesNamedKeyIsRefusedThroughAVerb (0.25s) ./cmd/mesh-controller --- PASS: TestReplay349 (0.22s) ./cmd/mesh-controller --- PASS: TestReplay348AFaultFromBeforeTheSendFailsNoGate (0.17s) ./cmd/mesh-controller --- PASS: TestReplay239AModuleNameIsNotTakenOverByAnotherRepository (0.16s) ./cmd/mesh-controller --- PASS: TestAWalkThatMovedNothingSaysWhichModulesMatchedWhatRuns (0.28s) ./cmd/mesh-controller --- PASS: TestReplay614ANewSDKPlansTheToolchainAndThenItsBundles (0.07s) ./cmd/mesh-controller --- PASS: TestOneAcceptForAProviderIsPlacedForEveryConsumer (0.71s) ./cmd/mesh-controller --- PASS: TestReplay164 (0.27s) ./cmd/mesh-controller --- PASS: TestAnApprovedLayerOpensTheWalkThatSendsIt (2.29s) ./cmd/mesh-controller --- PASS: TestASettingsWalkSendsOneMachineAtATimeEachJudged (0.25s) ./cmd/mesh-controller --- PASS: TestAFailedSettingsWalkStopsAndHoldsNothingBack (0.26s) ./cmd/mesh-controller --- PASS: TestASettingsWalkSendsTheLayerAloneEveryBuildKept (0.25s) ./cmd/mesh-controller --- PASS: TestASettingsWalkStopsBeforeADataMoveAndPassesOverAMachineAway (0.70s) ./cmd/mesh-controller --- PASS: TestACrossingSendSupersedesASettingsGate (0.21s) ./cmd/mesh-controller --- PASS: TestASettingsWalkFailsOnARefusalThatCannotClear (0.25s) ./cmd/mesh-controller --- PASS: TestAProviderElsewhereServesItsOwnComposedName (0.91s) ./cmd/mesh-controller --- PASS: TestAReusedCheckBuildIsRegisteredByItsDigestAndGatedAsABuiltOne (0.81s) ./cmd/mesh-controller --- PASS: TestAReleaseSendsTheRestAtOnceAfterTheFirstPasses (0.25s) ./cmd/mesh-controller --- PASS: TestARestMachineThatFailsIsPutBackAloneAndTheOthersAreJudgedOn (0.33s) ./cmd/mesh-controller --- PASS: TestAWalkTakesOverTheReadingsOfAGateJudgingTheSameBuildThere (0.32s) ./cmd/mesh-controller --- PASS: TestAFirstSendMadeAndNotKeptIsNotSentAgain (0.30s) ./cmd/mesh-controller --- PASS: TestAReleaseSendKeptAndMadeIsNotMadeAgain (0.18s) ./cmd/mesh-controller --- PASS: TestAFirstMachineThatFailsStillStopsTheWalk (2.69s) ./cmd/mesh-controller --- PASS: TestTheControlNodeIsSentLastInAStep (0.40s) ./cmd/mesh-controller --- PASS: TestARestMachineSilentPastItsBoundIsLeftAndSaid (0.31s) ./cmd/mesh-controller --- PASS: TestANoMoveTierWaitsForNoNewReport (0.42s) ./cmd/mesh-controller --- PASS: TestOneProviderDownAndThreeConsumersFailingAreOneCondition (0.18s) ./cmd/mesh-controller --- PASS: TestAConsumerFailingBesideAHealthyProviderIsItsOwn (0.18s) ./internal/inventory --- PASS: TestTheLastSendSaysWhatTheMachineAnswered (0.10s) ./internal/inventory --- PASS: TestAReportIsTheLastSendsAnswerOnlyWhenItIsAboutThatSend (0.11s) ./internal/inventory --- PASS: TestAnIssuedValueIsSealedToEveryHolderOnceAndNotAgain (0.09s) ./internal/inventory --- PASS: TestAnIssuedValueIsSealedAgainAfterAKeyChangeOrAnAcceptance (0.10s) ./internal/inventory --- PASS: TestAConditionsLooksAreKeptBesideTheBucket (0.08s) ./internal/inventory --- PASS: TestAPlanIdHoldingAQuoteIsReadAsAPlainId (0.11s) ./internal/inventory --- PASS: TestAWalksStartIsKeptAndARefusedSaveLeavesItUnsaid (0.10s) ./internal/inventory --- PASS: TestAWalksRestIsReadFromEachMachinesOwnSend (0.11s) ./internal/inventory --- PASS: TestAStoredBuildWithASilentMergeableFileIsStillReadAndComposed (0.08s) ./internal/inventory --- PASS: TestACredentialIssuedOutsideIsNeverMade (0.21s) ./internal/inventory --- PASS: TestOneAcceptForAProviderIsSealedToEveryConsumer (0.13s) ./internal/inventory --- PASS: TestASharedOwnSecretIssuedOutsideIsNeverMade (0.13s) ./internal/inventory --- PASS: TestAReportOfABusyContainerIsKeptAndReadBack (0.47s) ```
jschoubben added 1 commit 2026-10-14 19:23:48 +00:00
List the store test of a walk whose every build came out the same (hq issues 611, 721)
mesh/merge-gate head 6acce60f8bd3 merged into trunk c2ec0a601acb — pass: builds build-agent, mesh-controller → ace, g14, novox, shanks; no bus step; every …
mesh/repo-check head 6acce60f8bd3 merged into trunk c2ec0a601acb — pass: its merge-check.sh passed
mesh/delivery superseded: a newer head of the same pull request
6acce60f8b
Author
Contributor

Merge check at 6acce60f
Judged: head 6acce60f8bd3 merged into trunk c2ec0a601acb; read beside it: mesh-catalog 482232e8c51c, mesh-controller-main c2ec0a601acb, mesh-host 1a2677882380, 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-controller)
  • mesh/repo-check: PASS — its merge-check.sh passed

Delivery plan — builds build-agent, mesh-controller → ace, g14, novox, shanks; no bus step

  • tier 0: mesh-controller
  • tier 1: build-agent
  • ace: receives build-agent
  • g14: receives build-agent
  • novox: receives mesh-controller, 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
  • read by no module's build: cmd/mesh-controller/same_program_test.go, internal/builder/same_program_test.go, testdata/store-tests

Run by the build seat on shanks as build-1792005849305958885 (builds --log build-1792005849305958885).

--- the gate: build-agent, 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-14T19:10:09Z 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-14T19:10:09Z

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 2 module(s) in 2 tier(s): build-agent, mesh-controller

notes:
  - cmd/mesh-controller/same_program_test.go, internal/builder/same_program_test.go and testdata/store-tests 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.245s
ok  	github.com/novox/mesh-controller/examples/objectstore-provisioner	1.035s
ok  	github.com/novox/mesh-controller/examples/postgres-provisioner	1.031s
ok  	github.com/novox/mesh-controller/examples/redis-provisioner	1.036s
ok  	github.com/novox/mesh-controller/examples/route-proxy	1.299s
ok  	github.com/novox/mesh-controller/internal/artifacts	1.180s
?   	github.com/novox/mesh-controller/internal/beside	[no test files]
ok  	github.com/novox/mesh-controller/internal/broker	6.411s
ok  	github.com/novox/mesh-controller/internal/catalogue	15.604s
ok  	github.com/novox/mesh-controller/internal/conditions	3.326s
ok  	github.com/novox/mesh-controller/internal/envfile	1.063s
ok  	github.com/novox/mesh-controller/internal/facts	1.090s
ok  	github.com/novox/mesh-controller/internal/identity	8.116s
ok  	github.com/novox/mesh-controller/internal/lease	10.311s
ok  	github.com/novox/mesh-controller/internal/licences	6.249s
ok  	github.com/novox/mesh-controller/internal/licences/adapters	1.091s
ok  	github.com/novox/mesh-controller/internal/lint	3.453s
ok  	github.com/novox/mesh-controller/internal/outward	1.198s
ok  	github.com/novox/mesh-controller/internal/overlay	1.092s
ok  	github.com/novox/mesh-controller/internal/secrets	1.808s
ok  	github.com/novox/mesh-controller/internal/store	3.989s
ok  	github.com/novox/mesh-controller/internal/testbus	1.378s
ok  	github.com/novox/mesh-controller/internal/token	1.075s
ok  	github.com/novox/mesh-controller/cmd/mesh-controller	35s	(shard 1 of 8: 116 tests)
ok  	github.com/novox/mesh-controller/cmd/mesh-controller	37s	(shard 2 of 8: 115 tests)
ok  	github.com/novox/mesh-controller/cmd/mesh-controller	44s	(shard 3 of 8: 115 tests)
ok  	github.com/novox/mesh-controller/cmd/mesh-controller	39s	(shard 4 of 8: 115 tests)
ok  	github.com/novox/mesh-controller/cmd/mesh-controller	31s	(shard 5 of 8: 115 tests)
ok  	github.com/novox/mesh-controller/cmd/mesh-controller	34s	(shard 6 of 8: 115 tests)
ok  	github.com/novox/mesh-controller/cmd/mesh-controller	35s	(shard 7 of 8: 115 tests)
ok  	github.com/novox/mesh-controller/cmd/mesh-controller	36s	(shard 8 of 8: 115 tests)
ok  	github.com/novox/mesh-controller/internal/inventory	24s	(shard 1 of 4: 68 tests)
ok  	github.com/novox/mesh-controller/internal/inventory	21s	(shard 2 of 4: 67 tests)
ok  	github.com/novox/mesh-controller/internal/inventory	21s	(shard 3 of 4: 67 tests)
ok  	github.com/novox/mesh-controller/internal/inventory	24s	(shard 4 of 4: 67 tests)
ok  	github.com/novox/mesh-controller/internal/builder	44s	(shard 1 of 4: 52 tests)
ok  	github.com/novox/mesh-controller/internal/builder	17s	(shard 2 of 4: 51 tests)
ok  	github.com/novox/mesh-controller/internal/builder	38s	(shard 3 of 4: 51 tests)
ok  	github.com/novox/mesh-controller/internal/builder	23s	(shard 4 of 4: 51 tests)
ok  	github.com/novox/mesh-controller/internal/link	18s	(shard 1 of 4: 44 tests)
ok  	github.com/novox/mesh-controller/internal/link	19s	(shard 2 of 4: 44 tests)
ok  	github.com/novox/mesh-controller/internal/link	18s	(shard 3 of 4: 44 tests)
ok  	github.com/novox/mesh-controller/internal/link	18s	(shard 4 of 4: 43 tests)
store tests, each run against the store:
  ./cmd/mesh-controller --- PASS: TestAStopWithoutAMergeWalksTheOthersAgain (0.59s)
  ./cmd/mesh-controller --- PASS: TestAStopWithoutAMergeEndsTheMergesThatContainIt (0.59s)
  ./cmd/mesh-controller --- PASS: TestAStopWalksTheOthersAgainInTheOpenBatch (0.63s)
  ./cmd/mesh-controller --- PASS: TestAStopNamesWhatStaysOnTheMachinesAndWhatStillCarriesIt (0.57s)
  ./cmd/mesh-controller --- PASS: TestAStopWithoutAMergeLeavesItOutOfABatch (0.61s)
  ./cmd/mesh-controller --- PASS: TestSavingPlansAndMovingMergesIsOneAct (0.60s)
  ./cmd/mesh-controller --- PASS: TestAPlanFollowedFromTheStoreAnswersWhenItMoves (5.89s)
  ./cmd/mesh-controller --- PASS: TestNodeShowAndStatusReadTheLastSendFromTheStore (0.54s)
  ./cmd/mesh-controller --- PASS: TestTheConditionsVerbReadsTheLooksTheBucketNoLongerHolds (0.22s)
  ./cmd/mesh-controller --- PASS: TestAWalkLetGoAndStoppedByVerbsIsSaidStartedAndEnded (0.37s)
  ./cmd/mesh-controller --- PASS: TestAWalkStoppedOrClosedByAPersonIsSaidEndedStopped (0.37s)
  ./cmd/mesh-controller --- PASS: TestAWalkRetriedByAPersonIsSaidStartedAgain (0.29s)
  ./cmd/mesh-controller --- PASS: TestABacklogReleasedByAPersonIsSaidStarted (0.29s)
  ./cmd/mesh-controller --- PASS: TestAWalkEndedByCancelOrClearIsSaidEnded (0.50s)
  ./cmd/mesh-controller --- PASS: TestAWalkRestartedByARebuildIsSaidStarted (0.29s)
  ./cmd/mesh-controller --- PASS: TestAWalkStoppedByHandAndRetriedEndsFailedWhenItFailsAgain (0.34s)
  ./cmd/mesh-controller --- PASS: TestReplay237 (0.32s)
  ./cmd/mesh-controller --- PASS: TestAnUnassignThatLeavesItsNodeUnresolvedSaysSoOnceInItsAnswer (0.49s)
  ./cmd/mesh-controller --- PASS: TestAnUnassignThatLeavesItsNodeResolvedSaysNothingOfIt (0.46s)
  ./cmd/mesh-controller --- PASS: TestAnAssignThatLeavesItsNodeUnresolvedSaysOnlyThePlansRefusal (0.45s)
  ./cmd/mesh-controller --- PASS: TestADirectoryOwnersKeyIsRefusedThroughAVerb (0.35s)
  ./cmd/mesh-controller --- PASS: TestTheSendMakesNoValueForAnOutsideSecretNobodyGave (0.50s)
  ./cmd/mesh-controller --- PASS: TestAQuestionComposesWithoutAnOutsideSecretNobodyGave (0.61s)
  ./cmd/mesh-controller --- PASS: TestReplay201 (0.30s)
  ./cmd/mesh-controller --- PASS: TestARollbackWhoseSendWasRefusedIsCompletedByTheNextSend (0.37s)
  ./cmd/mesh-controller --- PASS: TestAGateJudgesTheOtherMovesBesideAKeptCore (0.44s)
  ./cmd/mesh-controller --- PASS: TestReplay401 (0.97s)
  ./cmd/mesh-controller --- PASS: TestReplay201ThePlansSend (0.39s)
  ./cmd/mesh-controller --- PASS: TestPlanAndNodeListAnOptionalRequirementLeftUnbound (0.54s)
  ./cmd/mesh-controller --- PASS: TestReplay340 (1.10s)
  ./cmd/mesh-controller --- PASS: TestOnlyATrustedFilesNamedKeyIsRefusedThroughAVerb (0.31s)
  ./cmd/mesh-controller --- PASS: TestReplay349 (0.47s)
  ./cmd/mesh-controller --- PASS: TestReplay348AFaultFromBeforeTheSendFailsNoGate (0.37s)
  ./cmd/mesh-controller --- PASS: TestReplay239AModuleNameIsNotTakenOverByAnotherRepository (0.32s)
  ./cmd/mesh-controller --- PASS: TestAWalkThatMovedNothingSaysWhichModulesMatchedWhatRuns (0.61s)
  ./cmd/mesh-controller --- PASS: TestAWalkWhoseEveryBuildCameOutTheSameIsDone (0.31s)
  ./cmd/mesh-controller --- PASS: TestReplay614ANewSDKPlansTheToolchainAndThenItsBundles (0.20s)
  ./cmd/mesh-controller --- PASS: TestOneAcceptForAProviderIsPlacedForEveryConsumer (0.88s)
  ./cmd/mesh-controller --- PASS: TestReplay164 (0.64s)
  ./cmd/mesh-controller --- PASS: TestAnApprovedLayerOpensTheWalkThatSendsIt (0.32s)
  ./cmd/mesh-controller --- PASS: TestASettingsWalkSendsOneMachineAtATimeEachJudged (0.36s)
  ./cmd/mesh-controller --- PASS: TestAFailedSettingsWalkStopsAndHoldsNothingBack (0.38s)
  ./cmd/mesh-controller --- PASS: TestASettingsWalkSendsTheLayerAloneEveryBuildKept (0.28s)
  ./cmd/mesh-controller --- PASS: TestASettingsWalkStopsBeforeADataMoveAndPassesOverAMachineAway (0.82s)
  ./cmd/mesh-controller --- PASS: TestACrossingSendSupersedesASettingsGate (0.31s)
  ./cmd/mesh-controller --- PASS: TestASettingsWalkFailsOnARefusalThatCannotClear (0.26s)
  ./cmd/mesh-controller --- PASS: TestAProviderElsewhereServesItsOwnComposedName (0.41s)
  ./cmd/mesh-controller --- PASS: TestAReusedCheckBuildIsRegisteredByItsDigestAndGatedAsABuiltOne (0.76s)
  ./cmd/mesh-controller --- PASS: TestAReleaseSendsTheRestAtOnceAfterTheFirstPasses (0.45s)
  ./cmd/mesh-controller --- PASS: TestARestMachineThatFailsIsPutBackAloneAndTheOthersAreJudgedOn (2.32s)
  ./cmd/mesh-controller --- PASS: TestAWalkTakesOverTheReadingsOfAGateJudgingTheSameBuildThere (0.61s)
  ./cmd/mesh-controller --- PASS: TestAFirstSendMadeAndNotKeptIsNotSentAgain (0.92s)
  ./cmd/mesh-controller --- PASS: TestAReleaseSendKeptAndMadeIsNotMadeAgain (0.39s)
  ./cmd/mesh-controller --- PASS: TestAFirstMachineThatFailsStillStopsTheWalk (0.40s)
  ./cmd/mesh-controller --- PASS: TestTheControlNodeIsSentLastInAStep (0.39s)
  ./cmd/mesh-controller --- PASS: TestARestMachineSilentPastItsBoundIsLeftAndSaid (0.33s)
  ./cmd/mesh-controller --- PASS: TestANoMoveTierWaitsForNoNewReport (0.69s)
  ./cmd/mesh-controller --- PASS: TestOneProviderDownAndThreeConsumersFailingAreOneCondition (1.03s)
  ./cmd/mesh-controller --- PASS: TestAConsumerFailingBesideAHealthyProviderIsItsOwn (0.38s)
  ./internal/inventory --- PASS: TestTheLastSendSaysWhatTheMachineAnswered (0.10s)
  ./internal/inventory --- PASS: TestAReportIsTheLastSendsAnswerOnlyWhenItIsAboutThatSend (0.12s)
  ./internal/inventory --- PASS: TestAnIssuedValueIsSealedToEveryHolderOnceAndNotAgain (0.12s)
  ./internal/inventory --- PASS: TestAnIssuedValueIsSealedAgainAfterAKeyChangeOrAnAcceptance (0.10s)
  ./internal/inventory --- PASS: TestAConditionsLooksAreKeptBesideTheBucket (0.08s)
  ./internal/inventory --- PASS: TestAPlanIdHoldingAQuoteIsReadAsAPlainId (0.08s)
  ./internal/inventory --- PASS: TestAWalksStartIsKeptAndARefusedSaveLeavesItUnsaid (0.11s)
  ./internal/inventory --- PASS: TestAWalksRestIsReadFromEachMachinesOwnSend (0.10s)
  ./internal/inventory --- PASS: TestAStoredBuildWithASilentMergeableFileIsStillReadAndComposed (0.09s)
  ./internal/inventory --- PASS: TestACredentialIssuedOutsideIsNeverMade (0.10s)
  ./internal/inventory --- PASS: TestOneAcceptForAProviderIsSealedToEveryConsumer (0.12s)
  ./internal/inventory --- PASS: TestASharedOwnSecretIssuedOutsideIsNeverMade (0.09s)
  ./internal/inventory --- PASS: TestAReportOfABusyContainerIsKeptAndReadBack (0.45s)
**Merge check** at `6acce60f` Judged: head `6acce60f8bd3` merged into trunk `c2ec0a601acb`; read beside it: mesh-catalog `482232e8c51c`, mesh-controller-main `c2ec0a601acb`, mesh-host `1a2677882380`, 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-controller) - `mesh/repo-check`: **PASS** — its merge-check.sh passed **Delivery plan** — builds build-agent, mesh-controller → ace, g14, novox, shanks; no bus step - tier 0: mesh-controller - tier 1: build-agent - ace: receives build-agent - g14: receives build-agent - novox: receives mesh-controller, 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 - read by no module's build: cmd/mesh-controller/same_program_test.go, internal/builder/same_program_test.go, testdata/store-tests Run by the build seat on shanks as `build-1792005849305958885` (`builds --log build-1792005849305958885`). ``` --- the gate: build-agent, 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-14T19:10:09Z 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-14T19:10:09Z 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 2 module(s) in 2 tier(s): build-agent, mesh-controller notes: - cmd/mesh-controller/same_program_test.go, internal/builder/same_program_test.go and testdata/store-tests 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.245s ok github.com/novox/mesh-controller/examples/objectstore-provisioner 1.035s ok github.com/novox/mesh-controller/examples/postgres-provisioner 1.031s ok github.com/novox/mesh-controller/examples/redis-provisioner 1.036s ok github.com/novox/mesh-controller/examples/route-proxy 1.299s ok github.com/novox/mesh-controller/internal/artifacts 1.180s ? github.com/novox/mesh-controller/internal/beside [no test files] ok github.com/novox/mesh-controller/internal/broker 6.411s ok github.com/novox/mesh-controller/internal/catalogue 15.604s ok github.com/novox/mesh-controller/internal/conditions 3.326s ok github.com/novox/mesh-controller/internal/envfile 1.063s ok github.com/novox/mesh-controller/internal/facts 1.090s ok github.com/novox/mesh-controller/internal/identity 8.116s ok github.com/novox/mesh-controller/internal/lease 10.311s ok github.com/novox/mesh-controller/internal/licences 6.249s ok github.com/novox/mesh-controller/internal/licences/adapters 1.091s ok github.com/novox/mesh-controller/internal/lint 3.453s ok github.com/novox/mesh-controller/internal/outward 1.198s ok github.com/novox/mesh-controller/internal/overlay 1.092s ok github.com/novox/mesh-controller/internal/secrets 1.808s ok github.com/novox/mesh-controller/internal/store 3.989s ok github.com/novox/mesh-controller/internal/testbus 1.378s ok github.com/novox/mesh-controller/internal/token 1.075s ok github.com/novox/mesh-controller/cmd/mesh-controller 35s (shard 1 of 8: 116 tests) ok github.com/novox/mesh-controller/cmd/mesh-controller 37s (shard 2 of 8: 115 tests) ok github.com/novox/mesh-controller/cmd/mesh-controller 44s (shard 3 of 8: 115 tests) ok github.com/novox/mesh-controller/cmd/mesh-controller 39s (shard 4 of 8: 115 tests) ok github.com/novox/mesh-controller/cmd/mesh-controller 31s (shard 5 of 8: 115 tests) ok github.com/novox/mesh-controller/cmd/mesh-controller 34s (shard 6 of 8: 115 tests) ok github.com/novox/mesh-controller/cmd/mesh-controller 35s (shard 7 of 8: 115 tests) ok github.com/novox/mesh-controller/cmd/mesh-controller 36s (shard 8 of 8: 115 tests) ok github.com/novox/mesh-controller/internal/inventory 24s (shard 1 of 4: 68 tests) ok github.com/novox/mesh-controller/internal/inventory 21s (shard 2 of 4: 67 tests) ok github.com/novox/mesh-controller/internal/inventory 21s (shard 3 of 4: 67 tests) ok github.com/novox/mesh-controller/internal/inventory 24s (shard 4 of 4: 67 tests) ok github.com/novox/mesh-controller/internal/builder 44s (shard 1 of 4: 52 tests) ok github.com/novox/mesh-controller/internal/builder 17s (shard 2 of 4: 51 tests) ok github.com/novox/mesh-controller/internal/builder 38s (shard 3 of 4: 51 tests) ok github.com/novox/mesh-controller/internal/builder 23s (shard 4 of 4: 51 tests) ok github.com/novox/mesh-controller/internal/link 18s (shard 1 of 4: 44 tests) ok github.com/novox/mesh-controller/internal/link 19s (shard 2 of 4: 44 tests) ok github.com/novox/mesh-controller/internal/link 18s (shard 3 of 4: 44 tests) ok github.com/novox/mesh-controller/internal/link 18s (shard 4 of 4: 43 tests) store tests, each run against the store: ./cmd/mesh-controller --- PASS: TestAStopWithoutAMergeWalksTheOthersAgain (0.59s) ./cmd/mesh-controller --- PASS: TestAStopWithoutAMergeEndsTheMergesThatContainIt (0.59s) ./cmd/mesh-controller --- PASS: TestAStopWalksTheOthersAgainInTheOpenBatch (0.63s) ./cmd/mesh-controller --- PASS: TestAStopNamesWhatStaysOnTheMachinesAndWhatStillCarriesIt (0.57s) ./cmd/mesh-controller --- PASS: TestAStopWithoutAMergeLeavesItOutOfABatch (0.61s) ./cmd/mesh-controller --- PASS: TestSavingPlansAndMovingMergesIsOneAct (0.60s) ./cmd/mesh-controller --- PASS: TestAPlanFollowedFromTheStoreAnswersWhenItMoves (5.89s) ./cmd/mesh-controller --- PASS: TestNodeShowAndStatusReadTheLastSendFromTheStore (0.54s) ./cmd/mesh-controller --- PASS: TestTheConditionsVerbReadsTheLooksTheBucketNoLongerHolds (0.22s) ./cmd/mesh-controller --- PASS: TestAWalkLetGoAndStoppedByVerbsIsSaidStartedAndEnded (0.37s) ./cmd/mesh-controller --- PASS: TestAWalkStoppedOrClosedByAPersonIsSaidEndedStopped (0.37s) ./cmd/mesh-controller --- PASS: TestAWalkRetriedByAPersonIsSaidStartedAgain (0.29s) ./cmd/mesh-controller --- PASS: TestABacklogReleasedByAPersonIsSaidStarted (0.29s) ./cmd/mesh-controller --- PASS: TestAWalkEndedByCancelOrClearIsSaidEnded (0.50s) ./cmd/mesh-controller --- PASS: TestAWalkRestartedByARebuildIsSaidStarted (0.29s) ./cmd/mesh-controller --- PASS: TestAWalkStoppedByHandAndRetriedEndsFailedWhenItFailsAgain (0.34s) ./cmd/mesh-controller --- PASS: TestReplay237 (0.32s) ./cmd/mesh-controller --- PASS: TestAnUnassignThatLeavesItsNodeUnresolvedSaysSoOnceInItsAnswer (0.49s) ./cmd/mesh-controller --- PASS: TestAnUnassignThatLeavesItsNodeResolvedSaysNothingOfIt (0.46s) ./cmd/mesh-controller --- PASS: TestAnAssignThatLeavesItsNodeUnresolvedSaysOnlyThePlansRefusal (0.45s) ./cmd/mesh-controller --- PASS: TestADirectoryOwnersKeyIsRefusedThroughAVerb (0.35s) ./cmd/mesh-controller --- PASS: TestTheSendMakesNoValueForAnOutsideSecretNobodyGave (0.50s) ./cmd/mesh-controller --- PASS: TestAQuestionComposesWithoutAnOutsideSecretNobodyGave (0.61s) ./cmd/mesh-controller --- PASS: TestReplay201 (0.30s) ./cmd/mesh-controller --- PASS: TestARollbackWhoseSendWasRefusedIsCompletedByTheNextSend (0.37s) ./cmd/mesh-controller --- PASS: TestAGateJudgesTheOtherMovesBesideAKeptCore (0.44s) ./cmd/mesh-controller --- PASS: TestReplay401 (0.97s) ./cmd/mesh-controller --- PASS: TestReplay201ThePlansSend (0.39s) ./cmd/mesh-controller --- PASS: TestPlanAndNodeListAnOptionalRequirementLeftUnbound (0.54s) ./cmd/mesh-controller --- PASS: TestReplay340 (1.10s) ./cmd/mesh-controller --- PASS: TestOnlyATrustedFilesNamedKeyIsRefusedThroughAVerb (0.31s) ./cmd/mesh-controller --- PASS: TestReplay349 (0.47s) ./cmd/mesh-controller --- PASS: TestReplay348AFaultFromBeforeTheSendFailsNoGate (0.37s) ./cmd/mesh-controller --- PASS: TestReplay239AModuleNameIsNotTakenOverByAnotherRepository (0.32s) ./cmd/mesh-controller --- PASS: TestAWalkThatMovedNothingSaysWhichModulesMatchedWhatRuns (0.61s) ./cmd/mesh-controller --- PASS: TestAWalkWhoseEveryBuildCameOutTheSameIsDone (0.31s) ./cmd/mesh-controller --- PASS: TestReplay614ANewSDKPlansTheToolchainAndThenItsBundles (0.20s) ./cmd/mesh-controller --- PASS: TestOneAcceptForAProviderIsPlacedForEveryConsumer (0.88s) ./cmd/mesh-controller --- PASS: TestReplay164 (0.64s) ./cmd/mesh-controller --- PASS: TestAnApprovedLayerOpensTheWalkThatSendsIt (0.32s) ./cmd/mesh-controller --- PASS: TestASettingsWalkSendsOneMachineAtATimeEachJudged (0.36s) ./cmd/mesh-controller --- PASS: TestAFailedSettingsWalkStopsAndHoldsNothingBack (0.38s) ./cmd/mesh-controller --- PASS: TestASettingsWalkSendsTheLayerAloneEveryBuildKept (0.28s) ./cmd/mesh-controller --- PASS: TestASettingsWalkStopsBeforeADataMoveAndPassesOverAMachineAway (0.82s) ./cmd/mesh-controller --- PASS: TestACrossingSendSupersedesASettingsGate (0.31s) ./cmd/mesh-controller --- PASS: TestASettingsWalkFailsOnARefusalThatCannotClear (0.26s) ./cmd/mesh-controller --- PASS: TestAProviderElsewhereServesItsOwnComposedName (0.41s) ./cmd/mesh-controller --- PASS: TestAReusedCheckBuildIsRegisteredByItsDigestAndGatedAsABuiltOne (0.76s) ./cmd/mesh-controller --- PASS: TestAReleaseSendsTheRestAtOnceAfterTheFirstPasses (0.45s) ./cmd/mesh-controller --- PASS: TestARestMachineThatFailsIsPutBackAloneAndTheOthersAreJudgedOn (2.32s) ./cmd/mesh-controller --- PASS: TestAWalkTakesOverTheReadingsOfAGateJudgingTheSameBuildThere (0.61s) ./cmd/mesh-controller --- PASS: TestAFirstSendMadeAndNotKeptIsNotSentAgain (0.92s) ./cmd/mesh-controller --- PASS: TestAReleaseSendKeptAndMadeIsNotMadeAgain (0.39s) ./cmd/mesh-controller --- PASS: TestAFirstMachineThatFailsStillStopsTheWalk (0.40s) ./cmd/mesh-controller --- PASS: TestTheControlNodeIsSentLastInAStep (0.39s) ./cmd/mesh-controller --- PASS: TestARestMachineSilentPastItsBoundIsLeftAndSaid (0.33s) ./cmd/mesh-controller --- PASS: TestANoMoveTierWaitsForNoNewReport (0.69s) ./cmd/mesh-controller --- PASS: TestOneProviderDownAndThreeConsumersFailingAreOneCondition (1.03s) ./cmd/mesh-controller --- PASS: TestAConsumerFailingBesideAHealthyProviderIsItsOwn (0.38s) ./internal/inventory --- PASS: TestTheLastSendSaysWhatTheMachineAnswered (0.10s) ./internal/inventory --- PASS: TestAReportIsTheLastSendsAnswerOnlyWhenItIsAboutThatSend (0.12s) ./internal/inventory --- PASS: TestAnIssuedValueIsSealedToEveryHolderOnceAndNotAgain (0.12s) ./internal/inventory --- PASS: TestAnIssuedValueIsSealedAgainAfterAKeyChangeOrAnAcceptance (0.10s) ./internal/inventory --- PASS: TestAConditionsLooksAreKeptBesideTheBucket (0.08s) ./internal/inventory --- PASS: TestAPlanIdHoldingAQuoteIsReadAsAPlainId (0.08s) ./internal/inventory --- PASS: TestAWalksStartIsKeptAndARefusedSaveLeavesItUnsaid (0.11s) ./internal/inventory --- PASS: TestAWalksRestIsReadFromEachMachinesOwnSend (0.10s) ./internal/inventory --- PASS: TestAStoredBuildWithASilentMergeableFileIsStillReadAndComposed (0.09s) ./internal/inventory --- PASS: TestACredentialIssuedOutsideIsNeverMade (0.10s) ./internal/inventory --- PASS: TestOneAcceptForAProviderIsSealedToEveryConsumer (0.12s) ./internal/inventory --- PASS: TestASharedOwnSecretIssuedOutsideIsNeverMade (0.09s) ./internal/inventory --- PASS: TestAReportOfABusyContainerIsKeptAndReadBack (0.45s) ```
jschoubben added 1 commit 2026-10-14 19:30:11 +00:00
Compare a build with the one the mesh registered, not the newest, which may be one put back (review of #336, hq issue 721)
mesh/merge-gate head 38c87a7e4714 merged into trunk c2ec0a601acb — pass: builds build-agent, mesh-controller → ace, g14, novox, shanks; no bus step; every …
mesh/repo-check head 38c87a7e4714 merged into trunk c2ec0a601acb — fail: its merge-check.sh failed: --- FAIL: TestAWalkWhoseEveryBuildCameOutTheSameIsDone …
mesh/delivery-group group fix/a-module-moves-only-when-its-program-changes rejected: a member's own check failed
mesh/delivery superseded: a newer head of the same pull request
38c87a7e47
Author
Contributor

Merge check at 38c87a7e
Judged: head 38c87a7e4714 merged into trunk c2ec0a601acb; read beside it: mesh-catalog 482232e8c51c, mesh-controller-main c2ec0a601acb, mesh-host 1a2677882380, 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-controller)
  • mesh/repo-check: FAIL — its merge-check.sh failed: --- FAIL: TestAWalkWhoseEveryBuildCameOutTheSameIsDone (0.60s)

Delivery plan — builds build-agent, mesh-controller → ace, g14, novox, shanks; no bus step

  • tier 0: mesh-controller
  • tier 1: build-agent
  • ace: receives build-agent
  • g14: receives build-agent
  • novox: receives mesh-controller, 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
  • read by no module's build: cmd/mesh-controller/same_program_test.go, internal/builder/same_program_test.go, internal/inventory/registered_held_test.go, testdata/store-tests

Run by the build seat on novox as build-1792006228398870024 (builds --log build-1792006228398870024).

  plan-1792006526000000000 waits for mesh-delivery's word before its first tier is asked
novox/mesh-controller merged into main (k2); group pr/k2 has a member still to merge: novox/elsewhere (ready), it waits for the window in a batch of its own, it joins plan-1792006766000000000 — assembling: 90 s left (at the latest 19:49:26) — group pr/k2 has a member still to merge: novox/elsewhere (ready); grouped: novox/mesh-controller@k2 (on the controller's own path); plan not yet calculated
  mesh-controller: read whole: no build source recorded, so every file of its repository is its build source
plan-1792006766000000000 cut: novox/mesh-controller k2, answering novox/mesh-controller@k2; 1 module(s) in 1 tier(s)
  0: mesh-controller
  tier 0:   tier 0:   tier 0: build-sudo: sudo is new to the catalogue, and novox/mesh-catalog on the git seat is no repository the catalogue builds a module from — registered, as asked at the controller's terminal
build-host: mesh-host is new to the catalogue, and novox/mesh-host on the git seat is no repository the catalogue builds a module from — registered, as asked at the controller's terminal
b-1: unifi is new to the catalogue, and novox/mesh-catalog on the git seat is no repository the catalogue builds a module from — registered, as asked at the controller's terminal
b-1: the build seat did not say whether 1111111a is on its repository's trunk (it predates ADR 0238); registered as before
b-2: the build seat did not say whether 9c97a8a1 is on its repository's trunk (it predates ADR 0238); registered as before
b-3: the build seat did not say whether deadbeef is on its repository's trunk (it predates ADR 0238); registered as before
made the bus a certificate for [mesh-broker], valid until 2036-10-11T19:36:13Z
  /tmp/TestTheBusCertificateIsMadeOnce1065719370/001/tls.crt
  /tmp/TestTheBusCertificateIsMadeOnce1065719370/001/tls.key
the bus already has a certificate at /tmp/TestTheBusCertificateIsMadeOnce1065719370/001/tls.crt, and it was left alone
build-1: a dry run of ssh://forge/app.git on unreviewed, not taken in
the forge cannot be asked about novox/mesh-catalog now (cannot ask gitea.gitea_api: nothing serves it); asking again in 1s, for at most 1m0s in all (novox/hq issue 486)
the forge cannot be asked about novox/mesh-catalog now (cannot ask gitea.gitea_api: nothing serves it); asking again in 2s, for at most 1m0s in all (novox/hq issue 486)
the forge answered about novox/mesh-catalog again, after 3s (novox/hq issue 486)
plan-gate: tier 0 built; sent 1 module(s) to anchor first in one send (app), the rest once its gate passes
plan-gate: app passed its gate on anchor (healthy 1 times over 0s, by a leaf module's rule: one reading (novox/hq ADR 0304)); the rest are sent
plan-gate: tier 0 built; sent app to laptop, one send each
plan-gate: done — novox/mesh-catalog at c2, 1 tier(s)
KEPT: anchor was last sent mesh-controller c2bbbbbb, and the mesh holds the older c1aaaaaa (asked 2026-10-14T17:36:31Z, before 2026-10-14T19:35:31Z): a send there keeps c2bbbbbb; `push anchor` sends the older build, and a newer merge or `rebuild mesh-controller` moves the record forward (novox/hq issue 201)
novox/one merged into main (c1); group feat/a has a member still to merge: novox/elsewhere (ready), it waits for the window in a batch of its own, it joins plan-1792006526000000000 — assembling: 90 s left (at the latest 19:45:26) — group feat/a has a member still to merge: novox/elsewhere (ready); grouped: novox/one@c1; plan not yet calculated
novox/two merged into main (c2); group feat/b has a member still to merge: novox/elsewhere (ready), it waits for the window in a batch of its own, it joins plan-1792006531000000000 — assembling: 90 s left (at the latest 19:45:31) — group feat/b has a member still to merge: novox/elsewhere (ready); grouped: novox/two@c2; plan not yet calculated
novox/one merged into main (c3); related to plan-1792006526000000000 (both change novox/one), and to plan-1792006531000000000 (both are members of group feat/b), folded into it, it joins plan-1792006526000000000 — assembling: 90 s left (at the latest 19:45:26) — group feat/a has a member still to merge: novox/elsewhere (ready); grouped: novox/one@c3 (answers c1), novox/two@c2; plan not yet calculated
  one: read whole: no build source recorded, so every file of its repository is its build source
  two: read whole: no build source recorded, so every file of its repository is its build source
plan-1792006526000000000 cut: novox/one c3, novox/two c2, answering novox/one@c1, novox/one@c3, novox/two@c2; 2 module(s) in 1 tier(s)
  0: one, two
  tier 0:   tier 0: mesh-cli (no call): operator on laptop asked "node", as an ordinary call
mesh-cli (no call): operator on laptop asked "node", as an ordinary call
mesh-cli (no call): operator on laptop asked "token", as an ordinary call
mesh-cli (no call): operator on laptop asked "secret", as an ordinary call
mesh-cli (no call): operator on laptop asked "operator", as an ordinary call
mesh-cli (no call): operator on laptop asked "assign", as an ordinary call
novox/mesh-catalog merged into main (3da80a4b); it shares nothing with a batch assembling and no member of a group is still to merge: it is cut at once, it joins plan-1792006671530508586 — cut at once, sharing nothing with a batch assembling; grouped: novox/mesh-catalog@3da80a4b; plan not yet calculated
  modules/sensors is a new module in novox/mesh-catalog and could not be built: cannot submit a build: nats: timeout — a hand `build` of it asks again
novox/mesh-catalog merged into main (3da80a4b); it changed nothing any module the mesh holds is built from
plan-1792006671530508586 (novox/mesh-catalog 3da80a4b): its merges move nothing the mesh holds
plan-457: c settled from the build records as built (build-c)
settings-1792006692283014995: the settings of notes on laptop — approved (ask s9): sent to laptop, one machine at a time, each judged
settings-1792006692332153627: the settings of notes on laptop — approved (ask s10): sent to laptop, one machine at a time, each judged
settings-1792006692341170309: the settings of notes on laptop — approved (ask s12): sent to laptop, one machine at a time, each judged
build-1792003095128388751: mailu is new to the catalogue, and novox/mesh-catalog on the git seat is no repository the catalogue builds a module from — registered, as asked at the controller's terminal
build-1792003095128388751: the build seat did not say whether c74f407a is on its repository's trunk (it predates ADR 0238); registered as before
build-1792003096128388751: the build seat did not say whether c1111111 is on its repository's trunk (it predates ADR 0238); registered as before
build-1792003155128388751: the build seat did not say whether 1ab84e69 is on its repository's trunk (it predates ADR 0238); registered as before
  tier 0: plan-retry: tier 0 done; asking tier 1: b
  tier 1: build-1792006702936155049:  could not build https://forge.example/novox/w1.git:
cancelled by hand
build-1792006702937155049:  could not build https://forge.example/novox/w2.git:
cancelled by hand
build-1792006702935155049:  could not build https://forge.example/novox/dead.git:
cancelled by hand
plan-tier: tier 0 built; sent 2 module(s) to anchor first in one send (m01, m02), the rest once its gate passes
plan-tier: tier 0 built; sent m01, m02 to laptop, one send each
plan-tier: done — novox/mesh-catalog at c2, 1 tier(s)
release-1792006709477900840: 2 build(s) wait for a gate on anchor, desk, laptop; one machine first, then the rest at once, each judged
release-1792006709477900840: sent anchor 1 build(s) that waited for a gate; judging them there
release-1792006709477900840: passed on anchor; the rest are sent at once, each judged
release-1792006709477900840: sent desk 1 build(s) that waited for a gate; judging them there
release-1792006709477900840: sent laptop 2 build(s) that waited for a gate; judging them there
release-1792006709477900840: released on anchor, desk, laptop
release-1792006710623352633: 2 build(s) wait for a gate on desk, laptop, anchor; one machine first, then the rest at once, each judged
release-1792006710623352633: sent desk 1 build(s) that waited for a gate; judging them there
release-1792006710623352633: passed on desk; the rest are sent at once, each judged
release-1792006710623352633: sent laptop 2 build(s) that waited for a gate; judging them there
release-1792006710623352633: sent anchor 1 build(s) that waited for a gate; judging them there
release-1792006710623352633: released on desk, laptop, anchor
novox/one merged into main (one1aaaa); it shares nothing with a batch assembling and no member of a group is still to merge: it is cut at once, it joins plan-1792006527000000000 — cut at once, sharing nothing with a batch assembling; grouped: novox/one@one1aaaa; plan not yet calculated
  one: its build source changed: 1 changed file(s) in it, e.g. main.go
plan-1792006527000000000 cut: novox/one one1aaaa, answering novox/one@one1aaaa; 1 module(s) in 1 tier(s)
  0: one
  tier 0: 
--- FAIL: TestAWalkWhoseEveryBuildCameOutTheSameIsDone (0.60s)
    same_program_test.go:129: the walk reads building, tiers [[one]], modules map[one:0xc000542300]; want done with nothing to walk
settings-1792006715066175288: the settings of app on the whole mesh — approved (ask s2): sent to anchor, laptop, one machine at a time, each judged
settings-1792006715066175288: sent anchor the settings of app on the whole mesh (ask s2), every build there kept; judging app there
settings-1792006715066175288: the settings of app on the whole mesh failed its gate on anchor: anchor failed what it was sent — the layer stays as the operator approved it, and the one it replaced is in `settings app` history; not sent: laptop
release-1792006715438888821: 1 build(s) wait for a gate on anchor, laptop; one machine first, then the rest at once, each judged
status could not be composed (after 0s): the store did not answer — `status` answers the last summary, with its age
notes on laptop:
  + places.data.owner
  + places.data.path
  + x
  run `plan laptop --diff` to see what it changes, `push laptop` to send it
notes on laptop:
  ~ x
  the layer it replaced is kept: settings show notes --node laptop --history
  run `plan laptop --diff` to see what it changes, `push laptop` to send it
{
  "places": {
    "data": {
      "owner": "1001:1001",
      "path": "/srv/notes"
    }
  },
  "x": 1
}
  set by an unnamed account at a shell on novox-be through settings at 2026-10-14 19:38
plan-tier: tier 0 built; sent 3 module(s) to anchor first in one send (app1, app2, app3), the rest once its gate passes
app1's build c2 failed its gate on anchor and was put back to c1: not healthy within -1s of its apply: anchor as a whole: raised since it was sent: machine.anchor.disk-full — anchor's root file system is full
app2's build c2 failed its gate on anchor and was put back to c1: not healthy within -1s of its apply: anchor as a whole: raised since it was sent: machine.anchor.disk-full — anchor's root file system is full
app3's build c2 failed its gate on anchor and was put back to c1: not healthy within -1s of its apply: anchor as a whole: raised since it was sent: machine.anchor.disk-full — anchor's root file system is full
plan-tier: app1 failed its gate on anchor in tier 0: not healthy within -1s of its apply: anchor as a whole: raised since it was sent: machine.anchor.disk-full — anchor's root file system is full; app2 failed its gate on anchor in tier 0: not healthy within -1s of its apply: anchor as a whole: raised since it was sent: machine.anchor.disk-full — anchor's root file system is full; app3 failed its gate on anchor in tier 0: not healthy within -1s of its apply: anchor as a whole: raised since it was sent: machine.anchor.disk-full — anchor's root file system is full; put back app1 to c1, app2 to c1, app3 to c1 on anchor, in one send; none reported left as it was
this act by hand could NOT be recorded in the hand-act log, and is done anyway: the hand-act log mesh-controller_hand-acts is not on the bus — the controller asserts it at its start, so one older than this has not: nats: bucket not found
release-1792006727083420508: 2 build(s) wait for a gate on anchor, laptop; one machine first, then the rest at once, each judged
release-1792006727083420508 releases it; `plans release-1792006727083420508` says where it is
FAIL
FAIL	github.com/novox/mesh-controller/cmd/mesh-controller	210s	(shard 8 of 8: 115 tests)
ok  	github.com/novox/mesh-controller/internal/inventory	97s	(shard 1 of 4: 68 tests)
ok  	github.com/novox/mesh-controller/internal/inventory	97s	(shard 2 of 4: 68 tests)
ok  	github.com/novox/mesh-controller/internal/inventory	98s	(shard 3 of 4: 68 tests)
ok  	github.com/novox/mesh-controller/internal/inventory	96s	(shard 4 of 4: 67 tests)
ok  	github.com/novox/mesh-controller/internal/builder	190s	(shard 1 of 4: 52 tests)
ok  	github.com/novox/mesh-controller/internal/builder	74s	(shard 2 of 4: 51 tests)
ok  	github.com/novox/mesh-controller/internal/builder	114s	(shard 3 of 4: 51 tests)
ok  	github.com/novox/mesh-controller/internal/builder	87s	(shard 4 of 4: 51 tests)
ok  	github.com/novox/mesh-controller/internal/link	30s	(shard 1 of 4: 44 tests)
ok  	github.com/novox/mesh-controller/internal/link	32s	(shard 2 of 4: 44 tests)
ok  	github.com/novox/mesh-controller/internal/link	31s	(shard 3 of 4: 44 tests)
ok  	github.com/novox/mesh-controller/internal/link	30s	(shard 4 of 4: 43 tests)
store tests, each run against the store:
  ./cmd/mesh-controller --- PASS: TestAStopWithoutAMergeWalksTheOthersAgain (0.93s)
  ./cmd/mesh-controller --- PASS: TestAStopWithoutAMergeEndsTheMergesThatContainIt (8.41s)
  ./cmd/mesh-controller --- PASS: TestAStopWalksTheOthersAgainInTheOpenBatch (4.68s)
  ./cmd/mesh-controller --- PASS: TestAStopNamesWhatStaysOnTheMachinesAndWhatStillCarriesIt (3.82s)
  ./cmd/mesh-controller --- PASS: TestAStopWithoutAMergeLeavesItOutOfABatch (4.09s)
  ./cmd/mesh-controller --- PASS: TestSavingPlansAndMovingMergesIsOneAct (1.51s)
  ./cmd/mesh-controller --- PASS: TestAPlanFollowedFromTheStoreAnswersWhenItMoves (4.74s)
  ./cmd/mesh-controller --- PASS: TestNodeShowAndStatusReadTheLastSendFromTheStore (2.52s)
  ./cmd/mesh-controller --- PASS: TestTheConditionsVerbReadsTheLooksTheBucketNoLongerHolds (0.82s)
  ./cmd/mesh-controller --- PASS: TestAWalkLetGoAndStoppedByVerbsIsSaidStartedAndEnded (1.55s)
  ./cmd/mesh-controller --- PASS: TestAWalkStoppedOrClosedByAPersonIsSaidEndedStopped (1.46s)
  ./cmd/mesh-controller --- PASS: TestAWalkRetriedByAPersonIsSaidStartedAgain (2.67s)
  ./cmd/mesh-controller --- PASS: TestABacklogReleasedByAPersonIsSaidStarted (0.86s)
  ./cmd/mesh-controller --- PASS: TestAWalkEndedByCancelOrClearIsSaidEnded (5.95s)
  ./cmd/mesh-controller --- PASS: TestAWalkRestartedByARebuildIsSaidStarted (1.38s)
  ./cmd/mesh-controller --- PASS: TestAWalkStoppedByHandAndRetriedEndsFailedWhenItFailsAgain (1.38s)
  ./cmd/mesh-controller --- PASS: TestReplay237 (0.68s)
  ./cmd/mesh-controller --- PASS: TestAnUnassignThatLeavesItsNodeUnresolvedSaysSoOnceInItsAnswer (4.88s)
  ./cmd/mesh-controller --- PASS: TestAnUnassignThatLeavesItsNodeResolvedSaysNothingOfIt (2.26s)
  ./cmd/mesh-controller --- PASS: TestAnAssignThatLeavesItsNodeUnresolvedSaysOnlyThePlansRefusal (8.30s)
  ./cmd/mesh-controller --- PASS: TestADirectoryOwnersKeyIsRefusedThroughAVerb (4.81s)
  ./cmd/mesh-controller --- PASS: TestTheSendMakesNoValueForAnOutsideSecretNobodyGave (4.69s)
  ./cmd/mesh-controller --- PASS: TestAQuestionComposesWithoutAnOutsideSecretNobodyGave (6.01s)
  ./cmd/mesh-controller --- PASS: TestReplay201 (2.09s)
  ./cmd/mesh-controller --- PASS: TestARollbackWhoseSendWasRefusedIsCompletedByTheNextSend (3.89s)
  ./cmd/mesh-controller --- PASS: TestAGateJudgesTheOtherMovesBesideAKeptCore (1.14s)
  ./cmd/mesh-controller --- PASS: TestReplay401 (3.01s)
  ./cmd/mesh-controller --- PASS: TestReplay201ThePlansSend (1.03s)
  ./cmd/mesh-controller --- PASS: TestPlanAndNodeListAnOptionalRequirementLeftUnbound (2.15s)
  ./cmd/mesh-controller --- PASS: TestReplay340 (3.65s)
  ./cmd/mesh-controller --- PASS: TestOnlyATrustedFilesNamedKeyIsRefusedThroughAVerb (1.68s)
  ./cmd/mesh-controller --- PASS: TestReplay349 (1.55s)
  ./cmd/mesh-controller --- PASS: TestReplay348AFaultFromBeforeTheSendFailsNoGate (1.67s)
  ./cmd/mesh-controller --- PASS: TestReplay239AModuleNameIsNotTakenOverByAnotherRepository (4.12s)
  ./cmd/mesh-controller --- PASS: TestAWalkThatMovedNothingSaysWhichModulesMatchedWhatRuns (1.39s)
  ./cmd/mesh-controller --- FAIL: TestAWalkWhoseEveryBuildCameOutTheSameIsDone (1.30s)
  ./cmd/mesh-controller --- PASS: TestReplay614ANewSDKPlansTheToolchainAndThenItsBundles (0.83s)
  ./cmd/mesh-controller --- PASS: TestOneAcceptForAProviderIsPlacedForEveryConsumer (5.95s)
  ./cmd/mesh-controller --- PASS: TestReplay164 (1.50s)
  ./cmd/mesh-controller --- PASS: TestAnApprovedLayerOpensTheWalkThatSendsIt (1.90s)
  ./cmd/mesh-controller --- PASS: TestASettingsWalkSendsOneMachineAtATimeEachJudged (5.96s)
  ./cmd/mesh-controller --- PASS: TestAFailedSettingsWalkStopsAndHoldsNothingBack (3.08s)
  ./cmd/mesh-controller --- PASS: TestASettingsWalkSendsTheLayerAloneEveryBuildKept (2.92s)
  ./cmd/mesh-controller --- PASS: TestASettingsWalkStopsBeforeADataMoveAndPassesOverAMachineAway (20.28s)
  ./cmd/mesh-controller --- PASS: TestACrossingSendSupersedesASettingsGate (7.32s)
  ./cmd/mesh-controller --- PASS: TestASettingsWalkFailsOnARefusalThatCannotClear (13.95s)
  ./cmd/mesh-controller --- PASS: TestAProviderElsewhereServesItsOwnComposedName (1.87s)
  ./cmd/mesh-controller --- PASS: TestAReusedCheckBuildIsRegisteredByItsDigestAndGatedAsABuiltOne (0.91s)
  ./cmd/mesh-controller --- PASS: TestAReleaseSendsTheRestAtOnceAfterTheFirstPasses (1.96s)
  ./cmd/mesh-controller --- PASS: TestARestMachineThatFailsIsPutBackAloneAndTheOthersAreJudgedOn (1.81s)
  ./cmd/mesh-controller --- PASS: TestAWalkTakesOverTheReadingsOfAGateJudgingTheSameBuildThere (1.01s)
  ./cmd/mesh-controller --- PASS: TestAFirstSendMadeAndNotKeptIsNotSentAgain (1.42s)
  ./cmd/mesh-controller --- PASS: TestAReleaseSendKeptAndMadeIsNotMadeAgain (1.64s)
  ./cmd/mesh-controller --- PASS: TestAFirstMachineThatFailsStillStopsTheWalk (1.63s)
  ./cmd/mesh-controller --- PASS: TestTheControlNodeIsSentLastInAStep (1.99s)
  ./cmd/mesh-controller --- PASS: TestARestMachineSilentPastItsBoundIsLeftAndSaid (1.68s)
  ./cmd/mesh-controller --- PASS: TestANoMoveTierWaitsForNoNewReport (1.05s)
  ./cmd/mesh-controller --- PASS: TestOneProviderDownAndThreeConsumersFailingAreOneCondition (1.76s)
  ./cmd/mesh-controller --- PASS: TestAConsumerFailingBesideAHealthyProviderIsItsOwn (1.86s)
  ./cmd/mesh-controller FAIL: go test exited 1
  ./internal/inventory --- PASS: TestTheLastSendSaysWhatTheMachineAnswered (0.30s)
  ./internal/inventory --- PASS: TestAReportIsTheLastSendsAnswerOnlyWhenItIsAboutThatSend (0.35s)
  ./internal/inventory --- PASS: TestAnIssuedValueIsSealedToEveryHolderOnceAndNotAgain (1.02s)
  ./internal/inventory --- PASS: TestAnIssuedValueIsSealedAgainAfterAKeyChangeOrAnAcceptance (0.28s)
  ./internal/inventory --- PASS: TestAConditionsLooksAreKeptBesideTheBucket (0.14s)
  ./internal/inventory --- PASS: TestAPlanIdHoldingAQuoteIsReadAsAPlainId (0.19s)
  ./internal/inventory --- PASS: TestAWalksStartIsKeptAndARefusedSaveLeavesItUnsaid (0.20s)
  ./internal/inventory --- PASS: TestAWalksRestIsReadFromEachMachinesOwnSend (0.79s)
  ./internal/inventory --- PASS: TestAStoredBuildWithASilentMergeableFileIsStillReadAndComposed (0.24s)
  ./internal/inventory --- PASS: TestACredentialIssuedOutsideIsNeverMade (0.30s)
  ./internal/inventory --- PASS: TestOneAcceptForAProviderIsSealedToEveryConsumer (0.33s)
  ./internal/inventory --- PASS: TestASharedOwnSecretIssuedOutsideIsNeverMade (0.23s)
  ./internal/inventory --- PASS: TestAReportOfABusyContainerIsKeptAndReadBack (0.96s)
  ./internal/inventory --- PASS: TestWhatRunsIsTheRegisteredBuildNotANewerOnePutBack (0.26s)
2 store test(s) listed in testdata/store-tests did not run and pass against the store
--- what failed, picked from the whole of its output (the whole is in the build's log)
--- FAIL: TestAWalkWhoseEveryBuildCameOutTheSameIsDone (0.60s)
    same_program_test.go:129: the walk reads building, tiers [[one]], modules map[one:0xc000542300]; want done with nothing to walk
FAIL	github.com/novox/mesh-controller/cmd/mesh-controller	210s	(shard 8 of 8: 115 tests)
**Merge check** at `38c87a7e` Judged: head `38c87a7e4714` merged into trunk `c2ec0a601acb`; read beside it: mesh-catalog `482232e8c51c`, mesh-controller-main `c2ec0a601acb`, mesh-host `1a2677882380`, 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-controller) - `mesh/repo-check`: **FAIL** — its merge-check.sh failed: --- FAIL: TestAWalkWhoseEveryBuildCameOutTheSameIsDone (0.60s) **Delivery plan** — builds build-agent, mesh-controller → ace, g14, novox, shanks; no bus step - tier 0: mesh-controller - tier 1: build-agent - ace: receives build-agent - g14: receives build-agent - novox: receives mesh-controller, 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 - read by no module's build: cmd/mesh-controller/same_program_test.go, internal/builder/same_program_test.go, internal/inventory/registered_held_test.go, testdata/store-tests Run by the build seat on novox as `build-1792006228398870024` (`builds --log build-1792006228398870024`). ``` plan-1792006526000000000 waits for mesh-delivery's word before its first tier is asked novox/mesh-controller merged into main (k2); group pr/k2 has a member still to merge: novox/elsewhere (ready), it waits for the window in a batch of its own, it joins plan-1792006766000000000 — assembling: 90 s left (at the latest 19:49:26) — group pr/k2 has a member still to merge: novox/elsewhere (ready); grouped: novox/mesh-controller@k2 (on the controller's own path); plan not yet calculated mesh-controller: read whole: no build source recorded, so every file of its repository is its build source plan-1792006766000000000 cut: novox/mesh-controller k2, answering novox/mesh-controller@k2; 1 module(s) in 1 tier(s) 0: mesh-controller tier 0: tier 0: tier 0: build-sudo: sudo is new to the catalogue, and novox/mesh-catalog on the git seat is no repository the catalogue builds a module from — registered, as asked at the controller's terminal build-host: mesh-host is new to the catalogue, and novox/mesh-host on the git seat is no repository the catalogue builds a module from — registered, as asked at the controller's terminal b-1: unifi is new to the catalogue, and novox/mesh-catalog on the git seat is no repository the catalogue builds a module from — registered, as asked at the controller's terminal b-1: the build seat did not say whether 1111111a is on its repository's trunk (it predates ADR 0238); registered as before b-2: the build seat did not say whether 9c97a8a1 is on its repository's trunk (it predates ADR 0238); registered as before b-3: the build seat did not say whether deadbeef is on its repository's trunk (it predates ADR 0238); registered as before made the bus a certificate for [mesh-broker], valid until 2036-10-11T19:36:13Z /tmp/TestTheBusCertificateIsMadeOnce1065719370/001/tls.crt /tmp/TestTheBusCertificateIsMadeOnce1065719370/001/tls.key the bus already has a certificate at /tmp/TestTheBusCertificateIsMadeOnce1065719370/001/tls.crt, and it was left alone build-1: a dry run of ssh://forge/app.git on unreviewed, not taken in the forge cannot be asked about novox/mesh-catalog now (cannot ask gitea.gitea_api: nothing serves it); asking again in 1s, for at most 1m0s in all (novox/hq issue 486) the forge cannot be asked about novox/mesh-catalog now (cannot ask gitea.gitea_api: nothing serves it); asking again in 2s, for at most 1m0s in all (novox/hq issue 486) the forge answered about novox/mesh-catalog again, after 3s (novox/hq issue 486) plan-gate: tier 0 built; sent 1 module(s) to anchor first in one send (app), the rest once its gate passes plan-gate: app passed its gate on anchor (healthy 1 times over 0s, by a leaf module's rule: one reading (novox/hq ADR 0304)); the rest are sent plan-gate: tier 0 built; sent app to laptop, one send each plan-gate: done — novox/mesh-catalog at c2, 1 tier(s) KEPT: anchor was last sent mesh-controller c2bbbbbb, and the mesh holds the older c1aaaaaa (asked 2026-10-14T17:36:31Z, before 2026-10-14T19:35:31Z): a send there keeps c2bbbbbb; `push anchor` sends the older build, and a newer merge or `rebuild mesh-controller` moves the record forward (novox/hq issue 201) novox/one merged into main (c1); group feat/a has a member still to merge: novox/elsewhere (ready), it waits for the window in a batch of its own, it joins plan-1792006526000000000 — assembling: 90 s left (at the latest 19:45:26) — group feat/a has a member still to merge: novox/elsewhere (ready); grouped: novox/one@c1; plan not yet calculated novox/two merged into main (c2); group feat/b has a member still to merge: novox/elsewhere (ready), it waits for the window in a batch of its own, it joins plan-1792006531000000000 — assembling: 90 s left (at the latest 19:45:31) — group feat/b has a member still to merge: novox/elsewhere (ready); grouped: novox/two@c2; plan not yet calculated novox/one merged into main (c3); related to plan-1792006526000000000 (both change novox/one), and to plan-1792006531000000000 (both are members of group feat/b), folded into it, it joins plan-1792006526000000000 — assembling: 90 s left (at the latest 19:45:26) — group feat/a has a member still to merge: novox/elsewhere (ready); grouped: novox/one@c3 (answers c1), novox/two@c2; plan not yet calculated one: read whole: no build source recorded, so every file of its repository is its build source two: read whole: no build source recorded, so every file of its repository is its build source plan-1792006526000000000 cut: novox/one c3, novox/two c2, answering novox/one@c1, novox/one@c3, novox/two@c2; 2 module(s) in 1 tier(s) 0: one, two tier 0: tier 0: mesh-cli (no call): operator on laptop asked "node", as an ordinary call mesh-cli (no call): operator on laptop asked "node", as an ordinary call mesh-cli (no call): operator on laptop asked "token", as an ordinary call mesh-cli (no call): operator on laptop asked "secret", as an ordinary call mesh-cli (no call): operator on laptop asked "operator", as an ordinary call mesh-cli (no call): operator on laptop asked "assign", as an ordinary call novox/mesh-catalog merged into main (3da80a4b); it shares nothing with a batch assembling and no member of a group is still to merge: it is cut at once, it joins plan-1792006671530508586 — cut at once, sharing nothing with a batch assembling; grouped: novox/mesh-catalog@3da80a4b; plan not yet calculated modules/sensors is a new module in novox/mesh-catalog and could not be built: cannot submit a build: nats: timeout — a hand `build` of it asks again novox/mesh-catalog merged into main (3da80a4b); it changed nothing any module the mesh holds is built from plan-1792006671530508586 (novox/mesh-catalog 3da80a4b): its merges move nothing the mesh holds plan-457: c settled from the build records as built (build-c) settings-1792006692283014995: the settings of notes on laptop — approved (ask s9): sent to laptop, one machine at a time, each judged settings-1792006692332153627: the settings of notes on laptop — approved (ask s10): sent to laptop, one machine at a time, each judged settings-1792006692341170309: the settings of notes on laptop — approved (ask s12): sent to laptop, one machine at a time, each judged build-1792003095128388751: mailu is new to the catalogue, and novox/mesh-catalog on the git seat is no repository the catalogue builds a module from — registered, as asked at the controller's terminal build-1792003095128388751: the build seat did not say whether c74f407a is on its repository's trunk (it predates ADR 0238); registered as before build-1792003096128388751: the build seat did not say whether c1111111 is on its repository's trunk (it predates ADR 0238); registered as before build-1792003155128388751: the build seat did not say whether 1ab84e69 is on its repository's trunk (it predates ADR 0238); registered as before tier 0: plan-retry: tier 0 done; asking tier 1: b tier 1: build-1792006702936155049: could not build https://forge.example/novox/w1.git: cancelled by hand build-1792006702937155049: could not build https://forge.example/novox/w2.git: cancelled by hand build-1792006702935155049: could not build https://forge.example/novox/dead.git: cancelled by hand plan-tier: tier 0 built; sent 2 module(s) to anchor first in one send (m01, m02), the rest once its gate passes plan-tier: tier 0 built; sent m01, m02 to laptop, one send each plan-tier: done — novox/mesh-catalog at c2, 1 tier(s) release-1792006709477900840: 2 build(s) wait for a gate on anchor, desk, laptop; one machine first, then the rest at once, each judged release-1792006709477900840: sent anchor 1 build(s) that waited for a gate; judging them there release-1792006709477900840: passed on anchor; the rest are sent at once, each judged release-1792006709477900840: sent desk 1 build(s) that waited for a gate; judging them there release-1792006709477900840: sent laptop 2 build(s) that waited for a gate; judging them there release-1792006709477900840: released on anchor, desk, laptop release-1792006710623352633: 2 build(s) wait for a gate on desk, laptop, anchor; one machine first, then the rest at once, each judged release-1792006710623352633: sent desk 1 build(s) that waited for a gate; judging them there release-1792006710623352633: passed on desk; the rest are sent at once, each judged release-1792006710623352633: sent laptop 2 build(s) that waited for a gate; judging them there release-1792006710623352633: sent anchor 1 build(s) that waited for a gate; judging them there release-1792006710623352633: released on desk, laptop, anchor novox/one merged into main (one1aaaa); it shares nothing with a batch assembling and no member of a group is still to merge: it is cut at once, it joins plan-1792006527000000000 — cut at once, sharing nothing with a batch assembling; grouped: novox/one@one1aaaa; plan not yet calculated one: its build source changed: 1 changed file(s) in it, e.g. main.go plan-1792006527000000000 cut: novox/one one1aaaa, answering novox/one@one1aaaa; 1 module(s) in 1 tier(s) 0: one tier 0: --- FAIL: TestAWalkWhoseEveryBuildCameOutTheSameIsDone (0.60s) same_program_test.go:129: the walk reads building, tiers [[one]], modules map[one:0xc000542300]; want done with nothing to walk settings-1792006715066175288: the settings of app on the whole mesh — approved (ask s2): sent to anchor, laptop, one machine at a time, each judged settings-1792006715066175288: sent anchor the settings of app on the whole mesh (ask s2), every build there kept; judging app there settings-1792006715066175288: the settings of app on the whole mesh failed its gate on anchor: anchor failed what it was sent — the layer stays as the operator approved it, and the one it replaced is in `settings app` history; not sent: laptop release-1792006715438888821: 1 build(s) wait for a gate on anchor, laptop; one machine first, then the rest at once, each judged status could not be composed (after 0s): the store did not answer — `status` answers the last summary, with its age notes on laptop: + places.data.owner + places.data.path + x run `plan laptop --diff` to see what it changes, `push laptop` to send it notes on laptop: ~ x the layer it replaced is kept: settings show notes --node laptop --history run `plan laptop --diff` to see what it changes, `push laptop` to send it { "places": { "data": { "owner": "1001:1001", "path": "/srv/notes" } }, "x": 1 } set by an unnamed account at a shell on novox-be through settings at 2026-10-14 19:38 plan-tier: tier 0 built; sent 3 module(s) to anchor first in one send (app1, app2, app3), the rest once its gate passes app1's build c2 failed its gate on anchor and was put back to c1: not healthy within -1s of its apply: anchor as a whole: raised since it was sent: machine.anchor.disk-full — anchor's root file system is full app2's build c2 failed its gate on anchor and was put back to c1: not healthy within -1s of its apply: anchor as a whole: raised since it was sent: machine.anchor.disk-full — anchor's root file system is full app3's build c2 failed its gate on anchor and was put back to c1: not healthy within -1s of its apply: anchor as a whole: raised since it was sent: machine.anchor.disk-full — anchor's root file system is full plan-tier: app1 failed its gate on anchor in tier 0: not healthy within -1s of its apply: anchor as a whole: raised since it was sent: machine.anchor.disk-full — anchor's root file system is full; app2 failed its gate on anchor in tier 0: not healthy within -1s of its apply: anchor as a whole: raised since it was sent: machine.anchor.disk-full — anchor's root file system is full; app3 failed its gate on anchor in tier 0: not healthy within -1s of its apply: anchor as a whole: raised since it was sent: machine.anchor.disk-full — anchor's root file system is full; put back app1 to c1, app2 to c1, app3 to c1 on anchor, in one send; none reported left as it was this act by hand could NOT be recorded in the hand-act log, and is done anyway: the hand-act log mesh-controller_hand-acts is not on the bus — the controller asserts it at its start, so one older than this has not: nats: bucket not found release-1792006727083420508: 2 build(s) wait for a gate on anchor, laptop; one machine first, then the rest at once, each judged release-1792006727083420508 releases it; `plans release-1792006727083420508` says where it is FAIL FAIL github.com/novox/mesh-controller/cmd/mesh-controller 210s (shard 8 of 8: 115 tests) ok github.com/novox/mesh-controller/internal/inventory 97s (shard 1 of 4: 68 tests) ok github.com/novox/mesh-controller/internal/inventory 97s (shard 2 of 4: 68 tests) ok github.com/novox/mesh-controller/internal/inventory 98s (shard 3 of 4: 68 tests) ok github.com/novox/mesh-controller/internal/inventory 96s (shard 4 of 4: 67 tests) ok github.com/novox/mesh-controller/internal/builder 190s (shard 1 of 4: 52 tests) ok github.com/novox/mesh-controller/internal/builder 74s (shard 2 of 4: 51 tests) ok github.com/novox/mesh-controller/internal/builder 114s (shard 3 of 4: 51 tests) ok github.com/novox/mesh-controller/internal/builder 87s (shard 4 of 4: 51 tests) ok github.com/novox/mesh-controller/internal/link 30s (shard 1 of 4: 44 tests) ok github.com/novox/mesh-controller/internal/link 32s (shard 2 of 4: 44 tests) ok github.com/novox/mesh-controller/internal/link 31s (shard 3 of 4: 44 tests) ok github.com/novox/mesh-controller/internal/link 30s (shard 4 of 4: 43 tests) store tests, each run against the store: ./cmd/mesh-controller --- PASS: TestAStopWithoutAMergeWalksTheOthersAgain (0.93s) ./cmd/mesh-controller --- PASS: TestAStopWithoutAMergeEndsTheMergesThatContainIt (8.41s) ./cmd/mesh-controller --- PASS: TestAStopWalksTheOthersAgainInTheOpenBatch (4.68s) ./cmd/mesh-controller --- PASS: TestAStopNamesWhatStaysOnTheMachinesAndWhatStillCarriesIt (3.82s) ./cmd/mesh-controller --- PASS: TestAStopWithoutAMergeLeavesItOutOfABatch (4.09s) ./cmd/mesh-controller --- PASS: TestSavingPlansAndMovingMergesIsOneAct (1.51s) ./cmd/mesh-controller --- PASS: TestAPlanFollowedFromTheStoreAnswersWhenItMoves (4.74s) ./cmd/mesh-controller --- PASS: TestNodeShowAndStatusReadTheLastSendFromTheStore (2.52s) ./cmd/mesh-controller --- PASS: TestTheConditionsVerbReadsTheLooksTheBucketNoLongerHolds (0.82s) ./cmd/mesh-controller --- PASS: TestAWalkLetGoAndStoppedByVerbsIsSaidStartedAndEnded (1.55s) ./cmd/mesh-controller --- PASS: TestAWalkStoppedOrClosedByAPersonIsSaidEndedStopped (1.46s) ./cmd/mesh-controller --- PASS: TestAWalkRetriedByAPersonIsSaidStartedAgain (2.67s) ./cmd/mesh-controller --- PASS: TestABacklogReleasedByAPersonIsSaidStarted (0.86s) ./cmd/mesh-controller --- PASS: TestAWalkEndedByCancelOrClearIsSaidEnded (5.95s) ./cmd/mesh-controller --- PASS: TestAWalkRestartedByARebuildIsSaidStarted (1.38s) ./cmd/mesh-controller --- PASS: TestAWalkStoppedByHandAndRetriedEndsFailedWhenItFailsAgain (1.38s) ./cmd/mesh-controller --- PASS: TestReplay237 (0.68s) ./cmd/mesh-controller --- PASS: TestAnUnassignThatLeavesItsNodeUnresolvedSaysSoOnceInItsAnswer (4.88s) ./cmd/mesh-controller --- PASS: TestAnUnassignThatLeavesItsNodeResolvedSaysNothingOfIt (2.26s) ./cmd/mesh-controller --- PASS: TestAnAssignThatLeavesItsNodeUnresolvedSaysOnlyThePlansRefusal (8.30s) ./cmd/mesh-controller --- PASS: TestADirectoryOwnersKeyIsRefusedThroughAVerb (4.81s) ./cmd/mesh-controller --- PASS: TestTheSendMakesNoValueForAnOutsideSecretNobodyGave (4.69s) ./cmd/mesh-controller --- PASS: TestAQuestionComposesWithoutAnOutsideSecretNobodyGave (6.01s) ./cmd/mesh-controller --- PASS: TestReplay201 (2.09s) ./cmd/mesh-controller --- PASS: TestARollbackWhoseSendWasRefusedIsCompletedByTheNextSend (3.89s) ./cmd/mesh-controller --- PASS: TestAGateJudgesTheOtherMovesBesideAKeptCore (1.14s) ./cmd/mesh-controller --- PASS: TestReplay401 (3.01s) ./cmd/mesh-controller --- PASS: TestReplay201ThePlansSend (1.03s) ./cmd/mesh-controller --- PASS: TestPlanAndNodeListAnOptionalRequirementLeftUnbound (2.15s) ./cmd/mesh-controller --- PASS: TestReplay340 (3.65s) ./cmd/mesh-controller --- PASS: TestOnlyATrustedFilesNamedKeyIsRefusedThroughAVerb (1.68s) ./cmd/mesh-controller --- PASS: TestReplay349 (1.55s) ./cmd/mesh-controller --- PASS: TestReplay348AFaultFromBeforeTheSendFailsNoGate (1.67s) ./cmd/mesh-controller --- PASS: TestReplay239AModuleNameIsNotTakenOverByAnotherRepository (4.12s) ./cmd/mesh-controller --- PASS: TestAWalkThatMovedNothingSaysWhichModulesMatchedWhatRuns (1.39s) ./cmd/mesh-controller --- FAIL: TestAWalkWhoseEveryBuildCameOutTheSameIsDone (1.30s) ./cmd/mesh-controller --- PASS: TestReplay614ANewSDKPlansTheToolchainAndThenItsBundles (0.83s) ./cmd/mesh-controller --- PASS: TestOneAcceptForAProviderIsPlacedForEveryConsumer (5.95s) ./cmd/mesh-controller --- PASS: TestReplay164 (1.50s) ./cmd/mesh-controller --- PASS: TestAnApprovedLayerOpensTheWalkThatSendsIt (1.90s) ./cmd/mesh-controller --- PASS: TestASettingsWalkSendsOneMachineAtATimeEachJudged (5.96s) ./cmd/mesh-controller --- PASS: TestAFailedSettingsWalkStopsAndHoldsNothingBack (3.08s) ./cmd/mesh-controller --- PASS: TestASettingsWalkSendsTheLayerAloneEveryBuildKept (2.92s) ./cmd/mesh-controller --- PASS: TestASettingsWalkStopsBeforeADataMoveAndPassesOverAMachineAway (20.28s) ./cmd/mesh-controller --- PASS: TestACrossingSendSupersedesASettingsGate (7.32s) ./cmd/mesh-controller --- PASS: TestASettingsWalkFailsOnARefusalThatCannotClear (13.95s) ./cmd/mesh-controller --- PASS: TestAProviderElsewhereServesItsOwnComposedName (1.87s) ./cmd/mesh-controller --- PASS: TestAReusedCheckBuildIsRegisteredByItsDigestAndGatedAsABuiltOne (0.91s) ./cmd/mesh-controller --- PASS: TestAReleaseSendsTheRestAtOnceAfterTheFirstPasses (1.96s) ./cmd/mesh-controller --- PASS: TestARestMachineThatFailsIsPutBackAloneAndTheOthersAreJudgedOn (1.81s) ./cmd/mesh-controller --- PASS: TestAWalkTakesOverTheReadingsOfAGateJudgingTheSameBuildThere (1.01s) ./cmd/mesh-controller --- PASS: TestAFirstSendMadeAndNotKeptIsNotSentAgain (1.42s) ./cmd/mesh-controller --- PASS: TestAReleaseSendKeptAndMadeIsNotMadeAgain (1.64s) ./cmd/mesh-controller --- PASS: TestAFirstMachineThatFailsStillStopsTheWalk (1.63s) ./cmd/mesh-controller --- PASS: TestTheControlNodeIsSentLastInAStep (1.99s) ./cmd/mesh-controller --- PASS: TestARestMachineSilentPastItsBoundIsLeftAndSaid (1.68s) ./cmd/mesh-controller --- PASS: TestANoMoveTierWaitsForNoNewReport (1.05s) ./cmd/mesh-controller --- PASS: TestOneProviderDownAndThreeConsumersFailingAreOneCondition (1.76s) ./cmd/mesh-controller --- PASS: TestAConsumerFailingBesideAHealthyProviderIsItsOwn (1.86s) ./cmd/mesh-controller FAIL: go test exited 1 ./internal/inventory --- PASS: TestTheLastSendSaysWhatTheMachineAnswered (0.30s) ./internal/inventory --- PASS: TestAReportIsTheLastSendsAnswerOnlyWhenItIsAboutThatSend (0.35s) ./internal/inventory --- PASS: TestAnIssuedValueIsSealedToEveryHolderOnceAndNotAgain (1.02s) ./internal/inventory --- PASS: TestAnIssuedValueIsSealedAgainAfterAKeyChangeOrAnAcceptance (0.28s) ./internal/inventory --- PASS: TestAConditionsLooksAreKeptBesideTheBucket (0.14s) ./internal/inventory --- PASS: TestAPlanIdHoldingAQuoteIsReadAsAPlainId (0.19s) ./internal/inventory --- PASS: TestAWalksStartIsKeptAndARefusedSaveLeavesItUnsaid (0.20s) ./internal/inventory --- PASS: TestAWalksRestIsReadFromEachMachinesOwnSend (0.79s) ./internal/inventory --- PASS: TestAStoredBuildWithASilentMergeableFileIsStillReadAndComposed (0.24s) ./internal/inventory --- PASS: TestACredentialIssuedOutsideIsNeverMade (0.30s) ./internal/inventory --- PASS: TestOneAcceptForAProviderIsSealedToEveryConsumer (0.33s) ./internal/inventory --- PASS: TestASharedOwnSecretIssuedOutsideIsNeverMade (0.23s) ./internal/inventory --- PASS: TestAReportOfABusyContainerIsKeptAndReadBack (0.96s) ./internal/inventory --- PASS: TestWhatRunsIsTheRegisteredBuildNotANewerOnePutBack (0.26s) 2 store test(s) listed in testdata/store-tests did not run and pass against the store --- what failed, picked from the whole of its output (the whole is in the build's log) --- FAIL: TestAWalkWhoseEveryBuildCameOutTheSameIsDone (0.60s) same_program_test.go:129: the walk reads building, tiers [[one]], modules map[one:0xc000542300]; want done with nothing to walk FAIL github.com/novox/mesh-controller/cmd/mesh-controller 210s (shard 8 of 8: 115 tests) ```
jschoubben added 1 commit 2026-10-14 19:43:23 +00:00
Register the module a walk's store test compares with, as the mesh runs it (review of #336)
mesh/merge-gate head 480657d95b9b merged into trunk c2ec0a601acb — pass: builds build-agent, mesh-controller → ace, g14, novox, shanks; no bus step; every …
mesh/repo-check head 480657d95b9b merged into trunk c2ec0a601acb — fail: its merge-check.sh failed: --- FAIL: TestAWalkWhoseEveryBuildCameOutTheSameIsDone …
mesh/delivery-group group fix/a-module-moves-only-when-its-program-changes rejected: a member's own check failed
mesh/delivery superseded: a newer head of the same pull request
480657d95b
Author
Contributor

Merge check at 480657d9
Judged: head 480657d95b9b merged into trunk c2ec0a601acb; read beside it: mesh-catalog 7e3e62062bef, mesh-controller-main c2ec0a601acb, mesh-host 1a2677882380, 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-controller)
  • mesh/repo-check: FAIL — its merge-check.sh failed: --- FAIL: TestAWalkWhoseEveryBuildCameOutTheSameIsDone (0.87s)

Delivery plan — builds build-agent, mesh-controller → ace, g14, novox, shanks; no bus step

  • tier 0: mesh-controller
  • tier 1: build-agent
  • ace: receives build-agent
  • g14: receives build-agent
  • novox: receives mesh-controller, 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
  • read by no module's build: cmd/mesh-controller/same_program_test.go, internal/builder/same_program_test.go, internal/inventory/registered_held_test.go, testdata/store-tests

Run by the build seat on novox as build-1792007023596669464 (builds --log build-1792007023596669464).

  tier 0:   app: read whole: no build source recorded, so its directory is its build source; e.g. modules/app/module.json
  notes: read whole: no build source recorded, so its directory is its build source; e.g. modules/notes/module.json
plan-1792007288000000000 cut: novox/mesh-catalog bbbb0002, answering novox/mesh-catalog@aaaa0001, novox/mesh-catalog@bbbb0002; 2 module(s) in 1 tier(s)
  0: app, notes
  plan-1792007288000000000 waits for mesh-delivery's word before its first tier is asked
novox/mesh-controller merged into main (k2); group pr/k2 has a member still to merge: novox/elsewhere (ready), it waits for the window in a batch of its own, it joins plan-1792007528000000000 — assembling: 90 s left (at the latest 20:02:08) — group pr/k2 has a member still to merge: novox/elsewhere (ready); grouped: novox/mesh-controller@k2 (on the controller's own path); plan not yet calculated
  mesh-controller: read whole: no build source recorded, so every file of its repository is its build source
plan-1792007528000000000 cut: novox/mesh-controller k2, answering novox/mesh-controller@k2; 1 module(s) in 1 tier(s)
  0: mesh-controller
  tier 0:   tier 0:   tier 0: build-sudo: sudo is new to the catalogue, and novox/mesh-catalog on the git seat is no repository the catalogue builds a module from — registered, as asked at the controller's terminal
build-host: mesh-host is new to the catalogue, and novox/mesh-host on the git seat is no repository the catalogue builds a module from — registered, as asked at the controller's terminal
b-1: unifi is new to the catalogue, and novox/mesh-catalog on the git seat is no repository the catalogue builds a module from — registered, as asked at the controller's terminal
b-1: the build seat did not say whether 1111111a is on its repository's trunk (it predates ADR 0238); registered as before
b-2: the build seat did not say whether 9c97a8a1 is on its repository's trunk (it predates ADR 0238); registered as before
b-3: the build seat did not say whether deadbeef is on its repository's trunk (it predates ADR 0238); registered as before
made the bus a certificate for [mesh-broker], valid until 2036-10-11T19:49:01Z
  /tmp/TestTheBusCertificateIsMadeOnce3998696061/001/tls.crt
  /tmp/TestTheBusCertificateIsMadeOnce3998696061/001/tls.key
the bus already has a certificate at /tmp/TestTheBusCertificateIsMadeOnce3998696061/001/tls.crt, and it was left alone
build-1: a dry run of ssh://forge/app.git on unreviewed, not taken in
the forge cannot be asked about novox/mesh-catalog now (cannot ask gitea.gitea_api: nothing serves it); asking again in 1s, for at most 1m0s in all (novox/hq issue 486)
the forge cannot be asked about novox/mesh-catalog now (cannot ask gitea.gitea_api: nothing serves it); asking again in 2s, for at most 1m0s in all (novox/hq issue 486)
the forge answered about novox/mesh-catalog again, after 3s (novox/hq issue 486)
plan-gate: tier 0 built; sent 1 module(s) to anchor first in one send (app), the rest once its gate passes
plan-gate: app passed its gate on anchor (healthy 1 times over 0s, by a leaf module's rule: one reading (novox/hq ADR 0304)); the rest are sent
plan-gate: tier 0 built; sent app to laptop, one send each
plan-gate: done — novox/mesh-catalog at c2, 1 tier(s)
KEPT: anchor was last sent mesh-controller c2bbbbbb, and the mesh holds the older c1aaaaaa (asked 2026-10-14T17:49:37Z, before 2026-10-14T19:48:37Z): a send there keeps c2bbbbbb; `push anchor` sends the older build, and a newer merge or `rebuild mesh-controller` moves the record forward (novox/hq issue 201)
novox/one merged into main (c1); group feat/a has a member still to merge: novox/elsewhere (ready), it waits for the window in a batch of its own, it joins plan-1792007288000000000 — assembling: 90 s left (at the latest 19:58:08) — group feat/a has a member still to merge: novox/elsewhere (ready); grouped: novox/one@c1; plan not yet calculated
novox/two merged into main (c2); group feat/b has a member still to merge: novox/elsewhere (ready), it waits for the window in a batch of its own, it joins plan-1792007293000000000 — assembling: 90 s left (at the latest 19:58:13) — group feat/b has a member still to merge: novox/elsewhere (ready); grouped: novox/two@c2; plan not yet calculated
novox/one merged into main (c3); related to plan-1792007288000000000 (both change novox/one), and to plan-1792007293000000000 (both are members of group feat/b), folded into it, it joins plan-1792007288000000000 — assembling: 90 s left (at the latest 19:58:08) — group feat/a has a member still to merge: novox/elsewhere (ready); grouped: novox/one@c3 (answers c1), novox/two@c2; plan not yet calculated
  one: read whole: no build source recorded, so every file of its repository is its build source
  two: read whole: no build source recorded, so every file of its repository is its build source
plan-1792007288000000000 cut: novox/one c3, novox/two c2, answering novox/one@c1, novox/one@c3, novox/two@c2; 2 module(s) in 1 tier(s)
  0: one, two
  tier 0:   tier 0: mesh-cli (no call): operator on laptop asked "node", as an ordinary call
mesh-cli (no call): operator on laptop asked "node", as an ordinary call
mesh-cli (no call): operator on laptop asked "token", as an ordinary call
mesh-cli (no call): operator on laptop asked "secret", as an ordinary call
mesh-cli (no call): operator on laptop asked "operator", as an ordinary call
mesh-cli (no call): operator on laptop asked "assign", as an ordinary call
novox/mesh-catalog merged into main (3da80a4b); it shares nothing with a batch assembling and no member of a group is still to merge: it is cut at once, it joins plan-1792007432315327416 — cut at once, sharing nothing with a batch assembling; grouped: novox/mesh-catalog@3da80a4b; plan not yet calculated
  modules/sensors is a new module in novox/mesh-catalog and could not be built: cannot submit a build: nats: timeout — a hand `build` of it asks again
novox/mesh-catalog merged into main (3da80a4b); it changed nothing any module the mesh holds is built from
plan-1792007432315327416 (novox/mesh-catalog 3da80a4b): its merges move nothing the mesh holds
plan-457: c settled from the build records as built (build-c)
settings-1792007453109224608: the settings of notes on laptop — approved (ask s9): sent to laptop, one machine at a time, each judged
settings-1792007453227714491: the settings of notes on laptop — approved (ask s10): sent to laptop, one machine at a time, each judged
settings-1792007453235774517: the settings of notes on laptop — approved (ask s12): sent to laptop, one machine at a time, each judged
build-1792003854237194348: mailu is new to the catalogue, and novox/mesh-catalog on the git seat is no repository the catalogue builds a module from — registered, as asked at the controller's terminal
build-1792003854237194348: the build seat did not say whether c74f407a is on its repository's trunk (it predates ADR 0238); registered as before
build-1792003855237194348: the build seat did not say whether c1111111 is on its repository's trunk (it predates ADR 0238); registered as before
build-1792003914237194348: the build seat did not say whether 1ab84e69 is on its repository's trunk (it predates ADR 0238); registered as before
  tier 0: plan-retry: tier 0 done; asking tier 1: b
  tier 1: build-1792007457094506344:  could not build https://forge.example/novox/w1.git:
cancelled by hand
build-1792007457095506344:  could not build https://forge.example/novox/w2.git:
cancelled by hand
build-1792007457093506344:  could not build https://forge.example/novox/dead.git:
cancelled by hand
plan-tier: tier 0 built; sent 2 module(s) to anchor first in one send (m01, m02), the rest once its gate passes
plan-tier: tier 0 built; sent m01, m02 to laptop, one send each
plan-tier: done — novox/mesh-catalog at c2, 1 tier(s)
release-1792007469101564344: 2 build(s) wait for a gate on anchor, desk, laptop; one machine first, then the rest at once, each judged
release-1792007469101564344: sent anchor 1 build(s) that waited for a gate; judging them there
release-1792007469101564344: passed on anchor; the rest are sent at once, each judged
release-1792007469101564344: sent desk 1 build(s) that waited for a gate; judging them there
release-1792007469101564344: sent laptop 2 build(s) that waited for a gate; judging them there
release-1792007469101564344: released on anchor, desk, laptop
release-1792007471094009705: 2 build(s) wait for a gate on desk, laptop, anchor; one machine first, then the rest at once, each judged
release-1792007471094009705: sent desk 1 build(s) that waited for a gate; judging them there
release-1792007471094009705: passed on desk; the rest are sent at once, each judged
release-1792007471094009705: sent laptop 2 build(s) that waited for a gate; judging them there
release-1792007471094009705: sent anchor 1 build(s) that waited for a gate; judging them there
release-1792007471094009705: released on desk, laptop, anchor

--- FAIL: TestAWalkWhoseEveryBuildCameOutTheSameIsDone (0.87s)
    same_program_test.go:115: a build asked later is already what the module is: one is at a build asked 2026-10-14T19:51:12Z, and this one was asked 2026-10-14T18:48:08Z
settings-1792007474789745075: the settings of app on the whole mesh — approved (ask s2): sent to anchor, laptop, one machine at a time, each judged
settings-1792007474789745075: sent anchor the settings of app on the whole mesh (ask s2), every build there kept; judging app there
settings-1792007474789745075: the settings of app on the whole mesh failed its gate on anchor: anchor failed what it was sent — the layer stays as the operator approved it, and the one it replaced is in `settings app` history; not sent: laptop
release-1792007474932407657: 1 build(s) wait for a gate on anchor, laptop; one machine first, then the rest at once, each judged
status could not be composed (after 0s): the store did not answer — `status` answers the last summary, with its age
notes on laptop:
  + places.data.owner
  + places.data.path
  + x
  run `plan laptop --diff` to see what it changes, `push laptop` to send it
notes on laptop:
  ~ x
  the layer it replaced is kept: settings show notes --node laptop --history
  run `plan laptop --diff` to see what it changes, `push laptop` to send it
{
  "places": {
    "data": {
      "owner": "1001:1001",
      "path": "/srv/notes"
    }
  },
  "x": 1
}
  set by an unnamed account at a shell on novox-be through settings at 2026-10-14 19:51
plan-tier: tier 0 built; sent 3 module(s) to anchor first in one send (app1, app2, app3), the rest once its gate passes
app1's build c2 failed its gate on anchor and was put back to c1: not healthy within -1s of its apply: anchor as a whole: raised since it was sent: machine.anchor.disk-full — anchor's root file system is full
app2's build c2 failed its gate on anchor and was put back to c1: not healthy within -1s of its apply: anchor as a whole: raised since it was sent: machine.anchor.disk-full — anchor's root file system is full
app3's build c2 failed its gate on anchor and was put back to c1: not healthy within -1s of its apply: anchor as a whole: raised since it was sent: machine.anchor.disk-full — anchor's root file system is full
plan-tier: app1 failed its gate on anchor in tier 0: not healthy within -1s of its apply: anchor as a whole: raised since it was sent: machine.anchor.disk-full — anchor's root file system is full; app2 failed its gate on anchor in tier 0: not healthy within -1s of its apply: anchor as a whole: raised since it was sent: machine.anchor.disk-full — anchor's root file system is full; app3 failed its gate on anchor in tier 0: not healthy within -1s of its apply: anchor as a whole: raised since it was sent: machine.anchor.disk-full — anchor's root file system is full; put back app1 to c1, app2 to c1, app3 to c1 on anchor, in one send; none reported left as it was
this act by hand could NOT be recorded in the hand-act log, and is done anyway: the hand-act log mesh-controller_hand-acts is not on the bus — the controller asserts it at its start, so one older than this has not: nats: bucket not found
release-1792007477754071769: 2 build(s) wait for a gate on anchor, laptop; one machine first, then the rest at once, each judged
release-1792007477754071769 releases it; `plans release-1792007477754071769` says where it is
FAIL
FAIL	github.com/novox/mesh-controller/cmd/mesh-controller	189s	(shard 8 of 8: 115 tests)
ok  	github.com/novox/mesh-controller/internal/inventory	127s	(shard 1 of 4: 68 tests)
ok  	github.com/novox/mesh-controller/internal/inventory	128s	(shard 2 of 4: 68 tests)
ok  	github.com/novox/mesh-controller/internal/inventory	127s	(shard 3 of 4: 68 tests)
ok  	github.com/novox/mesh-controller/internal/inventory	119s	(shard 4 of 4: 67 tests)
ok  	github.com/novox/mesh-controller/internal/builder	192s	(shard 1 of 4: 52 tests)
ok  	github.com/novox/mesh-controller/internal/builder	123s	(shard 2 of 4: 51 tests)
ok  	github.com/novox/mesh-controller/internal/builder	198s	(shard 3 of 4: 51 tests)
ok  	github.com/novox/mesh-controller/internal/builder	155s	(shard 4 of 4: 51 tests)
ok  	github.com/novox/mesh-controller/internal/link	30s	(shard 1 of 4: 44 tests)
ok  	github.com/novox/mesh-controller/internal/link	37s	(shard 2 of 4: 44 tests)
ok  	github.com/novox/mesh-controller/internal/link	30s	(shard 3 of 4: 44 tests)
ok  	github.com/novox/mesh-controller/internal/link	30s	(shard 4 of 4: 43 tests)
store tests, each run against the store:
  ./cmd/mesh-controller --- PASS: TestAStopWithoutAMergeWalksTheOthersAgain (3.15s)
  ./cmd/mesh-controller --- PASS: TestAStopWithoutAMergeEndsTheMergesThatContainIt (1.22s)
  ./cmd/mesh-controller --- PASS: TestAStopWalksTheOthersAgainInTheOpenBatch (1.79s)
  ./cmd/mesh-controller --- PASS: TestAStopNamesWhatStaysOnTheMachinesAndWhatStillCarriesIt (2.47s)
  ./cmd/mesh-controller --- PASS: TestAStopWithoutAMergeLeavesItOutOfABatch (3.89s)
  ./cmd/mesh-controller --- PASS: TestSavingPlansAndMovingMergesIsOneAct (5.97s)
  ./cmd/mesh-controller --- PASS: TestAPlanFollowedFromTheStoreAnswersWhenItMoves (3.57s)
  ./cmd/mesh-controller --- PASS: TestNodeShowAndStatusReadTheLastSendFromTheStore (1.88s)
  ./cmd/mesh-controller --- PASS: TestTheConditionsVerbReadsTheLooksTheBucketNoLongerHolds (2.74s)
  ./cmd/mesh-controller --- PASS: TestAWalkLetGoAndStoppedByVerbsIsSaidStartedAndEnded (1.88s)
  ./cmd/mesh-controller --- PASS: TestAWalkStoppedOrClosedByAPersonIsSaidEndedStopped (1.40s)
  ./cmd/mesh-controller --- PASS: TestAWalkRetriedByAPersonIsSaidStartedAgain (0.71s)
  ./cmd/mesh-controller --- PASS: TestABacklogReleasedByAPersonIsSaidStarted (0.78s)
  ./cmd/mesh-controller --- PASS: TestAWalkEndedByCancelOrClearIsSaidEnded (1.10s)
  ./cmd/mesh-controller --- PASS: TestAWalkRestartedByARebuildIsSaidStarted (0.76s)
  ./cmd/mesh-controller --- PASS: TestAWalkStoppedByHandAndRetriedEndsFailedWhenItFailsAgain (0.89s)
  ./cmd/mesh-controller --- PASS: TestReplay237 (5.38s)
  ./cmd/mesh-controller --- PASS: TestAnUnassignThatLeavesItsNodeUnresolvedSaysSoOnceInItsAnswer (1.55s)
  ./cmd/mesh-controller --- PASS: TestAnUnassignThatLeavesItsNodeResolvedSaysNothingOfIt (1.48s)
  ./cmd/mesh-controller --- PASS: TestAnAssignThatLeavesItsNodeUnresolvedSaysOnlyThePlansRefusal (1.30s)
  ./cmd/mesh-controller --- PASS: TestADirectoryOwnersKeyIsRefusedThroughAVerb (6.93s)
  ./cmd/mesh-controller --- PASS: TestTheSendMakesNoValueForAnOutsideSecretNobodyGave (4.16s)
  ./cmd/mesh-controller --- PASS: TestAQuestionComposesWithoutAnOutsideSecretNobodyGave (2.89s)
  ./cmd/mesh-controller --- PASS: TestReplay201 (1.19s)
  ./cmd/mesh-controller --- PASS: TestARollbackWhoseSendWasRefusedIsCompletedByTheNextSend (1.19s)
  ./cmd/mesh-controller --- PASS: TestAGateJudgesTheOtherMovesBesideAKeptCore (2.49s)
  ./cmd/mesh-controller --- PASS: TestReplay401 (2.35s)
  ./cmd/mesh-controller --- PASS: TestReplay201ThePlansSend (5.66s)
  ./cmd/mesh-controller --- PASS: TestPlanAndNodeListAnOptionalRequirementLeftUnbound (5.57s)
  ./cmd/mesh-controller --- PASS: TestReplay340 (3.92s)
  ./cmd/mesh-controller --- PASS: TestOnlyATrustedFilesNamedKeyIsRefusedThroughAVerb (6.35s)
  ./cmd/mesh-controller --- PASS: TestReplay349 (7.31s)
  ./cmd/mesh-controller --- PASS: TestReplay348AFaultFromBeforeTheSendFailsNoGate (2.77s)
  ./cmd/mesh-controller --- PASS: TestReplay239AModuleNameIsNotTakenOverByAnotherRepository (5.29s)
  ./cmd/mesh-controller --- PASS: TestAWalkThatMovedNothingSaysWhichModulesMatchedWhatRuns (3.04s)
  ./cmd/mesh-controller --- FAIL: TestAWalkWhoseEveryBuildCameOutTheSameIsDone (1.25s)
  ./cmd/mesh-controller --- PASS: TestReplay614ANewSDKPlansTheToolchainAndThenItsBundles (0.54s)
  ./cmd/mesh-controller --- PASS: TestOneAcceptForAProviderIsPlacedForEveryConsumer (7.50s)
  ./cmd/mesh-controller --- PASS: TestReplay164 (8.50s)
  ./cmd/mesh-controller --- PASS: TestAnApprovedLayerOpensTheWalkThatSendsIt (1.19s)
  ./cmd/mesh-controller --- PASS: TestASettingsWalkSendsOneMachineAtATimeEachJudged (3.63s)
  ./cmd/mesh-controller --- PASS: TestAFailedSettingsWalkStopsAndHoldsNothingBack (1.11s)
  ./cmd/mesh-controller --- PASS: TestASettingsWalkSendsTheLayerAloneEveryBuildKept (1.98s)
  ./cmd/mesh-controller --- PASS: TestASettingsWalkStopsBeforeADataMoveAndPassesOverAMachineAway (4.44s)
  ./cmd/mesh-controller --- PASS: TestACrossingSendSupersedesASettingsGate (0.99s)
  ./cmd/mesh-controller --- PASS: TestASettingsWalkFailsOnARefusalThatCannotClear (2.35s)
  ./cmd/mesh-controller --- PASS: TestAProviderElsewhereServesItsOwnComposedName (2.25s)
  ./cmd/mesh-controller --- PASS: TestAReusedCheckBuildIsRegisteredByItsDigestAndGatedAsABuiltOne (1.77s)
  ./cmd/mesh-controller --- PASS: TestAReleaseSendsTheRestAtOnceAfterTheFirstPasses (3.17s)
  ./cmd/mesh-controller --- PASS: TestARestMachineThatFailsIsPutBackAloneAndTheOthersAreJudgedOn (4.11s)
  ./cmd/mesh-controller --- PASS: TestAWalkTakesOverTheReadingsOfAGateJudgingTheSameBuildThere (2.11s)
  ./cmd/mesh-controller --- PASS: TestAFirstSendMadeAndNotKeptIsNotSentAgain (2.51s)
  ./cmd/mesh-controller --- PASS: TestAReleaseSendKeptAndMadeIsNotMadeAgain (2.24s)
  ./cmd/mesh-controller --- PASS: TestAFirstMachineThatFailsStillStopsTheWalk (1.61s)
  ./cmd/mesh-controller --- PASS: TestTheControlNodeIsSentLastInAStep (1.70s)
  ./cmd/mesh-controller --- PASS: TestARestMachineSilentPastItsBoundIsLeftAndSaid (1.32s)
  ./cmd/mesh-controller --- PASS: TestANoMoveTierWaitsForNoNewReport (1.41s)
  ./cmd/mesh-controller --- PASS: TestOneProviderDownAndThreeConsumersFailingAreOneCondition (11.04s)
  ./cmd/mesh-controller --- PASS: TestAConsumerFailingBesideAHealthyProviderIsItsOwn (10.57s)
  ./cmd/mesh-controller FAIL: go test exited 1
  ./internal/inventory --- PASS: TestTheLastSendSaysWhatTheMachineAnswered (0.24s)
  ./internal/inventory --- PASS: TestAReportIsTheLastSendsAnswerOnlyWhenItIsAboutThatSend (0.16s)
  ./internal/inventory --- PASS: TestAnIssuedValueIsSealedToEveryHolderOnceAndNotAgain (0.24s)
  ./internal/inventory --- PASS: TestAnIssuedValueIsSealedAgainAfterAKeyChangeOrAnAcceptance (0.16s)
  ./internal/inventory --- PASS: TestAConditionsLooksAreKeptBesideTheBucket (0.11s)
  ./internal/inventory --- PASS: TestAPlanIdHoldingAQuoteIsReadAsAPlainId (0.17s)
  ./internal/inventory --- PASS: TestAWalksStartIsKeptAndARefusedSaveLeavesItUnsaid (0.16s)
  ./internal/inventory --- PASS: TestAWalksRestIsReadFromEachMachinesOwnSend (0.15s)
  ./internal/inventory --- PASS: TestAStoredBuildWithASilentMergeableFileIsStillReadAndComposed (0.11s)
  ./internal/inventory --- PASS: TestACredentialIssuedOutsideIsNeverMade (0.19s)
  ./internal/inventory --- PASS: TestOneAcceptForAProviderIsSealedToEveryConsumer (0.22s)
  ./internal/inventory --- PASS: TestASharedOwnSecretIssuedOutsideIsNeverMade (0.15s)
  ./internal/inventory --- PASS: TestAReportOfABusyContainerIsKeptAndReadBack (0.78s)
  ./internal/inventory --- PASS: TestWhatRunsIsTheRegisteredBuildNotANewerOnePutBack (0.20s)
2 store test(s) listed in testdata/store-tests did not run and pass against the store
--- what failed, picked from the whole of its output (the whole is in the build's log)
--- FAIL: TestAWalkWhoseEveryBuildCameOutTheSameIsDone (0.87s)
    same_program_test.go:115: a build asked later is already what the module is: one is at a build asked 2026-10-14T19:51:12Z, and this one was asked 2026-10-14T18:48:08Z
FAIL	github.com/novox/mesh-controller/cmd/mesh-controller	189s	(shard 8 of 8: 115 tests)
**Merge check** at `480657d9` Judged: head `480657d95b9b` merged into trunk `c2ec0a601acb`; read beside it: mesh-catalog `7e3e62062bef`, mesh-controller-main `c2ec0a601acb`, mesh-host `1a2677882380`, 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-controller) - `mesh/repo-check`: **FAIL** — its merge-check.sh failed: --- FAIL: TestAWalkWhoseEveryBuildCameOutTheSameIsDone (0.87s) **Delivery plan** — builds build-agent, mesh-controller → ace, g14, novox, shanks; no bus step - tier 0: mesh-controller - tier 1: build-agent - ace: receives build-agent - g14: receives build-agent - novox: receives mesh-controller, 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 - read by no module's build: cmd/mesh-controller/same_program_test.go, internal/builder/same_program_test.go, internal/inventory/registered_held_test.go, testdata/store-tests Run by the build seat on novox as `build-1792007023596669464` (`builds --log build-1792007023596669464`). ``` tier 0: app: read whole: no build source recorded, so its directory is its build source; e.g. modules/app/module.json notes: read whole: no build source recorded, so its directory is its build source; e.g. modules/notes/module.json plan-1792007288000000000 cut: novox/mesh-catalog bbbb0002, answering novox/mesh-catalog@aaaa0001, novox/mesh-catalog@bbbb0002; 2 module(s) in 1 tier(s) 0: app, notes plan-1792007288000000000 waits for mesh-delivery's word before its first tier is asked novox/mesh-controller merged into main (k2); group pr/k2 has a member still to merge: novox/elsewhere (ready), it waits for the window in a batch of its own, it joins plan-1792007528000000000 — assembling: 90 s left (at the latest 20:02:08) — group pr/k2 has a member still to merge: novox/elsewhere (ready); grouped: novox/mesh-controller@k2 (on the controller's own path); plan not yet calculated mesh-controller: read whole: no build source recorded, so every file of its repository is its build source plan-1792007528000000000 cut: novox/mesh-controller k2, answering novox/mesh-controller@k2; 1 module(s) in 1 tier(s) 0: mesh-controller tier 0: tier 0: tier 0: build-sudo: sudo is new to the catalogue, and novox/mesh-catalog on the git seat is no repository the catalogue builds a module from — registered, as asked at the controller's terminal build-host: mesh-host is new to the catalogue, and novox/mesh-host on the git seat is no repository the catalogue builds a module from — registered, as asked at the controller's terminal b-1: unifi is new to the catalogue, and novox/mesh-catalog on the git seat is no repository the catalogue builds a module from — registered, as asked at the controller's terminal b-1: the build seat did not say whether 1111111a is on its repository's trunk (it predates ADR 0238); registered as before b-2: the build seat did not say whether 9c97a8a1 is on its repository's trunk (it predates ADR 0238); registered as before b-3: the build seat did not say whether deadbeef is on its repository's trunk (it predates ADR 0238); registered as before made the bus a certificate for [mesh-broker], valid until 2036-10-11T19:49:01Z /tmp/TestTheBusCertificateIsMadeOnce3998696061/001/tls.crt /tmp/TestTheBusCertificateIsMadeOnce3998696061/001/tls.key the bus already has a certificate at /tmp/TestTheBusCertificateIsMadeOnce3998696061/001/tls.crt, and it was left alone build-1: a dry run of ssh://forge/app.git on unreviewed, not taken in the forge cannot be asked about novox/mesh-catalog now (cannot ask gitea.gitea_api: nothing serves it); asking again in 1s, for at most 1m0s in all (novox/hq issue 486) the forge cannot be asked about novox/mesh-catalog now (cannot ask gitea.gitea_api: nothing serves it); asking again in 2s, for at most 1m0s in all (novox/hq issue 486) the forge answered about novox/mesh-catalog again, after 3s (novox/hq issue 486) plan-gate: tier 0 built; sent 1 module(s) to anchor first in one send (app), the rest once its gate passes plan-gate: app passed its gate on anchor (healthy 1 times over 0s, by a leaf module's rule: one reading (novox/hq ADR 0304)); the rest are sent plan-gate: tier 0 built; sent app to laptop, one send each plan-gate: done — novox/mesh-catalog at c2, 1 tier(s) KEPT: anchor was last sent mesh-controller c2bbbbbb, and the mesh holds the older c1aaaaaa (asked 2026-10-14T17:49:37Z, before 2026-10-14T19:48:37Z): a send there keeps c2bbbbbb; `push anchor` sends the older build, and a newer merge or `rebuild mesh-controller` moves the record forward (novox/hq issue 201) novox/one merged into main (c1); group feat/a has a member still to merge: novox/elsewhere (ready), it waits for the window in a batch of its own, it joins plan-1792007288000000000 — assembling: 90 s left (at the latest 19:58:08) — group feat/a has a member still to merge: novox/elsewhere (ready); grouped: novox/one@c1; plan not yet calculated novox/two merged into main (c2); group feat/b has a member still to merge: novox/elsewhere (ready), it waits for the window in a batch of its own, it joins plan-1792007293000000000 — assembling: 90 s left (at the latest 19:58:13) — group feat/b has a member still to merge: novox/elsewhere (ready); grouped: novox/two@c2; plan not yet calculated novox/one merged into main (c3); related to plan-1792007288000000000 (both change novox/one), and to plan-1792007293000000000 (both are members of group feat/b), folded into it, it joins plan-1792007288000000000 — assembling: 90 s left (at the latest 19:58:08) — group feat/a has a member still to merge: novox/elsewhere (ready); grouped: novox/one@c3 (answers c1), novox/two@c2; plan not yet calculated one: read whole: no build source recorded, so every file of its repository is its build source two: read whole: no build source recorded, so every file of its repository is its build source plan-1792007288000000000 cut: novox/one c3, novox/two c2, answering novox/one@c1, novox/one@c3, novox/two@c2; 2 module(s) in 1 tier(s) 0: one, two tier 0: tier 0: mesh-cli (no call): operator on laptop asked "node", as an ordinary call mesh-cli (no call): operator on laptop asked "node", as an ordinary call mesh-cli (no call): operator on laptop asked "token", as an ordinary call mesh-cli (no call): operator on laptop asked "secret", as an ordinary call mesh-cli (no call): operator on laptop asked "operator", as an ordinary call mesh-cli (no call): operator on laptop asked "assign", as an ordinary call novox/mesh-catalog merged into main (3da80a4b); it shares nothing with a batch assembling and no member of a group is still to merge: it is cut at once, it joins plan-1792007432315327416 — cut at once, sharing nothing with a batch assembling; grouped: novox/mesh-catalog@3da80a4b; plan not yet calculated modules/sensors is a new module in novox/mesh-catalog and could not be built: cannot submit a build: nats: timeout — a hand `build` of it asks again novox/mesh-catalog merged into main (3da80a4b); it changed nothing any module the mesh holds is built from plan-1792007432315327416 (novox/mesh-catalog 3da80a4b): its merges move nothing the mesh holds plan-457: c settled from the build records as built (build-c) settings-1792007453109224608: the settings of notes on laptop — approved (ask s9): sent to laptop, one machine at a time, each judged settings-1792007453227714491: the settings of notes on laptop — approved (ask s10): sent to laptop, one machine at a time, each judged settings-1792007453235774517: the settings of notes on laptop — approved (ask s12): sent to laptop, one machine at a time, each judged build-1792003854237194348: mailu is new to the catalogue, and novox/mesh-catalog on the git seat is no repository the catalogue builds a module from — registered, as asked at the controller's terminal build-1792003854237194348: the build seat did not say whether c74f407a is on its repository's trunk (it predates ADR 0238); registered as before build-1792003855237194348: the build seat did not say whether c1111111 is on its repository's trunk (it predates ADR 0238); registered as before build-1792003914237194348: the build seat did not say whether 1ab84e69 is on its repository's trunk (it predates ADR 0238); registered as before tier 0: plan-retry: tier 0 done; asking tier 1: b tier 1: build-1792007457094506344: could not build https://forge.example/novox/w1.git: cancelled by hand build-1792007457095506344: could not build https://forge.example/novox/w2.git: cancelled by hand build-1792007457093506344: could not build https://forge.example/novox/dead.git: cancelled by hand plan-tier: tier 0 built; sent 2 module(s) to anchor first in one send (m01, m02), the rest once its gate passes plan-tier: tier 0 built; sent m01, m02 to laptop, one send each plan-tier: done — novox/mesh-catalog at c2, 1 tier(s) release-1792007469101564344: 2 build(s) wait for a gate on anchor, desk, laptop; one machine first, then the rest at once, each judged release-1792007469101564344: sent anchor 1 build(s) that waited for a gate; judging them there release-1792007469101564344: passed on anchor; the rest are sent at once, each judged release-1792007469101564344: sent desk 1 build(s) that waited for a gate; judging them there release-1792007469101564344: sent laptop 2 build(s) that waited for a gate; judging them there release-1792007469101564344: released on anchor, desk, laptop release-1792007471094009705: 2 build(s) wait for a gate on desk, laptop, anchor; one machine first, then the rest at once, each judged release-1792007471094009705: sent desk 1 build(s) that waited for a gate; judging them there release-1792007471094009705: passed on desk; the rest are sent at once, each judged release-1792007471094009705: sent laptop 2 build(s) that waited for a gate; judging them there release-1792007471094009705: sent anchor 1 build(s) that waited for a gate; judging them there release-1792007471094009705: released on desk, laptop, anchor --- FAIL: TestAWalkWhoseEveryBuildCameOutTheSameIsDone (0.87s) same_program_test.go:115: a build asked later is already what the module is: one is at a build asked 2026-10-14T19:51:12Z, and this one was asked 2026-10-14T18:48:08Z settings-1792007474789745075: the settings of app on the whole mesh — approved (ask s2): sent to anchor, laptop, one machine at a time, each judged settings-1792007474789745075: sent anchor the settings of app on the whole mesh (ask s2), every build there kept; judging app there settings-1792007474789745075: the settings of app on the whole mesh failed its gate on anchor: anchor failed what it was sent — the layer stays as the operator approved it, and the one it replaced is in `settings app` history; not sent: laptop release-1792007474932407657: 1 build(s) wait for a gate on anchor, laptop; one machine first, then the rest at once, each judged status could not be composed (after 0s): the store did not answer — `status` answers the last summary, with its age notes on laptop: + places.data.owner + places.data.path + x run `plan laptop --diff` to see what it changes, `push laptop` to send it notes on laptop: ~ x the layer it replaced is kept: settings show notes --node laptop --history run `plan laptop --diff` to see what it changes, `push laptop` to send it { "places": { "data": { "owner": "1001:1001", "path": "/srv/notes" } }, "x": 1 } set by an unnamed account at a shell on novox-be through settings at 2026-10-14 19:51 plan-tier: tier 0 built; sent 3 module(s) to anchor first in one send (app1, app2, app3), the rest once its gate passes app1's build c2 failed its gate on anchor and was put back to c1: not healthy within -1s of its apply: anchor as a whole: raised since it was sent: machine.anchor.disk-full — anchor's root file system is full app2's build c2 failed its gate on anchor and was put back to c1: not healthy within -1s of its apply: anchor as a whole: raised since it was sent: machine.anchor.disk-full — anchor's root file system is full app3's build c2 failed its gate on anchor and was put back to c1: not healthy within -1s of its apply: anchor as a whole: raised since it was sent: machine.anchor.disk-full — anchor's root file system is full plan-tier: app1 failed its gate on anchor in tier 0: not healthy within -1s of its apply: anchor as a whole: raised since it was sent: machine.anchor.disk-full — anchor's root file system is full; app2 failed its gate on anchor in tier 0: not healthy within -1s of its apply: anchor as a whole: raised since it was sent: machine.anchor.disk-full — anchor's root file system is full; app3 failed its gate on anchor in tier 0: not healthy within -1s of its apply: anchor as a whole: raised since it was sent: machine.anchor.disk-full — anchor's root file system is full; put back app1 to c1, app2 to c1, app3 to c1 on anchor, in one send; none reported left as it was this act by hand could NOT be recorded in the hand-act log, and is done anyway: the hand-act log mesh-controller_hand-acts is not on the bus — the controller asserts it at its start, so one older than this has not: nats: bucket not found release-1792007477754071769: 2 build(s) wait for a gate on anchor, laptop; one machine first, then the rest at once, each judged release-1792007477754071769 releases it; `plans release-1792007477754071769` says where it is FAIL FAIL github.com/novox/mesh-controller/cmd/mesh-controller 189s (shard 8 of 8: 115 tests) ok github.com/novox/mesh-controller/internal/inventory 127s (shard 1 of 4: 68 tests) ok github.com/novox/mesh-controller/internal/inventory 128s (shard 2 of 4: 68 tests) ok github.com/novox/mesh-controller/internal/inventory 127s (shard 3 of 4: 68 tests) ok github.com/novox/mesh-controller/internal/inventory 119s (shard 4 of 4: 67 tests) ok github.com/novox/mesh-controller/internal/builder 192s (shard 1 of 4: 52 tests) ok github.com/novox/mesh-controller/internal/builder 123s (shard 2 of 4: 51 tests) ok github.com/novox/mesh-controller/internal/builder 198s (shard 3 of 4: 51 tests) ok github.com/novox/mesh-controller/internal/builder 155s (shard 4 of 4: 51 tests) ok github.com/novox/mesh-controller/internal/link 30s (shard 1 of 4: 44 tests) ok github.com/novox/mesh-controller/internal/link 37s (shard 2 of 4: 44 tests) ok github.com/novox/mesh-controller/internal/link 30s (shard 3 of 4: 44 tests) ok github.com/novox/mesh-controller/internal/link 30s (shard 4 of 4: 43 tests) store tests, each run against the store: ./cmd/mesh-controller --- PASS: TestAStopWithoutAMergeWalksTheOthersAgain (3.15s) ./cmd/mesh-controller --- PASS: TestAStopWithoutAMergeEndsTheMergesThatContainIt (1.22s) ./cmd/mesh-controller --- PASS: TestAStopWalksTheOthersAgainInTheOpenBatch (1.79s) ./cmd/mesh-controller --- PASS: TestAStopNamesWhatStaysOnTheMachinesAndWhatStillCarriesIt (2.47s) ./cmd/mesh-controller --- PASS: TestAStopWithoutAMergeLeavesItOutOfABatch (3.89s) ./cmd/mesh-controller --- PASS: TestSavingPlansAndMovingMergesIsOneAct (5.97s) ./cmd/mesh-controller --- PASS: TestAPlanFollowedFromTheStoreAnswersWhenItMoves (3.57s) ./cmd/mesh-controller --- PASS: TestNodeShowAndStatusReadTheLastSendFromTheStore (1.88s) ./cmd/mesh-controller --- PASS: TestTheConditionsVerbReadsTheLooksTheBucketNoLongerHolds (2.74s) ./cmd/mesh-controller --- PASS: TestAWalkLetGoAndStoppedByVerbsIsSaidStartedAndEnded (1.88s) ./cmd/mesh-controller --- PASS: TestAWalkStoppedOrClosedByAPersonIsSaidEndedStopped (1.40s) ./cmd/mesh-controller --- PASS: TestAWalkRetriedByAPersonIsSaidStartedAgain (0.71s) ./cmd/mesh-controller --- PASS: TestABacklogReleasedByAPersonIsSaidStarted (0.78s) ./cmd/mesh-controller --- PASS: TestAWalkEndedByCancelOrClearIsSaidEnded (1.10s) ./cmd/mesh-controller --- PASS: TestAWalkRestartedByARebuildIsSaidStarted (0.76s) ./cmd/mesh-controller --- PASS: TestAWalkStoppedByHandAndRetriedEndsFailedWhenItFailsAgain (0.89s) ./cmd/mesh-controller --- PASS: TestReplay237 (5.38s) ./cmd/mesh-controller --- PASS: TestAnUnassignThatLeavesItsNodeUnresolvedSaysSoOnceInItsAnswer (1.55s) ./cmd/mesh-controller --- PASS: TestAnUnassignThatLeavesItsNodeResolvedSaysNothingOfIt (1.48s) ./cmd/mesh-controller --- PASS: TestAnAssignThatLeavesItsNodeUnresolvedSaysOnlyThePlansRefusal (1.30s) ./cmd/mesh-controller --- PASS: TestADirectoryOwnersKeyIsRefusedThroughAVerb (6.93s) ./cmd/mesh-controller --- PASS: TestTheSendMakesNoValueForAnOutsideSecretNobodyGave (4.16s) ./cmd/mesh-controller --- PASS: TestAQuestionComposesWithoutAnOutsideSecretNobodyGave (2.89s) ./cmd/mesh-controller --- PASS: TestReplay201 (1.19s) ./cmd/mesh-controller --- PASS: TestARollbackWhoseSendWasRefusedIsCompletedByTheNextSend (1.19s) ./cmd/mesh-controller --- PASS: TestAGateJudgesTheOtherMovesBesideAKeptCore (2.49s) ./cmd/mesh-controller --- PASS: TestReplay401 (2.35s) ./cmd/mesh-controller --- PASS: TestReplay201ThePlansSend (5.66s) ./cmd/mesh-controller --- PASS: TestPlanAndNodeListAnOptionalRequirementLeftUnbound (5.57s) ./cmd/mesh-controller --- PASS: TestReplay340 (3.92s) ./cmd/mesh-controller --- PASS: TestOnlyATrustedFilesNamedKeyIsRefusedThroughAVerb (6.35s) ./cmd/mesh-controller --- PASS: TestReplay349 (7.31s) ./cmd/mesh-controller --- PASS: TestReplay348AFaultFromBeforeTheSendFailsNoGate (2.77s) ./cmd/mesh-controller --- PASS: TestReplay239AModuleNameIsNotTakenOverByAnotherRepository (5.29s) ./cmd/mesh-controller --- PASS: TestAWalkThatMovedNothingSaysWhichModulesMatchedWhatRuns (3.04s) ./cmd/mesh-controller --- FAIL: TestAWalkWhoseEveryBuildCameOutTheSameIsDone (1.25s) ./cmd/mesh-controller --- PASS: TestReplay614ANewSDKPlansTheToolchainAndThenItsBundles (0.54s) ./cmd/mesh-controller --- PASS: TestOneAcceptForAProviderIsPlacedForEveryConsumer (7.50s) ./cmd/mesh-controller --- PASS: TestReplay164 (8.50s) ./cmd/mesh-controller --- PASS: TestAnApprovedLayerOpensTheWalkThatSendsIt (1.19s) ./cmd/mesh-controller --- PASS: TestASettingsWalkSendsOneMachineAtATimeEachJudged (3.63s) ./cmd/mesh-controller --- PASS: TestAFailedSettingsWalkStopsAndHoldsNothingBack (1.11s) ./cmd/mesh-controller --- PASS: TestASettingsWalkSendsTheLayerAloneEveryBuildKept (1.98s) ./cmd/mesh-controller --- PASS: TestASettingsWalkStopsBeforeADataMoveAndPassesOverAMachineAway (4.44s) ./cmd/mesh-controller --- PASS: TestACrossingSendSupersedesASettingsGate (0.99s) ./cmd/mesh-controller --- PASS: TestASettingsWalkFailsOnARefusalThatCannotClear (2.35s) ./cmd/mesh-controller --- PASS: TestAProviderElsewhereServesItsOwnComposedName (2.25s) ./cmd/mesh-controller --- PASS: TestAReusedCheckBuildIsRegisteredByItsDigestAndGatedAsABuiltOne (1.77s) ./cmd/mesh-controller --- PASS: TestAReleaseSendsTheRestAtOnceAfterTheFirstPasses (3.17s) ./cmd/mesh-controller --- PASS: TestARestMachineThatFailsIsPutBackAloneAndTheOthersAreJudgedOn (4.11s) ./cmd/mesh-controller --- PASS: TestAWalkTakesOverTheReadingsOfAGateJudgingTheSameBuildThere (2.11s) ./cmd/mesh-controller --- PASS: TestAFirstSendMadeAndNotKeptIsNotSentAgain (2.51s) ./cmd/mesh-controller --- PASS: TestAReleaseSendKeptAndMadeIsNotMadeAgain (2.24s) ./cmd/mesh-controller --- PASS: TestAFirstMachineThatFailsStillStopsTheWalk (1.61s) ./cmd/mesh-controller --- PASS: TestTheControlNodeIsSentLastInAStep (1.70s) ./cmd/mesh-controller --- PASS: TestARestMachineSilentPastItsBoundIsLeftAndSaid (1.32s) ./cmd/mesh-controller --- PASS: TestANoMoveTierWaitsForNoNewReport (1.41s) ./cmd/mesh-controller --- PASS: TestOneProviderDownAndThreeConsumersFailingAreOneCondition (11.04s) ./cmd/mesh-controller --- PASS: TestAConsumerFailingBesideAHealthyProviderIsItsOwn (10.57s) ./cmd/mesh-controller FAIL: go test exited 1 ./internal/inventory --- PASS: TestTheLastSendSaysWhatTheMachineAnswered (0.24s) ./internal/inventory --- PASS: TestAReportIsTheLastSendsAnswerOnlyWhenItIsAboutThatSend (0.16s) ./internal/inventory --- PASS: TestAnIssuedValueIsSealedToEveryHolderOnceAndNotAgain (0.24s) ./internal/inventory --- PASS: TestAnIssuedValueIsSealedAgainAfterAKeyChangeOrAnAcceptance (0.16s) ./internal/inventory --- PASS: TestAConditionsLooksAreKeptBesideTheBucket (0.11s) ./internal/inventory --- PASS: TestAPlanIdHoldingAQuoteIsReadAsAPlainId (0.17s) ./internal/inventory --- PASS: TestAWalksStartIsKeptAndARefusedSaveLeavesItUnsaid (0.16s) ./internal/inventory --- PASS: TestAWalksRestIsReadFromEachMachinesOwnSend (0.15s) ./internal/inventory --- PASS: TestAStoredBuildWithASilentMergeableFileIsStillReadAndComposed (0.11s) ./internal/inventory --- PASS: TestACredentialIssuedOutsideIsNeverMade (0.19s) ./internal/inventory --- PASS: TestOneAcceptForAProviderIsSealedToEveryConsumer (0.22s) ./internal/inventory --- PASS: TestASharedOwnSecretIssuedOutsideIsNeverMade (0.15s) ./internal/inventory --- PASS: TestAReportOfABusyContainerIsKeptAndReadBack (0.78s) ./internal/inventory --- PASS: TestWhatRunsIsTheRegisteredBuildNotANewerOnePutBack (0.20s) 2 store test(s) listed in testdata/store-tests did not run and pass against the store --- what failed, picked from the whole of its output (the whole is in the build's log) --- FAIL: TestAWalkWhoseEveryBuildCameOutTheSameIsDone (0.87s) same_program_test.go:115: a build asked later is already what the module is: one is at a build asked 2026-10-14T19:51:12Z, and this one was asked 2026-10-14T18:48:08Z FAIL github.com/novox/mesh-controller/cmd/mesh-controller 189s (shard 8 of 8: 115 tests) ```
jschoubben added 1 commit 2026-10-14 19:56:39 +00:00
Register the compared module after the fixture's own registration (review of #336)
mesh/merge-gate head b34055f580d4 merged into trunk 86057f455194 — pass: builds build-agent, mesh-controller, route-proxy → ace, g14, novox, shanks; no bus…
mesh/repo-check head b34055f580d4 merged into trunk 86057f455194 — pass: its merge-check.sh passed
mesh/delivery covered after its failure: a later walk that contains it was delivered: plan-1792009731456564734 (novox/mesh-controller at 60cc9ec3 into ma…
mesh/delivery-group group fix/a-module-moves-only-when-its-program-changes delivering: 1 of 2 delivered; novox/mesh-catalog@d94764f00168, stopped for a member …
b34055f580
Author
Contributor

Merge check at b34055f5
Judged: head b34055f580d4 merged into trunk c2ec0a601acb; read beside it: mesh-catalog 7e3e62062bef, mesh-controller-main c2ec0a601acb, mesh-host 1a2677882380, 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-controller)
  • mesh/repo-check: PASS — its merge-check.sh passed

Delivery plan — builds build-agent, mesh-controller → ace, g14, novox, shanks; no bus step

  • tier 0: mesh-controller
  • tier 1: build-agent
  • ace: receives build-agent
  • g14: receives build-agent
  • novox: receives mesh-controller, 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
  • read by no module's build: cmd/mesh-controller/same_program_test.go, internal/builder/same_program_test.go, internal/inventory/registered_held_test.go, testdata/store-tests

Run by the build seat on ace as build-1792007808557273708 (builds --log build-1792007808557273708).

--- the gate: build-agent, 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-14T19:40:09Z 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-14T19:40:09Z

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 2 module(s) in 2 tier(s): build-agent, mesh-controller

notes:
  - cmd/mesh-controller/same_program_test.go, internal/builder/same_program_test.go, internal/inventory/registered_held_test.go and testdata/store-tests 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.129s
ok  	github.com/novox/mesh-controller/examples/objectstore-provisioner	1.023s
ok  	github.com/novox/mesh-controller/examples/postgres-provisioner	1.035s
ok  	github.com/novox/mesh-controller/examples/redis-provisioner	1.024s
ok  	github.com/novox/mesh-controller/examples/route-proxy	1.124s
ok  	github.com/novox/mesh-controller/internal/artifacts	1.065s
?   	github.com/novox/mesh-controller/internal/beside	[no test files]
ok  	github.com/novox/mesh-controller/internal/broker	5.568s
ok  	github.com/novox/mesh-controller/internal/catalogue	16.167s
ok  	github.com/novox/mesh-controller/internal/conditions	2.644s
ok  	github.com/novox/mesh-controller/internal/envfile	1.024s
ok  	github.com/novox/mesh-controller/internal/facts	1.033s
ok  	github.com/novox/mesh-controller/internal/identity	7.879s
ok  	github.com/novox/mesh-controller/internal/lease	10.226s
ok  	github.com/novox/mesh-controller/internal/licences	5.775s
ok  	github.com/novox/mesh-controller/internal/licences/adapters	1.065s
ok  	github.com/novox/mesh-controller/internal/lint	2.614s
ok  	github.com/novox/mesh-controller/internal/outward	1.056s
ok  	github.com/novox/mesh-controller/internal/overlay	1.040s
ok  	github.com/novox/mesh-controller/internal/secrets	1.457s
ok  	github.com/novox/mesh-controller/internal/store	3.479s
ok  	github.com/novox/mesh-controller/internal/testbus	1.243s
ok  	github.com/novox/mesh-controller/internal/token	1.069s
ok  	github.com/novox/mesh-controller/cmd/mesh-controller	50s	(shard 1 of 8: 116 tests)
ok  	github.com/novox/mesh-controller/cmd/mesh-controller	51s	(shard 2 of 8: 115 tests)
ok  	github.com/novox/mesh-controller/cmd/mesh-controller	57s	(shard 3 of 8: 115 tests)
ok  	github.com/novox/mesh-controller/cmd/mesh-controller	52s	(shard 4 of 8: 115 tests)
ok  	github.com/novox/mesh-controller/cmd/mesh-controller	46s	(shard 5 of 8: 115 tests)
ok  	github.com/novox/mesh-controller/cmd/mesh-controller	49s	(shard 6 of 8: 115 tests)
ok  	github.com/novox/mesh-controller/cmd/mesh-controller	49s	(shard 7 of 8: 115 tests)
ok  	github.com/novox/mesh-controller/cmd/mesh-controller	49s	(shard 8 of 8: 115 tests)
ok  	github.com/novox/mesh-controller/internal/inventory	33s	(shard 1 of 4: 68 tests)
ok  	github.com/novox/mesh-controller/internal/inventory	24s	(shard 2 of 4: 68 tests)
ok  	github.com/novox/mesh-controller/internal/inventory	31s	(shard 3 of 4: 68 tests)
ok  	github.com/novox/mesh-controller/internal/inventory	26s	(shard 4 of 4: 67 tests)
ok  	github.com/novox/mesh-controller/internal/builder	46s	(shard 1 of 4: 52 tests)
ok  	github.com/novox/mesh-controller/internal/builder	21s	(shard 2 of 4: 51 tests)
ok  	github.com/novox/mesh-controller/internal/builder	41s	(shard 3 of 4: 51 tests)
ok  	github.com/novox/mesh-controller/internal/builder	26s	(shard 4 of 4: 51 tests)
ok  	github.com/novox/mesh-controller/internal/link	19s	(shard 1 of 4: 44 tests)
ok  	github.com/novox/mesh-controller/internal/link	19s	(shard 2 of 4: 44 tests)
ok  	github.com/novox/mesh-controller/internal/link	19s	(shard 3 of 4: 44 tests)
ok  	github.com/novox/mesh-controller/internal/link	19s	(shard 4 of 4: 43 tests)
store tests, each run against the store:
  ./cmd/mesh-controller --- PASS: TestAStopWithoutAMergeWalksTheOthersAgain (0.71s)
  ./cmd/mesh-controller --- PASS: TestAStopWithoutAMergeEndsTheMergesThatContainIt (1.09s)
  ./cmd/mesh-controller --- PASS: TestAStopWalksTheOthersAgainInTheOpenBatch (2.31s)
  ./cmd/mesh-controller --- PASS: TestAStopNamesWhatStaysOnTheMachinesAndWhatStillCarriesIt (0.66s)
  ./cmd/mesh-controller --- PASS: TestAStopWithoutAMergeLeavesItOutOfABatch (0.48s)
  ./cmd/mesh-controller --- PASS: TestSavingPlansAndMovingMergesIsOneAct (0.43s)
  ./cmd/mesh-controller --- PASS: TestAPlanFollowedFromTheStoreAnswersWhenItMoves (7.00s)
  ./cmd/mesh-controller --- PASS: TestNodeShowAndStatusReadTheLastSendFromTheStore (0.48s)
  ./cmd/mesh-controller --- PASS: TestTheConditionsVerbReadsTheLooksTheBucketNoLongerHolds (0.54s)
  ./cmd/mesh-controller --- PASS: TestAWalkLetGoAndStoppedByVerbsIsSaidStartedAndEnded (0.29s)
  ./cmd/mesh-controller --- PASS: TestAWalkStoppedOrClosedByAPersonIsSaidEndedStopped (0.30s)
  ./cmd/mesh-controller --- PASS: TestAWalkRetriedByAPersonIsSaidStartedAgain (0.23s)
  ./cmd/mesh-controller --- PASS: TestABacklogReleasedByAPersonIsSaidStarted (0.26s)
  ./cmd/mesh-controller --- PASS: TestAWalkEndedByCancelOrClearIsSaidEnded (0.33s)
  ./cmd/mesh-controller --- PASS: TestAWalkRestartedByARebuildIsSaidStarted (0.23s)
  ./cmd/mesh-controller --- PASS: TestAWalkStoppedByHandAndRetriedEndsFailedWhenItFailsAgain (0.27s)
  ./cmd/mesh-controller --- PASS: TestReplay237 (0.26s)
  ./cmd/mesh-controller --- PASS: TestAnUnassignThatLeavesItsNodeUnresolvedSaysSoOnceInItsAnswer (0.39s)
  ./cmd/mesh-controller --- PASS: TestAnUnassignThatLeavesItsNodeResolvedSaysNothingOfIt (1.74s)
  ./cmd/mesh-controller --- PASS: TestAnAssignThatLeavesItsNodeUnresolvedSaysOnlyThePlansRefusal (0.62s)
  ./cmd/mesh-controller --- PASS: TestADirectoryOwnersKeyIsRefusedThroughAVerb (0.57s)
  ./cmd/mesh-controller --- PASS: TestTheSendMakesNoValueForAnOutsideSecretNobodyGave (0.60s)
  ./cmd/mesh-controller --- PASS: TestAQuestionComposesWithoutAnOutsideSecretNobodyGave (0.96s)
  ./cmd/mesh-controller --- PASS: TestReplay201 (0.53s)
  ./cmd/mesh-controller --- PASS: TestARollbackWhoseSendWasRefusedIsCompletedByTheNextSend (0.63s)
  ./cmd/mesh-controller --- PASS: TestAGateJudgesTheOtherMovesBesideAKeptCore (0.47s)
  ./cmd/mesh-controller --- PASS: TestReplay401 (0.45s)
  ./cmd/mesh-controller --- PASS: TestReplay201ThePlansSend (0.32s)
  ./cmd/mesh-controller --- PASS: TestPlanAndNodeListAnOptionalRequirementLeftUnbound (0.76s)
  ./cmd/mesh-controller --- PASS: TestReplay340 (0.36s)
  ./cmd/mesh-controller --- PASS: TestOnlyATrustedFilesNamedKeyIsRefusedThroughAVerb (0.24s)
  ./cmd/mesh-controller --- PASS: TestReplay349 (0.43s)
  ./cmd/mesh-controller --- PASS: TestReplay348AFaultFromBeforeTheSendFailsNoGate (0.24s)
  ./cmd/mesh-controller --- PASS: TestReplay239AModuleNameIsNotTakenOverByAnotherRepository (0.20s)
  ./cmd/mesh-controller --- PASS: TestAWalkThatMovedNothingSaysWhichModulesMatchedWhatRuns (0.78s)
  ./cmd/mesh-controller --- PASS: TestAWalkWhoseEveryBuildCameOutTheSameIsDone (0.27s)
  ./cmd/mesh-controller --- PASS: TestReplay614ANewSDKPlansTheToolchainAndThenItsBundles (0.11s)
  ./cmd/mesh-controller --- PASS: TestOneAcceptForAProviderIsPlacedForEveryConsumer (1.83s)
  ./cmd/mesh-controller --- PASS: TestReplay164 (0.45s)
  ./cmd/mesh-controller --- PASS: TestAnApprovedLayerOpensTheWalkThatSendsIt (0.35s)
  ./cmd/mesh-controller --- PASS: TestASettingsWalkSendsOneMachineAtATimeEachJudged (0.35s)
  ./cmd/mesh-controller --- PASS: TestAFailedSettingsWalkStopsAndHoldsNothingBack (0.26s)
  ./cmd/mesh-controller --- PASS: TestASettingsWalkSendsTheLayerAloneEveryBuildKept (0.26s)
  ./cmd/mesh-controller --- PASS: TestASettingsWalkStopsBeforeADataMoveAndPassesOverAMachineAway (0.66s)
  ./cmd/mesh-controller --- PASS: TestACrossingSendSupersedesASettingsGate (0.22s)
  ./cmd/mesh-controller --- PASS: TestASettingsWalkFailsOnARefusalThatCannotClear (0.21s)
  ./cmd/mesh-controller --- PASS: TestAProviderElsewhereServesItsOwnComposedName (0.38s)
  ./cmd/mesh-controller --- PASS: TestAReusedCheckBuildIsRegisteredByItsDigestAndGatedAsABuiltOne (1.03s)
  ./cmd/mesh-controller --- PASS: TestAReleaseSendsTheRestAtOnceAfterTheFirstPasses (0.38s)
  ./cmd/mesh-controller --- PASS: TestARestMachineThatFailsIsPutBackAloneAndTheOthersAreJudgedOn (0.34s)
  ./cmd/mesh-controller --- PASS: TestAWalkTakesOverTheReadingsOfAGateJudgingTheSameBuildThere (0.28s)
  ./cmd/mesh-controller --- PASS: TestAFirstSendMadeAndNotKeptIsNotSentAgain (0.36s)
  ./cmd/mesh-controller --- PASS: TestAReleaseSendKeptAndMadeIsNotMadeAgain (0.29s)
  ./cmd/mesh-controller --- PASS: TestAFirstMachineThatFailsStillStopsTheWalk (0.24s)
  ./cmd/mesh-controller --- PASS: TestTheControlNodeIsSentLastInAStep (0.29s)
  ./cmd/mesh-controller --- PASS: TestARestMachineSilentPastItsBoundIsLeftAndSaid (0.28s)
  ./cmd/mesh-controller --- PASS: TestANoMoveTierWaitsForNoNewReport (0.45s)
  ./cmd/mesh-controller --- PASS: TestOneProviderDownAndThreeConsumersFailingAreOneCondition (2.39s)
  ./cmd/mesh-controller --- PASS: TestAConsumerFailingBesideAHealthyProviderIsItsOwn (0.22s)
  ./internal/inventory --- PASS: TestTheLastSendSaysWhatTheMachineAnswered (0.23s)
  ./internal/inventory --- PASS: TestAReportIsTheLastSendsAnswerOnlyWhenItIsAboutThatSend (0.27s)
  ./internal/inventory --- PASS: TestAnIssuedValueIsSealedToEveryHolderOnceAndNotAgain (0.21s)
  ./internal/inventory --- PASS: TestAnIssuedValueIsSealedAgainAfterAKeyChangeOrAnAcceptance (0.18s)
  ./internal/inventory --- PASS: TestAConditionsLooksAreKeptBesideTheBucket (0.16s)
  ./internal/inventory --- PASS: TestAPlanIdHoldingAQuoteIsReadAsAPlainId (0.26s)
  ./internal/inventory --- PASS: TestAWalksStartIsKeptAndARefusedSaveLeavesItUnsaid (0.30s)
  ./internal/inventory --- PASS: TestAWalksRestIsReadFromEachMachinesOwnSend (0.26s)
  ./internal/inventory --- PASS: TestAStoredBuildWithASilentMergeableFileIsStillReadAndComposed (0.23s)
  ./internal/inventory --- PASS: TestACredentialIssuedOutsideIsNeverMade (0.23s)
  ./internal/inventory --- PASS: TestOneAcceptForAProviderIsSealedToEveryConsumer (0.22s)
  ./internal/inventory --- PASS: TestASharedOwnSecretIssuedOutsideIsNeverMade (0.20s)
  ./internal/inventory --- PASS: TestAReportOfABusyContainerIsKeptAndReadBack (0.49s)
  ./internal/inventory --- PASS: TestWhatRunsIsTheRegisteredBuildNotANewerOnePutBack (0.35s)
**Merge check** at `b34055f5` Judged: head `b34055f580d4` merged into trunk `c2ec0a601acb`; read beside it: mesh-catalog `7e3e62062bef`, mesh-controller-main `c2ec0a601acb`, mesh-host `1a2677882380`, 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-controller) - `mesh/repo-check`: **PASS** — its merge-check.sh passed **Delivery plan** — builds build-agent, mesh-controller → ace, g14, novox, shanks; no bus step - tier 0: mesh-controller - tier 1: build-agent - ace: receives build-agent - g14: receives build-agent - novox: receives mesh-controller, 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 - read by no module's build: cmd/mesh-controller/same_program_test.go, internal/builder/same_program_test.go, internal/inventory/registered_held_test.go, testdata/store-tests Run by the build seat on ace as `build-1792007808557273708` (`builds --log build-1792007808557273708`). ``` --- the gate: build-agent, 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-14T19:40:09Z 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-14T19:40:09Z 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 2 module(s) in 2 tier(s): build-agent, mesh-controller notes: - cmd/mesh-controller/same_program_test.go, internal/builder/same_program_test.go, internal/inventory/registered_held_test.go and testdata/store-tests 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.129s ok github.com/novox/mesh-controller/examples/objectstore-provisioner 1.023s ok github.com/novox/mesh-controller/examples/postgres-provisioner 1.035s ok github.com/novox/mesh-controller/examples/redis-provisioner 1.024s ok github.com/novox/mesh-controller/examples/route-proxy 1.124s ok github.com/novox/mesh-controller/internal/artifacts 1.065s ? github.com/novox/mesh-controller/internal/beside [no test files] ok github.com/novox/mesh-controller/internal/broker 5.568s ok github.com/novox/mesh-controller/internal/catalogue 16.167s ok github.com/novox/mesh-controller/internal/conditions 2.644s ok github.com/novox/mesh-controller/internal/envfile 1.024s ok github.com/novox/mesh-controller/internal/facts 1.033s ok github.com/novox/mesh-controller/internal/identity 7.879s ok github.com/novox/mesh-controller/internal/lease 10.226s ok github.com/novox/mesh-controller/internal/licences 5.775s ok github.com/novox/mesh-controller/internal/licences/adapters 1.065s ok github.com/novox/mesh-controller/internal/lint 2.614s ok github.com/novox/mesh-controller/internal/outward 1.056s ok github.com/novox/mesh-controller/internal/overlay 1.040s ok github.com/novox/mesh-controller/internal/secrets 1.457s ok github.com/novox/mesh-controller/internal/store 3.479s ok github.com/novox/mesh-controller/internal/testbus 1.243s ok github.com/novox/mesh-controller/internal/token 1.069s ok github.com/novox/mesh-controller/cmd/mesh-controller 50s (shard 1 of 8: 116 tests) ok github.com/novox/mesh-controller/cmd/mesh-controller 51s (shard 2 of 8: 115 tests) ok github.com/novox/mesh-controller/cmd/mesh-controller 57s (shard 3 of 8: 115 tests) ok github.com/novox/mesh-controller/cmd/mesh-controller 52s (shard 4 of 8: 115 tests) ok github.com/novox/mesh-controller/cmd/mesh-controller 46s (shard 5 of 8: 115 tests) ok github.com/novox/mesh-controller/cmd/mesh-controller 49s (shard 6 of 8: 115 tests) ok github.com/novox/mesh-controller/cmd/mesh-controller 49s (shard 7 of 8: 115 tests) ok github.com/novox/mesh-controller/cmd/mesh-controller 49s (shard 8 of 8: 115 tests) ok github.com/novox/mesh-controller/internal/inventory 33s (shard 1 of 4: 68 tests) ok github.com/novox/mesh-controller/internal/inventory 24s (shard 2 of 4: 68 tests) ok github.com/novox/mesh-controller/internal/inventory 31s (shard 3 of 4: 68 tests) ok github.com/novox/mesh-controller/internal/inventory 26s (shard 4 of 4: 67 tests) ok github.com/novox/mesh-controller/internal/builder 46s (shard 1 of 4: 52 tests) ok github.com/novox/mesh-controller/internal/builder 21s (shard 2 of 4: 51 tests) ok github.com/novox/mesh-controller/internal/builder 41s (shard 3 of 4: 51 tests) ok github.com/novox/mesh-controller/internal/builder 26s (shard 4 of 4: 51 tests) ok github.com/novox/mesh-controller/internal/link 19s (shard 1 of 4: 44 tests) ok github.com/novox/mesh-controller/internal/link 19s (shard 2 of 4: 44 tests) ok github.com/novox/mesh-controller/internal/link 19s (shard 3 of 4: 44 tests) ok github.com/novox/mesh-controller/internal/link 19s (shard 4 of 4: 43 tests) store tests, each run against the store: ./cmd/mesh-controller --- PASS: TestAStopWithoutAMergeWalksTheOthersAgain (0.71s) ./cmd/mesh-controller --- PASS: TestAStopWithoutAMergeEndsTheMergesThatContainIt (1.09s) ./cmd/mesh-controller --- PASS: TestAStopWalksTheOthersAgainInTheOpenBatch (2.31s) ./cmd/mesh-controller --- PASS: TestAStopNamesWhatStaysOnTheMachinesAndWhatStillCarriesIt (0.66s) ./cmd/mesh-controller --- PASS: TestAStopWithoutAMergeLeavesItOutOfABatch (0.48s) ./cmd/mesh-controller --- PASS: TestSavingPlansAndMovingMergesIsOneAct (0.43s) ./cmd/mesh-controller --- PASS: TestAPlanFollowedFromTheStoreAnswersWhenItMoves (7.00s) ./cmd/mesh-controller --- PASS: TestNodeShowAndStatusReadTheLastSendFromTheStore (0.48s) ./cmd/mesh-controller --- PASS: TestTheConditionsVerbReadsTheLooksTheBucketNoLongerHolds (0.54s) ./cmd/mesh-controller --- PASS: TestAWalkLetGoAndStoppedByVerbsIsSaidStartedAndEnded (0.29s) ./cmd/mesh-controller --- PASS: TestAWalkStoppedOrClosedByAPersonIsSaidEndedStopped (0.30s) ./cmd/mesh-controller --- PASS: TestAWalkRetriedByAPersonIsSaidStartedAgain (0.23s) ./cmd/mesh-controller --- PASS: TestABacklogReleasedByAPersonIsSaidStarted (0.26s) ./cmd/mesh-controller --- PASS: TestAWalkEndedByCancelOrClearIsSaidEnded (0.33s) ./cmd/mesh-controller --- PASS: TestAWalkRestartedByARebuildIsSaidStarted (0.23s) ./cmd/mesh-controller --- PASS: TestAWalkStoppedByHandAndRetriedEndsFailedWhenItFailsAgain (0.27s) ./cmd/mesh-controller --- PASS: TestReplay237 (0.26s) ./cmd/mesh-controller --- PASS: TestAnUnassignThatLeavesItsNodeUnresolvedSaysSoOnceInItsAnswer (0.39s) ./cmd/mesh-controller --- PASS: TestAnUnassignThatLeavesItsNodeResolvedSaysNothingOfIt (1.74s) ./cmd/mesh-controller --- PASS: TestAnAssignThatLeavesItsNodeUnresolvedSaysOnlyThePlansRefusal (0.62s) ./cmd/mesh-controller --- PASS: TestADirectoryOwnersKeyIsRefusedThroughAVerb (0.57s) ./cmd/mesh-controller --- PASS: TestTheSendMakesNoValueForAnOutsideSecretNobodyGave (0.60s) ./cmd/mesh-controller --- PASS: TestAQuestionComposesWithoutAnOutsideSecretNobodyGave (0.96s) ./cmd/mesh-controller --- PASS: TestReplay201 (0.53s) ./cmd/mesh-controller --- PASS: TestARollbackWhoseSendWasRefusedIsCompletedByTheNextSend (0.63s) ./cmd/mesh-controller --- PASS: TestAGateJudgesTheOtherMovesBesideAKeptCore (0.47s) ./cmd/mesh-controller --- PASS: TestReplay401 (0.45s) ./cmd/mesh-controller --- PASS: TestReplay201ThePlansSend (0.32s) ./cmd/mesh-controller --- PASS: TestPlanAndNodeListAnOptionalRequirementLeftUnbound (0.76s) ./cmd/mesh-controller --- PASS: TestReplay340 (0.36s) ./cmd/mesh-controller --- PASS: TestOnlyATrustedFilesNamedKeyIsRefusedThroughAVerb (0.24s) ./cmd/mesh-controller --- PASS: TestReplay349 (0.43s) ./cmd/mesh-controller --- PASS: TestReplay348AFaultFromBeforeTheSendFailsNoGate (0.24s) ./cmd/mesh-controller --- PASS: TestReplay239AModuleNameIsNotTakenOverByAnotherRepository (0.20s) ./cmd/mesh-controller --- PASS: TestAWalkThatMovedNothingSaysWhichModulesMatchedWhatRuns (0.78s) ./cmd/mesh-controller --- PASS: TestAWalkWhoseEveryBuildCameOutTheSameIsDone (0.27s) ./cmd/mesh-controller --- PASS: TestReplay614ANewSDKPlansTheToolchainAndThenItsBundles (0.11s) ./cmd/mesh-controller --- PASS: TestOneAcceptForAProviderIsPlacedForEveryConsumer (1.83s) ./cmd/mesh-controller --- PASS: TestReplay164 (0.45s) ./cmd/mesh-controller --- PASS: TestAnApprovedLayerOpensTheWalkThatSendsIt (0.35s) ./cmd/mesh-controller --- PASS: TestASettingsWalkSendsOneMachineAtATimeEachJudged (0.35s) ./cmd/mesh-controller --- PASS: TestAFailedSettingsWalkStopsAndHoldsNothingBack (0.26s) ./cmd/mesh-controller --- PASS: TestASettingsWalkSendsTheLayerAloneEveryBuildKept (0.26s) ./cmd/mesh-controller --- PASS: TestASettingsWalkStopsBeforeADataMoveAndPassesOverAMachineAway (0.66s) ./cmd/mesh-controller --- PASS: TestACrossingSendSupersedesASettingsGate (0.22s) ./cmd/mesh-controller --- PASS: TestASettingsWalkFailsOnARefusalThatCannotClear (0.21s) ./cmd/mesh-controller --- PASS: TestAProviderElsewhereServesItsOwnComposedName (0.38s) ./cmd/mesh-controller --- PASS: TestAReusedCheckBuildIsRegisteredByItsDigestAndGatedAsABuiltOne (1.03s) ./cmd/mesh-controller --- PASS: TestAReleaseSendsTheRestAtOnceAfterTheFirstPasses (0.38s) ./cmd/mesh-controller --- PASS: TestARestMachineThatFailsIsPutBackAloneAndTheOthersAreJudgedOn (0.34s) ./cmd/mesh-controller --- PASS: TestAWalkTakesOverTheReadingsOfAGateJudgingTheSameBuildThere (0.28s) ./cmd/mesh-controller --- PASS: TestAFirstSendMadeAndNotKeptIsNotSentAgain (0.36s) ./cmd/mesh-controller --- PASS: TestAReleaseSendKeptAndMadeIsNotMadeAgain (0.29s) ./cmd/mesh-controller --- PASS: TestAFirstMachineThatFailsStillStopsTheWalk (0.24s) ./cmd/mesh-controller --- PASS: TestTheControlNodeIsSentLastInAStep (0.29s) ./cmd/mesh-controller --- PASS: TestARestMachineSilentPastItsBoundIsLeftAndSaid (0.28s) ./cmd/mesh-controller --- PASS: TestANoMoveTierWaitsForNoNewReport (0.45s) ./cmd/mesh-controller --- PASS: TestOneProviderDownAndThreeConsumersFailingAreOneCondition (2.39s) ./cmd/mesh-controller --- PASS: TestAConsumerFailingBesideAHealthyProviderIsItsOwn (0.22s) ./internal/inventory --- PASS: TestTheLastSendSaysWhatTheMachineAnswered (0.23s) ./internal/inventory --- PASS: TestAReportIsTheLastSendsAnswerOnlyWhenItIsAboutThatSend (0.27s) ./internal/inventory --- PASS: TestAnIssuedValueIsSealedToEveryHolderOnceAndNotAgain (0.21s) ./internal/inventory --- PASS: TestAnIssuedValueIsSealedAgainAfterAKeyChangeOrAnAcceptance (0.18s) ./internal/inventory --- PASS: TestAConditionsLooksAreKeptBesideTheBucket (0.16s) ./internal/inventory --- PASS: TestAPlanIdHoldingAQuoteIsReadAsAPlainId (0.26s) ./internal/inventory --- PASS: TestAWalksStartIsKeptAndARefusedSaveLeavesItUnsaid (0.30s) ./internal/inventory --- PASS: TestAWalksRestIsReadFromEachMachinesOwnSend (0.26s) ./internal/inventory --- PASS: TestAStoredBuildWithASilentMergeableFileIsStillReadAndComposed (0.23s) ./internal/inventory --- PASS: TestACredentialIssuedOutsideIsNeverMade (0.23s) ./internal/inventory --- PASS: TestOneAcceptForAProviderIsSealedToEveryConsumer (0.22s) ./internal/inventory --- PASS: TestASharedOwnSecretIssuedOutsideIsNeverMade (0.20s) ./internal/inventory --- PASS: TestAReportOfABusyContainerIsKeptAndReadBack (0.49s) ./internal/inventory --- PASS: TestWhatRunsIsTheRegisteredBuildNotANewerOnePutBack (0.35s) ```
Author
Contributor

Merge check at b34055f5
Judged: head b34055f580d4 merged into trunk 86057f455194; read beside it: mesh-catalog fadf5025cc5a, mesh-controller-main 86057f455194, mesh-host 1a2677882380, 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-controller, route-proxy)
  • mesh/repo-check: PASS — its merge-check.sh passed

Delivery plan — builds build-agent, mesh-controller, route-proxy → ace, g14, novox, shanks; no bus step

  • tier 0: mesh-controller, route-proxy
  • tier 1: build-agent
  • ace: receives route-proxy, build-agent
  • g14: receives build-agent
  • novox: receives mesh-controller, route-proxy, build-agent
  • shanks: receives build-agent
  • route-proxy provides route: its consumers are sent again after it
  • route-proxy keeps data (ADR 0233): what it holds is backed up before it moves
  • 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 route-proxy, build-agent is judged on its first machine

Run by the build seat on shanks as build-1792008864037552356 (builds --log build-1792008864037552356).

--- the gate: build-agent, mesh-controller, route-proxy
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-14T20:00:09Z 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-14T20:00:09Z

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 2 module(s) in 2 tier(s): build-agent, mesh-controller

notes:
  - cmd/mesh-controller/same_program_test.go, internal/builder/same_program_test.go, internal/inventory/registered_held_test.go and testdata/store-tests 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.194s
ok  	github.com/novox/mesh-controller/examples/objectstore-provisioner	1.057s
ok  	github.com/novox/mesh-controller/examples/postgres-provisioner	1.109s
ok  	github.com/novox/mesh-controller/examples/redis-provisioner	1.039s
ok  	github.com/novox/mesh-controller/examples/route-proxy	1.308s
ok  	github.com/novox/mesh-controller/internal/artifacts	1.198s
?   	github.com/novox/mesh-controller/internal/beside	[no test files]
ok  	github.com/novox/mesh-controller/internal/broker	6.173s
ok  	github.com/novox/mesh-controller/internal/catalogue	15.295s
ok  	github.com/novox/mesh-controller/internal/conditions	3.264s
ok  	github.com/novox/mesh-controller/internal/envfile	1.074s
ok  	github.com/novox/mesh-controller/internal/facts	1.083s
ok  	github.com/novox/mesh-controller/internal/identity	7.717s
ok  	github.com/novox/mesh-controller/internal/lease	10.343s
ok  	github.com/novox/mesh-controller/internal/licences	6.018s
ok  	github.com/novox/mesh-controller/internal/licences/adapters	1.084s
ok  	github.com/novox/mesh-controller/internal/lint	3.224s
ok  	github.com/novox/mesh-controller/internal/outward	1.113s
ok  	github.com/novox/mesh-controller/internal/overlay	1.090s
ok  	github.com/novox/mesh-controller/internal/secrets	1.740s
ok  	github.com/novox/mesh-controller/internal/store	3.913s
ok  	github.com/novox/mesh-controller/internal/testbus	1.299s
ok  	github.com/novox/mesh-controller/internal/token	1.064s
ok  	github.com/novox/mesh-controller/cmd/mesh-controller	33s	(shard 1 of 8: 116 tests)
ok  	github.com/novox/mesh-controller/cmd/mesh-controller	40s	(shard 2 of 8: 116 tests)
ok  	github.com/novox/mesh-controller/cmd/mesh-controller	44s	(shard 3 of 8: 115 tests)
ok  	github.com/novox/mesh-controller/cmd/mesh-controller	37s	(shard 4 of 8: 115 tests)
ok  	github.com/novox/mesh-controller/cmd/mesh-controller	36s	(shard 5 of 8: 115 tests)
ok  	github.com/novox/mesh-controller/cmd/mesh-controller	29s	(shard 6 of 8: 115 tests)
ok  	github.com/novox/mesh-controller/cmd/mesh-controller	36s	(shard 7 of 8: 115 tests)
ok  	github.com/novox/mesh-controller/cmd/mesh-controller	34s	(shard 8 of 8: 115 tests)
ok  	github.com/novox/mesh-controller/internal/inventory	16s	(shard 1 of 4: 69 tests)
ok  	github.com/novox/mesh-controller/internal/inventory	15s	(shard 2 of 4: 68 tests)
ok  	github.com/novox/mesh-controller/internal/inventory	16s	(shard 3 of 4: 68 tests)
ok  	github.com/novox/mesh-controller/internal/inventory	16s	(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	15s	(shard 2 of 4: 51 tests)
ok  	github.com/novox/mesh-controller/internal/builder	38s	(shard 3 of 4: 51 tests)
ok  	github.com/novox/mesh-controller/internal/builder	19s	(shard 4 of 4: 51 tests)
ok  	github.com/novox/mesh-controller/internal/link	13s	(shard 1 of 4: 44 tests)
ok  	github.com/novox/mesh-controller/internal/link	21s	(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.51s)
  ./cmd/mesh-controller --- PASS: TestAStopWithoutAMergeEndsTheMergesThatContainIt (0.78s)
  ./cmd/mesh-controller --- PASS: TestAStopWalksTheOthersAgainInTheOpenBatch (0.65s)
  ./cmd/mesh-controller --- PASS: TestAStopNamesWhatStaysOnTheMachinesAndWhatStillCarriesIt (0.50s)
  ./cmd/mesh-controller --- PASS: TestAStopWithoutAMergeLeavesItOutOfABatch (0.58s)
  ./cmd/mesh-controller --- PASS: TestSavingPlansAndMovingMergesIsOneAct (0.61s)
  ./cmd/mesh-controller --- PASS: TestAPlanFollowedFromTheStoreAnswersWhenItMoves (2.08s)
  ./cmd/mesh-controller --- PASS: TestNodeShowAndStatusReadTheLastSendFromTheStore (0.64s)
  ./cmd/mesh-controller --- PASS: TestTheConditionsVerbReadsTheLooksTheBucketNoLongerHolds (0.25s)
  ./cmd/mesh-controller --- PASS: TestAWalkLetGoAndStoppedByVerbsIsSaidStartedAndEnded (0.77s)
  ./cmd/mesh-controller --- PASS: TestAWalkStoppedOrClosedByAPersonIsSaidEndedStopped (0.56s)
  ./cmd/mesh-controller --- PASS: TestAWalkRetriedByAPersonIsSaidStartedAgain (0.35s)
  ./cmd/mesh-controller --- PASS: TestABacklogReleasedByAPersonIsSaidStarted (0.32s)
  ./cmd/mesh-controller --- PASS: TestAWalkEndedByCancelOrClearIsSaidEnded (0.75s)
  ./cmd/mesh-controller --- PASS: TestAWalkRestartedByARebuildIsSaidStarted (0.37s)
  ./cmd/mesh-controller --- PASS: TestAWalkStoppedByHandAndRetriedEndsFailedWhenItFailsAgain (0.42s)
  ./cmd/mesh-controller --- PASS: TestReplay237 (0.33s)
  ./cmd/mesh-controller --- PASS: TestAnUnassignThatLeavesItsNodeUnresolvedSaysSoOnceInItsAnswer (0.43s)
  ./cmd/mesh-controller --- PASS: TestAnUnassignThatLeavesItsNodeResolvedSaysNothingOfIt (0.40s)
  ./cmd/mesh-controller --- PASS: TestAnAssignThatLeavesItsNodeUnresolvedSaysOnlyThePlansRefusal (0.34s)
  ./cmd/mesh-controller --- PASS: TestADirectoryOwnersKeyIsRefusedThroughAVerb (0.38s)
  ./cmd/mesh-controller --- PASS: TestTheSendMakesNoValueForAnOutsideSecretNobodyGave (0.58s)
  ./cmd/mesh-controller --- PASS: TestAQuestionComposesWithoutAnOutsideSecretNobodyGave (0.47s)
  ./cmd/mesh-controller --- PASS: TestReplay201 (0.28s)
  ./cmd/mesh-controller --- PASS: TestARollbackWhoseSendWasRefusedIsCompletedByTheNextSend (0.40s)
  ./cmd/mesh-controller --- PASS: TestAGateJudgesTheOtherMovesBesideAKeptCore (0.40s)
  ./cmd/mesh-controller --- PASS: TestReplay401 (0.31s)
  ./cmd/mesh-controller --- PASS: TestReplay201ThePlansSend (0.35s)
  ./cmd/mesh-controller --- PASS: TestPlanAndNodeListAnOptionalRequirementLeftUnbound (3.42s)
  ./cmd/mesh-controller --- PASS: TestReplay340 (0.36s)
  ./cmd/mesh-controller --- PASS: TestOnlyATrustedFilesNamedKeyIsRefusedThroughAVerb (0.38s)
  ./cmd/mesh-controller --- PASS: TestReplay349 (0.22s)
  ./cmd/mesh-controller --- PASS: TestReplay348AFaultFromBeforeTheSendFailsNoGate (0.22s)
  ./cmd/mesh-controller --- PASS: TestReplay239AModuleNameIsNotTakenOverByAnotherRepository (0.28s)
  ./cmd/mesh-controller --- PASS: TestAWalkThatMovedNothingSaysWhichModulesMatchedWhatRuns (0.59s)
  ./cmd/mesh-controller --- PASS: TestAWalkWhoseEveryBuildCameOutTheSameIsDone (0.26s)
  ./cmd/mesh-controller --- PASS: TestReplay614ANewSDKPlansTheToolchainAndThenItsBundles (0.08s)
  ./cmd/mesh-controller --- PASS: TestOneAcceptForAProviderIsPlacedForEveryConsumer (0.81s)
  ./cmd/mesh-controller --- PASS: TestReplay164 (0.44s)
  ./cmd/mesh-controller --- PASS: TestAnApprovedLayerOpensTheWalkThatSendsIt (0.24s)
  ./cmd/mesh-controller --- PASS: TestASettingsWalkSendsOneMachineAtATimeEachJudged (0.23s)
  ./cmd/mesh-controller --- PASS: TestAFailedSettingsWalkStopsAndHoldsNothingBack (0.22s)
  ./cmd/mesh-controller --- PASS: TestASettingsWalkSendsTheLayerAloneEveryBuildKept (0.28s)
  ./cmd/mesh-controller --- PASS: TestASettingsWalkStopsBeforeADataMoveAndPassesOverAMachineAway (2.24s)
  ./cmd/mesh-controller --- PASS: TestACrossingSendSupersedesASettingsGate (0.54s)
  ./cmd/mesh-controller --- PASS: TestASettingsWalkFailsOnARefusalThatCannotClear (0.50s)
  ./cmd/mesh-controller --- PASS: TestAProviderElsewhereServesItsOwnComposedName (0.28s)
  ./cmd/mesh-controller --- PASS: TestAReusedCheckBuildIsRegisteredByItsDigestAndGatedAsABuiltOne (0.54s)
  ./cmd/mesh-controller --- PASS: TestAReleaseSendsTheRestAtOnceAfterTheFirstPasses (0.25s)
  ./cmd/mesh-controller --- PASS: TestARestMachineThatFailsIsPutBackAloneAndTheOthersAreJudgedOn (0.24s)
  ./cmd/mesh-controller --- PASS: TestAWalkTakesOverTheReadingsOfAGateJudgingTheSameBuildThere (0.20s)
  ./cmd/mesh-controller --- PASS: TestAFirstSendMadeAndNotKeptIsNotSentAgain (0.26s)
  ./cmd/mesh-controller --- PASS: TestAReleaseSendKeptAndMadeIsNotMadeAgain (0.20s)
  ./cmd/mesh-controller --- PASS: TestAFirstMachineThatFailsStillStopsTheWalk (0.21s)
  ./cmd/mesh-controller --- PASS: TestTheControlNodeIsSentLastInAStep (0.25s)
  ./cmd/mesh-controller --- PASS: TestARestMachineSilentPastItsBoundIsLeftAndSaid (0.28s)
  ./cmd/mesh-controller --- PASS: TestANoMoveTierWaitsForNoNewReport (0.62s)
  ./cmd/mesh-controller --- PASS: TestOneProviderDownAndThreeConsumersFailingAreOneCondition (0.35s)
  ./cmd/mesh-controller --- PASS: TestAConsumerFailingBesideAHealthyProviderIsItsOwn (0.30s)
  ./internal/inventory --- PASS: TestTheLastSendSaysWhatTheMachineAnswered (0.09s)
  ./internal/inventory --- PASS: TestAReportIsTheLastSendsAnswerOnlyWhenItIsAboutThatSend (0.10s)
  ./internal/inventory --- PASS: TestAnIssuedValueIsSealedToEveryHolderOnceAndNotAgain (0.11s)
  ./internal/inventory --- PASS: TestAnIssuedValueIsSealedAgainAfterAKeyChangeOrAnAcceptance (0.10s)
  ./internal/inventory --- PASS: TestAConditionsLooksAreKeptBesideTheBucket (0.09s)
  ./internal/inventory --- PASS: TestAPlanIdHoldingAQuoteIsReadAsAPlainId (0.08s)
  ./internal/inventory --- PASS: TestAWalksStartIsKeptAndARefusedSaveLeavesItUnsaid (0.11s)
  ./internal/inventory --- PASS: TestAWalksRestIsReadFromEachMachinesOwnSend (0.09s)
  ./internal/inventory --- PASS: TestAStoredBuildWithASilentMergeableFileIsStillReadAndComposed (0.09s)
  ./internal/inventory --- PASS: TestACredentialIssuedOutsideIsNeverMade (0.11s)
  ./internal/inventory --- PASS: TestOneAcceptForAProviderIsSealedToEveryConsumer (0.10s)
  ./internal/inventory --- PASS: TestASharedOwnSecretIssuedOutsideIsNeverMade (0.08s)
  ./internal/inventory --- PASS: TestAReportOfABusyContainerIsKeptAndReadBack (0.43s)
  ./internal/inventory --- PASS: TestWhatRunsIsTheRegisteredBuildNotANewerOnePutBack (0.10s)
**Merge check** at `b34055f5` Judged: head `b34055f580d4` merged into trunk `86057f455194`; read beside it: mesh-catalog `fadf5025cc5a`, mesh-controller-main `86057f455194`, mesh-host `1a2677882380`, 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-controller, route-proxy) - `mesh/repo-check`: **PASS** — its merge-check.sh passed **Delivery plan** — builds build-agent, mesh-controller, route-proxy → ace, g14, novox, shanks; no bus step - tier 0: mesh-controller, route-proxy - tier 1: build-agent - ace: receives route-proxy, build-agent - g14: receives build-agent - novox: receives mesh-controller, route-proxy, build-agent - shanks: receives build-agent - route-proxy provides route: its consumers are sent again after it - route-proxy keeps data (ADR 0233): what it holds is backed up before it moves - 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 route-proxy, build-agent is judged on its first machine Run by the build seat on shanks as `build-1792008864037552356` (`builds --log build-1792008864037552356`). ``` --- the gate: build-agent, mesh-controller, route-proxy 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-14T20:00:09Z 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-14T20:00:09Z 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 2 module(s) in 2 tier(s): build-agent, mesh-controller notes: - cmd/mesh-controller/same_program_test.go, internal/builder/same_program_test.go, internal/inventory/registered_held_test.go and testdata/store-tests 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.194s ok github.com/novox/mesh-controller/examples/objectstore-provisioner 1.057s ok github.com/novox/mesh-controller/examples/postgres-provisioner 1.109s ok github.com/novox/mesh-controller/examples/redis-provisioner 1.039s ok github.com/novox/mesh-controller/examples/route-proxy 1.308s ok github.com/novox/mesh-controller/internal/artifacts 1.198s ? github.com/novox/mesh-controller/internal/beside [no test files] ok github.com/novox/mesh-controller/internal/broker 6.173s ok github.com/novox/mesh-controller/internal/catalogue 15.295s ok github.com/novox/mesh-controller/internal/conditions 3.264s ok github.com/novox/mesh-controller/internal/envfile 1.074s ok github.com/novox/mesh-controller/internal/facts 1.083s ok github.com/novox/mesh-controller/internal/identity 7.717s ok github.com/novox/mesh-controller/internal/lease 10.343s ok github.com/novox/mesh-controller/internal/licences 6.018s ok github.com/novox/mesh-controller/internal/licences/adapters 1.084s ok github.com/novox/mesh-controller/internal/lint 3.224s ok github.com/novox/mesh-controller/internal/outward 1.113s ok github.com/novox/mesh-controller/internal/overlay 1.090s ok github.com/novox/mesh-controller/internal/secrets 1.740s ok github.com/novox/mesh-controller/internal/store 3.913s ok github.com/novox/mesh-controller/internal/testbus 1.299s ok github.com/novox/mesh-controller/internal/token 1.064s ok github.com/novox/mesh-controller/cmd/mesh-controller 33s (shard 1 of 8: 116 tests) ok github.com/novox/mesh-controller/cmd/mesh-controller 40s (shard 2 of 8: 116 tests) ok github.com/novox/mesh-controller/cmd/mesh-controller 44s (shard 3 of 8: 115 tests) ok github.com/novox/mesh-controller/cmd/mesh-controller 37s (shard 4 of 8: 115 tests) ok github.com/novox/mesh-controller/cmd/mesh-controller 36s (shard 5 of 8: 115 tests) ok github.com/novox/mesh-controller/cmd/mesh-controller 29s (shard 6 of 8: 115 tests) ok github.com/novox/mesh-controller/cmd/mesh-controller 36s (shard 7 of 8: 115 tests) ok github.com/novox/mesh-controller/cmd/mesh-controller 34s (shard 8 of 8: 115 tests) ok github.com/novox/mesh-controller/internal/inventory 16s (shard 1 of 4: 69 tests) ok github.com/novox/mesh-controller/internal/inventory 15s (shard 2 of 4: 68 tests) ok github.com/novox/mesh-controller/internal/inventory 16s (shard 3 of 4: 68 tests) ok github.com/novox/mesh-controller/internal/inventory 16s (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 15s (shard 2 of 4: 51 tests) ok github.com/novox/mesh-controller/internal/builder 38s (shard 3 of 4: 51 tests) ok github.com/novox/mesh-controller/internal/builder 19s (shard 4 of 4: 51 tests) ok github.com/novox/mesh-controller/internal/link 13s (shard 1 of 4: 44 tests) ok github.com/novox/mesh-controller/internal/link 21s (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.51s) ./cmd/mesh-controller --- PASS: TestAStopWithoutAMergeEndsTheMergesThatContainIt (0.78s) ./cmd/mesh-controller --- PASS: TestAStopWalksTheOthersAgainInTheOpenBatch (0.65s) ./cmd/mesh-controller --- PASS: TestAStopNamesWhatStaysOnTheMachinesAndWhatStillCarriesIt (0.50s) ./cmd/mesh-controller --- PASS: TestAStopWithoutAMergeLeavesItOutOfABatch (0.58s) ./cmd/mesh-controller --- PASS: TestSavingPlansAndMovingMergesIsOneAct (0.61s) ./cmd/mesh-controller --- PASS: TestAPlanFollowedFromTheStoreAnswersWhenItMoves (2.08s) ./cmd/mesh-controller --- PASS: TestNodeShowAndStatusReadTheLastSendFromTheStore (0.64s) ./cmd/mesh-controller --- PASS: TestTheConditionsVerbReadsTheLooksTheBucketNoLongerHolds (0.25s) ./cmd/mesh-controller --- PASS: TestAWalkLetGoAndStoppedByVerbsIsSaidStartedAndEnded (0.77s) ./cmd/mesh-controller --- PASS: TestAWalkStoppedOrClosedByAPersonIsSaidEndedStopped (0.56s) ./cmd/mesh-controller --- PASS: TestAWalkRetriedByAPersonIsSaidStartedAgain (0.35s) ./cmd/mesh-controller --- PASS: TestABacklogReleasedByAPersonIsSaidStarted (0.32s) ./cmd/mesh-controller --- PASS: TestAWalkEndedByCancelOrClearIsSaidEnded (0.75s) ./cmd/mesh-controller --- PASS: TestAWalkRestartedByARebuildIsSaidStarted (0.37s) ./cmd/mesh-controller --- PASS: TestAWalkStoppedByHandAndRetriedEndsFailedWhenItFailsAgain (0.42s) ./cmd/mesh-controller --- PASS: TestReplay237 (0.33s) ./cmd/mesh-controller --- PASS: TestAnUnassignThatLeavesItsNodeUnresolvedSaysSoOnceInItsAnswer (0.43s) ./cmd/mesh-controller --- PASS: TestAnUnassignThatLeavesItsNodeResolvedSaysNothingOfIt (0.40s) ./cmd/mesh-controller --- PASS: TestAnAssignThatLeavesItsNodeUnresolvedSaysOnlyThePlansRefusal (0.34s) ./cmd/mesh-controller --- PASS: TestADirectoryOwnersKeyIsRefusedThroughAVerb (0.38s) ./cmd/mesh-controller --- PASS: TestTheSendMakesNoValueForAnOutsideSecretNobodyGave (0.58s) ./cmd/mesh-controller --- PASS: TestAQuestionComposesWithoutAnOutsideSecretNobodyGave (0.47s) ./cmd/mesh-controller --- PASS: TestReplay201 (0.28s) ./cmd/mesh-controller --- PASS: TestARollbackWhoseSendWasRefusedIsCompletedByTheNextSend (0.40s) ./cmd/mesh-controller --- PASS: TestAGateJudgesTheOtherMovesBesideAKeptCore (0.40s) ./cmd/mesh-controller --- PASS: TestReplay401 (0.31s) ./cmd/mesh-controller --- PASS: TestReplay201ThePlansSend (0.35s) ./cmd/mesh-controller --- PASS: TestPlanAndNodeListAnOptionalRequirementLeftUnbound (3.42s) ./cmd/mesh-controller --- PASS: TestReplay340 (0.36s) ./cmd/mesh-controller --- PASS: TestOnlyATrustedFilesNamedKeyIsRefusedThroughAVerb (0.38s) ./cmd/mesh-controller --- PASS: TestReplay349 (0.22s) ./cmd/mesh-controller --- PASS: TestReplay348AFaultFromBeforeTheSendFailsNoGate (0.22s) ./cmd/mesh-controller --- PASS: TestReplay239AModuleNameIsNotTakenOverByAnotherRepository (0.28s) ./cmd/mesh-controller --- PASS: TestAWalkThatMovedNothingSaysWhichModulesMatchedWhatRuns (0.59s) ./cmd/mesh-controller --- PASS: TestAWalkWhoseEveryBuildCameOutTheSameIsDone (0.26s) ./cmd/mesh-controller --- PASS: TestReplay614ANewSDKPlansTheToolchainAndThenItsBundles (0.08s) ./cmd/mesh-controller --- PASS: TestOneAcceptForAProviderIsPlacedForEveryConsumer (0.81s) ./cmd/mesh-controller --- PASS: TestReplay164 (0.44s) ./cmd/mesh-controller --- PASS: TestAnApprovedLayerOpensTheWalkThatSendsIt (0.24s) ./cmd/mesh-controller --- PASS: TestASettingsWalkSendsOneMachineAtATimeEachJudged (0.23s) ./cmd/mesh-controller --- PASS: TestAFailedSettingsWalkStopsAndHoldsNothingBack (0.22s) ./cmd/mesh-controller --- PASS: TestASettingsWalkSendsTheLayerAloneEveryBuildKept (0.28s) ./cmd/mesh-controller --- PASS: TestASettingsWalkStopsBeforeADataMoveAndPassesOverAMachineAway (2.24s) ./cmd/mesh-controller --- PASS: TestACrossingSendSupersedesASettingsGate (0.54s) ./cmd/mesh-controller --- PASS: TestASettingsWalkFailsOnARefusalThatCannotClear (0.50s) ./cmd/mesh-controller --- PASS: TestAProviderElsewhereServesItsOwnComposedName (0.28s) ./cmd/mesh-controller --- PASS: TestAReusedCheckBuildIsRegisteredByItsDigestAndGatedAsABuiltOne (0.54s) ./cmd/mesh-controller --- PASS: TestAReleaseSendsTheRestAtOnceAfterTheFirstPasses (0.25s) ./cmd/mesh-controller --- PASS: TestARestMachineThatFailsIsPutBackAloneAndTheOthersAreJudgedOn (0.24s) ./cmd/mesh-controller --- PASS: TestAWalkTakesOverTheReadingsOfAGateJudgingTheSameBuildThere (0.20s) ./cmd/mesh-controller --- PASS: TestAFirstSendMadeAndNotKeptIsNotSentAgain (0.26s) ./cmd/mesh-controller --- PASS: TestAReleaseSendKeptAndMadeIsNotMadeAgain (0.20s) ./cmd/mesh-controller --- PASS: TestAFirstMachineThatFailsStillStopsTheWalk (0.21s) ./cmd/mesh-controller --- PASS: TestTheControlNodeIsSentLastInAStep (0.25s) ./cmd/mesh-controller --- PASS: TestARestMachineSilentPastItsBoundIsLeftAndSaid (0.28s) ./cmd/mesh-controller --- PASS: TestANoMoveTierWaitsForNoNewReport (0.62s) ./cmd/mesh-controller --- PASS: TestOneProviderDownAndThreeConsumersFailingAreOneCondition (0.35s) ./cmd/mesh-controller --- PASS: TestAConsumerFailingBesideAHealthyProviderIsItsOwn (0.30s) ./internal/inventory --- PASS: TestTheLastSendSaysWhatTheMachineAnswered (0.09s) ./internal/inventory --- PASS: TestAReportIsTheLastSendsAnswerOnlyWhenItIsAboutThatSend (0.10s) ./internal/inventory --- PASS: TestAnIssuedValueIsSealedToEveryHolderOnceAndNotAgain (0.11s) ./internal/inventory --- PASS: TestAnIssuedValueIsSealedAgainAfterAKeyChangeOrAnAcceptance (0.10s) ./internal/inventory --- PASS: TestAConditionsLooksAreKeptBesideTheBucket (0.09s) ./internal/inventory --- PASS: TestAPlanIdHoldingAQuoteIsReadAsAPlainId (0.08s) ./internal/inventory --- PASS: TestAWalksStartIsKeptAndARefusedSaveLeavesItUnsaid (0.11s) ./internal/inventory --- PASS: TestAWalksRestIsReadFromEachMachinesOwnSend (0.09s) ./internal/inventory --- PASS: TestAStoredBuildWithASilentMergeableFileIsStillReadAndComposed (0.09s) ./internal/inventory --- PASS: TestACredentialIssuedOutsideIsNeverMade (0.11s) ./internal/inventory --- PASS: TestOneAcceptForAProviderIsSealedToEveryConsumer (0.10s) ./internal/inventory --- PASS: TestASharedOwnSecretIssuedOutsideIsNeverMade (0.08s) ./internal/inventory --- PASS: TestAReportOfABusyContainerIsKeptAndReadBack (0.43s) ./internal/inventory --- PASS: TestWhatRunsIsTheRegisteredBuildNotANewerOnePutBack (0.10s) ```
mesh-admin merged commit 5d22d7df86 into main 2026-10-14 20:21:06 +00:00
mesh-admin deleted branch fix/a-module-moves-only-when-its-program-changes 2026-10-14 20:21:06 +00:00
Sign in to join this conversation.
No Reviewers
2 Participants
Notifications
Due Date
No due date set.
Dependencies

No dependencies set.

Reference: novox/mesh-controller#336