# Kickoff-Prompt — Lane D: Test, Cutover & Abnahme Du übernimmst **Lane D** (Integration/Abnahme) der Umstellung **MinIO → Garage**. Lies `docs/KONZEPT-garage-migration.md` (v. a. §7 Runbook, §8 Rollback, §9 Abnahmekriterien). **Randbedingung:** nur Test-Instanzen, keine Datenmigration — Neu-Deploy. ## Repo & Branch - **origin:** `git.certvia.de/msolarczek/certvia` — Basis-Branch **`dev`**. - Zweiter Remote (interner Coolify-Test): `local-gitea` = `gitea.192.168.1.155.sslip.io/msolarczek/ISMS-Tool`. Push auf `dev` löst den Test-Deploy aus. - Deploy-Ziel: interne Coolify-Instanz, `certvia.192.168.1.155.sslip.io`. ## Ziel Die integrierten Ergebnisse aus Lane A–C auf der Test-Instanz **per Neu-Deploy** in Betrieb nehmen und **formal abnehmen** — plus abgenommenes Runbook (auch für spätere Prod). ## Aufgaben 1. **Cutover (Runbook §7)** an der Test-Instanz durchspielen: - Im Compose `minio` → `garage` + `garage-provision`; Volumes `garage_meta`/`garage_data`. - Coolify-Env: `S3_ENDPOINT=http://garage:3900`, `S3_REGION=us-east-1`, `GARAGE_RPC_SECRET`, `GARAGE_ADMIN_TOKEN` (literal!), `S3_ACCESS_KEY/S3_SECRET_KEY` = provisionierter Garage-Key. - Deploy; Garage „ready", `garage-provision` legt Bucket/Key/Rechte an. - Optional DB-Reset (wie in bisherigen Deploys), falls alte Objekt-Referenzen stören. 2. **End-to-End-Abnahme (§9)** — alle grün: - Upload (Richtlinie/Nachweis) → Objekt in Garage, `/uploads/…`-Präfix korrekt. - Download (`/files/[...key]`) inkl. korrektem Dateinamen/Content-Type. - Backup-Export `.cvb` (CVB1-Header), Persistenz + Download. - DSGVO-ZIP erzeugt + lesbar. - Restore → Datenintegrität + **Mandanten-Isolation**. - Backup-Historie: List + Aufräumen (Delete-Prefix). - Negativfall: fehlender Bucket → sprechender Konfigfehler (kein stiller CreateBucket). - `scripts/test-backup-*.ts` + `scripts/test-garage-storage.ts` grün gegen die Instanz. 3. **Runbook & Rollback** in `docs/DEPLOY-COOLIFY.md` finalisieren (Schritt-für-Schritt, inkl. „`garage_meta` sichern"). 4. **`minio`-Service + Volumes** erst nach erfolgreicher Abnahme entfernen (bis dahin Rollback-Sicherheitsnetz). ## Vorgaben - **Keine echten Secrets in Chat/Repo/Logs** (`GARAGE_*`, S3-Key). In Coolify **literal** setzen (Interpolationsfalle). - Bei „Container weg ohne Logs" die bekannte **Log-Capture-Technik** nutzen (Logs während des Deploys in Dateien mitschreiben; siehe Deployment-Erfahrungen). - Gefundene Bugs an die jeweilige Lane (A/B/C) zurückspielen, nicht selbst quer patchen. ## Definition of Done - Test-Instanz läuft auf Garage, alle Abnahmekriterien (§9) abgehakt. - Runbook + Rollback dokumentiert und einmal real durchgespielt. - `minio` entfernt (oder bewusst als Netz belassen, dokumentiert). Freigabe für spätere Prod. ## Abhängigkeiten Integriert **Lane A + B + C**. PM koordiniert Reihenfolge (A→B, C parallel) und Go für die Abnahme.