diff --git a/docs/GESAMTPROJEKT-PRUEFPROTOKOLL.md b/docs/GESAMTPROJEKT-PRUEFPROTOKOLL.md index f6028de4..0a09ac5a 100644 --- a/docs/GESAMTPROJEKT-PRUEFPROTOKOLL.md +++ b/docs/GESAMTPROJEKT-PRUEFPROTOKOLL.md @@ -920,3 +920,29 @@ Geprüft dabei: PR #189 (RTE-01), #190 (SEM-03), #191 (INT-14) waren laut Gitea - `scripts/gesamt-token-smoke.sh`: 45/45 bestanden, Rückbau-Snapshot identisch **Neuer main-Head: `bd3b543064daaaa790514732fde3a0026ec78bc4`** (vorher `a684b46c5c1ef4dcb5713c07dda7948ccc320a03`). Kein Deploy — der separat abgeschlossene Rollout auf 131 wurde von dieser Aufgabe nicht angefasst. + +## Nachtrag 37 — VOR-06 (Tenant-Isolation Backchannel), EXT-03 (Extraktions-Validierung), Breaking-Change-Reparatur + +Zwei PRs nach main gemerged (Head vorher `cdf0e580959b7891d7e60b345d4c462599371d9d`): + +- **PR #196 (ai EXT-03, Extraktions-Validierung & Confidence-Score):** rein additiv, Fast-Forward, keine Konflikte. +- **PR #197 (workflow VOR-06, Tenant-Kontext-Validierung im Rückkanal):** echter Sicherheitsfix für VOR-04s Backchannel-API — bislang keinerlei Tenant-Prüfung des mitgelieferten Kontexts, nur physische Pool-Trennung schützte. Jetzt: `backchannel.Service.ForObject` verlangt einen `tenantSlug`-Parameter, geprüft sowohl gegen den Tenant der Akte als auch unabhängig gegen Core's Tenant-Registry (`workflow/internal/tenantregistryclient`, neu, portiert vom DMS-Pendant). `backchannelapi` verlangt jetzt zwingend den Header `X-Tenant-Slug` (401 ohne ihn). + +**Breaking-Change-Reparatur (notwendige Konsequenz des Sicherheitsfixes):** + +Zwei bestehende Aufrufer der Backchannel-API identifiziert und geprüft: +1. `web/mail-search` (UX-09) — rief `GET /objects/.../context` ohne `X-Tenant-Slug` auf, wäre mit VOR-06 auf 401 gelaufen. **Repariert:** `tenant`-Query-Parameter end-to-end ergänzt (`lib/caseContext.ts`, `app/api/case-context/route.ts`, `CaseContextPanel.tsx`, `page.tsx`), analog zum bereits etablierten `tenant`-Parameter-Muster in `app/api/search/route.ts`. Alle betroffenen Tests aktualisiert. +2. `web/workflow-cases` / `caseoverviewapi` — geprüft, ruft `backchannel.ForObject` **nicht** auf (nur strukturell ähnlich, per Code-Kommentar "Kompositionsmuster wie backchannel.go"). Kein Breaking Change, keine Änderung nötig. + +**Nebenbefund (vorbestehend, außerhalb dieses Fixes):** der `user`-Query-Parameter wird von `web/mail-search`s Client nie an die eigene BFF-Route gesendet, obwohl die Route ihn verlangt (400 wäre die Folge) — bestand schon vor VOR-06, nicht repariert (kein Scope dieses Merges), zur Kenntnis. + +**Verifikation:** +- `go build`/`go vet` workflow (20 Pakete) + ai (20 Pakete): sauber +- `web/mail-search`: 40/40 Vitest, `tsc --noEmit` sauber, `next build` erfolgreich +- `web/workflow-cases`: 7/7 Vitest, `next build` erfolgreich (bekannte, vorbestehende `@nexarch/shl`-Symlink-`tsc`-Baseline-Fehler, keine Regression — wie bereits bei VOR-05/APR-03 dokumentiert) +- `scripts/check-port-defaults.sh`: PASS +- `scripts/e2e-core-dms.sh`: `TestCoreE2E_TokenJWKSAndPolicy` PASS, alle 10 Unterfälle +- `scripts/gesamt-token-smoke.sh`: 45/45 bestanden, Rückbau-Snapshot identisch +- `scripts/migrations-fresh-check.sh`: Abbruch wegen fehlender `TEST_TENANT_DSN_B` — bekannte, vorbestehende Umgebungslücke, keine Regression + +Kein Deploy — der separat abgeschlossene Rollout auf 131 wurde von dieser Aufgabe nicht angefasst.