Date: 2026-02-22 Status: Paused (context checkpoint) Origin: MDF Webseiten session 0032
SL detect_env() — was returning "seriousletter" instead of the env name; now scans path components for first match after "data"MDF list_backups() indentation bug — try block was at same level as for loop, only parsed the last backup filepromote config to registry.yaml for mdf (rsync), seriousletter (git), ringsaday (git) — each defines promote type, branch mapping, post-pull behaviorpromote Typer command to SL sync.py — git fetch, diff preview, git pull, Dockerfile change detection, container rebuild/restart, health check; only dev→int and int→prod allowedcmd_promote to ops CLI — delegates to project CLI with --from/--to argscmd_rebuild to ops CLI — starts containers, waits for health, restores latest backuppromote.py — SSE streaming promote endpointsync_data.py — SSE streaming sync endpointregistry.py — exposes project list + environments + promote config as JSONrebuild.py — SSE streaming rebuild/disaster-recovery endpointbackups.py to read project list from registry API instead of hardcoding/api/registry/stream_ops_host() helper is the standard interface.sync.py), not in the ops CLI or dashboard — keeps enforcement close to the implementation.ops rebuild is the disaster recovery entry point: bring up containers → wait for healthy → restore latest backup. Simple, composable.detect_env() path parsing must handle the full /opt/data/seriousletter/{env}/code/... structure — scanning for VALID_ENVS after "data" in path components is robust./opt/data/seriousletter/{dev,int,prod}/code/scripts/sync/sync.py — fix detect_env, add promote commandCode/mdf-system/scripts/sync/sync.py (local + deployed to dev) — fix list_backups indentation/opt/infrastructure/servers/hetzner-vps/registry.yaml — add promote config per project/opt/infrastructure/ops — add cmd_promote, cmd_rebuild/opt/data/ops-dashboard/app/routers/promote.py — new SSE promote endpoint/opt/data/ops-dashboard/app/routers/sync_data.py — new SSE sync endpoint/opt/data/ops-dashboard/app/routers/registry.py — new registry JSON endpoint/opt/data/ops-dashboard/app/routers/rebuild.py — new SSE rebuild endpoint/opt/data/ops-dashboard/app/routers/backups.py — dynamic project list from registry/opt/data/ops-dashboard/app/main.py — register 4 new routers/opt/data/ops-dashboard/static/js/app.js — Operations page UI + SSE modal/opt/data/ops-dashboard/static/index.html — nav link + ops-modal HTMLTags: #Session #OpsDashboard #OpsCLI #Promote #Sync #Rebuild #Registry