Files
felhom.eu/documentation/audits/the-28-2026-09-22/BODY-promotion.md
T
admin 186546d562
gates / gates (push) Successful in 27s
THE TWENTY-EIGHT: every app no drill had touched, walked in one night
All 28 walked on scratch guest 9202 against the private drill catalog. 26 deployed, 6 proven,
5 inconclusive, 14 with no upstream edge, 1 failed honestly (outline 1.9.1->1.10.1, HELD with the
right sentence), 2 undeployable - one (plant-it) by design, refused by the lifecycle gate, proven
live for the first time. Each app also got the half the update night skipped: a restore from its own
copy with the seed read back again - 21 restored, 2 correctly REFUSED per 07 6.2.

R-630 RAISED TO P1 by measurement: a stack with NO probe container does not skip verifying - it
waits out the full health timeout and HOLDS, stopping an app whose three containers read healthy.
The controller's own words: "not healthy within 5m0s (last: no probe container)".

R-633 opened: a remove sent during a restore reports success and leaves a container restarting with
a live public route. The product already refuses that clash for update and for restore, naming the
blocker; remove has no such guard.

R-634 opened: an app can be running, healthy and serving while recorded as deployed=false, and is
then unremovable. Reproducible alone on sparkyfitness; concurrency-linked on two others.

R-631 and R-632 CLOSED. Register 321 -> 323. Seven interventions, six of them my own harness -
named, with what each cost. No product code. The live catalog's image: lines are byte-identical to
the start of the night.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_0159rPz1ZhFKsS53msqPYxtS
2026-09-22 16:00:56 +02:00

2.3 KiB

The second promotion list — for the operator, not for me

CC promotes nothing. These are proposals with the evidence beside them.

Proposed to move (6)

app move update took its own migration line
emby 4.10.0.20 → 4.11.0.1 198.7 s yes — emby | Info SqliteUserRepository: Sqlite compiler options: ATOMIC_INTRINSICS=1,COMPILER=g
ghost 6.53.0-alpine → 6.64.0-alpine 289.6 s yes — ghost | [2026-09-22 15:13:37] INFO Stripe members-migrations skipped because it
immich v3.0.3 → v3.2.2 375.0 s none printed
radarr 6.3.0 → 6.4.4 227.8 s yes — radarr | [migrations] started
sonarr 4.0.19 → 4.0.20 216.6 s yes — sonarr | [migrations] started
termix 2.5.0 → 2.8.0 232.5 s yes — termix | [1:37:29 PM] [INFO] [🗄️] Database layer pre-upgrade backup created [op:database_

Must NOT move, with why (6)

app edge why not
code-server 4.129.0 → 4.138.0 the update reached done, but this app has no non-browser data route, so nothing proves the household's data survived it
crafty-controller 4.10.7 → 4.11.0 the update reached done, but this app has no non-browser data route, so nothing proves the household's data survived it
komga 1.25.0 → 1.27.1 the update reached done, but this app has no non-browser data route, so nothing proves the household's data survived it
outline 1.9.1 → 1.10.1 the update ended failed — fixture ran and found no non-browser seed route: sign-in requires an external identity provider (OIDC/Slack/Google); no local sign-up route exists
plex 1.41.4.9463-630c9f557 → 1.43.4.10903-e5521bd8c the update reached done, but this app has no non-browser data route, so nothing proves the household's data survived it
rallly 4.11.1 → 4.15.2 the update reached done, but this app has no non-browser data route, so nothing proves the household's data survived it

No upstream edge tonight, so nothing to propose (16): calcom, calibre-web, claper, gokapi, gramps-web, homebox, homepage, jellyfin, kimai, onlyoffice, paperless-ngx, plant-it, recipe-importer, seerr, sparkyfitness, wanderer.