Unveränderter Stand von certvia/dev (a48c5fb) plus Craftvia-Spezifikation und Brandbook unter docs/craftvia/. ISMS-Module werden im Folgecommit entfernt. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
2.8 KiB
2.8 KiB
Kickoff-Prompt — Lane C: App-Code Garage-tauglich
Du übernimmst Lane C der Umstellung MinIO → Garage. Lies docs/KONZEPT-garage-migration.md (v. a. §3 und §4 D3). Kern: Der S3-Code bleibt inhaltlich gleich (AWS SDK v3, forcePathStyle), aber die Selbstheilung ensureBucket() (HeadBucket→CreateBucket) muss weg — Garage unterstützt S3-CreateBucket nicht; Buckets werden von Lane B vorab provisioniert.
Repo & Branch
- origin:
git.certvia.de/msolarczek/certvia— Basis-Branchdev. - Zweiter Remote:
local-gitea=gitea.192.168.1.155.sslip.io/msolarczek/ISMS-Tool. - Arbeite auf
feature/garage-code(ausdev), PR nachdev. Unabhängig von Lane A/B entwickelbar (gegen einen lokalen Garage-Container testen).
Scope (genau diese Dateien)
src/server/storage/adapter.ts—ensureBucket()anpassen.src/server/storage/backup-store.ts—ensureBucket()anpassen..env.coolify.example+.env.example— Kommentare MinIO → Garage,S3_ENDPOINT-Beispielhttp://garage:3900,forcePathStyle-Begründung bleibt gültig.- Tests unter
scripts/(neuer Smoke-Test). - Nicht anfassen: Compose/Infra (Lane A), Provisioning (Lane B), Fachlogik/UI.
Aufgaben
ensureBucket()in beiden Stores von „HeadBucket→CreateBucket" auf nur prüfend umstellen:HeadBucketCommand→ wenn ok, weiter.- Wenn Bucket fehlt/kein Zugriff → klarer Konfigurationsfehler werfen: „Bucket
<name>nicht provisioniert/kein Zugriff — Garage-Provisioning (Lane B) ausführen." KeinCreateBucketCommandmehr. CreateBucketCommand-Import entfernen, wenn ungenutzt (tsc/lint sauber halten).- Beachte:
backup-store.tsschluckt heute den Fehler still — das durch die neue, sprechende Variante ersetzen.
- Region/Endpoint-Doku aktualisieren (Default
S3_REGION=us-east-1bleibt, passend zu Garage-s3_region). - Smoke-Test (
scripts/test-garage-storage.tso. ä.): gegen einen lokalen Garage-Container Put→Get→(List/Delete beim Backup-Store) grün; plus Negativfall „Bucket fehlt → sprechender Fehler".
Vorgaben
- API der Storage-Abstraktion unverändert (
StorageAdapter/BackupStore-Interfaces, Key-Schema, Local-/Stub-Fallback bleiben). - Keine neuen Pflicht-Env;
S3_*-Kontrakt bleibt. - Validierungs-Gate vor PR:
npx tsc --noEmit, Lint,npm run build, allescripts/test-*.tsgrün (inkl. neuem Test). Denk an die bekannte Falle: nichts, was Secrets liest, auf Modulebene aufrufen (Build-Kompatibilität).
Definition of Done
- Beide
ensureBucket()prüfen nur noch, mit sprechendem Fehler bei fehlendem Bucket. - Doku aktualisiert; Smoke-Test grün gegen lokale Garage; Gate grün.
Abhängigkeiten
Zur Laufzeit auf Lane B angewiesen (Bucket muss existieren), aber Code + Tests unabhängig entwickelbar (lokaler Garage-Container).