v0.235.0: a delivered fix must also refresh the stored definition
gates / gates (push) Successful in 14s
gates / gates (push) Successful in 14s
Found by the LIVE validation on demo-hp, not by review. Scenario A passed - a non-image catalog change reached the pinned app on the real 15-minute cycle - and that is exactly what exposed the gap: the stored applied-compose.yml is written when the PIN is written, so the fix landed in the live compose file and not in the store. The first time the catalog then moved a version, the freeze would have rendered the pre-fix definition and reverted every fix delivered since - silently undoing the half of the operator's ruling that says fixes keep flowing. The equal-images branch now refreshes the store as it delivers. The images cannot move in that branch by construction, so no version moves and no intent is rewritten. RenderPlan gains StackDir so the syncer can write it. TestFixRefreshesTheStoredDefinition asserts both halves: the fix reaches the store, and it survives the freeze that follows.
This commit is contained in:
+11
-1
@@ -78,9 +78,19 @@ test still green, because the two fields have the same type. The comparison now
|
||||
`Stack.CatalogImages`, taken from the syncer's git clone. **No readable catalog entry renders
|
||||
nothing.** No Hungarian string, badge state or partial changed.
|
||||
|
||||
### A fix must also refresh the stored definition — found by the LIVE validation, not by review
|
||||
|
||||
The stored definition is written when the pin is written. A fix delivered afterwards landed in the
|
||||
live compose file but **not** in the stored one — so the first time the catalog moved a version, the
|
||||
freeze would have reverted every fix delivered since, **silently undoing the half of the ruling that
|
||||
says fixes keep flowing**. The equal-images branch now refreshes the store as it delivers. The images
|
||||
cannot move there by construction, so no version moves and no intent is rewritten.
|
||||
`TestFixRefreshesTheStoredDefinition` asserts both halves: the fix reaches the store, and it survives
|
||||
the subsequent freeze.
|
||||
|
||||
### Tests
|
||||
|
||||
+16 (1729 → 1745). 28 packages green, 0 FAIL. New: `internal/sync/render_test.go`,
|
||||
+17 (1729 → 1746). 28 packages green, 0 FAIL. New: `internal/sync/render_test.go`,
|
||||
`internal/stacks/pin_test.go`, Group G in `internal/web/updatebadge_test.go`.
|
||||
|
||||
**Three companion red-proofs, each run, observed failing, and reverted (2026-09-06):**
|
||||
|
||||
Reference in New Issue
Block a user