Co-authored-by: Cursor <cursoragent@cursor.com>
13 KiB
Kairo — Plan-Modus Design v0.1
Status: PO-Arbeitsentwurf (Entscheidung ausstehend)
Stand: 2026-07-10
Bezug: Kairo_PM_Frontend_UI_Concept_v0.1.md §4.3, ADP_AP1_10_Initiative_Archetypes_and_Entity_Field_System_v0.1.md
Auslöser: Planen soll von Tab-Fragmenten zu durchgängiger Programmgestaltung werden — bis Struktur, Gates, Eingang, Arbeitspakete und Tasks
1. Leitfrage
Wie soll das Programm aufgebaut sein — von der Vorhabens-Identität bis zur ausführbaren Granularität?
Planen beantwortet Struktur- und Zielfragen. Es committet keine Tagesausführung (das ist Ausführen) und kein Lagebild (das ist Kontrolle).
2. Grundsatz: Vorhaben als Wurzel
/plan?initiative={id}&project={optional}
Initiative (Wurzel — immer im Scope)
├── Profil — Archetyp, Standard- + dynamische Felder
├── Struktur — Project-Baum (rekursiv)
├── Zielzustände — Gates / RoadmapItems (Liste + Graph)
├── Eingang — Backlog (triage → convert)
└── Arbeit — Actions (+ Tasks ab AP1.5d) im Plan-Kontext
Flache Vorhaben: Actions ohne project_id erscheinen als direkte Kinder der Initiative im Plan-Baum.
Commit-Grenze Plan → Ist:
| Objekt | In Plan | Commit-Aktion |
|---|---|---|
| BacklogItem | Ja | Convert → Action |
| Project / Gate | Ja | sofort „Struktur“ (kein separater Commit) |
| Action | Sichtbar | Anlage = committet |
| Task | Sichtbar (AP1.5d) | Anlage unter Action |
3. IA: Von Tabs zur Plan-Outline
3.1 Heute (AP1.9a)
/plan/structure | /plan/gates | /plan/inbox — drei lose Untertabs
3.2 Ziel (AP1.12)
Eine Planungsseite mit linker Outline (Baum) und rechtem Kontextbereich (Desktop) bzw. Drill-down (Mobile).
┌──────────────────────────────────────────────────────────────┐
│ Modus: Planen Scope: Portfolio › Vorhaben X › [Projekt Y] │
├──────────────────┬───────────────────────────────────────────┤
│ OUTLINE │ KONTEXT │
│ ▼ Vorhaben X │ [Profil-Karte / Mini-Snapshot] │
│ ▼ Struktur │ oder │
│ Phase 1 │ [Liste der Kinder des gewählten Knotens] │
│ Phase 2 │ oder │
│ Zielzustände │ [Graph-Ansicht Gates] │
│ Eingang (3) │ │
│ Arbeit (12) │ │
└──────────────────┴───────────────────────────────────────────┘
Routen (evolutionär):
| Route | Bedeutung |
|---|---|
/plan |
Portfolio: „Vorhaben ohne Struktur“, „Gates ohne Kriterien“ (Einstieg) |
/plan?initiative= |
Outline für ein Vorhaben |
/plan?initiative=&node=structure|gates|inbox|work |
Outline-Fokus (Query, kein Pflicht-Split) |
/gates/:id, /projects/:id |
Objekt-Modal / Deep Link (bestehend AP1.9) |
Untertabs /plan/structure etc. bleiben als Deep-Link-Aliase mit Redirect auf /plan?initiative=&node=… bis Entfernung in AP1.12.
4. Interaktion
4.1 Bearbeiten — Modal (verbindlich)
| Objekt | Trigger | Modal-Inhalt |
|---|---|---|
| Initiative | Outline „Profil“ / Stift-Icon | Standardfelder + EFS (AP1.10) |
| Project | Klick / Stift | Titel, Status, container_kind, Gate-Link, Parent |
| Gate | Klick / Stift | RoadmapItem + Kriterien (bestehend, polish) |
| Backlog | Klick | Triage-Felder, Gate-Link, Convert-Button |
| Action | Klick | ActionForm (bestehend) — oder Link zu /actions/:id |
| Task | Klick (AP1.5d) | TaskForm |
Regel (UI Concept P4): Kein dauerhaftes Inline-Formular in der Outline.
4.2 Reihenfolge
| Plattform | Mechanismus | Gilt für |
|---|---|---|
| Desktop (≥1024px) | Drag & Drop innerhalb gleicher Elternebene | Projects, Backlog (sort_order), Gates (optional Phase 2) |
| Mobile / Touch | ↑ / ↓ Buttons pro Zeile | gleich |
API: PATCH mit sort_order oder dediziertes POST …/reorder — idempotent, tenant-scoped.
4.3 Anlegen
„+“ am elterlichen Knoten in der Outline (nicht globaler FAB ohne Kontext).
5. Zielzustände — Graph (Plan-Modell, kein Workflow)
5.0 Abgrenzung (verbindlich)
Der Zielzustands-Graph modelliert Soll-Struktur — welche überprüfbaren Zielpunkte es gibt und wie sie logisch zusammenhängen (sequenziell, parallel, optional, blockierend).
Er ist kein Workflow:
| Zielzustands-Graph (Kairo) | Workflow (Mitai Prompt Engine — nicht Kairo-Scope) |
|---|---|
| RoadmapItem = Quality Gate / Meilenstein / Reifegrad | Prompt-/Pipeline-Knoten |
| Kanten = Plan-Abhängigkeiten zwischen Gates | Ausführungs-/Verzweigungslogik |
| Verify = Kriterien + Evidence/Review | LLM-Aufruf, Aggregation, Join |
| Lesbar in Planen und Kontrolle (Plan vs. Ist) | Admin-Konfiguration für KI |
| Änderung am Plan = bewusste Planungsentscheidung (+ Audit) | Laufzeit-Orchestrierung |
Mitai WorkflowEditorPage: nur UI-Pattern-Referenz (Canvas, Zoom, Pan, Snap) für ein künftiges Zielzustands-Modellierungswerkzeug — keine Übernahme von Workflow-Semantik, Prompt-Knoten oder Runtime.
Guardrail: In Docs, UI und Code nicht „Workflow-Graph“, „Gate-Workflow“ oder „Graph-Workflow“ sagen — korrekt: Zielzustands-Graph, Gate-Map, Plan-Graph.
5.1 Zwei Ansichten (Liste | Graph)
| Ansicht | Wann | UI |
|---|---|---|
| Liste | Flache Vorhaben, wenige Gates | RoadmapPlanSection (evolviert) |
| Graph | Komplexe Abhängigkeiten, Parallel-Gates | GateMapView / später Zielzustands-Designer |
Umschalter: „Liste | Graph“ im Knoten Zielzustände — Default Liste wenn ≤5 Gates, sonst letzter User-Choice (localStorage pro Initiative).
5.2 Graph-UI — Mitai-Pattern, Kairo-Semantik
Referenz (Pattern only): Mitai Workflow-Editor — Canvas, Zoom, Pan, Snap-to-grid.
Kairo-Scope (Zielzustands-Modell, kein Workflow):
| Element | Semantik |
|---|---|
| Knoten | RoadmapItem (Gate, Meilenstein, Reifegrad) |
| Kanten | roadmap_item_dependencies → später edge_kind + parallel_group (AP1.4d) |
| Joint / Split (später) | Plan-Topologie — parallele Stränge, Join-Gates, optionale Äste — nicht Runtime-Verzweigung |
| Kein | Lifecycle-Workflow, Prompt-Knoten, Mitai-Domäne, Ausführungs-Engine |
Heute (AP1.13a/b — MVP-Zwischenstand): read-only Auto-Layout + Kanten auf Gate-Detail; kein grafischer Designer, keine Joint-Knoten, kein Parallel-Join-Modell (→ AP1.4d + Modellierungswerkzeug).
Phase 2 — Zielzustands-Modellierungswerkzeug (PO):
- Drag-Drop-Designer für Gates, Kanten, Parallelgruppen, Joins
- Bearbeitung nur im Plan-Kontext (Modal/Designer — nicht Inline-CRUD-Wand in der Outline)
- Verify / Kriterien / Evidence weiterhin auf Gate-Detail — nicht im Graph als CRUD-Omnibus
5.3 Plan-Graph vs. Ist — parallel betrachten (Zielbild)
Problem (mehrfach in Kairo erlebt): Wenn Plan und Ist in demselben mutable Objekt verschmelzen (Status-Dropdown, Freitext-DoD, Graph = nur aktueller Stand), ist nicht nachvollziehbar, was geplant war, was tatsächlich passiert ist und wann der Plan angepasst wurde.
Regel:
| Schicht | Inhalt | Änderbarkeit |
|---|---|---|
| Plan-Graph (Soll) | Knoten, Kanten, Kriterien-Definition, Parallel-/Join-Topologie | Planung; Revision mit Audit/Decision |
| Ist-Overlay | Gate-Status (reached/moved/…), Kriterien-Status, Evidence, Journey-Events |
Ausführung, Review, Verify, Reopen |
| Historie | Plan-Revisionen, Ist-Ereignisse, Abweichungen Plan↔Ist | append-only / audit |
Review-Ablauf (Kontrolle / Journey — Ziel):
1. Plan-Graph und Ist-Overlay **parallel** anzeigen (nicht eins collapsed)
2. Abweichungen sichtbar: Gate erreicht aber Kriterium waived; optionaler Ast nicht genommen; Plan-Kante obsolet
3. Entscheidung: Plan anpassen (Zielzustand revidieren) — mit Begründung — ODER Ist dokumentieren (Decision/moved/discarded)
4. Plan-Graph **ordentlich** nachziehen — nicht stillschweigend den Ist-Stand als neuen Plan überschreiben
Technische Folge (spätere Pakete):
- AP1.4d: Graph Engine Read Models (
blocked,ready,fulfillment_ratio) aus Plan-Kanten + Ist-Status - AP1.4e+: Methodenprofile (Erfüllungsgrad vs. hartes
reached) - AP1.14 (vorgeschlagen): Plan-Snapshot / Plan-Revision + Ist-Overlay in UI (Kontrolle: „Plan | Ist | Diff“); Graph-Designer Phase 2
Heute: Ein Graph, Status am selben Knoten — Ist vermischt mit Plan. Truth Table: ◐. Das ist bewusster MVP-Zwischenstand, kein Zielbild.
5.4 Backend
Baut auf AP1.4d (Graph Engine read models) auf — UI AP1.13 nach 4d oder parallel wenn read APIs vorhanden.
6. Ebenen bis Workpackage & Task
| Ebene | Typ | Plan-Outline-Knoten | Tiefe |
|---|---|---|---|
| 0 | Initiative | Wurzel | 1 |
| 1 | Project | rekursiv | max. 5 (bestehend) |
| 2 | RoadmapItem | Zielzustände (Graph/Liste) | parallel zur Struktur |
| 3 | BacklogItem | Eingang | flach unter Initiative |
| 4 | Action | Arbeit | unter Project oder Initiative |
| 5 | Task | (AP1.5d) | unter Action, UI max. ~3 |
Plan-Baum „Arbeit“: Zeigt committete Actions + Tasks (read-heavy); Anlage öffnet Modal. Filter: optional nur „ohne Project“ / „unter gewähltem Project“ (Scope ?project=).
7. Scope-Breadcrumb (AP1.9b — Zuverlässigkeit)
Problem: Klick auf Vorhaben im Breadcrumb führt immer nach /control/status — in Planen falsch.
Regel: Mittlerer Breadcrumb-Klick ist modus-sensitiv:
| Aktiver Modus | Klick „Vorhaben X“ |
|---|---|
/plan/* |
/plan?initiative=X |
/control/* |
/control/status?initiative=X |
/work/* |
/work/today?initiative=X |
| Objekt-Route | passender Modus aus Objekttyp (/projects/ → Plan, /actions/ → Work) |
Portfolio-Klick: Scope leeren, Modus beibehalten.
Technik: ProgramScopeBar liest useLocation + Modus-Registry; kein hardcoded /control/status.
8. Implementierungspakete
AP1.9b Scope-Breadcrumb modus-sensitiv; Scope-Sync bei Deep Links härten
AP1.12a Plan-Outline Shell (Desktop Split / Mobile Drill-down)
AP1.12b Modal-Edit für Project, Backlog, Initiative-Profil (Standardfelder)
AP1.12c Reorder: sort_order API + DnD (Desktop) + ↑↓ (Mobile)
AP1.12d Outline-Knoten „Arbeit“ (Actions listen, Link zu Detail)
AP1.13a GateMapView read-only (Layout aus Dependencies)
AP1.13b Kanten-CRUD auf Gate-Detail (kein Designer)
AP1.4d Graph Engine: parallel_group, edge_kind, blocked/ready
AP1.14 Plan-Snapshot / Ist-Overlay / Plan-Revision (vorgeschlagen)
AP1.15 Zielzustands-Modellierungswerkzeug (Designer, Mitai-Pattern)
AP1.15a Designer MVP (Pan/Zoom, Kanten, Layout)
AP1.15b Designer UX (Drag-Kanten, Gate anlegen, Klick-Panel)
AP1.15c Join/Branch-Topologie (parallel_group, optional_branch, Engine) — deferred, vorbereitet
AP1.5d Tasks in Outline-Knoten „Arbeit“
AP1.10 Archetyp + EFS für Initiative-Profil-Modal (parallel ab 10a)
Empfohlene Reihenfolge:
9b → 12a → 12b → 10a/10c (Profil) → 12c → 12d → 5d → 13a → 13b
9. Nicht-Ziele (Scope Lock)
- Kein Sprint-/Capacity-Planning in Planen (später Team-Modus-Erweiterung)
- Kein Inline-CRUD aller Gates in der Outline-Liste
- Kein Mitai-Workflow-Clone (auch kein „Workflow-Graph“ — nur Zielzustands-Graph)
- Kein Plan=Ist-Collapse (Status/Freitext ersetzt nicht Plan-Revision + Ist-Historie)
- Kein Steering pro Project-Ebene (ADP Recursive Containers)
10. Erfolgskriterien (PO)
- PO kann ein Vorhaben wählen und in einer Ansicht Struktur, Gates, Eingang und Arbeit sehen.
- Bearbeitung läuft nur im Modal — Outline bleibt übersichtlich.
- Project-Reihenfolge per DnD (Desktop) änderbar.
- Gates mit Abhängigkeiten im Zielzustands-Graph darstellbar (AP1.13); Designer + Plan/Ist-Parallelität folgen (AP1.4d, AP1.14+).
- Breadcrumb-Klick auf Vorhaben bleibt im Modus Planen.
11. PO-Freigabe
- Outline statt drei Tabs (AP1.12) angenommen
- Modal-Edit + DnD/↑↓ OK
- GateMap / Zielzustands-Designer (Mitai-Pattern only) Scope OK
- Plan-Graph vs. Ist-Overlay parallel (AP1.14) OK
- AP1.9b Breadcrumb-Regel OK
Referenzen
docs/architecture/ADP_AP1_10_Initiative_Archetypes_and_Entity_Field_System_v0.1.mddocs/architecture/ADP_AP1_9_PM_Work_Modes_Frontend_IA_v0.1.mddocs/reference/design-principles/mitai/PROMPT_ENGINE_DESIGN_PRINCIPLES.md(WorkflowEditor-Referenz)