# Plán: Knowledge Plane End-to-End Verification

**Cíl:** Provést Gate 1 a Gate 2 verifikaci pro knowledge plane end-to-end pipeline a potvrdit, že MemoryService funguje.

---

## Stav (po code agentovi)

### Hotovo (R5 — Knowledge Plane Integration)
- ✅ `src/cyberbrain26/knowledge_plane/memory_service.py` — MemoryService API (328 ř.)
- ✅ `tests/test_knowledge_integration.py` — 8 integračních testů
- ✅ `src/cyberbrain26/knowledge_plane/__init__.py` — export MemoryService
- ✅ Embedding dimenze: `qwen3-embedding:0.6b` dim=1024 (knowledge plane) ≠ `dolphin-mistral:latest` dim=102400 (global indexing) — design decision dokumentováno

### Zůstává (k provedení Orchestrátorem)
1. **Gate 1 baseline** — pytest, ruff, mypy (před jakoukoliv další změnou)
2. **Gate 2** — po případných opravách z Gate 1
3. **Ověření receiptů** pro každou změnu

---

## Akční plán pro Orchestrátora

### Krok 1: Gate 1 Verifikace (immediátně)
**Agent:** `tester`  
**Declared actions:** `execute_python` (pytest), `access_network` (Ollama), `read_file`  
**Příkazy:**
```bash
# Baseline + nové testy
PYTHONPATH=src python3 -m pytest tests/test_knowledge_plane.py tests/test_knowledge_embedding.py tests/test_knowledge_deepweb.py -q
PYTHONPATH=src python3 -m pytest tests/test_knowledge_integration.py -q
PYTHONPATH=src python3 -m pytest -q  # full suite
ruff check
mypy src/cyberbrain26
```

**Očekávaný výstup:**
- 747+8 = 755+ passed tests
- ruff clean
- mypy clean (87+ files)

### Krok 2: Pokud Gate 1 FAIL
**Agent:** `implementer` (s schválením vlastníka)  
**Úkol:** Opravit selžující testy / lint / typecheck  
**Proces:**
1. Vytvoří diff
2. Orchestrátor ověří cross-check (`declared_actions` vs `ACTION_SCOPE_REQUIREMENTS`)
3. Schválení vlastníka pro zápis do `src/`/`tests/`
4. Zpět na Krok 1

### Krok 3: Gate 2 Verifikace (po úspěšném Gate 1)
**Agent:** `tester`  
**Stejné příkazy jako Krok 1** + diff kontrola

### Krok 4: Receipt validace
**Agent:** `verifier`  
**Ověří:** Každá změna má `file:line` důkaz  
**Příkazy:**
```bash
git status --porcelain
grep -r "MemoryService" src/cyberbrain26/knowledge_plane/ --include="*.py"
grep -r "test_knowledge_integration" tests/ --include="*.py"
```

---

## Cross-check deklarovaných akcí

| Agent | declared_actions | Scope kontrola |
|-------|------------------|----------------|
| `tester` | `execute_python`, `access_network`, `read_file` | `python` ∈ ACTION_SCOPE, `network` ∈ ACTION_SCOPE (localhost Ollama), `file` ∈ ACTION_SCOPE |
| `implementer` | `write_file`, `read_file` | `file` ∈ ACTION_SCOPE + owner approval pro `src/` |
| `verifier` | `read_file`, `execute_python` | `file`, `python` ∈ ACTION_SCOPE |

---

## Rizika

1. **Ollama nedostupné** — `EmbeddingService.health_check()` vrátí `healthy: False`, testy mohou selhat na `semantic_search`. **Mitigace:** Testy by měly mockovat Ollama nebo mít `pytest.mark.skipif` pro CI. 
2. **LanceDB zamknuté** — paralelní přístup k `lancedb_data` může konfliktovat. **Mitigace:** Testy používají `tmp_path` fixture.
3. **Mypy baseline** — nový `memory_service.py` může vyžadovat `type: ignore` pro LanceDB importy.

---

## Open rozhodnutí

| Otázka | Doporučení |
|--------|------------|
| Mockovat Ollama v testech? | **Ano** — přidat `pytest.fixture` s mock `EmbeddingService` do `conftest.py` |
| CLI entry point pro `cyberbrain knowledge`? | **Mimo scope** tohoto plánu (library-only je v pořádku per CAPABILITIES.md) |
| Gate 3? | **Později** — vyžaduje jiný model a `gate3-auditor` agent |

---

## Receipt pro Orchestrátora

Po dokončení musí Orchestrátor předložit:
- [ ] Gate 1: `pytest -q` výstup (755+ passed)
- [ ] Gate 1: `ruff check` clean
- [ ] Gate 1: `mypy src/cyberbrain26` clean
- [ ] Gate 2: Stejný výstup po možných opravách
- [ ] `git diff --stat` pro změny
- [ ] `grep -c "MemoryService"` potvrzení exportu

---

**Status:** Připraveno k provedení. Orchestrátor deleguje `tester` na Krok 1.