# Gate 3 Completion Plan — CyberBrain26 v4.1 F2

**Cíl:** Spustit nezávislou verifikaci Gate 3 s `dolphin-cb26:latest` modelem až po Gate 1 i Gate 2 (obě splněny).

**Stav k 3. 11. 2026:**
- Gate 1: ZELENÁ — 763 passed, ruff clean, mypy clean
- Gate 2: ZELENÁ — po změně, llm.cpp není nasazen
- Gate 3: NEPROVEDENO — `gate3-auditor` typ není v Task toolu

---

## 1. Problém a příčina

Gate 3 je **strukturálně nedokončitelný** protože Task tool nezná typ `gate3-auditor`.

### Příčina (z `1793714960761-gate3-implementation.md:13-20`):
- `gate3-auditor` existuje jako `.md` soubor s frontmatterem `bash: allow`, `edit: deny`, `task: deny`
- Nachází se v `.kilo/kilo.jsonc` na ř. 62–65 jako registrovaný subagent
- **Ale Task tool ho neřeší** — pokus o delegaci vrátí `Unknown agent type`
- Frontmatterové `bash: allow` se v runtime neuplatní, protože Task tool typ chybí

### Důkaz z `orchestrator.md:151-154`:
> `gate3-auditor` existuje jen jako `.md` — Task tool ho jako typ nezná. Dokud v Task tool seznamu není typ s `bash: allow` a auditní rolí, **Gate 3 je strukturálně nedokončitelný**.

---

## 2. Rozhodnutí potřebuje vlastníka

Podle `1793714960761-gate3-implementation.md:40-47`:

| # | Volba | Popis | Doporučení |
|---|-------|-------|------------|
| **A** | **`gate3-auditor` typ** | Přidat `gate3-auditor` do Task tool subagent typů (platformová změna mimo tento repo) | **ANO** — jediné správné řešení |
| B | Alternativní agent | Použít jiného agenta s `bash: allow` pro výběrový pytest běh | NE — porušuje Gate 3 definici |
| **C** | Model pro Gate 3 | `dolphin-cb26:latest` (dle `CyberBrain26cil-031026-v2.md:58`) | ANO — jiný model než `phi3.5:latest` |
| D | Vlastnosti k ověření | Artefakt od orchestrátora s konkrétními P1–Pn vlastnostmi a `file:line` | Musí být definováno |

---

## 3. Úkoly k dokončení Gate 3

### Krok 1: Vyřešit `gate3-auditor` typ (blokátor)

**Co:** Zajistit, aby `gate3-auditor` byl rozpoznatelný jako Task tool subagent typ.

**Kdo:** Vlastník / platforma (změna mimo tento repo — `.kilo/agent/*.md` existuje, ale Task tool typ chybí).

**Kritérium přijetí:**
`task "gate3-auditor"` musí vést ke spuštění agenta, ne k `Unknown agent type`.

**Pokud není možné:** Oznámit vlastníkovi, Gate 3 zůstává `NEPROVEDENO` s odůvodněním.

---

### Krok 2: Připravit Gate 3 artefakt (orchestrátor)

**Co:** Artefakt pro gate3-auditor podle `gate3-auditor.md:44-62` a `1793714960761-gate3-implementation.md:60-71`:

1. Cíl jednou větou
2. Přesný rozsah — soubory/adresáře (mimo `security_plane/`, `execution_plane/`, `pilot/`, `knowledge_plane/` dle `gate3-auditor.md:85`)
3. Kritéria přijetí
4. `declared_actions` pro cross-check slovníku akcí
5. Co se NESMÍ měnit
6. `owner_role` — právě jeden vlastník
7. Tvrzení k ověření — jedno tvrzení = jeden řádek, formát `[OVĚŘENO]`/[HYPOTÉZA]

**Vlastnosti mimo rozsah (dle `gate3-auditor.md:85`):**
- `security_plane/`
- `execution_plane/`
- `pilot/`
- `knowledge_plane/`

**Vlastnosti k ověření:** P1–Pn dle zadání (příklad z F4 plánu: free-only routing, egress autorizace, fail-closed, digest v auditu, atomicita Kilo configu, záloha před zápisem).

---

### Krok 3: Spustit Gate 3 (orchestrátor → gate3-auditor)

**Co:** Delegovat artefakt gate3-auditorovi jako `background: true`.

**Co gate3-auditor dělá (dle `gate3-auditor.md`):**

1. Spustí `pytest` pro zadané vlastnosti (jediný povolený příkaz dle jeho frontmatteru)
2. Zapíše **doslovný** výstup (poslední řádek pytestu)
3. Vydá verdikt: `PASS` | `FAIL` | `REJECT_UNVERIFIED`
4. Každé tvrzení: `[OVĚŘENO]` s `file:line` a vlastním během, nebo `[NEOVĚŘENO]`
5. Není povoleno: analyzovat kód, vracet šablonu, odhadovat, analyzovat `file:line` které sám nečetl

**Co orchestrátor dostane:** Výstup ve formátu `gate3-auditor.md:44-62`.

---

### Krok 4: Report vlastníkovi (orchestrátor)

**Co:** Zaznamenat Gate 3 stav jako `provedena` / `ne` s odůvodněním.

**Formát:** Dle `orchestrator.md:429-435` (Stav, Rozhodnutí potřebuje, Agenti, Brány, Otevřené body).

**Gate 3 značení:** `[OVĚŘENO]` / `[HYPOTÉZA]` / `[SIMULOVANÉ]` — nikdy neprezentovat hypotézu jako ověřené.

---

## 4. Kritéria přijetí Gate 3

| Kritérium | Očekávané |
|-----------|-----------|
| Gate 1 před Gate 3 | ZELENÁ (splněno) |
| Gate 2 před Gate 3 | ZELENÁ (splněno) |
| Jiný model než vývoj | `dolphin-cb26:latest` |
| gate3-auditor typ dostupný | `task` s `"gate3-auditor": allow` funguje |
| Výstup je doslovný | `pytest` výstup bez šablon, bez placeholderů |
| Tvrzení mají `file:line` | Každé `[OVĚŘENO]` má `file:line` |
| Žádná analýza kódu | gate3-auditor jen spouští pytest, ne čte kód |

---

## 5. Rizika

| Riziko | Původ | Mitigace |
|--------|-------|----------|
| `gate3-auditor` typ nepřidán | Platformová limita, mimo tento repo | Oznámit vlastníka, Gate 3 = `NEPROVEDENO` |
| LLM-as-judge bias | Jeden model nemusí rozpoznat špatnou práci (TPR 96%, TNR <25%) | Jediný rozpor s výstupem příkazu = `REJECT_UNVERIFIED`; dvě shody nic nedokazují |
| gate3-auditor poruší chartu | Vrací šablonu nebo placeholder | Orchestrátor odmítne výsledek, vrátí k vlastníkovi |
| Tvrzení bez `file:line` | Agent behauptuje bez důkazu | `REJECT_UNVERIFIED`, ne „částičně dobrá zpráva" |

---

## 6. Otevřená rozhodnutí (potřebuje vlastníka)

1. **Gate 3 agent typ:** Je možné přidat `gate3-auditor` do Task tool subagent typů? Pokud ne, jaká je alternativní cesta?
2. **Model:** Potvrzuje se použití `dolphin-cb26:latest` pro Gate 3 LLM-as-judge?
3. **Vlastnosti:** Má vlastník konkrétní seznam vlastností (P1–Pn) pro Gate 3, nebo má orchestrátor připravit návrh?

---

## 7. Sekvence pro proveditelnou Gate 3 (až bude typ dostupný)

1. Orchestrátor připraví artefakt (Krok 2)
2. Orchestrátor deleguje gate3-auditorovi (Krok 3, `background: true`)
3. gate3-auditor spustí `pytest`, vrátí VERDIKT + doslovný výstup
4. Orchestrátor zkontroluje výstup proti kritérii přijetí (oddíl 3)
5. Orchestrátor reportuje vlastníkovi (Krok 4)
6. Vlastník schválí nebo zamítne Gate 3 výsledek

---

## 8. Poznámky

- Gate 3 **nikdy** není první brána (orchestrator.md:400). Gate 1 i Gate 2 jsou nyní zelené, takže tato podmínka je splněna.
- `gate3-auditor` má `edit: deny` — nic nemění, pouze spouští pytest a vydává verdikt.
- `gate3-auditor` má `task: deny` — nemůže delegovat dál.
- Maximálně 4 souběžné background subagenty (orchestrator.md:383).
- Nikdy nezkoušet retry po selhání kódu (orchestrator.md:385, D2 invariant).
- Pokud gate3-auditor typ není přidán, Gate 3 = `NEPROVEDENO` a přesuneme se k Phase D.