docs: PO-Freigabe AP1.4b — Kriterien, Reopen-Rollen, Audit
Waive/defer per Decision; Reopen active mit unveraenderten Kriterien; Sprint-Assignment AP1.4b. Co-authored-by: Cursor <cursoragent@cursor.com>
This commit is contained in:
parent
4d1c33bf18
commit
e70e3196ec
|
|
@ -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)
|
||||
|
||||
---
|
||||
|
||||
|
|
|
|||
|
|
@ -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`
|
||||
|
||||
|
|
|
|||
|
|
@ -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*
|
||||
Loading…
Reference in New Issue
Block a user