# STATE — pracovní strom a `kilo` CLI, 4. 10. 2026 (session 2)

Doplnění k `handoff/HANDOFF_2026-10-04.md` §1, §4 a §6. Každé tvrzení níže má
výstup příkazu nebo je výslovně označeno jako neověřené.

---

## 1. `git status --short` — [OVĚŘENO 2026-10-04]

```console
$ git status --short
 M .kilo/agent/code-reviewer.md
 M .kilo/agent/deep-research.md
 M .kilo/agent/implementer.md
 M .kilo/agent/orchestrator.md
 M .kilo/agent/pricing-researcher.md
 M .kilo/agent/security-auditor.md
 M .kilo/agent/tester.md
 M .kilo/agent/threat-modeler.md
 M .kilo/agent/verifier.md
 M .kilo/context/LESSONS_AND_DECISIONS.md
 M .kilo/context/decisions/DECISIONS_V7.md
 M .kilo/kilo.jsonc
 M .ptah/analysis/cyberbrain26-v4/manifest.json
 M .ptah/harness/state.json
 M AGENTS.md
 M CHANGELOG.md
 M src/cyberbrain26/cli.py
 M src/cyberbrain26/data_plane/sqlite_store.py
 M src/cyberbrain26/execution_plane/secure_gateway.py
 M src/cyberbrain26/security_plane/__init__.py
 M tests/test_kilo_agent_policy.py
?? .claude/
?? .kilo/CyberBrain26-v4.code-workspace
?? .kilo/agent/overseer.md
?? .kilo/agent/scout.md
?? .kilo/context/handoff/HANDOFF_2026-10-04.md
?? .kilo/plans/
?? .kilo/plugin/
?? .ptah/analysis/cyberbrain26-v4/enhanced-prompt.json
?? .ptah/analysis/cyberbrain26-v4/enhanced-prompt.md
?? .ptah/analysis/cyberbrain26-v4/generation-manifest.json
?? docs/CyberBrain26cil-031026-v2.md
?? src/cyberbrain26/knowledge_plane/
?? src/cyberbrain26/model_layer/cli.py
?? src/cyberbrain26/pilot/
?? src/cyberbrain26/security_plane/egress.py
?? tests/test_egress_gate.py
?? tests/test_egress_gate_integration.py
?? tests/test_kilo_plugin_integration.py
?? tests/test_knowledge_plane.py
?? tests/test_pilot_workflow_e2e.py
```

Žádné stash, reset ani delete nebyly provedeny (AGENTS.md).

### Co z toho plyne pro F2

`src/cyberbrain26/security_plane/egress.py` i oba testy jsou **untracked** —
EgressGate tedy v `master` commitnutý není. Změněný
`src/cyberbrain26/execution_plane/secure_gateway.py` obsahuje zapojení brány
do `execute()`.

---

## 2. `kilo debug config` — NELZE ZAPSAT, binárka v této session není dostupná

Handoff §1 požadoval uložit výstup `kilo debug config`. **Úkol zůstává otevřený,
protože příkaz nelze spustit.** Důkaz, nikoli odhad:

```console
$ command -v kilo || echo "NOT-IN-PATH"
NOT-IN-PATH

$ type -a kilo
bash: type: kilo: nenalezeno

$ which -a kilo          # prázdný výstup

$ for p in /usr/local/bin/kilo /usr/bin/kilo /home/oem/.local/bin/kilo; do ...; done
MISSING /usr/local/bin/kilo
MISSING /usr/bin/kilo
MISSING /home/oem/.local/bin/kilo

$ echo "$PATH"
/home/oem/.local/bin:/home/oem/.local/bin:/home/oem/.local/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/usr/local/games:/snap/bin

$ ls -la /home/oem/.local/bin | ...     # v seznamu žádný `kilo`

$ npm config get prefix
/usr/local
```

### Interpretace — [OVĚŘENO] / [HYPOTÉZA]

- **[OVĚŘENO]** v této session neexistuje žádná `kilo` v žádné složce `PATH`.
  `kilo debug config` ani `kilo models` proto nelze spustit.
- **[OVĚŘENO]** `npm config get prefix` vrací `/usr/local`, ne `~/.local`.
  Rozhodnutí „uživatelský npm prefix“ z handoff §1 **v této session neplatí**.
- **[HYPOTÉZA]** handoff §1 tvrdí `kilo --version` → `7.8.3` a přesun na
  `~/.local/bin/kilo`. To je teď v rozporu s výše uvedeným výstupem. Buď se
  instalace vrátila / byla zrušena, nebo proběhla v jiném stroji či kontejneru.
  **Bez `kilo` binárky to nelze rozhodnout.**
- **[HYPOTÉZA]** vztah k §1 „Operační past“: `~/.local/bin` *je* v `PATH` a
  `kilo` tam *není*. Past tedy popisuje jinou příčinu než tuto.

**Důsledek pro bránu z `ROADMAP_V6.md:807` (viz handoff §2):** pozitivní brána
`kilo debug config` se dnes **nemůže provést**. Zápis `bash == "deny"` a
`permission_origins.bash.local` zůstává **[NEVĚŘENO]**. Změnu hosta dělá
vlastník; `tester` má `kilo upgrade` / `serve` / `daemon` / `remote` zakázané
(`.kilo/agent/tester.md:37`).

---

## 3. F2 (a) — stav, ne návrh

`tests/test_egress_gate_integration.py` **už existuje** (untracked, 210 řádků).
F2 (a) tedy není „napsat test“, ale „otestovat a nechat zkontrolovat existující
neprobraný test“.

### Zbývající tvrzení k ověření (formát `[OVĚŘENO]` / `[HYPOTÉZA]`)

1. **[HYPOTÉZA]** Test pokrývá reálnou cestu `AuthorizedExecutionService.execute()`,
   ne volání `EgressGate.authorize()` přímo. — `tests/test_egress_gate_integration.py:117,120,201,205`
2. **[HYPOTÉZA]** Egress rozhodnutí je zapsáno *před* spuštěním providera.
   — `:64-71` (stub čte počet audit řádků v okamžiku běhu) + `:125,177`
3. **[HYPOTÉZA]** Audit nese jen digest payloadu, nikoli payload.
   — `:132-134` porovnává `sha256(code)` a `:134` kontroluje nepřítomnost markeru
4. **[HYPOTÉZA]** Odepření na permission bráně nenechá vzniknout egress záznamu.
   — `:137-151`
5. **[HYPOTÉZA]** Odepření na egress bráně zastaví provedení a provider se nezavolá.
   — `:187-210` — **pozor**: test záměrně podstrčí prázdnou `EgressPolicy`
   (`:202`), protože `AuthorizedExecutionService.__init__` si vždy sestaví
   vlastní allowlist vlastního providera (`src/cyberbrain26/execution_plane/secure_gateway.py:113-115`).
   To je limita pokrytí, otevřeně popsaná v docstringu, ne skrytá.
6. **[HYPOTÉZA]** `asyncio_mode = "auto"` je zapnuté, takže `async def test_`
   bez dekorátoru funguje. — `pyproject.toml:235-239`
7. **[NEVĚŘENO]** Testy vůbec procházejí a celá suite je zelená. Vyžaduje `tester`.

### Co zůstalo otevřené

- F2 (a) má kandidáta na implementaci, ale **bez Gate 1 / Gate 2** v této session.
- F2 (b) plugin v `.kilo/kilo.jsonc` — schvalovací bod, nedotčen.