Kora Platform v1.3.0 — Release Notes¶
Released: 2026-05-02
Tag: v1.3.0
Predecessor: v1.2.0 — Block 11 Widget-Integration
Was ist v1.3.0?¶
v1.3.0 ist ein Disziplin-Tag: Wartungsschuld-Reduktion vor Block 13 (Konnektor-Framework) plus ein eingelöstes Customer-Wert-Datapoint aus dem Block-11-Hand-off. Drei-Sub-Block-Welle:
- D2 Backend Polish (
bb0abbd) — 17 TODOs aus Block-7-Review- Familien geschlossen (Audit-Hygiene, Service-Patterns, Schema- Migration, Bulk-Hardening). - D1 Frontend Polish (
18c4884) — 16 TODOs + 2 D2-Last-Mile-Items geschlossen (Component-Konsolidierung, Composable-Patterns, Caching). - E Operator-Per-Chatbot-Page (
f5baf0f) — Operator bekommt diagnostische Cross-Tenant-Sicht auf einzelne Chatbots ohne Tenant-Kontext-Wechsel.
Welle-Real-Aufwand: ~13h vs. ~42.5–44.5h Refined (~30 % Quote). Pattern-Reife aus Block 8 + Block 11 zahlt direkt ein.
Highlights¶
Cleanup-Welle ohne Feature-Cluttering¶
D2 + D1 sind reine Cleanup-Wellen (TODO-Schließung, kein neues Feature). Quote-Datapoints (23 % / 31 %) zeigen: Cleanup-Wellen sind systematisch schneller als die Refined-Schätzungen erwarten lassen — Foundation- Reuse aus etablierten Patterns ist hoch. Der Datapoint geht in Konzept-§17.2-Reconciliation (TODO-Konzept-02 pending).
D2 hat unter anderem geliefert:
- Zentraler
scope_guards.py-Helper (Routen ziehen Guards zentral statt lokaler Kopien) - Alembic 0010 mit PG-Trigger
set_updated_at()auftenants,tenant_modules,platform_modules - Bulk-Refactor mit
MAX_BULK_ITEMS=500-Cap und Multi-Row-Statements in beiden Bulk-Endpoints - Neue Service-Endpoints (Modul-Detail, Tenant-Modules-Aggregate)
D1 hat darauf aufgesetzt:
flattenError/trimEqual/listsEqual-Helper als FoundationuseTenantsSWR-Cache (30 s TTL, Mutation-Invalidation)- ListInput-A11y mit Tastatur-Reorder + Live-Region
- Optimistic-Updates für TenantModulesSection
Operator-Per-Chatbot-Page als Customer-Wert-Datapoint¶
Block 11 hatte als Hand-off-Datapoint dokumentiert: Operator hat keine
Per-Chatbot-Sicht. v1.3.0-E löst das ein — Sub-Route
/tenants/{tid}/chatbots/{cid} mit vier vertikal gestapelten Read-
Sektionen (Übersicht, Branding-Override, Feedback, Embed-Code-Snippet).
Saubere Achse-Trennung: Operator-View ist diagnostisch, nicht
operational. Edit/Override-Edit/Löschen bleibt Tenant-Verantwortung
(diagnostischer Banner macht das explizit).
Vier Backend-Endpoints, alle reine Auth-Wrapper auf die existierenden Services aus Block 8.4/8.6/8.7 — keine Service-Layer-Änderung nötig. EmbedCodeSnippet aus Block 11 standalone direkt einbettbar.
Foundation für Block 13¶
D2 hat den scope_guards.py-Helper konsolidiert und den
KNOWN_ACTIONS-Drift-Anteil aus Block-7-4-04 bedient. Block 13 startet
damit auf etablierten Patterns, nicht auf doppelten Drift-Versionen.
Audit-Helper, Bulk-Pattern und Aggregate-Endpoints sind sauber genug,
dass neue Konnektor-Routen direkt einsteigen können.
Pattern-Reife-Quote-Trendlinie¶
Mit drei v1.3.0-Datapoints (D2 23 %, D1 31 %, E ~50 %) plus existing Block-8-Schnitt 60 % und Block 11 (40 %) lässt sich die Quote nach Block-Typ kalibrieren:
| Block-Typ | Quote-Erwartung |
|---|---|
| Cleanup-Welle Backend | ~25 % |
| Cleanup-Welle Frontend | ~30 % |
| Foundation-Reuse hoch | ~40 % |
| Foundation-Reuse + neuer Code | ~50 % |
| Foundation-erweiternd (neue Achse) | 50–80 % |
TODO-Konzept-02 (pending nach Tag) wird das in §17.2 als Reconciliation einarbeiten — analog zur TODO-Konzept-01-Auflösung aus dem v1.2.0-Lauf.
Test-Erweiterung¶
| Suite | v1.2.0 | v1.3.0 | Delta |
|---|---|---|---|
| Backend Pytest (Integration) | 13 | 22 | +9 (operator_chatbots_api) |
| Operator-UI Vitest | 134 | 178 | +44 (D1-Suite + E-17-Specs) |
| Tenant-UI Vitest | 34 | 34 | 0 |
(Backend-Pytest-Delta aus E; D2/D1-Backend-Tests landen in
tests/kora_platform/ und sind im Akzeptanz-Lauf separat erfasst.)
Drift-Schließungen¶
TODO-Block-7-NN- / -7-3- / -7-4-*-Anteile¶
Aus den Block-7-Review-Familien wurden geschlossen: 7-NN-01 (Scope- Guards), 7-NN-04 + 5g (Alembic 0010), 7-3-Backend-Anteil (Tier/Limits- Discovery, useModule-Detail-Endpoint), 7-4-Backend-Anteil (Bulk-Cap, CSV-forensische-Felder, Date-Range-Validation). Plus 16 D1-IDs aus 7-1b/7-2/7-3-Frontend.
Restliche D3-Items bleiben offen — siehe „Bekannte Drifts" unten.
Block-11-Hand-off-Datapoint¶
Die in den v1.2.0-Release-Notes als „Discovery-Datapoint" dokumentierte Operator-UI-Per-Chatbot-Page-Lücke ist mit v1.3.0-E geschlossen.
Bekannte Drifts¶
TODO-Auth-NEU (M2/40, von v1.0.0)¶
JWT-sub-Claim fehlt. Workarounds aktiv. Fix in v1.x.
TODO-Platform-11 / 12 (Pytest-Env, Profile)¶
Pytest-Workarounds aktiv (docker cp tests/-Pattern). Trigger vor
Block 14 (CI-Pipeline).
TODO-Block-7-Review-Familien-Rest (D3)¶
- 7-NN-05 (Supply-Chain
pydantic[email]): vor v1.0.0-GA-Audit- Erweiterung - 7-3-01 (Pakete/Tier/Limits): Block 12 (Tenant-Provisioning)
- 7-4-04 (KNOWN_ACTIONS-Drift-Rest): Block 13/14 (wird mit neuen Actions natürlich erweitert)
- 7-4-05 (Playwright
workers:1): Trigger > 50 Specs (heute 8) - 4b (Qdrant-Backup): eigener Operations-Block (~8–12h)
TODO-Konzept-02 (pending)¶
§17.2-Reconciliation für Pattern-Reife-Quoten pro Block-Typ. Mini-Run nach v1.3.0-Tag (~30–45 min) — analog zu TODO-Konzept-01 aus v1.2.0.
Nicht im Scope von v1.3.0¶
Block 8.5 — Sources-Management¶
Blockiert von Block 13 (Konnektor-Framework) oder Pfad-C-Stub.
Block 12 — Tenant-Provisioning¶
Cross-Tenant-Operator-View ist eigene Achse. Schließt TODO-Block-7-3-01 (Tier/Limits/Pakete).
Block 13 — Konnektor-Framework (~57h)¶
Größter Tech-Hub. BaseConnector + Modul-Registry + Credential-Store
+ Sync-Scheduler. Foundation für 8.5 + Phase C (Confluence,
MediaWiki, MS-System-Connector).
Migration von v1.2.0¶
- Alembic 0010 anwenden:
Installiert PG-Trigger
set_updated_at()auftenants,tenant_modules,platform_modules. Existing-Daten werden nicht verändert; nur künftige UPDATEs werden serverseitig getriggert. - Frontend-Build für beide UIs: Operator-UI hat 17 neue Files
(E + D1-Anteile); Tenant-UI hat kleinere Patterns-Updates.
make redeploy-platformbaut und verteilt beide Bundles. - Existing Tenants/Chatbots: keine Daten-Migration nötig — alle Änderungen sind Code-Patterns (Service-Layer + Auth-Wrapper).
- Widget bleibt unverändert (Block 11 unangerührt).
- Bulk-Endpoints: Empty-List-Body ergibt jetzt 422 (vorher 400). Falls Caller existieren, die explizit auf 400 prüfen — anpassen.
Was kommt als Nächstes?¶
Strategie-Pause aktiv. Lutz-Entscheidung pending zwischen:
| Pfad | Inhalt | Refined |
|---|---|---|
| B | Block 13 Konnektor-Framework | ~57h |
| C | Block 8.5 Stub-Variante (vor Block 13) | ~6h |
Plus eigener Mini-Run:
- TODO-Konzept-02 (~30–45 min): §17.2-Reconciliation mit Pattern-Reife-Quote-Trendlinie
Siehe Roadmap-Sektion „Strategie-Pause nach v1.3.0".