feat(health-check): object-level gate that Forgejo [storage] serves (#197) #205
Inga granskare
Etiketter
Inga etiketter
area/backups
area/ci
area/control-panel
area/identity
area/infra
area/observability
area/payments
area/security
area/storage
area/web
blocked
needs-info
needs-triage
ready-for-implementation
type
bug
type
chore
type
docs
type
epic
type
feature
type
task
wontfix
Ingen milstolpe
Inget projekt
Inga tilldelade
1 deltagare
Notiser
Förfallodatum
Inget förfallodatum satt.
Beroenden
Inga beroenden satta
Referens
bitborg/bitborg-infra!205
Läser in…
Hänvisa till i nytt ärende
Ingen beskrivning angiven.
Ta bort grenen "feat/197-storage-object-health-gate"
Borttagning av en gren är permanent. Även om den borttagna grenen kan fortsätta existera en kort tid innan den faktiskt tas bort, kan det INTE ångras i de flesta fall. Vill du fortsätta?
Part of #197 (the prevention half; the duplicate-copy reclaim is the other half).
Why
The #188 cutover pointed Forgejo's
[storage]at an empty volume and 404'd every avatar/package for hours — while the mount assertion,--check, and/api/healthzall stayed green. None reads a stored object. Same shallow-verification class as the #174 runner rebake.What
A gate in the ADR 0030 post-apply health play (runs last, after Forgejo's restart handler):
SELECT avatar FROM "user" WHERE use_custom_avatar … LIMIT 1) — the source of truth for an object that must serve./avatars/<hash>?size=64via the local Caddy; fail the apply if not 200.Gated on
forgejo_external_storage_enabled; read-only (changed_when: false).Verification (prod)
Would have failed the #188 cutover loudly (DB had the hash; empty store → 404 → rc=1).