Compare commits
4 commits
79bfe8ceef
...
d42fbe8d8a
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
d42fbe8d8a | ||
|
|
6dc419c640 | ||
|
|
e619c00874 | ||
|
|
45fc21e18a |
|
|
@ -156,6 +156,64 @@ historia incydentów, out-of-band watchdog.
|
||||||
|
|
||||||
## Aktywne
|
## Aktywne
|
||||||
|
|
||||||
|
### Bug upstreamu `GoogleCloudPlatform/knowledge-catalog`: generator grafu pomija linki od `/`
|
||||||
|
|
||||||
|
**Data**: 2026-07-31
|
||||||
|
**Źródło**: pilot fazy 5 — narty27 (`docs/sessions/2026-07-31-kb-f4-final-narty27.md`,
|
||||||
|
sekcja „Wnioski do przeniesienia na fazę 5", pkt 3)
|
||||||
|
**Problem**: generator grafu z `knowledge-catalog` pomija linki zaczynające się od `/`
|
||||||
|
(ścieżki absolutne), wbrew §5.1 **własnej spec** OKF, która je dopuszcza. Efekt: część
|
||||||
|
krawędzi grafu po prostu nie powstaje — cicho, bez ostrzeżenia. Rozbieżność
|
||||||
|
implementacja↔spec po stronie upstreamu, nie naszej konfiguracji.
|
||||||
|
**Obejście (zastosowane)**: własny generator grafu (cytoscape) w pilocie narty27 —
|
||||||
|
nie używamy generatora upstreamu.
|
||||||
|
**Fix**: zgłosić issue/PR do `GoogleCloudPlatform/knowledge-catalog` (minimalny repro:
|
||||||
|
dokument z linkiem `/foo` → brak krawędzi w wyjściu grafu, mimo §5.1). Jeśli upstream
|
||||||
|
naprawi — rozważyć powrót z własnego generatora przy fazie 5 (wiki-kompilat), żeby nie
|
||||||
|
utrzymywać własnego kodu bez potrzeby.
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
### `hosts/solaria/runtime/ollama/docker-compose.override.yml` — brak w repo (rozjazd repo↔runtime)
|
||||||
|
|
||||||
|
**Data**: 2026-07-31
|
||||||
|
**Źródło**: sesja 2026-07-31 (`docs/sessions/2026-07-31-kb-f4-final-narty27.md`,
|
||||||
|
sekcja „Otwarte po sesji" pkt 2)
|
||||||
|
**Problem**: `ollama` jest zadeklarowana w `hosts/solaria/services.yaml` (rola
|
||||||
|
`llm-inference`, exposure `private` = bind na `TAILSCALE_BIND_IP` + loopback), ale
|
||||||
|
`hosts/solaria/runtime/` zawiera wyłącznie `node-agent` i `stability-agent` — override
|
||||||
|
dla `ollama` **nie istnieje w repo**. Host-specific konfiguracja żywego kontenera
|
||||||
|
(rezerwacja GPU, bind, env) nie jest zatem wersjonowana: repo nie opisuje tego, co
|
||||||
|
faktycznie biega na SOLARII. Ta sama klasa rozjazdu repo↔runtime co przy węzłach
|
||||||
|
repo-less — dowolny redeploy z repo może wystawić serwis inaczej, niż działa dziś.
|
||||||
|
Wzorzec docelowy istnieje obok: `hosts/piha/runtime/ollama-piha/docker-compose.override.yml`.
|
||||||
|
**Fix**: zrekonstruować override z żywego kontenera na SOLARII (`docker inspect` →
|
||||||
|
bind/porty/GPU/env/limity) i zacommitować jako
|
||||||
|
`hosts/solaria/runtime/ollama/docker-compose.override.yml`; zweryfikować, że deploy
|
||||||
|
z repo daje kontener identyczny z obecnym **zanim** ktokolwiek zrobi redeploy.
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
### `services/narty27`: `exposure: private` w `service.yaml` + README vs faktyczna publiczna ekspozycja (NPM VPS + LE)
|
||||||
|
|
||||||
|
**Data**: 2026-07-31
|
||||||
|
**Źródło**: pilot fazy 5 — narty27 (`docs/sessions/2026-07-31-kb-f4-final-narty27.md`);
|
||||||
|
znalezione przy porządkowaniu backlogu po tej sesji
|
||||||
|
**Problem**: kontrakt serwisu deklaruje `private` — `services/narty27/service.yaml:5`
|
||||||
|
(`exposure: private # LAN/Tailscale only; no npm vhost, no public ingress`) i to samo
|
||||||
|
w `services/narty27/README.md` — podczas gdy `narty27.kapala.org` jest **publiczne**
|
||||||
|
(NPM na VPS + cert Let's Encrypt). Pole `exposure` steruje traktowaniem ekspozycji
|
||||||
|
przez agentów (patrz „Discovery Entry Points for Agents" w CLAUDE.md — `service.yaml`
|
||||||
|
jest kontraktem operacyjnym, z którego agent czyta, jak zarządzać serwisem), więc
|
||||||
|
rozjazd kontrakt↔rzeczywistość jest tu groźniejszy niż zwykła nieaktualna
|
||||||
|
dokumentacja: agent podejmie decyzję na podstawie pola, które kłamie.
|
||||||
|
**Fix (osobny task)**: (1) **najpierw** zweryfikować, co realnie konsumuje pole
|
||||||
|
`exposure` (observer / supervisor / ścieżka deployu) — dopiero to pokaże, czy poza
|
||||||
|
dokumentacją zmiana coś przestawia; (2) potem poprawić `service.yaml` + README na
|
||||||
|
`public`, z komentarzem wskazującym NPM VPS host **#14** i cert LE **#38**.
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
### `scripts/ha/deploy.sh --delete`: brak wspólnego toru kasacji automatyzacji
|
### `scripts/ha/deploy.sh --delete`: brak wspólnego toru kasacji automatyzacji
|
||||||
|
|
||||||
**Data**: 2026-07-27
|
**Data**: 2026-07-27
|
||||||
|
|
|
||||||
81
docs/sessions/2026-07-31-kb-f4-final-narty27.md
Normal file
81
docs/sessions/2026-07-31-kb-f4-final-narty27.md
Normal file
|
|
@ -0,0 +1,81 @@
|
||||||
|
# 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 S1–S4 (`cb8a19d`):
|
||||||
|
- `retrieval_eval.py --transport http`
|
||||||
|
- session log 27.07
|
||||||
|
- testy luk T1–T3
|
||||||
|
- 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.45–0.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. **R1–R3 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 R1–R3 (unfiltered prune) — eskalacja do subsystemu A;
|
||||||
|
mitygacja M1 na SOLARII na czas backfillu.
|
||||||
Loading…
Reference in a new issue