# Sesja 2026-07-17/18 — KB faza 3: kroki 2-5 DOMKNIĘTE

## Krok 2 — migracja 004 + pilot streszczeń A/B (17.07)
- `document_summary` (UNIQUE z model od razu) na żywej bazie; job summarize (map-reduce >200k znaków, słownik tagów kontrolowany, izolacja błędów).
- **Bug krytyczny znaleziony w pilocie**: brak `options.num_ctx` → gemma3:12b cicho ucinała 45% dokumentów do ~2048 tok (zweryfikowane prompt_eval_count). Fix + pełny re-run toru lokalnego. Dwutorowość D3 zwróciła się natychmiast.
- Wynik: haiku-4-5 157/157 (0 JSON-faili, 100% dyscypliny słownika), gemma3 155/157 (2 JSON-faile, dryf tagów — na FLL komplet tagów z kosmosu).
- **Decyzja D3 (ocena A/B Oskara, 18.07... 17.07)**: tor kompilacyjny = claude-haiku-4-5; gemma3 w odwodzie; model fazy mailowej — przy jej reconie (prywatność/koszt).

## Krok 3 — kaskada summary→chunk (17.07)
- `retrieval.py`: flat_query (baseline) + cascade_query (stage1 summary → stage2 chunk, jeden embed/zapytanie). Eval przepisany do wersjonowanego `eval/queries.yaml` + `retrieval_eval.py`.
- **Bramka PASS at N=10, k=5** (N-sweep {1..20}: N=5 zmierzona podłoga, N=10 z 2× marginesem). Kaskada nie poprawia rankingu na 186 dok (top-1 identyczne z flat przy N≥5) — zgodnie z przewidywaniem planu: to test architektury pod 225k, nie optymalizacja pilotowa. Kaskada = domyślna ścieżka kb-query.

## Kroki 4-5 — cykliczny ingest + timer (17-18.07)
- Wrapper 4-etapowy (adapter→chunk_embed→summarize→embed-summaries; 4. etap dołożony po pytaniu CC — bez niego nowe summaries niewidzialne dla kaskady). Tolerancja Ollama-offline, metryki textfile (.prom), reguły alertów fleet-prometheus.
- **node_exporter@PIHA wciągnięty do GitOps** (owner_node: per-host — domyka pół paczki B inwentaryzacji).
- Test na żywo: dry-run wykrył **5 dokumentów pominiętych przy imporcie 13.07** (race z OCR — Paperless miał 191, envelope 186); --apply przemieliło je end-to-end (82 chunki, 2 junk-flagged przez nowy filtr, 5 summaries), drugi run w pełni idempotentny. 202/202 testów.
- Deploy: timer na PIHA enabled (03:30 daily), venv /opt/homelab/kb/venv, KB_DSN+ANTHROPIC_API_KEY w .env; trigger ręczny: exit 0, liczniki 0. Incydenty po drodze: sekwencja instalacyjna omyłkowo odpalona też na SOLARII (posprzątane: timer disabled, venv/DSN usunięte); deploy-node.sh na SOLARII rozebrał node-agenta przy ghost-recreate (dokończony, agent wstał).

## Stan bazy: 191 kopert paperless / 225 030 gmail; 2765 chunków (2545+82 aktywne...); 162 summaries haiku. KB samo-aktualizująca się.

## Otwarte
- **Rotacja ANTHROPIC_API_KEY** — klucz świecił w transkrypcie 17.07; Oskar świadomie odłożył (limit $200/mies. ogranicza ryzyko). Zrobić przy okazji.
- **Wiki proof-of-concept** — ostatni element fazy 3 (repo kb-wiki, konwencje, 3-5 stron przez CC). Świeża sesja.
- Follow-upy CC: stability-agent owner_node single→per-host (druga połowa paczki B).
