railiance-platform/history/2026-09-06-backup-tiers-implementation.md
codex a3ca4b708f
All checks were successful
CI Smoke / host-smoke (push) Successful in 0s
CI Smoke / container-smoke (push) Successful in 1s
Verify full and essentials recovery and implement bounded retention tooling
Assistant: codex
Assistant-Model: gpt-6-astra
Assistant-Session: 01a06ecb-456a-71c2-b41e-0755d336e883
2026-09-06 11:10:50 +02:00

46 lines
2.8 KiB
Markdown

# Backup tiers implementation and recovery evidence
Implemented and live-verified the two data paths under WP-0038-T04. The full
5.35 GB encrypted archive now has a separate Scaleway application-archive copy
and passed actual retrieval, decryption and isolated Forgejo recovery, including
all 2,040 package blob hashes. Native database backup remains independently active.
The explicit essentials profile produced a 286,298,520-byte encrypted archive
(273 MiB), about 94.7% smaller. It preserves all 142 repository roots, database,
configuration and unique-data categories. The manifest declares omitted packages,
generated archives/indexes/logs and the reduced recovery contract. Its real
Nextcloud round trip and isolated recovery passed with package service disabled,
142 repository records, six users, and two successful Git clone/fsck checks.
The newer essentials database has 2,050 blob metadata records; these two captures
are different recovery points, not a synchronized full/essential pair.
Public pinned recovery images were fetched without the production registry or
Scaleway. Inventory found 21 container, two npm and two Python packages; no blanket
rebuildability claim is made. Five other database clusters total about 209 MiB
physical storage, a sizing input rather than compressed backup coverage proof.
Implemented tested retention planning and a separate attended owner executor:
protected recovered anchor, known verified names only, incoming headroom,
retained-object checks, ciphertext anchor revalidation, conditional ETag deletion
and a single-writer local lock. Workload delivery remains create-only. No retained
full archive or provider retention setting was changed.
Initial capture/transfer attempts failed before useful diagnostics; safe stage
and exception-type diagnostics were added. Retried operations passed. Their
precise initial failure cause was not established. No raw captured credential
outputs were inspected or recorded.
Remaining T04 gate is operational activation: bind durable scheduling/caller and
its dependencies, canonical generation names and verified inventory, plus the
separate owner retention/fresh-quota operation. Current local cron still invokes
the old full-to-Nextcloud helper. This turn's manual tests do not close recurring
primary coverage or authorize silently dropping a recovery component.
Evidence is under `docs/evidence/RPF-WP-0038-*.json`; the complete operational
contract and limitations are in `docs/backup-storage-tiers.md`.
All 221 repository tests passed. Removed the three drill plaintext ZIPs after
verified recovery; all good encrypted copies and provider backups remain.
Current create-only workload credentials cannot perform owner quota/expiration.
The new owner executor remains attended; no owner password or new delete grant
was delivered to a workload. Operational binding remains explicit in T04.