Refuse a build whose module directory, archive or bundle output leads out of the module through a link, so a repository cannot make build-agent pack files from the build node (issue 1609) #415

Merged
mesh-tools merged 2 commits from fix/1609-archive-symlink into main 2026-10-21 10:16:52 +00:00
Member

Issue 1609 (security; build-agent builds every delivered module until R4e). A repository could commit a link and make build-agent pack and publish files the build account can read outside the module:

  • a symlinked module directory: inside() (internal/builder/builder.go ~947) now resolves the fetched tree and the module directory with filepath.EvalSymlinks and refuses a module directory outside the tree;
  • a symlinked parent of an archive's from: archiveRoot (~1369), called from the archive case of one, refuses a resolved root outside the resolved module directory;
  • a committed .mesh-build link: outsideTheModule (~1392, follows links of the deepest existing part) is checked in compile before MkdirAll, in bundled on final, and before pack(compiled) in the bundle case.

pack still gets the unresolved paths, so no digest of a legitimate tree changes; links that stay inside the module still work.

Tests: internal/builder/archive_symlink_test.go (symlinked parent of from, symlinked module dir, .mesh-build link, a link inside the module still packed), each made at run time with t.TempDir/os.Symlink; the refusal tests fail on main. mesh-controller.try passed at fcca6ba9 (7m21s) and at 0caa8c68 (build-1792575972135120157, 8m55s).

Left open from the review: issue 1616 (reads whose content is not shipped), issue 1627 (a launcher written outside the module through a link or .. in an entrypoint).

Reviewed-by: reviewer-1609@shanks at 0caa8c6844

Issue 1609 (security; build-agent builds every delivered module until R4e). A repository could commit a link and make build-agent pack and publish files the build account can read outside the module: - a symlinked module directory: `inside()` (internal/builder/builder.go ~947) now resolves the fetched tree and the module directory with filepath.EvalSymlinks and refuses a module directory outside the tree; - a symlinked parent of an archive's `from`: `archiveRoot` (~1369), called from the archive case of `one`, refuses a resolved root outside the resolved module directory; - a committed `.mesh-build` link: `outsideTheModule` (~1392, follows links of the deepest existing part) is checked in `compile` before MkdirAll, in `bundled` on `final`, and before `pack(compiled)` in the bundle case. `pack` still gets the unresolved paths, so no digest of a legitimate tree changes; links that stay inside the module still work. Tests: internal/builder/archive_symlink_test.go (symlinked parent of from, symlinked module dir, `.mesh-build` link, a link inside the module still packed), each made at run time with t.TempDir/os.Symlink; the refusal tests fail on main. mesh-controller.try passed at fcca6ba9 (7m21s) and at 0caa8c68 (build-1792575972135120157, 8m55s). Left open from the review: issue 1616 (reads whose content is not shipped), issue 1627 (a launcher written outside the module through a link or `..` in an entrypoint). Reviewed-by: reviewer-1609@shanks at 0caa8c6844d9a3701f18556d516e3e3b040d89b3
mesh-tools added 2 commits 2026-10-21 09:57:26 +00:00
Refuse a bundle whose output directory leads out of the module through a link, so a repository cannot make the build write into or pack files it does not hold (issue 1609)
mesh/merge-gate head 0caa8c6844d9 merged into trunk 0205b8f7080a — pass: builds build-agent, mesh-controller → ace, g14, novox, shanks; no bus step; every …
mesh/repo-check head 0caa8c6844d9 merged into trunk 0205b8f7080a — pass: its merge-check.sh passed
mesh/delivery delivered
0caa8c6844
Author
Member

Delivery novox/mesh-controller@0caa8c6844d9 — delivered since 2026-10-21T10:39:03Z

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-21 09:57 (new) → proposed (announced): novox/mesh-controller#415's head announced
  • 2026-10-21 10:16 proposed → checked (checked): a verdict names this commit and the trunk's head as its trunk commit
  • 2026-10-21 10:16 checked → ready (accepted): the gate passed or warned, and the repository's own check did not fail
  • 2026-10-21 10:36 ready → published (merged): on the trunk its modules follow: merged there, and its walk opened — or nothing for a walk to move
  • 2026-10-21 10:36 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-21 10:39 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@0caa8c6844d9` — **delivered** since 2026-10-21T10:39:03Z **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-21 09:57 (new) → proposed (announced): novox/mesh-controller#415's head announced - 2026-10-21 10:16 proposed → checked (checked): a verdict names this commit and the trunk's head as its trunk commit - 2026-10-21 10:16 checked → ready (accepted): the gate passed or warned, and the repository's own check did not fail - 2026-10-21 10:36 ready → published (merged): on the trunk its modules follow: merged there, and its walk opened — or nothing for a walk to move - 2026-10-21 10:36 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-21 10:39 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`.
Author
Member

Merge check at 0caa8c68
Judged: head 0caa8c6844d9 merged into trunk 0205b8f7080a; read beside it: mesh-catalog 0f2cee1bea4e, mesh-controller-main 0205b8f7080a, mesh-host c5c4caa2a4ab, mesh-tools e0fadc43d9dd

  • 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: internal/builder/archive_symlink_test.go

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

MESH_STORE_EXAMPLE_PORT is "${seat:mesh-store:5432}", a placeholder nothing filled in — ignored; the port in MESH_STORE_EXAMPLE stands. The control plane composing this declaration is older than the manifest naming it: rebuild and push it
PASS
ok  	github.com/novox/mesh-controller/internal/store	3.509s
    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.306s
PASS
ok  	github.com/novox/mesh-controller/internal/token	1.036s
ok  	github.com/novox/mesh-controller/cmd/mesh-controller	144s	(shard 1 of 8: 160 tests)
ok  	github.com/novox/mesh-controller/cmd/mesh-controller	128s	(shard 2 of 8: 160 tests)
ok  	github.com/novox/mesh-controller/cmd/mesh-controller	67s	(shard 3 of 8: 160 tests)
ok  	github.com/novox/mesh-controller/cmd/mesh-controller	42s	(shard 4 of 8: 160 tests)
ok  	github.com/novox/mesh-controller/cmd/mesh-controller	42s	(shard 5 of 8: 160 tests)
ok  	github.com/novox/mesh-controller/cmd/mesh-controller	328s	(shard 6 of 8: 159 tests)
ok  	github.com/novox/mesh-controller/cmd/mesh-controller	178s	(shard 7 of 8: 159 tests)
ok  	github.com/novox/mesh-controller/cmd/mesh-controller	207s	(shard 8 of 8: 159 tests)
ok  	github.com/novox/mesh-controller/internal/inventory	25s	(shard 1 of 4: 92 tests)
ok  	github.com/novox/mesh-controller/internal/inventory	25s	(shard 2 of 4: 92 tests)
ok  	github.com/novox/mesh-controller/internal/inventory	25s	(shard 3 of 4: 92 tests)
ok  	github.com/novox/mesh-controller/internal/inventory	21s	(shard 4 of 4: 91 tests)
ok  	github.com/novox/mesh-controller/internal/builder	18s	(shard 1 of 4: 58 tests)
ok  	github.com/novox/mesh-controller/internal/builder	30s	(shard 2 of 4: 57 tests)
ok  	github.com/novox/mesh-controller/internal/builder	22s	(shard 3 of 4: 57 tests)
ok  	github.com/novox/mesh-controller/internal/builder	29s	(shard 4 of 4: 57 tests)
ok  	github.com/novox/mesh-controller/internal/link	28s	(shard 1 of 4: 53 tests)
ok  	github.com/novox/mesh-controller/internal/link	24s	(shard 2 of 4: 53 tests)
ok  	github.com/novox/mesh-controller/internal/link	23s	(shard 3 of 4: 53 tests)
ok  	github.com/novox/mesh-controller/internal/link	15s	(shard 4 of 4: 52 tests)
integration level (the whole suite, tag integration): 2645 tests (3 skipped outside the shards), 358 s
nested module modules/build-agent:
ok  	build-agent	1.012s
nested module modules/route-proxy:
ok  	route-proxy/cmd/route-provider	1.012s
nested modules: 3 s
store tests, each run against the store:
  ./cmd/mesh-controller --- PASS: TestAStopWithoutAMergeWalksTheOthersAgain (0.25s)
  ./cmd/mesh-controller --- PASS: TestAStopWithoutAMergeEndsTheMergesThatContainIt (0.25s)
  ./cmd/mesh-controller --- PASS: TestAStopWalksTheOthersAgainInTheOpenBatch (0.26s)
  ./cmd/mesh-controller --- PASS: TestAStopNamesWhatStaysOnTheMachinesAndWhatStillCarriesIt (0.22s)
  ./cmd/mesh-controller --- PASS: TestAStopWithoutAMergeLeavesItOutOfABatch (0.21s)
  ./cmd/mesh-controller --- PASS: TestSavingPlansAndMovingMergesIsOneAct (0.16s)
  ./cmd/mesh-controller --- PASS: TestAPlanFollowedFromTheStoreAnswersWhenItMoves (1.96s)
  ./cmd/mesh-controller --- PASS: TestIssue969TheGateRaisesEachMachineAsItsEngineStatedItself (0.77s)
  ./cmd/mesh-controller --- PASS: TestNodeShowAndStatusReadTheLastSendFromTheStore (0.24s)
  ./cmd/mesh-controller --- PASS: TestTheConditionsVerbReadsTheLooksTheBucketNoLongerHolds (0.14s)
  ./cmd/mesh-controller --- PASS: TestAWalkLetGoAndStoppedByVerbsIsSaidStartedAndEnded (0.26s)
  ./cmd/mesh-controller --- PASS: TestAWalkStoppedOrClosedByAPersonIsSaidEndedStopped (0.28s)
  ./cmd/mesh-controller --- PASS: TestAWalkRetriedByAPersonIsSaidStartedAgain (0.20s)
  ./cmd/mesh-controller --- PASS: TestABacklogReleasedByAPersonIsSaidStarted (0.20s)
  ./cmd/mesh-controller --- PASS: TestAWalkEndedByCancelOrClearIsSaidEnded (0.27s)
  ./cmd/mesh-controller --- PASS: TestAWalkRestartedByARebuildIsSaidStarted (0.21s)
  ./cmd/mesh-controller --- PASS: TestAWalkStoppedByHandAndRetriedEndsFailedWhenItFailsAgain (0.22s)
  ./cmd/mesh-controller --- PASS: TestReplay237 (0.24s)
  ./cmd/mesh-controller --- PASS: TestAnUnassignThatLeavesItsNodeUnresolvedSaysSoOnceInItsAnswer (0.27s)
  ./cmd/mesh-controller --- PASS: TestAnUnassignThatLeavesItsNodeResolvedSaysNothingOfIt (0.32s)
  ./cmd/mesh-controller --- PASS: TestAnAssignThatLeavesItsNodeUnresolvedSaysOnlyThePlansRefusal (0.29s)
  ./cmd/mesh-controller --- PASS: TestADirectoryOwnersKeyIsRefusedThroughAVerb (0.26s)
  ./cmd/mesh-controller --- PASS: TestTheSendMakesNoValueForAnOutsideSecretNobodyGave (0.32s)
  ./cmd/mesh-controller --- PASS: TestAQuestionComposesWithoutAnOutsideSecretNobodyGave (0.29s)
  ./cmd/mesh-controller --- PASS: TestReplay201 (0.15s)
  ./cmd/mesh-controller --- PASS: TestARollbackWhoseSendWasRefusedIsCompletedByTheNextSend (0.15s)
  ./cmd/mesh-controller --- PASS: TestAGateJudgesTheOtherMovesBesideAKeptCore (0.18s)
  ./cmd/mesh-controller --- PASS: TestReplay401 (0.31s)
  ./cmd/mesh-controller --- PASS: TestReplay201ThePlansSend (0.22s)
  ./cmd/mesh-controller --- PASS: TestPlanAndNodeListAnOptionalRequirementLeftUnbound (0.31s)
  ./cmd/mesh-controller --- PASS: TestReplay340 (0.29s)
  ./cmd/mesh-controller --- PASS: TestOnlyATrustedFilesNamedKeyIsRefusedThroughAVerb (0.23s)
  ./cmd/mesh-controller --- PASS: TestReplay349 (0.26s)
  ./cmd/mesh-controller --- PASS: TestReplay348AFaultFromBeforeTheSendFailsNoGate (0.18s)
  ./cmd/mesh-controller --- PASS: TestReplay239AModuleNameIsNotTakenOverByAnotherRepository (0.19s)
  ./cmd/mesh-controller --- PASS: TestAWalkThatMovedNothingSaysWhichModulesMatchedWhatRuns (0.21s)
  ./cmd/mesh-controller --- PASS: TestAWalkWhoseEveryBuildCameOutTheSameIsDone (0.16s)
  ./cmd/mesh-controller --- PASS: TestReplay614ANewSDKPlansTheToolchainAndThenItsBundles (0.08s)
  ./cmd/mesh-controller --- PASS: TestOneAcceptForAProviderIsPlacedForEveryConsumer (0.51s)
  ./cmd/mesh-controller --- PASS: TestReplay164 (0.28s)
  ./cmd/mesh-controller --- PASS: TestAnApprovedLayerOpensTheWalkThatSendsIt (0.23s)
  ./cmd/mesh-controller --- PASS: TestASettingsWalkSendsOneMachineAtATimeEachJudged (0.19s)
  ./cmd/mesh-controller --- PASS: TestAFailedSettingsWalkStopsAndHoldsNothingBack (0.17s)
  ./cmd/mesh-controller --- PASS: TestASettingsWalkSendsTheLayerAloneEveryBuildKept (0.18s)
  ./cmd/mesh-controller --- PASS: TestASettingsWalkStopsBeforeADataMoveAndPassesOverAMachineAway (0.51s)
  ./cmd/mesh-controller --- PASS: TestACrossingSendSupersedesASettingsGate (0.16s)
  ./cmd/mesh-controller --- PASS: TestASettingsWalkFailsOnARefusalThatCannotClear (0.16s)
  ./cmd/mesh-controller --- PASS: TestAProviderElsewhereServesItsOwnComposedName (0.31s)
  ./cmd/mesh-controller --- PASS: TestAReusedCheckBuildIsRegisteredByItsDigestAndGatedAsABuiltOne (0.37s)
  ./cmd/mesh-controller --- PASS: TestTheMergeGateJudgesEachManifestAgainstTheListOfTheTree (4.78s)
  ./cmd/mesh-controller --- PASS: TestRegistrationPublishesTheNewestTrunkListAndJudgesEveryModuleAgainstIt (0.25s)
  ./cmd/mesh-controller --- PASS: TestADeclarationIsTheSameAfterPlacementMoves (0.49s)
  ./cmd/mesh-controller --- PASS: TestAReleaseSendsTheRestAtOnceAfterTheFirstPasses (0.21s)
  ./cmd/mesh-controller --- PASS: TestARestMachineThatFailsIsPutBackAloneAndTheOthersAreJudgedOn (0.20s)
  ./cmd/mesh-controller --- PASS: TestAWalkTakesOverTheReadingsOfAGateJudgingTheSameBuildThere (0.16s)
  ./cmd/mesh-controller --- PASS: TestAFirstSendMadeAndNotKeptIsNotSentAgain (0.25s)
  ./cmd/mesh-controller --- PASS: TestAReleaseSendKeptAndMadeIsNotMadeAgain (0.16s)
  ./cmd/mesh-controller --- PASS: TestAFirstMachineThatFailsStillStopsTheWalk (0.17s)
  ./cmd/mesh-controller --- PASS: TestTheControlNodeIsSentLastInAStep (0.19s)
  ./cmd/mesh-controller --- PASS: TestARestMachineSilentPastItsBoundIsLeftAndSaid (0.18s)
  ./cmd/mesh-controller --- PASS: TestANoMoveTierWaitsForNoNewReport (0.28s)
  ./cmd/mesh-controller --- PASS: TestOneProviderDownAndThreeConsumersFailingAreOneCondition (0.17s)
  ./cmd/mesh-controller --- PASS: TestAConsumerFailingBesideAHealthyProviderIsItsOwn (0.17s)
  ./cmd/mesh-controller --- PASS: TestTheProvisionerClientsAccountIsIssuedForItsServiceAndNeverInvented (0.25s)
  ./cmd/mesh-controller --- PASS: TestAcceptOfAnOwnSecretTakesThePathOfItsModulesForm (0.27s)
  ./cmd/mesh-controller --- PASS: TestAcceptForAProviderTakesThePathOfTheProvidersModule (0.31s)
  ./cmd/mesh-controller --- PASS: TestAcceptForAMovedTrustedModuleAnnouncesBeforeTheVaultIsAsked (0.31s)
  ./cmd/mesh-controller --- PASS: TestAcceptForAMovedModuleRecordsAHandActAndNeverTheValue (0.25s)
  ./cmd/mesh-controller --- PASS: TestAcceptOfAnOutsideOfferTakesThePathOfTheProvidersModule (0.31s)
  ./cmd/mesh-controller --- PASS: TestAnAskAtTheDeskTakesThePathOfItsModulesForm (0.30s)
  ./cmd/mesh-controller --- PASS: TestAnIssuedValueTakesThePathOfItsProvidersModule (0.33s)
  ./cmd/mesh-controller --- PASS: TestARotationTakesThePathOfItsModulesForm (0.26s)
  ./cmd/mesh-controller --- PASS: TestADeclarationIsTheSameWhileTheWordsAreStillInTheLayers (2.35s)
  ./cmd/mesh-controller --- PASS: TestADeclarationIsTheSameAfterTheMoveOfPlacement (3.20s)
  ./cmd/mesh-controller --- PASS: TestTheSendSealsNoSecretOfAModuleHandedThere (0.31s)
  ./cmd/mesh-controller --- PASS: TestAModulesSecretsAreTheVaultsOnceItIsMarkedMoved (0.16s)
  ./cmd/mesh-controller --- PASS: TestEveryMachineIsToldTheSameAfterTheMoveOfConfig (62.14s)
  ./cmd/mesh-controller --- PASS: TestTheMoveOfConfigRefusesWhatWouldChangeAMachine (20.65s)
  ./cmd/mesh-controller --- PASS: TestTheSettingsVerbForwardsToConfigOnceTheValuesMoved (35.78s)
  ./cmd/mesh-controller --- PASS: TestTheSendCarriesTheVaultsBoxForACoreCredentialAndKeepsIt (0.34s)
  ./cmd/mesh-controller --- PASS: TestASilentVaultHoldsTheKeptBoxAndSaysSo (0.31s)
  ./cmd/mesh-controller --- PASS: TestACoreModuleFirstPlacedWhileTheVaultIsSilentIsSealedByTheController (0.27s)
  ./cmd/mesh-controller --- PASS: TestAnEngineBelowTheContractIsSentTheControllersSealAsBefore (0.28s)
  ./cmd/mesh-controller --- PASS: TestModuleIssueHandsACoveredAccountToTheVaultAndOnlyThat (0.31s)
  ./cmd/mesh-controller --- PASS: TestModuleIssueFailsWhenTheVaultDoesNotTakeACoveredAccount (0.23s)
  ./cmd/mesh-controller --- PASS: TestModuleIssueBeforeTheVaultIsInstalledKeepsTheValueAndHandsNothing (0.27s)
  ./cmd/mesh-controller --- PASS: TestARecordedModulesBundleOnlyMoveRollsOutInItsWalk (0.35s)
  ./cmd/mesh-controller --- PASS: TestARecordedModulesMoveThatRecreatesAContainerWaits (0.67s)
  ./cmd/mesh-controller --- PASS: TestARecordedModulesMoveThatTouchesDataOrAProviderWaits (0.62s)
  ./cmd/mesh-controller --- PASS: TestAPersonsRecordAndTheBusHoldEveryMove (0.43s)
  ./cmd/mesh-controller --- PASS: TestARecordedMoveThatCannotBeJudgedWaits (0.37s)
  ./cmd/mesh-controller --- PASS: TestReplay867 (3.65s)
  ./cmd/mesh-controller --- PASS: TestReplay867Recheck (3.68s)
  ./cmd/mesh-controller --- PASS: TestTheRecheckVerbAsksMeshDeliveryOnABusOfItsOwn (0.34s)
  ./cmd/mesh-controller --- PASS: TestAssigningTheClientIssuesItsAccount (0.21s)
  ./cmd/mesh-controller --- PASS: TestAnUnrelatedBatchWalksBesideAnOpenWalk (0.21s)
  ./cmd/mesh-controller --- PASS: TestARelatedBatchWaitsBehindTheOpenWalk (0.24s)
  ./cmd/mesh-controller --- PASS: TestAnOwnPathBatchNeverWalksBeside (0.33s)
  ./cmd/mesh-controller --- PASS: TestMergesHeardWhileAnotherHolderHasThePlansAreRecordedAndCarried (7.37s)
  ./cmd/mesh-controller --- PASS: TestABatchWindowClosesByTheExpiryOfItsKey (1.28s)
  ./cmd/mesh-controller --- PASS: TestEveryMoveAMergeAndTheCutMakeOfAPlanIsSaid (0.30s)
  ./cmd/mesh-controller --- PASS: TestARolloutAdvancesOnEventsAndAReplacedControllerResumesIt (3.64s)
  ./cmd/mesh-controller --- PASS: TestAWalkLetGoByTheDeliverVerbIsAskedWithNoOtherEvent (0.87s)
  ./cmd/mesh-controller --- PASS: TestTwoMergesWithinAMinuteLeaveEachOpenPullRequestOneQueuedCheck (0.76s)
  ./cmd/mesh-controller --- PASS: TestADeliveryGroupMovingAModuleMachinesRunPassesTheGate (5.08s)
  ./cmd/mesh-controller --- PASS: TestAModuleMovesOnTheOperatorsApproveOfTheMergeThatMovedIt (1.68s)
  ./cmd/mesh-controller --- PASS: TestAModuleBuiltFromANewRepositoryIsRegisteredOnlyOnTheOperatorsApproveOnTheBus (0.79s)
  ./cmd/mesh-controller --- PASS: TestAMergeWhosePlanCannotBeSavedIsHeldAndRecordedWhenHandedOverAgain (0.17s)
  ./cmd/mesh-controller --- PASS: TestOneReadOfAnAssignmentNamesItsCommitBuildAndRolloutAndOneReadOfTheRolloutListsItsAssignments (0.31s)
  ./cmd/mesh-controller --- PASS: TestASendOfWhatAMachineRunsAlreadyChangesNoLinkOfItsAssignment (0.21s)
  ./cmd/mesh-controller --- PASS: TestAnAssignmentWaitingForItsBuildIsOneKeyOfTheAssignmentsBucket (0.23s)
  ./cmd/mesh-controller --- PASS: TestNoTableOfTheControllersStoreHoldsBuildsRolloutsOrAssignments (0.29s)
  ./cmd/mesh-controller --- PASS: TestAComposedDeclarationCarriesModulesAndBuildsOnlyForANodeThatReadsThem (0.23s)
  ./cmd/mesh-controller --- PASS: TestAPlanPassesATierWhoseMachineNeverReportsAfterTheBoundAndSendsTheNextToTheOthers (3.86s)
  ./cmd/mesh-controller --- PASS: TestAMergeOnTheApproveIntoANewRepositoryAsksTheFirstBuildAndItsOutcomeRegistersTheModule (2.89s)
  ./cmd/mesh-controller --- PASS: TestTheApprovedFirstBuildPassesTheGuardOfAVerbAndIsQueued (0.58s)
  ./cmd/mesh-controller --- PASS: TestAPlanGoesOnWithoutAMachineAwayWhenItsTierIsSent (0.90s)
  ./internal/inventory --- PASS: TestTheLastSendSaysWhatTheMachineAnswered (0.08s)
  ./internal/inventory --- PASS: TestAReportIsTheLastSendsAnswerOnlyWhenItIsAboutThatSend (0.08s)
  ./internal/inventory --- PASS: TestAnIssuedValueIsSealedToEveryHolderOnceAndNotAgain (0.16s)
  ./internal/inventory --- PASS: TestAnIssuedValueIsSealedAgainAfterAKeyChangeOrAnAcceptance (0.12s)
  ./internal/inventory --- PASS: TestAConditionsLooksAreKeptBesideTheBucket (0.11s)
  ./internal/inventory --- PASS: TestAPlanIdHoldingAQuoteIsReadAsAPlainId (0.06s)
  ./internal/inventory --- PASS: TestAWalksStartIsKeptAndARefusedSaveLeavesItUnsaid (0.06s)
  ./internal/inventory --- PASS: TestAWalksRestIsReadFromEachMachinesOwnSend (0.07s)
  ./internal/inventory --- PASS: TestAStoredBuildWithASilentMergeableFileIsStillReadAndComposed (0.07s)
  ./internal/inventory --- PASS: TestACredentialIssuedOutsideIsNeverMade (0.15s)
  ./internal/inventory --- PASS: TestOneAcceptForAProviderIsSealedToEveryConsumer (0.13s)
  ./internal/inventory --- PASS: TestASharedOwnSecretIssuedOutsideIsNeverMade (0.22s)
  ./internal/inventory --- PASS: TestAModuleInTheConfigFormIsMirroredWithItsWholeDeclaration (0.09s)
  ./internal/inventory --- PASS: TestAReportOfABusyContainerIsKeptAndReadBack (0.07s)
  ./internal/inventory --- PASS: TestANewerBuildsListReplacesTheKeptOneAndAnOlderOneHeardLaterDoesNot (0.08s)
  ./internal/inventory --- PASS: TestPlacementMovesOutOfTheSettingsLayers (0.45s)
  ./internal/inventory --- PASS: TestASettingRoutesPlacementBesideTheLayer (0.08s)
  ./internal/inventory --- PASS: TestTheProvisionerClientsMachineHasAnAccountOfItsOwn (0.10s)
  ./internal/inventory --- PASS: TestTheFourWordsAreKeptBesideTheLayer (0.08s)
  ./internal/inventory --- PASS: TestALayerStillHoldingTheWordsReadsThemAsPlacement (0.09s)
  ./internal/inventory --- PASS: TestTheMoveOfPlacementMovesWhatTheLayersStillHold (0.08s)
  ./internal/inventory --- PASS: TestTheMoveReadsEveryRowSealedToAMachineAsItIs (0.09s)
  ./internal/inventory --- PASS: TestASendKeepsThePlansItHandedAndTheMirrorCarriesThem (0.07s)
  ./internal/inventory --- PASS: TestTheLayersAreReadUntilTheMoveOfConfigHasRun (0.08s)
  ./internal/inventory --- PASS: TestAModuleReadsMeshConfigOnlyWhereItsValuesAre (0.09s)
  ./internal/inventory --- PASS: TestTheEndOfTheMoveRefusesALayerChangedSinceItWasRead (0.08s)
  ./internal/inventory --- PASS: TestACoreCredentialsVaultBoxIsKeptPerMachineAndReplaced (0.11s)
  ./internal/inventory --- PASS: TestWhatRunsIsTheRegisteredBuildNotANewerOnePutBack (0.10s)
  ./internal/inventory --- PASS: TestBuildsOnTheBusAreReadBackByEveryReader (0.07s)
  ./internal/inventory --- PASS: TestARequestIsTheBuildInStateAskedAndItsOutcomeTakesItsPlace (0.17s)
  ./internal/inventory --- PASS: TestAnAssignmentIsAKeyOfTheBucketAndAnUnassignmentEndsIt (0.11s)
  ./internal/inventory --- PASS: TestThePlansAreKeptInTheAssignmentsValuesAndNothingElseOfThemMoves (0.08s)
  ./internal/inventory --- PASS: TestAPendingAssignmentIsAKeyOfTheAssignmentsBucket (0.07s)
  ./internal/inventory --- PASS: TestARecordedPendingIsSkippedByAssignedAndTheJoins (0.08s)
  ./internal/inventory --- PASS: TestTwoClaimsOfOnePendingMakeOneAndTheOtherSeesFalse (0.08s)
  ./internal/inventory --- PASS: TestAssignOverAPendingKeepsItsRecordAsApplied (0.07s)
  ./internal/inventory --- PASS: TestAPendingIsMarkedOnceAndGoesWithItsMachine (0.08s)
  ./internal/inventory --- PASS: TestAReplacedWaitNeverLeavesTheOperatorWithoutItsCondition (0.06s)
  ./internal/inventory --- PASS: TestSentBuildsAnswersFromTheAssignmentsKeysOfTheNode (0.07s)
  ./internal/inventory --- PASS: TestASendReplacesTheWholeMapOfTheNodeAndAHandSendMakesItUnknown (0.07s)
  ./internal/inventory --- PASS: TestAFailedWriteOfTheLinksFailsTheRecordOfTheSend (0.08s)
  ./internal/inventory --- PASS: TestMigration0105RefusesAStoreWhoseRowsWereNotMovedAndDropsTheTablesOfAMovedOne (0.39s)
  ./internal/inventory --- PASS: TestMigration0105PassesAStoreThatNeverHeldARow (0.09s)
  ./internal/inventory --- PASS: TestTheColumnOfASentMachineIsCopiedOntoItsKeysAndEmptied (0.07s)
  ./internal/inventory --- PASS: TestASendEmptiesTheColumnSoALaterCopyLeavesAClearedKeyBare (0.08s)
  ./internal/inventory --- PASS: TestWhetherAMachineReadsModulesIsItsLatestWord (0.07s)
  ./internal/recordmirror --- PASS: TestNatsAnAssignmentAndARegistrationEachChangeOneKeyAndRaiseOneEvent (2.14s)
  ./internal/recordmirror --- PASS: TestNatsTheListOfPredefinedKeysKeptChangesTheMirrorsOneKey (1.46s)
**Merge check** at `0caa8c68` Judged: head `0caa8c6844d9` merged into trunk `0205b8f7080a`; read beside it: mesh-catalog `0f2cee1bea4e`, mesh-controller-main `0205b8f7080a`, mesh-host `c5c4caa2a4ab`, mesh-tools `e0fadc43d9dd` - `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: internal/builder/archive_symlink_test.go Run by the build seat on ace as `build-1792576657291322114` (`builds --log build-1792576657291322114`). ``` MESH_STORE_EXAMPLE_PORT is "${seat:mesh-store:5432}", a placeholder nothing filled in — ignored; the port in MESH_STORE_EXAMPLE stands. The control plane composing this declaration is older than the manifest naming it: rebuild and push it PASS ok github.com/novox/mesh-controller/internal/store 3.509s 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.306s PASS ok github.com/novox/mesh-controller/internal/token 1.036s ok github.com/novox/mesh-controller/cmd/mesh-controller 144s (shard 1 of 8: 160 tests) ok github.com/novox/mesh-controller/cmd/mesh-controller 128s (shard 2 of 8: 160 tests) ok github.com/novox/mesh-controller/cmd/mesh-controller 67s (shard 3 of 8: 160 tests) ok github.com/novox/mesh-controller/cmd/mesh-controller 42s (shard 4 of 8: 160 tests) ok github.com/novox/mesh-controller/cmd/mesh-controller 42s (shard 5 of 8: 160 tests) ok github.com/novox/mesh-controller/cmd/mesh-controller 328s (shard 6 of 8: 159 tests) ok github.com/novox/mesh-controller/cmd/mesh-controller 178s (shard 7 of 8: 159 tests) ok github.com/novox/mesh-controller/cmd/mesh-controller 207s (shard 8 of 8: 159 tests) ok github.com/novox/mesh-controller/internal/inventory 25s (shard 1 of 4: 92 tests) ok github.com/novox/mesh-controller/internal/inventory 25s (shard 2 of 4: 92 tests) ok github.com/novox/mesh-controller/internal/inventory 25s (shard 3 of 4: 92 tests) ok github.com/novox/mesh-controller/internal/inventory 21s (shard 4 of 4: 91 tests) ok github.com/novox/mesh-controller/internal/builder 18s (shard 1 of 4: 58 tests) ok github.com/novox/mesh-controller/internal/builder 30s (shard 2 of 4: 57 tests) ok github.com/novox/mesh-controller/internal/builder 22s (shard 3 of 4: 57 tests) ok github.com/novox/mesh-controller/internal/builder 29s (shard 4 of 4: 57 tests) ok github.com/novox/mesh-controller/internal/link 28s (shard 1 of 4: 53 tests) ok github.com/novox/mesh-controller/internal/link 24s (shard 2 of 4: 53 tests) ok github.com/novox/mesh-controller/internal/link 23s (shard 3 of 4: 53 tests) ok github.com/novox/mesh-controller/internal/link 15s (shard 4 of 4: 52 tests) integration level (the whole suite, tag integration): 2645 tests (3 skipped outside the shards), 358 s nested module modules/build-agent: ok build-agent 1.012s nested module modules/route-proxy: ok route-proxy/cmd/route-provider 1.012s nested modules: 3 s store tests, each run against the store: ./cmd/mesh-controller --- PASS: TestAStopWithoutAMergeWalksTheOthersAgain (0.25s) ./cmd/mesh-controller --- PASS: TestAStopWithoutAMergeEndsTheMergesThatContainIt (0.25s) ./cmd/mesh-controller --- PASS: TestAStopWalksTheOthersAgainInTheOpenBatch (0.26s) ./cmd/mesh-controller --- PASS: TestAStopNamesWhatStaysOnTheMachinesAndWhatStillCarriesIt (0.22s) ./cmd/mesh-controller --- PASS: TestAStopWithoutAMergeLeavesItOutOfABatch (0.21s) ./cmd/mesh-controller --- PASS: TestSavingPlansAndMovingMergesIsOneAct (0.16s) ./cmd/mesh-controller --- PASS: TestAPlanFollowedFromTheStoreAnswersWhenItMoves (1.96s) ./cmd/mesh-controller --- PASS: TestIssue969TheGateRaisesEachMachineAsItsEngineStatedItself (0.77s) ./cmd/mesh-controller --- PASS: TestNodeShowAndStatusReadTheLastSendFromTheStore (0.24s) ./cmd/mesh-controller --- PASS: TestTheConditionsVerbReadsTheLooksTheBucketNoLongerHolds (0.14s) ./cmd/mesh-controller --- PASS: TestAWalkLetGoAndStoppedByVerbsIsSaidStartedAndEnded (0.26s) ./cmd/mesh-controller --- PASS: TestAWalkStoppedOrClosedByAPersonIsSaidEndedStopped (0.28s) ./cmd/mesh-controller --- PASS: TestAWalkRetriedByAPersonIsSaidStartedAgain (0.20s) ./cmd/mesh-controller --- PASS: TestABacklogReleasedByAPersonIsSaidStarted (0.20s) ./cmd/mesh-controller --- PASS: TestAWalkEndedByCancelOrClearIsSaidEnded (0.27s) ./cmd/mesh-controller --- PASS: TestAWalkRestartedByARebuildIsSaidStarted (0.21s) ./cmd/mesh-controller --- PASS: TestAWalkStoppedByHandAndRetriedEndsFailedWhenItFailsAgain (0.22s) ./cmd/mesh-controller --- PASS: TestReplay237 (0.24s) ./cmd/mesh-controller --- PASS: TestAnUnassignThatLeavesItsNodeUnresolvedSaysSoOnceInItsAnswer (0.27s) ./cmd/mesh-controller --- PASS: TestAnUnassignThatLeavesItsNodeResolvedSaysNothingOfIt (0.32s) ./cmd/mesh-controller --- PASS: TestAnAssignThatLeavesItsNodeUnresolvedSaysOnlyThePlansRefusal (0.29s) ./cmd/mesh-controller --- PASS: TestADirectoryOwnersKeyIsRefusedThroughAVerb (0.26s) ./cmd/mesh-controller --- PASS: TestTheSendMakesNoValueForAnOutsideSecretNobodyGave (0.32s) ./cmd/mesh-controller --- PASS: TestAQuestionComposesWithoutAnOutsideSecretNobodyGave (0.29s) ./cmd/mesh-controller --- PASS: TestReplay201 (0.15s) ./cmd/mesh-controller --- PASS: TestARollbackWhoseSendWasRefusedIsCompletedByTheNextSend (0.15s) ./cmd/mesh-controller --- PASS: TestAGateJudgesTheOtherMovesBesideAKeptCore (0.18s) ./cmd/mesh-controller --- PASS: TestReplay401 (0.31s) ./cmd/mesh-controller --- PASS: TestReplay201ThePlansSend (0.22s) ./cmd/mesh-controller --- PASS: TestPlanAndNodeListAnOptionalRequirementLeftUnbound (0.31s) ./cmd/mesh-controller --- PASS: TestReplay340 (0.29s) ./cmd/mesh-controller --- PASS: TestOnlyATrustedFilesNamedKeyIsRefusedThroughAVerb (0.23s) ./cmd/mesh-controller --- PASS: TestReplay349 (0.26s) ./cmd/mesh-controller --- PASS: TestReplay348AFaultFromBeforeTheSendFailsNoGate (0.18s) ./cmd/mesh-controller --- PASS: TestReplay239AModuleNameIsNotTakenOverByAnotherRepository (0.19s) ./cmd/mesh-controller --- PASS: TestAWalkThatMovedNothingSaysWhichModulesMatchedWhatRuns (0.21s) ./cmd/mesh-controller --- PASS: TestAWalkWhoseEveryBuildCameOutTheSameIsDone (0.16s) ./cmd/mesh-controller --- PASS: TestReplay614ANewSDKPlansTheToolchainAndThenItsBundles (0.08s) ./cmd/mesh-controller --- PASS: TestOneAcceptForAProviderIsPlacedForEveryConsumer (0.51s) ./cmd/mesh-controller --- PASS: TestReplay164 (0.28s) ./cmd/mesh-controller --- PASS: TestAnApprovedLayerOpensTheWalkThatSendsIt (0.23s) ./cmd/mesh-controller --- PASS: TestASettingsWalkSendsOneMachineAtATimeEachJudged (0.19s) ./cmd/mesh-controller --- PASS: TestAFailedSettingsWalkStopsAndHoldsNothingBack (0.17s) ./cmd/mesh-controller --- PASS: TestASettingsWalkSendsTheLayerAloneEveryBuildKept (0.18s) ./cmd/mesh-controller --- PASS: TestASettingsWalkStopsBeforeADataMoveAndPassesOverAMachineAway (0.51s) ./cmd/mesh-controller --- PASS: TestACrossingSendSupersedesASettingsGate (0.16s) ./cmd/mesh-controller --- PASS: TestASettingsWalkFailsOnARefusalThatCannotClear (0.16s) ./cmd/mesh-controller --- PASS: TestAProviderElsewhereServesItsOwnComposedName (0.31s) ./cmd/mesh-controller --- PASS: TestAReusedCheckBuildIsRegisteredByItsDigestAndGatedAsABuiltOne (0.37s) ./cmd/mesh-controller --- PASS: TestTheMergeGateJudgesEachManifestAgainstTheListOfTheTree (4.78s) ./cmd/mesh-controller --- PASS: TestRegistrationPublishesTheNewestTrunkListAndJudgesEveryModuleAgainstIt (0.25s) ./cmd/mesh-controller --- PASS: TestADeclarationIsTheSameAfterPlacementMoves (0.49s) ./cmd/mesh-controller --- PASS: TestAReleaseSendsTheRestAtOnceAfterTheFirstPasses (0.21s) ./cmd/mesh-controller --- PASS: TestARestMachineThatFailsIsPutBackAloneAndTheOthersAreJudgedOn (0.20s) ./cmd/mesh-controller --- PASS: TestAWalkTakesOverTheReadingsOfAGateJudgingTheSameBuildThere (0.16s) ./cmd/mesh-controller --- PASS: TestAFirstSendMadeAndNotKeptIsNotSentAgain (0.25s) ./cmd/mesh-controller --- PASS: TestAReleaseSendKeptAndMadeIsNotMadeAgain (0.16s) ./cmd/mesh-controller --- PASS: TestAFirstMachineThatFailsStillStopsTheWalk (0.17s) ./cmd/mesh-controller --- PASS: TestTheControlNodeIsSentLastInAStep (0.19s) ./cmd/mesh-controller --- PASS: TestARestMachineSilentPastItsBoundIsLeftAndSaid (0.18s) ./cmd/mesh-controller --- PASS: TestANoMoveTierWaitsForNoNewReport (0.28s) ./cmd/mesh-controller --- PASS: TestOneProviderDownAndThreeConsumersFailingAreOneCondition (0.17s) ./cmd/mesh-controller --- PASS: TestAConsumerFailingBesideAHealthyProviderIsItsOwn (0.17s) ./cmd/mesh-controller --- PASS: TestTheProvisionerClientsAccountIsIssuedForItsServiceAndNeverInvented (0.25s) ./cmd/mesh-controller --- PASS: TestAcceptOfAnOwnSecretTakesThePathOfItsModulesForm (0.27s) ./cmd/mesh-controller --- PASS: TestAcceptForAProviderTakesThePathOfTheProvidersModule (0.31s) ./cmd/mesh-controller --- PASS: TestAcceptForAMovedTrustedModuleAnnouncesBeforeTheVaultIsAsked (0.31s) ./cmd/mesh-controller --- PASS: TestAcceptForAMovedModuleRecordsAHandActAndNeverTheValue (0.25s) ./cmd/mesh-controller --- PASS: TestAcceptOfAnOutsideOfferTakesThePathOfTheProvidersModule (0.31s) ./cmd/mesh-controller --- PASS: TestAnAskAtTheDeskTakesThePathOfItsModulesForm (0.30s) ./cmd/mesh-controller --- PASS: TestAnIssuedValueTakesThePathOfItsProvidersModule (0.33s) ./cmd/mesh-controller --- PASS: TestARotationTakesThePathOfItsModulesForm (0.26s) ./cmd/mesh-controller --- PASS: TestADeclarationIsTheSameWhileTheWordsAreStillInTheLayers (2.35s) ./cmd/mesh-controller --- PASS: TestADeclarationIsTheSameAfterTheMoveOfPlacement (3.20s) ./cmd/mesh-controller --- PASS: TestTheSendSealsNoSecretOfAModuleHandedThere (0.31s) ./cmd/mesh-controller --- PASS: TestAModulesSecretsAreTheVaultsOnceItIsMarkedMoved (0.16s) ./cmd/mesh-controller --- PASS: TestEveryMachineIsToldTheSameAfterTheMoveOfConfig (62.14s) ./cmd/mesh-controller --- PASS: TestTheMoveOfConfigRefusesWhatWouldChangeAMachine (20.65s) ./cmd/mesh-controller --- PASS: TestTheSettingsVerbForwardsToConfigOnceTheValuesMoved (35.78s) ./cmd/mesh-controller --- PASS: TestTheSendCarriesTheVaultsBoxForACoreCredentialAndKeepsIt (0.34s) ./cmd/mesh-controller --- PASS: TestASilentVaultHoldsTheKeptBoxAndSaysSo (0.31s) ./cmd/mesh-controller --- PASS: TestACoreModuleFirstPlacedWhileTheVaultIsSilentIsSealedByTheController (0.27s) ./cmd/mesh-controller --- PASS: TestAnEngineBelowTheContractIsSentTheControllersSealAsBefore (0.28s) ./cmd/mesh-controller --- PASS: TestModuleIssueHandsACoveredAccountToTheVaultAndOnlyThat (0.31s) ./cmd/mesh-controller --- PASS: TestModuleIssueFailsWhenTheVaultDoesNotTakeACoveredAccount (0.23s) ./cmd/mesh-controller --- PASS: TestModuleIssueBeforeTheVaultIsInstalledKeepsTheValueAndHandsNothing (0.27s) ./cmd/mesh-controller --- PASS: TestARecordedModulesBundleOnlyMoveRollsOutInItsWalk (0.35s) ./cmd/mesh-controller --- PASS: TestARecordedModulesMoveThatRecreatesAContainerWaits (0.67s) ./cmd/mesh-controller --- PASS: TestARecordedModulesMoveThatTouchesDataOrAProviderWaits (0.62s) ./cmd/mesh-controller --- PASS: TestAPersonsRecordAndTheBusHoldEveryMove (0.43s) ./cmd/mesh-controller --- PASS: TestARecordedMoveThatCannotBeJudgedWaits (0.37s) ./cmd/mesh-controller --- PASS: TestReplay867 (3.65s) ./cmd/mesh-controller --- PASS: TestReplay867Recheck (3.68s) ./cmd/mesh-controller --- PASS: TestTheRecheckVerbAsksMeshDeliveryOnABusOfItsOwn (0.34s) ./cmd/mesh-controller --- PASS: TestAssigningTheClientIssuesItsAccount (0.21s) ./cmd/mesh-controller --- PASS: TestAnUnrelatedBatchWalksBesideAnOpenWalk (0.21s) ./cmd/mesh-controller --- PASS: TestARelatedBatchWaitsBehindTheOpenWalk (0.24s) ./cmd/mesh-controller --- PASS: TestAnOwnPathBatchNeverWalksBeside (0.33s) ./cmd/mesh-controller --- PASS: TestMergesHeardWhileAnotherHolderHasThePlansAreRecordedAndCarried (7.37s) ./cmd/mesh-controller --- PASS: TestABatchWindowClosesByTheExpiryOfItsKey (1.28s) ./cmd/mesh-controller --- PASS: TestEveryMoveAMergeAndTheCutMakeOfAPlanIsSaid (0.30s) ./cmd/mesh-controller --- PASS: TestARolloutAdvancesOnEventsAndAReplacedControllerResumesIt (3.64s) ./cmd/mesh-controller --- PASS: TestAWalkLetGoByTheDeliverVerbIsAskedWithNoOtherEvent (0.87s) ./cmd/mesh-controller --- PASS: TestTwoMergesWithinAMinuteLeaveEachOpenPullRequestOneQueuedCheck (0.76s) ./cmd/mesh-controller --- PASS: TestADeliveryGroupMovingAModuleMachinesRunPassesTheGate (5.08s) ./cmd/mesh-controller --- PASS: TestAModuleMovesOnTheOperatorsApproveOfTheMergeThatMovedIt (1.68s) ./cmd/mesh-controller --- PASS: TestAModuleBuiltFromANewRepositoryIsRegisteredOnlyOnTheOperatorsApproveOnTheBus (0.79s) ./cmd/mesh-controller --- PASS: TestAMergeWhosePlanCannotBeSavedIsHeldAndRecordedWhenHandedOverAgain (0.17s) ./cmd/mesh-controller --- PASS: TestOneReadOfAnAssignmentNamesItsCommitBuildAndRolloutAndOneReadOfTheRolloutListsItsAssignments (0.31s) ./cmd/mesh-controller --- PASS: TestASendOfWhatAMachineRunsAlreadyChangesNoLinkOfItsAssignment (0.21s) ./cmd/mesh-controller --- PASS: TestAnAssignmentWaitingForItsBuildIsOneKeyOfTheAssignmentsBucket (0.23s) ./cmd/mesh-controller --- PASS: TestNoTableOfTheControllersStoreHoldsBuildsRolloutsOrAssignments (0.29s) ./cmd/mesh-controller --- PASS: TestAComposedDeclarationCarriesModulesAndBuildsOnlyForANodeThatReadsThem (0.23s) ./cmd/mesh-controller --- PASS: TestAPlanPassesATierWhoseMachineNeverReportsAfterTheBoundAndSendsTheNextToTheOthers (3.86s) ./cmd/mesh-controller --- PASS: TestAMergeOnTheApproveIntoANewRepositoryAsksTheFirstBuildAndItsOutcomeRegistersTheModule (2.89s) ./cmd/mesh-controller --- PASS: TestTheApprovedFirstBuildPassesTheGuardOfAVerbAndIsQueued (0.58s) ./cmd/mesh-controller --- PASS: TestAPlanGoesOnWithoutAMachineAwayWhenItsTierIsSent (0.90s) ./internal/inventory --- PASS: TestTheLastSendSaysWhatTheMachineAnswered (0.08s) ./internal/inventory --- PASS: TestAReportIsTheLastSendsAnswerOnlyWhenItIsAboutThatSend (0.08s) ./internal/inventory --- PASS: TestAnIssuedValueIsSealedToEveryHolderOnceAndNotAgain (0.16s) ./internal/inventory --- PASS: TestAnIssuedValueIsSealedAgainAfterAKeyChangeOrAnAcceptance (0.12s) ./internal/inventory --- PASS: TestAConditionsLooksAreKeptBesideTheBucket (0.11s) ./internal/inventory --- PASS: TestAPlanIdHoldingAQuoteIsReadAsAPlainId (0.06s) ./internal/inventory --- PASS: TestAWalksStartIsKeptAndARefusedSaveLeavesItUnsaid (0.06s) ./internal/inventory --- PASS: TestAWalksRestIsReadFromEachMachinesOwnSend (0.07s) ./internal/inventory --- PASS: TestAStoredBuildWithASilentMergeableFileIsStillReadAndComposed (0.07s) ./internal/inventory --- PASS: TestACredentialIssuedOutsideIsNeverMade (0.15s) ./internal/inventory --- PASS: TestOneAcceptForAProviderIsSealedToEveryConsumer (0.13s) ./internal/inventory --- PASS: TestASharedOwnSecretIssuedOutsideIsNeverMade (0.22s) ./internal/inventory --- PASS: TestAModuleInTheConfigFormIsMirroredWithItsWholeDeclaration (0.09s) ./internal/inventory --- PASS: TestAReportOfABusyContainerIsKeptAndReadBack (0.07s) ./internal/inventory --- PASS: TestANewerBuildsListReplacesTheKeptOneAndAnOlderOneHeardLaterDoesNot (0.08s) ./internal/inventory --- PASS: TestPlacementMovesOutOfTheSettingsLayers (0.45s) ./internal/inventory --- PASS: TestASettingRoutesPlacementBesideTheLayer (0.08s) ./internal/inventory --- PASS: TestTheProvisionerClientsMachineHasAnAccountOfItsOwn (0.10s) ./internal/inventory --- PASS: TestTheFourWordsAreKeptBesideTheLayer (0.08s) ./internal/inventory --- PASS: TestALayerStillHoldingTheWordsReadsThemAsPlacement (0.09s) ./internal/inventory --- PASS: TestTheMoveOfPlacementMovesWhatTheLayersStillHold (0.08s) ./internal/inventory --- PASS: TestTheMoveReadsEveryRowSealedToAMachineAsItIs (0.09s) ./internal/inventory --- PASS: TestASendKeepsThePlansItHandedAndTheMirrorCarriesThem (0.07s) ./internal/inventory --- PASS: TestTheLayersAreReadUntilTheMoveOfConfigHasRun (0.08s) ./internal/inventory --- PASS: TestAModuleReadsMeshConfigOnlyWhereItsValuesAre (0.09s) ./internal/inventory --- PASS: TestTheEndOfTheMoveRefusesALayerChangedSinceItWasRead (0.08s) ./internal/inventory --- PASS: TestACoreCredentialsVaultBoxIsKeptPerMachineAndReplaced (0.11s) ./internal/inventory --- PASS: TestWhatRunsIsTheRegisteredBuildNotANewerOnePutBack (0.10s) ./internal/inventory --- PASS: TestBuildsOnTheBusAreReadBackByEveryReader (0.07s) ./internal/inventory --- PASS: TestARequestIsTheBuildInStateAskedAndItsOutcomeTakesItsPlace (0.17s) ./internal/inventory --- PASS: TestAnAssignmentIsAKeyOfTheBucketAndAnUnassignmentEndsIt (0.11s) ./internal/inventory --- PASS: TestThePlansAreKeptInTheAssignmentsValuesAndNothingElseOfThemMoves (0.08s) ./internal/inventory --- PASS: TestAPendingAssignmentIsAKeyOfTheAssignmentsBucket (0.07s) ./internal/inventory --- PASS: TestARecordedPendingIsSkippedByAssignedAndTheJoins (0.08s) ./internal/inventory --- PASS: TestTwoClaimsOfOnePendingMakeOneAndTheOtherSeesFalse (0.08s) ./internal/inventory --- PASS: TestAssignOverAPendingKeepsItsRecordAsApplied (0.07s) ./internal/inventory --- PASS: TestAPendingIsMarkedOnceAndGoesWithItsMachine (0.08s) ./internal/inventory --- PASS: TestAReplacedWaitNeverLeavesTheOperatorWithoutItsCondition (0.06s) ./internal/inventory --- PASS: TestSentBuildsAnswersFromTheAssignmentsKeysOfTheNode (0.07s) ./internal/inventory --- PASS: TestASendReplacesTheWholeMapOfTheNodeAndAHandSendMakesItUnknown (0.07s) ./internal/inventory --- PASS: TestAFailedWriteOfTheLinksFailsTheRecordOfTheSend (0.08s) ./internal/inventory --- PASS: TestMigration0105RefusesAStoreWhoseRowsWereNotMovedAndDropsTheTablesOfAMovedOne (0.39s) ./internal/inventory --- PASS: TestMigration0105PassesAStoreThatNeverHeldARow (0.09s) ./internal/inventory --- PASS: TestTheColumnOfASentMachineIsCopiedOntoItsKeysAndEmptied (0.07s) ./internal/inventory --- PASS: TestASendEmptiesTheColumnSoALaterCopyLeavesAClearedKeyBare (0.08s) ./internal/inventory --- PASS: TestWhetherAMachineReadsModulesIsItsLatestWord (0.07s) ./internal/recordmirror --- PASS: TestNatsAnAssignmentAndARegistrationEachChangeOneKeyAndRaiseOneEvent (2.14s) ./internal/recordmirror --- PASS: TestNatsTheListOfPredefinedKeysKeptChangesTheMirrorsOneKey (1.46s) ```
mesh-tools merged commit ff42f21839 into main 2026-10-21 10:16:52 +00:00
mesh-tools deleted branch fix/1609-archive-symlink 2026-10-21 10:16:53 +00:00
Sign in to join this conversation.
No Reviewers
1 Participants
Notifications
Due Date
No due date set.
Dependencies

No dependencies set.

Reference: novox/mesh-controller#415