# Plán: Pokračování po Gate 1 (CyberBrain26 orchestrator)

## Stav (Gate 1 — zelená)
- pytest: 747 passed, 0 failed
- ruff: All checks passed!
- mypy: Success (87 source files)
- R1 (embedding_service.py:34 `"prompt"` → `"input"`): aplikováno
- R2 (conftest.py: izolace DB přes CYBERBRAIN_DB_PATH): aplikováno
- R4 (customer discovery): dokončeno (23 zdrojů, 4 segmenty)
- R3 (llama.cpp na portu 8080): NOT_REACHABLE — blokováno read-only mandátem testera
- R5 (audit chain HMAC): implementér timeout, opakovat

## Další kroky

### 1. R3 — Spustit llama.cpp provider (owner/implementer)
- Najít GGUF model v systému (např. `phi3.5`, `qwen2.5`, nebo z `ollama list`)
- Spustit: `/usr/local/lib/ollama/llama-server -m <model.gguf> -p 8080` na pozadí
- Ověřit: `curl -s http://localhost:8080/health` vrací 200 OK
- Pokud model není dostupný: `REJECT_EXTERNAL_DEPENDENCY` s konkrétním důvodem

### 2. R5 — Implementovat audit chain HMAC (implementer)
Soubor: `src/cyberbrain26/security_plane/audit/chain.py`
Změny:
1. Přidat `compute_event_hash(event, previous_hash)` — SHA-256(event_data + previous_hash)
2. Přidat `verify_chain()` — ověření všech záznamů od prvního po poslední
3. Přidat `previous_hash` sloupec do `audit_events` tabulky
4. `record()` vypočítá hash a uloží ho spolu s `previous_hash`
5. `clear()` a `prune_expired()` zruší řetězení (audit trail je append-only)
- Diff k odsouhlasení → aplikace → testy

### 3. Gate 2 — Validace (tester)
- Spustit pytest, ruff, mypy — vše musí projít
- Ověřit R1, R2, R5 změny

### 4. Gate 3 — Nezávislé ověření (verifier)
- Nezávislá kontrola všech změn
- Potvrzení bezpečnostních invariant (fail-closed chain)

## Otevřené otázky
- R3: Existuje v systému GGUF soubor modelu? Pokud ne, R3 je `REJECT_EXTERNAL_DEPENDENCY`.
- R5: Potřebuje schválení diffu před aplikací.

## Gate checkpoints
- Gate 1: [OVĚŘENO] — všechny kontroly zelené
- Gate 2: připraveno k validaci po aplikaci R5
- Gate 3: připraveno po verifierovi