# Session 0023: Toolkit Bootstrap Starting Point **Date:** 2026-02-23 **Status:** Completed **Origin:** MDF Webseiten session 0045 --- ## Work Done - [x] Created `project.yaml` descriptors for all 5 projects (mdf, seriousletter, ringsaday, kioskpilot, ops-dashboard) - [x] Updated `ops-dashboard` docker-compose.yaml: network `coolify` → `proxy` - [x] Added Alpine pre-pull with retry (4 attempts, 15s delays) to `rebuild.py` — note: this was a pre-redesign patch, superseded by Phase 5 rewrite in session 0046 - [x] Added image verification after build to `rebuild.py` - [x] Identified Phase 3+4 toolkit work as next immediate task (was interrupted this session) ## Context / Background This session was primarily about removing Coolify and migrating all projects to standalone Docker Compose. The OPS-relevant outcome is: - All 5 `project.yaml` descriptors now exist and are the source of truth for the toolkit - The `proxy` Docker network replaces the old `coolify` network — all Traefik-exposed containers connect to it - The toolkit build (Phase 3+4) was planned but interrupted mid-session — completed in session 0046 - The plan was documented at: `Notes/swarm/plan.md` (since cleaned up) ## Key Decisions / Learnings - `container_prefix` in `project.yaml` uses `{env}` placeholder (e.g. `"{env}-mdf"`) — the toolkit must expand this at runtime - SeriousLetter uses `"{env}-seriousletter"` as prefix (not `sl`) - ops-dashboard gets its own `project.yaml` like all other projects ## Files Changed - `/opt/data/mdf/project.yaml` — created - `/opt/data/seriousletter/project.yaml` — created - `/opt/data/ringsaday/project.yaml` — created - `/opt/data/kioskpilot/project.yaml` — created - `/opt/data/ops-dashboard/project.yaml` — created - `/opt/data/ops-dashboard/docker-compose.yml` — network coolify→proxy - `app/routers/rebuild.py` — Alpine retry + image verify (pre-redesign, superseded) --- **Tags:** #Session #OpsToolkit #Infrastructure