# Session 0015: Offsite Backup Dashboard Fix & Status Format **Date:** 2026-02-22 **Status:** Completed **Origin:** MDF Webseiten session 0025 --- ## Work Done - [x] Fixed offsite backups not showing in ops dashboard - `/api/backups/offsite` was calling `run_ops_json()` (in-container execution) but `ops offsite list` requires the host Python venv - Added `run_ops_host_json()` helper to `ops_runner.py` using `nsenter`-based host execution - Updated `backups.py` router to use `run_ops_host_json()` for offsite listing - Rebuilt and restarted ops-dashboard container - [x] Reformatted backup list in `ops status` CLI output - Changed from flat table sorted by project to date-grouped boxes - Each date gets its own Rich table: project / env / time / size / total columns - Latest backup per project/env shown, grouped by date descending, sorted by project then env within each date - [x] Fixed SeriousLetter backup path bug (CLI-level fix, required for dashboard data correctness) - SL CLI was dumping backups flat into `/opt/data/backups/` — changed `backup-all.sh` to call SL CLI per-env with explicit `--backup-dir` - Moved 15 orphaned backup files to correct per-env directories - [x] Ran full backup cycle across all 6 environments (MDF + SL x dev/int/prod), verified offsite upload ## Key Decisions / Learnings - Dashboard containers cannot use in-process `ops` commands that require host-side Python venvs — must use `nsenter` bridge. This is a recurring pattern: in-container vs host execution boundary is an important architectural distinction in the ops-dashboard. - Two execution helpers needed: `run_ops_json()` (in-container, fast) and `run_ops_host_json()` (host via nsenter, required for backup/offsite commands). - Date-grouped backup status is more readable than a flat project-sorted table — groups make it obvious if a date was missed entirely. ## Files Changed - `/opt/data/ops-dashboard/app/ops_runner.py` — added `run_ops_host_json()` helper - `/opt/data/ops-dashboard/app/routers/backups.py` — use host execution for offsite listing - `/opt/infrastructure/ops` — reformatted backup summary with date-grouped Rich tables --- **Tags:** #Session #OpsDashboard #BackupSystem #Offsite