Usage page: remove the standalone Card-based Storage Size section and fold the
retention breakdown into the existing Storage Size attribute. The chart now
stacks live objects / object versions / snapshots via the standard
UsageBarChart attributes, and the breakdown renders in the right column through
`additionalInfo`, matching every other section's layout and styling.
splitStorageSizeByRetention attributes the reported daily total across the three
segments without changing the total (unit tested).
Database backups: reframe a backup as an environment-wide restore point rather
than a database-only one. A backup restores Postgres — and Auth users plus
Storage metadata with it, since those live in Postgres — but not object bytes,
which is exactly what produces rows referencing files that no longer exist. So:
- Per-row coverage chips across Database / Storage / Config, with the storage
gap surfaced rather than implied
- A coverage notice naming which buckets aren't protected and linking to the fix
- Restore dialog offers 'into a new preview branch' as the default, since
branching is a copy-on-write platform primitive: verify a restore point before
promoting it, instead of destructively restoring over production. In-place
restore remains available and still uses the existing backup-restore mutation.
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01TiUEvmC84bRsteqsWXHY2p