230 lines
13 KiB
Markdown
230 lines
13 KiB
Markdown
|
|
# AP2.1 — Validation Findings Register
|
|||
|
|
## v0.1 (PO-Smoke → Architektur-Review)
|
|||
|
|
|
|||
|
|
**Status:** aktiv — wird während AP2.1 ergänzt
|
|||
|
|
**Stand:** 2026-07-28 (A1 Minimum Slice implementiert — PO Re-Abnahme ausstehend)
|
|||
|
|
**Bezug:** `Sprint1_AP2_1_MVP_Validation_Report_v0.3.md`, `Kairo_MVP_Definition_v0.3.md` §5–8
|
|||
|
|
**Dev:** https://dev.kairo.jinkendo.de · nach Deploy Migration **030** + A1-Slice
|
|||
|
|
|
|||
|
|
---
|
|||
|
|
|
|||
|
|
## 1. Zweck
|
|||
|
|
|
|||
|
|
Dieses Register hält **PO-Beobachtungen aus der MVP-Validation** fest und ordnet sie architektonisch ein:
|
|||
|
|
|
|||
|
|
| Kategorie | Bedeutung |
|
|||
|
|
|-----------|-----------|
|
|||
|
|
| **Bug** | Abweichung vom **aktuellen** Soll (Spec + gelieferte Architektur) — Fix ohne ADP |
|
|||
|
|
| **Config-Drift** | Inkonsistenz innerhalb der Plugin-/Profile-Schicht (kein Modellbruch) |
|
|||
|
|
| **Implementierungsschuld** | Architektur und Spec stimmen; Code liefert Teilmenge |
|
|||
|
|
| **Aufgeschoben (Spec)** | Explizit in Archetyp-/Methoden-Spec oder ADP als „später“ / Stufe B+ |
|
|||
|
|
| **Architektur-Lücke** | Zielmodell dokumentiert, tragfähige Basis fehlt oder widerspricht sich **über** Spec hinaus |
|
|||
|
|
|
|||
|
|
**Leitfrage des Reviews:** Brauchen wir ein **neues Architektur-Design**, oder ist die Plugin-/Kernel-Schicht korrekt und es fehlen **Slices**?
|
|||
|
|
|
|||
|
|
---
|
|||
|
|
|
|||
|
|
## 2. Architektur-Urteil (Stand nach A1-Smoke)
|
|||
|
|
|
|||
|
|
### 2.1 Kurzfazit (technisch)
|
|||
|
|
|
|||
|
|
**Kein generelles Architektur-Design-Problem.** Die vier Schichten (Methode → Archetyp → Profil → UI-Composition, AP2.3/AP2.4) tragen den A1-Happy-Path **technisch**.
|
|||
|
|
|
|||
|
|
### 2.1b PO-Produkturteil A1 (2026-07-28)
|
|||
|
|
|
|||
|
|
**No-Go für echten Einsatz** — unabhängig vom grünen E2E-Test.
|
|||
|
|
|
|||
|
|
> Leitfrage lässt sich nicht sinnvoll beantworten. Für tagesbezogenes Tracking (durchgeführt; optional Messwerte wie Anzahl, 45°-Spagat), aktive Einschätzung des Gate-Fortschritts und übersichtliche Steuerung ist der Vorhabentyp **unbrauchbar**. Hürden > Nutzen.
|
|||
|
|
|
|||
|
|
| Dimension | Technische Validation | PO-Produktnutzen |
|
|||
|
|
|-----------|----------------------|------------------|
|
|||
|
|
| Happy Path (Anlage → Verify) | ✓ | ◐ — nur Demo, kein Alltag |
|
|||
|
|
| Leitfrage ≤2 Min (MVP §5.6) | — | **✗** |
|
|||
|
|
| Tages-Tracking / Übung erledigen | ✗ | **Blocker** |
|
|||
|
|
| Messgrößen / Metriken | ✗ | **Blocker** (PO) |
|
|||
|
|
| Gate-Fortschritt sichtbar steuerbar | ◐ | **✗** |
|
|||
|
|
| Übersichtlichkeit | ◐ | **✗** |
|
|||
|
|
|
|||
|
|
**Architektur-Einordnung:** PO-Anforderungen stehen **bereits in SPEC A1 / Spec-D** (CadenceInstance, Tages-Übung, Kriterien, Metriken). Es fehlt nicht ein neues Design — es fehlt der **Minimal-Slice für nutzbaren A1**, der fälschlich als „post-MVP“ behandelt wurde.
|
|||
|
|
|
|||
|
|
**Konsequenz AP2.1 / MVP Stufe A:** A1 erfüllt **nicht** die MVP-Nutzbarkeits-Bar §5 für PO-Abnahme. Gesamt-Go Stufe A **blockiert**, solange A1 Pflicht-Szenario bleibt (`Kairo_MVP_Definition_v0.3.md` §4).
|
|||
|
|
|
|||
|
|
Die Validation zeigt drei **Lückentypen**:
|
|||
|
|
|
|||
|
|
```text
|
|||
|
|
(1) Config-Drift planOutlineKeys ≠ dataSlices → schneller Fix
|
|||
|
|
(2) Spec-Deferred CadenceInstance, Alternanz, metric → geplant, Spec §11
|
|||
|
|
(3) Polymorphie-Gap Kernel Q2 Work-Items: BE ja, FE nein → Implementierungsschuld
|
|||
|
|
```
|
|||
|
|
|
|||
|
|
### 2.2 Referenz-Architektur (Prüfmaßstab)
|
|||
|
|
|
|||
|
|
| Dokument | Rolle |
|
|||
|
|
|----------|--------|
|
|||
|
|
| `ADP_Archetype_Method_Plugin_Architecture_v0.1.md` | Route Gating, Slices, kein Page-If |
|
|||
|
|
| `SPEC_A1_maturity_journey_v0.1.md` §4, §8, §11 | A1-Fachmodell + Ist-Stand-Tabelle |
|
|||
|
|
| `methods/SPEC_D_maturity_progression_v0.1.md` D4–D6 | Leading = CadenceInstance; Ranking |
|
|||
|
|
| `ADP_Roadmap_Graph_and_Gate_Checklist_v0.1.md` | Kriterien, Evidence, `metric` später |
|
|||
|
|
| `Kairo_Steering_Method_Kernel_v0.1.md` Q2 | Work-Item-Polymorphie |
|
|||
|
|
| `Kairo_Steering_Method_Normalization_Program_v0.1.md` | CadenceInstance als Normalform |
|
|||
|
|
|
|||
|
|
### 2.3 Was **nicht** neu designt werden muss
|
|||
|
|
|
|||
|
|
- Archetyp ↔ Methode ↔ UI-Profil (Operating Context)
|
|||
|
|
- Gate-Verify + Kriterien-Checkliste (AP1.4b)
|
|||
|
|
- Stufenwechsel + Recurring-Rotation (AP2.0e)
|
|||
|
|
- Composition-Slots (`maturity_stage`, `recurring_rhythm`, `work.today`)
|
|||
|
|
|
|||
|
|
---
|
|||
|
|
|
|||
|
|
## 3. Findings — Szenario A1 (Spagat / Reifegrad)
|
|||
|
|
|
|||
|
|
**PO-Validation:** 2026-07-28 · Vorhaben „Spagat können“ · `initiative.maturity_journey`
|
|||
|
|
**Urteil A1:** **No-Go (Produkt)** · technischer Kernpfad ✓ · MVP §5 für PO **✗**
|
|||
|
|
|
|||
|
|
| ID | PO-Beobachtung | Kategorie | Architektur-Urteil | MVP Stufe A | Follow-up |
|
|||
|
|
|----|----------------|-----------|-------------------|-------------|-----------|
|
|||
|
|
| **F-A1-01** | Klick **Plan → Eingang** leitet auf **Zielzustände** um | **Config-Drift** | `planOutlineKeys` enthält `inbox`, `dataSlices` ohne `backlog` → Route Gating korrekt, Nav falsch. **Kein Modellproblem.** Spec A1 §8: Eingang „nicht dominant“. | Mitverantwortlich Unübersicht | **Fix:** `inbox` aus `planOutlineKeys` bei `initiative.maturity_journey` |
|
|||
|
|
| **F-A1-02** | Keine Konfiguration **Wochentage / Rhythmus**; kein **Tages-Tracking** („heute erledigt“) | **Implementierungsschuld** (Spec-Pflicht) | Spec A1 §4.3–4.5 + Spec-D D4: `CadenceInstance`. Code: nur `RecurringElement` + Fälligkeit. **Kein Designbruch — fehlender Kern-Slice.** | **PO-Blocker** | **AP A1-Cadence-MVP:** Instanz + „heute erledigt“ |
|
|||
|
|
| **F-A1-03** | **Ausführen:** AP statt Übung; Rhythmus-Link tot; AP nicht öffenbar | **Implementierungsschuld** | Kernel Q2: Leading = CadenceInstance; FE verlinkt nur Actions. | **PO-Blocker** | **AP A1-Work-UI** |
|
|||
|
|
| **F-A1-04** | Kriterien auto-erfüllt via Evidence; keine laufende Gate-Einschätzung | **By Design** + **Lücke UX** | AP1.4b korrekt für Verify-Moment; PO braucht **Fortschrittsbild** während Stufe (Spec A1 §8 Kontrolle). | **PO-Blocker** (Einschätzung) | Fortschritts-Panel + manuelle/metric Kriterien |
|
|||
|
|
| **F-A1-05** | Keine Messung (4×/Woche, 80 Punkte, 45° Spagat, …) | **Implementierungsschuld** (Spec vorbereitet) | `criterion_kind: metric` + Cadence-Erfüllung geplant; keine Engine. Schema reicht — **Feature fehlt, kein ADP neu.** | **PO-Blocker** | Messwert am Tagesabschluss + optional metric-Kriterium |
|
|||
|
|
| **F-A1-06** | Keine **kontinuierliche** Fortschrittskontrolle in der Stufe | **Implementierungsschuld** | Plan/Ist-Trennung korrekt; Ist-Tracking für Übungen fehlt (CadenceInstance). | **PO-Blocker** | Teil A1-Cadence-MVP |
|
|||
|
|
| **F-A1-07** | Nach Verify keine AP-Aktivierung; nur Recurring rotiert | **Implementierungsschuld** | Spec A1 §4.4 Activity Set — Scope AP2.0e minimal. | Sekundär vs. F-A1-02–06 | AP A1-Activity-Set |
|
|||
|
|
| **F-A1-08** | Journey unklar; pausierte Übung verwirrend | **IA** | Technisch korrekt (AP2.0e); PO wahrgenommene Unübersicht. | Mitverantwortlich | IA A1 Today-first |
|
|||
|
|
| **F-A1-09** | **Leitfrage** nicht beantwortbar — Hürden > Nutzen | **PO-Produkturteil** | MVP §5.6 nicht erfüllt. Symptom von F-A1-02…05, nicht Doku-Problem. | **No-Go** | siehe §8 Minimum-Slice |
|
|||
|
|
| **F-A1-10** | **Extreme Unübersichtlichkeit** (Eingang-Redirect, AP vs. Übung, Journey vs. Rhythmen) | **IA + Implementierungsschuld** | Plugin-Architektur OK; **A1-Profil und Work-Default** spiegeln Nutzerbild Spec §8 nicht. Kein neues OM nötig — **falsche/fehlende UI-Hülle**. | **PO-Blocker** | A1-IA-Slice (Eingang weg, Today=Übung, klare Stufenleiste) |
|
|||
|
|
|
|||
|
|
---
|
|||
|
|
|
|||
|
|
## 4. Detail-Notizen (Architektur-Check)
|
|||
|
|
|
|||
|
|
### F-A1-01 — Eingang vs. Slices
|
|||
|
|
|
|||
|
|
```text
|
|||
|
|
ui_profiles.py initiative.maturity_journey:
|
|||
|
|
planOutlineKeys: [profile, gates, inbox, work] ← Nav zeigt Eingang
|
|||
|
|
dataSlices: [actions, roadmap, recurring, …] ← kein "backlog"
|
|||
|
|
|
|||
|
|
viewRegistry.js /plan/inbox requiredSlices: ['backlog']
|
|||
|
|
→ isRouteAllowedForMode = false → Redirect planDefaultRoute (/plan/gates)
|
|||
|
|
```
|
|||
|
|
|
|||
|
|
**Urteil:** Plugin-Architektur funktioniert wie designed; **Profil-Seed ist inkonsistent**.
|
|||
|
|
|
|||
|
|
### F-A1-02 / F-A1-06 — CadenceInstance-Schicht
|
|||
|
|
|
|||
|
|
| Schicht | Spec | Code heute |
|
|||
|
|
|---------|------|------------|
|
|||
|
|
| RecurringElement | Container + Bindung Stufe | ✓ |
|
|||
|
|
| Cadence / Wochentage / Alternanz | Spec A1 §4.3–4.5 | ✗ |
|
|||
|
|
| CadenceInstance (eine offene Instanz) | Spec-D D4, Kernel Q2 | ✗ (nur `next_due_at` am Element) |
|
|||
|
|
| Erfüllung → nächste Instanz | Spec A1 Happy Path §9.3 | ◐ (manuell / overdue-Logik minimal) |
|
|||
|
|
|
|||
|
|
**Urteil:** **Kein falsches Design** — Normalization-Programm beschreibt Ziel; MVP lieferte **Minimal-Rhythmus**. Spec A1 §11 listet das explizit als Lücke.
|
|||
|
|
|
|||
|
|
### F-A1-03 — Work-Item-Polymorphie (Kernel Q2)
|
|||
|
|
|
|||
|
|
| Work Item | Next Action BE | Next Action FE Link |
|
|||
|
|
|-----------|----------------|---------------------|
|
|||
|
|
| Action | ✓ | ✓ |
|
|||
|
|
| Backlog | ✓ | ✓ |
|
|||
|
|
| Recurring / Cadence | ✓ (`recurring_due`) | ✗ (nur Text `recommended_action`) |
|
|||
|
|
|
|||
|
|
**Urteil:** **Architektur-Lücke nur in der Präsentationsschicht** — Steering-Kernel und Strategies sind erweiterbar; FE muss polymorphe Ziele unterstützen (Link-Typ-Registry analog Backend `kind`).
|
|||
|
|
|
|||
|
|
### F-A1-04 / F-A1-05 — Kriterien & Metriken
|
|||
|
|
|
|||
|
|
- **Evidence → satisfied:** beabsichtigt (`roadmap_criteria.prepare_criteria_for_verify`).
|
|||
|
|
- **Manuelle Kriterien:** bleiben offen bis manuell / waived — korrekt.
|
|||
|
|
- **Metriken:** Schema vorbereitet, **keine** Regel-Engine — ADP „später“.
|
|||
|
|
|
|||
|
|
**Urteil:** Gate-Modell ist **generisch genug**; fehlende Metrik-Auswertung ist **Feature-Deferral**, kein Redesign.
|
|||
|
|
|
|||
|
|
### F-A1-07 — Activity Set bei Stufenwechsel
|
|||
|
|
|
|||
|
|
`maturity_stage_transition.on_maturity_stage_reached`:
|
|||
|
|
|
|||
|
|
- pausiert aktive Recurring ✓
|
|||
|
|
- aktiviert nächste Stufe ✓
|
|||
|
|
- legt neue Recurring-Übung an ✓
|
|||
|
|
- **keine** Stage-Actions, **keine** Graph-Aktivierung weiterer Plan-APs
|
|||
|
|
|
|||
|
|
Spec A1 §4.4 verlangt volles Set — **Implementierungsschuld**, Scope AP2.0e war Minimal-Slice.
|
|||
|
|
|
|||
|
|
---
|
|||
|
|
|
|||
|
|
## 5. Abgleich mit SPEC_A1 §11 (Ist-Stand-Tabelle)
|
|||
|
|
|
|||
|
|
| Spec §11 Zeile | Validation bestätigt |
|
|||
|
|
|----------------|-------------------|
|
|||
|
|
| Multi-Übung / Alternanz fehlt | F-A1-02 ✓ |
|
|||
|
|
| Stage Activity Set Teilmenge | F-A1-07 ✓ |
|
|||
|
|
| UI Stufe-Detail lückenhaft | F-A1-02, F-A1-03 ✓ |
|
|||
|
|
| steering_elements FE/BE Parität | F-A1-03 (recurring in Kontrolle ✓, Work ◐) |
|
|||
|
|
|
|||
|
|
**Keine neue Spec-Zeile nötig** — Register präzisiert PO-Sicht für AP2.1.
|
|||
|
|
|
|||
|
|
**Urteil:** **Kein falsches Design** — PO-Anforderung = Spec §4 / Spec-D. MVP lieferte **Infrastruktur ohne Ist-Schicht**. Für PO-Abnahme ist das **kein „später“**, sondern **fehlender A1-Kern**.
|
|||
|
|
|
|||
|
|
### F-A1-09 / F-A1-10 — PO-Leitfrage & Unübersichtlichkeit
|
|||
|
|
|
|||
|
|
**PO (2026-07-28, wörtlich zusammengefasst):**
|
|||
|
|
|
|||
|
|
- Leitfrage nicht sinnvoll beantwortbar
|
|||
|
|
- Tages-Tracking + optional Messwerte (Anzahl, Grad, …) + aktive Gate-Einschätzung **erforderlich** für echten Einsatz
|
|||
|
|
- Extreme Unübersichtlichkeit → **Hürden größer als Nutzen**
|
|||
|
|
|
|||
|
|
**Architektur:** Symptome von fehlendem CadenceInstance-Modell, Work-UI auf AP statt Übung, IA-Rauschen (Eingang, Journey). **Kein Widerspruch** zwischen Vision und Spec — **Widerspruch zwischen geliefertem MVP-Slice und PO-Mindestnutzen**.
|
|||
|
|
|
|||
|
|
---
|
|||
|
|
|
|||
|
|
## 6. Priorisierte Follow-ups (PO-gesteuert)
|
|||
|
|
|
|||
|
|
### 6.1 A1 Minimum Usability Slice (vor erneuter A1-Abnahme)
|
|||
|
|
|
|||
|
|
**Implementiert (2026-07-28, uncommitted):** Migration 030, `cadence_instance` + `POST /api/recurring/{id}/complete`, `WorkTodayPracticePanel`, Next-Action-Link `#today-practice`, Gate-Fortschritt in `MaturityStagePanel`, Eingang aus A1-Nav. **Offen:** PO Re-Abnahme; Metric-Kriterium manuell (Slice #5, optional vor Re-Test).
|
|||
|
|
|
|||
|
|
| # | Lieferung | Decke PO-Schmerz | Status |
|
|||
|
|
|---|-----------|------------------|--------|
|
|||
|
|
| 1 | **CadenceInstance + „Heute erledigt“** | Tages-Tracking | ✓ implementiert |
|
|||
|
|
| 2 | **Ausführen/Today = Übung** | Nutzen Alltag | ✓ implementiert |
|
|||
|
|
| 3 | **Kontrolle: Gate-Fortschritt** | Gate-Einschätzung | ✓ implementiert (Kriterien offen/erfüllt) |
|
|||
|
|
| 4 | **IA A1** (Eingang weg) | Unübersichtlichkeit | ✓ implementiert |
|
|||
|
|
| 5 | **Metric-Kriterium manuell** | Messgrößen | ◐ Messnotiz am Complete; Auto-Engine weiter offen |
|
|||
|
|
|
|||
|
|
Alternanz, volle Metric-Engine, Activity-Set-Automation → **nach** Slice 1–4.
|
|||
|
|
|
|||
|
|
### 6.2 Technische Quick-Wins (P0)
|
|||
|
|
|
|||
|
|
| Prio | ID | Slice |
|
|||
|
|
|------|-----|-------|
|
|||
|
|
| P0 | F-A1-01 | Eingang aus A1-Nav |
|
|||
|
|
| P1 | F-A1-03 | Next Action → Recurring/Übung-Aktion |
|
|||
|
|
|
|||
|
|
---
|
|||
|
|
|
|||
|
|
## 7. Konsequenz für AP2.1 / MVP Stufe A
|
|||
|
|
|
|||
|
|
| Option | Bedeutung |
|
|||
|
|
|--------|-----------|
|
|||
|
|
| **A — A1 nachziehen** | Validation pausieren; **A1 Minimum Slice** (§6.1) liefern; A1 erneut smoke-testen |
|
|||
|
|
| **B — MVP-Definition anpassen** | A1 vorübergehend aus Stufe-A-Abnahfe (PO-Entscheidung + Doku) — **nur wenn A2+B2b als MVP reichen** |
|
|||
|
|
| **C — Gesamt No-Go** | AP2.1 stoppt bei Stufe A bis A1 oder Scope-Entscheidung |
|
|||
|
|
|
|||
|
|
**Empfehlung:** **Option A** — Architektur trägt; Spec war richtig; Implementierung war zu dünn. A2/B2b-Smoke **parallel** möglich, Gesamt-Go aber nicht ohne A1-Lösung (Option A oder explizite B).
|
|||
|
|
|
|||
|
|
---
|
|||
|
|
|
|||
|
|
## 8. Nächste Register-Einträge
|
|||
|
|
|
|||
|
|
| Szenario | Status |
|
|||
|
|
|----------|--------|
|
|||
|
|
| A2 — Neue Küche (Linear) | ausstehend |
|
|||
|
|
| B2b + B3 — Product + Sprint | ausstehend |
|
|||
|
|
| Portfolio / Cockpit (Kriterium 7) | ausstehend |
|
|||
|
|
|
|||
|
|
---
|
|||
|
|
|
|||
|
|
*Aktualisieren bei jedem PO-Smoke-Schritt. Bei Kategorie „Architektur-Lücke“ → ADP prüfen, nicht sofort implementieren.*
|