homelab-codex-ws/docs/sessions/2026-07-31-kb-f4-final-narty27.md
oskar 8cb5752f56 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:15:01 +02:00

3.8 KiB
Raw Blame History

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: timestampgenerated: {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.