Add the replay of issue 363: a README-only merge made a new digest of an unchanged Go program (hq issue 363) #293

Merged
mesh-admin merged 1 commits from fix/363-replay into main 2026-10-13 05:08:13 +00:00
Contributor

What: internal/builder/replay363_test.go (TestReplay363), test-only, written with only what the builder had before #292.

How it works: the replay runs the builder whole: Build, then the packed bundle's digest. It builds a Go module from its repository's root at two commits that differ only in README.md, which is outside its build source. A runtime runs the toolchain container's command on this machine in the mounted directory, with the real git and the real Go compiler. One digest is wanted.

Why: this proves issue 363's built part (ADR 0267 rule 6, mesh-controller #292). Before #292, Go stamped the commit into a root-built binary. The node-engine on g14 carries vcs.revision=7a41e120…, so a README-only merge made a new digest.

Tested:

  • TestReplay363 fails on 1d244d5 (#292's first parent) with two digests, and passes on main cd6757f1.
  • mesh-lab go run ./cmd/prove R363 says PROVED.
  • go vet passes.
  • It needs no store, so it is not listed in testdata/store-tests.

Registered in mesh-lab as R363, on the same branch name.

Fixes issue 363 (its replay).

**What**: `internal/builder/replay363_test.go` (`TestReplay363`), test-only, written with only what the builder had before #292. **How it works**: the replay runs the builder whole: `Build`, then the packed bundle's digest. It builds a Go module from its repository's root at two commits that differ only in `README.md`, which is outside its build source. A runtime runs the toolchain container's command on this machine in the mounted directory, with the real git and the real Go compiler. One digest is wanted. **Why**: this proves issue 363's built part (ADR 0267 rule 6, mesh-controller #292). Before #292, Go stamped the commit into a root-built binary. The node-engine on g14 carries `vcs.revision=7a41e120…`, so a README-only merge made a new digest. **Tested**: - `TestReplay363` fails on 1d244d5 (#292's first parent) with two digests, and passes on main cd6757f1. - mesh-lab `go run ./cmd/prove R363` says PROVED. - `go vet` passes. - It needs no store, so it is not listed in testdata/store-tests. Registered in mesh-lab as R363, on the same branch name. Fixes issue 363 (its replay).
mesh-admin added 1 commit 2026-10-13 05:01:55 +00:00
Add the replay of issue 363: a README-only merge made a new digest of an unchanged Go program (hq issue 363)
mesh/merge-gate head 94c928b1f5af merged into trunk cd6757f1e3c8 — pass: builds build-agent, route-proxy → ace, g14, novox, shanks; no bus step; every mach…
mesh/repo-check head 94c928b1f5af merged into trunk cd6757f1e3c8 — pass: its merge-check.sh passed
mesh/delivery stopped: a merged change never reached the machines: its walk plan-1791867648768608552 ended done before its word without building build-ag…
mesh/delivery-group group fix/363-replay stopped: a member was stopped
94c928b1f5
Author
Contributor

Delivery novox/mesh-controller@94c928b1f5af — stopped since 2026-10-13T05:33:07Z

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

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

Group fix/363-replay, in order: novox/mesh-controller@94c928b1f5 → novox/mesh-lab@5f13bf0aff

  • composed together: pass — every machine composes with the change as it did without (4 of 4 compose) (run 2)

Transitions

  • 2026-10-13 05:02 (new) → proposed (announced): novox/mesh-controller#293's head announced
  • 2026-10-13 05:06 proposed → checked (checked): a verdict names this commit and the trunk's head as its trunk commit
  • 2026-10-13 05:06 checked → ready (accepted): the gate passed or warned, and the repository's own check did not fail
  • 2026-10-13 05:13 ready → published (merged): on the trunk its modules follow: merged there, and its walk opened — or nothing for a walk to move
  • 2026-10-13 05:33 published → stopped (stop): a merged change never reached the machines: its walk plan-1791867648768608552 ended done before its word without building build-agent, route-proxy (moved nothing the mesh holds: nothing to walk), and no later merge into main that contains it delivered them (novox/hq issue 474)

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

<!-- mesh-delivery:view --> **Delivery** `novox/mesh-controller@94c928b1f5af` — **stopped** since 2026-10-13T05:33:07Z **Delivery plan** — builds build-agent, route-proxy → ace, g14, novox, shanks; no bus step - tier 0: build-agent - tier 1: route-proxy - ace: receives build-agent, route-proxy - g14: receives build-agent - novox: receives build-agent, route-proxy - shanks: receives build-agent - build-agent keeps data (ADR 0233): what it holds is backed up before it moves - route-proxy provides route: its consumers are sent again after it - route-proxy keeps data (ADR 0233): what it holds is backed up before it moves - 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, route-proxy is judged on its first machine **Group** `fix/363-replay`, in order: novox/mesh-controller@94c928b1f5af → novox/mesh-lab@5f13bf0aff9c - composed together: pass — every machine composes with the change as it did without (4 of 4 compose) (run 2) **Transitions** - 2026-10-13 05:02 (new) → proposed (announced): novox/mesh-controller#293's head announced - 2026-10-13 05:06 proposed → checked (checked): a verdict names this commit and the trunk's head as its trunk commit - 2026-10-13 05:06 checked → ready (accepted): the gate passed or warned, and the repository's own check did not fail - 2026-10-13 05:13 ready → published (merged): on the trunk its modules follow: merged there, and its walk opened — or nothing for a walk to move - 2026-10-13 05:33 published → stopped (stop): a merged change never reached the machines: its walk plan-1791867648768608552 ended done before its word without building build-agent, route-proxy (moved nothing the mesh holds: nothing to walk), and no later merge into main that contains it delivered them (novox/hq issue 474) The commit's note under `refs/notes/mesh-plan` keeps every transition: `git log --notes=mesh-plan`.
Author
Contributor

Merge check at 94c928b1
Judged: head 94c928b1f5af merged into trunk cd6757f1e3c8; read beside it: mesh-catalog 53e51864969f, mesh-controller-main cd6757f1e3c8, mesh-host 7a41e120635b, mesh-tools 954e1a53eef9

  • mesh/merge-gate: PASS — every machine composes with the change as it did without (4 of 4 compose) (modules: build-agent, route-proxy)
  • mesh/repo-check: PASS — its merge-check.sh passed

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

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

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

--- the gate: build-agent, route-proxy
judging 0 module(s) changed against 4 machine(s), as the snapshot of 2026-10-13T05:01:44Z says they run
composing every machine as the mesh is
the bus's user list leaves out 5 user(s) the mesh has minted no credential for: controller, node.f35, node.idt, node.ygcyr, node.yvbpsm. Each is a user that cannot connect until one is issued
the bus's user list leaves out 5 user(s) the mesh has minted no credential for: controller, node.f35, node.idt, node.ygcyr, node.yvbpsm. Each is a user that cannot connect until one is issued
composing every machine with the change
the bus's user list leaves out 5 user(s) the mesh has minted no credential for: controller, node.f35, node.idt, node.ygcyr, node.yvbpsm. Each is a user that cannot connect until one is issued
the bus's user list leaves out 5 user(s) the mesh has minted no credential for: controller, node.f35, node.idt, node.ygcyr, node.yvbpsm. Each is a user that cannot connect until one is issued
merge gate: PASS — every machine composes with the change as it did without (4 of 4 compose)
judged by controller development build against the facts of 2026-10-13T05:01:44Z

machines:
  - a machine (f35): composes
  - holds mesh-dns-resolver (idt): composes
  - holds git, holds mesh-artifact-store, holds mesh-broker, holds mesh-catalog, holds mesh-delivery, holds mesh-dns-resolver, holds mesh-store, holds mesh-vault, holds npm-package-registry, the control node, the hub (ygcyr): composes
  - a machine (yvbpsm): composes

a merge would rebuild 2 module(s) in 2 tier(s): build-agent, route-proxy
--- its merge-check.sh (go toolchain)
ok  	github.com/novox/mesh-controller/cmd/mesh-builder	1.038s
ok  	github.com/novox/mesh-controller/cmd/mesh-controller	154.812s
ok  	github.com/novox/mesh-controller/examples/objectstore-provisioner	1.021s
ok  	github.com/novox/mesh-controller/examples/postgres-provisioner	1.031s
ok  	github.com/novox/mesh-controller/examples/redis-provisioner	1.021s
ok  	github.com/novox/mesh-controller/examples/route-proxy	1.132s
ok  	github.com/novox/mesh-controller/internal/artifacts	1.071s
?   	github.com/novox/mesh-controller/internal/beside	[no test files]
ok  	github.com/novox/mesh-controller/internal/broker	6.224s
ok  	github.com/novox/mesh-controller/internal/builder	38.906s
ok  	github.com/novox/mesh-controller/internal/catalogue	7.556s
ok  	github.com/novox/mesh-controller/internal/conditions	2.730s
ok  	github.com/novox/mesh-controller/internal/envfile	1.067s
ok  	github.com/novox/mesh-controller/internal/facts	1.027s
ok  	github.com/novox/mesh-controller/internal/identity	7.322s
ok  	github.com/novox/mesh-controller/internal/inventory	34.426s
ok  	github.com/novox/mesh-controller/internal/lease	17.717s
ok  	github.com/novox/mesh-controller/internal/licences	6.517s
ok  	github.com/novox/mesh-controller/internal/licences/adapters	1.054s
ok  	github.com/novox/mesh-controller/internal/link	58.007s
ok  	github.com/novox/mesh-controller/internal/lint	2.801s
ok  	github.com/novox/mesh-controller/internal/outward	1.063s
ok  	github.com/novox/mesh-controller/internal/overlay	1.076s
ok  	github.com/novox/mesh-controller/internal/secrets	1.438s
ok  	github.com/novox/mesh-controller/internal/store	3.513s
ok  	github.com/novox/mesh-controller/internal/testbus	1.238s
ok  	github.com/novox/mesh-controller/internal/token	1.016s
store tests, each run against the store:
  ./cmd/mesh-controller --- PASS: TestAStopWithoutAMergeWalksTheOthersAgain (0.50s)
  ./cmd/mesh-controller --- PASS: TestAStopWithoutAMergeEndsTheMergesThatContainIt (0.25s)
  ./cmd/mesh-controller --- PASS: TestAStopWalksTheOthersAgainInTheOpenBatch (0.23s)
  ./cmd/mesh-controller --- PASS: TestAStopNamesWhatStaysOnTheMachinesAndWhatStillCarriesIt (0.20s)
  ./cmd/mesh-controller --- PASS: TestAStopWithoutAMergeLeavesItOutOfABatch (0.19s)
  ./cmd/mesh-controller --- PASS: TestSavingPlansAndMovingMergesIsOneAct (0.19s)
  ./cmd/mesh-controller --- PASS: TestAPlanFollowedFromTheStoreAnswersWhenItMoves (1.96s)
  ./cmd/mesh-controller --- PASS: TestNodeShowAndStatusReadTheLastSendFromTheStore (0.23s)
  ./cmd/mesh-controller --- PASS: TestTheConditionsVerbReadsTheLooksTheBucketNoLongerHolds (0.13s)
  ./cmd/mesh-controller --- PASS: TestAWalkLetGoAndStoppedByVerbsIsSaidStartedAndEnded (0.25s)
  ./cmd/mesh-controller --- PASS: TestAWalkStoppedOrClosedByAPersonIsSaidEndedStopped (0.23s)
  ./cmd/mesh-controller --- PASS: TestAWalkRetriedByAPersonIsSaidStartedAgain (0.21s)
  ./cmd/mesh-controller --- PASS: TestABacklogReleasedByAPersonIsSaidStarted (0.21s)
  ./cmd/mesh-controller --- PASS: TestAWalkEndedByCancelOrClearIsSaidEnded (0.27s)
  ./cmd/mesh-controller --- PASS: TestAWalkRestartedByARebuildIsSaidStarted (0.21s)
  ./cmd/mesh-controller --- PASS: TestAWalkStoppedByHandAndRetriedEndsFailedWhenItFailsAgain (0.24s)
  ./cmd/mesh-controller --- PASS: TestReplay237 (0.21s)
  ./cmd/mesh-controller --- PASS: TestAnUnassignThatLeavesItsNodeUnresolvedSaysSoOnceInItsAnswer (0.19s)
  ./cmd/mesh-controller --- PASS: TestAnUnassignThatLeavesItsNodeResolvedSaysNothingOfIt (0.19s)
  ./cmd/mesh-controller --- PASS: TestAnAssignThatLeavesItsNodeUnresolvedSaysOnlyThePlansRefusal (0.21s)
  ./cmd/mesh-controller --- PASS: TestADirectoryOwnersKeyIsRefusedThroughAVerb (0.23s)
  ./cmd/mesh-controller --- PASS: TestTheSendMakesNoValueForAnOutsideSecretNobodyGave (0.29s)
  ./cmd/mesh-controller --- PASS: TestAQuestionComposesWithoutAnOutsideSecretNobodyGave (0.27s)
  ./cmd/mesh-controller --- PASS: TestReplay201 (0.16s)
  ./cmd/mesh-controller --- PASS: TestARollbackWhoseSendWasRefusedIsCompletedByTheNextSend (0.14s)
  ./cmd/mesh-controller --- PASS: TestAGateJudgesTheOtherMovesBesideAKeptCore (0.15s)
  ./cmd/mesh-controller --- PASS: TestReplay401 (0.28s)
  ./cmd/mesh-controller --- PASS: TestReplay201ThePlansSend (0.23s)
  ./cmd/mesh-controller --- PASS: TestPlanAndNodeListAnOptionalRequirementLeftUnbound (0.28s)
  ./cmd/mesh-controller --- PASS: TestReplay340 (0.24s)
  ./cmd/mesh-controller --- PASS: TestOnlyATrustedFilesNamedKeyIsRefusedThroughAVerb (0.19s)
  ./cmd/mesh-controller --- PASS: TestReplay349 (0.20s)
  ./cmd/mesh-controller --- PASS: TestReplay348AFaultFromBeforeTheSendFailsNoGate (0.18s)
  ./internal/inventory --- PASS: TestTheLastSendSaysWhatTheMachineAnswered (0.08s)
  ./internal/inventory --- PASS: TestAReportIsTheLastSendsAnswerOnlyWhenItIsAboutThatSend (0.08s)
  ./internal/inventory --- PASS: TestAnIssuedValueIsSealedToEveryHolderOnceAndNotAgain (0.10s)
  ./internal/inventory --- PASS: TestAnIssuedValueIsSealedAgainAfterAKeyChangeOrAnAcceptance (0.08s)
  ./internal/inventory --- PASS: TestAConditionsLooksAreKeptBesideTheBucket (0.07s)
  ./internal/inventory --- PASS: TestAPlanIdHoldingAQuoteIsReadAsAPlainId (0.07s)
  ./internal/inventory --- PASS: TestAWalksStartIsKeptAndARefusedSaveLeavesItUnsaid (0.07s)
  ./internal/inventory --- PASS: TestAWalksRestIsReadFromEachMachinesOwnSend (0.07s)
  ./internal/inventory --- PASS: TestAStoredBuildWithASilentMergeableFileIsStillReadAndComposed (0.07s)
**Merge check** at `94c928b1` Judged: head `94c928b1f5af` merged into trunk `cd6757f1e3c8`; read beside it: mesh-catalog `53e51864969f`, mesh-controller-main `cd6757f1e3c8`, mesh-host `7a41e120635b`, mesh-tools `954e1a53eef9` - `mesh/merge-gate`: **PASS** — every machine composes with the change as it did without (4 of 4 compose) (modules: build-agent, route-proxy) - `mesh/repo-check`: **PASS** — its merge-check.sh passed **Delivery plan** — builds build-agent, route-proxy → ace, g14, novox, shanks; no bus step - tier 0: build-agent - tier 1: route-proxy - ace: receives build-agent, route-proxy - g14: receives build-agent - novox: receives build-agent, route-proxy - shanks: receives build-agent - build-agent keeps data (ADR 0233): what it holds is backed up before it moves - route-proxy provides route: its consumers are sent again after it - route-proxy keeps data (ADR 0233): what it holds is backed up before it moves - 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, route-proxy is judged on its first machine Run by the build seat on ace as `build-1791867723738433679` (`builds --log build-1791867723738433679`). ``` --- the gate: build-agent, route-proxy judging 0 module(s) changed against 4 machine(s), as the snapshot of 2026-10-13T05:01:44Z says they run composing every machine as the mesh is the bus's user list leaves out 5 user(s) the mesh has minted no credential for: controller, node.f35, node.idt, node.ygcyr, node.yvbpsm. Each is a user that cannot connect until one is issued the bus's user list leaves out 5 user(s) the mesh has minted no credential for: controller, node.f35, node.idt, node.ygcyr, node.yvbpsm. Each is a user that cannot connect until one is issued composing every machine with the change the bus's user list leaves out 5 user(s) the mesh has minted no credential for: controller, node.f35, node.idt, node.ygcyr, node.yvbpsm. Each is a user that cannot connect until one is issued the bus's user list leaves out 5 user(s) the mesh has minted no credential for: controller, node.f35, node.idt, node.ygcyr, node.yvbpsm. Each is a user that cannot connect until one is issued merge gate: PASS — every machine composes with the change as it did without (4 of 4 compose) judged by controller development build against the facts of 2026-10-13T05:01:44Z machines: - a machine (f35): composes - holds mesh-dns-resolver (idt): composes - holds git, holds mesh-artifact-store, holds mesh-broker, holds mesh-catalog, holds mesh-delivery, holds mesh-dns-resolver, holds mesh-store, holds mesh-vault, holds npm-package-registry, the control node, the hub (ygcyr): composes - a machine (yvbpsm): composes a merge would rebuild 2 module(s) in 2 tier(s): build-agent, route-proxy --- its merge-check.sh (go toolchain) ok github.com/novox/mesh-controller/cmd/mesh-builder 1.038s ok github.com/novox/mesh-controller/cmd/mesh-controller 154.812s ok github.com/novox/mesh-controller/examples/objectstore-provisioner 1.021s ok github.com/novox/mesh-controller/examples/postgres-provisioner 1.031s ok github.com/novox/mesh-controller/examples/redis-provisioner 1.021s ok github.com/novox/mesh-controller/examples/route-proxy 1.132s ok github.com/novox/mesh-controller/internal/artifacts 1.071s ? github.com/novox/mesh-controller/internal/beside [no test files] ok github.com/novox/mesh-controller/internal/broker 6.224s ok github.com/novox/mesh-controller/internal/builder 38.906s ok github.com/novox/mesh-controller/internal/catalogue 7.556s ok github.com/novox/mesh-controller/internal/conditions 2.730s ok github.com/novox/mesh-controller/internal/envfile 1.067s ok github.com/novox/mesh-controller/internal/facts 1.027s ok github.com/novox/mesh-controller/internal/identity 7.322s ok github.com/novox/mesh-controller/internal/inventory 34.426s ok github.com/novox/mesh-controller/internal/lease 17.717s ok github.com/novox/mesh-controller/internal/licences 6.517s ok github.com/novox/mesh-controller/internal/licences/adapters 1.054s ok github.com/novox/mesh-controller/internal/link 58.007s ok github.com/novox/mesh-controller/internal/lint 2.801s ok github.com/novox/mesh-controller/internal/outward 1.063s ok github.com/novox/mesh-controller/internal/overlay 1.076s ok github.com/novox/mesh-controller/internal/secrets 1.438s ok github.com/novox/mesh-controller/internal/store 3.513s ok github.com/novox/mesh-controller/internal/testbus 1.238s ok github.com/novox/mesh-controller/internal/token 1.016s store tests, each run against the store: ./cmd/mesh-controller --- PASS: TestAStopWithoutAMergeWalksTheOthersAgain (0.50s) ./cmd/mesh-controller --- PASS: TestAStopWithoutAMergeEndsTheMergesThatContainIt (0.25s) ./cmd/mesh-controller --- PASS: TestAStopWalksTheOthersAgainInTheOpenBatch (0.23s) ./cmd/mesh-controller --- PASS: TestAStopNamesWhatStaysOnTheMachinesAndWhatStillCarriesIt (0.20s) ./cmd/mesh-controller --- PASS: TestAStopWithoutAMergeLeavesItOutOfABatch (0.19s) ./cmd/mesh-controller --- PASS: TestSavingPlansAndMovingMergesIsOneAct (0.19s) ./cmd/mesh-controller --- PASS: TestAPlanFollowedFromTheStoreAnswersWhenItMoves (1.96s) ./cmd/mesh-controller --- PASS: TestNodeShowAndStatusReadTheLastSendFromTheStore (0.23s) ./cmd/mesh-controller --- PASS: TestTheConditionsVerbReadsTheLooksTheBucketNoLongerHolds (0.13s) ./cmd/mesh-controller --- PASS: TestAWalkLetGoAndStoppedByVerbsIsSaidStartedAndEnded (0.25s) ./cmd/mesh-controller --- PASS: TestAWalkStoppedOrClosedByAPersonIsSaidEndedStopped (0.23s) ./cmd/mesh-controller --- PASS: TestAWalkRetriedByAPersonIsSaidStartedAgain (0.21s) ./cmd/mesh-controller --- PASS: TestABacklogReleasedByAPersonIsSaidStarted (0.21s) ./cmd/mesh-controller --- PASS: TestAWalkEndedByCancelOrClearIsSaidEnded (0.27s) ./cmd/mesh-controller --- PASS: TestAWalkRestartedByARebuildIsSaidStarted (0.21s) ./cmd/mesh-controller --- PASS: TestAWalkStoppedByHandAndRetriedEndsFailedWhenItFailsAgain (0.24s) ./cmd/mesh-controller --- PASS: TestReplay237 (0.21s) ./cmd/mesh-controller --- PASS: TestAnUnassignThatLeavesItsNodeUnresolvedSaysSoOnceInItsAnswer (0.19s) ./cmd/mesh-controller --- PASS: TestAnUnassignThatLeavesItsNodeResolvedSaysNothingOfIt (0.19s) ./cmd/mesh-controller --- PASS: TestAnAssignThatLeavesItsNodeUnresolvedSaysOnlyThePlansRefusal (0.21s) ./cmd/mesh-controller --- PASS: TestADirectoryOwnersKeyIsRefusedThroughAVerb (0.23s) ./cmd/mesh-controller --- PASS: TestTheSendMakesNoValueForAnOutsideSecretNobodyGave (0.29s) ./cmd/mesh-controller --- PASS: TestAQuestionComposesWithoutAnOutsideSecretNobodyGave (0.27s) ./cmd/mesh-controller --- PASS: TestReplay201 (0.16s) ./cmd/mesh-controller --- PASS: TestARollbackWhoseSendWasRefusedIsCompletedByTheNextSend (0.14s) ./cmd/mesh-controller --- PASS: TestAGateJudgesTheOtherMovesBesideAKeptCore (0.15s) ./cmd/mesh-controller --- PASS: TestReplay401 (0.28s) ./cmd/mesh-controller --- PASS: TestReplay201ThePlansSend (0.23s) ./cmd/mesh-controller --- PASS: TestPlanAndNodeListAnOptionalRequirementLeftUnbound (0.28s) ./cmd/mesh-controller --- PASS: TestReplay340 (0.24s) ./cmd/mesh-controller --- PASS: TestOnlyATrustedFilesNamedKeyIsRefusedThroughAVerb (0.19s) ./cmd/mesh-controller --- PASS: TestReplay349 (0.20s) ./cmd/mesh-controller --- PASS: TestReplay348AFaultFromBeforeTheSendFailsNoGate (0.18s) ./internal/inventory --- PASS: TestTheLastSendSaysWhatTheMachineAnswered (0.08s) ./internal/inventory --- PASS: TestAReportIsTheLastSendsAnswerOnlyWhenItIsAboutThatSend (0.08s) ./internal/inventory --- PASS: TestAnIssuedValueIsSealedToEveryHolderOnceAndNotAgain (0.10s) ./internal/inventory --- PASS: TestAnIssuedValueIsSealedAgainAfterAKeyChangeOrAnAcceptance (0.08s) ./internal/inventory --- PASS: TestAConditionsLooksAreKeptBesideTheBucket (0.07s) ./internal/inventory --- PASS: TestAPlanIdHoldingAQuoteIsReadAsAPlainId (0.07s) ./internal/inventory --- PASS: TestAWalksStartIsKeptAndARefusedSaveLeavesItUnsaid (0.07s) ./internal/inventory --- PASS: TestAWalksRestIsReadFromEachMachinesOwnSend (0.07s) ./internal/inventory --- PASS: TestAStoredBuildWithASilentMergeableFileIsStillReadAndComposed (0.07s) ```
mesh-admin left a comment
Author
Contributor

Verdict: approve at 94c928b1f5

TestReplay363 uses only code from before #292. The single commit on this PR (94c928b) adds exactly one new file, internal/builder/replay363_test.go, as a direct child of cd6757f1 (the merge of #292); it calls only the exported Build function and implements the pre-existing Runner and Publisher interfaces, none of which #292 touched (#292's diff against its parent 1d244d5 is confined to toolchain.go's GOFLAGS string, six Dockerfiles, and internal/builder/reproducible_test.go). The test never references -buildvcs or any other detail of the fix itself.

I laid the test file over three commits in a worktree and ran go test ./internal/builder/ -run TestReplay363 -v at each. At 1d244d5 (the commit before #292): "--- FAIL: TestReplay363" with "one build source, two digests: sha256:a4c422ba... at 4576c4e93ea5, sha256:e231073... at 79d0358a5201 — a README-only merge is a new program". At cd6757f1 (the merge of #292): "--- PASS: TestReplay363" ("ok ... 0.218s"). At the PR head 94c928b: "--- PASS: TestReplay363" ("ok ... 0.206s").

This is a faithful replay rather than a pass for the wrong reason: the fake Runner only intercepts "docker run" and otherwise mirrors exactly the invocation shape builder.go's compile() constructs ("run", "--rm", "--volume", tree+":"+within, "--workdir", within, base, ...chain.Compile...), so Build() runs the real toolchain.Compile command (including the GOFLAGS the fix changed) through the real go and git on this machine rather than a stub. The two digests produced before the fix are distinct real sha256 values over the packed bundle, and the test fails closed (t.Fatalf) if Build ever errors or returns no artifact, so a build that silently did not happen cannot pass. I also confirmed mesh-lab #97's go run ./cmd/prove R363 reaches the same verdict: "R363 (issue 363): PROVED — before its fix fails, on its fix passes".

Verdict: approve at 94c928b1f5af099c328eb6950550b6380df24b31 TestReplay363 uses only code from before #292. The single commit on this PR (94c928b) adds exactly one new file, internal/builder/replay363_test.go, as a direct child of cd6757f1 (the merge of #292); it calls only the exported Build function and implements the pre-existing Runner and Publisher interfaces, none of which #292 touched (#292's diff against its parent 1d244d5 is confined to toolchain.go's GOFLAGS string, six Dockerfiles, and internal/builder/reproducible_test.go). The test never references -buildvcs or any other detail of the fix itself. I laid the test file over three commits in a worktree and ran `go test ./internal/builder/ -run TestReplay363 -v` at each. At 1d244d5 (the commit before #292): "--- FAIL: TestReplay363" with "one build source, two digests: sha256:a4c422ba... at 4576c4e93ea5, sha256:e231073... at 79d0358a5201 — a README-only merge is a new program". At cd6757f1 (the merge of #292): "--- PASS: TestReplay363" ("ok ... 0.218s"). At the PR head 94c928b: "--- PASS: TestReplay363" ("ok ... 0.206s"). This is a faithful replay rather than a pass for the wrong reason: the fake Runner only intercepts "docker run" and otherwise mirrors exactly the invocation shape builder.go's compile() constructs ("run", "--rm", "--volume", tree+":"+within, "--workdir", within, base, ...chain.Compile...), so Build() runs the real toolchain.Compile command (including the GOFLAGS the fix changed) through the real go and git on this machine rather than a stub. The two digests produced before the fix are distinct real sha256 values over the packed bundle, and the test fails closed (t.Fatalf) if Build ever errors or returns no artifact, so a build that silently did not happen cannot pass. I also confirmed mesh-lab #97's `go run ./cmd/prove R363` reaches the same verdict: "R363 (issue 363): PROVED — before its fix fails, on its fix passes".
mesh-admin merged commit 8f1aec0832 into main 2026-10-13 05:08:13 +00:00
mesh-admin deleted branch fix/363-replay 2026-10-13 05:08:13 +00:00
Sign in to join this conversation.
No Reviewers
No labels
1 Participants
Notifications
Due Date
No due date set.
Dependencies

No dependencies set.

Reference: novox/mesh-controller#293