diff --git a/docs/architecture/ADP_Roadmap_Graph_and_Gate_Checklist_v0.1.md b/docs/architecture/ADP_Roadmap_Graph_and_Gate_Checklist_v0.1.md index e490c18..9fe2cc7 100644 --- a/docs/architecture/ADP_Roadmap_Graph_and_Gate_Checklist_v0.1.md +++ b/docs/architecture/ADP_Roadmap_Graph_and_Gate_Checklist_v0.1.md @@ -1,6 +1,6 @@ # ADP — Roadmap-Graph, Gate-Checkliste & Methodenprofile v0.1 -**Status:** Entwurf — PO-Richtung 2026-07-05 +**Status:** PO-Freigabe AP1.4b (2026-07-05) **Stand:** 2026-07-05 **Bezug:** `ADP_RoadmapItem_and_Quality_Gate_Model_v0.1.md`, Vision v0.2 §9.1 **Ersetzt nicht:** AP1.4-Minimal (Schema 010/011) — **korrikt und erweitert** Zielbild @@ -51,15 +51,26 @@ Strukturierte Kriterien pro `RoadmapItem` — nicht nur Freitext `goal_descripti | description | text | optional | | criterion_kind | enum | `manual`, `evidence_required`, `review_required`, `metric` (später) | | verification_hint | text | optional — für spätere KI („Was gilt als erfüllt?“) | -| status | enum | `open`, `satisfied`, `waived`, `failed` | +| status | enum | `open`, `satisfied`, `waived`, `deferred`, `failed` | +| waived_or_deferred_decision_id | uuid | optional FK — Pflicht bei `waived` / `deferred` | | satisfied_by_evidence_id | uuid | optional FK | | satisfied_at | timestamptz | | -**Verify `→ reached` (neu):** +**Sichtbarkeit:** Verantwortliche und Owner (Initiative-/Gate-Ebene) sehen alle Kriterien inkl. Abnahme-Status. -- Alle **Pflicht-Kriterien** `satisfied` oder `waived` (waive nur mit Decision) -- Oder explizite **gate_override** Decision (bestehend) -- Ein globales Evidence ohne Kriterienbezug reicht **nicht** mehr (Compat-Übergang: ein Kriterium „Gate allgemein“ migrieren) +**Verify `→ reached` (AP1.4b):** + +- Jedes **Pflicht-Kriterium** muss `satisfied`, `waived` oder `deferred` sein (kein offenes Pflicht-Kriterium) +- **`waived`** (bewusst ausgelassen) oder **`deferred`** (verschoben): nur mit verknüpfter **Decision** + Begründung +- **`satisfied`:** Evidence/Review/Manual-Policy je `criterion_kind` +- Compat: bestehende Gates erhalten ein Default-Kriterium „Gate allgemein“ (Migration) +- Gate-weiter **`gate_override`** Decision bleibt als Ausnahme + +**Kriterium nachträglich ändern (auch bei `reached`):** + +- Titel, Beschreibung, Status-Änderung mit **Begründung** (Decision oder Audit-Eintrag) +- Wenn Gate `reached` war: Gate-Status → **`active`** (Produkt: „offen“), Kriterien **behalten** ihren jeweiligen Status — müssen **einzeln** erneut geprüft werden +- Verify erneut nötig für neues `reached` **UI:** @@ -131,22 +142,34 @@ Kanten modellieren die **Baumlogik** (Forest pro Roadmap): Hooks in `backend/steering/methods/` — **keine** Sonder-Tabellen pro Methode. -### 5. Reaktivierung geschlossener Gates +### 5. Reaktivierung geschlossener Gates (PO 2026-07-05) -**Regel:** `reached → active` (Reopen) nur mit: +**Ziel-Status nach Reopen:** `active` (Produktbegriff: Gate wieder **offen** / bearbeitbar). -- **Decision** `gate_reopen` mit Begründung, oder -- Capability-gated Admin-Aktion + Audit +**Gate-Status `reached` → `active` — wer darf:** -Kriterien-Status: PO-Entscheidung — Option A: Kriterien bleiben `satisfied`; Option B: zurück auf `open` (empfohlen: **A**, Reopen dokumentiert Abweichung). +| Rolle | Bedingung | +|-------|-----------| +| **Verantwortlicher** | eigenes Vorhaben / zugewiesenes Gate (Initiative-`manage` + Verantwortlichkeit*) | +| **Gruppen-Admin** | Tenant-`owner` oder Tenant-`admin` im Mandanten | +| **Superadmin** | Portal-`admin` — Notfall über alle Mandanten | -Verify-Historie bleibt in Audit / Journey (AP1.6). +\*Verantwortlichkeit AP1.4b minimal: Initiative-Manager (`kairo.initiative.manage`); Gate-Owner-Feld optional Phase 2. + +**Kriterien beim Reopen:** **unverändert** — z. B. weiterhin `satisfied` / `waived` / `deferred`; Gate ist offen, aber Abnahme muss **Kriterium für Kriterium** erneut bewertet werden, bevor erneut Verify/`reached`. + +**Protokoll:** Jede Reopen-, Kriterien- und Gate-Status-Änderung → **Audit** (+ Decision wo Pflicht). Journey/AP1.6 zeigt Spur. + +**Capabilities (AP1.4b):** + +- `kairo.roadmap.reopen` — Verantwortlicher (member+), Tenant-Admin/Owner +- `kairo.roadmap.reopen.emergency` — Portal-Admin (Superadmin) ### 6. Bearbeiten & Löschen | Aktion | Regel | |--------|--------| -| Bearbeiten Titel/DoD/Kriterien | solange nicht `discarded`; `reached` → nur mit Reopen | +| Bearbeiten Titel/DoD/Kriterien | auch bei `reached`, mit Begründung → Gate `active`, Kriterien-Status bleibt | | Löschen | nur `planned` oder mit Decision; Kanten mit-löschen | | Status manuell | `reached`/`moved`/`discarded` nicht direkt (bestehend) | @@ -166,7 +189,7 @@ Plan-UI: **Detail-Modal/Route** `/initiatives/:id/plan/items/:itemId` — Checkl | Paket | Inhalt | Version | |-------|--------|---------| -| **AP1.4b** | Plan-Item bearbeiten/löschen UI; Reopen-API; Checkliste CRUD (JSONB oder criteria Tabelle) | 0.13.1 | +| **AP1.4b** | Criteria-Tabelle; Verify/Waive/Defer; Reopen-Capabilities; Plan-Detail-UI; Audit | 0.13.1 | | **AP1.4d** | Graph Engine v1; `edge_kind` + group_key; deprecate `sequencing_mode` in UI | 0.14.0 | | **AP1.4e** | Verify gegen Kriterien; Erfüllungsgrad-Widget; derived Blockers in Attention | 0.14.1 | | **AP1.6** | Journey: Checkliste Schritt-für-Schritt; Graph-Sicht (Baum, nicht Gantt) | 0.15.x | @@ -185,13 +208,31 @@ Plan-UI: **Detail-Modal/Route** `/initiatives/:id/plan/items/:itemId` — Checkl --- -## PO-Freigabe-Checkliste +## PO-Freigabe — AP1.4b (2026-07-05) -- [ ] Kriterienplan statt „ein Evidence reicht“ (mit Compat-Übergang?) -- [ ] `sequencing_mode` am Item entfernen — nur Kanten -- [ ] Reopen-Regel (Decision vs. direkte Aktion) -- [ ] Erfüllungsgrad-Methoden ohne hartes `reached` -- [ ] Graph Engine in `backend/steering/graph/` — Scope Lock Erweiterung +### Frage 1 — Verify & Kriterien + +- [x] **Kriterienplan** statt „ein Evidence reicht“ (Compat: Default-Kriterium pro Gate) +- [x] Einzelkriterien dürfen per **Decision** **`waived`** (ausgelassen) oder **`deferred`** (verschoben) werden +- [x] `reached` nur wenn kein offenes Pflicht-Kriterium mehr existiert + +### Frage 2 — Reopen + +- [x] Verantwortlicher darf **eigene** Vorhaben/Gates reopenen +- [x] Tenant-**Admin/Owner** (Gruppe) ebenfalls +- [x] Portal-**Admin** (Superadmin) als Notfall +- [x] **Alles auditiert** + +### Frage 3 — Status nach Reopen / Kriterien + +- [x] Gate → **`active`** (offen), Kriterien **behalten** gesetzten Status +- [x] Kriterien einzeln erneut prüfbar; Änderung an Kriterium bei `reached` → Gate **`active`** + Begründung + +### Noch offen (spätere Pakete) + +- [ ] `sequencing_mode` am Item entfernen — nur Kanten (AP1.4d) +- [ ] Erfüllungsgrad-Methoden ohne hartes `reached` (AP1.4e) +- [ ] Graph Engine in `backend/steering/graph/` (AP1.4d) --- diff --git a/docs/product/Kairo_Corrected_MVP_Roadmap_v0.2.md b/docs/product/Kairo_Corrected_MVP_Roadmap_v0.2.md index a88e3dc..b7b7a3a 100644 --- a/docs/product/Kairo_Corrected_MVP_Roadmap_v0.2.md +++ b/docs/product/Kairo_Corrected_MVP_Roadmap_v0.2.md @@ -140,18 +140,22 @@ Vorlage: `Sprint0_AP0_10_Validation_Report_v0.1.md` --- -### AP1.4b — Gate-Checkliste & Pflege (nächstes Plan-Paket) +### AP1.4b — Gate-Checkliste & Pflege (**PO-Freigabe 2026-07-05**) -**Ziel:** Prüfplan pro Gate; Item bearbeiten/löschen; Reopen nach versehentlichem Schließen. +**Ziel:** Prüfplan pro Gate; Waive/Defer per Decision; Reopen mit Rollen; Audit. | Scope | | |-------|--| -| `roadmap_item_criteria` oder strukturiertes DoD | -| Checkliste in Plan-Detail (Modal/Route) | -| Reopen `reached → active` (Decision-gated) | -| Verify gegen Kriterien (Compat: Default-Kriterium) | +| Migration `roadmap_item_criteria` | +| Verify: Pflicht-Kriterien `satisfied` \| `waived` \| `deferred` (waive/defer → Decision) | +| Compat: Default-Kriterium pro bestehendem Gate | +| Reopen `reached → active`; Kriterien-Status **bleibt** | +| Reopen: Verantwortlicher, Tenant-Admin/Owner, Portal-Admin (Notfall) | +| Kriterium ändern bei `reached` + Begründung → Gate `active` | +| Plan-Detail-Route; Capabilities `kairo.roadmap.reopen*` | +| Audit für alle Gate-/Kriterien-Änderungen | -**ADP:** `ADP_Roadmap_Graph_and_Gate_Checklist_v0.1.md` +**ADP:** `ADP_Roadmap_Graph_and_Gate_Checklist_v0.1.md` § PO-Freigabe **Version:** `0.13.1-ap1.4b` diff --git a/docs/sprints/Sprint1_AP1_4b_Gate_Checklist_Assignment_v0.1.md b/docs/sprints/Sprint1_AP1_4b_Gate_Checklist_Assignment_v0.1.md new file mode 100644 index 0000000..57c7c67 --- /dev/null +++ b/docs/sprints/Sprint1_AP1_4b_Gate_Checklist_Assignment_v0.1.md @@ -0,0 +1,86 @@ +# AP1.4b — Gate-Checkliste, Waive/Defer, Reopen + +**Stand:** 2026-07-05 +**PO-Freigabe:** `ADP_Roadmap_Graph_and_Gate_Checklist_v0.1.md` § PO-Freigabe +**Version:** `0.13.1-ap1.4b` +**Voraussetzung:** AP1.4 (010/011), Verify-Fix deployed + +--- + +## Ziel + +Prüfplan (Checkliste) pro RoadmapItem; Verify gegen Kriterien; bewusstes Auslassen/Verschieben einzelner Punkte per Decision; Reopen mit Rollenmodell; vollständiges Audit. + +--- + +## PO-Regeln (verbindlich) + +### Kriterien + +- Status: `open`, `satisfied`, `waived`, `deferred`, `failed` +- `waived` / `deferred` nur mit **Decision** (Begründung) +- Sichtbar für Verantwortliche + Owner (Initiative-`manage` + lesend) + +### Verify → `reached` + +- Kein offenes Pflicht-Kriterium +- Jedes Kriterium: `satisfied`, `waived` oder `deferred` +- Compat-Migration: ein Default-Kriterium „Gate allgemein“ pro Item + +### Reopen + +- `reached` → **`active`** (Produkt: Gate offen) +- Kriterien-Status **unverändert** — erneute Prüfung pro Kriterium +- Wer: Verantwortlicher (Initiative-`manage`), Tenant-Admin/Owner, Portal-Admin (Notfall) +- Audit Pflicht + +### Kriterium ändern bei geschlossenem Gate + +- Mit Begründung (Decision/Audit) +- Gate → **`active`**, Kriterien behalten Status bis manuell angepasst + +--- + +## Lieferungen + +| # | Backend | +|---|---------| +| 1 | Migration `012_roadmap_item_criteria.sql` | +| 2 | CRUD Criteria; waive/defer/satisfy Endpoints | +| 3 | Verify über Criteria-Engine (ersetzt Ein-Evidence-Shortcut) | +| 4 | `POST /api/roadmap-items/:id/reopen` + Capabilities | +| 5 | Audit-Events: criterion.*, roadmap_item.reopened | +| 6 | Default-Kriterium-Migration für bestehende Items | + +| # | Frontend | +|---|----------| +| 7 | Route `/initiatives/:id/plan/items/:itemId` — Checkliste, Fortschritt | +| 8 | Waive/Defer-Dialog (Decision) | +| 9 | Reopen-Button (rollenabhängig) | + +| # | Tests | +|---|-------| +| 10 | Verify mit satisfied/waived/deferred | +| 11 | Reopen + Kriterium-Änderung bei reached | + +--- + +## Nicht in AP1.4b + +- Graph Engine (AP1.4d) +- `sequencing_mode` entfernen (AP1.4d) +- KI-Verify +- Gate-Owner-Feld (optional später) + +--- + +## Abnahme + +- [ ] Gate mit 3 Kriterien: 2 satisfied, 1 waived (Decision) → Verify OK +- [ ] Reopen durch Member (Verantwortlicher) → `active`, Kriterien unverändert +- [ ] Kriterium an `reached`-Gate ändern → Gate `active`, Audit sichtbar +- [ ] pytest grün im CI-Container + +--- + +*Referenz: Roadmap v0.2 AP1.4b, Vision §6*