Operator Frame
The shell is intentionally persistent: left-side navigation, a shared header, and durable status surfaces remain stable while future workflow views swap in.
Backup Health
unknown
Last Backup
no record found
Storage
Backblaze B2
Backups
Status
No backup record found. The VPS writes /opt/build-factory/data/last-backup.json after each successful backup run. Verify the nightly workflow is configured and has run at least once.
Schedule
Backup runs nightly at 02:00 UTC via .github/workflows/backup-sqlite.yml. The workflow SSHs to the VPS and runs scripts/backup-sqlite.sh, then uploads the compressed, checksummed file to Backblaze B2.
Alert threshold: backup overdue after 25 hours.
Restore
Full restore procedure: backup-restore.md
Emergency steps: stop the app container, copy the backup from B2 to /opt/build-factory/data/factory.db, restart. See the runbook for the full terminal walkthrough.