Erstellt: 2026-05-10 (Karte B, Backlog-Inventur)
Stand: Post-Reorg-3 (Merge 9b05330), Post-Cleanup-Folge-1/2/3, Post-K-Security-Saga
Zweck: Single-Source-of-Truth aller offenen Items vor v1.0.0-SaaS-Phase
Diese Seite ist eine aggregierte Bilanz aller Backlog-Quellen — sie ersetzt
ad-hoc-Inspektion einzelner Quellen für Planungs- und Priorisierungs-
Entscheidungen. Detail-Inhalte zu jedem Item bleiben in den Originalquellen
(siehe Quellen-Inventur).
Executive Summary
| Klasse |
Anzahl Items |
Real-Aufwand-Range |
| 🔴 Blockiert (akut) |
4 |
~4–6h |
| 🟠 Strategisch (v1.0.0-Voraussetzung) |
14 |
~130–200h |
| 🟡 Nice-to-have |
~12 |
~30–60h |
| 🟢 Vertagt (langfristig) |
~20 |
~700–900h |
| Total offen |
~50 Items |
~870–1170h |
Karten-Skelette in dieser Inventur: 8 (siehe Karten-Skelette)
— alle 🔴-Items plus 5 strategische 🟠-DSGVO-/CI-/Provisioning-Karten.
Nicht in dieser Inventur enthalten:
- Customer-Handbuch-Inhalt (Karte C — 26 Stub-Pages aus Reorg-3 sind separater Pfad)
- Tududi-Tasks (Karte D — externe Task-Verwaltung)
- v1.0.0-SaaS-Sub-Karten ohne strategischen 🟠-Druck (siehe
SaaS-Detail-Plan als
vollständige Referenz; nur die "klein + kompetenz-foundation"-DSGVO-/CI-
Karten haben hier Skelett-Stubs)
Quellen-Inventur
Gescannte Quellen mit Item-Anzahl pro Quelle:
| Quelle |
Pfad |
Gescannte Items |
| Offene Technische Schulden |
audit-trail/offene-todos.md (2731 LoC) |
57 offen / 5 erledigt |
| Roadmap-Backlog |
roadmap/index.md §Backlog 💭 (Z. 2161+) |
15 Backlog-Einträge |
| Roadmap-Strategie-Pause |
roadmap/index.md §Strategie-Pause |
4 Pfade (A✅/B/C/D✅/E✅) |
| SaaS-Detail-Plan |
architektur/v1-0-0-saas-detail-plan.md Phase 1 |
15 Sub-Karten |
| Changelog |
audit-trail/changelog.md (4818 LoC) |
TODO-Markers stichprobenhaft |
| Cleanup-Welle Discovery |
audit-trail/discovery/cleanup-welle-discovery.md |
D3-Cluster (Sammelbecken vertagter Items) |
| Drift-Status |
audit-trail/discovery/drift-status.md |
6 Familien, 6 Solo-Items (pre-Block-11) |
| K-Security-Action-Plan |
docs/security-hardening/action-plan.md (legacy, AVS-Doku) |
6 Followups + 6 Out-of-Scope |
| Memory |
~/.claude/projects/.../memory/ |
3 Saga-Memories (K-Prompt/K-Postgres/K-Security) |
| Code-Marker |
grep TODO\|FIXME src/kora_platform/ |
52 Marker, alle Verweise auf zentrale TODOs (keine neuen Items) |
Inventur-Methodik: Aggregat-Klassifikation, nicht TODO-by-TODO-Detail-
Übernahme. Detail-Texte bleiben in den Originalquellen. Honesty-over-Coverage:
einzelne TODO-Items aus alten Code-Reviews (z.B. Block 7.X-Familien) sind in
v1.3.0-Welle bereits konsolidiert oder als D3-Cluster verschoben — die hier
genannten Anzahlen sind aktive, nicht historische.
Klassen-Cluster
A. UI-Lücken (Backend existiert, UI fehlt)
| Item |
Quelle |
Aufwand |
Akut |
| Doc-Upload-UI Stub (Block 8.5 Pfad C) |
roadmap §Strategie-Pause Pfad C, doku-ia-audit |
~6h Refined / ~3–5h Real |
🔴 |
| Bulk-UI ohne Progress-Indicator |
TODO-Block-7-4-08 |
~1h |
🟡 |
B. Feature-Backlog (komplett neue Features)
| Item |
Quelle |
Aufwand |
Zielversion |
| Lizenz-Server Stufe 2 |
roadmap §Backlog |
n/a |
v1.1.0+ |
| Unsloth Fine-Tuning |
roadmap §Backlog |
~64h |
v1.1.0+ |
| Custom-LoRA-Adapter-Modul |
roadmap §Backlog |
n/a |
v1.3.0+ |
| VLM Multimodal (Qwen2.5-VL) |
roadmap §Backlog |
~40h |
v1.2.0 |
| OCR-Preprocessing |
roadmap §Backlog |
~15h |
v1.1.0+ |
| SharePoint-Konnektor |
roadmap §Backlog |
~80h |
v1.1.0+ |
| Teams-Konnektor |
roadmap §Backlog |
~80h |
v1.1.0+ |
| Jira-Konnektor |
roadmap §Backlog |
~50h |
v1.1.0+ |
| MCP-Konnektor-Source-Type |
roadmap §Backlog |
~40–60h |
v1.1.0 |
| NVFP4-Quantisierung Benchmark |
roadmap §Backlog |
~4–6h |
Backlog |
| Knowledge-Hub-Modul |
roadmap §Backlog |
~170h |
v2.0.0 |
| Ticket-Eskalation-Integration |
roadmap §Backlog |
~40h (+10–15h Corrective-RAG) |
v1.1.0+ |
| STT / TTS-Integration |
roadmap §Backlog |
~25h STT + ~15h TTS |
v1.1.0+ |
| Kubernetes-Migration |
roadmap §Backlog |
~80h |
v1.x+ |
| Öffentliches Konnektor-SDK Stufe 3 |
roadmap §Backlog |
~200h |
langfristig |
C. v1.0.0-SaaS-Sub-Karten (aus SaaS-Detail-Plan)
| Sub-Karte |
Refined |
Real-Range |
Status |
| B-9 Vendor-UI |
24h |
12–18h |
📋 Scoping |
| B-10 System-Prompt-Automatismus |
16h |
8–12h |
📋 Scoping |
| B-12 Provisioning-Automatisierung |
14h |
9–14h |
📋 Scoping |
| C-19 BGE-M3 (Restphase) |
25h |
12–18h |
📋 in Production-Cutover |
| C-19.5 Reranker-Upgrade |
6h |
4–6h |
📋 Geplant |
| C-20 AST-Aware Chunking |
13h |
7–13h |
📋 Scoping |
| C-13 Konnektor-Framework |
57h |
28–46h |
📋 Scoping (größter Block) |
| C-13b Confluence-Konnektor |
10–25h |
8–20h |
📋 Scoping |
| D-14 Deployment-Paket |
20h |
10–16h |
📋 Scoping |
| D-15 Migration & Go-Live |
12h |
7–11h |
📋 Scoping |
| D-16 Testing & Doku |
30h |
15–25h |
📋 Scoping |
| DSGVO-1 Per-Tenant-Audit-Export (NEU) |
4–6h |
3–5h |
📋 Scoping |
| DSGVO-2 Hard-Delete-Pfad (NEU) |
6–8h |
5–7h |
📋 Scoping |
| DSGVO-3 Per-Tenant-Daten-Export (NEU) |
8–12h |
6–10h |
📋 Scoping |
| CI-1 Multi-Tenant-Pentest-Validation (NEU) |
4–6h |
3–5h |
📋 Scoping |
| E-17 Tenant-SSO-Self-Service |
49h |
n/a |
⏳ Post-Launch v1.0.1/v1.1.0 |
| Total v1.0.0-Boden |
~249h Refined |
~137–222h Real |
|
D. Operational-Schulden
| Item |
Quelle |
Aufwand |
Akut |
| Block-19 Tag-7 Observation-Review + Collection-Cleanup |
TODO-Block-19-Observation-Window + Cleanup |
~30–45min |
🔴 (heute Tag 7) |
| Block-18 Backup-Cleanup |
TODO-Block-18-Backup-Cleanup |
~5min |
🔴 (Trigger 2026-05-16) |
| In-Process-Eval-Runner formalisieren |
TODO-Block-19-Tooling |
~2h |
🟡 |
| Operator-Route-Präfix-Vereinheitlichung |
TODO-Block-7-01 |
n/a (D3-Cluster) |
🟢 |
| KNOWN_ACTIONS-Drift gegen Block 13/14 |
TODO-Block-7-4-04 |
~1h |
🟢 (Block-13-Mitnahme) |
| Pytest-Env-Bootstrap |
TODO-Platform-11 |
~2h |
🟢 (Block-14-CI-Pflicht) |
| Pytest-Profil-Trennung Platform vs. AVS |
TODO-Platform-12 |
~3h |
🟢 (Block-14-CI-Pflicht) |
| Qdrant Backup-Strategie |
TODO-Block-4b |
8–12h |
🟢 (Eigener Block) |
| Tenant-Packages Tier/Limits |
TODO-Block-7-3-01 |
12–16h |
🟢 (Block 12) |
E. Doku-Lücken (zusätzlich zu Karte C Customer-Handbuch)
| Item |
Quelle |
Aufwand |
Akut |
| Konzept §6a.2 + §15 — Block-19-Reranker + Per-Subprocess |
TODO-Block-19-Reconciliation + Lesson |
~1.5h |
🟡 |
| Pattern-Reife-Quote-Trendlinie §17.2 |
TODO-Konzept-02 |
~30–45min |
🟡 |
| q004 Gold-Label Re-Annotation |
TODO-Block-18-Followup-03 |
~1–2h |
🟢 |
F. K-Security-Saga-Followups (Score <80, deferred)
| Item |
Aufwand |
Akut |
| L3-FU-1 Cache-Key-Salt für Pattern-Bumps |
~2h |
🟡 |
| L3-FU-2 Per-Chatbot Pattern-Override für Meta-Content-Bots |
~3h |
🟡 |
L5-FU-1 Defensiver break in _collect_response |
~10min |
🟡 |
| L5-FU-2 Audit-Flush vor metadata-Emit |
~15min |
🟡 |
| L5-FU-3 Multi-Language-Pattern (RU/CJK) |
n/a |
🟢 (Pen-Test-Trigger) |
| L5-FU-4 Smoke G2 Assertion härten |
~10min |
🟡 |
| Phase-3-2 Stream-Architecture-Hardening (Backlog-Karte) |
n/a |
🟢 |
| Smoke-Helper Correction-Event-Disambiguation (Backlog-Karte) |
n/a |
🟢 |
G. Code-Drift / vertagte Cleanup-Folge-Karten
| Item |
Quelle |
Aufwand |
Akut |
| Ruff TC001/2/3 strukturelle Imports-Verschiebung |
Cleanup-Folge-1/3 Out-of-Scope |
~1–1.5h |
🟢 |
| Ruff N818 Exception-Klassen-Rename |
Cleanup-Folge-1/3 Out-of-Scope |
~1.5h |
🟢 |
| EnhancedPDFConverter-Removal |
TODO-Block-18-Followup-01 |
~2h |
🟢 |
H. Out-of-Scope (bewusst nicht in v1.0.0)
Aus K-Security-Saga-Action-Plan §Out-of-Scope und Roadmap-Verweise:
| Item |
Aufwand |
Akut |
| Phase 4b avs-Stack-Decommissioning |
n/a |
🟢 |
| K-Postgres-Korpus-Erweiterung |
~3–4h |
🟢 |
| K-Postgres-Prompt-Domain-Refusal |
~1h |
🟢 |
| Query-Rewrite Pre-Embedding |
~3–5h |
🟢 |
| Per-Token-Streaming Output-Filter |
n/a |
🟢 |
Triage-Updates (Karte D, 2026-05-11)
Aus Saga-Lehren der A1-/A2-/B-/C-Karten hochgestuft bzw. neu angelegt:
Hochstufungen
| Tudidi-ID |
Item |
Vorher |
Nachher |
Begründung |
| #36 |
tudidi-MCP-Fork Endpoints (complete_task reliable) |
🟢 low |
🟠 medium |
Race-Condition + 404-Bugs verhindern reliable Workflow-Sync zwischen Sessions |
Neue Items (Browser-Claude post-Karte-D-Merge in Tudidi anlegen)
| Item |
Project |
Priority |
Klasse |
Aufwand |
Begründung |
| TODO-Platform-11/12 (alembic-CLI im API-Container) |
Operations (8) |
🟠 medium |
🔧 Infra |
~2h |
A1 brauchte manuellen DB-Bump; bei 5+ Code-Karten kumuliert ~2.5h verschwendet |
| TODO-Block-19-Tooling (tests-Mount im Container) |
Operations (8) |
🟠 medium |
🔧 Infra |
~2h |
Integration-Tests laufen nicht im Production-Image; CI-Drift-Risiko bei v1.0.0-Tag |
| TODO-Block-19-5 Reranker-Upgrade bge-reranker-v2-m3 |
Phase C Quality (9) |
🟡 low |
🎯 Qualität |
~4–6h |
Reranker-Bias dokumentiert (q006/q025, MRR −0.0267); nicht regression-blocking |
| Phase-5 Edge-Case-Queries q026–q035 |
Phase C Quality (9) |
🟡 low |
🎯 Qualität |
~2–3h |
aus Block-19-Tag-7-Bericht freigegeben — Akronyme, §-Querverweise, Compound-Edge-Cases |
CI-1-FU-1: RLS-Policy auf platform_audit_log (defense-in-depth) |
Phase A Security (7) |
🟡 low |
🛡️ Sicherheit |
~2h |
CI-1 Phase-0-Discovery: Tabelle ist absichtlich operator-only, RLS würde 2. Schutzschicht bei Tenant-API-Bug bieten |
CI-1-FU-2: Route-Order-Fix operator_audit /export.csv vs. /{entry_id} |
Phase A Security (7) |
🟡 low |
🐛 Bug |
~30min |
CI-1 entdeckt: int-typed /{entry_id} matcht /export.csv vor scope-guard → 422 statt 403; kosmetisch, keine Eskalation |
| CI-1-FU-3: RLS-Performance-Bench (vertagt aus CI-1) |
Phase A Security (7) |
🟢 low |
🎯 Qualität |
~3–4h |
CI-1 Phase-4 vertagt: RLS-Last bei 10 Tenants — eigene Karte, weil Performance-Reorg eigener Pfad ist |
| CI-1-FU-4: RLS-isolierte Negativ-Tests (Honesty-over-Coverage) |
Phase A Security (7) |
🟠 medium |
🛡️ Sicherheit |
~2–3h |
CI-1 Code-Review-Befund: bestehende Suite testet kombinierte App-Layer + RLS Defense; broken RLS bei intaktem App-Check würde nicht erkannt — SQL-Direkt-Assertions via request_scoped_session unter fremdem Tenant-Context |
| DSGVO-1-FU-1: Tenant-Self-Sichtbarkeit von Operator-Cross-Tenant-Audit-Aktionen |
Phase A Security (7) |
🟠 medium |
🛡️ Sicherheit |
~2h |
DSGVO-1 Code-Review: Operator-Export landet als audit-Row mit tenant_id=NULL (write_platform_audit ignoriert ctx-Override) → Target-Tenant sieht in eigenem Self-Service-Export keine Operator-Zugriffe; benötigt force_tenant_id-Override in write_platform_audit oder dedizierten direkten INSERT |
| DSGVO-1-FU-2: Streaming-Export für >50k Row Audit-Logs |
Phase A Security (7) |
🟢 low |
🎯 Qualität |
~3–4h |
DSGVO-1 Code-Review: aktueller 100 000-Cap × 4 KB JSONB = ~400 MB In-Memory worst-case; bei wachsender Audit-Historie StreamingResponse + Server-Side-Cursor nötig |
DSGVO-1-FU-3: Guard gegen vergessenen tenant_filter bei AuditService |
Phase A Security (7) |
🟡 low |
🛡️ Sicherheit |
~1–2h |
DSGVO-1 Code-Review: ohne RLS auf platform_audit_log ist tenant_filter Pflicht für tenant-konsumierende Reads — Wrapper-Klasse TenantScopedAuditService oder grep-Hook verhindert Vergessen |
Akut-Bilanz
| Akut-Bucket |
Anzahl |
Aufwand-Summe |
| 🔴 Blockiert (akut) |
4 |
~4–6h |
| 🟠 Strategisch (v1.0.0-Voraussetzung) |
14 |
~130–200h |
| 🟡 Nice-to-have |
12 |
~30–60h |
| 🟢 Vertagt (langfristig) |
20 |
~700–900h |
🔴-Items im Detail:
- Doc-Upload-UI Stub (~3–5h Real) — Customer-Schmerzpunkt: Admin-Doku
(Karte C-2,
admin/dokumente.md) kann nicht ehrlich sein ohne UI
- Block-19 Tag-7 Observation + Cleanup (~30–45min) — Heute Tag 7
(Cutover 2026-05-03 + 7 = 2026-05-10), Review-Touchpoint + Collection-Delete
- Block-18 Backup-Cleanup (~5min) — Trigger 2026-05-16 (in 6 Tagen)
- (zusammengefasst in den drei oben — vierter "Akut" ist die Customer-
Schwelle der Karte C die ohne Doc-Upload-Stub keinen Sinn ergibt)
Priorisierungs-Tabelle
Empfohlene Reihenfolge nach 🔴-Bucket-Tiefe, dann 🟠-Karten nach
Aufwand-zu-Compliance-Hebel-Ratio (kleine Karten mit Pflicht-Charakter
zuerst):
| # |
Item |
Bucket |
Aufwand |
Begründung |
| 1 |
Block-19 Tag-7 Observation + Collection-Cleanup |
🔴 |
~30–45min |
Trigger heute (2026-05-10) |
| 2 |
Block-18 Backup-Cleanup |
🔴 |
~5min |
Trigger 2026-05-16 |
| 3 |
Doc-Upload-UI Stub (Block 8.5 Pfad C) |
🔴 |
~3–5h |
Karte-C-Voraussetzung, Customer-Schmerzpunkt |
| 4 |
DSGVO-1 Per-Tenant-Audit-Export |
🟠 |
~3–5h |
DSGVO Art. 30-Pflicht, kleinste DSGVO-Karte, Foundation-Reuse hoch |
| 5 |
CI-1 Multi-Tenant-Pentest-Validation |
🟠 |
~3–5h |
Foundation-Reuse hoch (Pentest-Suite v1.0 existing), Compliance-Nachweis |
| 6 |
DSGVO-2 Hard-Delete-Pfad |
🟠 |
~5–7h |
DSGVO Art. 17-Pflicht, mittlerer Aufwand |
| 7 |
DSGVO-3 Per-Tenant-Daten-Export |
🟠 |
~6–10h |
DSGVO Art. 20-Pflicht, Bundle-Schema-Aufwand |
| 8 |
B-12 Provisioning-Automatisierung |
🟠 |
~9–14h |
Blockierend für Migration & Go-Live (D-15) |
Karten 1–8 als Skelette in dieser Inventur. Karten 9+ (B-9 Vendor-UI, B-10
System-Prompt-Auto, C-13 Konnektor-Framework, D-14/D-15/D-16, C-19.5, C-20)
folgen nach DSGVO-Foundation steht.
Karten-Skelette (Top-8)
Format: Saga-Stil mit Scope / Aufwand / Validation / Stop-Bedingungen.
Karte 1 — Block-19 Tag-7 Observation + Collection-Cleanup
name: block-19-tag-7-observation-cleanup
klasse: Operational
scope: |
Tag-7-Observation-Review (Cutover 2026-05-03 + 7d = 2026-05-10):
Grafana-Panels p50/p95/p99 + No-Match-Rate gegen Tag-0-Baseline prüfen,
Bilanz dokumentieren. Bei grünem Status: alte Collection
avs_handbuecher löschen (Snapshot bleibt 30d in backups/qdrant/ als
Recovery-Pfad), Block-19-Phase-5 (Edge-Case-Queries q026-q035) als
nächste Roadmap-Karte freigeben.
aufwand_schaetzung: 30-45min
abhaengigkeiten: keine (Cutover-Stack ist live)
risiko: niedrig (Read-Review + 1 Curl-Delete, Snapshot bleibt)
saga_lehren_anwendbar: [13 (Cleanup-Disziplin)]
validation:
- Grafana-Bilanz dokumentiert in offene-todos.md TODO-Block-19-Observation-Window
- curl DELETE Collection grün
- Backup-Snapshot vorhanden + 30d-Plan
stop_bedingungen:
- Drift > Tag-0-Baseline 20% → Diskussion ob Rollback
- Snapshot nicht auffindbar → STOP, User klären
akut_indikator: 🔴 (Heute Tag 7)
Karte 2 — Block-18 Backup-Cleanup
name: block-18-backup-cleanup
klasse: Operational
scope: |
Pre-Block-18-Production-Backup-Snapshot löschen, ~2 Wochen nach
Production-Switch ohne Rollback-Notwendigkeit. rm-Befehl + Status-
Update in offene-todos.md.
aufwand_schaetzung: 5min
abhaengigkeiten: 2 Wochen Beobachtungs-Window post-Block-18-Switch grün
risiko: niedrig (Backup-Pfad bereits dokumentiert)
saga_lehren_anwendbar: [13]
validation:
- rm /opt/avs-chatbot/backups/qdrant/avs_handbuecher_pre_block18.snapshot
- du -sh backups/qdrant/ zeigt -8.2 MB
- TODO-Block-18-Backup-Cleanup als ✅ markiert
stop_bedingungen:
- Quality-Issue innerhalb Window aufgetreten → STOP, Snapshot behalten
akut_indikator: 🔴 (Trigger 2026-05-16)
Karte 3 — Doc-Upload-UI Stub (Block 8.5 Pfad C)
name: doc-upload-ui-stub
klasse: UI-Lücke
scope: |
Fixer Upload-Konnektor ohne BaseConnector-Framework (Brücke v1.2.0 →
Block 13). UI-Pfad in Tenant-UI auf chatbots/:id/sources mit Upload-
Form (file picker, validation, Backend-Status-Polling). Stub-Source-
Routing-Pfad: chatbot_sources Row mit connector_id=upload-stub,
Volumen kommt mit Block 13 nach.
Customer-Wert: Admin kann selbst Dokument-Upload triggern statt
via Backend-CLI. Karte-C-Voraussetzung: admin/dokumente.md-Page
kann ehrlich befüllt werden.
aufwand_schaetzung: 6h Refined / 3-5h Real
abhaengigkeiten: keine (Stub-Pfad, kein Konnektor-Framework)
risiko: niedrig-mittel (Sunk-Cost-Risiko gegen Block 13)
saga_lehren_anwendbar:
- 1 (Phase-0-Discovery existing chatbot_sources-Schema)
- 13 (Aufwands-Cap mit Sub-Phasen)
validation:
- Admin lädt PDF hoch
- Upload-Status-Polling zeigt "indexed"
- Audit-Eintrag chatbot_source.created vorhanden
- Re-Index-Trigger funktioniert
stop_bedingungen:
- Block-13-Konnektor-Framework-Scope ändert sich grundlegend (Sunk-Cost)
- Backend chatbot_sources-Schema fehlt entgegen Discovery
akut_indikator: 🔴 (Customer-Schmerzpunkt, Karte-C-Blocker)
Karte 4 — DSGVO-1 Per-Tenant-Audit-Export
name: dsgvo-1-per-tenant-audit-export
klasse: Compliance (DSGVO Art. 30)
scope: |
API-Endpoint /api/v1/operator/tenants/{tenant_id}/audit-export der
fünf Audit-Tabellen (vendor_access_log, platform_audit_log,
output_filter_audit, history_persist_filter_audit, input_filter_audit)
für einen Tenant als JSON-Bundle exportiert mit Time-Range-Filter.
aufwand_schaetzung: 4-6h Refined / 3-5h Real
abhaengigkeiten: Block 1 ✅ (Audit-Tabellen)
risiko: niedrig (Read-Only-Operation)
saga_lehren_anwendbar: [13]
validation:
- Bundle enthält genau Rows mit tenant_id == ?
- Cross-Tenant-Leak-Test: 0 fremde Rows in Test-Tenant-A-Bundle
- Bundle-Schema validiert gegen JSON-Schema
stop_bedingungen:
- Cross-Tenant-Leak in Smoke-Test → STOP, Tenant-Filter prüfen
akut_indikator: 🟠 (DSGVO-Pflicht, kleinste DSGVO-Karte, Foundation-Reuse)
Karte 5 — CI-1 Multi-Tenant-Pentest-Validation
name: ci-1-multi-tenant-pentest-validation
klasse: Compliance (DSGVO Art. 32) + Quality-Gate
scope: |
Quick-Win-CI-Erweiterung: Pentest-Suite v1.0 läuft für ZWEI Test-
Tenants (A + B) parallel; Cross-Tenant-Isolation-Stress-Test (200x/0
in CI); Pattern-Coverage-Threshold pro Tenant; Real-Eval-FP-Sweep
pro Tenant gegen je-tenant-spezifische Eval-Result-Files.
aufwand_schaetzung: 4-6h Refined / 3-5h Real
abhaengigkeiten:
- Defense-in-Depth-Saga ✅ (Pentest-Suite-Tag pentest-suite-v1.0)
- Block 16-Test-Suite-Foundation
risiko: niedrig (additive CI-Erweiterung, nicht Runtime)
saga_lehren_anwendbar: [12 (Pentest-Suite-Hardening)]
validation:
- CI-Job grün auf neuem Multi-Tenant-Suite
- Isolation-Stress-Test 0 Cross-Tenant-Leaks bei 200 parallelen Requests
stop_bedingungen:
- Pentest-Suite-Tag pentest-suite-v1.0 nicht stabil → STOP, Suite-Drift-Audit
akut_indikator: 🟠 (Compliance-Nachweis automatisiert, Foundation-Reuse hoch)
Karte 6 — DSGVO-2 Hard-Delete-Pfad mit Backup-Garantie
name: dsgvo-2-hard-delete-pfad
klasse: Compliance (DSGVO Art. 17)
scope: |
Hard-Delete-CLI `kora-platform tenant-purge --tenant-id ...` mit
(a) Postgres-DELETE über alle Tabellen mit tenant_id,
(b) Qdrant-Collection-Drop, (c) Redis-Cache-Invalidate,
(d) Keycloak-User-Delete, (e) Backup-Retention-Note dokumentiert.
aufwand_schaetzung: 6-8h Refined / 5-7h Real
abhaengigkeiten: Block 12 (Soft-Delete-Foundation), Block 14 (Backup-Runbook)
risiko: mittel-hoch (Hard-Delete destruktiv)
saga_lehren_anwendbar:
- 1 (Phase-0-Discovery aller tenant_id-Tabellen)
- 13 (Cleanup-Disziplin)
validation:
- Test-Tenant-Delete: 0 verbleibende Rows mit purged-uuid über alle Tabellen
- Backup-File-Path im CLI-Output
- Operator-Confirmation-Gate getriggert
stop_bedingungen:
- Tenant-ID-Spalte fehlt in Tabelle entgegen Discovery → STOP
- Keycloak-User-Delete-Failure → Rollback-Pfad dokumentieren
akut_indikator: 🟠 (DSGVO-Pflicht, größere Karte)
Karte 7 — DSGVO-3 Per-Tenant-Daten-Export
name: dsgvo-3-per-tenant-daten-export
klasse: Compliance (DSGVO Art. 20)
scope: |
API-Endpoint /api/v1/tenant/data-export der vollständiges Tenant-
Bundle als ZIP exportiert: Chatbot-Konfigurationen, hochgeladene
Dokumente, Feedback-Items, Session-Verläufe, Branding-Assets.
Format JSON + Files, machine-readable.
aufwand_schaetzung: 8-12h Refined / 6-10h Real
abhaengigkeiten: Block 1 ✅, Block 8 ✅
risiko: mittel (Bundle-Vollständigkeit ist Compliance-Anforderung)
saga_lehren_anwendbar:
- 1 (Discovery aller pro-Tenant-Datenquellen)
- 13
validation:
- Test-Tenant-Export auf 3-Chatbot-Tenant zeigt vollständiges Bundle
- Bundle-Diff-Test gegen Live-DB: 0 fehlende Entitäten
stop_bedingungen:
- MinIO-Volumen-Mapping fehlt → STOP, Storage-Audit
akut_indikator: 🟠 (DSGVO-Pflicht, größte DSGVO-Karte)
Karte 8 — B-12 Provisioning-Automatisierung
name: b-12-provisioning-automatisierung
klasse: v1.0.0-Sub-Karte (Phase B, blocker für D-15 Go-Live)
scope: |
Atomare PG+Keycloak-Transaktion mit Kompensations-Logik bei
Teilerfolg (§14.1 Fundament), Soft-Delete mit 30-Tage-Grace (§14.4),
Operator-Alert statt Auto-Retry bei Keycloak-Rollback-Failure.
aufwand_schaetzung: 14h Refined / 9-14h Real
abhaengigkeiten:
- Block 2 (Keycloak-Admin-API)
- Block 4 (Qdrant-Collection-Provisioning)
- Block 7 (Operator-Wizard-UI)
risiko: mittel ("halber Tenant" schlimmer als gar keiner)
saga_lehren_anwendbar:
- 1 (Phase-0-Discovery Keycloak-Admin-API-Quirks)
- 13
validation:
- Forced-Failure-Test bei Keycloak-Group-Anlage löst PG-Rollback aus
- Resultierender DB-State zeigt 0 Ghost-Tenants
- Operator-Alert getriggert
stop_bedingungen:
- Keycloak-Admin-API-Rate-Limit unterhalb Test-Last → STOP, Pause-Strategie
akut_indikator: 🟠 (Migration-Blocker für D-15)
Verweise zu Folge-Karten
- Karte C (Customer-Handbuch-Plan, ~62–91h) — parallel zu Karten 1–3 möglich
- Karte D (Tududi-Tasks) — externe Task-Verwaltung
- Karte E (v1.0.0-SaaS-Sub-Karten) — Karten 4–8 sind Vorzüge daraus
Was diese Inventur nicht ist
- Keine Roadmap-Ersatz —
roadmap/index.md bleibt authoritativ für
Block-Reihenfolge und Status. Diese Inventur aggregiert nur.
- Keine Item-Detail-Übernahme — Detail-Texte (Severity, Datei-Pfade,
Lösungsvorschläge) bleiben in
offene-todos.md und anderen Quellen.
- Kein vollständiger Code-Review-TODO-Pool — Block-7-X-Familien aus
offene-todos.md sind teilweise in v1.3.0-Welle konsolidiert; Detail-
Status pro Item siehe Originalquelle.
Quellen: siehe Quellen-Inventur. Pattern: Saga-Lehre 13
(Honesty-over-Coverage). Befüllungs-Plan: 8 Karten-Skelette in dieser Datei,
Folge-Implementierungen separat.