Zum Inhalt

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() auf tenants, 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 Foundation
  • useTenants SWR-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

  1. Alembic 0010 anwenden:
    make migrate-platform
    
    Installiert PG-Trigger set_updated_at() auf tenants, tenant_modules, platform_modules. Existing-Daten werden nicht verändert; nur künftige UPDATEs werden serverseitig getriggert.
  2. Frontend-Build für beide UIs: Operator-UI hat 17 neue Files (E + D1-Anteile); Tenant-UI hat kleinere Patterns-Updates. make redeploy-platform baut und verteilt beide Bundles.
  3. Existing Tenants/Chatbots: keine Daten-Migration nötig — alle Änderungen sind Code-Patterns (Service-Layer + Auth-Wrapper).
  4. Widget bleibt unverändert (Block 11 unangerührt).
  5. 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".