# Gate 3 implementační plán pro Orchestrátora

**Datum:** 3. 11. 2026  
**Stav:** Připraveno k implementaci  
**Nadřazený plán:** `.kilo/plans/CyberBrain26cil-031026-v2.md` (Gate 3 je ⏳ PLANNED, blokováno)  
**Souvislý plán:** `.kilo/plans/1793806517-r3-gate2-gate3-plan.md` (Gate 3 BLOKOVÁNO)  
**Souvislý plán:** `.kilo/plans/1791175478868-f4-gate3-checkpoint-plan.md` (předchozí pokus, F4 scope)

---

## 1. Problém

Gate 3 je **strukturálně nedokončitelné** v tomto prostředí.

### Příčina

`gate3-auditor` existuje jako `.kilo/agent/gate3-auditor.md` (frontmatter: `bash: allow`, `edit: deny`, `task: deny`) a je v orchestratorově `task` allowlistu (`.kilo/agent/orchestrator.md:19`), ale **Task tool typ `gate3-auditor` není registrovaný** — pokus o delegaci vrátí `Unknown agent type`. Frontmatterové `bash: allow` se v runtime neuplatní.

Z `.kilo/agent/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é**.

### Současný stav bran

| Brána | Stav | Důkaz |
|-------|------|-------|
| Gate 1 | ZELENÁ | 763 passed, ruff clean, mypy clean |
| Gate 2 | ZELENÁ | 763 passed, ruff clean, mypy clean |
| Gate 3 | NEPROVEDENO | `gate3-auditor` typ není v Task toolu |

---

## 2. Cíl

Zprovoznit Gate 3 — nezávislou verifikaci s **jiným modelem** (`dolphin-cb26:latest` místo `phi3.5:latest`), provedenou **až po Gate 1 i Gate 2** (což je nyní splněno).

Gate 3 nikdy není první brána (AGENTS.md, orchestrator.md:400).

---

## 3. Rozhodnutí potřebuje (vlastník)

| # | 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í dle orchestrator.md:151-154 |
| B | **Alternativní agent** | Pokud A není možné: použít jiného agenta s `bash: allow` pro výběrový pytest běh | NE — `tester` je deterministický, ne LLM-as-judge s jiným modelem; 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` použitý při vývoji |
| D | **Vlastnosti k ověření** | Artefakt od orchestrátora s konkrétními P1–Pn vlastnostmi a `file:line` | Musí být definováno před spuštěním gate3-auditora |

---

## 4. Úkoly v pořadí

### 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 (mimo tento repo — `.kilo/agent/*.md` existuje, ale Task tool typ chybí)
- **Kritérium přijetí:** `task` s `"gate3-auditor": allow` v orchestrátoru vede 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 orchestrator.md:170-171:
  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]
- **Soubory 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á:**
  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é

---

## 5. 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 |

---

## 6. 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 (arXiv:2510.11822, TPR 96%, TNR <25%) | Jeden 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" |

---

## 7. 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?

---

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

1. Orchestrátor připraví artefact (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 5)
5. Orchestrátor reportuje vlastníkovi (Krok 4)
6. Vlastník schválí nebo zamítne Gate 3 výsledek

---

## 9. 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).

---