homelab-codex-ws/docs/sessions/2026-07-31-kb-f4-final-narty27.md
oskar e619c00874 docs: session log 2026-07-31 — KB faza 4 zamknieta + pilot narty27
Uzupelnia log o fakty brakujace w pierwszej wersji:
- OKF v0.2: migracja = jedna zamiana pola (timestamp -> generated {by,at})
- upstream bug: GoogleCloudPlatform/knowledge-catalog, generator grafu
  pomija linki od / wbrew §5.1 wlasnej spec
- landing w lancuchu generatorow (bylo: "strona linkow")
- nowa sekcja "Otwarte po sesji": expected_envelope w mail_queries,
  brak hosts/solaria/runtime/ollama/docker-compose.override.yml,
  R1-R3 node-agent (incydent 2026-07-30-ollama-solaria-vanish)

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
2026-08-04 14:39:52 +02:00

82 lines
3.8 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

# Session log 2026-07-31 — KB Faza 4: zamknięcie + pilot narty27
## Zakres
Finalne domknięcie fazy 4 subsystemu B (KB) — **na twardo** — oraz podsumowanie
pilota fazy 5 (narty27), wykonanego równolegle.
## Faza 4 — zamknięcie (na twardo)
### Dedup podwójnej implementacji fallbacku embed
- Rozstrzygnięcie: master (`e7625cd`, `app/embed_router.py`) = źródło prawdy.
- Z porzuconego brancha uratowano S1S4 (`cb8a19d`):
- `retrieval_eval.py --transport http`
- session log 27.07
- testy luk T1T3
- komentarz kalibracji progów dist.
- Pełny rozbiór obu implementacji: `docs/kb/modules/05-fallback-dedup-raport.md`.
### Deploy na PIHA (z mastera)
- `ollama-piha`: named volume `ollama_piha_models`, model bge-m3, `KEEP_ALIVE=0`.
- `kb-query`: port 8230, bind 192.168.31.5, `EMBED_FALLBACK_URL` ustawione.
### Test sol-down — PASS na żywej produkcji
Przebieg: pause ollama@SOLARIA → cache 30 s trzyma `up` → zapytanie przełącza się
one-shot na PIHA (`embed_backend: piha`, wyniki poprawne) → `sol_status: down`
unpause → powrót `up` w ≤35 s.
Dodatkowo zaobserwowano **samoistne, jednorazowe zadziałanie breakera na produkcji**
przyczyna nieustalona, zachowanie zgodne z projektem (przełączenie i powrót bez
utraty odpowiedzi).
### Progi dist (skalibrowane, obowiązują)
`<0.45` hit / `0.450.55` szara strefa / `>0.55` brak odpowiedzi.
## Pilot fazy 5 — narty27 (POC, zostaje na stałe)
Publiczna wystawka `narty27.kapala.org` zbudowana **pełnym wzorcem docelowym fazy 5
w miniaturze**:
markdown+frontmatter (OKF v0.1) → walidator konformancji (`check_okf`) → generatory
(graf cytoscape, karty HTML, tabela porównawcza, zdjęcia z filtrem percepcyjnym,
landing) → statyczny hosting (PIHA nginx + named volume) → publiczny ingress
(NPM VPS + Let's Encrypt).
Źródło treści: `~/narty-2027/saalbach-kb` — lokalny git na SOLARII, **celowo poza repo
infry**. Infra: `services/narty27`.
### Wnioski do przeniesienia na fazę 5 (wiki-kompilat)
1. **OKF v0.1 działa w praktyce**, a pinowanie wersji okazało się słuszne — spec
ewoluuje (v0.2: `timestamp``generated: {by, at}`, provenance first-class;
migracja = jedna zamiana pola). Przy fazie 5 rozważyć start od razu na v0.2 albo
pin v0.1 z zaplanowaną migracją.
2. **Walidator-lint jako stały element pipeline'u** wiki, nie jednorazowy skrypt.
3. **Bug upstreamu `knowledge-catalog`**: generator grafu pomija linki od `/` wbrew
§5.1 własnej spec → napisany własny generator. Kandydat na issue/PR do
`GoogleCloudPlatform/knowledge-catalog`.
4. **Reserved files**: `index.md` bez frontmattera (poza `okf_version` w root) —
walidator to łapie.
5. **Warstwa prezentacji z generatorów** — tani, użyteczny wzorzec do reużycia nad
wiki-kompilatem KB.
6. **Każdy artefakt ma mieć dom w gicie; sesje mają logi.**
## Otwarte po sesji
1. **`expected_envelope` w `mail_queries`** (`jobs/documents-ingest/eval/queries.yaml`)
— nadal `null` (placeholdery, artefakt danych, nie kodu); kryterium 4 bramki na
stubie nie przechodzi wyłącznie z tego powodu.
2. **`hosts/solaria/runtime/ollama/docker-compose.override.yml` — brak w repo**
(rozjazd repo↔runtime na SOLARII).
3. **R1R3 node-agent** (incydent `docs/incidents/2026-07-30-ollama-solaria-vanish.md`)
**niezrobione**: R1 `_prune_stopped_containers` nie może kasować kontenerów
zarządzanych, R2 rate-limit dla `ai_node`/`standard`, R3 logowanie usuniętych
zasobów. Przyczyna nadal aktywna → blokuje/warunkuje fazę mailową
(M1 = mitygacja doraźna na czas backfillu).
## Następne kroki
1. Faza mailowa: batching Ollamy → backfill ~225k kopert → IMAP przyrostówka →
PDF-y (~336) → GDrive Takeout.
2. Blokada/ryzyko: node-agent R1R3 (unfiltered prune) — eskalacja do subsystemu A;
mitygacja M1 na SOLARII na czas backfillu.