All checks were successful
Deploy Development / deploy (push) Successful in 50s
Test Suite / pytest-backend (push) Successful in 3m49s
Test Suite / lint-backend (push) Successful in 2s
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
apply_steering_event an Action done, Gate verify/reopen und Blocker resolve; lifecycle-Ketten methodenaware via slot_map; continuous_product slot_map; pytest v0.2. Co-authored-by: Cursor <cursoragent@cursor.com>
105 lines
3.9 KiB
Markdown
105 lines
3.9 KiB
Markdown
# ADP — Steering Kernel Spine v0.1
|
|
|
|
**Status:** PO-freigegeben — **Implementierung aktiv** (2026-07-26)
|
|
**Stand:** 2026-07-26
|
|
**Bezug:** `Kairo_Steering_Method_Kernel_v0.1.md`, `ADP_AP2_4_Steering_Elements_and_Method_Contract_v0.1.md`, Normierungsprogramm M5
|
|
**Ersetzt nicht:** AP2.3/AP2.4 Plugin-Schicht — **setzt darauf auf**
|
|
|
|
---
|
|
|
|
## 1. Problem
|
|
|
|
Steuerungslogik (Next Action, Attention, Horizont) entsteht heute **verstreut** in Strategies, `signals/engine.py` und Snapshot-Hilfsregeln. Es gibt **keinen** zentralen Runtime-Einstieg — Produkt wirkt unführbar, Spec-Kern (M1c) ist nicht im Code.
|
|
|
|
**PO-Entscheidung:** Erst **Herzmaschine** (Kernel Spine), dann Archetyp-Slices und UI.
|
|
|
|
---
|
|
|
|
## 2. Scope Lock — Spine v0.1 (schmal)
|
|
|
|
### In Scope
|
|
|
|
| # | Lieferung |
|
|
|---|-----------|
|
|
| K1 | `backend/steering/kernel/` — **einziger** Einstieg `evaluate_steering()` pro Vorhaben |
|
|
| K2 | `SteeringBinding` — Primary-Methode + optional Composition (`agile_iteration`) |
|
|
| K3 | `HorizonMarker` — aktives Gate / aktiver Sprint |
|
|
| K4 | `next_work` + `attention` — nur über Spine; Snapshot/API für Initiative |
|
|
| K5 | Event-Ingress **Stub** `apply_steering_event()` (Plan-Methoden: no-op) |
|
|
| K6 | Referenz-Abnahme: **A2** + `sequential_dependency` (+ Agile-Komposition) |
|
|
|
|
### Out of Scope (v0.1)
|
|
|
|
- Voller 12-Schritt-Lifecycle-Orchestrator als Schleife
|
|
- Nested Programm-Impulse (B2a P0)
|
|
- Event-Methoden C1/Care voll
|
|
- Neue OM-Tabellen
|
|
- Frontend-Umbau (nutzt bestehende Snapshot-Felder)
|
|
|
|
---
|
|
|
|
## 3. Architektur
|
|
|
|
```text
|
|
GET …/steering-snapshot ─┐
|
|
data_layer/attention ─┼─► steering.kernel.evaluate_steering()
|
|
signals/engine (init.) ─┘ │
|
|
├─ resolve_binding (primary + modifier)
|
|
├─ resolve_horizon
|
|
├─ next_work (Strategy via binding)
|
|
└─ attention (method-aware, horizon-scoped)
|
|
```
|
|
|
|
**Stop-the-line:** Keine neue Steuerungsheuristik außerhalb `backend/steering/kernel/` und registrierten Method-Strategies, die **nur** vom Kernel aufgerufen werden.
|
|
|
|
---
|
|
|
|
## 4. Abnahme (DoD)
|
|
|
|
1. A2 Happy Path Spec §9: Next im Gate-Horizont, blockiert → Attention, kein Fake-Next
|
|
2. Agile: Primary ohne Sprint; Sprint aktiv → `work_cycle_ready` ∩ Horizont
|
|
3. pytest `test_ap_kernel_spine.py` + `test_ap22c_*` grün
|
|
4. Kein Initiative-Snapshot-Pfad umgeht `evaluate_steering()`
|
|
|
|
---
|
|
|
|
## 5. Migration
|
|
|
|
| Alt | Neu |
|
|
|-----|-----|
|
|
| `signals/engine.evaluate(..., initiative_id=…)` | delegiert an Kernel |
|
|
| Composition-If in `engine._resolve_next_action_strategy_key` | `kernel/binding.py` |
|
|
| Horizont in einzelnen Strategies | `kernel/horizon.py` + Strategies konsumieren Scope |
|
|
|
|
Strategies bleiben **Plugin-Lieferanten** — werden nicht dupliziert, aber nur über Kernel geroutet.
|
|
|
|
---
|
|
|
|
## 6. Nächste Phasen (nach Spine ✓)
|
|
|
|
1. Zweite Methode durch dieselbe Spine (`continuous_product`)
|
|
2. `checklist_flow`, `care_navigation` als Plugins
|
|
3. Event-Ingress für hybrid/event-Methoden
|
|
4. Lifecycle-Schleife schrittweise (nicht Big Bang)
|
|
|
|
### Phase v0.1.1 (2026-07-26) ✓
|
|
|
|
- `slot_map` in `MethodDefinition` (Spec-D D5) für `sequential_dependency`, `generic_operating`
|
|
- `evaluate_steering()` liefert `lifecycle`: `current_state`, `slot_map`, `active_slots`
|
|
- Snapshot-Feld `steering_kernel.lifecycle`
|
|
|
|
### Phase v0.2 (2026-07-26) — Scope Lock
|
|
|
|
| # | Lieferung |
|
|
|---|-----------|
|
|
| V1 | Event-Ingress: Action `done`, Gate verify/reopen, Blocker resolve → `apply_steering_event()` |
|
|
| V2 | Lifecycle-Kette methodenaware via `slot_map` + minimale Slot-Provider |
|
|
| V3 | `continuous_product` mit `slot_map` durch dieselbe Spine |
|
|
| V4 | pytest `test_ap_kernel_spine_v02.py` |
|
|
|
|
**Out of Scope v0.2:** Voller 12-Schritt-Orchestrator-Loop pro Snapshot; C1/Care event-voll; Frontend.
|
|
|
|
---
|
|
|
|
*Bei Erweiterung: v0.3 weitere Methoden + Event-Methoden — PO-Freigabe.*
|