# ROADMAP — Board & Ready-Set Eingang des Feature-Loops **und** der Abhängigkeits-DAG: jedes Item kennt seine Prerequisites. Der Leader berechnet jeden Zyklus das **Ready-Set** und dispatcht nur daraus. > **ROADMAP vs. STATE:** ROADMAP = der ganze geplante Graph (Planungsebene). > `STATE.md` = was *gerade jetzt* läuft (Live-Ebene: Now / In Progress / Blocked). > Ein Item wandert: ROADMAP-`🔲` → beim Dispatch in `STATE.md` „In Progress" → > bei Merge zurück als ROADMAP-`✅` in „Done". ## Legende - **Typ:** 🔌 port (Referenz-Impl/golden oracle) · 🔬 research (nur Paper-Formeln) · 🧱 infra - **Status:** ✅ done · 🔲 ready · ⏸ blocked-by-prereq · ⛔ blocked-extern (Lizenz/Mensch-Entscheid) ## Ready-Set-Regel (so dispatcht der Leader) ``` Ready-Set = { Items mit Status 🔲, deren Prereqs ALLE ✅ sind } ``` 1. Ready-Set bilden (Board unten lesen). 2. Ein Item ziehen; Modell + Rolle aus `docs/roles/model-routing.md` setzen. 3. Session-Prompt **vollständig ausfüllen und committen** — BEVOR der Worker-Agent startet. Template: `session-prompts/TEMPLATE.md` (Pflichtfelder: Rolle, Pflichtlektüre, Out-of-Scope-Regel). 4. **🔌/🧱** → direkt Worker. **🔬** → erst durch das Spike-Gate (`docs/loops/spike-gate.md`). 5. Worker dispatchen (kalt — kein Kontext aus Leader-Session weitergeben). 6. Nach Implement: Review-Gate (Opus, kalt) → Merge → Item hier auf ✅, Dependents werden frei. > **Invariante:** Session-Prompt existiert immer vor dem Worker-Dispatch. > Ein Worker der keinen vorbereiteten Prompt vorfindet, soll NICHT beginnen > sondern `STATE.md` auf "Blocked — kein Prompt" setzen. ## Abhängigkeits-DAG (Projekt: __) ``` F-01 ──► F-02 ──► … ``` > Den DAG nach dem BOOTSTRAP befüllen. ## Board | ID | Item | Typ | Status | Prereqs | Rolle · Modell | Aufwand | |----|------|-----|--------|---------|----------------|---------| | — | _(nach BOOTSTRAP befüllen)_ | — | — | — | — | — | ## Done | ID | Item | Session | Commit | |----|------|---------|--------| | — | — | — | — |