Issue 1768 (critical, met on ace at 20:45 and on g14 at 20:58 local): a build-agent that dropped a duplicate hand-out (issue 1649's guard) left /tmp/mesh-builder.in-hand behind, then could mark no build and Nak'd every ask at once, dead-lettering the whole build queue within seconds.
Cause: internal/link/builds_nats.go Take ran Claim() (cmd/mesh-builder/busy.go claim, an O_EXCL create) before runningElsewhere, whose duplicate path acked and continued without releasing the mark.
Fix: natsMachine.admit() judges the duplicate before the claim, so a dropped duplicate marks nothing; busy.go keeps an in-process inHand flag and removes a mark found while nothing is held (stale), never a live one; an agent that cannot mark for another reason says why once and fetches nothing (markFaulty joins Paused), probing every 30 s and resuming when it can mark.
Tests: 1768/AC1 TestADuplicateDropIsJudgedBeforeTheClaimSoLeavesNoMark (fails on the old order), AC2 TestAStaleInHandMarkIsRemovedAndTheAskRuns, AC3 TestAnAgentThatCannotMarkABuildTakesNoWorkUntilItCan. Unit: cmd/mesh-builder 0.03 s, internal/link 0.35 s, cmd/mesh-controller 2.1 s. Opened before its try's verdict because ace and g14 are paused by this bug and one node builds: the try build-1792609075012142043 is queued and its result will be noted here. Follow-up opened by the review: 1771 (no condition for an agent that cannot mark). Delivering build-agent replaces the fixed process on every node, which also clears the stale marks on ace and g14.
Issue 1768 (critical, met on ace at 20:45 and on g14 at 20:58 local): a build-agent that dropped a duplicate hand-out (issue 1649's guard) left /tmp/mesh-builder.in-hand behind, then could mark no build and Nak'd every ask at once, dead-lettering the whole build queue within seconds.
Cause: internal/link/builds_nats.go Take ran Claim() (cmd/mesh-builder/busy.go claim, an O_EXCL create) before runningElsewhere, whose duplicate path acked and continued without releasing the mark.
Fix: natsMachine.admit() judges the duplicate before the claim, so a dropped duplicate marks nothing; busy.go keeps an in-process inHand flag and removes a mark found while nothing is held (stale), never a live one; an agent that cannot mark for another reason says why once and fetches nothing (markFaulty joins Paused), probing every 30 s and resuming when it can mark.
Tests: 1768/AC1 TestADuplicateDropIsJudgedBeforeTheClaimSoLeavesNoMark (fails on the old order), AC2 TestAStaleInHandMarkIsRemovedAndTheAskRuns, AC3 TestAnAgentThatCannotMarkABuildTakesNoWorkUntilItCan. Unit: cmd/mesh-builder 0.03 s, internal/link 0.35 s, cmd/mesh-controller 2.1 s. Opened before its try's verdict because ace and g14 are paused by this bug and one node builds: the try build-1792609075012142043 is queued and its result will be noted here. Follow-up opened by the review: 1771 (no condition for an agent that cannot mark). Delivering build-agent replaces the fixed process on every node, which also clears the stale marks on ace and g14.
Reviewed-by: reviewer-1768@shanks at 696300b9e280387dabaa46dd8d612dd0c65dff70
mesh/merge-gate head 696300b9e280 merged into trunk f973cefd7fd3 — pass: builds build-agent, mesh-controller → ace, g14, novox, shanks; no bus step; every …
Deliverynovox/mesh-controller@696300b9e280 — delivered since 2026-10-21T20:04:36Z
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 19:05 (new) → proposed (announced): novox/mesh-controller#429's head announced
2026-10-21 19:42 proposed → checked (checked): a verdict names this commit and the trunk's head as its trunk commit
2026-10-21 19:42 checked → rejected (refused): the gate failed or could not run, or the repository's own check failed
2026-10-21 19:43 rejected → proposed (recheck): rejected only by TestAMergeWaitsForItsDeliverysWordAndThePersonsWordWorksWithoutIt (cmd/mesh-controller delivery integration test, code this change does not touch), a known flaky test met for the second time (issue 1399, fix started); the same commit's try passed at 21:18. #429 fixes critical issue 1768 (a build-agent that hands every build back), which keeps ace and g14 at risk until it is delivered. lead-47@shanks
2026-10-21 19:44 proposed → checked (checked): a verdict names this commit and the trunk's head as its trunk commit
2026-10-21 19:44 checked → rejected (refused): the gate failed or could not run, or the repository's own check failed
2026-10-21 19:45 rejected → proposed (recheck): the recheck's check (build-1792611787305028084) could not run on g14: 'Could not resolve host: novox.internal' cloning mesh-tools beside it, a minute after three clones of the same host succeeded (an intermittent name lookup in g14's build container, met twice tonight, issue being opened); g14 paused so it runs on ace or shanks. #429 fixes critical issue 1768. lead-47@shanks
2026-10-21 19:58 proposed → checked (checked): a verdict names this commit and the trunk's head as its trunk commit
2026-10-21 19:58 checked → ready (accepted): the gate passed or warned, and the repository's own check did not fail
2026-10-21 19:59 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 19:59 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 20:04 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@696300b9e280` — **delivered** since 2026-10-21T20:04:36Z
**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 19:05 (new) → proposed (announced): novox/mesh-controller#429's head announced
- 2026-10-21 19:42 proposed → checked (checked): a verdict names this commit and the trunk's head as its trunk commit
- 2026-10-21 19:42 checked → rejected (refused): the gate failed or could not run, or the repository's own check failed
- 2026-10-21 19:43 rejected → proposed (recheck): rejected only by TestAMergeWaitsForItsDeliverysWordAndThePersonsWordWorksWithoutIt (cmd/mesh-controller delivery integration test, code this change does not touch), a known flaky test met for the second time (issue 1399, fix started); the same commit's try passed at 21:18. #429 fixes critical issue 1768 (a build-agent that hands every build back), which keeps ace and g14 at risk until it is delivered. lead-47@shanks
- 2026-10-21 19:44 proposed → checked (checked): a verdict names this commit and the trunk's head as its trunk commit
- 2026-10-21 19:44 checked → rejected (refused): the gate failed or could not run, or the repository's own check failed
- 2026-10-21 19:45 rejected → proposed (recheck): the recheck's check (build-1792611787305028084) could not run on g14: 'Could not resolve host: novox.internal' cloning mesh-tools beside it, a minute after three clones of the same host succeeded (an intermittent name lookup in g14's build container, met twice tonight, issue being opened); g14 paused so it runs on ace or shanks. #429 fixes critical issue 1768. lead-47@shanks
- 2026-10-21 19:58 proposed → checked (checked): a verdict names this commit and the trunk's head as its trunk commit
- 2026-10-21 19:58 checked → ready (accepted): the gate passed or warned, and the repository's own check did not fail
- 2026-10-21 19:59 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 19:59 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 20:04 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 696300b9
Judged: head 696300b9e280 merged into trunk f973cefd7fd3; read beside it: mesh-catalog 379317589488, mesh-controller-main f973cefd7fd3, mesh-host c231d1031fc7, 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: FAIL — its merge-check.sh failed: --- FAIL: TestAMergeWaitsForItsDeliverysWordAndThePersonsWordWorksWithoutIt (0.58s)
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-builder/busy_test.go, internal/link/admit_test.go
Run by the build seat on g14 as build-1792609509812704199 (builds --log build-1792609509812704199).
build-1: a try of at c0ffee, read with `try --id`: said to nobody, nothing taken in
build-2: a try of at , read with `try --id`: said to nobody, nothing taken in
build-3: a try of at , read with `try --id`: said to nobody, nothing taken in
build-4: novox/a#7 at checked on a machine that did not say which: gate PASS — ; repository none
tv-api from tv on anchor is given, sealed to requests on laptop and to anchor
the mesh cannot read it back, never makes one of its own for it, and will not rotate it
the vault now holds accept/<nil> (generation 1), accepted: sealed at this terminal to the vault's key for this call, opened in the vault alone and never remade by it; its machine takes it from the vault
this act by hand could NOT be recorded in the hand-act log, and is done anyway: the hand-act log mesh-controller_hand-acts is not on the bus — the controller asserts it at its start, so one older than this has not: nats: bucket not found
plan-308-stop stopped at tier 0 of 1; what was asked still builds and registers, nothing further is asked
this act by hand could NOT be recorded in the hand-act log, and is done anyway: the hand-act log mesh-controller_hand-acts is not on the bus — the controller asserts it at its start, so one older than this has not: nats: bucket not found
plan-308-close closed at tier 0 of 1; what was asked still builds and registers, nothing further is asked
FAIL
FAIL github.com/novox/mesh-controller/cmd/mesh-controller 603s (shard 8 of 8: 166 tests)
ok github.com/novox/mesh-controller/internal/inventory 80s (shard 1 of 4: 92 tests)
ok github.com/novox/mesh-controller/internal/inventory 77s (shard 2 of 4: 92 tests)
ok github.com/novox/mesh-controller/internal/inventory 85s (shard 3 of 4: 92 tests)
ok github.com/novox/mesh-controller/internal/inventory 76s (shard 4 of 4: 92 tests)
ok github.com/novox/mesh-controller/internal/builder 98s (shard 1 of 4: 58 tests)
ok github.com/novox/mesh-controller/internal/builder 72s (shard 2 of 4: 58 tests)
ok github.com/novox/mesh-controller/internal/builder 117s (shard 3 of 4: 58 tests)
ok github.com/novox/mesh-controller/internal/builder 82s (shard 4 of 4: 57 tests)
ok github.com/novox/mesh-controller/internal/link 52s (shard 1 of 4: 55 tests)
ok github.com/novox/mesh-controller/internal/link 52s (shard 2 of 4: 55 tests)
ok github.com/novox/mesh-controller/internal/link 35s (shard 3 of 4: 54 tests)
ok github.com/novox/mesh-controller/internal/link 65s (shard 4 of 4: 54 tests)
integration level (the whole suite, tag integration): 2715 tests (3 skipped outside the shards), 894 s
nested module modules/build-agent:
ok build-agent 1.013s
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.71s)
./cmd/mesh-controller --- PASS: TestAStopWithoutAMergeEndsTheMergesThatContainIt (0.82s)
./cmd/mesh-controller --- PASS: TestAStopWalksTheOthersAgainInTheOpenBatch (0.85s)
./cmd/mesh-controller --- PASS: TestAStopNamesWhatStaysOnTheMachinesAndWhatStillCarriesIt (0.64s)
./cmd/mesh-controller --- PASS: TestAStopWithoutAMergeLeavesItOutOfABatch (0.66s)
./cmd/mesh-controller --- PASS: TestSavingPlansAndMovingMergesIsOneAct (0.52s)
./cmd/mesh-controller --- NOT RUN: TestAPlanFollowedFromTheStoreAnswersWhenItMoves
./cmd/mesh-controller --- NOT RUN: TestIssue969TheGateRaisesEachMachineAsItsEngineStatedItself
./cmd/mesh-controller --- PASS: TestNodeShowAndStatusReadTheLastSendFromTheStore (0.64s)
./cmd/mesh-controller --- PASS: TestTheConditionsVerbReadsTheLooksTheBucketNoLongerHolds (0.46s)
./cmd/mesh-controller --- NOT RUN: TestAWalkLetGoAndStoppedByVerbsIsSaidStartedAndEnded
./cmd/mesh-controller --- NOT RUN: TestAWalkStoppedOrClosedByAPersonIsSaidEndedStopped
./cmd/mesh-controller --- NOT RUN: TestAWalkRetriedByAPersonIsSaidStartedAgain
./cmd/mesh-controller --- NOT RUN: TestABacklogReleasedByAPersonIsSaidStarted
./cmd/mesh-controller --- NOT RUN: TestAWalkEndedByCancelOrClearIsSaidEnded
./cmd/mesh-controller --- NOT RUN: TestAWalkRestartedByARebuildIsSaidStarted
./cmd/mesh-controller --- NOT RUN: TestAWalkStoppedByHandAndRetriedEndsFailedWhenItFailsAgain
./cmd/mesh-controller --- NOT RUN: TestReplay237
./cmd/mesh-controller --- NOT RUN: TestAnUnassignThatLeavesItsNodeUnresolvedSaysSoOnceInItsAnswer
./cmd/mesh-controller --- NOT RUN: TestAnUnassignThatLeavesItsNodeResolvedSaysNothingOfIt
./cmd/mesh-controller --- NOT RUN: TestAnAssignThatLeavesItsNodeUnresolvedSaysOnlyThePlansRefusal
./cmd/mesh-controller --- NOT RUN: TestADirectoryOwnersKeyIsRefusedThroughAVerb
./cmd/mesh-controller --- NOT RUN: TestTheSendMakesNoValueForAnOutsideSecretNobodyGave
./cmd/mesh-controller --- NOT RUN: TestAQuestionComposesWithoutAnOutsideSecretNobodyGave
./cmd/mesh-controller --- PASS: TestReplay201 (0.49s)
./cmd/mesh-controller --- PASS: TestARollbackWhoseSendWasRefusedIsCompletedByTheNextSend (0.50s)
./cmd/mesh-controller --- PASS: TestAGateJudgesTheOtherMovesBesideAKeptCore (0.53s)
./cmd/mesh-controller --- NOT RUN: TestReplay401
./cmd/mesh-controller --- NOT RUN: TestReplay201ThePlansSend
./cmd/mesh-controller --- NOT RUN: TestPlanAndNodeListAnOptionalRequirementLeftUnbound
./cmd/mesh-controller --- NOT RUN: TestReplay340
./cmd/mesh-controller --- NOT RUN: TestOnlyATrustedFilesNamedKeyIsRefusedThroughAVerb
./cmd/mesh-controller --- NOT RUN: TestReplay349
./cmd/mesh-controller --- NOT RUN: TestReplay348AFaultFromBeforeTheSendFailsNoGate
./cmd/mesh-controller --- NOT RUN: TestReplay239AModuleNameIsNotTakenOverByAnotherRepository
./cmd/mesh-controller --- PASS: TestAWalkThatMovedNothingSaysWhichModulesMatchedWhatRuns (0.70s)
./cmd/mesh-controller --- NOT RUN: TestAWalkWhoseEveryBuildCameOutTheSameIsDone
./cmd/mesh-controller --- NOT RUN: TestReplay614ANewSDKPlansTheToolchainAndThenItsBundles
./cmd/mesh-controller --- NOT RUN: TestOneAcceptForAProviderIsPlacedForEveryConsumer
./cmd/mesh-controller --- NOT RUN: TestReplay164
./cmd/mesh-controller --- NOT RUN: TestAnApprovedLayerOpensTheWalkThatSendsIt
./cmd/mesh-controller --- NOT RUN: TestASettingsWalkSendsOneMachineAtATimeEachJudged
./cmd/mesh-controller --- NOT RUN: TestAFailedSettingsWalkStopsAndHoldsNothingBack
./cmd/mesh-controller --- NOT RUN: TestASettingsWalkSendsTheLayerAloneEveryBuildKept
./cmd/mesh-controller --- NOT RUN: TestASettingsWalkStopsBeforeADataMoveAndPassesOverAMachineAway
./cmd/mesh-controller --- NOT RUN: TestACrossingSendSupersedesASettingsGate
./cmd/mesh-controller --- NOT RUN: TestASettingsWalkFailsOnARefusalThatCannotClear
./cmd/mesh-controller --- NOT RUN: TestAProviderElsewhereServesItsOwnComposedName
./cmd/mesh-controller --- PASS: TestAReusedCheckBuildIsRegisteredByItsDigestAndGatedAsABuiltOne (2.31s)
./cmd/mesh-controller --- NOT RUN: TestTheMergeGateJudgesEachManifestAgainstTheListOfTheTree
./cmd/mesh-controller --- NOT RUN: TestRegistrationPublishesTheNewestTrunkListAndJudgesEveryModuleAgainstIt
./cmd/mesh-controller --- NOT RUN: TestADeclarationIsTheSameAfterPlacementMoves
./cmd/mesh-controller --- NOT RUN: TestAReleaseSendsTheRestAtOnceAfterTheFirstPasses
./cmd/mesh-controller --- NOT RUN: TestARestMachineThatFailsIsPutBackAloneAndTheOthersAreJudgedOn
./cmd/mesh-controller --- NOT RUN: TestAWalkTakesOverTheReadingsOfAGateJudgingTheSameBuildThere
./cmd/mesh-controller --- NOT RUN: TestAFirstSendMadeAndNotKeptIsNotSentAgain
./cmd/mesh-controller --- NOT RUN: TestAReleaseSendKeptAndMadeIsNotMadeAgain
./cmd/mesh-controller --- NOT RUN: TestAFirstMachineThatFailsStillStopsTheWalk
./cmd/mesh-controller --- NOT RUN: TestTheControlNodeIsSentLastInAStep
./cmd/mesh-controller --- NOT RUN: TestARestMachineSilentPastItsBoundIsLeftAndSaid
./cmd/mesh-controller --- PASS: TestANoMoveTierWaitsForNoNewReport (0.92s)
./cmd/mesh-controller --- NOT RUN: TestOneProviderDownAndThreeConsumersFailingAreOneCondition
./cmd/mesh-controller --- NOT RUN: TestAConsumerFailingBesideAHealthyProviderIsItsOwn
./cmd/mesh-controller --- NOT RUN: TestTheProvisionerClientsAccountIsIssuedForItsServiceAndNeverInvented
./cmd/mesh-controller --- NOT RUN: TestAcceptOfAnOwnSecretTakesThePathOfItsModulesForm
./cmd/mesh-controller --- NOT RUN: TestAcceptForAProviderTakesThePathOfTheProvidersModule
./cmd/mesh-controller --- NOT RUN: TestAcceptForAMovedTrustedModuleAnnouncesBeforeTheVaultIsAsked
./cmd/mesh-controller --- NOT RUN: TestAcceptForAMovedModuleRecordsAHandActAndNeverTheValue
./cmd/mesh-controller --- NOT RUN: TestAcceptOfAnOutsideOfferTakesThePathOfTheProvidersModule
./cmd/mesh-controller --- NOT RUN: TestAnAskAtTheDeskTakesThePathOfItsModulesForm
./cmd/mesh-controller --- NOT RUN: TestAnIssuedValueTakesThePathOfItsProvidersModule
./cmd/mesh-controller --- NOT RUN: TestARotationTakesThePathOfItsModulesForm
./cmd/mesh-controller --- NOT RUN: TestADeclarationIsTheSameWhileTheWordsAreStillInTheLayers
./cmd/mesh-controller --- NOT RUN: TestADeclarationIsTheSameAfterTheMoveOfPlacement
./cmd/mesh-controller --- NOT RUN: TestTheSendSealsNoSecretOfAModuleHandedThere
./cmd/mesh-controller --- NOT RUN: TestAModulesSecretsAreTheVaultsOnceItIsMarkedMoved
./cmd/mesh-controller --- PASS: TestEveryMachineIsToldTheSameAfterTheMoveOfConfig (302.55s)
./cmd/mesh-controller --- PASS: TestTheMoveOfConfigRefusesWhatWouldChangeAMachine (104.31s)
./cmd/mesh-controller --- PASS: TestTheSettingsVerbForwardsToConfigOnceTheValuesMoved (151.32s)
./cmd/mesh-controller --- PASS: TestTheSendCarriesTheVaultsBoxForACoreCredentialAndKeepsIt (1.09s)
./cmd/mesh-controller --- PASS: TestASilentVaultHoldsTheKeptBoxAndSaysSo (1.12s)
./cmd/mesh-controller --- PASS: TestACoreModuleFirstPlacedWhileTheVaultIsSilentIsSealedByTheController (1.13s)
./cmd/mesh-controller --- PASS: TestAnEngineBelowTheContractIsSentTheControllersSealAsBefore (1.09s)
./cmd/mesh-controller --- PASS: TestModuleIssueHandsACoveredAccountToTheVaultAndOnlyThat (0.86s)
./cmd/mesh-controller --- PASS: TestModuleIssueFailsWhenTheVaultDoesNotTakeACoveredAccount (0.70s)
./cmd/mesh-controller --- PASS: TestModuleIssueBeforeTheVaultIsInstalledKeepsTheValueAndHandsNothing (0.79s)
./cmd/mesh-controller --- NOT RUN: TestARecordedModulesBundleOnlyMoveRollsOutInItsWalk
./cmd/mesh-controller --- NOT RUN: TestARecordedModulesMoveThatRecreatesAContainerWaits
./cmd/mesh-controller --- NOT RUN: TestARecordedModulesMoveThatTouchesDataOrAProviderWaits
./cmd/mesh-controller --- NOT RUN: TestAPersonsRecordAndTheBusHoldEveryMove
./cmd/mesh-controller --- NOT RUN: TestARecordedMoveThatCannotBeJudgedWaits
./cmd/mesh-controller --- NOT RUN: TestReplay867
./cmd/mesh-controller --- NOT RUN: TestReplay867Recheck
./cmd/mesh-controller --- NOT RUN: TestTheRecheckVerbAsksMeshDeliveryOnABusOfItsOwn
./cmd/mesh-controller --- NOT RUN: TestAssigningTheClientIssuesItsAccount
./cmd/mesh-controller --- PASS: TestAnUnrelatedBatchWalksBesideAnOpenWalk (0.21s)
./cmd/mesh-controller --- PASS: TestARelatedBatchWaitsBehindTheOpenWalk (0.24s)
./cmd/mesh-controller --- PASS: TestAnOwnPathBatchNeverWalksBeside (0.30s)
./cmd/mesh-controller --- NOT RUN: TestMergesHeardWhileAnotherHolderHasThePlansAreRecordedAndCarried
./cmd/mesh-controller --- NOT RUN: TestABatchWindowClosesByTheExpiryOfItsKey
./cmd/mesh-controller --- NOT RUN: TestEveryMoveAMergeAndTheCutMakeOfAPlanIsSaid
./cmd/mesh-controller --- NOT RUN: TestARolloutAdvancesOnEventsAndAReplacedControllerResumesIt
./cmd/mesh-controller --- NOT RUN: TestAWalkLetGoByTheDeliverVerbIsAskedWithNoOtherEvent
./cmd/mesh-controller --- PASS: TestTwoMergesWithinAMinuteLeaveEachOpenPullRequestOneQueuedCheck (2.93s)
./cmd/mesh-controller --- NOT RUN: TestADeliveryGroupMovingAModuleMachinesRunPassesTheGate
./cmd/mesh-controller --- PASS: TestAModuleMovesOnTheOperatorsApproveOfTheMergeThatMovedIt (4.55s)
./cmd/mesh-controller --- NOT RUN: TestAModuleBuiltFromANewRepositoryIsRegisteredOnlyOnTheOperatorsApproveOnTheBus
./cmd/mesh-controller --- NOT RUN: TestAMergeWhosePlanCannotBeSavedIsHeldAndRecordedWhenHandedOverAgain
./cmd/mesh-controller --- PASS: TestOneReadOfAnAssignmentNamesItsCommitBuildAndRolloutAndOneReadOfTheRolloutListsItsAssignments (1.91s)
./cmd/mesh-controller --- PASS: TestASendOfWhatAMachineRunsAlreadyChangesNoLinkOfItsAssignment (1.22s)
./cmd/mesh-controller --- PASS: TestAnAssignmentWaitingForItsBuildIsOneKeyOfTheAssignmentsBucket (1.75s)
./cmd/mesh-controller --- PASS: TestNoTableOfTheControllersStoreHoldsBuildsRolloutsOrAssignments (1.74s)
./cmd/mesh-controller --- NOT RUN: TestAComposedDeclarationCarriesModulesAndBuildsOnlyForANodeThatReadsThem
./cmd/mesh-controller --- NOT RUN: TestAPlanPassesATierWhoseMachineNeverReportsAfterTheBoundAndSendsTheNextToTheOthers
./cmd/mesh-controller --- PASS: TestAMergeOnTheApproveIntoANewRepositoryAsksTheFirstBuildAndItsOutcomeRegistersTheModule (5.21s)
./cmd/mesh-controller --- PASS: TestTheApprovedFirstBuildPassesTheGuardOfAVerbAndIsQueued (1.65s)
./cmd/mesh-controller --- PASS: TestAPlanGoesOnWithoutAMachineAwayWhenItsTierIsSent (1.47s)
./cmd/mesh-controller FAIL: go test exited 1
./internal/inventory --- PASS: TestTheLastSendSaysWhatTheMachineAnswered (0.10s)
./internal/inventory --- PASS: TestAReportIsTheLastSendsAnswerOnlyWhenItIsAboutThatSend (0.09s)
./internal/inventory --- PASS: TestAnIssuedValueIsSealedToEveryHolderOnceAndNotAgain (0.73s)
./internal/inventory --- PASS: TestAnIssuedValueIsSealedAgainAfterAKeyChangeOrAnAcceptance (0.57s)
./internal/inventory --- PASS: TestAConditionsLooksAreKeptBesideTheBucket (0.51s)
./internal/inventory --- PASS: TestAPlanIdHoldingAQuoteIsReadAsAPlainId (0.31s)
./internal/inventory --- PASS: TestAWalksStartIsKeptAndARefusedSaveLeavesItUnsaid (0.10s)
./internal/inventory --- PASS: TestAWalksRestIsReadFromEachMachinesOwnSend (0.10s)
./internal/inventory --- PASS: TestAStoredBuildWithASilentMergeableFileIsStillReadAndComposed (0.09s)
./internal/inventory --- PASS: TestACredentialIssuedOutsideIsNeverMade (0.54s)
./internal/inventory --- PASS: TestOneAcceptForAProviderIsSealedToEveryConsumer (0.62s)
./internal/inventory --- PASS: TestASharedOwnSecretIssuedOutsideIsNeverMade (0.53s)
./internal/inventory --- PASS: TestAModuleInTheConfigFormIsMirroredWithItsWholeDeclaration (0.15s)
./internal/inventory --- PASS: TestAReportOfABusyContainerIsKeptAndReadBack (0.14s)
./internal/inventory --- PASS: TestANewerBuildsListReplacesTheKeptOneAndAnOlderOneHeardLaterDoesNot (0.19s)
./internal/inventory --- PASS: TestPlacementMovesOutOfTheSettingsLayers (2.65s)
./internal/inventory --- PASS: TestASettingRoutesPlacementBesideTheLayer (0.65s)
./internal/inventory --- PASS: TestTheProvisionerClientsMachineHasAnAccountOfItsOwn (0.23s)
./internal/inventory --- PASS: TestTheFourWordsAreKeptBesideTheLayer (0.52s)
./internal/inventory --- PASS: TestALayerStillHoldingTheWordsReadsThemAsPlacement (0.58s)
./internal/inventory --- PASS: TestTheMoveOfPlacementMovesWhatTheLayersStillHold (0.46s)
./internal/inventory --- PASS: TestTheMoveReadsEveryRowSealedToAMachineAsItIs (0.12s)
./internal/inventory --- PASS: TestASendKeepsThePlansItHandedAndTheMirrorCarriesThem (0.10s)
./internal/inventory --- PASS: TestTheLayersAreReadUntilTheMoveOfConfigHasRun (0.16s)
./internal/inventory --- PASS: TestAModuleReadsMeshConfigOnlyWhereItsValuesAre (0.17s)
./internal/inventory --- PASS: TestTheEndOfTheMoveRefusesALayerChangedSinceItWasRead (0.56s)
./internal/inventory --- PASS: TestACoreCredentialsVaultBoxIsKeptPerMachineAndReplaced (0.50s)
./internal/inventory --- PASS: TestWhatRunsIsTheRegisteredBuildNotANewerOnePutBack (0.11s)
./internal/inventory --- PASS: TestBuildsOnTheBusAreReadBackByEveryReader (0.09s)
./internal/inventory --- PASS: TestARequestIsTheBuildInStateAskedAndItsOutcomeTakesItsPlace (0.14s)
./internal/inventory --- PASS: TestAnAssignmentIsAKeyOfTheBucketAndAnUnassignmentEndsIt (0.18s)
./internal/inventory --- PASS: TestThePlansAreKeptInTheAssignmentsValuesAndNothingElseOfThemMoves (0.13s)
./internal/inventory --- PASS: TestAPendingAssignmentIsAKeyOfTheAssignmentsBucket (0.09s)
./internal/inventory --- PASS: TestARecordedPendingIsSkippedByAssignedAndTheJoins (0.10s)
./internal/inventory --- PASS: TestTwoClaimsOfOnePendingMakeOneAndTheOtherSeesFalse (0.08s)
./internal/inventory --- PASS: TestAssignOverAPendingKeepsItsRecordAsApplied (0.08s)
./internal/inventory --- PASS: TestAPendingIsMarkedOnceAndGoesWithItsMachine (0.10s)
./internal/inventory --- PASS: TestAReplacedWaitNeverLeavesTheOperatorWithoutItsCondition (0.08s)
./internal/inventory --- PASS: TestSentBuildsAnswersFromTheAssignmentsKeysOfTheNode (0.09s)
./internal/inventory --- PASS: TestASendReplacesTheWholeMapOfTheNodeAndAHandSendMakesItUnknown (0.08s)
./internal/inventory --- PASS: TestAFailedWriteOfTheLinksFailsTheRecordOfTheSend (0.08s)
./internal/inventory --- PASS: TestMigration0105RefusesAStoreWhoseRowsWereNotMovedAndDropsTheTablesOfAMovedOne (0.77s)
./internal/inventory --- PASS: TestMigration0105PassesAStoreThatNeverHeldARow (0.14s)
./internal/inventory --- PASS: TestTheColumnOfASentMachineIsCopiedOntoItsKeysAndEmptied (0.10s)
./internal/inventory --- PASS: TestASendEmptiesTheColumnSoALaterCopyLeavesAClearedKeyBare (0.08s)
./internal/inventory --- PASS: TestWhetherAMachineReadsModulesIsItsLatestWord (0.08s)
./internal/inventory --- PASS: TestARefusedRegistrationIsKeptByItsBuild (0.13s)
./internal/recordmirror --- PASS: TestNatsAnAssignmentAndARegistrationEachChangeOneKeyAndRaiseOneEvent (4.34s)
./internal/recordmirror --- PASS: TestNatsTheListOfPredefinedKeysKeptChangesTheMirrorsOneKey (1.81s)
82 store test(s) listed in testdata/store-tests did not run and pass against the store
--- what failed, picked from the whole of its output (the whole is in the build's log)
--- FAIL: TestAMergeWaitsForItsDeliverysWordAndThePersonsWordWorksWithoutIt (0.58s)
delivery_integration_test.go:125: a person's word did not start the walk: &{Order:[] Awaits:mesh-delivery Go:2026-10-21 19:38:54.519468585 +0000 UTC By:a person (the mesh) Why:mesh-delivery is down Stopped: StoppedWhy: Merges:[{Repository:novox/mesh-catalog Commit:c4dddddddd Carried: Number:0 Title: Moves:[app] Head: Merged:2026-10-21 19:38:54.490722414 +0000 UTC Heard:2026-10-21 19:38:54.490722414 +0000 UTC}] TakenOverBy: WalkedAgainBy: LeftOut:[] Kept:[] Withheld:[] Unchanged:map[] Batch:<nil> Alone:false}, asked [novox/mesh-catalog#build-1792611534289877257 novox/mesh-catalog#build-1792611534408063942 novox/mesh-catalog#build-1792611534477581999], state "building", tier 0, note "let go by a person (the mesh); its first tier is asked next"
FAIL github.com/novox/mesh-controller/cmd/mesh-controller 603s (shard 8 of 8: 166 tests)
**Merge check** at `696300b9`
Judged: head `696300b9e280` merged into trunk `f973cefd7fd3`; read beside it: mesh-catalog `379317589488`, mesh-controller-main `f973cefd7fd3`, mesh-host `c231d1031fc7`, 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`: **FAIL** — its merge-check.sh failed: --- FAIL: TestAMergeWaitsForItsDeliverysWordAndThePersonsWordWorksWithoutIt (0.58s)
**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-builder/busy_test.go, internal/link/admit_test.go
Run by the build seat on g14 as `build-1792609509812704199` (`builds --log build-1792609509812704199`).
```
build-1: a try of at c0ffee, read with `try --id`: said to nobody, nothing taken in
build-2: a try of at , read with `try --id`: said to nobody, nothing taken in
build-3: a try of at , read with `try --id`: said to nobody, nothing taken in
build-4: novox/a#7 at checked on a machine that did not say which: gate PASS — ; repository none
tv-api from tv on anchor is given, sealed to requests on laptop and to anchor
the mesh cannot read it back, never makes one of its own for it, and will not rotate it
the vault now holds accept/<nil> (generation 1), accepted: sealed at this terminal to the vault's key for this call, opened in the vault alone and never remade by it; its machine takes it from the vault
this act by hand could NOT be recorded in the hand-act log, and is done anyway: the hand-act log mesh-controller_hand-acts is not on the bus — the controller asserts it at its start, so one older than this has not: nats: bucket not found
plan-308-stop stopped at tier 0 of 1; what was asked still builds and registers, nothing further is asked
this act by hand could NOT be recorded in the hand-act log, and is done anyway: the hand-act log mesh-controller_hand-acts is not on the bus — the controller asserts it at its start, so one older than this has not: nats: bucket not found
plan-308-close closed at tier 0 of 1; what was asked still builds and registers, nothing further is asked
FAIL
FAIL github.com/novox/mesh-controller/cmd/mesh-controller 603s (shard 8 of 8: 166 tests)
ok github.com/novox/mesh-controller/internal/inventory 80s (shard 1 of 4: 92 tests)
ok github.com/novox/mesh-controller/internal/inventory 77s (shard 2 of 4: 92 tests)
ok github.com/novox/mesh-controller/internal/inventory 85s (shard 3 of 4: 92 tests)
ok github.com/novox/mesh-controller/internal/inventory 76s (shard 4 of 4: 92 tests)
ok github.com/novox/mesh-controller/internal/builder 98s (shard 1 of 4: 58 tests)
ok github.com/novox/mesh-controller/internal/builder 72s (shard 2 of 4: 58 tests)
ok github.com/novox/mesh-controller/internal/builder 117s (shard 3 of 4: 58 tests)
ok github.com/novox/mesh-controller/internal/builder 82s (shard 4 of 4: 57 tests)
ok github.com/novox/mesh-controller/internal/link 52s (shard 1 of 4: 55 tests)
ok github.com/novox/mesh-controller/internal/link 52s (shard 2 of 4: 55 tests)
ok github.com/novox/mesh-controller/internal/link 35s (shard 3 of 4: 54 tests)
ok github.com/novox/mesh-controller/internal/link 65s (shard 4 of 4: 54 tests)
integration level (the whole suite, tag integration): 2715 tests (3 skipped outside the shards), 894 s
nested module modules/build-agent:
ok build-agent 1.013s
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.71s)
./cmd/mesh-controller --- PASS: TestAStopWithoutAMergeEndsTheMergesThatContainIt (0.82s)
./cmd/mesh-controller --- PASS: TestAStopWalksTheOthersAgainInTheOpenBatch (0.85s)
./cmd/mesh-controller --- PASS: TestAStopNamesWhatStaysOnTheMachinesAndWhatStillCarriesIt (0.64s)
./cmd/mesh-controller --- PASS: TestAStopWithoutAMergeLeavesItOutOfABatch (0.66s)
./cmd/mesh-controller --- PASS: TestSavingPlansAndMovingMergesIsOneAct (0.52s)
./cmd/mesh-controller --- NOT RUN: TestAPlanFollowedFromTheStoreAnswersWhenItMoves
./cmd/mesh-controller --- NOT RUN: TestIssue969TheGateRaisesEachMachineAsItsEngineStatedItself
./cmd/mesh-controller --- PASS: TestNodeShowAndStatusReadTheLastSendFromTheStore (0.64s)
./cmd/mesh-controller --- PASS: TestTheConditionsVerbReadsTheLooksTheBucketNoLongerHolds (0.46s)
./cmd/mesh-controller --- NOT RUN: TestAWalkLetGoAndStoppedByVerbsIsSaidStartedAndEnded
./cmd/mesh-controller --- NOT RUN: TestAWalkStoppedOrClosedByAPersonIsSaidEndedStopped
./cmd/mesh-controller --- NOT RUN: TestAWalkRetriedByAPersonIsSaidStartedAgain
./cmd/mesh-controller --- NOT RUN: TestABacklogReleasedByAPersonIsSaidStarted
./cmd/mesh-controller --- NOT RUN: TestAWalkEndedByCancelOrClearIsSaidEnded
./cmd/mesh-controller --- NOT RUN: TestAWalkRestartedByARebuildIsSaidStarted
./cmd/mesh-controller --- NOT RUN: TestAWalkStoppedByHandAndRetriedEndsFailedWhenItFailsAgain
./cmd/mesh-controller --- NOT RUN: TestReplay237
./cmd/mesh-controller --- NOT RUN: TestAnUnassignThatLeavesItsNodeUnresolvedSaysSoOnceInItsAnswer
./cmd/mesh-controller --- NOT RUN: TestAnUnassignThatLeavesItsNodeResolvedSaysNothingOfIt
./cmd/mesh-controller --- NOT RUN: TestAnAssignThatLeavesItsNodeUnresolvedSaysOnlyThePlansRefusal
./cmd/mesh-controller --- NOT RUN: TestADirectoryOwnersKeyIsRefusedThroughAVerb
./cmd/mesh-controller --- NOT RUN: TestTheSendMakesNoValueForAnOutsideSecretNobodyGave
./cmd/mesh-controller --- NOT RUN: TestAQuestionComposesWithoutAnOutsideSecretNobodyGave
./cmd/mesh-controller --- PASS: TestReplay201 (0.49s)
./cmd/mesh-controller --- PASS: TestARollbackWhoseSendWasRefusedIsCompletedByTheNextSend (0.50s)
./cmd/mesh-controller --- PASS: TestAGateJudgesTheOtherMovesBesideAKeptCore (0.53s)
./cmd/mesh-controller --- NOT RUN: TestReplay401
./cmd/mesh-controller --- NOT RUN: TestReplay201ThePlansSend
./cmd/mesh-controller --- NOT RUN: TestPlanAndNodeListAnOptionalRequirementLeftUnbound
./cmd/mesh-controller --- NOT RUN: TestReplay340
./cmd/mesh-controller --- NOT RUN: TestOnlyATrustedFilesNamedKeyIsRefusedThroughAVerb
./cmd/mesh-controller --- NOT RUN: TestReplay349
./cmd/mesh-controller --- NOT RUN: TestReplay348AFaultFromBeforeTheSendFailsNoGate
./cmd/mesh-controller --- NOT RUN: TestReplay239AModuleNameIsNotTakenOverByAnotherRepository
./cmd/mesh-controller --- PASS: TestAWalkThatMovedNothingSaysWhichModulesMatchedWhatRuns (0.70s)
./cmd/mesh-controller --- NOT RUN: TestAWalkWhoseEveryBuildCameOutTheSameIsDone
./cmd/mesh-controller --- NOT RUN: TestReplay614ANewSDKPlansTheToolchainAndThenItsBundles
./cmd/mesh-controller --- NOT RUN: TestOneAcceptForAProviderIsPlacedForEveryConsumer
./cmd/mesh-controller --- NOT RUN: TestReplay164
./cmd/mesh-controller --- NOT RUN: TestAnApprovedLayerOpensTheWalkThatSendsIt
./cmd/mesh-controller --- NOT RUN: TestASettingsWalkSendsOneMachineAtATimeEachJudged
./cmd/mesh-controller --- NOT RUN: TestAFailedSettingsWalkStopsAndHoldsNothingBack
./cmd/mesh-controller --- NOT RUN: TestASettingsWalkSendsTheLayerAloneEveryBuildKept
./cmd/mesh-controller --- NOT RUN: TestASettingsWalkStopsBeforeADataMoveAndPassesOverAMachineAway
./cmd/mesh-controller --- NOT RUN: TestACrossingSendSupersedesASettingsGate
./cmd/mesh-controller --- NOT RUN: TestASettingsWalkFailsOnARefusalThatCannotClear
./cmd/mesh-controller --- NOT RUN: TestAProviderElsewhereServesItsOwnComposedName
./cmd/mesh-controller --- PASS: TestAReusedCheckBuildIsRegisteredByItsDigestAndGatedAsABuiltOne (2.31s)
./cmd/mesh-controller --- NOT RUN: TestTheMergeGateJudgesEachManifestAgainstTheListOfTheTree
./cmd/mesh-controller --- NOT RUN: TestRegistrationPublishesTheNewestTrunkListAndJudgesEveryModuleAgainstIt
./cmd/mesh-controller --- NOT RUN: TestADeclarationIsTheSameAfterPlacementMoves
./cmd/mesh-controller --- NOT RUN: TestAReleaseSendsTheRestAtOnceAfterTheFirstPasses
./cmd/mesh-controller --- NOT RUN: TestARestMachineThatFailsIsPutBackAloneAndTheOthersAreJudgedOn
./cmd/mesh-controller --- NOT RUN: TestAWalkTakesOverTheReadingsOfAGateJudgingTheSameBuildThere
./cmd/mesh-controller --- NOT RUN: TestAFirstSendMadeAndNotKeptIsNotSentAgain
./cmd/mesh-controller --- NOT RUN: TestAReleaseSendKeptAndMadeIsNotMadeAgain
./cmd/mesh-controller --- NOT RUN: TestAFirstMachineThatFailsStillStopsTheWalk
./cmd/mesh-controller --- NOT RUN: TestTheControlNodeIsSentLastInAStep
./cmd/mesh-controller --- NOT RUN: TestARestMachineSilentPastItsBoundIsLeftAndSaid
./cmd/mesh-controller --- PASS: TestANoMoveTierWaitsForNoNewReport (0.92s)
./cmd/mesh-controller --- NOT RUN: TestOneProviderDownAndThreeConsumersFailingAreOneCondition
./cmd/mesh-controller --- NOT RUN: TestAConsumerFailingBesideAHealthyProviderIsItsOwn
./cmd/mesh-controller --- NOT RUN: TestTheProvisionerClientsAccountIsIssuedForItsServiceAndNeverInvented
./cmd/mesh-controller --- NOT RUN: TestAcceptOfAnOwnSecretTakesThePathOfItsModulesForm
./cmd/mesh-controller --- NOT RUN: TestAcceptForAProviderTakesThePathOfTheProvidersModule
./cmd/mesh-controller --- NOT RUN: TestAcceptForAMovedTrustedModuleAnnouncesBeforeTheVaultIsAsked
./cmd/mesh-controller --- NOT RUN: TestAcceptForAMovedModuleRecordsAHandActAndNeverTheValue
./cmd/mesh-controller --- NOT RUN: TestAcceptOfAnOutsideOfferTakesThePathOfTheProvidersModule
./cmd/mesh-controller --- NOT RUN: TestAnAskAtTheDeskTakesThePathOfItsModulesForm
./cmd/mesh-controller --- NOT RUN: TestAnIssuedValueTakesThePathOfItsProvidersModule
./cmd/mesh-controller --- NOT RUN: TestARotationTakesThePathOfItsModulesForm
./cmd/mesh-controller --- NOT RUN: TestADeclarationIsTheSameWhileTheWordsAreStillInTheLayers
./cmd/mesh-controller --- NOT RUN: TestADeclarationIsTheSameAfterTheMoveOfPlacement
./cmd/mesh-controller --- NOT RUN: TestTheSendSealsNoSecretOfAModuleHandedThere
./cmd/mesh-controller --- NOT RUN: TestAModulesSecretsAreTheVaultsOnceItIsMarkedMoved
./cmd/mesh-controller --- PASS: TestEveryMachineIsToldTheSameAfterTheMoveOfConfig (302.55s)
./cmd/mesh-controller --- PASS: TestTheMoveOfConfigRefusesWhatWouldChangeAMachine (104.31s)
./cmd/mesh-controller --- PASS: TestTheSettingsVerbForwardsToConfigOnceTheValuesMoved (151.32s)
./cmd/mesh-controller --- PASS: TestTheSendCarriesTheVaultsBoxForACoreCredentialAndKeepsIt (1.09s)
./cmd/mesh-controller --- PASS: TestASilentVaultHoldsTheKeptBoxAndSaysSo (1.12s)
./cmd/mesh-controller --- PASS: TestACoreModuleFirstPlacedWhileTheVaultIsSilentIsSealedByTheController (1.13s)
./cmd/mesh-controller --- PASS: TestAnEngineBelowTheContractIsSentTheControllersSealAsBefore (1.09s)
./cmd/mesh-controller --- PASS: TestModuleIssueHandsACoveredAccountToTheVaultAndOnlyThat (0.86s)
./cmd/mesh-controller --- PASS: TestModuleIssueFailsWhenTheVaultDoesNotTakeACoveredAccount (0.70s)
./cmd/mesh-controller --- PASS: TestModuleIssueBeforeTheVaultIsInstalledKeepsTheValueAndHandsNothing (0.79s)
./cmd/mesh-controller --- NOT RUN: TestARecordedModulesBundleOnlyMoveRollsOutInItsWalk
./cmd/mesh-controller --- NOT RUN: TestARecordedModulesMoveThatRecreatesAContainerWaits
./cmd/mesh-controller --- NOT RUN: TestARecordedModulesMoveThatTouchesDataOrAProviderWaits
./cmd/mesh-controller --- NOT RUN: TestAPersonsRecordAndTheBusHoldEveryMove
./cmd/mesh-controller --- NOT RUN: TestARecordedMoveThatCannotBeJudgedWaits
./cmd/mesh-controller --- NOT RUN: TestReplay867
./cmd/mesh-controller --- NOT RUN: TestReplay867Recheck
./cmd/mesh-controller --- NOT RUN: TestTheRecheckVerbAsksMeshDeliveryOnABusOfItsOwn
./cmd/mesh-controller --- NOT RUN: TestAssigningTheClientIssuesItsAccount
./cmd/mesh-controller --- PASS: TestAnUnrelatedBatchWalksBesideAnOpenWalk (0.21s)
./cmd/mesh-controller --- PASS: TestARelatedBatchWaitsBehindTheOpenWalk (0.24s)
./cmd/mesh-controller --- PASS: TestAnOwnPathBatchNeverWalksBeside (0.30s)
./cmd/mesh-controller --- NOT RUN: TestMergesHeardWhileAnotherHolderHasThePlansAreRecordedAndCarried
./cmd/mesh-controller --- NOT RUN: TestABatchWindowClosesByTheExpiryOfItsKey
./cmd/mesh-controller --- NOT RUN: TestEveryMoveAMergeAndTheCutMakeOfAPlanIsSaid
./cmd/mesh-controller --- NOT RUN: TestARolloutAdvancesOnEventsAndAReplacedControllerResumesIt
./cmd/mesh-controller --- NOT RUN: TestAWalkLetGoByTheDeliverVerbIsAskedWithNoOtherEvent
./cmd/mesh-controller --- PASS: TestTwoMergesWithinAMinuteLeaveEachOpenPullRequestOneQueuedCheck (2.93s)
./cmd/mesh-controller --- NOT RUN: TestADeliveryGroupMovingAModuleMachinesRunPassesTheGate
./cmd/mesh-controller --- PASS: TestAModuleMovesOnTheOperatorsApproveOfTheMergeThatMovedIt (4.55s)
./cmd/mesh-controller --- NOT RUN: TestAModuleBuiltFromANewRepositoryIsRegisteredOnlyOnTheOperatorsApproveOnTheBus
./cmd/mesh-controller --- NOT RUN: TestAMergeWhosePlanCannotBeSavedIsHeldAndRecordedWhenHandedOverAgain
./cmd/mesh-controller --- PASS: TestOneReadOfAnAssignmentNamesItsCommitBuildAndRolloutAndOneReadOfTheRolloutListsItsAssignments (1.91s)
./cmd/mesh-controller --- PASS: TestASendOfWhatAMachineRunsAlreadyChangesNoLinkOfItsAssignment (1.22s)
./cmd/mesh-controller --- PASS: TestAnAssignmentWaitingForItsBuildIsOneKeyOfTheAssignmentsBucket (1.75s)
./cmd/mesh-controller --- PASS: TestNoTableOfTheControllersStoreHoldsBuildsRolloutsOrAssignments (1.74s)
./cmd/mesh-controller --- NOT RUN: TestAComposedDeclarationCarriesModulesAndBuildsOnlyForANodeThatReadsThem
./cmd/mesh-controller --- NOT RUN: TestAPlanPassesATierWhoseMachineNeverReportsAfterTheBoundAndSendsTheNextToTheOthers
./cmd/mesh-controller --- PASS: TestAMergeOnTheApproveIntoANewRepositoryAsksTheFirstBuildAndItsOutcomeRegistersTheModule (5.21s)
./cmd/mesh-controller --- PASS: TestTheApprovedFirstBuildPassesTheGuardOfAVerbAndIsQueued (1.65s)
./cmd/mesh-controller --- PASS: TestAPlanGoesOnWithoutAMachineAwayWhenItsTierIsSent (1.47s)
./cmd/mesh-controller FAIL: go test exited 1
./internal/inventory --- PASS: TestTheLastSendSaysWhatTheMachineAnswered (0.10s)
./internal/inventory --- PASS: TestAReportIsTheLastSendsAnswerOnlyWhenItIsAboutThatSend (0.09s)
./internal/inventory --- PASS: TestAnIssuedValueIsSealedToEveryHolderOnceAndNotAgain (0.73s)
./internal/inventory --- PASS: TestAnIssuedValueIsSealedAgainAfterAKeyChangeOrAnAcceptance (0.57s)
./internal/inventory --- PASS: TestAConditionsLooksAreKeptBesideTheBucket (0.51s)
./internal/inventory --- PASS: TestAPlanIdHoldingAQuoteIsReadAsAPlainId (0.31s)
./internal/inventory --- PASS: TestAWalksStartIsKeptAndARefusedSaveLeavesItUnsaid (0.10s)
./internal/inventory --- PASS: TestAWalksRestIsReadFromEachMachinesOwnSend (0.10s)
./internal/inventory --- PASS: TestAStoredBuildWithASilentMergeableFileIsStillReadAndComposed (0.09s)
./internal/inventory --- PASS: TestACredentialIssuedOutsideIsNeverMade (0.54s)
./internal/inventory --- PASS: TestOneAcceptForAProviderIsSealedToEveryConsumer (0.62s)
./internal/inventory --- PASS: TestASharedOwnSecretIssuedOutsideIsNeverMade (0.53s)
./internal/inventory --- PASS: TestAModuleInTheConfigFormIsMirroredWithItsWholeDeclaration (0.15s)
./internal/inventory --- PASS: TestAReportOfABusyContainerIsKeptAndReadBack (0.14s)
./internal/inventory --- PASS: TestANewerBuildsListReplacesTheKeptOneAndAnOlderOneHeardLaterDoesNot (0.19s)
./internal/inventory --- PASS: TestPlacementMovesOutOfTheSettingsLayers (2.65s)
./internal/inventory --- PASS: TestASettingRoutesPlacementBesideTheLayer (0.65s)
./internal/inventory --- PASS: TestTheProvisionerClientsMachineHasAnAccountOfItsOwn (0.23s)
./internal/inventory --- PASS: TestTheFourWordsAreKeptBesideTheLayer (0.52s)
./internal/inventory --- PASS: TestALayerStillHoldingTheWordsReadsThemAsPlacement (0.58s)
./internal/inventory --- PASS: TestTheMoveOfPlacementMovesWhatTheLayersStillHold (0.46s)
./internal/inventory --- PASS: TestTheMoveReadsEveryRowSealedToAMachineAsItIs (0.12s)
./internal/inventory --- PASS: TestASendKeepsThePlansItHandedAndTheMirrorCarriesThem (0.10s)
./internal/inventory --- PASS: TestTheLayersAreReadUntilTheMoveOfConfigHasRun (0.16s)
./internal/inventory --- PASS: TestAModuleReadsMeshConfigOnlyWhereItsValuesAre (0.17s)
./internal/inventory --- PASS: TestTheEndOfTheMoveRefusesALayerChangedSinceItWasRead (0.56s)
./internal/inventory --- PASS: TestACoreCredentialsVaultBoxIsKeptPerMachineAndReplaced (0.50s)
./internal/inventory --- PASS: TestWhatRunsIsTheRegisteredBuildNotANewerOnePutBack (0.11s)
./internal/inventory --- PASS: TestBuildsOnTheBusAreReadBackByEveryReader (0.09s)
./internal/inventory --- PASS: TestARequestIsTheBuildInStateAskedAndItsOutcomeTakesItsPlace (0.14s)
./internal/inventory --- PASS: TestAnAssignmentIsAKeyOfTheBucketAndAnUnassignmentEndsIt (0.18s)
./internal/inventory --- PASS: TestThePlansAreKeptInTheAssignmentsValuesAndNothingElseOfThemMoves (0.13s)
./internal/inventory --- PASS: TestAPendingAssignmentIsAKeyOfTheAssignmentsBucket (0.09s)
./internal/inventory --- PASS: TestARecordedPendingIsSkippedByAssignedAndTheJoins (0.10s)
./internal/inventory --- PASS: TestTwoClaimsOfOnePendingMakeOneAndTheOtherSeesFalse (0.08s)
./internal/inventory --- PASS: TestAssignOverAPendingKeepsItsRecordAsApplied (0.08s)
./internal/inventory --- PASS: TestAPendingIsMarkedOnceAndGoesWithItsMachine (0.10s)
./internal/inventory --- PASS: TestAReplacedWaitNeverLeavesTheOperatorWithoutItsCondition (0.08s)
./internal/inventory --- PASS: TestSentBuildsAnswersFromTheAssignmentsKeysOfTheNode (0.09s)
./internal/inventory --- PASS: TestASendReplacesTheWholeMapOfTheNodeAndAHandSendMakesItUnknown (0.08s)
./internal/inventory --- PASS: TestAFailedWriteOfTheLinksFailsTheRecordOfTheSend (0.08s)
./internal/inventory --- PASS: TestMigration0105RefusesAStoreWhoseRowsWereNotMovedAndDropsTheTablesOfAMovedOne (0.77s)
./internal/inventory --- PASS: TestMigration0105PassesAStoreThatNeverHeldARow (0.14s)
./internal/inventory --- PASS: TestTheColumnOfASentMachineIsCopiedOntoItsKeysAndEmptied (0.10s)
./internal/inventory --- PASS: TestASendEmptiesTheColumnSoALaterCopyLeavesAClearedKeyBare (0.08s)
./internal/inventory --- PASS: TestWhetherAMachineReadsModulesIsItsLatestWord (0.08s)
./internal/inventory --- PASS: TestARefusedRegistrationIsKeptByItsBuild (0.13s)
./internal/recordmirror --- PASS: TestNatsAnAssignmentAndARegistrationEachChangeOneKeyAndRaiseOneEvent (4.34s)
./internal/recordmirror --- PASS: TestNatsTheListOfPredefinedKeysKeptChangesTheMirrorsOneKey (1.81s)
82 store test(s) listed in testdata/store-tests did not run and pass against the store
--- what failed, picked from the whole of its output (the whole is in the build's log)
--- FAIL: TestAMergeWaitsForItsDeliverysWordAndThePersonsWordWorksWithoutIt (0.58s)
delivery_integration_test.go:125: a person's word did not start the walk: &{Order:[] Awaits:mesh-delivery Go:2026-10-21 19:38:54.519468585 +0000 UTC By:a person (the mesh) Why:mesh-delivery is down Stopped: StoppedWhy: Merges:[{Repository:novox/mesh-catalog Commit:c4dddddddd Carried: Number:0 Title: Moves:[app] Head: Merged:2026-10-21 19:38:54.490722414 +0000 UTC Heard:2026-10-21 19:38:54.490722414 +0000 UTC}] TakenOverBy: WalkedAgainBy: LeftOut:[] Kept:[] Withheld:[] Unchanged:map[] Batch:<nil> Alone:false}, asked [novox/mesh-catalog#build-1792611534289877257 novox/mesh-catalog#build-1792611534408063942 novox/mesh-catalog#build-1792611534477581999], state "building", tier 0, note "let go by a person (the mesh); its first tier is asked next"
FAIL github.com/novox/mesh-controller/cmd/mesh-controller 603s (shard 8 of 8: 166 tests)
```
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-builder/busy_test.go, internal/link/admit_test.go
Run by the build seat on g14 as build-1792611787305028084 (builds --log build-1792611787305028084).
**Merge check** at `696300b9`
- `mesh/merge-gate`: **ERROR** — the check could not run: beside it, cannot clone http://novox.internal:20000/novox/mesh-tools.git: git -c credential.helper= -c credential.helper=store --file=/tmp/mesh-forge-credential-895955175/git-credentials clone --quiet http://novox.internal:20000/novox/mesh-tools.git mesh-tools: exit status 128 (modules: build-agent, mesh-controller)
- `mesh/repo-check`: **ERROR** — the check could not run: beside it, cannot clone http://novox.internal:20000/novox/mesh-tools.git: git -c credential.helper= -c credential.helper=store --file=/tmp/mesh-forge-credential-895955175/git-credentials clone --quiet http://novox.internal:20000/novox/mesh-tools.git mesh-tools: exit status 128
**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-builder/busy_test.go, internal/link/admit_test.go
Run by the build seat on g14 as `build-1792611787305028084` (`builds --log build-1792611787305028084`).
Merge check at 696300b9
Judged: head 696300b9e280 merged into trunk f973cefd7fd3; read beside it: mesh-catalog 379317589488, mesh-controller-main f973cefd7fd3, mesh-host 4065b45ae84f, 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: cmd/mesh-builder/busy_test.go, internal/link/admit_test.go
Run by the build seat on shanks as build-1792611912157687740 (builds --log build-1792611912157687740).
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 1768 (critical, met on ace at 20:45 and on g14 at 20:58 local): a build-agent that dropped a duplicate hand-out (issue 1649's guard) left /tmp/mesh-builder.in-hand behind, then could mark no build and Nak'd every ask at once, dead-lettering the whole build queue within seconds.
Cause: internal/link/builds_nats.go Take ran Claim() (cmd/mesh-builder/busy.go claim, an O_EXCL create) before runningElsewhere, whose duplicate path acked and continued without releasing the mark.
Fix: natsMachine.admit() judges the duplicate before the claim, so a dropped duplicate marks nothing; busy.go keeps an in-process inHand flag and removes a mark found while nothing is held (stale), never a live one; an agent that cannot mark for another reason says why once and fetches nothing (markFaulty joins Paused), probing every 30 s and resuming when it can mark.
Tests: 1768/AC1 TestADuplicateDropIsJudgedBeforeTheClaimSoLeavesNoMark (fails on the old order), AC2 TestAStaleInHandMarkIsRemovedAndTheAskRuns, AC3 TestAnAgentThatCannotMarkABuildTakesNoWorkUntilItCan. Unit: cmd/mesh-builder 0.03 s, internal/link 0.35 s, cmd/mesh-controller 2.1 s. Opened before its try's verdict because ace and g14 are paused by this bug and one node builds: the try build-1792609075012142043 is queued and its result will be noted here. Follow-up opened by the review: 1771 (no condition for an agent that cannot mark). Delivering build-agent replaces the fixed process on every node, which also clears the stale marks on ace and g14.
Reviewed-by: reviewer-1768@shanks at
696300b9e2Delivery
novox/mesh-controller@696300b9e280— delivered since 2026-10-21T20:04:36ZDelivery 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
696300b9Judged: head
696300b9e280merged into trunkf973cefd7fd3; read beside it: mesh-catalog379317589488, mesh-controller-mainf973cefd7fd3, mesh-hostc231d1031fc7, mesh-toolse0fadc43d9ddmesh/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: TestAMergeWaitsForItsDeliverysWordAndThePersonsWordWorksWithoutIt (0.58s)Delivery plan — builds build-agent, mesh-controller → ace, g14, novox, shanks; no bus step
Run by the build seat on g14 as
build-1792609509812704199(builds --log build-1792609509812704199).Merge check at
696300b9mesh/merge-gate: ERROR — the check could not run: beside it, cannot clone http://novox.internal:20000/novox/mesh-tools.git: git -c credential.helper= -c credential.helper=store --file=/tmp/mesh-forge-credential-895955175/git-credentials clone --quiet http://novox.internal:20000/novox/mesh-tools.git mesh-tools: exit status 128 (modules: build-agent, mesh-controller)mesh/repo-check: ERROR — the check could not run: beside it, cannot clone http://novox.internal:20000/novox/mesh-tools.git: git -c credential.helper= -c credential.helper=store --file=/tmp/mesh-forge-credential-895955175/git-credentials clone --quiet http://novox.internal:20000/novox/mesh-tools.git mesh-tools: exit status 128Delivery plan — builds build-agent, mesh-controller → ace, g14, novox, shanks; no bus step
Run by the build seat on g14 as
build-1792611787305028084(builds --log build-1792611787305028084).Merge check at
696300b9Judged: head
696300b9e280merged into trunkf973cefd7fd3; read beside it: mesh-catalog379317589488, mesh-controller-mainf973cefd7fd3, mesh-host4065b45ae84f, mesh-toolse0fadc43d9ddmesh/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-1792611912157687740(builds --log build-1792611912157687740).