All checks were successful
Deploy Development / deploy (push) Successful in 46s
Test Suite / pytest-backend (push) Successful in 4m13s
Test Suite / lint-backend (push) Successful in 3s
Test Suite / compose-smoke (push) Has been skipped
Test Suite / k6 /api/health Baseline (push) Successful in 19s
Test Suite / playwright-smoke (push) Successful in 12s
Methodenuebergreifende Provider auf Kernel v0.3; verbindliche Coding Rules fuer Agenten in ADP und .cursor/rules. Co-authored-by: Cursor <cursoragent@cursor.com>
62 lines
3.4 KiB
Plaintext
62 lines
3.4 KiB
Plaintext
---
|
|
description: Archetyp-/Methoden-Plugin-Architektur (AP2.3/AP2.4) — verbindlich für neue Implementierungen
|
|
globs: backend/steering/**,backend/entity_archetypes/**,backend/services/operating_context.py,frontend/src/registry/**,frontend/src/pages/**,frontend/src/context/InitiativeOperationsContext.jsx
|
|
alwaysApply: true
|
|
---
|
|
|
|
# Kairo Plugin-Architektur (AP2.3 / AP2.4)
|
|
|
|
Verbindliche ADPs: `docs/architecture/ADP_Archetype_Method_Plugin_Architecture_v0.1.md`, `docs/architecture/ADP_AP2_4_Steering_Elements_and_Method_Contract_v0.1.md`, `docs/architecture/ADP_Steering_Kernel_Spine_v0.1.md`, **`docs/architecture/ADP_Steering_Kernel_Coding_Rules_v0.1.md`**, **`.cursor/rules/kairo-steering-kernel.mdc`**
|
|
|
|
## Vier Schichten — Auflösung zur Laufzeit
|
|
|
|
| Schicht | Registry | Liefert |
|
|
|---------|----------|---------|
|
|
| **Archetyp** | `entity_archetypes` + `ui_profile_json` | Nav, Routen, Plan-Outline, `om_capabilities` |
|
|
| **Methode** | `steering/methods/registrations/` | `data_slices`, `steering_elements`, `ui_features`, `graph_profile`, Strategie |
|
|
| **Element** | `steering/elements/registry.py` + FE `steeringElementRegistry.js` | Control-/Work-Bausteine |
|
|
| **Runtime** | `GET /api/initiatives/:id/operating-context` + **`steering/kernel/evaluate_steering()`** | Plugin-Auflösung + **Herzmaschine** |
|
|
|
|
```text
|
|
data_slices = archetype.om_capabilities ∩ method.data_slices
|
|
steering_elements = method.steering_elements (nur Methode)
|
|
ui_features = method.ui_features (nur Methode)
|
|
nav / routes = archetype.ui_profile (nur Archetyp)
|
|
```
|
|
|
|
Archetyp-Default-Methode ist **Empfehlung**, nicht Lock — kompatible Methoden über `compatible_archetype_keys` + `om_capabilities`.
|
|
|
|
## Erweitern (Open/Closed)
|
|
|
|
**Neue Methode:** neues Modul unter `steering/methods/registrations/` → `MethodDefinition` vollständig → Import in `steering/__init__.py` → pytest. **Kein** Core-Edit.
|
|
|
|
**Neuer Archetyp:** Seed in `entity_archetypes/registry.py` + `ui_profiles.py` + optional EFS — **kein** React-If in Pages.
|
|
|
|
**Neues Steuerungselement:** Eintrag in `steering/elements/registry.py` + FE `steeringElementRegistry.js`; Methoden referenzieren nur registrierte Keys.
|
|
|
|
## Frontend — verbindlich
|
|
|
|
- UI aus `operating-context` via `resolveOperatingProfile.js`
|
|
- Control/Work: `hasSteeringElement(steeringElements, '…')` — **keine** `archetype_key === 'initiative.…'`-Ifs
|
|
- Daten: `loadOperatingSlices` / `refreshOm([…])` — **kein** Full-Reload nach Mutationen
|
|
- Route Gating: `OperatingRouteGate` + `MODE_ROUTE_GROUPS`
|
|
- Provider: `ScopedOperationsBridge` (ein Provider pro Vorhaben)
|
|
|
|
## Verboten
|
|
|
|
- `uiFeatures` am Archetyp-Profil (deprecated — nur Methode)
|
|
- Hardcodierte Methoden-UI in `methodUiDefaults.js` für **neue** Archetypen
|
|
- Parallele Steuerungslogik außerhalb `backend/steering/`
|
|
- Methoden-Dropdown ohne Archetyp-Filter (`GET /steering/methods?archetype_key=…`)
|
|
- **Initiative-Steuerung** (Next, Attention) außerhalb `steering/kernel/evaluate_steering()` — siehe `ADP_Steering_Kernel_Spine_v0.1.md`
|
|
|
|
## Fallback (legacy)
|
|
|
|
`methodUiDefaults.js` nur wenn Operating Context fehlt — nicht für neue Features erweitern.
|
|
|
|
## Abnahme neuer Archetyp-/Methoden-Slices
|
|
|
|
- Operating Context liefert `steering_elements` + `ui_features`
|
|
- pytest für Methoden-Vertrag (`test_ap24_*`) grün
|
|
- Spec unter `docs/product/archetypes/` referenziert Elemente und kompatible Methoden
|