No merge is dropped, and the merge window lives on the bus (issues 973 step 2, 921) #367

Merged
mesh-tools merged 12 commits from feat/merge-window-on-the-bus into main 2026-10-17 10:54:05 +00:00
Member

Milestone 1 of hq design 47, step 2 (issues 973 and 921). Decisions: ADR 0407 §1 and §3.

  • A merge is never dropped (issue 921). A merge the controller cannot record now (another controller holds the plans, the store away) is held on the bus and handed over again; on shutdown it is left unsettled. Merged events have a durable consumer of their own, controller-merges: no max-deliver, not reset by healer H4, a delay growing from 5 s to 5 min; it is asserted before the events consumer and, when it takes over, starts at that consumer's ack floor + 1, so the delivery of this change loses no merge.
  • The window on the bus. Bucket mesh-controller_merge-window: per open batch a key <batch>.quiet (time to live = the window, made again on each merge) and <batch>.most (the at-most, once), rounded up to whole seconds; a watcher runs a cut look on the first expiry. The 5 s cutter goes; looks on a merge, an expiry, taking the lease and each rollout pass.
  • The 5 min merge catch-up goes, with signal S5 and its watchdog.
  • The batch records stay in the store until milestone 5 moves them (ADR 0408 §8).

Tests: pure tests (TTL rounding, hold/unsettled, delay), testbus tests (held more than five times still recorded; an H4 reset leaves merges alone; the old consumer's unacked merge is taken over), and two integration tests listed in testdata/store-tests (a held merge is recorded and carried by the next rollout; a window closes by its key's expiry).

Reviewed in three rounds, approved at 20e14872. For later: issues 1006, 983, 984.

Milestone 1 of hq design 47, step 2 (issues 973 and 921). Decisions: ADR 0407 §1 and §3. - **A merge is never dropped (issue 921).** A merge the controller cannot record now (another controller holds the plans, the store away) is held on the bus and handed over again; on shutdown it is left unsettled. Merged events have a durable consumer of their own, `controller-merges`: no max-deliver, not reset by healer H4, a delay growing from 5 s to 5 min; it is asserted before the events consumer and, when it takes over, starts at that consumer's ack floor + 1, so the delivery of this change loses no merge. - **The window on the bus.** Bucket `mesh-controller_merge-window`: per open batch a key `<batch>.quiet` (time to live = the window, made again on each merge) and `<batch>.most` (the at-most, once), rounded up to whole seconds; a watcher runs a cut look on the first expiry. The 5 s cutter goes; looks on a merge, an expiry, taking the lease and each rollout pass. - **The 5 min merge catch-up goes**, with signal S5 and its watchdog. - The batch records stay in the store until milestone 5 moves them (ADR 0408 §8). Tests: pure tests (TTL rounding, hold/unsettled, delay), testbus tests (held more than five times still recorded; an H4 reset leaves merges alone; the old consumer's unacked merge is taken over), and two integration tests listed in testdata/store-tests (a held merge is recorded and carried by the next rollout; a window closes by its key's expiry). Reviewed in three rounds, approved at 20e14872. For later: issues 1006, 983, 984.
mesh-tools added 10 commits 2026-10-17 10:34:56 +00:00
Make the merges consumer before the events consumer narrows, from the old one's ack floor, so no merge is lost to the change (issue 973)
mesh/merge-gate head 20e14872ef1e merged into trunk b0d489a86c23 — pass: builds build-agent, mesh-controller, route-proxy → ace, g14, novox, shanks; no bus…
mesh/repo-check head 20e14872ef1e merged into trunk b0d489a86c23 — fail: its merge-check.sh failed: --- FAIL: TestSSHClientOwnsTheOperatorsSSHConfig (0.07s…
mesh/delivery superseded: a newer head of the same pull request
20e14872ef
Author
Member

Delivery novox/mesh-controller@bafc31bf8568 — delivered since 2026-10-17T10:58:38Z

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

Machines

  • mesh-controller on every machine running it: sent
  • route-proxy on every machine running it: sent
  • build-agent on every machine running it: sent

Transitions

  • 2026-10-17 10:44 (new) → proposed (announced): novox/mesh-controller#367's head announced
  • 2026-10-17 10:51 proposed → checked (checked): a verdict names this commit and the trunk's head as its trunk commit
  • 2026-10-17 10:51 checked → ready (accepted): the gate passed or warned, and the repository's own check did not fail
  • 2026-10-17 10:54 ready → published (merged): on the trunk its modules follow: merged there, and its walk opened — or nothing for a walk to move
  • 2026-10-17 10:54 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-17 10:58 delivering → delivered (done): its walk is done, carrying its own commit: every machine of its deploy plan passed, or was left as its policy says

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

<!-- mesh-delivery:view --> **Delivery** `novox/mesh-controller@bafc31bf8568` — **delivered** since 2026-10-17T10:58:38Z **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 **Machines** - mesh-controller on every machine running it: sent - route-proxy on every machine running it: sent - build-agent on every machine running it: sent **Transitions** - 2026-10-17 10:44 (new) → proposed (announced): novox/mesh-controller#367's head announced - 2026-10-17 10:51 proposed → checked (checked): a verdict names this commit and the trunk's head as its trunk commit - 2026-10-17 10:51 checked → ready (accepted): the gate passed or warned, and the repository's own check did not fail - 2026-10-17 10:54 ready → published (merged): on the trunk its modules follow: merged there, and its walk opened — or nothing for a walk to move - 2026-10-17 10:54 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-17 10:58 delivering → delivered (done): its walk is done, carrying its own commit: every machine of its deploy plan passed, or was left as its policy says The commit's note under `refs/notes/mesh-plan` keeps every transition: `git log --notes=mesh-plan`.
mesh-tools added the mesh/ready label 2026-10-17 10:35:03 +00:00
Author
Member

ready at 20e14872ef

Reviewed by review-973@shanks: round 3 approved at 20e14872: no merge dropped (held, unsettled on shutdown, own consumer taking over at the ack floor), window keys rounded up with a watcher, cutter and catch-up gone. Marked through mesh-delivery.mark-ready (novox/hq issue 913).

ready at 20e14872ef1eea2790c709014d5c4e3460fa12f7 Reviewed by review-973@shanks: round 3 approved at 20e14872: no merge dropped (held, unsettled on shutdown, own consumer taking over at the ack floor), window keys rounded up with a watcher, cutter and catch-up gone. Marked through mesh-delivery.mark-ready (novox/hq issue 913).
Author
Member

Merge check at 20e14872
Judged: head 20e14872ef1e merged into trunk b0d489a86c23; read beside it: mesh-catalog a7d526838ab0, mesh-controller-main b0d489a86c23, mesh-host cd13f7726ef0, mesh-tools 7412c5b6c9c5

  • 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: FAIL — its merge-check.sh failed: --- FAIL: TestSSHClientOwnsTheOperatorsSSHConfig (0.07s); and TestMergesHeardWhileAnotherHolderHasThePlansAreRecordedAndCarried

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
  • read by no module's build: cmd/mesh-controller/batches_test.go, cmd/mesh-controller/merge_on_the_bus_test.go, cmd/mesh-controller/merge_window_bus_test.go, cmd/mesh-controller/missed_merges_test.go, cmd/mesh-controller/related_test.go, cmd/mesh-controller/signals_test.go, internal/broker/controller_buckets_test.go, internal/broker/testdata/composed.conf, internal/link/receive_fake_test.go, internal/link/receive_nats_test.go, internal/link/store_window_test.go, testdata/store-tests

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

b-4: the build seat did not say whether 44444444 is on its repository's trunk (it predates ADR 0238); registered as before
b-4: the list of predefined keys at 44444444 (generation 12) is published: font-size
b-5: the build seat did not say whether 55555555 is on its repository's trunk (it predates ADR 0238); registered as before
b-5: the list of predefined keys at 55555555 (generation 11) is not newer than the one kept, which stands
b-6: chimes is new to the catalogue, and novox/notifier on the git seat is no repository the catalogue builds a module from — registered, as asked at the controller's terminal
b-6: the build seat did not say whether 66666666 is on its repository's trunk (it predates ADR 0238); registered as before
plan-rollout: tier 0 done; asking tier 1: b
  tier 1: plan-mailu: mailu on anchor waits: it could not be judged — its build c0, which the machine was last sent, is not in the build records (novox/hq ADR 0377 §4)
plan-mailu: mailu on laptop went out: it recreates none of its containers and moves none of its data (novox/hq ADR 0377)
plan-mailu: tier 0 built; sent mailu to laptop, one send each
plan-mailu: done — novox/mesh-catalog at c2, 1 tier(s)
plan-engine: sending engine to anchor first after tier 0: a new bus build waits for its planned step: sending anchor would replace the bus (nats 88135ad0 → 32307bd1), which is a planned step: `bus upgrade --why …` snapshots its streams first and checks them after (novox/hq ADR 0236)
change plan of novox/mesh-host at 4fe1d0d6 into main: builds mesh-host, sent nowhere; no bus step
  tier 0: mesh-host
novox/mesh-host#114 (4fe1d0d6): nothing ended — the forge could not say the pull request's current head, so checks of its other heads keep running: cannot ask gitea.gitea_api: nothing serves gitea.gitea_api
novox/mesh-host#114 (4fe1d0d6): asked node-build-agent to check it before it merges — the gate over mesh-host (a merge would build 1 module(s) in 1 tier(s)) — as build-1792233618027450695
{
  "rechecked": "novox/mesh-host@4fe1d0d693ff"
}
novox/mesh-catalog merged into main (3ad22356); 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-1792233618428216115 — cut at once, sharing nothing with a batch assembling; grouped: novox/mesh-catalog@3ad22356; plan not yet calculated
  app: read whole: no build source recorded, so its directory is its build source; e.g. modules/app/index.ts
plan-1792233618428216115 cut: novox/mesh-catalog 3ad22356, answering novox/mesh-catalog@3ad22356; 1 module(s) in 1 tier(s)
  0: app
  tier 0: release-1792233618787773147: 2 build(s) wait for a gate on anchor, laptop; one machine first, then the rest at once, each judged
release-1792233618787773147: anchor was already sent the 1 build(s) kept for it, at 10:40:18: judged from that send, nothing sent again
settings-1792233619439072805: the settings of app on the whole mesh — approved (ask s3): sent to anchor, laptop, one machine at a time, each judged
settings-1792233619439072805: sent anchor the settings of app on the whole mesh (ask s3), every build there kept; judging app there
settings-1792233619439072805: sent laptop the settings of app on the whole mesh (ask s3), every build there kept; judging app there
settings-1792233619439072805: the settings of app on the whole mesh (ask s3) delivered on anchor, laptop
keycloak on anchor:
  + issuer
  + x
  run `plan anchor --diff` to see what it changes, `push anchor` to send it
power on anchor:
  + lid
  + x
  run `plan anchor --diff` to see what it changes, `push anchor` to send it
keycloak on anchor:
  ~ x
  the layer it replaced is kept: settings show keycloak --node anchor --history
  run `plan anchor --diff` to see what it changes, `push anchor` to send it
the vault now holds accept/token (generation 1), accepted: sealed at this terminal to the vault's key for this call, opened in the vault alone and never remade by it; its machine takes it from the vault
  this act 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
the vault now holds accept/token (generation 1), accepted: sealed at this terminal to the vault's key for this call, opened in the vault alone and never remade by it; its machine takes it from the vault
  this change could NOT be announced on the operator's channels: no channel took it
  this act 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
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
plan-308-stop stopped at tier 0 of 1; what was asked still builds and registers, nothing further is asked
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
plan-308-close closed at tier 0 of 1; what was asked still builds and registers, nothing further is asked
  tier 0:   tier 0: plan-754: done — novox/a at c0ffee, 1 tier(s)
FAIL
FAIL	github.com/novox/mesh-controller/cmd/mesh-controller	108s	(shard 8 of 8: 130 tests)
ok  	github.com/novox/mesh-controller/internal/inventory	17s	(shard 1 of 4: 78 tests)
ok  	github.com/novox/mesh-controller/internal/inventory	17s	(shard 2 of 4: 78 tests)
ok  	github.com/novox/mesh-controller/internal/inventory	15s	(shard 3 of 4: 77 tests)
ok  	github.com/novox/mesh-controller/internal/inventory	15s	(shard 4 of 4: 77 tests)
ok  	github.com/novox/mesh-controller/internal/builder	19s	(shard 1 of 4: 55 tests)
ok  	github.com/novox/mesh-controller/internal/builder	21s	(shard 2 of 4: 55 tests)
ok  	github.com/novox/mesh-controller/internal/builder	47s	(shard 3 of 4: 55 tests)
ok  	github.com/novox/mesh-controller/internal/builder	49s	(shard 4 of 4: 55 tests)
ok  	github.com/novox/mesh-controller/internal/link	15s	(shard 1 of 4: 49 tests)
ok  	github.com/novox/mesh-controller/internal/link	19s	(shard 2 of 4: 49 tests)
ok  	github.com/novox/mesh-controller/internal/link	16s	(shard 3 of 4: 48 tests)
ok  	github.com/novox/mesh-controller/internal/link	20s	(shard 4 of 4: 48 tests)
store tests, each run against the store:
  ./cmd/mesh-controller --- PASS: TestAStopWithoutAMergeWalksTheOthersAgain (0.35s)
  ./cmd/mesh-controller --- PASS: TestAStopWithoutAMergeEndsTheMergesThatContainIt (0.33s)
  ./cmd/mesh-controller --- PASS: TestAStopWalksTheOthersAgainInTheOpenBatch (0.33s)
  ./cmd/mesh-controller --- PASS: TestAStopNamesWhatStaysOnTheMachinesAndWhatStillCarriesIt (0.30s)
  ./cmd/mesh-controller --- PASS: TestAStopWithoutAMergeLeavesItOutOfABatch (0.30s)
  ./cmd/mesh-controller --- PASS: TestSavingPlansAndMovingMergesIsOneAct (0.26s)
  ./cmd/mesh-controller --- PASS: TestAPlanFollowedFromTheStoreAnswersWhenItMoves (2.08s)
  ./cmd/mesh-controller --- PASS: TestIssue969TheGateRaisesEachMachineAsItsEngineStatedItself (0.89s)
  ./cmd/mesh-controller --- PASS: TestNodeShowAndStatusReadTheLastSendFromTheStore (0.38s)
  ./cmd/mesh-controller --- PASS: TestTheConditionsVerbReadsTheLooksTheBucketNoLongerHolds (0.30s)
  ./cmd/mesh-controller --- PASS: TestAWalkLetGoAndStoppedByVerbsIsSaidStartedAndEnded (0.31s)
  ./cmd/mesh-controller --- PASS: TestAWalkStoppedOrClosedByAPersonIsSaidEndedStopped (0.29s)
  ./cmd/mesh-controller --- PASS: TestAWalkRetriedByAPersonIsSaidStartedAgain (0.25s)
  ./cmd/mesh-controller --- PASS: TestABacklogReleasedByAPersonIsSaidStarted (0.25s)
  ./cmd/mesh-controller --- PASS: TestAWalkEndedByCancelOrClearIsSaidEnded (0.35s)
  ./cmd/mesh-controller --- PASS: TestAWalkRestartedByARebuildIsSaidStarted (0.27s)
  ./cmd/mesh-controller --- PASS: TestAWalkStoppedByHandAndRetriedEndsFailedWhenItFailsAgain (0.29s)
  ./cmd/mesh-controller --- PASS: TestReplay237 (0.28s)
  ./cmd/mesh-controller --- PASS: TestAnUnassignThatLeavesItsNodeUnresolvedSaysSoOnceInItsAnswer (0.35s)
  ./cmd/mesh-controller --- PASS: TestAnUnassignThatLeavesItsNodeResolvedSaysNothingOfIt (0.37s)
  ./cmd/mesh-controller --- PASS: TestAnAssignThatLeavesItsNodeUnresolvedSaysOnlyThePlansRefusal (0.33s)
  ./cmd/mesh-controller --- PASS: TestADirectoryOwnersKeyIsRefusedThroughAVerb (0.26s)
  ./cmd/mesh-controller --- PASS: TestTheSendMakesNoValueForAnOutsideSecretNobodyGave (0.49s)
  ./cmd/mesh-controller --- PASS: TestAQuestionComposesWithoutAnOutsideSecretNobodyGave (0.44s)
  ./cmd/mesh-controller --- PASS: TestReplay201 (0.21s)
  ./cmd/mesh-controller --- PASS: TestARollbackWhoseSendWasRefusedIsCompletedByTheNextSend (0.25s)
  ./cmd/mesh-controller --- PASS: TestAGateJudgesTheOtherMovesBesideAKeptCore (0.23s)
  ./cmd/mesh-controller --- PASS: TestReplay401 (0.38s)
  ./cmd/mesh-controller --- PASS: TestReplay201ThePlansSend (0.31s)
  ./cmd/mesh-controller --- PASS: TestPlanAndNodeListAnOptionalRequirementLeftUnbound (0.32s)
  ./cmd/mesh-controller --- PASS: TestReplay340 (0.35s)
  ./cmd/mesh-controller --- PASS: TestOnlyATrustedFilesNamedKeyIsRefusedThroughAVerb (0.23s)
  ./cmd/mesh-controller --- PASS: TestReplay349 (0.32s)
  ./cmd/mesh-controller --- PASS: TestReplay348AFaultFromBeforeTheSendFailsNoGate (0.25s)
  ./cmd/mesh-controller --- PASS: TestReplay239AModuleNameIsNotTakenOverByAnotherRepository (0.24s)
  ./cmd/mesh-controller --- PASS: TestAWalkThatMovedNothingSaysWhichModulesMatchedWhatRuns (0.26s)
  ./cmd/mesh-controller --- PASS: TestAWalkWhoseEveryBuildCameOutTheSameIsDone (0.21s)
  ./cmd/mesh-controller --- PASS: TestReplay614ANewSDKPlansTheToolchainAndThenItsBundles (0.11s)
  ./cmd/mesh-controller --- PASS: TestOneAcceptForAProviderIsPlacedForEveryConsumer (0.82s)
  ./cmd/mesh-controller --- PASS: TestReplay164 (0.40s)
  ./cmd/mesh-controller --- PASS: TestAnApprovedLayerOpensTheWalkThatSendsIt (0.24s)
  ./cmd/mesh-controller --- PASS: TestASettingsWalkSendsOneMachineAtATimeEachJudged (0.25s)
  ./cmd/mesh-controller --- PASS: TestAFailedSettingsWalkStopsAndHoldsNothingBack (0.22s)
  ./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.19s)
  ./cmd/mesh-controller --- PASS: TestAProviderElsewhereServesItsOwnComposedName (0.37s)
  ./cmd/mesh-controller --- PASS: TestAReusedCheckBuildIsRegisteredByItsDigestAndGatedAsABuiltOne (0.81s)
  ./cmd/mesh-controller --- PASS: TestTheMergeGateJudgesEachManifestAgainstTheListOfTheTree (6.40s)
  ./cmd/mesh-controller --- PASS: TestRegistrationPublishesTheNewestTrunkListAndJudgesEveryModuleAgainstIt (0.25s)
  ./cmd/mesh-controller --- PASS: TestADeclarationIsTheSameAfterPlacementMoves (0.46s)
  ./cmd/mesh-controller --- PASS: TestAReleaseSendsTheRestAtOnceAfterTheFirstPasses (0.30s)
  ./cmd/mesh-controller --- PASS: TestARestMachineThatFailsIsPutBackAloneAndTheOthersAreJudgedOn (0.27s)
  ./cmd/mesh-controller --- PASS: TestAWalkTakesOverTheReadingsOfAGateJudgingTheSameBuildThere (0.22s)
  ./cmd/mesh-controller --- PASS: TestAFirstSendMadeAndNotKeptIsNotSentAgain (0.34s)
  ./cmd/mesh-controller --- PASS: TestAReleaseSendKeptAndMadeIsNotMadeAgain (0.23s)
  ./cmd/mesh-controller --- PASS: TestAFirstMachineThatFailsStillStopsTheWalk (0.21s)
  ./cmd/mesh-controller --- PASS: TestTheControlNodeIsSentLastInAStep (0.26s)
  ./cmd/mesh-controller --- PASS: TestARestMachineSilentPastItsBoundIsLeftAndSaid (0.24s)
  ./cmd/mesh-controller --- PASS: TestANoMoveTierWaitsForNoNewReport (0.31s)
  ./cmd/mesh-controller --- PASS: TestOneProviderDownAndThreeConsumersFailingAreOneCondition (0.25s)
  ./cmd/mesh-controller --- PASS: TestAConsumerFailingBesideAHealthyProviderIsItsOwn (0.22s)
  ./cmd/mesh-controller --- PASS: TestTheProvisionerClientsAccountIsIssuedForItsServiceAndNeverInvented (0.31s)
  ./cmd/mesh-controller --- PASS: TestAcceptOfAnOwnSecretTakesThePathOfItsModulesForm (0.26s)
  ./cmd/mesh-controller --- PASS: TestAcceptForAProviderTakesThePathOfTheProvidersModule (0.29s)
  ./cmd/mesh-controller --- PASS: TestAcceptForAMovedTrustedModuleAnnouncesBeforeTheVaultIsAsked (0.31s)
  ./cmd/mesh-controller --- PASS: TestAcceptForAMovedModuleRecordsAHandActAndNeverTheValue (0.27s)
  ./cmd/mesh-controller --- PASS: TestAcceptOfAnOutsideOfferTakesThePathOfTheProvidersModule (0.34s)
  ./cmd/mesh-controller --- PASS: TestAnAskAtTheDeskTakesThePathOfItsModulesForm (0.33s)
  ./cmd/mesh-controller --- PASS: TestAnIssuedValueTakesThePathOfItsProvidersModule (0.35s)
  ./cmd/mesh-controller --- PASS: TestARotationTakesThePathOfItsModulesForm (0.30s)
  ./cmd/mesh-controller --- PASS: TestADeclarationIsTheSameWhileTheWordsAreStillInTheLayers (3.44s)
  ./cmd/mesh-controller --- PASS: TestADeclarationIsTheSameAfterTheMoveOfPlacement (5.64s)
  ./cmd/mesh-controller --- PASS: TestTheSendSealsNoSecretOfAModuleHandedThere (0.30s)
  ./cmd/mesh-controller --- PASS: TestAModulesSecretsAreTheVaultsOnceItIsMarkedMoved (0.18s)
  ./cmd/mesh-controller --- PASS: TestEveryMachineIsToldTheSameAfterTheMoveOfConfig (24.67s)
  ./cmd/mesh-controller --- PASS: TestTheMoveOfConfigRefusesWhatWouldChangeAMachine (8.69s)
  ./cmd/mesh-controller --- PASS: TestTheSettingsVerbForwardsToConfigOnceTheValuesMoved (11.71s)
  ./cmd/mesh-controller --- PASS: TestTheSendCarriesTheVaultsBoxForACoreCredentialAndKeepsIt (0.40s)
  ./cmd/mesh-controller --- PASS: TestASilentVaultHoldsTheKeptBoxAndSaysSo (0.38s)
  ./cmd/mesh-controller --- PASS: TestACoreModuleFirstPlacedWhileTheVaultIsSilentIsSealedByTheController (0.34s)
  ./cmd/mesh-controller --- PASS: TestAnEngineBelowTheContractIsSentTheControllersSealAsBefore (0.33s)
  ./cmd/mesh-controller --- PASS: TestModuleIssueHandsACoveredAccountToTheVaultAndOnlyThat (0.35s)
  ./cmd/mesh-controller --- PASS: TestModuleIssueFailsWhenTheVaultDoesNotTakeACoveredAccount (0.31s)
  ./cmd/mesh-controller --- PASS: TestModuleIssueBeforeTheVaultIsInstalledKeepsTheValueAndHandsNothing (0.29s)
  ./cmd/mesh-controller --- PASS: TestARecordedModulesBundleOnlyMoveRollsOutInItsWalk (0.42s)
  ./cmd/mesh-controller --- PASS: TestARecordedModulesMoveThatRecreatesAContainerWaits (0.74s)
  ./cmd/mesh-controller --- PASS: TestARecordedModulesMoveThatTouchesDataOrAProviderWaits (0.86s)
  ./cmd/mesh-controller --- PASS: TestAPersonsRecordAndTheBusHoldEveryMove (0.58s)
  ./cmd/mesh-controller --- PASS: TestARecordedMoveThatCannotBeJudgedWaits (0.41s)
  ./cmd/mesh-controller --- PASS: TestReplay867 (4.76s)
  ./cmd/mesh-controller --- PASS: TestReplay867Recheck (4.82s)
  ./cmd/mesh-controller --- PASS: TestTheRecheckVerbAsksMeshDeliveryOnABusOfItsOwn (0.40s)
  ./cmd/mesh-controller --- PASS: TestAGroupsCompositionIntoAReleaseBranchIsJudgedByItsOwnController (4.72s)
  ./cmd/mesh-controller --- PASS: TestAGroupsCompositionJudgedWithTheValidatorIntoAReleaseBranchIsJudgedByItsOwnController (4.23s)
  ./cmd/mesh-controller --- PASS: TestAssigningTheClientIssuesItsAccount (0.24s)
  ./cmd/mesh-controller --- PASS: TestAnUnrelatedBatchWalksBesideAnOpenWalk (0.65s)
  ./cmd/mesh-controller --- PASS: TestARelatedBatchWaitsBehindTheOpenWalk (0.62s)
  ./cmd/mesh-controller --- PASS: TestAnOwnPathBatchNeverWalksBeside (0.52s)
  ./cmd/mesh-controller --- FAIL: TestMergesHeardWhileAnotherHolderHasThePlansAreRecordedAndCarried (6.39s)
  ./cmd/mesh-controller --- PASS: TestABatchWindowClosesByTheExpiryOfItsKey (1.64s)
  ./cmd/mesh-controller FAIL: go test exited 1
  ./internal/inventory --- PASS: TestTheLastSendSaysWhatTheMachineAnswered (0.14s)
  ./internal/inventory --- PASS: TestAReportIsTheLastSendsAnswerOnlyWhenItIsAboutThatSend (0.16s)
  ./internal/inventory --- PASS: TestAnIssuedValueIsSealedToEveryHolderOnceAndNotAgain (0.12s)
  ./internal/inventory --- PASS: TestAnIssuedValueIsSealedAgainAfterAKeyChangeOrAnAcceptance (0.17s)
  ./internal/inventory --- PASS: TestAConditionsLooksAreKeptBesideTheBucket (0.12s)
  ./internal/inventory --- PASS: TestAPlanIdHoldingAQuoteIsReadAsAPlainId (0.11s)
  ./internal/inventory --- PASS: TestAWalksStartIsKeptAndARefusedSaveLeavesItUnsaid (0.12s)
  ./internal/inventory --- PASS: TestAWalksRestIsReadFromEachMachinesOwnSend (0.13s)
  ./internal/inventory --- PASS: TestAStoredBuildWithASilentMergeableFileIsStillReadAndComposed (0.12s)
  ./internal/inventory --- PASS: TestACredentialIssuedOutsideIsNeverMade (0.15s)
  ./internal/inventory --- PASS: TestOneAcceptForAProviderIsSealedToEveryConsumer (0.12s)
  ./internal/inventory --- PASS: TestASharedOwnSecretIssuedOutsideIsNeverMade (0.11s)
  ./internal/inventory --- PASS: TestAModuleInTheConfigFormIsMirroredWithItsWholeDeclaration (0.09s)
  ./internal/inventory --- PASS: TestAReportOfABusyContainerIsKeptAndReadBack (0.11s)
  ./internal/inventory --- PASS: TestANewerBuildsListReplacesTheKeptOneAndAnOlderOneHeardLaterDoesNot (0.09s)
  ./internal/inventory --- PASS: TestPlacementMovesOutOfTheSettingsLayers (0.56s)
  ./internal/inventory --- PASS: TestASettingRoutesPlacementBesideTheLayer (0.13s)
  ./internal/inventory --- PASS: TestTheProvisionerClientsMachineHasAnAccountOfItsOwn (0.17s)
  ./internal/inventory --- PASS: TestTheFourWordsAreKeptBesideTheLayer (0.13s)
  ./internal/inventory --- PASS: TestALayerStillHoldingTheWordsReadsThemAsPlacement (0.13s)
  ./internal/inventory --- PASS: TestTheMoveOfPlacementMovesWhatTheLayersStillHold (0.13s)
  ./internal/inventory --- PASS: TestTheMoveReadsEveryRowSealedToAMachineAsItIs (0.18s)
  ./internal/inventory --- PASS: TestASendKeepsThePlansItHandedAndTheMirrorCarriesThem (0.16s)
  ./internal/inventory --- PASS: TestTheLayersAreReadUntilTheMoveOfConfigHasRun (0.14s)
  ./internal/inventory --- PASS: TestAModuleReadsMeshConfigOnlyWhereItsValuesAre (0.12s)
  ./internal/inventory --- PASS: TestTheEndOfTheMoveRefusesALayerChangedSinceItWasRead (0.12s)
  ./internal/inventory --- PASS: TestACoreCredentialsVaultBoxIsKeptPerMachineAndReplaced (0.10s)
  ./internal/inventory --- PASS: TestWhatRunsIsTheRegisteredBuildNotANewerOnePutBack (0.13s)
  ./internal/recordmirror --- PASS: TestNatsAnAssignmentAndARegistrationEachChangeOneKeyAndRaiseOneEvent (3.66s)
  ./internal/recordmirror --- PASS: TestNatsTheListOfPredefinedKeysKeptChangesTheMirrorsOneKey (1.51s)
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: TestSSHClientOwnsTheOperatorsSSHConfig (0.07s)
    ssh_client_test.go:14: judged against /var/lib/build-agent/workspace/check/mesh-catalog as cloned beside this check
    ssh_client_test.go:14: judged against /var/lib/build-agent/workspace/check/mesh-catalog as cloned beside this check
    ssh_client_test.go:14: judged against /var/lib/build-agent/workspace/check/mesh-catalog as cloned beside this check
    ssh_client_test.go:14: judged against /var/lib/build-agent/workspace/check/mesh-catalog as cloned beside this check
    ssh_client_test.go:35: ssh-client asks its forge-account binding for "ssh_alias", and what answers it says "address", "as", "at", "from", "https_base", "known_host", "ssh_base", "ssh_host" or "ssh_port"
FAIL	github.com/novox/mesh-controller/internal/catalogue	21.826s
--- FAIL: TestMergesHeardWhileAnotherHolderHasThePlansAreRecordedAndCarried (6.58s)
    merge_on_the_bus_test.go:125: the next rollout does not carry both merges: 1 walk(s), batches [{ID:plan-1792233611894099593 Repository:novox/one Branch:main Commit:c3 Merged:2026-10-17 10:40:05.885002 +0000 UTC Created:2026-10-17 10:40:11.894099 +0000 UTC Updated:2026-10-17 10:40:11.915622 +0000 UTC State:assembling Tier:0 Tiers:[] Modules:map[] Note:assembling: 90 s left (at the latest 10:50:11); grouped: novox/one@c3 (answers c2); plan not yet calculated TierEntered:2026-10-17 10:40:11.91576 +0000 UTC Revision:4 Epoch:0 Release:<nil> Delivery:0xc000798f00 Commits:[{Repository:novox/one Branch:main Commit:c3 Merged:2026-10-17 10:40:05.885002 +0000 UTC}] Times:<nil> Phases:<nil> WalkSaid:}], merges [{Repository:novox/one Commit:c1 Carried: Number:0 Title: Moves:[one] Head: Merged:2026-10-17 10:40:05.778188 +0000 UTC Heard:2026-10-17 10:40:05.779166 +0000 UTC}]
FAIL	github.com/novox/mesh-controller/cmd/mesh-controller	108s	(shard 8 of 8: 130 tests)
**Merge check** at `20e14872` Judged: head `20e14872ef1e` merged into trunk `b0d489a86c23`; read beside it: mesh-catalog `a7d526838ab0`, mesh-controller-main `b0d489a86c23`, mesh-host `cd13f7726ef0`, mesh-tools `7412c5b6c9c5` - `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`: **FAIL** — its merge-check.sh failed: --- FAIL: TestSSHClientOwnsTheOperatorsSSHConfig (0.07s); and TestMergesHeardWhileAnotherHolderHasThePlansAreRecordedAndCarried **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 - read by no module's build: cmd/mesh-controller/batches_test.go, cmd/mesh-controller/merge_on_the_bus_test.go, cmd/mesh-controller/merge_window_bus_test.go, cmd/mesh-controller/missed_merges_test.go, cmd/mesh-controller/related_test.go, cmd/mesh-controller/signals_test.go, internal/broker/controller_buckets_test.go, internal/broker/testdata/composed.conf, internal/link/receive_fake_test.go, internal/link/receive_nats_test.go, internal/link/store_window_test.go, testdata/store-tests Run by the build seat on shanks as `build-1792233298577422842` (`builds --log build-1792233298577422842`). ``` b-4: the build seat did not say whether 44444444 is on its repository's trunk (it predates ADR 0238); registered as before b-4: the list of predefined keys at 44444444 (generation 12) is published: font-size b-5: the build seat did not say whether 55555555 is on its repository's trunk (it predates ADR 0238); registered as before b-5: the list of predefined keys at 55555555 (generation 11) is not newer than the one kept, which stands b-6: chimes is new to the catalogue, and novox/notifier on the git seat is no repository the catalogue builds a module from — registered, as asked at the controller's terminal b-6: the build seat did not say whether 66666666 is on its repository's trunk (it predates ADR 0238); registered as before plan-rollout: tier 0 done; asking tier 1: b tier 1: plan-mailu: mailu on anchor waits: it could not be judged — its build c0, which the machine was last sent, is not in the build records (novox/hq ADR 0377 §4) plan-mailu: mailu on laptop went out: it recreates none of its containers and moves none of its data (novox/hq ADR 0377) plan-mailu: tier 0 built; sent mailu to laptop, one send each plan-mailu: done — novox/mesh-catalog at c2, 1 tier(s) plan-engine: sending engine to anchor first after tier 0: a new bus build waits for its planned step: sending anchor would replace the bus (nats 88135ad0 → 32307bd1), which is a planned step: `bus upgrade --why …` snapshots its streams first and checks them after (novox/hq ADR 0236) change plan of novox/mesh-host at 4fe1d0d6 into main: builds mesh-host, sent nowhere; no bus step tier 0: mesh-host novox/mesh-host#114 (4fe1d0d6): nothing ended — the forge could not say the pull request's current head, so checks of its other heads keep running: cannot ask gitea.gitea_api: nothing serves gitea.gitea_api novox/mesh-host#114 (4fe1d0d6): asked node-build-agent to check it before it merges — the gate over mesh-host (a merge would build 1 module(s) in 1 tier(s)) — as build-1792233618027450695 { "rechecked": "novox/mesh-host@4fe1d0d693ff" } novox/mesh-catalog merged into main (3ad22356); 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-1792233618428216115 — cut at once, sharing nothing with a batch assembling; grouped: novox/mesh-catalog@3ad22356; plan not yet calculated app: read whole: no build source recorded, so its directory is its build source; e.g. modules/app/index.ts plan-1792233618428216115 cut: novox/mesh-catalog 3ad22356, answering novox/mesh-catalog@3ad22356; 1 module(s) in 1 tier(s) 0: app tier 0: release-1792233618787773147: 2 build(s) wait for a gate on anchor, laptop; one machine first, then the rest at once, each judged release-1792233618787773147: anchor was already sent the 1 build(s) kept for it, at 10:40:18: judged from that send, nothing sent again settings-1792233619439072805: the settings of app on the whole mesh — approved (ask s3): sent to anchor, laptop, one machine at a time, each judged settings-1792233619439072805: sent anchor the settings of app on the whole mesh (ask s3), every build there kept; judging app there settings-1792233619439072805: sent laptop the settings of app on the whole mesh (ask s3), every build there kept; judging app there settings-1792233619439072805: the settings of app on the whole mesh (ask s3) delivered on anchor, laptop keycloak on anchor: + issuer + x run `plan anchor --diff` to see what it changes, `push anchor` to send it power on anchor: + lid + x run `plan anchor --diff` to see what it changes, `push anchor` to send it keycloak on anchor: ~ x the layer it replaced is kept: settings show keycloak --node anchor --history run `plan anchor --diff` to see what it changes, `push anchor` to send it the vault now holds accept/token (generation 1), accepted: sealed at this terminal to the vault's key for this call, opened in the vault alone and never remade by it; its machine takes it from the vault this act 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 the vault now holds accept/token (generation 1), accepted: sealed at this terminal to the vault's key for this call, opened in the vault alone and never remade by it; its machine takes it from the vault this change could NOT be announced on the operator's channels: no channel took it this act 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 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 plan-308-stop stopped at tier 0 of 1; what was asked still builds and registers, nothing further is asked 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 plan-308-close closed at tier 0 of 1; what was asked still builds and registers, nothing further is asked tier 0: tier 0: plan-754: done — novox/a at c0ffee, 1 tier(s) FAIL FAIL github.com/novox/mesh-controller/cmd/mesh-controller 108s (shard 8 of 8: 130 tests) ok github.com/novox/mesh-controller/internal/inventory 17s (shard 1 of 4: 78 tests) ok github.com/novox/mesh-controller/internal/inventory 17s (shard 2 of 4: 78 tests) ok github.com/novox/mesh-controller/internal/inventory 15s (shard 3 of 4: 77 tests) ok github.com/novox/mesh-controller/internal/inventory 15s (shard 4 of 4: 77 tests) ok github.com/novox/mesh-controller/internal/builder 19s (shard 1 of 4: 55 tests) ok github.com/novox/mesh-controller/internal/builder 21s (shard 2 of 4: 55 tests) ok github.com/novox/mesh-controller/internal/builder 47s (shard 3 of 4: 55 tests) ok github.com/novox/mesh-controller/internal/builder 49s (shard 4 of 4: 55 tests) ok github.com/novox/mesh-controller/internal/link 15s (shard 1 of 4: 49 tests) ok github.com/novox/mesh-controller/internal/link 19s (shard 2 of 4: 49 tests) ok github.com/novox/mesh-controller/internal/link 16s (shard 3 of 4: 48 tests) ok github.com/novox/mesh-controller/internal/link 20s (shard 4 of 4: 48 tests) store tests, each run against the store: ./cmd/mesh-controller --- PASS: TestAStopWithoutAMergeWalksTheOthersAgain (0.35s) ./cmd/mesh-controller --- PASS: TestAStopWithoutAMergeEndsTheMergesThatContainIt (0.33s) ./cmd/mesh-controller --- PASS: TestAStopWalksTheOthersAgainInTheOpenBatch (0.33s) ./cmd/mesh-controller --- PASS: TestAStopNamesWhatStaysOnTheMachinesAndWhatStillCarriesIt (0.30s) ./cmd/mesh-controller --- PASS: TestAStopWithoutAMergeLeavesItOutOfABatch (0.30s) ./cmd/mesh-controller --- PASS: TestSavingPlansAndMovingMergesIsOneAct (0.26s) ./cmd/mesh-controller --- PASS: TestAPlanFollowedFromTheStoreAnswersWhenItMoves (2.08s) ./cmd/mesh-controller --- PASS: TestIssue969TheGateRaisesEachMachineAsItsEngineStatedItself (0.89s) ./cmd/mesh-controller --- PASS: TestNodeShowAndStatusReadTheLastSendFromTheStore (0.38s) ./cmd/mesh-controller --- PASS: TestTheConditionsVerbReadsTheLooksTheBucketNoLongerHolds (0.30s) ./cmd/mesh-controller --- PASS: TestAWalkLetGoAndStoppedByVerbsIsSaidStartedAndEnded (0.31s) ./cmd/mesh-controller --- PASS: TestAWalkStoppedOrClosedByAPersonIsSaidEndedStopped (0.29s) ./cmd/mesh-controller --- PASS: TestAWalkRetriedByAPersonIsSaidStartedAgain (0.25s) ./cmd/mesh-controller --- PASS: TestABacklogReleasedByAPersonIsSaidStarted (0.25s) ./cmd/mesh-controller --- PASS: TestAWalkEndedByCancelOrClearIsSaidEnded (0.35s) ./cmd/mesh-controller --- PASS: TestAWalkRestartedByARebuildIsSaidStarted (0.27s) ./cmd/mesh-controller --- PASS: TestAWalkStoppedByHandAndRetriedEndsFailedWhenItFailsAgain (0.29s) ./cmd/mesh-controller --- PASS: TestReplay237 (0.28s) ./cmd/mesh-controller --- PASS: TestAnUnassignThatLeavesItsNodeUnresolvedSaysSoOnceInItsAnswer (0.35s) ./cmd/mesh-controller --- PASS: TestAnUnassignThatLeavesItsNodeResolvedSaysNothingOfIt (0.37s) ./cmd/mesh-controller --- PASS: TestAnAssignThatLeavesItsNodeUnresolvedSaysOnlyThePlansRefusal (0.33s) ./cmd/mesh-controller --- PASS: TestADirectoryOwnersKeyIsRefusedThroughAVerb (0.26s) ./cmd/mesh-controller --- PASS: TestTheSendMakesNoValueForAnOutsideSecretNobodyGave (0.49s) ./cmd/mesh-controller --- PASS: TestAQuestionComposesWithoutAnOutsideSecretNobodyGave (0.44s) ./cmd/mesh-controller --- PASS: TestReplay201 (0.21s) ./cmd/mesh-controller --- PASS: TestARollbackWhoseSendWasRefusedIsCompletedByTheNextSend (0.25s) ./cmd/mesh-controller --- PASS: TestAGateJudgesTheOtherMovesBesideAKeptCore (0.23s) ./cmd/mesh-controller --- PASS: TestReplay401 (0.38s) ./cmd/mesh-controller --- PASS: TestReplay201ThePlansSend (0.31s) ./cmd/mesh-controller --- PASS: TestPlanAndNodeListAnOptionalRequirementLeftUnbound (0.32s) ./cmd/mesh-controller --- PASS: TestReplay340 (0.35s) ./cmd/mesh-controller --- PASS: TestOnlyATrustedFilesNamedKeyIsRefusedThroughAVerb (0.23s) ./cmd/mesh-controller --- PASS: TestReplay349 (0.32s) ./cmd/mesh-controller --- PASS: TestReplay348AFaultFromBeforeTheSendFailsNoGate (0.25s) ./cmd/mesh-controller --- PASS: TestReplay239AModuleNameIsNotTakenOverByAnotherRepository (0.24s) ./cmd/mesh-controller --- PASS: TestAWalkThatMovedNothingSaysWhichModulesMatchedWhatRuns (0.26s) ./cmd/mesh-controller --- PASS: TestAWalkWhoseEveryBuildCameOutTheSameIsDone (0.21s) ./cmd/mesh-controller --- PASS: TestReplay614ANewSDKPlansTheToolchainAndThenItsBundles (0.11s) ./cmd/mesh-controller --- PASS: TestOneAcceptForAProviderIsPlacedForEveryConsumer (0.82s) ./cmd/mesh-controller --- PASS: TestReplay164 (0.40s) ./cmd/mesh-controller --- PASS: TestAnApprovedLayerOpensTheWalkThatSendsIt (0.24s) ./cmd/mesh-controller --- PASS: TestASettingsWalkSendsOneMachineAtATimeEachJudged (0.25s) ./cmd/mesh-controller --- PASS: TestAFailedSettingsWalkStopsAndHoldsNothingBack (0.22s) ./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.19s) ./cmd/mesh-controller --- PASS: TestAProviderElsewhereServesItsOwnComposedName (0.37s) ./cmd/mesh-controller --- PASS: TestAReusedCheckBuildIsRegisteredByItsDigestAndGatedAsABuiltOne (0.81s) ./cmd/mesh-controller --- PASS: TestTheMergeGateJudgesEachManifestAgainstTheListOfTheTree (6.40s) ./cmd/mesh-controller --- PASS: TestRegistrationPublishesTheNewestTrunkListAndJudgesEveryModuleAgainstIt (0.25s) ./cmd/mesh-controller --- PASS: TestADeclarationIsTheSameAfterPlacementMoves (0.46s) ./cmd/mesh-controller --- PASS: TestAReleaseSendsTheRestAtOnceAfterTheFirstPasses (0.30s) ./cmd/mesh-controller --- PASS: TestARestMachineThatFailsIsPutBackAloneAndTheOthersAreJudgedOn (0.27s) ./cmd/mesh-controller --- PASS: TestAWalkTakesOverTheReadingsOfAGateJudgingTheSameBuildThere (0.22s) ./cmd/mesh-controller --- PASS: TestAFirstSendMadeAndNotKeptIsNotSentAgain (0.34s) ./cmd/mesh-controller --- PASS: TestAReleaseSendKeptAndMadeIsNotMadeAgain (0.23s) ./cmd/mesh-controller --- PASS: TestAFirstMachineThatFailsStillStopsTheWalk (0.21s) ./cmd/mesh-controller --- PASS: TestTheControlNodeIsSentLastInAStep (0.26s) ./cmd/mesh-controller --- PASS: TestARestMachineSilentPastItsBoundIsLeftAndSaid (0.24s) ./cmd/mesh-controller --- PASS: TestANoMoveTierWaitsForNoNewReport (0.31s) ./cmd/mesh-controller --- PASS: TestOneProviderDownAndThreeConsumersFailingAreOneCondition (0.25s) ./cmd/mesh-controller --- PASS: TestAConsumerFailingBesideAHealthyProviderIsItsOwn (0.22s) ./cmd/mesh-controller --- PASS: TestTheProvisionerClientsAccountIsIssuedForItsServiceAndNeverInvented (0.31s) ./cmd/mesh-controller --- PASS: TestAcceptOfAnOwnSecretTakesThePathOfItsModulesForm (0.26s) ./cmd/mesh-controller --- PASS: TestAcceptForAProviderTakesThePathOfTheProvidersModule (0.29s) ./cmd/mesh-controller --- PASS: TestAcceptForAMovedTrustedModuleAnnouncesBeforeTheVaultIsAsked (0.31s) ./cmd/mesh-controller --- PASS: TestAcceptForAMovedModuleRecordsAHandActAndNeverTheValue (0.27s) ./cmd/mesh-controller --- PASS: TestAcceptOfAnOutsideOfferTakesThePathOfTheProvidersModule (0.34s) ./cmd/mesh-controller --- PASS: TestAnAskAtTheDeskTakesThePathOfItsModulesForm (0.33s) ./cmd/mesh-controller --- PASS: TestAnIssuedValueTakesThePathOfItsProvidersModule (0.35s) ./cmd/mesh-controller --- PASS: TestARotationTakesThePathOfItsModulesForm (0.30s) ./cmd/mesh-controller --- PASS: TestADeclarationIsTheSameWhileTheWordsAreStillInTheLayers (3.44s) ./cmd/mesh-controller --- PASS: TestADeclarationIsTheSameAfterTheMoveOfPlacement (5.64s) ./cmd/mesh-controller --- PASS: TestTheSendSealsNoSecretOfAModuleHandedThere (0.30s) ./cmd/mesh-controller --- PASS: TestAModulesSecretsAreTheVaultsOnceItIsMarkedMoved (0.18s) ./cmd/mesh-controller --- PASS: TestEveryMachineIsToldTheSameAfterTheMoveOfConfig (24.67s) ./cmd/mesh-controller --- PASS: TestTheMoveOfConfigRefusesWhatWouldChangeAMachine (8.69s) ./cmd/mesh-controller --- PASS: TestTheSettingsVerbForwardsToConfigOnceTheValuesMoved (11.71s) ./cmd/mesh-controller --- PASS: TestTheSendCarriesTheVaultsBoxForACoreCredentialAndKeepsIt (0.40s) ./cmd/mesh-controller --- PASS: TestASilentVaultHoldsTheKeptBoxAndSaysSo (0.38s) ./cmd/mesh-controller --- PASS: TestACoreModuleFirstPlacedWhileTheVaultIsSilentIsSealedByTheController (0.34s) ./cmd/mesh-controller --- PASS: TestAnEngineBelowTheContractIsSentTheControllersSealAsBefore (0.33s) ./cmd/mesh-controller --- PASS: TestModuleIssueHandsACoveredAccountToTheVaultAndOnlyThat (0.35s) ./cmd/mesh-controller --- PASS: TestModuleIssueFailsWhenTheVaultDoesNotTakeACoveredAccount (0.31s) ./cmd/mesh-controller --- PASS: TestModuleIssueBeforeTheVaultIsInstalledKeepsTheValueAndHandsNothing (0.29s) ./cmd/mesh-controller --- PASS: TestARecordedModulesBundleOnlyMoveRollsOutInItsWalk (0.42s) ./cmd/mesh-controller --- PASS: TestARecordedModulesMoveThatRecreatesAContainerWaits (0.74s) ./cmd/mesh-controller --- PASS: TestARecordedModulesMoveThatTouchesDataOrAProviderWaits (0.86s) ./cmd/mesh-controller --- PASS: TestAPersonsRecordAndTheBusHoldEveryMove (0.58s) ./cmd/mesh-controller --- PASS: TestARecordedMoveThatCannotBeJudgedWaits (0.41s) ./cmd/mesh-controller --- PASS: TestReplay867 (4.76s) ./cmd/mesh-controller --- PASS: TestReplay867Recheck (4.82s) ./cmd/mesh-controller --- PASS: TestTheRecheckVerbAsksMeshDeliveryOnABusOfItsOwn (0.40s) ./cmd/mesh-controller --- PASS: TestAGroupsCompositionIntoAReleaseBranchIsJudgedByItsOwnController (4.72s) ./cmd/mesh-controller --- PASS: TestAGroupsCompositionJudgedWithTheValidatorIntoAReleaseBranchIsJudgedByItsOwnController (4.23s) ./cmd/mesh-controller --- PASS: TestAssigningTheClientIssuesItsAccount (0.24s) ./cmd/mesh-controller --- PASS: TestAnUnrelatedBatchWalksBesideAnOpenWalk (0.65s) ./cmd/mesh-controller --- PASS: TestARelatedBatchWaitsBehindTheOpenWalk (0.62s) ./cmd/mesh-controller --- PASS: TestAnOwnPathBatchNeverWalksBeside (0.52s) ./cmd/mesh-controller --- FAIL: TestMergesHeardWhileAnotherHolderHasThePlansAreRecordedAndCarried (6.39s) ./cmd/mesh-controller --- PASS: TestABatchWindowClosesByTheExpiryOfItsKey (1.64s) ./cmd/mesh-controller FAIL: go test exited 1 ./internal/inventory --- PASS: TestTheLastSendSaysWhatTheMachineAnswered (0.14s) ./internal/inventory --- PASS: TestAReportIsTheLastSendsAnswerOnlyWhenItIsAboutThatSend (0.16s) ./internal/inventory --- PASS: TestAnIssuedValueIsSealedToEveryHolderOnceAndNotAgain (0.12s) ./internal/inventory --- PASS: TestAnIssuedValueIsSealedAgainAfterAKeyChangeOrAnAcceptance (0.17s) ./internal/inventory --- PASS: TestAConditionsLooksAreKeptBesideTheBucket (0.12s) ./internal/inventory --- PASS: TestAPlanIdHoldingAQuoteIsReadAsAPlainId (0.11s) ./internal/inventory --- PASS: TestAWalksStartIsKeptAndARefusedSaveLeavesItUnsaid (0.12s) ./internal/inventory --- PASS: TestAWalksRestIsReadFromEachMachinesOwnSend (0.13s) ./internal/inventory --- PASS: TestAStoredBuildWithASilentMergeableFileIsStillReadAndComposed (0.12s) ./internal/inventory --- PASS: TestACredentialIssuedOutsideIsNeverMade (0.15s) ./internal/inventory --- PASS: TestOneAcceptForAProviderIsSealedToEveryConsumer (0.12s) ./internal/inventory --- PASS: TestASharedOwnSecretIssuedOutsideIsNeverMade (0.11s) ./internal/inventory --- PASS: TestAModuleInTheConfigFormIsMirroredWithItsWholeDeclaration (0.09s) ./internal/inventory --- PASS: TestAReportOfABusyContainerIsKeptAndReadBack (0.11s) ./internal/inventory --- PASS: TestANewerBuildsListReplacesTheKeptOneAndAnOlderOneHeardLaterDoesNot (0.09s) ./internal/inventory --- PASS: TestPlacementMovesOutOfTheSettingsLayers (0.56s) ./internal/inventory --- PASS: TestASettingRoutesPlacementBesideTheLayer (0.13s) ./internal/inventory --- PASS: TestTheProvisionerClientsMachineHasAnAccountOfItsOwn (0.17s) ./internal/inventory --- PASS: TestTheFourWordsAreKeptBesideTheLayer (0.13s) ./internal/inventory --- PASS: TestALayerStillHoldingTheWordsReadsThemAsPlacement (0.13s) ./internal/inventory --- PASS: TestTheMoveOfPlacementMovesWhatTheLayersStillHold (0.13s) ./internal/inventory --- PASS: TestTheMoveReadsEveryRowSealedToAMachineAsItIs (0.18s) ./internal/inventory --- PASS: TestASendKeepsThePlansItHandedAndTheMirrorCarriesThem (0.16s) ./internal/inventory --- PASS: TestTheLayersAreReadUntilTheMoveOfConfigHasRun (0.14s) ./internal/inventory --- PASS: TestAModuleReadsMeshConfigOnlyWhereItsValuesAre (0.12s) ./internal/inventory --- PASS: TestTheEndOfTheMoveRefusesALayerChangedSinceItWasRead (0.12s) ./internal/inventory --- PASS: TestACoreCredentialsVaultBoxIsKeptPerMachineAndReplaced (0.10s) ./internal/inventory --- PASS: TestWhatRunsIsTheRegisteredBuildNotANewerOnePutBack (0.13s) ./internal/recordmirror --- PASS: TestNatsAnAssignmentAndARegistrationEachChangeOneKeyAndRaiseOneEvent (3.66s) ./internal/recordmirror --- PASS: TestNatsTheListOfPredefinedKeysKeptChangesTheMirrorsOneKey (1.51s) 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: TestSSHClientOwnsTheOperatorsSSHConfig (0.07s) ssh_client_test.go:14: judged against /var/lib/build-agent/workspace/check/mesh-catalog as cloned beside this check ssh_client_test.go:14: judged against /var/lib/build-agent/workspace/check/mesh-catalog as cloned beside this check ssh_client_test.go:14: judged against /var/lib/build-agent/workspace/check/mesh-catalog as cloned beside this check ssh_client_test.go:14: judged against /var/lib/build-agent/workspace/check/mesh-catalog as cloned beside this check ssh_client_test.go:35: ssh-client asks its forge-account binding for "ssh_alias", and what answers it says "address", "as", "at", "from", "https_base", "known_host", "ssh_base", "ssh_host" or "ssh_port" FAIL github.com/novox/mesh-controller/internal/catalogue 21.826s --- FAIL: TestMergesHeardWhileAnotherHolderHasThePlansAreRecordedAndCarried (6.58s) merge_on_the_bus_test.go:125: the next rollout does not carry both merges: 1 walk(s), batches [{ID:plan-1792233611894099593 Repository:novox/one Branch:main Commit:c3 Merged:2026-10-17 10:40:05.885002 +0000 UTC Created:2026-10-17 10:40:11.894099 +0000 UTC Updated:2026-10-17 10:40:11.915622 +0000 UTC State:assembling Tier:0 Tiers:[] Modules:map[] Note:assembling: 90 s left (at the latest 10:50:11); grouped: novox/one@c3 (answers c2); plan not yet calculated TierEntered:2026-10-17 10:40:11.91576 +0000 UTC Revision:4 Epoch:0 Release:<nil> Delivery:0xc000798f00 Commits:[{Repository:novox/one Branch:main Commit:c3 Merged:2026-10-17 10:40:05.885002 +0000 UTC}] Times:<nil> Phases:<nil> WalkSaid:}], merges [{Repository:novox/one Commit:c1 Carried: Number:0 Title: Moves:[one] Head: Merged:2026-10-17 10:40:05.778188 +0000 UTC Heard:2026-10-17 10:40:05.779166 +0000 UTC}] FAIL github.com/novox/mesh-controller/cmd/mesh-controller 108s (shard 8 of 8: 130 tests) ```
Author
Member

mesh-delivery: not merged. This pull request is marked ready at 20e14872ef, and its check failed: every machine composes with the change as it did without (4 of 4 compose) (head 20e14872ef merged into trunk b0d489a86c). A new head, marked ready once reviewed, or a recheck that passes, merges it.

mesh-delivery: **not merged.** This pull request is marked ready at 20e14872ef1eea2790c709014d5c4e3460fa12f7, and its check failed: every machine composes with the change as it did without (4 of 4 compose) (head 20e14872ef1e merged into trunk b0d489a86c23). A new head, marked ready once reviewed, or a recheck that passes, merges it.
jschoubben added 2 commits 2026-10-17 10:44:46 +00:00
The ssh-client test offers every key ssh-client's files ask of forge-account, read from them (issue 985)
mesh/merge-gate head bafc31bf8568 merged into trunk b0d489a86c23 — pass: builds build-agent, mesh-controller, route-proxy → ace, g14, novox, shanks; no bus…
mesh/repo-check head bafc31bf8568 merged into trunk b0d489a86c23 — pass: its merge-check.sh passed
mesh/delivery delivered
bafc31bf85
Author
Member

ready at bafc31bf85

Reviewed by review-973@shanks: phase 3 cycle approved at bafc31bf: the integration test closes its window (the code was right), the ssh-client test offers every value ssh-client asks. Marked through mesh-delivery.mark-ready (novox/hq issue 913).

ready at bafc31bf8568d376e73bb909687220715adabb7b Reviewed by review-973@shanks: phase 3 cycle approved at bafc31bf: the integration test closes its window (the code was right), the ssh-client test offers every value ssh-client asks. Marked through mesh-delivery.mark-ready (novox/hq issue 913).
Author
Member

Merge check at bafc31bf
Judged: head bafc31bf8568 merged into trunk b0d489a86c23; read beside it: mesh-catalog a7d526838ab0, mesh-controller-main b0d489a86c23, mesh-host cd13f7726ef0, mesh-tools 7412c5b6c9c5

  • 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
  • read by no module's build: cmd/mesh-controller/batches_test.go, cmd/mesh-controller/merge_on_the_bus_test.go, cmd/mesh-controller/merge_window_bus_test.go, cmd/mesh-controller/missed_merges_test.go, cmd/mesh-controller/related_test.go, cmd/mesh-controller/signals_test.go, internal/broker/controller_buckets_test.go, internal/broker/testdata/composed.conf, internal/catalogue/ssh_client_test.go, internal/link/receive_fake_test.go, internal/link/receive_nats_test.go, internal/link/store_window_test.go, testdata/store-tests

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

HELD: the vault did not answer for the core's credentials on yvbpsm; sealed by the controller until the vault holds it: mesh-provisioner-client — own/yvbpsm/mesh-provisioner-client/provisioner-broker: this control plane has no MESH_BUS_NATS, so it cannot reach the mesh's bus
HELD: the vault did not answer for the core's credentials on f35; sealed by the controller until the vault holds it: mesh-provisioner-client — own/f35/mesh-provisioner-client/provisioner-broker: this control plane has no MESH_BUS_NATS, so it cannot reach the mesh's bus
HELD: the vault did not answer for the core's credentials on idt; sealed by the controller until the vault holds it: mesh-provisioner-client — own/idt/mesh-provisioner-client/provisioner-broker: this control plane has no MESH_BUS_NATS, so it cannot reach the mesh's bus
HELD: the vault did not answer for the core's credentials on ygcyr; sealed by the controller until the vault holds it: mesh-provisioner, mesh-provisioner-client, nats — own/ygcyr/mesh-provisioner/broker: this control plane has no MESH_BUS_NATS, so it cannot reach the mesh's bus; own/ygcyr/mesh-provisioner-client/provisioner-broker: this control plane has no MESH_BUS_NATS, so it cannot reach the mesh's bus; own/ygcyr/nats/broker: this control plane has no MESH_BUS_NATS, so it cannot reach the mesh's bus
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
HELD: the vault did not answer for the core's credentials on yvbpsm; sealed by the controller until the vault holds it: mesh-provisioner-client — own/yvbpsm/mesh-provisioner-client/provisioner-broker: this control plane has no MESH_BUS_NATS, so it cannot reach the mesh's bus
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-17T01:02:16Z

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-config, holds mesh-delivery, holds mesh-dns-resolver, holds mesh-provisioner, 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 3 module(s) in 2 tier(s): build-agent, mesh-controller, route-proxy

notes:
  - cmd/mesh-controller/batches_test.go, cmd/mesh-controller/merge_on_the_bus_test.go, cmd/mesh-controller/merge_window_bus_test.go, cmd/mesh-controller/missed_merges_test.go, cmd/mesh-controller/related_test.go, cmd/mesh-controller/signals_test.go, internal/broker/controller_buckets_test.go, internal/broker/testdata/composed.conf, internal/catalogue/ssh_client_test.go, internal/link/receive_fake_test.go, internal/link/receive_nats_test.go, internal/link/store_window_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.144s
ok  	github.com/novox/mesh-controller/examples/objectstore-provisioner	1.023s
ok  	github.com/novox/mesh-controller/examples/postgres-provisioner	1.030s
ok  	github.com/novox/mesh-controller/examples/redis-provisioner	1.021s
ok  	github.com/novox/mesh-controller/examples/route-proxy	1.186s
ok  	github.com/novox/mesh-controller/internal/artifacts	1.060s
?   	github.com/novox/mesh-controller/internal/beside	[no test files]
ok  	github.com/novox/mesh-controller/internal/broker	55.332s
ok  	github.com/novox/mesh-controller/internal/catalogue	20.160s
ok  	github.com/novox/mesh-controller/internal/conditions	3.120s
ok  	github.com/novox/mesh-controller/internal/envfile	1.037s
ok  	github.com/novox/mesh-controller/internal/facts	1.062s
ok  	github.com/novox/mesh-controller/internal/identity	6.396s
ok  	github.com/novox/mesh-controller/internal/lease	10.274s
ok  	github.com/novox/mesh-controller/internal/licences	5.197s
ok  	github.com/novox/mesh-controller/internal/licences/adapters	1.064s
ok  	github.com/novox/mesh-controller/internal/lint	3.390s
ok  	github.com/novox/mesh-controller/internal/outward	1.087s
ok  	github.com/novox/mesh-controller/internal/overlay	1.089s
ok  	github.com/novox/mesh-controller/internal/recordmirror	16.136s
ok  	github.com/novox/mesh-controller/internal/secrets	1.627s
ok  	github.com/novox/mesh-controller/internal/store	4.048s
ok  	github.com/novox/mesh-controller/internal/testbus	1.257s
ok  	github.com/novox/mesh-controller/internal/token	1.072s
ok  	github.com/novox/mesh-controller/cmd/mesh-controller	99s	(shard 1 of 8: 131 tests)
ok  	github.com/novox/mesh-controller/cmd/mesh-controller	113s	(shard 2 of 8: 131 tests)
ok  	github.com/novox/mesh-controller/cmd/mesh-controller	72s	(shard 3 of 8: 131 tests)
ok  	github.com/novox/mesh-controller/cmd/mesh-controller	62s	(shard 4 of 8: 131 tests)
ok  	github.com/novox/mesh-controller/cmd/mesh-controller	183s	(shard 5 of 8: 131 tests)
ok  	github.com/novox/mesh-controller/cmd/mesh-controller	85s	(shard 6 of 8: 131 tests)
ok  	github.com/novox/mesh-controller/cmd/mesh-controller	64s	(shard 7 of 8: 130 tests)
ok  	github.com/novox/mesh-controller/cmd/mesh-controller	121s	(shard 8 of 8: 130 tests)
ok  	github.com/novox/mesh-controller/internal/inventory	18s	(shard 1 of 4: 78 tests)
ok  	github.com/novox/mesh-controller/internal/inventory	18s	(shard 2 of 4: 78 tests)
ok  	github.com/novox/mesh-controller/internal/inventory	16s	(shard 3 of 4: 77 tests)
ok  	github.com/novox/mesh-controller/internal/inventory	17s	(shard 4 of 4: 77 tests)
ok  	github.com/novox/mesh-controller/internal/builder	17s	(shard 1 of 4: 55 tests)
ok  	github.com/novox/mesh-controller/internal/builder	19s	(shard 2 of 4: 55 tests)
ok  	github.com/novox/mesh-controller/internal/builder	53s	(shard 3 of 4: 55 tests)
ok  	github.com/novox/mesh-controller/internal/builder	51s	(shard 4 of 4: 55 tests)
ok  	github.com/novox/mesh-controller/internal/link	16s	(shard 1 of 4: 49 tests)
ok  	github.com/novox/mesh-controller/internal/link	20s	(shard 2 of 4: 49 tests)
ok  	github.com/novox/mesh-controller/internal/link	16s	(shard 3 of 4: 48 tests)
ok  	github.com/novox/mesh-controller/internal/link	20s	(shard 4 of 4: 48 tests)
store tests, each run against the store:
  ./cmd/mesh-controller --- PASS: TestAStopWithoutAMergeWalksTheOthersAgain (0.29s)
  ./cmd/mesh-controller --- PASS: TestAStopWithoutAMergeEndsTheMergesThatContainIt (0.29s)
  ./cmd/mesh-controller --- PASS: TestAStopWalksTheOthersAgainInTheOpenBatch (0.29s)
  ./cmd/mesh-controller --- PASS: TestAStopNamesWhatStaysOnTheMachinesAndWhatStillCarriesIt (0.28s)
  ./cmd/mesh-controller --- PASS: TestAStopWithoutAMergeLeavesItOutOfABatch (0.27s)
  ./cmd/mesh-controller --- PASS: TestSavingPlansAndMovingMergesIsOneAct (0.22s)
  ./cmd/mesh-controller --- PASS: TestAPlanFollowedFromTheStoreAnswersWhenItMoves (2.04s)
  ./cmd/mesh-controller --- PASS: TestIssue969TheGateRaisesEachMachineAsItsEngineStatedItself (0.86s)
  ./cmd/mesh-controller --- PASS: TestNodeShowAndStatusReadTheLastSendFromTheStore (0.31s)
  ./cmd/mesh-controller --- PASS: TestTheConditionsVerbReadsTheLooksTheBucketNoLongerHolds (0.37s)
  ./cmd/mesh-controller --- PASS: TestAWalkLetGoAndStoppedByVerbsIsSaidStartedAndEnded (0.28s)
  ./cmd/mesh-controller --- PASS: TestAWalkStoppedOrClosedByAPersonIsSaidEndedStopped (0.28s)
  ./cmd/mesh-controller --- PASS: TestAWalkRetriedByAPersonIsSaidStartedAgain (0.23s)
  ./cmd/mesh-controller --- PASS: TestABacklogReleasedByAPersonIsSaidStarted (0.24s)
  ./cmd/mesh-controller --- PASS: TestAWalkEndedByCancelOrClearIsSaidEnded (0.32s)
  ./cmd/mesh-controller --- PASS: TestAWalkRestartedByARebuildIsSaidStarted (0.25s)
  ./cmd/mesh-controller --- PASS: TestAWalkStoppedByHandAndRetriedEndsFailedWhenItFailsAgain (0.31s)
  ./cmd/mesh-controller --- PASS: TestReplay237 (0.28s)
  ./cmd/mesh-controller --- PASS: TestAnUnassignThatLeavesItsNodeUnresolvedSaysSoOnceInItsAnswer (0.29s)
  ./cmd/mesh-controller --- PASS: TestAnUnassignThatLeavesItsNodeResolvedSaysNothingOfIt (0.31s)
  ./cmd/mesh-controller --- PASS: TestAnAssignThatLeavesItsNodeUnresolvedSaysOnlyThePlansRefusal (0.27s)
  ./cmd/mesh-controller --- PASS: TestADirectoryOwnersKeyIsRefusedThroughAVerb (0.27s)
  ./cmd/mesh-controller --- PASS: TestTheSendMakesNoValueForAnOutsideSecretNobodyGave (0.56s)
  ./cmd/mesh-controller --- PASS: TestAQuestionComposesWithoutAnOutsideSecretNobodyGave (0.50s)
  ./cmd/mesh-controller --- PASS: TestReplay201 (0.23s)
  ./cmd/mesh-controller --- PASS: TestARollbackWhoseSendWasRefusedIsCompletedByTheNextSend (0.20s)
  ./cmd/mesh-controller --- PASS: TestAGateJudgesTheOtherMovesBesideAKeptCore (0.26s)
  ./cmd/mesh-controller --- PASS: TestReplay401 (0.46s)
  ./cmd/mesh-controller --- PASS: TestReplay201ThePlansSend (0.34s)
  ./cmd/mesh-controller --- PASS: TestPlanAndNodeListAnOptionalRequirementLeftUnbound (0.47s)
  ./cmd/mesh-controller --- PASS: TestReplay340 (0.42s)
  ./cmd/mesh-controller --- PASS: TestOnlyATrustedFilesNamedKeyIsRefusedThroughAVerb (0.23s)
  ./cmd/mesh-controller --- PASS: TestReplay349 (0.34s)
  ./cmd/mesh-controller --- PASS: TestReplay348AFaultFromBeforeTheSendFailsNoGate (0.24s)
  ./cmd/mesh-controller --- PASS: TestReplay239AModuleNameIsNotTakenOverByAnotherRepository (0.29s)
  ./cmd/mesh-controller --- PASS: TestAWalkThatMovedNothingSaysWhichModulesMatchedWhatRuns (0.25s)
  ./cmd/mesh-controller --- PASS: TestAWalkWhoseEveryBuildCameOutTheSameIsDone (0.21s)
  ./cmd/mesh-controller --- PASS: TestReplay614ANewSDKPlansTheToolchainAndThenItsBundles (0.12s)
  ./cmd/mesh-controller --- PASS: TestOneAcceptForAProviderIsPlacedForEveryConsumer (0.77s)
  ./cmd/mesh-controller --- PASS: TestReplay164 (0.41s)
  ./cmd/mesh-controller --- PASS: TestAnApprovedLayerOpensTheWalkThatSendsIt (0.25s)
  ./cmd/mesh-controller --- PASS: TestASettingsWalkSendsOneMachineAtATimeEachJudged (0.24s)
  ./cmd/mesh-controller --- PASS: TestAFailedSettingsWalkStopsAndHoldsNothingBack (0.22s)
  ./cmd/mesh-controller --- PASS: TestASettingsWalkSendsTheLayerAloneEveryBuildKept (0.24s)
  ./cmd/mesh-controller --- PASS: TestASettingsWalkStopsBeforeADataMoveAndPassesOverAMachineAway (0.67s)
  ./cmd/mesh-controller --- PASS: TestACrossingSendSupersedesASettingsGate (0.21s)
  ./cmd/mesh-controller --- PASS: TestASettingsWalkFailsOnARefusalThatCannotClear (0.20s)
  ./cmd/mesh-controller --- PASS: TestAProviderElsewhereServesItsOwnComposedName (0.31s)
  ./cmd/mesh-controller --- PASS: TestAReusedCheckBuildIsRegisteredByItsDigestAndGatedAsABuiltOne (0.49s)
  ./cmd/mesh-controller --- PASS: TestTheMergeGateJudgesEachManifestAgainstTheListOfTheTree (6.41s)
  ./cmd/mesh-controller --- PASS: TestRegistrationPublishesTheNewestTrunkListAndJudgesEveryModuleAgainstIt (0.23s)
  ./cmd/mesh-controller --- PASS: TestADeclarationIsTheSameAfterPlacementMoves (0.55s)
  ./cmd/mesh-controller --- PASS: TestAReleaseSendsTheRestAtOnceAfterTheFirstPasses (0.32s)
  ./cmd/mesh-controller --- PASS: TestARestMachineThatFailsIsPutBackAloneAndTheOthersAreJudgedOn (0.28s)
  ./cmd/mesh-controller --- PASS: TestAWalkTakesOverTheReadingsOfAGateJudgingTheSameBuildThere (0.25s)
  ./cmd/mesh-controller --- PASS: TestAFirstSendMadeAndNotKeptIsNotSentAgain (0.31s)
  ./cmd/mesh-controller --- PASS: TestAReleaseSendKeptAndMadeIsNotMadeAgain (0.26s)
  ./cmd/mesh-controller --- PASS: TestAFirstMachineThatFailsStillStopsTheWalk (0.21s)
  ./cmd/mesh-controller --- PASS: TestTheControlNodeIsSentLastInAStep (0.30s)
  ./cmd/mesh-controller --- PASS: TestARestMachineSilentPastItsBoundIsLeftAndSaid (0.26s)
  ./cmd/mesh-controller --- PASS: TestANoMoveTierWaitsForNoNewReport (0.27s)
  ./cmd/mesh-controller --- PASS: TestOneProviderDownAndThreeConsumersFailingAreOneCondition (0.22s)
  ./cmd/mesh-controller --- PASS: TestAConsumerFailingBesideAHealthyProviderIsItsOwn (0.21s)
  ./cmd/mesh-controller --- PASS: TestTheProvisionerClientsAccountIsIssuedForItsServiceAndNeverInvented (0.26s)
  ./cmd/mesh-controller --- PASS: TestAcceptOfAnOwnSecretTakesThePathOfItsModulesForm (0.34s)
  ./cmd/mesh-controller --- PASS: TestAcceptForAProviderTakesThePathOfTheProvidersModule (0.35s)
  ./cmd/mesh-controller --- PASS: TestAcceptForAMovedTrustedModuleAnnouncesBeforeTheVaultIsAsked (0.29s)
  ./cmd/mesh-controller --- PASS: TestAcceptForAMovedModuleRecordsAHandActAndNeverTheValue (0.25s)
  ./cmd/mesh-controller --- PASS: TestAcceptOfAnOutsideOfferTakesThePathOfTheProvidersModule (0.33s)
  ./cmd/mesh-controller --- PASS: TestAnAskAtTheDeskTakesThePathOfItsModulesForm (0.31s)
  ./cmd/mesh-controller --- PASS: TestAnIssuedValueTakesThePathOfItsProvidersModule (0.35s)
  ./cmd/mesh-controller --- PASS: TestARotationTakesThePathOfItsModulesForm (0.25s)
  ./cmd/mesh-controller --- PASS: TestADeclarationIsTheSameWhileTheWordsAreStillInTheLayers (3.07s)
  ./cmd/mesh-controller --- PASS: TestADeclarationIsTheSameAfterTheMoveOfPlacement (4.92s)
  ./cmd/mesh-controller --- PASS: TestTheSendSealsNoSecretOfAModuleHandedThere (0.30s)
  ./cmd/mesh-controller --- PASS: TestAModulesSecretsAreTheVaultsOnceItIsMarkedMoved (0.21s)
  ./cmd/mesh-controller --- PASS: TestEveryMachineIsToldTheSameAfterTheMoveOfConfig (26.25s)
  ./cmd/mesh-controller --- PASS: TestTheMoveOfConfigRefusesWhatWouldChangeAMachine (8.65s)
  ./cmd/mesh-controller --- PASS: TestTheSettingsVerbForwardsToConfigOnceTheValuesMoved (13.50s)
  ./cmd/mesh-controller --- PASS: TestTheSendCarriesTheVaultsBoxForACoreCredentialAndKeepsIt (0.48s)
  ./cmd/mesh-controller --- PASS: TestASilentVaultHoldsTheKeptBoxAndSaysSo (0.43s)
  ./cmd/mesh-controller --- PASS: TestACoreModuleFirstPlacedWhileTheVaultIsSilentIsSealedByTheController (0.33s)
  ./cmd/mesh-controller --- PASS: TestAnEngineBelowTheContractIsSentTheControllersSealAsBefore (0.31s)
  ./cmd/mesh-controller --- PASS: TestModuleIssueHandsACoveredAccountToTheVaultAndOnlyThat (0.32s)
  ./cmd/mesh-controller --- PASS: TestModuleIssueFailsWhenTheVaultDoesNotTakeACoveredAccount (0.25s)
  ./cmd/mesh-controller --- PASS: TestModuleIssueBeforeTheVaultIsInstalledKeepsTheValueAndHandsNothing (0.27s)
  ./cmd/mesh-controller --- PASS: TestARecordedModulesBundleOnlyMoveRollsOutInItsWalk (0.43s)
  ./cmd/mesh-controller --- PASS: TestARecordedModulesMoveThatRecreatesAContainerWaits (0.82s)
  ./cmd/mesh-controller --- PASS: TestARecordedModulesMoveThatTouchesDataOrAProviderWaits (0.84s)
  ./cmd/mesh-controller --- PASS: TestAPersonsRecordAndTheBusHoldEveryMove (0.65s)
  ./cmd/mesh-controller --- PASS: TestARecordedMoveThatCannotBeJudgedWaits (0.44s)
  ./cmd/mesh-controller --- PASS: TestReplay867 (4.70s)
  ./cmd/mesh-controller --- PASS: TestReplay867Recheck (4.61s)
  ./cmd/mesh-controller --- PASS: TestTheRecheckVerbAsksMeshDeliveryOnABusOfItsOwn (0.37s)
  ./cmd/mesh-controller --- PASS: TestAGroupsCompositionIntoAReleaseBranchIsJudgedByItsOwnController (4.36s)
  ./cmd/mesh-controller --- PASS: TestAGroupsCompositionJudgedWithTheValidatorIntoAReleaseBranchIsJudgedByItsOwnController (4.01s)
  ./cmd/mesh-controller --- PASS: TestAssigningTheClientIssuesItsAccount (0.24s)
  ./cmd/mesh-controller --- PASS: TestAnUnrelatedBatchWalksBesideAnOpenWalk (0.69s)
  ./cmd/mesh-controller --- PASS: TestARelatedBatchWaitsBehindTheOpenWalk (0.45s)
  ./cmd/mesh-controller --- PASS: TestAnOwnPathBatchNeverWalksBeside (0.38s)
  ./cmd/mesh-controller --- PASS: TestMergesHeardWhileAnotherHolderHasThePlansAreRecordedAndCarried (7.43s)
  ./cmd/mesh-controller --- PASS: TestABatchWindowClosesByTheExpiryOfItsKey (1.65s)
  ./internal/inventory --- PASS: TestTheLastSendSaysWhatTheMachineAnswered (0.16s)
  ./internal/inventory --- PASS: TestAReportIsTheLastSendsAnswerOnlyWhenItIsAboutThatSend (0.19s)
  ./internal/inventory --- PASS: TestAnIssuedValueIsSealedToEveryHolderOnceAndNotAgain (0.11s)
  ./internal/inventory --- PASS: TestAnIssuedValueIsSealedAgainAfterAKeyChangeOrAnAcceptance (0.11s)
  ./internal/inventory --- PASS: TestAConditionsLooksAreKeptBesideTheBucket (0.09s)
  ./internal/inventory --- PASS: TestAPlanIdHoldingAQuoteIsReadAsAPlainId (0.20s)
  ./internal/inventory --- PASS: TestAWalksStartIsKeptAndARefusedSaveLeavesItUnsaid (0.14s)
  ./internal/inventory --- PASS: TestAWalksRestIsReadFromEachMachinesOwnSend (0.14s)
  ./internal/inventory --- PASS: TestAStoredBuildWithASilentMergeableFileIsStillReadAndComposed (0.14s)
  ./internal/inventory --- PASS: TestACredentialIssuedOutsideIsNeverMade (0.10s)
  ./internal/inventory --- PASS: TestOneAcceptForAProviderIsSealedToEveryConsumer (0.09s)
  ./internal/inventory --- PASS: TestASharedOwnSecretIssuedOutsideIsNeverMade (0.08s)
  ./internal/inventory --- PASS: TestAModuleInTheConfigFormIsMirroredWithItsWholeDeclaration (0.15s)
  ./internal/inventory --- PASS: TestAReportOfABusyContainerIsKeptAndReadBack (0.12s)
  ./internal/inventory --- PASS: TestANewerBuildsListReplacesTheKeptOneAndAnOlderOneHeardLaterDoesNot (0.14s)
  ./internal/inventory --- PASS: TestPlacementMovesOutOfTheSettingsLayers (0.47s)
  ./internal/inventory --- PASS: TestASettingRoutesPlacementBesideTheLayer (0.14s)
  ./internal/inventory --- PASS: TestTheProvisionerClientsMachineHasAnAccountOfItsOwn (0.73s)
  ./internal/inventory --- PASS: TestTheFourWordsAreKeptBesideTheLayer (0.17s)
  ./internal/inventory --- PASS: TestALayerStillHoldingTheWordsReadsThemAsPlacement (0.22s)
  ./internal/inventory --- PASS: TestTheMoveOfPlacementMovesWhatTheLayersStillHold (0.20s)
  ./internal/inventory --- PASS: TestTheMoveReadsEveryRowSealedToAMachineAsItIs (0.19s)
  ./internal/inventory --- PASS: TestASendKeepsThePlansItHandedAndTheMirrorCarriesThem (0.17s)
  ./internal/inventory --- PASS: TestTheLayersAreReadUntilTheMoveOfConfigHasRun (0.14s)
  ./internal/inventory --- PASS: TestAModuleReadsMeshConfigOnlyWhereItsValuesAre (0.13s)
  ./internal/inventory --- PASS: TestTheEndOfTheMoveRefusesALayerChangedSinceItWasRead (0.14s)
  ./internal/inventory --- PASS: TestACoreCredentialsVaultBoxIsKeptPerMachineAndReplaced (0.10s)
  ./internal/inventory --- PASS: TestWhatRunsIsTheRegisteredBuildNotANewerOnePutBack (0.17s)
  ./internal/recordmirror --- PASS: TestNatsAnAssignmentAndARegistrationEachChangeOneKeyAndRaiseOneEvent (3.29s)
  ./internal/recordmirror --- PASS: TestNatsTheListOfPredefinedKeysKeptChangesTheMirrorsOneKey (1.60s)
**Merge check** at `bafc31bf` Judged: head `bafc31bf8568` merged into trunk `b0d489a86c23`; read beside it: mesh-catalog `a7d526838ab0`, mesh-controller-main `b0d489a86c23`, mesh-host `cd13f7726ef0`, mesh-tools `7412c5b6c9c5` - `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 - read by no module's build: cmd/mesh-controller/batches_test.go, cmd/mesh-controller/merge_on_the_bus_test.go, cmd/mesh-controller/merge_window_bus_test.go, cmd/mesh-controller/missed_merges_test.go, cmd/mesh-controller/related_test.go, cmd/mesh-controller/signals_test.go, internal/broker/controller_buckets_test.go, internal/broker/testdata/composed.conf, internal/catalogue/ssh_client_test.go, internal/link/receive_fake_test.go, internal/link/receive_nats_test.go, internal/link/store_window_test.go, testdata/store-tests Run by the build seat on shanks as `build-1792233889141252792` (`builds --log build-1792233889141252792`). ``` HELD: the vault did not answer for the core's credentials on yvbpsm; sealed by the controller until the vault holds it: mesh-provisioner-client — own/yvbpsm/mesh-provisioner-client/provisioner-broker: this control plane has no MESH_BUS_NATS, so it cannot reach the mesh's bus HELD: the vault did not answer for the core's credentials on f35; sealed by the controller until the vault holds it: mesh-provisioner-client — own/f35/mesh-provisioner-client/provisioner-broker: this control plane has no MESH_BUS_NATS, so it cannot reach the mesh's bus HELD: the vault did not answer for the core's credentials on idt; sealed by the controller until the vault holds it: mesh-provisioner-client — own/idt/mesh-provisioner-client/provisioner-broker: this control plane has no MESH_BUS_NATS, so it cannot reach the mesh's bus HELD: the vault did not answer for the core's credentials on ygcyr; sealed by the controller until the vault holds it: mesh-provisioner, mesh-provisioner-client, nats — own/ygcyr/mesh-provisioner/broker: this control plane has no MESH_BUS_NATS, so it cannot reach the mesh's bus; own/ygcyr/mesh-provisioner-client/provisioner-broker: this control plane has no MESH_BUS_NATS, so it cannot reach the mesh's bus; own/ygcyr/nats/broker: this control plane has no MESH_BUS_NATS, so it cannot reach the mesh's bus 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 HELD: the vault did not answer for the core's credentials on yvbpsm; sealed by the controller until the vault holds it: mesh-provisioner-client — own/yvbpsm/mesh-provisioner-client/provisioner-broker: this control plane has no MESH_BUS_NATS, so it cannot reach the mesh's bus 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-17T01:02:16Z 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-config, holds mesh-delivery, holds mesh-dns-resolver, holds mesh-provisioner, 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 3 module(s) in 2 tier(s): build-agent, mesh-controller, route-proxy notes: - cmd/mesh-controller/batches_test.go, cmd/mesh-controller/merge_on_the_bus_test.go, cmd/mesh-controller/merge_window_bus_test.go, cmd/mesh-controller/missed_merges_test.go, cmd/mesh-controller/related_test.go, cmd/mesh-controller/signals_test.go, internal/broker/controller_buckets_test.go, internal/broker/testdata/composed.conf, internal/catalogue/ssh_client_test.go, internal/link/receive_fake_test.go, internal/link/receive_nats_test.go, internal/link/store_window_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.144s ok github.com/novox/mesh-controller/examples/objectstore-provisioner 1.023s ok github.com/novox/mesh-controller/examples/postgres-provisioner 1.030s ok github.com/novox/mesh-controller/examples/redis-provisioner 1.021s ok github.com/novox/mesh-controller/examples/route-proxy 1.186s ok github.com/novox/mesh-controller/internal/artifacts 1.060s ? github.com/novox/mesh-controller/internal/beside [no test files] ok github.com/novox/mesh-controller/internal/broker 55.332s ok github.com/novox/mesh-controller/internal/catalogue 20.160s ok github.com/novox/mesh-controller/internal/conditions 3.120s ok github.com/novox/mesh-controller/internal/envfile 1.037s ok github.com/novox/mesh-controller/internal/facts 1.062s ok github.com/novox/mesh-controller/internal/identity 6.396s ok github.com/novox/mesh-controller/internal/lease 10.274s ok github.com/novox/mesh-controller/internal/licences 5.197s ok github.com/novox/mesh-controller/internal/licences/adapters 1.064s ok github.com/novox/mesh-controller/internal/lint 3.390s ok github.com/novox/mesh-controller/internal/outward 1.087s ok github.com/novox/mesh-controller/internal/overlay 1.089s ok github.com/novox/mesh-controller/internal/recordmirror 16.136s ok github.com/novox/mesh-controller/internal/secrets 1.627s ok github.com/novox/mesh-controller/internal/store 4.048s ok github.com/novox/mesh-controller/internal/testbus 1.257s ok github.com/novox/mesh-controller/internal/token 1.072s ok github.com/novox/mesh-controller/cmd/mesh-controller 99s (shard 1 of 8: 131 tests) ok github.com/novox/mesh-controller/cmd/mesh-controller 113s (shard 2 of 8: 131 tests) ok github.com/novox/mesh-controller/cmd/mesh-controller 72s (shard 3 of 8: 131 tests) ok github.com/novox/mesh-controller/cmd/mesh-controller 62s (shard 4 of 8: 131 tests) ok github.com/novox/mesh-controller/cmd/mesh-controller 183s (shard 5 of 8: 131 tests) ok github.com/novox/mesh-controller/cmd/mesh-controller 85s (shard 6 of 8: 131 tests) ok github.com/novox/mesh-controller/cmd/mesh-controller 64s (shard 7 of 8: 130 tests) ok github.com/novox/mesh-controller/cmd/mesh-controller 121s (shard 8 of 8: 130 tests) ok github.com/novox/mesh-controller/internal/inventory 18s (shard 1 of 4: 78 tests) ok github.com/novox/mesh-controller/internal/inventory 18s (shard 2 of 4: 78 tests) ok github.com/novox/mesh-controller/internal/inventory 16s (shard 3 of 4: 77 tests) ok github.com/novox/mesh-controller/internal/inventory 17s (shard 4 of 4: 77 tests) ok github.com/novox/mesh-controller/internal/builder 17s (shard 1 of 4: 55 tests) ok github.com/novox/mesh-controller/internal/builder 19s (shard 2 of 4: 55 tests) ok github.com/novox/mesh-controller/internal/builder 53s (shard 3 of 4: 55 tests) ok github.com/novox/mesh-controller/internal/builder 51s (shard 4 of 4: 55 tests) ok github.com/novox/mesh-controller/internal/link 16s (shard 1 of 4: 49 tests) ok github.com/novox/mesh-controller/internal/link 20s (shard 2 of 4: 49 tests) ok github.com/novox/mesh-controller/internal/link 16s (shard 3 of 4: 48 tests) ok github.com/novox/mesh-controller/internal/link 20s (shard 4 of 4: 48 tests) store tests, each run against the store: ./cmd/mesh-controller --- PASS: TestAStopWithoutAMergeWalksTheOthersAgain (0.29s) ./cmd/mesh-controller --- PASS: TestAStopWithoutAMergeEndsTheMergesThatContainIt (0.29s) ./cmd/mesh-controller --- PASS: TestAStopWalksTheOthersAgainInTheOpenBatch (0.29s) ./cmd/mesh-controller --- PASS: TestAStopNamesWhatStaysOnTheMachinesAndWhatStillCarriesIt (0.28s) ./cmd/mesh-controller --- PASS: TestAStopWithoutAMergeLeavesItOutOfABatch (0.27s) ./cmd/mesh-controller --- PASS: TestSavingPlansAndMovingMergesIsOneAct (0.22s) ./cmd/mesh-controller --- PASS: TestAPlanFollowedFromTheStoreAnswersWhenItMoves (2.04s) ./cmd/mesh-controller --- PASS: TestIssue969TheGateRaisesEachMachineAsItsEngineStatedItself (0.86s) ./cmd/mesh-controller --- PASS: TestNodeShowAndStatusReadTheLastSendFromTheStore (0.31s) ./cmd/mesh-controller --- PASS: TestTheConditionsVerbReadsTheLooksTheBucketNoLongerHolds (0.37s) ./cmd/mesh-controller --- PASS: TestAWalkLetGoAndStoppedByVerbsIsSaidStartedAndEnded (0.28s) ./cmd/mesh-controller --- PASS: TestAWalkStoppedOrClosedByAPersonIsSaidEndedStopped (0.28s) ./cmd/mesh-controller --- PASS: TestAWalkRetriedByAPersonIsSaidStartedAgain (0.23s) ./cmd/mesh-controller --- PASS: TestABacklogReleasedByAPersonIsSaidStarted (0.24s) ./cmd/mesh-controller --- PASS: TestAWalkEndedByCancelOrClearIsSaidEnded (0.32s) ./cmd/mesh-controller --- PASS: TestAWalkRestartedByARebuildIsSaidStarted (0.25s) ./cmd/mesh-controller --- PASS: TestAWalkStoppedByHandAndRetriedEndsFailedWhenItFailsAgain (0.31s) ./cmd/mesh-controller --- PASS: TestReplay237 (0.28s) ./cmd/mesh-controller --- PASS: TestAnUnassignThatLeavesItsNodeUnresolvedSaysSoOnceInItsAnswer (0.29s) ./cmd/mesh-controller --- PASS: TestAnUnassignThatLeavesItsNodeResolvedSaysNothingOfIt (0.31s) ./cmd/mesh-controller --- PASS: TestAnAssignThatLeavesItsNodeUnresolvedSaysOnlyThePlansRefusal (0.27s) ./cmd/mesh-controller --- PASS: TestADirectoryOwnersKeyIsRefusedThroughAVerb (0.27s) ./cmd/mesh-controller --- PASS: TestTheSendMakesNoValueForAnOutsideSecretNobodyGave (0.56s) ./cmd/mesh-controller --- PASS: TestAQuestionComposesWithoutAnOutsideSecretNobodyGave (0.50s) ./cmd/mesh-controller --- PASS: TestReplay201 (0.23s) ./cmd/mesh-controller --- PASS: TestARollbackWhoseSendWasRefusedIsCompletedByTheNextSend (0.20s) ./cmd/mesh-controller --- PASS: TestAGateJudgesTheOtherMovesBesideAKeptCore (0.26s) ./cmd/mesh-controller --- PASS: TestReplay401 (0.46s) ./cmd/mesh-controller --- PASS: TestReplay201ThePlansSend (0.34s) ./cmd/mesh-controller --- PASS: TestPlanAndNodeListAnOptionalRequirementLeftUnbound (0.47s) ./cmd/mesh-controller --- PASS: TestReplay340 (0.42s) ./cmd/mesh-controller --- PASS: TestOnlyATrustedFilesNamedKeyIsRefusedThroughAVerb (0.23s) ./cmd/mesh-controller --- PASS: TestReplay349 (0.34s) ./cmd/mesh-controller --- PASS: TestReplay348AFaultFromBeforeTheSendFailsNoGate (0.24s) ./cmd/mesh-controller --- PASS: TestReplay239AModuleNameIsNotTakenOverByAnotherRepository (0.29s) ./cmd/mesh-controller --- PASS: TestAWalkThatMovedNothingSaysWhichModulesMatchedWhatRuns (0.25s) ./cmd/mesh-controller --- PASS: TestAWalkWhoseEveryBuildCameOutTheSameIsDone (0.21s) ./cmd/mesh-controller --- PASS: TestReplay614ANewSDKPlansTheToolchainAndThenItsBundles (0.12s) ./cmd/mesh-controller --- PASS: TestOneAcceptForAProviderIsPlacedForEveryConsumer (0.77s) ./cmd/mesh-controller --- PASS: TestReplay164 (0.41s) ./cmd/mesh-controller --- PASS: TestAnApprovedLayerOpensTheWalkThatSendsIt (0.25s) ./cmd/mesh-controller --- PASS: TestASettingsWalkSendsOneMachineAtATimeEachJudged (0.24s) ./cmd/mesh-controller --- PASS: TestAFailedSettingsWalkStopsAndHoldsNothingBack (0.22s) ./cmd/mesh-controller --- PASS: TestASettingsWalkSendsTheLayerAloneEveryBuildKept (0.24s) ./cmd/mesh-controller --- PASS: TestASettingsWalkStopsBeforeADataMoveAndPassesOverAMachineAway (0.67s) ./cmd/mesh-controller --- PASS: TestACrossingSendSupersedesASettingsGate (0.21s) ./cmd/mesh-controller --- PASS: TestASettingsWalkFailsOnARefusalThatCannotClear (0.20s) ./cmd/mesh-controller --- PASS: TestAProviderElsewhereServesItsOwnComposedName (0.31s) ./cmd/mesh-controller --- PASS: TestAReusedCheckBuildIsRegisteredByItsDigestAndGatedAsABuiltOne (0.49s) ./cmd/mesh-controller --- PASS: TestTheMergeGateJudgesEachManifestAgainstTheListOfTheTree (6.41s) ./cmd/mesh-controller --- PASS: TestRegistrationPublishesTheNewestTrunkListAndJudgesEveryModuleAgainstIt (0.23s) ./cmd/mesh-controller --- PASS: TestADeclarationIsTheSameAfterPlacementMoves (0.55s) ./cmd/mesh-controller --- PASS: TestAReleaseSendsTheRestAtOnceAfterTheFirstPasses (0.32s) ./cmd/mesh-controller --- PASS: TestARestMachineThatFailsIsPutBackAloneAndTheOthersAreJudgedOn (0.28s) ./cmd/mesh-controller --- PASS: TestAWalkTakesOverTheReadingsOfAGateJudgingTheSameBuildThere (0.25s) ./cmd/mesh-controller --- PASS: TestAFirstSendMadeAndNotKeptIsNotSentAgain (0.31s) ./cmd/mesh-controller --- PASS: TestAReleaseSendKeptAndMadeIsNotMadeAgain (0.26s) ./cmd/mesh-controller --- PASS: TestAFirstMachineThatFailsStillStopsTheWalk (0.21s) ./cmd/mesh-controller --- PASS: TestTheControlNodeIsSentLastInAStep (0.30s) ./cmd/mesh-controller --- PASS: TestARestMachineSilentPastItsBoundIsLeftAndSaid (0.26s) ./cmd/mesh-controller --- PASS: TestANoMoveTierWaitsForNoNewReport (0.27s) ./cmd/mesh-controller --- PASS: TestOneProviderDownAndThreeConsumersFailingAreOneCondition (0.22s) ./cmd/mesh-controller --- PASS: TestAConsumerFailingBesideAHealthyProviderIsItsOwn (0.21s) ./cmd/mesh-controller --- PASS: TestTheProvisionerClientsAccountIsIssuedForItsServiceAndNeverInvented (0.26s) ./cmd/mesh-controller --- PASS: TestAcceptOfAnOwnSecretTakesThePathOfItsModulesForm (0.34s) ./cmd/mesh-controller --- PASS: TestAcceptForAProviderTakesThePathOfTheProvidersModule (0.35s) ./cmd/mesh-controller --- PASS: TestAcceptForAMovedTrustedModuleAnnouncesBeforeTheVaultIsAsked (0.29s) ./cmd/mesh-controller --- PASS: TestAcceptForAMovedModuleRecordsAHandActAndNeverTheValue (0.25s) ./cmd/mesh-controller --- PASS: TestAcceptOfAnOutsideOfferTakesThePathOfTheProvidersModule (0.33s) ./cmd/mesh-controller --- PASS: TestAnAskAtTheDeskTakesThePathOfItsModulesForm (0.31s) ./cmd/mesh-controller --- PASS: TestAnIssuedValueTakesThePathOfItsProvidersModule (0.35s) ./cmd/mesh-controller --- PASS: TestARotationTakesThePathOfItsModulesForm (0.25s) ./cmd/mesh-controller --- PASS: TestADeclarationIsTheSameWhileTheWordsAreStillInTheLayers (3.07s) ./cmd/mesh-controller --- PASS: TestADeclarationIsTheSameAfterTheMoveOfPlacement (4.92s) ./cmd/mesh-controller --- PASS: TestTheSendSealsNoSecretOfAModuleHandedThere (0.30s) ./cmd/mesh-controller --- PASS: TestAModulesSecretsAreTheVaultsOnceItIsMarkedMoved (0.21s) ./cmd/mesh-controller --- PASS: TestEveryMachineIsToldTheSameAfterTheMoveOfConfig (26.25s) ./cmd/mesh-controller --- PASS: TestTheMoveOfConfigRefusesWhatWouldChangeAMachine (8.65s) ./cmd/mesh-controller --- PASS: TestTheSettingsVerbForwardsToConfigOnceTheValuesMoved (13.50s) ./cmd/mesh-controller --- PASS: TestTheSendCarriesTheVaultsBoxForACoreCredentialAndKeepsIt (0.48s) ./cmd/mesh-controller --- PASS: TestASilentVaultHoldsTheKeptBoxAndSaysSo (0.43s) ./cmd/mesh-controller --- PASS: TestACoreModuleFirstPlacedWhileTheVaultIsSilentIsSealedByTheController (0.33s) ./cmd/mesh-controller --- PASS: TestAnEngineBelowTheContractIsSentTheControllersSealAsBefore (0.31s) ./cmd/mesh-controller --- PASS: TestModuleIssueHandsACoveredAccountToTheVaultAndOnlyThat (0.32s) ./cmd/mesh-controller --- PASS: TestModuleIssueFailsWhenTheVaultDoesNotTakeACoveredAccount (0.25s) ./cmd/mesh-controller --- PASS: TestModuleIssueBeforeTheVaultIsInstalledKeepsTheValueAndHandsNothing (0.27s) ./cmd/mesh-controller --- PASS: TestARecordedModulesBundleOnlyMoveRollsOutInItsWalk (0.43s) ./cmd/mesh-controller --- PASS: TestARecordedModulesMoveThatRecreatesAContainerWaits (0.82s) ./cmd/mesh-controller --- PASS: TestARecordedModulesMoveThatTouchesDataOrAProviderWaits (0.84s) ./cmd/mesh-controller --- PASS: TestAPersonsRecordAndTheBusHoldEveryMove (0.65s) ./cmd/mesh-controller --- PASS: TestARecordedMoveThatCannotBeJudgedWaits (0.44s) ./cmd/mesh-controller --- PASS: TestReplay867 (4.70s) ./cmd/mesh-controller --- PASS: TestReplay867Recheck (4.61s) ./cmd/mesh-controller --- PASS: TestTheRecheckVerbAsksMeshDeliveryOnABusOfItsOwn (0.37s) ./cmd/mesh-controller --- PASS: TestAGroupsCompositionIntoAReleaseBranchIsJudgedByItsOwnController (4.36s) ./cmd/mesh-controller --- PASS: TestAGroupsCompositionJudgedWithTheValidatorIntoAReleaseBranchIsJudgedByItsOwnController (4.01s) ./cmd/mesh-controller --- PASS: TestAssigningTheClientIssuesItsAccount (0.24s) ./cmd/mesh-controller --- PASS: TestAnUnrelatedBatchWalksBesideAnOpenWalk (0.69s) ./cmd/mesh-controller --- PASS: TestARelatedBatchWaitsBehindTheOpenWalk (0.45s) ./cmd/mesh-controller --- PASS: TestAnOwnPathBatchNeverWalksBeside (0.38s) ./cmd/mesh-controller --- PASS: TestMergesHeardWhileAnotherHolderHasThePlansAreRecordedAndCarried (7.43s) ./cmd/mesh-controller --- PASS: TestABatchWindowClosesByTheExpiryOfItsKey (1.65s) ./internal/inventory --- PASS: TestTheLastSendSaysWhatTheMachineAnswered (0.16s) ./internal/inventory --- PASS: TestAReportIsTheLastSendsAnswerOnlyWhenItIsAboutThatSend (0.19s) ./internal/inventory --- PASS: TestAnIssuedValueIsSealedToEveryHolderOnceAndNotAgain (0.11s) ./internal/inventory --- PASS: TestAnIssuedValueIsSealedAgainAfterAKeyChangeOrAnAcceptance (0.11s) ./internal/inventory --- PASS: TestAConditionsLooksAreKeptBesideTheBucket (0.09s) ./internal/inventory --- PASS: TestAPlanIdHoldingAQuoteIsReadAsAPlainId (0.20s) ./internal/inventory --- PASS: TestAWalksStartIsKeptAndARefusedSaveLeavesItUnsaid (0.14s) ./internal/inventory --- PASS: TestAWalksRestIsReadFromEachMachinesOwnSend (0.14s) ./internal/inventory --- PASS: TestAStoredBuildWithASilentMergeableFileIsStillReadAndComposed (0.14s) ./internal/inventory --- PASS: TestACredentialIssuedOutsideIsNeverMade (0.10s) ./internal/inventory --- PASS: TestOneAcceptForAProviderIsSealedToEveryConsumer (0.09s) ./internal/inventory --- PASS: TestASharedOwnSecretIssuedOutsideIsNeverMade (0.08s) ./internal/inventory --- PASS: TestAModuleInTheConfigFormIsMirroredWithItsWholeDeclaration (0.15s) ./internal/inventory --- PASS: TestAReportOfABusyContainerIsKeptAndReadBack (0.12s) ./internal/inventory --- PASS: TestANewerBuildsListReplacesTheKeptOneAndAnOlderOneHeardLaterDoesNot (0.14s) ./internal/inventory --- PASS: TestPlacementMovesOutOfTheSettingsLayers (0.47s) ./internal/inventory --- PASS: TestASettingRoutesPlacementBesideTheLayer (0.14s) ./internal/inventory --- PASS: TestTheProvisionerClientsMachineHasAnAccountOfItsOwn (0.73s) ./internal/inventory --- PASS: TestTheFourWordsAreKeptBesideTheLayer (0.17s) ./internal/inventory --- PASS: TestALayerStillHoldingTheWordsReadsThemAsPlacement (0.22s) ./internal/inventory --- PASS: TestTheMoveOfPlacementMovesWhatTheLayersStillHold (0.20s) ./internal/inventory --- PASS: TestTheMoveReadsEveryRowSealedToAMachineAsItIs (0.19s) ./internal/inventory --- PASS: TestASendKeepsThePlansItHandedAndTheMirrorCarriesThem (0.17s) ./internal/inventory --- PASS: TestTheLayersAreReadUntilTheMoveOfConfigHasRun (0.14s) ./internal/inventory --- PASS: TestAModuleReadsMeshConfigOnlyWhereItsValuesAre (0.13s) ./internal/inventory --- PASS: TestTheEndOfTheMoveRefusesALayerChangedSinceItWasRead (0.14s) ./internal/inventory --- PASS: TestACoreCredentialsVaultBoxIsKeptPerMachineAndReplaced (0.10s) ./internal/inventory --- PASS: TestWhatRunsIsTheRegisteredBuildNotANewerOnePutBack (0.17s) ./internal/recordmirror --- PASS: TestNatsAnAssignmentAndARegistrationEachChangeOneKeyAndRaiseOneEvent (3.29s) ./internal/recordmirror --- PASS: TestNatsTheListOfPredefinedKeysKeptChangesTheMirrorsOneKey (1.60s) ```
mesh-tools merged commit 7d80155d16 into main 2026-10-17 10:54:05 +00:00
mesh-tools deleted branch feat/merge-window-on-the-bus 2026-10-17 10:54:05 +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#367