Issue 1334 (notes 3 and 4 hold the diagnosis). A send gives modules new credentials, and the bus reloads its user list; for a few seconds its JetStream API refuses ('no responders', 'jetstream not enabled'). askModule failed the module and the whole delivery plan on any ask error, so R3e's delivery failed 36 builds at once on 2026-10-20 11:36 UTC.
ask_bus_wait.go: busDidNotAnswer (ErrNoChain, ErrNoResponders, both ErrJetStreamNotEnabled, and their text where the opener wraps with %v) and waitForTheBus. A refused module stays unasked with the note 'the bus did not answer', and is asked again at the next look; past 10 minutes it fails with 'the bus did not answer an ask for 10m0s (since …): …'. A module's own fault still fails at once.
release_plan.go: advanceHeld reports a failed look while a plan has a bus-waiting module, so the looker's retry (5 s doubling to 1 min) comes back even when no other event comes; nothing is saved while nothing changed. BusWaitFrom is cleared on an ask and on a failure.
plan_retry.go: Retry and rebuild say a bus wait in words; a Retry whose modules all wait for the bus says 'nothing asked yet' (half of issue 1403, 97062250).
internal/inventory/plans.go: PlanModule.BusWaitFrom (JSON, no column, no migration).
Tests (seen failing first where they can run without a store): ask_bus_moment_test.go, retry_words_test.go and the integration tests ask_bus_look_integration_test.go.
Checks before this pull request: try build-1792498234624855268 at b76cbf70 on main b718d24f passed (1441 unit tests in 2.61 s, 2603 integration tests).
Moved onto main after mesh-controller #405 as one commit; it differs from the reviewed fd20b40d by the test's catalogue import only.
Its first merge check (12:59 UTC) failed only on TestTheCataloguesDerivedSubjectsMeet, a catalogue fault fixed by mesh-catalog #382; the recheck of 13:32 UTC was lost (issue 1340).
Opened along the way: 1402, 1403, 1408.
Issue 1334 (notes 3 and 4 hold the diagnosis). A send gives modules new credentials, and the bus reloads its user list; for a few seconds its JetStream API refuses ('no responders', 'jetstream not enabled'). askModule failed the module and the whole delivery plan on any ask error, so R3e's delivery failed 36 builds at once on 2026-10-20 11:36 UTC.
- ask_bus_wait.go: busDidNotAnswer (ErrNoChain, ErrNoResponders, both ErrJetStreamNotEnabled, and their text where the opener wraps with %v) and waitForTheBus. A refused module stays unasked with the note 'the bus did not answer', and is asked again at the next look; past 10 minutes it fails with 'the bus did not answer an ask for 10m0s (since …): …'. A module's own fault still fails at once.
- release_plan.go: advanceHeld reports a failed look while a plan has a bus-waiting module, so the looker's retry (5 s doubling to 1 min) comes back even when no other event comes; nothing is saved while nothing changed. BusWaitFrom is cleared on an ask and on a failure.
- plan_retry.go: Retry and rebuild say a bus wait in words; a Retry whose modules all wait for the bus says 'nothing asked yet' (half of issue 1403, 97062250).
- internal/inventory/plans.go: PlanModule.BusWaitFrom (JSON, no column, no migration).
Tests (seen failing first where they can run without a store): ask_bus_moment_test.go, retry_words_test.go and the integration tests ask_bus_look_integration_test.go.
Checks before this pull request: try build-1792498234624855268 at b76cbf70 on main b718d24f passed (1441 unit tests in 2.61 s, 2603 integration tests).
Moved onto main after mesh-controller #405 as one commit; it differs from the reviewed fd20b40d by the test's catalogue import only.
Its first merge check (12:59 UTC) failed only on TestTheCataloguesDerivedSubjectsMeet, a catalogue fault fixed by mesh-catalog #382; the recheck of 13:32 UTC was lost (issue 1340).
Opened along the way: 1402, 1403, 1408.
Reviewed-by: review-1334@shanks at 970622505b30a475c59ccb52c3bebb6f3aa11253
Issues: 1334, 1403
mesh/merge-gate checking again: its repo-check failed at 12:59 UTC only on TestTheCataloguesDerivedSubjectsMeet, a catalogue fault (mesh-issues' dead subsc…
mesh/repo-check checking again: its repo-check failed at 12:59 UTC only on TestTheCataloguesDerivedSubjectsMeet, a catalogue fault (mesh-issues' dead subsc…
Deliverynovox/mesh-controller@970622505b30 — delivered since 2026-10-20T13:58:46Z
Delivery plan — builds build-agent, mesh-controller → ace, g14, novox, shanks; no bus step
tier 0: mesh-controller
tier 1: build-agent
ace: receives build-agent
g14: receives build-agent
novox: receives mesh-controller, build-agent
shanks: receives build-agent
build-agent keeps data (ADR 0233): what it holds is backed up before it moves
grants step: if this changes what the bus's user list says (a new tool, subject or user), novox is sent that list alone, every build there kept, before build-agent is judged on its first machine
Machines
mesh-controller on every machine running it: sent
build-agent on every machine running it: sent
Transitions
2026-10-20 13:44 (new) → proposed (announced): novox/mesh-controller#406's head announced
2026-10-20 13:54 proposed → checked (checked): a verdict names this commit and the trunk's head as its trunk commit
2026-10-20 13:54 checked → ready (accepted): the gate passed or warned, and the repository's own check did not fail
2026-10-20 13:55 ready → published (merged): on the trunk its modules follow: merged there, and its walk opened — or nothing for a walk to move
2026-10-20 13:55 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-20 13: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@970622505b30` — **delivered** since 2026-10-20T13:58:46Z
**Delivery plan** — builds build-agent, mesh-controller → ace, g14, novox, shanks; no bus step
- tier 0: mesh-controller
- tier 1: build-agent
- ace: receives build-agent
- g14: receives build-agent
- novox: receives mesh-controller, build-agent
- shanks: receives build-agent
- build-agent keeps data (ADR 0233): what it holds is backed up before it moves
- grants step: if this changes what the bus's user list says (a new tool, subject or user), novox is sent that list alone, every build there kept, before build-agent is judged on its first machine
**Machines**
- mesh-controller on every machine running it: sent
- build-agent on every machine running it: sent
**Transitions**
- 2026-10-20 13:44 (new) → proposed (announced): novox/mesh-controller#406's head announced
- 2026-10-20 13:54 proposed → checked (checked): a verdict names this commit and the trunk's head as its trunk commit
- 2026-10-20 13:54 checked → ready (accepted): the gate passed or warned, and the repository's own check did not fail
- 2026-10-20 13:55 ready → published (merged): on the trunk its modules follow: merged there, and its walk opened — or nothing for a walk to move
- 2026-10-20 13:55 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-20 13: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`.
Merge check at b76cbf70
Judged: head b76cbf708ad3 merged into trunk b718d24f84b9; read beside it: mesh-catalog db32f8ac5632, mesh-controller-main b718d24f84b9, mesh-host cdcba9ca7375, 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)
mesh/repo-check: FAIL — its merge-check.sh failed: --- FAIL: TestTheCataloguesDerivedSubjectsMeet (0.01s); and TestTheCataloguesDerivedSubjectsMeet
Delivery plan — builds build-agent, mesh-controller → ace, g14, novox, shanks; no bus step
tier 0: mesh-controller
tier 1: build-agent
ace: receives build-agent
g14: receives build-agent
novox: receives mesh-controller, build-agent
shanks: receives build-agent
build-agent keeps data (ADR 0233): what it holds is backed up before it moves
grants step: if this changes what the bus's user list says (a new tool, subject or user), novox is sent that list alone, every build there kept, before build-agent is judged on its first machine
read by no module's build: cmd/mesh-controller/ask_bus_look_integration_test.go, cmd/mesh-controller/ask_bus_moment_test.go
Run by the build seat on shanks as build-1792500484240390723 (builds --log build-1792500484240390723).
ok github.com/novox/mesh-controller/internal/store 4.304s
testbus_test.go:22: judged against /var/lib/build-agent/workspace/check/mesh-catalog as cloned beside this check
PASS
ok github.com/novox/mesh-controller/internal/testbus 1.370s
PASS
ok github.com/novox/mesh-controller/internal/token 1.046s
FAIL
ok github.com/novox/mesh-controller/cmd/mesh-controller 380s (shard 1 of 8: 155 tests)
ok github.com/novox/mesh-controller/cmd/mesh-controller 205s (shard 2 of 8: 155 tests)
ok github.com/novox/mesh-controller/cmd/mesh-controller 260s (shard 3 of 8: 155 tests)
ok github.com/novox/mesh-controller/cmd/mesh-controller 168s (shard 4 of 8: 155 tests)
ok github.com/novox/mesh-controller/cmd/mesh-controller 127s (shard 5 of 8: 155 tests)
ok github.com/novox/mesh-controller/cmd/mesh-controller 59s (shard 6 of 8: 155 tests)
ok github.com/novox/mesh-controller/cmd/mesh-controller 40s (shard 7 of 8: 155 tests)
ok github.com/novox/mesh-controller/cmd/mesh-controller 57s (shard 8 of 8: 155 tests)
ok github.com/novox/mesh-controller/internal/inventory 17s (shard 1 of 4: 92 tests)
ok github.com/novox/mesh-controller/internal/inventory 18s (shard 2 of 4: 92 tests)
ok github.com/novox/mesh-controller/internal/inventory 14s (shard 3 of 4: 91 tests)
ok github.com/novox/mesh-controller/internal/inventory 16s (shard 4 of 4: 91 tests)
ok github.com/novox/mesh-controller/internal/builder 16s (shard 1 of 4: 57 tests)
ok github.com/novox/mesh-controller/internal/builder 29s (shard 2 of 4: 56 tests)
ok github.com/novox/mesh-controller/internal/builder 18s (shard 3 of 4: 56 tests)
ok github.com/novox/mesh-controller/internal/builder 21s (shard 4 of 4: 56 tests)
ok github.com/novox/mesh-controller/internal/link 26s (shard 1 of 4: 53 tests)
ok github.com/novox/mesh-controller/internal/link 19s (shard 2 of 4: 53 tests)
ok github.com/novox/mesh-controller/internal/link 20s (shard 3 of 4: 53 tests)
ok github.com/novox/mesh-controller/internal/link 12s (shard 4 of 4: 52 tests)
integration level (the whole suite, tag integration): 2603 tests (3 skipped outside the shards), 414 s
nested module modules/build-agent:
ok build-agent 1.016s
nested module modules/route-proxy:
ok route-proxy/cmd/route-provider 1.015s
nested modules: 3 s
store tests, each run against the store:
./cmd/mesh-controller --- PASS: TestAStopWithoutAMergeWalksTheOthersAgain (0.34s)
./cmd/mesh-controller --- PASS: TestAStopWithoutAMergeEndsTheMergesThatContainIt (0.31s)
./cmd/mesh-controller --- PASS: TestAStopWalksTheOthersAgainInTheOpenBatch (0.32s)
./cmd/mesh-controller --- PASS: TestAStopNamesWhatStaysOnTheMachinesAndWhatStillCarriesIt (0.27s)
./cmd/mesh-controller --- PASS: TestAStopWithoutAMergeLeavesItOutOfABatch (0.27s)
./cmd/mesh-controller --- PASS: TestSavingPlansAndMovingMergesIsOneAct (0.20s)
./cmd/mesh-controller --- PASS: TestAPlanFollowedFromTheStoreAnswersWhenItMoves (2.04s)
./cmd/mesh-controller --- PASS: TestIssue969TheGateRaisesEachMachineAsItsEngineStatedItself (0.86s)
./cmd/mesh-controller --- PASS: TestNodeShowAndStatusReadTheLastSendFromTheStore (0.25s)
./cmd/mesh-controller --- PASS: TestTheConditionsVerbReadsTheLooksTheBucketNoLongerHolds (0.16s)
./cmd/mesh-controller --- PASS: TestAWalkLetGoAndStoppedByVerbsIsSaidStartedAndEnded (0.31s)
./cmd/mesh-controller --- PASS: TestAWalkStoppedOrClosedByAPersonIsSaidEndedStopped (0.29s)
./cmd/mesh-controller --- PASS: TestAWalkRetriedByAPersonIsSaidStartedAgain (0.23s)
./cmd/mesh-controller --- PASS: TestABacklogReleasedByAPersonIsSaidStarted (0.24s)
./cmd/mesh-controller --- PASS: TestAWalkEndedByCancelOrClearIsSaidEnded (0.28s)
./cmd/mesh-controller --- PASS: TestAWalkRestartedByARebuildIsSaidStarted (0.22s)
./cmd/mesh-controller --- PASS: TestAWalkStoppedByHandAndRetriedEndsFailedWhenItFailsAgain (0.25s)
./cmd/mesh-controller --- PASS: TestReplay237 (0.34s)
./cmd/mesh-controller --- PASS: TestAnUnassignThatLeavesItsNodeUnresolvedSaysSoOnceInItsAnswer (0.28s)
./cmd/mesh-controller --- PASS: TestAnUnassignThatLeavesItsNodeResolvedSaysNothingOfIt (0.27s)
./cmd/mesh-controller --- PASS: TestAnAssignThatLeavesItsNodeUnresolvedSaysOnlyThePlansRefusal (0.29s)
./cmd/mesh-controller --- PASS: TestADirectoryOwnersKeyIsRefusedThroughAVerb (0.29s)
./cmd/mesh-controller --- PASS: TestTheSendMakesNoValueForAnOutsideSecretNobodyGave (0.34s)
./cmd/mesh-controller --- PASS: TestAQuestionComposesWithoutAnOutsideSecretNobodyGave (0.30s)
./cmd/mesh-controller --- PASS: TestReplay201 (0.25s)
./cmd/mesh-controller --- PASS: TestARollbackWhoseSendWasRefusedIsCompletedByTheNextSend (0.21s)
./cmd/mesh-controller --- PASS: TestAGateJudgesTheOtherMovesBesideAKeptCore (0.21s)
./cmd/mesh-controller --- PASS: TestReplay401 (0.34s)
./cmd/mesh-controller --- PASS: TestReplay201ThePlansSend (0.24s)
./cmd/mesh-controller --- PASS: TestPlanAndNodeListAnOptionalRequirementLeftUnbound (0.34s)
./cmd/mesh-controller --- PASS: TestReplay340 (0.33s)
./cmd/mesh-controller --- PASS: TestOnlyATrustedFilesNamedKeyIsRefusedThroughAVerb (0.25s)
./cmd/mesh-controller --- PASS: TestReplay349 (0.29s)
./cmd/mesh-controller --- PASS: TestReplay348AFaultFromBeforeTheSendFailsNoGate (0.20s)
./cmd/mesh-controller --- PASS: TestReplay239AModuleNameIsNotTakenOverByAnotherRepository (0.20s)
./cmd/mesh-controller --- PASS: TestAWalkThatMovedNothingSaysWhichModulesMatchedWhatRuns (0.24s)
./cmd/mesh-controller --- PASS: TestAWalkWhoseEveryBuildCameOutTheSameIsDone (0.22s)
./cmd/mesh-controller --- PASS: TestReplay614ANewSDKPlansTheToolchainAndThenItsBundles (0.13s)
./cmd/mesh-controller --- PASS: TestOneAcceptForAProviderIsPlacedForEveryConsumer (0.55s)
./cmd/mesh-controller --- PASS: TestReplay164 (0.35s)
./cmd/mesh-controller --- PASS: TestAnApprovedLayerOpensTheWalkThatSendsIt (0.26s)
./cmd/mesh-controller --- PASS: TestASettingsWalkSendsOneMachineAtATimeEachJudged (0.22s)
./cmd/mesh-controller --- PASS: TestAFailedSettingsWalkStopsAndHoldsNothingBack (0.21s)
./cmd/mesh-controller --- PASS: TestASettingsWalkSendsTheLayerAloneEveryBuildKept (0.21s)
./cmd/mesh-controller --- PASS: TestASettingsWalkStopsBeforeADataMoveAndPassesOverAMachineAway (0.63s)
./cmd/mesh-controller --- PASS: TestACrossingSendSupersedesASettingsGate (0.19s)
./cmd/mesh-controller --- PASS: TestASettingsWalkFailsOnARefusalThatCannotClear (0.19s)
./cmd/mesh-controller --- PASS: TestAProviderElsewhereServesItsOwnComposedName (0.36s)
./cmd/mesh-controller --- PASS: TestAReusedCheckBuildIsRegisteredByItsDigestAndGatedAsABuiltOne (0.53s)
./cmd/mesh-controller --- PASS: TestTheMergeGateJudgesEachManifestAgainstTheListOfTheTree (5.52s)
./cmd/mesh-controller --- PASS: TestRegistrationPublishesTheNewestTrunkListAndJudgesEveryModuleAgainstIt (0.29s)
./cmd/mesh-controller --- PASS: TestADeclarationIsTheSameAfterPlacementMoves (0.51s)
./cmd/mesh-controller --- PASS: TestAReleaseSendsTheRestAtOnceAfterTheFirstPasses (0.26s)
./cmd/mesh-controller --- PASS: TestARestMachineThatFailsIsPutBackAloneAndTheOthersAreJudgedOn (0.25s)
./cmd/mesh-controller --- PASS: TestAWalkTakesOverTheReadingsOfAGateJudgingTheSameBuildThere (0.21s)
./cmd/mesh-controller --- PASS: TestAFirstSendMadeAndNotKeptIsNotSentAgain (0.31s)
./cmd/mesh-controller --- PASS: TestAReleaseSendKeptAndMadeIsNotMadeAgain (0.20s)
./cmd/mesh-controller --- PASS: TestAFirstMachineThatFailsStillStopsTheWalk (0.20s)
./cmd/mesh-controller --- PASS: TestTheControlNodeIsSentLastInAStep (0.25s)
./cmd/mesh-controller --- PASS: TestARestMachineSilentPastItsBoundIsLeftAndSaid (0.22s)
./cmd/mesh-controller --- PASS: TestANoMoveTierWaitsForNoNewReport (0.50s)
./cmd/mesh-controller --- PASS: TestOneProviderDownAndThreeConsumersFailingAreOneCondition (0.20s)
./cmd/mesh-controller --- PASS: TestAConsumerFailingBesideAHealthyProviderIsItsOwn (0.17s)
./cmd/mesh-controller --- PASS: TestTheProvisionerClientsAccountIsIssuedForItsServiceAndNeverInvented (0.28s)
./cmd/mesh-controller --- PASS: TestAcceptOfAnOwnSecretTakesThePathOfItsModulesForm (0.31s)
./cmd/mesh-controller --- PASS: TestAcceptForAProviderTakesThePathOfTheProvidersModule (0.34s)
./cmd/mesh-controller --- PASS: TestAcceptForAMovedTrustedModuleAnnouncesBeforeTheVaultIsAsked (0.37s)
./cmd/mesh-controller --- PASS: TestAcceptForAMovedModuleRecordsAHandActAndNeverTheValue (0.30s)
./cmd/mesh-controller --- PASS: TestAcceptOfAnOutsideOfferTakesThePathOfTheProvidersModule (0.35s)
./cmd/mesh-controller --- PASS: TestAnAskAtTheDeskTakesThePathOfItsModulesForm (0.32s)
./cmd/mesh-controller --- PASS: TestAnIssuedValueTakesThePathOfItsProvidersModule (0.41s)
./cmd/mesh-controller --- PASS: TestARotationTakesThePathOfItsModulesForm (0.31s)
./cmd/mesh-controller --- PASS: TestADeclarationIsTheSameWhileTheWordsAreStillInTheLayers (2.52s)
./cmd/mesh-controller --- PASS: TestADeclarationIsTheSameAfterTheMoveOfPlacement (3.87s)
./cmd/mesh-controller --- PASS: TestTheSendSealsNoSecretOfAModuleHandedThere (0.31s)
./cmd/mesh-controller --- PASS: TestAModulesSecretsAreTheVaultsOnceItIsMarkedMoved (0.20s)
./cmd/mesh-controller --- PASS: TestEveryMachineIsToldTheSameAfterTheMoveOfConfig (65.93s)
./cmd/mesh-controller --- PASS: TestTheMoveOfConfigRefusesWhatWouldChangeAMachine (28.01s)
./cmd/mesh-controller --- PASS: TestTheSettingsVerbForwardsToConfigOnceTheValuesMoved (37.77s)
./cmd/mesh-controller --- PASS: TestTheSendCarriesTheVaultsBoxForACoreCredentialAndKeepsIt (0.37s)
./cmd/mesh-controller --- PASS: TestASilentVaultHoldsTheKeptBoxAndSaysSo (0.42s)
./cmd/mesh-controller --- PASS: TestACoreModuleFirstPlacedWhileTheVaultIsSilentIsSealedByTheController (0.34s)
./cmd/mesh-controller --- PASS: TestAnEngineBelowTheContractIsSentTheControllersSealAsBefore (0.31s)
./cmd/mesh-controller --- PASS: TestModuleIssueHandsACoveredAccountToTheVaultAndOnlyThat (0.61s)
./cmd/mesh-controller --- PASS: TestModuleIssueFailsWhenTheVaultDoesNotTakeACoveredAccount (0.29s)
./cmd/mesh-controller --- PASS: TestModuleIssueBeforeTheVaultIsInstalledKeepsTheValueAndHandsNothing (0.28s)
./cmd/mesh-controller --- PASS: TestARecordedModulesBundleOnlyMoveRollsOutInItsWalk (0.37s)
./cmd/mesh-controller --- PASS: TestARecordedModulesMoveThatRecreatesAContainerWaits (0.67s)
./cmd/mesh-controller --- PASS: TestARecordedModulesMoveThatTouchesDataOrAProviderWaits (0.72s)
./cmd/mesh-controller --- PASS: TestAPersonsRecordAndTheBusHoldEveryMove (0.53s)
./cmd/mesh-controller --- PASS: TestARecordedMoveThatCannotBeJudgedWaits (0.44s)
./cmd/mesh-controller --- PASS: TestReplay867 (4.74s)
./cmd/mesh-controller --- PASS: TestReplay867Recheck (5.40s)
./cmd/mesh-controller --- PASS: TestTheRecheckVerbAsksMeshDeliveryOnABusOfItsOwn (0.46s)
./cmd/mesh-controller --- PASS: TestAssigningTheClientIssuesItsAccount (0.22s)
./cmd/mesh-controller --- PASS: TestAnUnrelatedBatchWalksBesideAnOpenWalk (0.22s)
./cmd/mesh-controller --- PASS: TestARelatedBatchWaitsBehindTheOpenWalk (0.26s)
./cmd/mesh-controller --- PASS: TestAnOwnPathBatchNeverWalksBeside (0.24s)
./cmd/mesh-controller --- PASS: TestMergesHeardWhileAnotherHolderHasThePlansAreRecordedAndCarried (7.41s)
./cmd/mesh-controller --- PASS: TestABatchWindowClosesByTheExpiryOfItsKey (1.30s)
./cmd/mesh-controller --- PASS: TestEveryMoveAMergeAndTheCutMakeOfAPlanIsSaid (0.23s)
./cmd/mesh-controller --- PASS: TestARolloutAdvancesOnEventsAndAReplacedControllerResumesIt (3.94s)
./cmd/mesh-controller --- PASS: TestAWalkLetGoByTheDeliverVerbIsAskedWithNoOtherEvent (0.93s)
./cmd/mesh-controller --- PASS: TestTwoMergesWithinAMinuteLeaveEachOpenPullRequestOneQueuedCheck (1.23s)
./cmd/mesh-controller --- PASS: TestADeliveryGroupMovingAModuleMachinesRunPassesTheGate (6.00s)
./cmd/mesh-controller --- PASS: TestAModuleMovesOnTheOperatorsApproveOfTheMergeThatMovedIt (2.00s)
./cmd/mesh-controller --- PASS: TestAModuleBuiltFromANewRepositoryIsRegisteredOnlyOnTheOperatorsApproveOnTheBus (0.76s)
./cmd/mesh-controller --- PASS: TestAMergeWhosePlanCannotBeSavedIsHeldAndRecordedWhenHandedOverAgain (0.19s)
./cmd/mesh-controller --- PASS: TestOneReadOfAnAssignmentNamesItsCommitBuildAndRolloutAndOneReadOfTheRolloutListsItsAssignments (0.32s)
./cmd/mesh-controller --- PASS: TestASendOfWhatAMachineRunsAlreadyChangesNoLinkOfItsAssignment (0.22s)
./cmd/mesh-controller --- PASS: TestAnAssignmentWaitingForItsBuildIsOneKeyOfTheAssignmentsBucket (0.28s)
./cmd/mesh-controller --- PASS: TestNoTableOfTheControllersStoreHoldsBuildsRolloutsOrAssignments (0.36s)
./cmd/mesh-controller --- PASS: TestAComposedDeclarationCarriesModulesAndBuildsOnlyForANodeThatReadsThem (0.26s)
./cmd/mesh-controller --- PASS: TestAPlanPassesATierWhoseMachineNeverReportsAfterTheBoundAndSendsTheNextToTheOthers (3.42s)
./cmd/mesh-controller --- PASS: TestAMergeOnTheApproveIntoANewRepositoryAsksTheFirstBuildAndItsOutcomeRegistersTheModule (3.15s)
./cmd/mesh-controller --- PASS: TestTheApprovedFirstBuildPassesTheGuardOfAVerbAndIsQueued (0.62s)
./cmd/mesh-controller --- PASS: TestAPlanGoesOnWithoutAMachineAwayWhenItsTierIsSent (0.69s)
./internal/inventory --- PASS: TestTheLastSendSaysWhatTheMachineAnswered (0.10s)
./internal/inventory --- PASS: TestAReportIsTheLastSendsAnswerOnlyWhenItIsAboutThatSend (0.10s)
./internal/inventory --- PASS: TestAnIssuedValueIsSealedToEveryHolderOnceAndNotAgain (0.16s)
./internal/inventory --- PASS: TestAnIssuedValueIsSealedAgainAfterAKeyChangeOrAnAcceptance (0.15s)
./internal/inventory --- PASS: TestAConditionsLooksAreKeptBesideTheBucket (0.11s)
./internal/inventory --- PASS: TestAPlanIdHoldingAQuoteIsReadAsAPlainId (0.07s)
./internal/inventory --- PASS: TestAWalksStartIsKeptAndARefusedSaveLeavesItUnsaid (0.07s)
./internal/inventory --- PASS: TestAWalksRestIsReadFromEachMachinesOwnSend (0.08s)
./internal/inventory --- PASS: TestAStoredBuildWithASilentMergeableFileIsStillReadAndComposed (0.08s)
./internal/inventory --- PASS: TestACredentialIssuedOutsideIsNeverMade (0.15s)
./internal/inventory --- PASS: TestOneAcceptForAProviderIsSealedToEveryConsumer (0.16s)
./internal/inventory --- PASS: TestASharedOwnSecretIssuedOutsideIsNeverMade (0.14s)
./internal/inventory --- PASS: TestAModuleInTheConfigFormIsMirroredWithItsWholeDeclaration (0.10s)
./internal/inventory --- PASS: TestAReportOfABusyContainerIsKeptAndReadBack (0.08s)
./internal/inventory --- PASS: TestANewerBuildsListReplacesTheKeptOneAndAnOlderOneHeardLaterDoesNot (0.08s)
./internal/inventory --- PASS: TestPlacementMovesOutOfTheSettingsLayers (0.54s)
./internal/inventory --- PASS: TestASettingRoutesPlacementBesideTheLayer (0.09s)
./internal/inventory --- PASS: TestTheProvisionerClientsMachineHasAnAccountOfItsOwn (0.11s)
./internal/inventory --- PASS: TestTheFourWordsAreKeptBesideTheLayer (0.10s)
./internal/inventory --- PASS: TestALayerStillHoldingTheWordsReadsThemAsPlacement (0.08s)
./internal/inventory --- PASS: TestTheMoveOfPlacementMovesWhatTheLayersStillHold (0.09s)
./internal/inventory --- PASS: TestTheMoveReadsEveryRowSealedToAMachineAsItIs (0.11s)
./internal/inventory --- PASS: TestASendKeepsThePlansItHandedAndTheMirrorCarriesThem (0.08s)
./internal/inventory --- PASS: TestTheLayersAreReadUntilTheMoveOfConfigHasRun (0.14s)
./internal/inventory --- PASS: TestAModuleReadsMeshConfigOnlyWhereItsValuesAre (0.13s)
./internal/inventory --- PASS: TestTheEndOfTheMoveRefusesALayerChangedSinceItWasRead (0.16s)
./internal/inventory --- PASS: TestACoreCredentialsVaultBoxIsKeptPerMachineAndReplaced (0.23s)
./internal/inventory --- PASS: TestWhatRunsIsTheRegisteredBuildNotANewerOnePutBack (0.10s)
./internal/inventory --- PASS: TestBuildsOnTheBusAreReadBackByEveryReader (0.08s)
./internal/inventory --- PASS: TestARequestIsTheBuildInStateAskedAndItsOutcomeTakesItsPlace (0.08s)
./internal/inventory --- PASS: TestAnAssignmentIsAKeyOfTheBucketAndAnUnassignmentEndsIt (0.14s)
./internal/inventory --- PASS: TestThePlansAreKeptInTheAssignmentsValuesAndNothingElseOfThemMoves (0.16s)
./internal/inventory --- PASS: TestAPendingAssignmentIsAKeyOfTheAssignmentsBucket (0.07s)
./internal/inventory --- PASS: TestARecordedPendingIsSkippedByAssignedAndTheJoins (0.09s)
./internal/inventory --- PASS: TestTwoClaimsOfOnePendingMakeOneAndTheOtherSeesFalse (0.09s)
./internal/inventory --- PASS: TestAssignOverAPendingKeepsItsRecordAsApplied (0.08s)
./internal/inventory --- PASS: TestAPendingIsMarkedOnceAndGoesWithItsMachine (0.08s)
./internal/inventory --- PASS: TestAReplacedWaitNeverLeavesTheOperatorWithoutItsCondition (0.07s)
./internal/inventory --- PASS: TestSentBuildsAnswersFromTheAssignmentsKeysOfTheNode (0.10s)
./internal/inventory --- PASS: TestASendReplacesTheWholeMapOfTheNodeAndAHandSendMakesItUnknown (0.08s)
./internal/inventory --- PASS: TestAFailedWriteOfTheLinksFailsTheRecordOfTheSend (0.10s)
./internal/inventory --- PASS: TestMigration0105RefusesAStoreWhoseRowsWereNotMovedAndDropsTheTablesOfAMovedOne (0.42s)
./internal/inventory --- PASS: TestMigration0105PassesAStoreThatNeverHeldARow (0.11s)
./internal/inventory --- PASS: TestTheColumnOfASentMachineIsCopiedOntoItsKeysAndEmptied (0.08s)
./internal/inventory --- PASS: TestASendEmptiesTheColumnSoALaterCopyLeavesAClearedKeyBare (0.10s)
./internal/inventory --- PASS: TestWhetherAMachineReadsModulesIsItsLatestWord (0.08s)
./internal/recordmirror --- PASS: TestNatsAnAssignmentAndARegistrationEachChangeOneKeyAndRaiseOneEvent (2.34s)
./internal/recordmirror --- PASS: TestNatsTheListOfPredefinedKeysKeptChangesTheMirrorsOneKey (1.47s)
the suite failed: each package or shard that failed is said above with its output
--- what failed, picked from the whole of its output (the whole is in the build's log)
--- FAIL: TestTheCataloguesDerivedSubjectsMeet (0.01s)
genesis_template_test.go:29: judged against /var/lib/build-agent/workspace/check/mesh-host as cloned beside this check
genesis_template_test.go:38: the installer's user list does not let the controller publish $JS.ACK.EVENTS.controller-merges.>, but that falls back rather than refuses: carried only at genesis: the controller composes its own permissions and pushes them to the bus at its first push, which is when it acknowledges a merge (ADR 0407 decision 3, issue 973)
genesis_template_test.go:38: the installer's user list does not let the controller publish $KV.mesh-controller_builds.>, but that falls back rather than refuses: carried only at genesis: the controller composes its own permissions and pushes them to the bus at its first push, and writes the chain only after that, holding the lease (ADR 0408 §2 and §8, issue 1089)
genesis_template_test.go:38: the installer's user list does not let the controller publish $KV.mesh-controller_checks-running.>, but that falls back rather than refuses: refused: the controller asserts this bucket through the API and writes none of its keys — the build seat's holders do (ADR 0406 §3, issue 974)
genesis_template_test.go:38: the installer's user list does not let the controller publish $KV.mesh-controller_delivery-merges.>, but that falls back rather than refuses: refused: the controller then keeps no merge mesh-delivery announced, so the build of a moved module is refused as it is without the operator's Approve — failing closed (ADR 0420 §7, issue 1025)
genesis_template_test.go:38: the installer's user list does not let the controller publish $KV.mesh-controller_merge-window.>, but that falls back rather than refuses: refused: the controller closes a batch's window by a timer of its own for that batch, as the window setting says (ADR 0407 decision 1, issue 973)
genesis_template_test.go:38: the installer's user list does not let the controller publish $KV.mesh-controller_rollout-silent.>, but that falls back rather than refuses: refused: the controller looks at the plans when a wait for a machine's report is up, by a timer of its own for that wait (ADR 0406 §5, issue 974)
genesis_template_test.go:38: the installer's user list does not let the controller publish $KV.mesh-controller_rollouts.>, but that falls back rather than refuses: carried only at genesis: the controller composes its own permissions and pushes them to the bus at its first push, and writes the chain only after that, holding the lease (ADR 0408 §2 and §8, issue 1089)
genesis_template_test.go:38: the installer's user list does not let the controller publish mesh.seat.mesh-controller.event.sent, but that falls back rather than refuses: refused: the controller says a tier sent to a machine only for outsiders, and a send that could not be said is printed and goes on (ADR 0406 §5, issue 974)
genesis_template_test.go:38: the installer's user list does not let the controller publish mesh.seat.node-build-agent.check.>, but that falls back rather than refuses: carried only at genesis: the controller composes its own permissions and pushes them to the bus at its first push, and a check asked before that is asked again by the next announcement of its head (ADR 0406 §3, issue 974)
genesis_template_test.go:102: the installer's user list does not let the controller publish mesh.seat.operator-channel.tool.tell, but that falls back rather than refuses: refused: the controller raises the secret-given condition as before (ADR 0380 §9)
FAIL github.com/novox/mesh-controller/internal/broker 0.406s
--- FAIL: TestTheCataloguesDerivedSubjectsMeet (0.07s)
genesis_template_test.go:29: judged against /var/lib/build-agent/workspace/check/mesh-host as cloned beside this check
genesis_template_test.go:38: the installer's user list does not let the controller publish $JS.ACK.EVENTS.controller-merges.>, but that falls back rather than refuses: carried only at genesis: the controller composes its own permissions and pushes them to the bus at its first push, which is when it acknowledges a merge (ADR 0407 decision 3, issue 973)
genesis_template_test.go:38: the installer's user list does not let the controller publish $KV.mesh-controller_builds.>, but that falls back rather than refuses: carried only at genesis: the controller composes its own permissions and pushes them to the bus at its first push, and writes the chain only after that, holding the lease (ADR 0408 §2 and §8, issue 1089)
genesis_template_test.go:38: the installer's user list does not let the controller publish $KV.mesh-controller_checks-running.>, but that falls back rather than refuses: refused: the controller asserts this bucket through the API and writes none of its keys — the build seat's holders do (ADR 0406 §3, issue 974)
genesis_template_test.go:38: the installer's user list does not let the controller publish $KV.mesh-controller_delivery-merges.>, but that falls back rather than refuses: refused: the controller then keeps no merge mesh-delivery announced, so the build of a moved module is refused as it is without the operator's Approve — failing closed (ADR 0420 §7, issue 1025)
genesis_template_test.go:38: the installer's user list does not let the controller publish $KV.mesh-controller_merge-window.>, but that falls back rather than refuses: refused: the controller closes a batch's window by a timer of its own for that batch, as the window setting says (ADR 0407 decision 1, issue 973)
genesis_template_test.go:38: the installer's user list does not let the controller publish $KV.mesh-controller_rollout-silent.>, but that falls back rather than refuses: refused: the controller looks at the plans when a wait for a machine's report is up, by a timer of its own for that wait (ADR 0406 §5, issue 974)
genesis_template_test.go:38: the installer's user list does not let the controller publish $KV.mesh-controller_rollouts.>, but that falls back rather than refuses: carried only at genesis: the controller composes its own permissions and pushes them to the bus at its first push, and writes the chain only after that, holding the lease (ADR 0408 §2 and §8, issue 1089)
genesis_template_test.go:38: the installer's user list does not let the controller publish mesh.seat.mesh-controller.event.sent, but that falls back rather than refuses: refused: the controller says a tier sent to a machine only for outsiders, and a send that could not be said is printed and goes on (ADR 0406 §5, issue 974)
genesis_template_test.go:38: the installer's user list does not let the controller publish mesh.seat.node-build-agent.check.>, but that falls back rather than refuses: carried only at genesis: the controller composes its own permissions and pushes them to the bus at its first push, and a check asked before that is asked again by the next announcement of its head (ADR 0406 §3, issue 974)
genesis_template_test.go:102: the installer's user list does not let the controller publish mesh.seat.operator-channel.tool.tell, but that falls back rather than refuses: refused: the controller raises the secret-given condition as before (ADR 0380 §9)
snapshot_live_test.go:30: MESH_TEST_DOCKER is not 1: this starts a throwaway nats container
FAIL github.com/novox/mesh-controller/internal/broker 59.635s
**Merge check** at `b76cbf70`
Judged: head `b76cbf708ad3` merged into trunk `b718d24f84b9`; read beside it: mesh-catalog `db32f8ac5632`, mesh-controller-main `b718d24f84b9`, mesh-host `cdcba9ca7375`, 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)
- `mesh/repo-check`: **FAIL** — its merge-check.sh failed: --- FAIL: TestTheCataloguesDerivedSubjectsMeet (0.01s); and TestTheCataloguesDerivedSubjectsMeet
**Delivery plan** — builds build-agent, mesh-controller → ace, g14, novox, shanks; no bus step
- tier 0: mesh-controller
- tier 1: build-agent
- ace: receives build-agent
- g14: receives build-agent
- novox: receives mesh-controller, build-agent
- shanks: receives build-agent
- build-agent keeps data (ADR 0233): what it holds is backed up before it moves
- grants step: if this changes what the bus's user list says (a new tool, subject or user), novox is sent that list alone, every build there kept, before build-agent is judged on its first machine
- read by no module's build: cmd/mesh-controller/ask_bus_look_integration_test.go, cmd/mesh-controller/ask_bus_moment_test.go
Run by the build seat on shanks as `build-1792500484240390723` (`builds --log build-1792500484240390723`).
```
ok github.com/novox/mesh-controller/internal/store 4.304s
testbus_test.go:22: judged against /var/lib/build-agent/workspace/check/mesh-catalog as cloned beside this check
PASS
ok github.com/novox/mesh-controller/internal/testbus 1.370s
PASS
ok github.com/novox/mesh-controller/internal/token 1.046s
FAIL
ok github.com/novox/mesh-controller/cmd/mesh-controller 380s (shard 1 of 8: 155 tests)
ok github.com/novox/mesh-controller/cmd/mesh-controller 205s (shard 2 of 8: 155 tests)
ok github.com/novox/mesh-controller/cmd/mesh-controller 260s (shard 3 of 8: 155 tests)
ok github.com/novox/mesh-controller/cmd/mesh-controller 168s (shard 4 of 8: 155 tests)
ok github.com/novox/mesh-controller/cmd/mesh-controller 127s (shard 5 of 8: 155 tests)
ok github.com/novox/mesh-controller/cmd/mesh-controller 59s (shard 6 of 8: 155 tests)
ok github.com/novox/mesh-controller/cmd/mesh-controller 40s (shard 7 of 8: 155 tests)
ok github.com/novox/mesh-controller/cmd/mesh-controller 57s (shard 8 of 8: 155 tests)
ok github.com/novox/mesh-controller/internal/inventory 17s (shard 1 of 4: 92 tests)
ok github.com/novox/mesh-controller/internal/inventory 18s (shard 2 of 4: 92 tests)
ok github.com/novox/mesh-controller/internal/inventory 14s (shard 3 of 4: 91 tests)
ok github.com/novox/mesh-controller/internal/inventory 16s (shard 4 of 4: 91 tests)
ok github.com/novox/mesh-controller/internal/builder 16s (shard 1 of 4: 57 tests)
ok github.com/novox/mesh-controller/internal/builder 29s (shard 2 of 4: 56 tests)
ok github.com/novox/mesh-controller/internal/builder 18s (shard 3 of 4: 56 tests)
ok github.com/novox/mesh-controller/internal/builder 21s (shard 4 of 4: 56 tests)
ok github.com/novox/mesh-controller/internal/link 26s (shard 1 of 4: 53 tests)
ok github.com/novox/mesh-controller/internal/link 19s (shard 2 of 4: 53 tests)
ok github.com/novox/mesh-controller/internal/link 20s (shard 3 of 4: 53 tests)
ok github.com/novox/mesh-controller/internal/link 12s (shard 4 of 4: 52 tests)
integration level (the whole suite, tag integration): 2603 tests (3 skipped outside the shards), 414 s
nested module modules/build-agent:
ok build-agent 1.016s
nested module modules/route-proxy:
ok route-proxy/cmd/route-provider 1.015s
nested modules: 3 s
store tests, each run against the store:
./cmd/mesh-controller --- PASS: TestAStopWithoutAMergeWalksTheOthersAgain (0.34s)
./cmd/mesh-controller --- PASS: TestAStopWithoutAMergeEndsTheMergesThatContainIt (0.31s)
./cmd/mesh-controller --- PASS: TestAStopWalksTheOthersAgainInTheOpenBatch (0.32s)
./cmd/mesh-controller --- PASS: TestAStopNamesWhatStaysOnTheMachinesAndWhatStillCarriesIt (0.27s)
./cmd/mesh-controller --- PASS: TestAStopWithoutAMergeLeavesItOutOfABatch (0.27s)
./cmd/mesh-controller --- PASS: TestSavingPlansAndMovingMergesIsOneAct (0.20s)
./cmd/mesh-controller --- PASS: TestAPlanFollowedFromTheStoreAnswersWhenItMoves (2.04s)
./cmd/mesh-controller --- PASS: TestIssue969TheGateRaisesEachMachineAsItsEngineStatedItself (0.86s)
./cmd/mesh-controller --- PASS: TestNodeShowAndStatusReadTheLastSendFromTheStore (0.25s)
./cmd/mesh-controller --- PASS: TestTheConditionsVerbReadsTheLooksTheBucketNoLongerHolds (0.16s)
./cmd/mesh-controller --- PASS: TestAWalkLetGoAndStoppedByVerbsIsSaidStartedAndEnded (0.31s)
./cmd/mesh-controller --- PASS: TestAWalkStoppedOrClosedByAPersonIsSaidEndedStopped (0.29s)
./cmd/mesh-controller --- PASS: TestAWalkRetriedByAPersonIsSaidStartedAgain (0.23s)
./cmd/mesh-controller --- PASS: TestABacklogReleasedByAPersonIsSaidStarted (0.24s)
./cmd/mesh-controller --- PASS: TestAWalkEndedByCancelOrClearIsSaidEnded (0.28s)
./cmd/mesh-controller --- PASS: TestAWalkRestartedByARebuildIsSaidStarted (0.22s)
./cmd/mesh-controller --- PASS: TestAWalkStoppedByHandAndRetriedEndsFailedWhenItFailsAgain (0.25s)
./cmd/mesh-controller --- PASS: TestReplay237 (0.34s)
./cmd/mesh-controller --- PASS: TestAnUnassignThatLeavesItsNodeUnresolvedSaysSoOnceInItsAnswer (0.28s)
./cmd/mesh-controller --- PASS: TestAnUnassignThatLeavesItsNodeResolvedSaysNothingOfIt (0.27s)
./cmd/mesh-controller --- PASS: TestAnAssignThatLeavesItsNodeUnresolvedSaysOnlyThePlansRefusal (0.29s)
./cmd/mesh-controller --- PASS: TestADirectoryOwnersKeyIsRefusedThroughAVerb (0.29s)
./cmd/mesh-controller --- PASS: TestTheSendMakesNoValueForAnOutsideSecretNobodyGave (0.34s)
./cmd/mesh-controller --- PASS: TestAQuestionComposesWithoutAnOutsideSecretNobodyGave (0.30s)
./cmd/mesh-controller --- PASS: TestReplay201 (0.25s)
./cmd/mesh-controller --- PASS: TestARollbackWhoseSendWasRefusedIsCompletedByTheNextSend (0.21s)
./cmd/mesh-controller --- PASS: TestAGateJudgesTheOtherMovesBesideAKeptCore (0.21s)
./cmd/mesh-controller --- PASS: TestReplay401 (0.34s)
./cmd/mesh-controller --- PASS: TestReplay201ThePlansSend (0.24s)
./cmd/mesh-controller --- PASS: TestPlanAndNodeListAnOptionalRequirementLeftUnbound (0.34s)
./cmd/mesh-controller --- PASS: TestReplay340 (0.33s)
./cmd/mesh-controller --- PASS: TestOnlyATrustedFilesNamedKeyIsRefusedThroughAVerb (0.25s)
./cmd/mesh-controller --- PASS: TestReplay349 (0.29s)
./cmd/mesh-controller --- PASS: TestReplay348AFaultFromBeforeTheSendFailsNoGate (0.20s)
./cmd/mesh-controller --- PASS: TestReplay239AModuleNameIsNotTakenOverByAnotherRepository (0.20s)
./cmd/mesh-controller --- PASS: TestAWalkThatMovedNothingSaysWhichModulesMatchedWhatRuns (0.24s)
./cmd/mesh-controller --- PASS: TestAWalkWhoseEveryBuildCameOutTheSameIsDone (0.22s)
./cmd/mesh-controller --- PASS: TestReplay614ANewSDKPlansTheToolchainAndThenItsBundles (0.13s)
./cmd/mesh-controller --- PASS: TestOneAcceptForAProviderIsPlacedForEveryConsumer (0.55s)
./cmd/mesh-controller --- PASS: TestReplay164 (0.35s)
./cmd/mesh-controller --- PASS: TestAnApprovedLayerOpensTheWalkThatSendsIt (0.26s)
./cmd/mesh-controller --- PASS: TestASettingsWalkSendsOneMachineAtATimeEachJudged (0.22s)
./cmd/mesh-controller --- PASS: TestAFailedSettingsWalkStopsAndHoldsNothingBack (0.21s)
./cmd/mesh-controller --- PASS: TestASettingsWalkSendsTheLayerAloneEveryBuildKept (0.21s)
./cmd/mesh-controller --- PASS: TestASettingsWalkStopsBeforeADataMoveAndPassesOverAMachineAway (0.63s)
./cmd/mesh-controller --- PASS: TestACrossingSendSupersedesASettingsGate (0.19s)
./cmd/mesh-controller --- PASS: TestASettingsWalkFailsOnARefusalThatCannotClear (0.19s)
./cmd/mesh-controller --- PASS: TestAProviderElsewhereServesItsOwnComposedName (0.36s)
./cmd/mesh-controller --- PASS: TestAReusedCheckBuildIsRegisteredByItsDigestAndGatedAsABuiltOne (0.53s)
./cmd/mesh-controller --- PASS: TestTheMergeGateJudgesEachManifestAgainstTheListOfTheTree (5.52s)
./cmd/mesh-controller --- PASS: TestRegistrationPublishesTheNewestTrunkListAndJudgesEveryModuleAgainstIt (0.29s)
./cmd/mesh-controller --- PASS: TestADeclarationIsTheSameAfterPlacementMoves (0.51s)
./cmd/mesh-controller --- PASS: TestAReleaseSendsTheRestAtOnceAfterTheFirstPasses (0.26s)
./cmd/mesh-controller --- PASS: TestARestMachineThatFailsIsPutBackAloneAndTheOthersAreJudgedOn (0.25s)
./cmd/mesh-controller --- PASS: TestAWalkTakesOverTheReadingsOfAGateJudgingTheSameBuildThere (0.21s)
./cmd/mesh-controller --- PASS: TestAFirstSendMadeAndNotKeptIsNotSentAgain (0.31s)
./cmd/mesh-controller --- PASS: TestAReleaseSendKeptAndMadeIsNotMadeAgain (0.20s)
./cmd/mesh-controller --- PASS: TestAFirstMachineThatFailsStillStopsTheWalk (0.20s)
./cmd/mesh-controller --- PASS: TestTheControlNodeIsSentLastInAStep (0.25s)
./cmd/mesh-controller --- PASS: TestARestMachineSilentPastItsBoundIsLeftAndSaid (0.22s)
./cmd/mesh-controller --- PASS: TestANoMoveTierWaitsForNoNewReport (0.50s)
./cmd/mesh-controller --- PASS: TestOneProviderDownAndThreeConsumersFailingAreOneCondition (0.20s)
./cmd/mesh-controller --- PASS: TestAConsumerFailingBesideAHealthyProviderIsItsOwn (0.17s)
./cmd/mesh-controller --- PASS: TestTheProvisionerClientsAccountIsIssuedForItsServiceAndNeverInvented (0.28s)
./cmd/mesh-controller --- PASS: TestAcceptOfAnOwnSecretTakesThePathOfItsModulesForm (0.31s)
./cmd/mesh-controller --- PASS: TestAcceptForAProviderTakesThePathOfTheProvidersModule (0.34s)
./cmd/mesh-controller --- PASS: TestAcceptForAMovedTrustedModuleAnnouncesBeforeTheVaultIsAsked (0.37s)
./cmd/mesh-controller --- PASS: TestAcceptForAMovedModuleRecordsAHandActAndNeverTheValue (0.30s)
./cmd/mesh-controller --- PASS: TestAcceptOfAnOutsideOfferTakesThePathOfTheProvidersModule (0.35s)
./cmd/mesh-controller --- PASS: TestAnAskAtTheDeskTakesThePathOfItsModulesForm (0.32s)
./cmd/mesh-controller --- PASS: TestAnIssuedValueTakesThePathOfItsProvidersModule (0.41s)
./cmd/mesh-controller --- PASS: TestARotationTakesThePathOfItsModulesForm (0.31s)
./cmd/mesh-controller --- PASS: TestADeclarationIsTheSameWhileTheWordsAreStillInTheLayers (2.52s)
./cmd/mesh-controller --- PASS: TestADeclarationIsTheSameAfterTheMoveOfPlacement (3.87s)
./cmd/mesh-controller --- PASS: TestTheSendSealsNoSecretOfAModuleHandedThere (0.31s)
./cmd/mesh-controller --- PASS: TestAModulesSecretsAreTheVaultsOnceItIsMarkedMoved (0.20s)
./cmd/mesh-controller --- PASS: TestEveryMachineIsToldTheSameAfterTheMoveOfConfig (65.93s)
./cmd/mesh-controller --- PASS: TestTheMoveOfConfigRefusesWhatWouldChangeAMachine (28.01s)
./cmd/mesh-controller --- PASS: TestTheSettingsVerbForwardsToConfigOnceTheValuesMoved (37.77s)
./cmd/mesh-controller --- PASS: TestTheSendCarriesTheVaultsBoxForACoreCredentialAndKeepsIt (0.37s)
./cmd/mesh-controller --- PASS: TestASilentVaultHoldsTheKeptBoxAndSaysSo (0.42s)
./cmd/mesh-controller --- PASS: TestACoreModuleFirstPlacedWhileTheVaultIsSilentIsSealedByTheController (0.34s)
./cmd/mesh-controller --- PASS: TestAnEngineBelowTheContractIsSentTheControllersSealAsBefore (0.31s)
./cmd/mesh-controller --- PASS: TestModuleIssueHandsACoveredAccountToTheVaultAndOnlyThat (0.61s)
./cmd/mesh-controller --- PASS: TestModuleIssueFailsWhenTheVaultDoesNotTakeACoveredAccount (0.29s)
./cmd/mesh-controller --- PASS: TestModuleIssueBeforeTheVaultIsInstalledKeepsTheValueAndHandsNothing (0.28s)
./cmd/mesh-controller --- PASS: TestARecordedModulesBundleOnlyMoveRollsOutInItsWalk (0.37s)
./cmd/mesh-controller --- PASS: TestARecordedModulesMoveThatRecreatesAContainerWaits (0.67s)
./cmd/mesh-controller --- PASS: TestARecordedModulesMoveThatTouchesDataOrAProviderWaits (0.72s)
./cmd/mesh-controller --- PASS: TestAPersonsRecordAndTheBusHoldEveryMove (0.53s)
./cmd/mesh-controller --- PASS: TestARecordedMoveThatCannotBeJudgedWaits (0.44s)
./cmd/mesh-controller --- PASS: TestReplay867 (4.74s)
./cmd/mesh-controller --- PASS: TestReplay867Recheck (5.40s)
./cmd/mesh-controller --- PASS: TestTheRecheckVerbAsksMeshDeliveryOnABusOfItsOwn (0.46s)
./cmd/mesh-controller --- PASS: TestAssigningTheClientIssuesItsAccount (0.22s)
./cmd/mesh-controller --- PASS: TestAnUnrelatedBatchWalksBesideAnOpenWalk (0.22s)
./cmd/mesh-controller --- PASS: TestARelatedBatchWaitsBehindTheOpenWalk (0.26s)
./cmd/mesh-controller --- PASS: TestAnOwnPathBatchNeverWalksBeside (0.24s)
./cmd/mesh-controller --- PASS: TestMergesHeardWhileAnotherHolderHasThePlansAreRecordedAndCarried (7.41s)
./cmd/mesh-controller --- PASS: TestABatchWindowClosesByTheExpiryOfItsKey (1.30s)
./cmd/mesh-controller --- PASS: TestEveryMoveAMergeAndTheCutMakeOfAPlanIsSaid (0.23s)
./cmd/mesh-controller --- PASS: TestARolloutAdvancesOnEventsAndAReplacedControllerResumesIt (3.94s)
./cmd/mesh-controller --- PASS: TestAWalkLetGoByTheDeliverVerbIsAskedWithNoOtherEvent (0.93s)
./cmd/mesh-controller --- PASS: TestTwoMergesWithinAMinuteLeaveEachOpenPullRequestOneQueuedCheck (1.23s)
./cmd/mesh-controller --- PASS: TestADeliveryGroupMovingAModuleMachinesRunPassesTheGate (6.00s)
./cmd/mesh-controller --- PASS: TestAModuleMovesOnTheOperatorsApproveOfTheMergeThatMovedIt (2.00s)
./cmd/mesh-controller --- PASS: TestAModuleBuiltFromANewRepositoryIsRegisteredOnlyOnTheOperatorsApproveOnTheBus (0.76s)
./cmd/mesh-controller --- PASS: TestAMergeWhosePlanCannotBeSavedIsHeldAndRecordedWhenHandedOverAgain (0.19s)
./cmd/mesh-controller --- PASS: TestOneReadOfAnAssignmentNamesItsCommitBuildAndRolloutAndOneReadOfTheRolloutListsItsAssignments (0.32s)
./cmd/mesh-controller --- PASS: TestASendOfWhatAMachineRunsAlreadyChangesNoLinkOfItsAssignment (0.22s)
./cmd/mesh-controller --- PASS: TestAnAssignmentWaitingForItsBuildIsOneKeyOfTheAssignmentsBucket (0.28s)
./cmd/mesh-controller --- PASS: TestNoTableOfTheControllersStoreHoldsBuildsRolloutsOrAssignments (0.36s)
./cmd/mesh-controller --- PASS: TestAComposedDeclarationCarriesModulesAndBuildsOnlyForANodeThatReadsThem (0.26s)
./cmd/mesh-controller --- PASS: TestAPlanPassesATierWhoseMachineNeverReportsAfterTheBoundAndSendsTheNextToTheOthers (3.42s)
./cmd/mesh-controller --- PASS: TestAMergeOnTheApproveIntoANewRepositoryAsksTheFirstBuildAndItsOutcomeRegistersTheModule (3.15s)
./cmd/mesh-controller --- PASS: TestTheApprovedFirstBuildPassesTheGuardOfAVerbAndIsQueued (0.62s)
./cmd/mesh-controller --- PASS: TestAPlanGoesOnWithoutAMachineAwayWhenItsTierIsSent (0.69s)
./internal/inventory --- PASS: TestTheLastSendSaysWhatTheMachineAnswered (0.10s)
./internal/inventory --- PASS: TestAReportIsTheLastSendsAnswerOnlyWhenItIsAboutThatSend (0.10s)
./internal/inventory --- PASS: TestAnIssuedValueIsSealedToEveryHolderOnceAndNotAgain (0.16s)
./internal/inventory --- PASS: TestAnIssuedValueIsSealedAgainAfterAKeyChangeOrAnAcceptance (0.15s)
./internal/inventory --- PASS: TestAConditionsLooksAreKeptBesideTheBucket (0.11s)
./internal/inventory --- PASS: TestAPlanIdHoldingAQuoteIsReadAsAPlainId (0.07s)
./internal/inventory --- PASS: TestAWalksStartIsKeptAndARefusedSaveLeavesItUnsaid (0.07s)
./internal/inventory --- PASS: TestAWalksRestIsReadFromEachMachinesOwnSend (0.08s)
./internal/inventory --- PASS: TestAStoredBuildWithASilentMergeableFileIsStillReadAndComposed (0.08s)
./internal/inventory --- PASS: TestACredentialIssuedOutsideIsNeverMade (0.15s)
./internal/inventory --- PASS: TestOneAcceptForAProviderIsSealedToEveryConsumer (0.16s)
./internal/inventory --- PASS: TestASharedOwnSecretIssuedOutsideIsNeverMade (0.14s)
./internal/inventory --- PASS: TestAModuleInTheConfigFormIsMirroredWithItsWholeDeclaration (0.10s)
./internal/inventory --- PASS: TestAReportOfABusyContainerIsKeptAndReadBack (0.08s)
./internal/inventory --- PASS: TestANewerBuildsListReplacesTheKeptOneAndAnOlderOneHeardLaterDoesNot (0.08s)
./internal/inventory --- PASS: TestPlacementMovesOutOfTheSettingsLayers (0.54s)
./internal/inventory --- PASS: TestASettingRoutesPlacementBesideTheLayer (0.09s)
./internal/inventory --- PASS: TestTheProvisionerClientsMachineHasAnAccountOfItsOwn (0.11s)
./internal/inventory --- PASS: TestTheFourWordsAreKeptBesideTheLayer (0.10s)
./internal/inventory --- PASS: TestALayerStillHoldingTheWordsReadsThemAsPlacement (0.08s)
./internal/inventory --- PASS: TestTheMoveOfPlacementMovesWhatTheLayersStillHold (0.09s)
./internal/inventory --- PASS: TestTheMoveReadsEveryRowSealedToAMachineAsItIs (0.11s)
./internal/inventory --- PASS: TestASendKeepsThePlansItHandedAndTheMirrorCarriesThem (0.08s)
./internal/inventory --- PASS: TestTheLayersAreReadUntilTheMoveOfConfigHasRun (0.14s)
./internal/inventory --- PASS: TestAModuleReadsMeshConfigOnlyWhereItsValuesAre (0.13s)
./internal/inventory --- PASS: TestTheEndOfTheMoveRefusesALayerChangedSinceItWasRead (0.16s)
./internal/inventory --- PASS: TestACoreCredentialsVaultBoxIsKeptPerMachineAndReplaced (0.23s)
./internal/inventory --- PASS: TestWhatRunsIsTheRegisteredBuildNotANewerOnePutBack (0.10s)
./internal/inventory --- PASS: TestBuildsOnTheBusAreReadBackByEveryReader (0.08s)
./internal/inventory --- PASS: TestARequestIsTheBuildInStateAskedAndItsOutcomeTakesItsPlace (0.08s)
./internal/inventory --- PASS: TestAnAssignmentIsAKeyOfTheBucketAndAnUnassignmentEndsIt (0.14s)
./internal/inventory --- PASS: TestThePlansAreKeptInTheAssignmentsValuesAndNothingElseOfThemMoves (0.16s)
./internal/inventory --- PASS: TestAPendingAssignmentIsAKeyOfTheAssignmentsBucket (0.07s)
./internal/inventory --- PASS: TestARecordedPendingIsSkippedByAssignedAndTheJoins (0.09s)
./internal/inventory --- PASS: TestTwoClaimsOfOnePendingMakeOneAndTheOtherSeesFalse (0.09s)
./internal/inventory --- PASS: TestAssignOverAPendingKeepsItsRecordAsApplied (0.08s)
./internal/inventory --- PASS: TestAPendingIsMarkedOnceAndGoesWithItsMachine (0.08s)
./internal/inventory --- PASS: TestAReplacedWaitNeverLeavesTheOperatorWithoutItsCondition (0.07s)
./internal/inventory --- PASS: TestSentBuildsAnswersFromTheAssignmentsKeysOfTheNode (0.10s)
./internal/inventory --- PASS: TestASendReplacesTheWholeMapOfTheNodeAndAHandSendMakesItUnknown (0.08s)
./internal/inventory --- PASS: TestAFailedWriteOfTheLinksFailsTheRecordOfTheSend (0.10s)
./internal/inventory --- PASS: TestMigration0105RefusesAStoreWhoseRowsWereNotMovedAndDropsTheTablesOfAMovedOne (0.42s)
./internal/inventory --- PASS: TestMigration0105PassesAStoreThatNeverHeldARow (0.11s)
./internal/inventory --- PASS: TestTheColumnOfASentMachineIsCopiedOntoItsKeysAndEmptied (0.08s)
./internal/inventory --- PASS: TestASendEmptiesTheColumnSoALaterCopyLeavesAClearedKeyBare (0.10s)
./internal/inventory --- PASS: TestWhetherAMachineReadsModulesIsItsLatestWord (0.08s)
./internal/recordmirror --- PASS: TestNatsAnAssignmentAndARegistrationEachChangeOneKeyAndRaiseOneEvent (2.34s)
./internal/recordmirror --- PASS: TestNatsTheListOfPredefinedKeysKeptChangesTheMirrorsOneKey (1.47s)
the suite failed: each package or shard that failed is said above with its output
--- what failed, picked from the whole of its output (the whole is in the build's log)
--- FAIL: TestTheCataloguesDerivedSubjectsMeet (0.01s)
genesis_template_test.go:29: judged against /var/lib/build-agent/workspace/check/mesh-host as cloned beside this check
genesis_template_test.go:38: the installer's user list does not let the controller publish $JS.ACK.EVENTS.controller-merges.>, but that falls back rather than refuses: carried only at genesis: the controller composes its own permissions and pushes them to the bus at its first push, which is when it acknowledges a merge (ADR 0407 decision 3, issue 973)
genesis_template_test.go:38: the installer's user list does not let the controller publish $KV.mesh-controller_builds.>, but that falls back rather than refuses: carried only at genesis: the controller composes its own permissions and pushes them to the bus at its first push, and writes the chain only after that, holding the lease (ADR 0408 §2 and §8, issue 1089)
genesis_template_test.go:38: the installer's user list does not let the controller publish $KV.mesh-controller_checks-running.>, but that falls back rather than refuses: refused: the controller asserts this bucket through the API and writes none of its keys — the build seat's holders do (ADR 0406 §3, issue 974)
genesis_template_test.go:38: the installer's user list does not let the controller publish $KV.mesh-controller_delivery-merges.>, but that falls back rather than refuses: refused: the controller then keeps no merge mesh-delivery announced, so the build of a moved module is refused as it is without the operator's Approve — failing closed (ADR 0420 §7, issue 1025)
genesis_template_test.go:38: the installer's user list does not let the controller publish $KV.mesh-controller_merge-window.>, but that falls back rather than refuses: refused: the controller closes a batch's window by a timer of its own for that batch, as the window setting says (ADR 0407 decision 1, issue 973)
genesis_template_test.go:38: the installer's user list does not let the controller publish $KV.mesh-controller_rollout-silent.>, but that falls back rather than refuses: refused: the controller looks at the plans when a wait for a machine's report is up, by a timer of its own for that wait (ADR 0406 §5, issue 974)
genesis_template_test.go:38: the installer's user list does not let the controller publish $KV.mesh-controller_rollouts.>, but that falls back rather than refuses: carried only at genesis: the controller composes its own permissions and pushes them to the bus at its first push, and writes the chain only after that, holding the lease (ADR 0408 §2 and §8, issue 1089)
genesis_template_test.go:38: the installer's user list does not let the controller publish mesh.seat.mesh-controller.event.sent, but that falls back rather than refuses: refused: the controller says a tier sent to a machine only for outsiders, and a send that could not be said is printed and goes on (ADR 0406 §5, issue 974)
genesis_template_test.go:38: the installer's user list does not let the controller publish mesh.seat.node-build-agent.check.>, but that falls back rather than refuses: carried only at genesis: the controller composes its own permissions and pushes them to the bus at its first push, and a check asked before that is asked again by the next announcement of its head (ADR 0406 §3, issue 974)
genesis_template_test.go:102: the installer's user list does not let the controller publish mesh.seat.operator-channel.tool.tell, but that falls back rather than refuses: refused: the controller raises the secret-given condition as before (ADR 0380 §9)
FAIL github.com/novox/mesh-controller/internal/broker 0.406s
--- FAIL: TestTheCataloguesDerivedSubjectsMeet (0.07s)
genesis_template_test.go:29: judged against /var/lib/build-agent/workspace/check/mesh-host as cloned beside this check
genesis_template_test.go:38: the installer's user list does not let the controller publish $JS.ACK.EVENTS.controller-merges.>, but that falls back rather than refuses: carried only at genesis: the controller composes its own permissions and pushes them to the bus at its first push, which is when it acknowledges a merge (ADR 0407 decision 3, issue 973)
genesis_template_test.go:38: the installer's user list does not let the controller publish $KV.mesh-controller_builds.>, but that falls back rather than refuses: carried only at genesis: the controller composes its own permissions and pushes them to the bus at its first push, and writes the chain only after that, holding the lease (ADR 0408 §2 and §8, issue 1089)
genesis_template_test.go:38: the installer's user list does not let the controller publish $KV.mesh-controller_checks-running.>, but that falls back rather than refuses: refused: the controller asserts this bucket through the API and writes none of its keys — the build seat's holders do (ADR 0406 §3, issue 974)
genesis_template_test.go:38: the installer's user list does not let the controller publish $KV.mesh-controller_delivery-merges.>, but that falls back rather than refuses: refused: the controller then keeps no merge mesh-delivery announced, so the build of a moved module is refused as it is without the operator's Approve — failing closed (ADR 0420 §7, issue 1025)
genesis_template_test.go:38: the installer's user list does not let the controller publish $KV.mesh-controller_merge-window.>, but that falls back rather than refuses: refused: the controller closes a batch's window by a timer of its own for that batch, as the window setting says (ADR 0407 decision 1, issue 973)
genesis_template_test.go:38: the installer's user list does not let the controller publish $KV.mesh-controller_rollout-silent.>, but that falls back rather than refuses: refused: the controller looks at the plans when a wait for a machine's report is up, by a timer of its own for that wait (ADR 0406 §5, issue 974)
genesis_template_test.go:38: the installer's user list does not let the controller publish $KV.mesh-controller_rollouts.>, but that falls back rather than refuses: carried only at genesis: the controller composes its own permissions and pushes them to the bus at its first push, and writes the chain only after that, holding the lease (ADR 0408 §2 and §8, issue 1089)
genesis_template_test.go:38: the installer's user list does not let the controller publish mesh.seat.mesh-controller.event.sent, but that falls back rather than refuses: refused: the controller says a tier sent to a machine only for outsiders, and a send that could not be said is printed and goes on (ADR 0406 §5, issue 974)
genesis_template_test.go:38: the installer's user list does not let the controller publish mesh.seat.node-build-agent.check.>, but that falls back rather than refuses: carried only at genesis: the controller composes its own permissions and pushes them to the bus at its first push, and a check asked before that is asked again by the next announcement of its head (ADR 0406 §3, issue 974)
genesis_template_test.go:102: the installer's user list does not let the controller publish mesh.seat.operator-channel.tool.tell, but that falls back rather than refuses: refused: the controller raises the secret-given condition as before (ADR 0380 §9)
snapshot_live_test.go:30: MESH_TEST_DOCKER is not 1: this starts a throwaway nats container
FAIL github.com/novox/mesh-controller/internal/broker 59.635s
```
mesh/merge-gate head 970622505b30 merged into trunk b718d24f84b9 — pass: builds build-agent, mesh-controller → ace, g14, novox, shanks; no bus step; every …
Merge check at 97062250
Judged: head 970622505b30 merged into trunk b718d24f84b9; read beside it: mesh-catalog a67f01963f0d, mesh-controller-main b718d24f84b9, mesh-host ce1b97ad973d, 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)
mesh/repo-check: PASS — its merge-check.sh passed
Delivery plan — builds build-agent, mesh-controller → ace, g14, novox, shanks; no bus step
tier 0: mesh-controller
tier 1: build-agent
ace: receives build-agent
g14: receives build-agent
novox: receives mesh-controller, build-agent
shanks: receives build-agent
build-agent keeps data (ADR 0233): what it holds is backed up before it moves
grants step: if this changes what the bus's user list says (a new tool, subject or user), novox is sent that list alone, every build there kept, before build-agent is judged on its first machine
read by no module's build: cmd/mesh-controller/ask_bus_look_integration_test.go, cmd/mesh-controller/ask_bus_moment_test.go, cmd/mesh-controller/retry_words_test.go
Run by the build seat on shanks as build-1792503848891824288 (builds --log build-1792503848891824288).
Blocking a user prevents them from interacting with repositories, such as opening or commenting on pull requests or issues. Learn more about blocking a user.
Issue 1334 (notes 3 and 4 hold the diagnosis). A send gives modules new credentials, and the bus reloads its user list; for a few seconds its JetStream API refuses ('no responders', 'jetstream not enabled'). askModule failed the module and the whole delivery plan on any ask error, so R3e's delivery failed 36 builds at once on 2026-10-20 11:36 UTC.
97062250).Tests (seen failing first where they can run without a store): ask_bus_moment_test.go, retry_words_test.go and the integration tests ask_bus_look_integration_test.go.
Checks before this pull request: try build-1792498234624855268 at
b76cbf70on mainb718d24fpassed (1441 unit tests in 2.61 s, 2603 integration tests).Moved onto main after mesh-controller #405 as one commit; it differs from the reviewed
fd20b40dby the test's catalogue import only.Its first merge check (12:59 UTC) failed only on TestTheCataloguesDerivedSubjectsMeet, a catalogue fault fixed by mesh-catalog #382; the recheck of 13:32 UTC was lost (issue 1340).
Opened along the way: 1402, 1403, 1408.
Reviewed-by: review-1334@shanks at
970622505bIssues: 1334, 1403
Delivery
novox/mesh-controller@970622505b30— delivered since 2026-10-20T13:58:46ZDelivery plan — builds build-agent, mesh-controller → ace, g14, novox, shanks; no bus step
Machines
Transitions
The commit's note under
refs/notes/mesh-plankeeps every transition:git log --notes=mesh-plan.Merge check at
b76cbf70Judged: head
b76cbf708ad3merged into trunkb718d24f84b9; read beside it: mesh-catalogdb32f8ac5632, mesh-controller-mainb718d24f84b9, mesh-hostcdcba9ca7375, mesh-tools7412c5b6c9c5mesh/merge-gate: PASS — every machine composes with the change as it did without (4 of 4 compose) (modules: build-agent, mesh-controller)mesh/repo-check: FAIL — its merge-check.sh failed: --- FAIL: TestTheCataloguesDerivedSubjectsMeet (0.01s); and TestTheCataloguesDerivedSubjectsMeetDelivery plan — builds build-agent, mesh-controller → ace, g14, novox, shanks; no bus step
Run by the build seat on shanks as
build-1792500484240390723(builds --log build-1792500484240390723).Merge check at
97062250Judged: head
970622505b30merged into trunkb718d24f84b9; read beside it: mesh-cataloga67f01963f0d, mesh-controller-mainb718d24f84b9, mesh-hostce1b97ad973d, mesh-tools7412c5b6c9c5mesh/merge-gate: PASS — every machine composes with the change as it did without (4 of 4 compose) (modules: build-agent, mesh-controller)mesh/repo-check: PASS — its merge-check.sh passedDelivery plan — builds build-agent, mesh-controller → ace, g14, novox, shanks; no bus step
Run by the build seat on shanks as
build-1792503848891824288(builds --log build-1792503848891824288).