# Plán autonomie orchestrátora s agenty a agendami

**Cíl:** Definovat jasný, opakovatelný workflow pro Orchestrátora, který řídí 10 subagentů s pevnou delezí matrix, zajišťuje bezpečnostní brany a udržuje fail-closed stav.

---

## 1. Architektura řízení (D6 invariant)

**Orchestrátor je jediný delegátor** — žádný jiný agent nemá `task: allow`. Všechny zápisy do `src/`, `tests/`, `.github/`, `.kilo/kilo.jsonc`, `pyproject.toml` vyžadují **výslovné schválení vlastníka** navíc nad tím, že orchestrátor už má `edit: allow` jen pro markdown dokumentaci.

**Povolené akce pro Orchestrátora** (z kilo.jsonc):
- `bash: allow` — jen pro **čtení stavu a deterministické kontroly** (spouštěním `pytest -q`, `ruff check`, `mypy src/cyberbrain26`)
- `edit: allow` — jen pro **markdown dokumentaci, CHANGELOG, context soubory** — zápis do `src/` atd. vyžaduje schválení vlastníka

---

## 2. Delegační matice — kdy kterého subagenta

| Agent | Účel | bash | edit | Kdy ho povolím |
|-------|------|------|------|----------------|
| `deep-research` | Webový výzkum (tech, CVE, trh) | deny | deny | Při vyhledávání nových technologií, CVE, tržních dat |
| `threat-modeler` | Hranice důvěry, tool, integrace | deny | deny | Při návrhu nových integrací, rizikovýchmodelů |
| `security-auditor` | Audit security/execution plane | deny | deny | Při security revizi, gate auditu |
| `pricing-researcher` | Monetizace, pricing | deny | deny | Při obchodních přípravcích, ceníkách |
| `code-reviewer` | Diff review před/po Gate 2 | deny | deny | Před schválením kódu, po změně |
| `verifier` | Deterministické kontroly | deny | deny | Před i po změně (pytest, ruff, mypy) |
| `documenter` | Markdown docs, roadmapy | deny | allow* | Pouze pro markdown soubory — `src/`, `tests/` = `implementer` |
| `implementer` | Mění `src/`/`tests/` | deny | allow | První krok: vytvoří diff, který musí projít schválením |
| `tester` | Gate 1/2 — pytest, ruff, mypy | allow | deny | Spouští brány, kontrolor |
| `gate3-auditor` | Gate 3 — výběrový pytest | allow | deny | LLM-as-judge jiným modelem, až po Gate 1+2 |

\* `documenter` edit pouze markdown — kód = `implementer` + schválení vlastníka.

---

## 3. Brány (Gate 1 → Gate 2 → Gate 3)

### Gate 1 — PŘED změnou (baseline)
- `pytest -q` — všem 747 testů projde
- `ruff check` — clean
- `mypy src/cyberbrain26` — clean (87 souborů)
- **Výsledek:** zelená baseline → můžeme pokračovat

### Gate 2 — PO změně
- Totéž jako Gate 1 + **diff** + **coverage**
- Musí být zelená i po změně
- Pokud zhausení → musíme změnu přehodnotit

### Gate 3 — Nezávislá verifikace
- **LLM-as-judge jiným modelem** (jiný než jsme použili my)
- Provádí se **pouze po Gate 1 i Gate 2**
- Nikdy jako první brána
- Vyžaduje `gate3-auditor` agenta (aktualmente nedostupný v Task toolu → přesun do budoucna)

---

## 4. Cross-check před KAŽDÝM subagentem (povinné)

Před spuštěním jakéhokoliv subagenta musím ověřit:

```
declared_actions  ∈  ACTION_SCOPE_REQUIREMENTS
```

Z `src/cyberbrain26/security_plane/actions.py:242-272`:

| Akce | Požadovaný scope |
|------|-----------------|
| `read_file` | `file` |
| `write_file` | `file` + schválení vlastníka pro `src/`/`tests/` |
| `execute_python` | `python` |
| `execute_shell` | `sandboxed` (resp. deny — žádné běh na hostovi) |
| `access_network` | `network` (localhost Ollama = allow) |
| `websearch` | `web` |
| `list_mcp_resources` | `mcp` (cyberbrain26 je `enabled: false`) |

**Pokud chybí akce** → subagent **nespustím**, vracím se k PromptMasterovi/vlastníkovi.

---

## 5. Limity a politiky

### Fan-out limit
- **Max 4 souběžné background subagenty** na krok
- Fan-out hlídám v konfigu `subagent_depth: 3` (hard limit)

### Retry politika
- **Nikdy** neposílám stejný krok znova po rozběhnutí kódu (D2 invariant, `retry_blocked`)
- Dead-letter: práce, která se **2× neopraví** → předání vlastníkovi jako otevřený bod

### Jeden krok = jeden soubor nebo adresář
- Nestakuji se více soubory najednou

---

## 6. Receipt kontrola (Pravidlo 7)

Každý report tvrdící změnu musí nést **receipt**:
- Seznam `soubor:řádek — co tam je`
- Ověřeno **jedním příkazem** (`cat -A`, `git status --porcelain`, `grep -c`)
- Rozpor = `REJECT_UNVERIFIED`

Bez receiptu se změna **nepřijme**.

---

## 7. Slovník odmítnutí (verbatim)

| Kód | Znamená | Co dál |
|-----|---------|--------|
| `REJECT_UNVERIFIED` | tvrzení bez `file:line` nebo výstupu příkazu | autor dohledá důkaz |
| `REJECT_SCOPE_MISSING` | `declared_actions` mimo `ACTION_SCOPE_REQUIREMENTS` | rozšířit slovník akcí, nebo zúžit úkol |
| `REJECT_CONTEXT_MISMATCH` | výstup neřeší zadání | nový brief, jiný owner |
| `REJECT_GATE_RED` | Gate 1 nebo Gate 2 červená | nejprve opravit bránu |
| `REJECT_SECURITY_FINDING` | `security-auditor` / `threat-modeler` našel nález | mitigace, pak nová revize |
| `REJECT_EXTERNAL_DEPENDENCY` | výstup závisí na tom, co v repu není | změnit zadání |
| `REJECT_HYPOTHESIS_ONLY` | výstup neprošel důkazem, jen odhadem | autor dohledá artefakt |
| `REJECT_SUPERSEDED` | mezitím vznikla novější revize | owner rozhodne |

---

## 8. Sekvence bran (povinné pořadí)

```
1. Gate 1 (PŘED): zelená baseline
2. Změna (implementer + schválení)
3. Gate 2 (PO): zelená + diff + coverage
4. Gate 3: LLM-as-judge jiným modelem (pouze po 1+i)
```

---

## 9. Workflow typologie (5 scénářů)

| Typ | Cesta |
|-----|-------|
| **Feature** | deep-research → threat-modeler → code-reviewer (návrh) → schválení → implementer → tester Gate 2 → code-reviewer → verifier → documenter → CHANGELOG.md |
| **Bezpečnostní změna** | security-auditor → threat-modeler → schválení → implementer → tester Gate 2 → security-auditor (revize) → verifier (fail-closed) → documenter |
| **Výzkum/design bez zápisu** | deep-research → threat-modeler → pricing-researcher → code-reviewer → předání ownerovi |
| **Údržba konfigurace/agentů** | code-reviewer → tester → verifier |
| **Peníze/produkt** | pricing-researcher → deep-research → předání ownerovi |
| **Dokumentace/roadmapy** | documenter → verifier → CHANGELOG.md |

---

## 10. Plánované akce pro autonomní spuštění

1. **Ověřit aktuální konfiguraci** `kilo.jsonc` a `orchestrator.md` proti tomuto plánu
2. **Provést cross-check** u všech budoucích subagentů (déclared_actions vs ACTION_SCOPE_REQUIREMENTS)
3. **Spustit Gate 1 baseline** (`pytest -q`, `ruff check`, `mypy src/cyberbrain26`) a ověřit zeleno
4. **Vymezit rozsah implementerovy práce** — jen `edit: allow` pro markdown, pro `src/`/`tests/` nutné schválení vlastníka
5. **Vytvořit receptový systém** — každá změna musí mít `file:line` důkaz
6. **Naplánovat Gate 3 verifikaci** — až po úspěšném Gate 1+2, jiný model
7. **Zapsat tento plán do dokumentace** a zaručit, že platí pro všechna budoucí workflow

---

## 11. Open rizika a nejasnosti

- **MCP server `cyberbrain26`** je `enabled: false` — cross-check musím dělat offline (čtení `actions.py:242-272`)
- **`subagent_depth: 3`** je tvrdý runtime limit — nedá se překonat
- **`documenter` edit: allow** jen pro markdown — snadno přeškrtnutí do `src/` = chyba
- **Gate 3 agent** `gate3-auditor` je v Task toolu nedostupný — budu muset řešit ručně nebo přes posun konfigurace
- **Žádné CI v repu** — `.github/workflows/ci.yml` existuje ale `git remote -v` je prázdný, takže se nikdy nekonal

---

**Tento plán platí pro všechna budoucí subagentská volání.** Při jakémkoliv kroku porušující tyto pravidla se řídím `REJECT_*` slovníkem a okamžitě přepnu do konzultace s vlastníkem.