126 plikow (md, yaml, sh, py) odwolywalo sie do sciezek sprzed migracji.
15 markdown-linkow [..](..) -> policzona sciezka WZGLEDNA wobec pliku
odsylajacego (wczesniej czesc z nich byla repo-root-relative i nie
rozwiazywala sie z katalogu, w ktorym lezala)
200 odwolan tekstowych (backticki, proza, yaml, importy w kodzie)
-> nowa sciezka repo-root-relative, zgodnie z konwencja repo
5 linkow rodzenstwa (gole nazwy plikow, np. "](DEPLOY.md)") — dzialaly
tylko w starym katalogu; przeliczone recznie
Objete m.in.: CLAUDE.md (scripts/onboard/README.md -> kb/runbooks/
node-onboarding-tool.md, docs/backlog.md -> kb/phases/backlog.md),
README.md, .claude/skills/, 20 session logow, kod jobow.
Ostatnie 5 odwolan pochodzi z tresci wciagnietej rebasem z origin/master
(session log 2026-07-31, override node-agenta na SOLARII, dwie pozycje
backlogu) — wskazywaly na docs/incidents/, docs/kb/modules/ i
services/narty27/README.md sprzed migracji.
Dodany wzajemny link miedzy kb/services/control-plane.md (stub kodu)
a kb/subsystems/control-plane.md (opis, deprecated) — dwa dokumenty o tym
samym systemie, latwe do pomylenia.
Weryfikacja na 790 plikach: 0 odwolan do starych sciezek,
0 martwych linkow markdown. Lint OKF: 190/190 plikow ZGODNE.
Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
121 lines
5.3 KiB
YAML
121 lines
5.3 KiB
YAML
# Eval-set for the retrieval quality gate (module 5, phase 3, plan §6.2,
|
|
# kb/phases/kb-m5-faza3.md). Transcribed 1:1 from the pilot baseline,
|
|
# kb/phases/kb-m5-eval-retrieval-pilot.md (read-only source -- this file is the versioned
|
|
# copy the plan asked for, so the set stops living only in a session transcript).
|
|
#
|
|
# kind:
|
|
# hit -- pilot found a correct top-1 match (dist < 0.45)
|
|
# grey_zone -- pilot landed in the 0.45-0.55 band (on-topic, imprecise)
|
|
# negative_control -- pilot correctly found nothing (dist > 0.55)
|
|
# negative_control_borderline -- pilot correctly found nothing, but close to the 0.55 edge
|
|
#
|
|
# expected_envelope is null for both negative-control kinds: there is no document these
|
|
# queries should match, by design.
|
|
|
|
queries:
|
|
- id: "1"
|
|
text: "polisa ubezpieczeniowa PZU warunki odpowiedzialności"
|
|
kind: hit
|
|
expected_envelope: "paperless:14"
|
|
baseline_top1_dist: 0.3418
|
|
note: >
|
|
Pilot top-1 = paperless:14 (OWU PZU Auto); ujawnił duplikat paperless:14 ≡ paperless:74
|
|
(flagowany excluded_reason='duplicate' w kroku 1 fazy 3).
|
|
|
|
- id: "2"
|
|
text: "faktura za usługi telekomunikacyjne kwota do zapłaty"
|
|
kind: hit
|
|
expected_envelope: "paperless:192"
|
|
baseline_top1_dist: 0.3447
|
|
note: >
|
|
Pilot top-1 = paperless:192 (faktura P4); poz. 3/5 w pilocie był chunk z OCR-śmieciem
|
|
(kody kreskowe) -- powinien wypaść po excluded_reason='ocr_junk' z kroku 1.
|
|
|
|
- id: "3"
|
|
text: "zasady punktacji FLL Challenge robot game (PL)"
|
|
kind: grey_zone
|
|
expected_envelope: "paperless:5"
|
|
baseline_top1_dist: 0.4154
|
|
note: >
|
|
Pilot: szara strefa -- rodzina dokumentów OK, sedno (zasady punktacji) nie trafione
|
|
precyzyjnie. Kandydat na poprawę: czy pre-filtr po streszczeniu podnosi trafność?
|
|
|
|
- id: "4"
|
|
text: "FLL robot game mission scoring points table (EN)"
|
|
kind: hit
|
|
expected_envelope: "paperless:5"
|
|
baseline_top1_dist: 0.4114
|
|
note: >
|
|
Cross-lingual (EN zapytanie) trafia lepiej niż PL (zapytanie 3); poz. 2+ w pilocie =
|
|
paperless:119 (scoresheet, mojibake) -- mojibake nie jest śmieciem, niesie sygnał.
|
|
|
|
- id: "5"
|
|
text: "innovation project scoring"
|
|
kind: hit
|
|
expected_envelope: "paperless:3"
|
|
baseline_top1_dist: 0.3869
|
|
note: "Najlepszy wynik pilota: top-5 spójnie z jednego właściwego dokumentu (arkusz ocen IP)."
|
|
|
|
- id: "N"
|
|
text: "przepis na sernik z rodzynkami"
|
|
kind: negative_control
|
|
expected_envelope: null
|
|
baseline_top1_dist: 0.6210
|
|
note: "Poprawny brak w pilocie; separacja od trafień wyraźna."
|
|
|
|
- id: "N2"
|
|
text: "piaskownica plastikowa"
|
|
kind: negative_control_borderline
|
|
expected_envelope: null
|
|
baseline_top1_dist: 0.5533
|
|
no_answer_threshold: 0.50
|
|
note: >
|
|
Poprawnie na granicy "brak" w pilocie -- semantycznie sąsiednie dokumenty wspólnoty
|
|
mieszkaniowej, nie odpowiedź na zapytanie. Faza mailowa, bramka po Etapie A
|
|
(2026-07-23): po dolaniu chunków mailowych top-1 = newsletter szkoły narciarskiej
|
|
(Rossignol, rozmiary nart 155-181cm, dist 0.5298) -- zweryfikowana treść pokazuje, że to
|
|
kolizja semantyczna krótkich, liczbowych tekstów w przestrzeni wektorowej, NIE realny
|
|
mail o piaskownicy -- korpus mailowy takiego trafienia nie zawiera (próbne zapytanie
|
|
"piaskownica plac zabaw wspólnota" dało dist 0.5585, miss; odrzucone jako mail_queries
|
|
wpis, patrz historia sesji). Próg tej kontroli obniżony do 0.50 (z 0.55) właśnie z powodu
|
|
tej znanej kolizji, żeby bramka nie płonęła co uruchomienie na nie-problemie.
|
|
|
|
# Faza mailowa (kb/phases/kb-m5-faza-mailowa.md, §8, Krok 5) -- bramka jakościowa dla
|
|
# treści mailowej wprowadzonej w Etapie A (ostatnie 12 miesięcy, plan §7 Krok 4). Wypełniona
|
|
# przez operatora 2026-07-23 (5 zapytań "wiem że to mam w mailach z ostatniego roku"; M5
|
|
# odrzucone po weryfikacji, patrz N2 powyżej i historia sesji). expected_envelope celowo null
|
|
# dla wszystkich -- operator dostarczył treść zapytania, nie surowy Message-ID; kind: mail_hit
|
|
# ma inną semantykę hit@3 niż `queries:` powyżej: hit iff top-3 hybrid zawiera wynik z gałęzi
|
|
# mailowej (envelope.source w summaryless_sources, dziś gmail) z dist < 0.45
|
|
# (retrieval_eval.py::mail_hit_at_3) -- identity-match na expected_envelope nie ma tu
|
|
# zastosowania, bo nie ma czego dopasować.
|
|
#
|
|
# Format wpisu (identyczny co do pól z `queries:` powyżej, minus baseline_top1_dist -- nie było
|
|
# pilota mailowego przed tą bramką):
|
|
# - id: "M1"
|
|
# text: "..."
|
|
# kind: mail_hit
|
|
# expected_envelope: "<raw gmail Message-ID lub null>"
|
|
# note: "..."
|
|
mail_queries:
|
|
- id: "M1"
|
|
text: "szkolenie narciarskie zegrze termin"
|
|
kind: mail_hit
|
|
expected_envelope: null
|
|
note: "Wątek listy klubowej (lasery-zegrze) — celowo na granicy filtra newsletterowego."
|
|
- id: "M2"
|
|
text: "faktura Play kwota do zapłaty telefon"
|
|
kind: mail_hit
|
|
expected_envelope: null
|
|
note: "Faktury operatora przychodzą mailem co miesiąc."
|
|
- id: "M3"
|
|
text: "wznowienie polisy OC składka samochód"
|
|
kind: mail_hit
|
|
expected_envelope: null
|
|
note: "Korespondencja ubezpieczeniowa — cross-source z dokumentami OWU."
|
|
- id: "M4"
|
|
text: "rejestracja drużyny FLL zgłoszenie sezon"
|
|
kind: mail_hit
|
|
expected_envelope: null
|
|
note: "Wątki organizacyjne FLL 25-26."
|