Issue 189: a rebuild from the same commit is not a move, so a packaging module's new image never rolls out
This commit is contained in:
@@ -0,0 +1,35 @@
|
||||
---
|
||||
status: located
|
||||
opened: 2026-10-01
|
||||
located-in: [mesh-controller internal/inventory/catalogue.go (RegisterModule records the source commit; a moved event follows a commit that changed, not an artifact that did), mesh-controller cmd/mesh-controller/upgrades.go (the roll-out follows the moved event)]
|
||||
fixed-by:
|
||||
amended-design: []
|
||||
---
|
||||
|
||||
# 189 — A rebuild from the same commit is not a move, so a packaging module's new image never rolls out
|
||||
|
||||
## What was observed
|
||||
|
||||
The build machine's definition packages the controller's source. A controller merge rebuilds it, and
|
||||
the rebuilt image carries the new controller; its own source commit in the catalogue is unchanged.
|
||||
Registering that build therefore moves nothing the catalogue announces: no *moved* event, no
|
||||
roll-out, although the module's upgrade policy says roll out and the artifact is new. On 2026-10-01
|
||||
at 19:45Z the first tiered plan under [ADR 0162](../../02-DECISIONS/0162-a-merge-produces-a-tiered-plan-the-mesh-keeps.md)
|
||||
built the build machine and waited for the machine running it to apply the new build — a wait
|
||||
that nothing would end, because nothing had sent it. A push by hand opened the gate.
|
||||
|
||||
## Why this is here
|
||||
|
||||
A version is what a module *runs*, and that is the artifact. The source commit is how the mesh
|
||||
knows the artifact's provenance, not what makes it new: a build that reads another repository, or
|
||||
pulls a base image, produces a different artifact from the same commit. The roll-out followed the
|
||||
commit, so every module that packages another's source, and every dependent rebuilt because its
|
||||
base moved, is rebuilt and then left behind on every machine until somebody pushes. The plan now
|
||||
sends what it waits for (mesh-controller PR `fix/a-plan-sends-what-it-waits-for`), which covers the
|
||||
gate; the general rule — a new artifact for a module with a roll-out policy is sent, moved commit or
|
||||
not — is the decision this report asks for, and the catalogue's *moved* event should say what moved:
|
||||
the artifact.
|
||||
|
||||
*How this would be checked:* a controller test registering a build of an unchanged commit with a
|
||||
new artifact digest for a module whose policy rolls out: the machines are sent; `status` shows no
|
||||
machine behind afterwards.
|
||||
Reference in New Issue
Block a user