Re-plan of #11914, which was parked twice because it was handed out before what it extends existed on main. This one waits for #11801 (pull #11845): start only once src/keeper/prune.ts, the ReleaseStore port and pruneReleases are on main.
Today the Deployment-patch deployer (FORGE_RELEASE_KEEPER=on in the cluster) has no store, so it prunes nothing, and the pg-grand host timer forge-prune-images is still the only thing that removes old release images there.
Done:
[ ] The Deployment-patch deployer gets a ReleaseStore that lists and removes release images in the registry the Deployment pulls from. It sits behind the same port the swapper store implements and refuses to remove the running image or the known-good one; a test proves both refusals.
[ ] pruneReleases runs for this deployer after release.verified_live and records pruned / pruneError on the event the same way the swapper does; a test with 20 fake images keeps 15 plus live and known-good.
[ ] The host-timers footing row (src/system/footing.ts, docs/OPERATING.md) drops forge-prune-images, and the release-prune row no longer says the Deployment-patch deployer prunes nothing.
[ ] bun test on the touched files and bun x tsc --noEmit pass.
Files: src/keeper/ (the deployer's store), src/system/footing.ts, docs/OPERATING.md
Never touches the release workflow or the chart.
Re-plan of #11914, which was parked twice because it was handed out before what it extends existed on main. This one waits for #11801 (pull #11845): start only once
src/keeper/prune.ts, theReleaseStoreport andpruneReleasesare on main.Today the Deployment-patch deployer (
FORGE_RELEASE_KEEPER=onin the cluster) has no store, so it prunes nothing, and the pg-grand host timerforge-prune-imagesis still the only thing that removes old release images there.Done:
ReleaseStorethat lists and removes release images in the registry the Deployment pulls from. It sits behind the same port the swapper store implements and refuses to remove the running image or the known-good one; a test proves both refusals.pruneReleasesruns for this deployer afterrelease.verified_liveand recordspruned/pruneErroron the event the same way the swapper does; a test with 20 fake images keeps 15 plus live and known-good.host-timersfooting row (src/system/footing.ts, docs/OPERATING.md) dropsforge-prune-images, and therelease-prunerow no longer says the Deployment-patch deployer prunes nothing.bun teston the touched files andbun x tsc --noEmitpass.Files: src/keeper/ (the deployer's store), src/system/footing.ts, docs/OPERATING.md Never touches the release workflow or the chart.