homelab-codex-ws/docs/sessions/2026-07-31-kb-f4-final-narty27.md
oskar e87bef4cf2 feat(kb): SPLIT backlog.md (72 KB) -> 19 dokumentow + cienki indeks
Rozstrzygniecie 1. Monolit mieszal cztery typy OKF. Rozbity PER TYP po
granicy sekcji `##`:

  10 x decision  — pozycje backlogu (w tym backlog-aktywne 28 KB
                   i backlog-zamkniete 12 KB, ktore zostaja calosciami)
   7 x incident  — bugi/awarie dotad wtopione w backlog: cutover HA ken,
                   checkpoint observera, ha-diag-agent node=unknown,
                   deploy-local ghost-kontenery, paperless-worker config,
                   deploy-node nie przebudowuje obrazu, ollama bez sterownika
   2 x phase     — HA configs-as-code, monitoring floty Prometheus

kb/phases/backlog.md zostaje jako cienki indeks (type: phase, status: active):
oryginalna preambula + wygenerowany spis linkow do wszystkich 19 elementow.
23 przychodzace odwolania zostaja przepiete na ta sciezke w grupie 7.

NIE rozbijano po `###` (38 pozycji w "Aktywne" + 13 w "Zamkniete" = 51
plikow). Rozstrzygniecie mowi "rozbij per typ", a nie per pozycja;
rozdrobnienie do 51 plikow rozerwaloby czytelnosc backlogu.

Kontrola: preambula + 19 sekcji == oryginal z HEAD (multizbior niepustych
linii). Tresc pozycji nietknieta.

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

3.9 KiB
Raw Blame History

okf type visibility status updated links
0.1 session-log private active 2026-08-04

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.