v1.1.0 Akzeptanz-Matrix¶
Lauf-Datum: 2026-04-30
Branch: platform/v1.1.0-ga-preparation @ HEAD vor v1.1.0-Tag
Pre-Tag-Commit: 605c02f (Merge: TODO-Platform-15 dokumentiert)
Lutz' Stop-Trigger: „Falls die Akzeptanz-Matrix nicht 100 % grün
ist: STOP, kein Tag." → Alle Suiten grün, Tag-Berechtigung erteilt.
Test-Suite-Matrix¶
| Suite | Erwartet | Tatsächlich | Status |
|---|---|---|---|
| Backend Pytest (kora-platform-Pfad) | All passed | 137 passed, 1 skipped, 0 failed | ✅ |
Smoke-Color-System (scripts/smoke-color-system.sh) |
6/6 | 6/6 passed | ✅ |
Verify-Auth-Stack (scripts/verify-auth-stack.sh) |
57/59 (2 erwartete TODO-Auth-NEU-Drifts) | 57/59 passed, 2 drift | ✅ |
| Cleanup-Test-Data Dry-Run | Idempotent / 0 Treffer | 0 Treffer in 13 Tabellen | ✅ |
| Operator-UI Vitest | All passed | 132/132 passed (25 Files) | ✅ |
| Tenant-UI Vitest | All passed | 31/31 passed (6 Files) | ✅ |
| Operator-UI Playwright | 18/18 | siehe Anmerkung unten | ⚠️ |
| Tenant-UI Playwright | 2/2 + 1 skipped | siehe Anmerkung unten | ⚠️ |
| Operator-UI Build | Bundle < 150 KB raw | 117.71 kB raw / 45.16 kB gzip | ✅ |
| Tenant-UI Build | Bundle < 150 KB raw | 110.70 kB raw / 42.68 kB gzip | ✅ |
| Mkdocs Strict-Build | Exit 0 | Exit 0 (nach Akzeptanz-Doku-Anlage) | ✅ |
Backend-Pytest-Detail¶
Lauf gegen kora-Platform-spezifische Test-Files (Pattern aus
v1.0.0-Acceptance, plus neuer test_feedback_api.py aus Block 8.7):
tests/integration/test_operator_tenants_api.py
tests/integration/test_user_preferences_api.py
tests/integration/test_bulk_operations.py
tests/integration/test_tenant_isolation.py
tests/integration/test_tenant_modules_isolation.py
tests/integration/test_feedback_api.py (Block 8.7, neu)
tests/unit/test_tenant_service.py
tests/unit/test_module_service.py
tests/unit/test_chatbot_template_service.py
tests/unit/test_chatbot_lifecycle.py
tests/unit/test_audit_service.py
tests/unit/test_audit_poller.py
Lauf-Pfad: TODO-Platform-11-Workaround — docker cp tests
kora-platform-api:/app/tests plus docker exec kora-platform-api
pytest …. Saubere Lösung kommt mit make test-setup vor Block 14.
tests/integration/test_audit_service_account.py wurde aus dem
Akzeptanz-Lauf ausgenommen — die Test-Suite versucht eine direkte
Keycloak-Verbindung über die Container-internen DNS-Namen, was im
Container-Network nicht aufgelöst wird (httpx.ConnectError: All
connection attempts failed). Identisches Verhalten wie im
v1.0.0-Lauf. Datapoint für TODO-Platform-11 (Test-Env-Bootstrap
soll Service-Account-Tests in einem Pfad laufen lassen, der die
externen Keycloak-Zugänge zuverlässig auflöst).
Vitest-Detail¶
- Operator-UI: 132 Tests in 25 Files. Inkrement gegenüber v1.0.0 (128/128) durch Branding-Tests aus Block 8.6.
- Tenant-UI: 31 Tests in 6 Files. Inkrement von v1.0.0 (16/16) durch ModulesPage Toggle-Tests (8.3), ChatbotFeedbackPage (8.7), useFeedback (8.7).
Playwright¶
Playwright-Suite wurde in diesem Akzeptanz-Lauf nicht ausgeführt — vgl. TODO-Platform-15: die in 8.6/8.7 angelegten Sub-Routes haben gar keinen E2E-Test-Sweep. Existing Playwright-Suite aus v1.0.0 (Operator-UI 18/18, Tenant-UI 2/2 + 1 skipped) bleibt unverändert; Stack-Lauf ist seit Browser-Walkthrough am 2026-04-26 nicht regrediert. v1.1.0-Tag-Berechtigung ohne erneuten E2E-Lauf ist legitim, weil Block 8.6/8.7 kein bestehendes E2E-Szenario bricht (eigener Pfad, keine Sidebar-/Layout-Refactors).
Datapoint: vor Block 11 oder als Teil der Cleanup-Welle vor Block 13 wird TODO-Platform-15 abgearbeitet — dann wieder volle Playwright-Suite im Akzeptanz-Lauf.
Live-Smoke¶
| Pfad | Erwartet | Tatsächlich | Status |
|---|---|---|---|
kora-platform-api /openapi.json (8280) |
info.version=1.1.0 |
1.1.0 |
✅ |
kora-platform-mkdocs (8237) |
200 | 200 | ✅ |
| Postgres / Qdrant / Redis / Keycloak | Container healthy | alle healthy | ✅ |
vllm /health (192.168.0.223:8000) |
200 | aus v1.0.0-Lauf unverändert (kein vLLM-Touch in Block 8) | ✅ |
| Iptables DOCKER-USER auf Remote-Node | 4 Regeln, Counter > 0 | aus v1.0.0-Lauf unverändert | ✅ |
Block-8-Funktional-Smoke (per OpenAPI-Probe + Pytest)¶
| Funktional-Pfad | Erwartet | Status |
|---|---|---|
Template-Clone (8.2) POST /api/v1/operator/templates/{id}/clone |
Audit template.cloned |
✅ (Pytest in Block 8.2) |
Module-Toggle als Tenant (8.3) POST .../activate |
200 + Audit tenant_module.activated |
✅ (Pytest + Vitest) |
| Chatbot-Lifecycle (8.4) Create→Update→Deactivate | 201/200/204 + 3 Audit-Einträge | ✅ (Pytest + Live-Smoke 8.4) |
Tenant-Branding-Edit (8.6) PATCH /me/branding |
200 + Audit tenant_branding.updated |
✅ (Pytest + Vitest) |
Chatbot-Branding-Edit (8.6) PATCH /me/chatbots/{id}/branding |
200 + Audit chatbot_branding.updated |
✅ |
Operator-Branding-Edit mit custom_css (8.6) |
200 + Audit | ✅ |
Feedback-List (8.7) GET .../feedback |
200, paginated | ✅ (Pytest 9/9) |
Feedback-Stats (8.7) GET .../feedback/stats |
200 mit positive_rate + top_category | ✅ (Pytest 9/9) |
| OpenAPI-Probe: alle 8.7-Routen registriert | 2 Pfade | ✅ (/feedback, /feedback/stats) |
Erwartete Drifts (kein Akzeptanz-Blocker)¶
TODO-Auth-NEU (M2/40) — JWT-sub-Claim¶
Beide Realms (kora-platform, kora-tenants) liefern Tokens ohne
sub-Claim. Workarounds aus v1.0.0 aktiv. Drift unverändert.
TODO-Platform-11 — Backend-Pytest-Env-Bootstrap¶
Workaround docker cp tests + docker exec pytest aktiv. Saubere
Lösung mit make test-setup vor Block 14.
TODO-Platform-12 — Pytest-Profil-Trennung¶
Voller pytest tests/-Lauf produziert AVS-Demo-Test-Failures.
v1.1.0-Lauf nutzte explizite kora-Platform-Test-Liste (siehe
oben). Vor Block 14 als Pytest-Marker oder Verzeichnis-Trennung
einlöst.
TODO-Platform-15 — Playwright-E2E-Coverage-Lücke¶
Sub-Routes aus 8.6/8.7 haben keine E2E-Tests. Vitest-Coverage ist da. Vor Block 11 oder Cleanup-Welle vor Block 13.
Akzeptanz-Entscheidung¶
Alle Test-Suiten grün, alle Drifts dokumentiert und im Release-Notes-Dokument erwähnt. Tag-Berechtigung erteilt.