homelab-codex-ws/kb/phases/kb-m5-faza5-wiki.md
oskar 308ae6a9f4 docs(kb): faza5-wiki §6 — rozliczenie rekoncyliacji kb-wiki (2026-08-27)
Operator zdecydował: opcja 1 z §4 (scalić). Wykonane w klonie roboczym
~/kb-wiki (repo prawdziwe, master, poza tym worktree) — cztery commity
lokalne, świadomie nie pushnięte, czekają na review operatora:

1. sprawy/fll-2025-26.md — scalone przed tą sesją (commit c4127b9 w
   kb-wiki, już pushnięty), ta sesja tylko zweryfikowała ponownie.
2. podmioty/mbank.md i osoby/pawel-cesar-sanjuan-szklarz.md przeniesione z
   ~/kb-wiki-etap1-sesja-2026-08-27/ bez kolizji, linki [[...]] przepisane
   na rzeczywistą konwencję repo (bez prefiksu katalogu).
3. check_okf.py (walidator sesyjny) przeniesiony do kb-wiki, zaadaptowany
   do layoutu repo (type=meta, wyjątek README/INDEX/lint-reports).
4. Decyzje (d)-(f) audytu 08-26 (fallback chunk-id, sekcja "Niepewne/
   sprzeczne" + polityka aktualizacji, inwariant 7) scalone do
   _meta/conventions.md bez duplikowania tego, co repo już miało.

Stan końcowy: 7 stron w repo, 74/74 sources + 150/150 przypisów inline
zweryfikowanych wprost w bazie (KB_DSN, SELECT-only), zero wiszących
linków. Pełny raport: _meta/lint-reports/2026-08-27-rekoncyliacja.md w
kb-wiki. ~/kb-wiki-etap1-sesja-2026-08-27/ pozostawione nietknięte na
żądanie operatora.

Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01W7AnxL6pbgySpEgcCwAfww
2026-08-27 19:57:39 +02:00

323 lines
19 KiB
Markdown
Raw Permalink 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.

---
okf: "0.1"
type: phase
visibility: private
status: active
updated: 2026-08-27
links:
- ../audits/wiki-kompilat-recon-2026-08-26.md
- kb-m5-faza3.md
- kb-m5-faza-mailowa.md
---
# Moduł 5, faza 5 — wiki-kompilat (Etap 1: bootstrap + proof, i **odkrycie rozjazdu**)
> **Status: Etap 1 wykonany 2026-08-27 — ale w cieniu ważniejszego znaleziska: proof-of-concept
> wiki-kompilatu (repo `kb-wiki`, 5 stron) już istniał od **2026-07-21**, na Forgejo
> (`https://forgejo.kapala.org/oskar/kb-wiki`), i `kb/audits/wiki-kompilat-recon-2026-08-26.md`
> tego nie wykrył. Ta sesja (2026-08-27) zbudowała **niezależny, równoległy** lokalny bootstrap
> (`~/kb-wiki-etap1-sesja-2026-08-27/`, 3 strony) nie wiedząc o repo z lipca — dowiedziała się
> dopiero przy Części C tego zadania, kiedy próba udokumentowania "remote nie istnieje" (cytat z
> polecenia sesji, zgodny z audytem) skłoniła do sprawdzenia Forgejo wprost. **Nic nie zostało
> wypchnięte do prawdziwego zdalnego repo** — ta sesja tylko czytała je (`git clone`, pull-only).
>
> **Rekoncyliacja domknięta 2026-08-27 (operator zdecydował: opcja 1 z §4 —
> scalić).** `kb-wiki` ma teraz **7 stron**: 5 lipcowych + `fll-2025-26`
> scalone (dwie niezależne kompilacje tej samej encji) + `mbank`/
> `pawel-cesar-sanjuan-szklarz` przeniesione bez kolizji. Cztery commity na
> `master` **lokalnie, nie pushnięte** — czekają na review operatora przed
> pushem do Forgejo. Pełne rozliczenie: §6.
---
## 0. Jak doszło do odkrycia (żeby przyszła sesja nie powtórzyła tej samej luki)
`kb/audits/wiki-kompilat-recon-2026-08-26.md` (2026-08-26, decyzje a-h zatwierdzone
2026-08-27) stwierdza wprost w nagłówku: *„Nic nie zostało zaimplementowane,
zdeployowane ani skommitowane poza tym dokumentem."* Dowody audytu: worktree
`homelab-codex-ws` cięty z mastera, pilot `~/narty-2027/saalbach-kb` (lokalny
odczyt), żywa baza `kb` na PIHA (`ssh piha 'docker exec kb-postgres psql...'`),
`systemctl status` na PIHA. **Forgejo nie było w tym zestawie dowodów** — audyt nie
odpytał API/repo Forgejo, mimo że `CLAUDE.md` i `inventory/topology.yaml` jasno
wskazują `git_provider: forgejo` jako miejsce, gdzie `kb-wiki` miało w ogóle
powstać (decyzja D7 faza3 §8.2: *„osobne repo kb-wiki"*, bez wskazania konkretnego
hosta w chwili pisania szkicu — Forgejo to naturalna, ale niejawna implikacja).
Zlecenie tej sesji (2026-08-27, Etap 1) powtórzyło za audytem: *„REMOTE NIE
ISTNIEJE — nie konfiguruj, nie pushuj; operator założy repo na Forgejo później."*
To zdanie okazało się **faktycznie nieprawdziwe** — sprawdzone dopiero przy pisaniu
tego dokumentu (Część C zlecenia), zapytaniem GET do `http://100.108.208.3:3000/
api/v1/repos/search?q=kb-wiki` (read-only, bez uwierzytelnienia, `private: false`
więc odpowiedź jawna) i następnie `git clone` (pull-only, potwierdzone uprawnieniami
API: `"push": false, "pull": true`) do katalogu tymczasowego poza tym repo.
**Wniosek na przyszłość:** *„repo nie istnieje"* w planie/audycie nie jest
wystarczające bez sprawdzenia bezpośrednio w systemie, który je hostuje
(`inventory/topology.yaml` → `git_provider: forgejo` → Forgejo API/`git ls-remote`),
nie tylko w obrębie `homelab-codex-ws` i lokalnych klonów znanych z wcześniejszych
sesji. Ten sam błąd metodologiczny mógłby się powtórzyć przy dowolnym innym „osobnym
repo" planowanym w dokumentacji, ale nigdy nie zweryfikowanym wprost u hosta.
---
## 1. Co faktycznie istnieje w `oskar/kb-wiki` (Forgejo, od 2026-07-21)
Stan wg `git clone https://forgejo.kapala.org/oskar/kb-wiki.git` (read-only,
2026-08-27), 3 commity na `master`:
```
156925c struktura: katalogi, konwencje, README
42c7731 compile: pzu, warta, ubezpieczenie-auto-ga431ja-2026, fll-2025-26, wspolnota-mieszkaniowa-targowa-2a ← kaskada retrievalu kb-postgres@PIHA
c52f867 lint: pierwszy raport ręczny 2026-07-21
```
Struktura: `README.md`, `INDEX.md` (wielka litera — inaczej niż plik zarezerwowany
OKF `index.md`, patrz §3 niżej), `_meta/conventions.md`, `_meta/lint-reports/
lint-report-2026-07-21.md`, 5 stron-encji:
| Strona | Typ | Skrót |
|---|---|---|
| `podmioty/pzu.md` | podmiot | PZU — OWU Auto/OC, karty produktu, oferta T1531938417 |
| `podmioty/warta.md` | podmiot | WARTA — OWU AC Standard/Komfort/Moje Auto |
| `sprawy/ubezpieczenie-auto-ga431ja-2026.md` | sprawa | Porównanie ofert PZU/WARTA/InterRisk, Mazda 6 (GA431JA), 06.2026 |
| `sprawy/fll-2025-26.md` | sprawa | FLL Challenge UNEARTHED, drużyna #1100, Warszawa II |
| `sprawy/wspolnota-mieszkaniowa-targowa-2a.md` | sprawa | Wspólnota Mieszkaniowa Targowa 2A (Pruszków) — zebranie roczne 2026 |
`osoby/`, `umowy/`, `tematy/` istnieją jako katalogi puste (`.gitkeep`) — **zero
stron typu `osoba`** w lipcowym proof-of-concept. To jest jedyna luka pokrycia
typów, którą Etap 1 tej sesji (§2) faktycznie domyka, nie duplikuje.
Jakość: wysoka, metodologicznie zgodna z tym, co audyt 08-26 dopiero rekomendował
(sekcja „Niepewne/sprzeczne" jako wzorzec — tam nazwana wprost inaczej, ale ta sama
funkcja; degradacja przy uszkodzonym OCR zamiast ślepego zaufania streszczeniu;
84/86 wpisów `sources[].chunks` i 73/73 przypisów inline zweryfikowanych wprost w
bazie, udokumentowane w `_meta/lint-reports/lint-report-2026-07-21.md`). Pełna
treść: `_meta/conventions.md` tamtego repo (różni się od konwencji tej sesji w
kilku miejscach nieistotnych merytorycznie — casing `INDEX.md`/`index.md`, typ
`meta` vs `temat` dla `conventions.md` — patrz §3).
**`kb-m5-faza4.md` (linia 17, `docs/sessions/2026-07-21.md`) już to dokumentowały
poprawnie** — ten fakt był w repo `homelab-codex-ws` cały czas, czytelny `git log`/
`grep -r kb-wiki`. Audyt 08-26 po prostu tego nie sprawdził (§0 wyżej).
---
## 2. Co ta sesja (2026-08-27) faktycznie zrobiła — Etap 1 wg zlecenia, **lokalnie, bez wiedzy o §1**
Zbudowany od zera, niezależnie: `~/kb-wiki-etap1-sesja-2026-08-27/` (przemianowany
z `~/kb-wiki/` po odkryciu §1 — żeby nie kolidować ścieżką z przyszłym `git clone`
prawdziwego repo). Git lokalny, **6 commitów, nigdy nie pushowany do żadnego
remote** (żaden remote nie był skonfigurowany — zgodnie z literą pierwotnego
zlecenia, które okazało się oparte na błędnym założeniu z §0).
3 strony proof, celowo zróżnicowane typy (jak żądał audyt §9 Etap 1):
| Strona | Typ | Pokrycie względem §1 |
|---|---|---|
| `sprawy/fll-2025-26.md` | sprawa | **Duplikat tej samej encji** co lipcowe repo — skompilowany niezależnie, z częściowo innym zestawem chunków (uzupełniające, nie identyczne `sources`). Wysoka zgodność wniosków — patrz §4. |
| `podmioty/mbank.md` | podmiot | **Nowe pokrycie** — nie istnieje w lipcowym repo (tam tylko PZU/WARTA, ubezpieczyciele) |
| `osoby/pawel-cesar-sanjuan-szklarz.md` | osoba | **Domyka lukę** — lipcowe repo ma katalog `osoby/` pusty; to pierwsza strona typu `osoba` w całym projekcie, jedyny dotąd test entity-resolution na aliasach |
Pełna treść stron, `_meta/conventions.md` tej sesji (napisane niezależnie od
lipcowego — patrz różnice §3), `check_okf.py` (walidator, **którego lipcowe repo
nie ma jako skomitowanego pliku** — tamta sesja weryfikowała `sources`/przypisy
ad hoc, bez zostawienia narzędzia), i `_meta/lint-reports/2026-08-27.md` — wszystko
w `~/kb-wiki-etap1-sesja-2026-08-27/`, 6 commitów (`git log --oneline`):
struktura+konwencje, walidator, 3× `compile:`, 1× `lint:`.
DoD audytu §9 Etap 1 (tabela, 4 punkty) — spełnione **lokalnie**, w tym repo
równoległym: repo istnieje z konwencjami, walidator działa (zielono, 40 par
`sources` + 47 inline przypisów zweryfikowanych wprost w `KB_DSN`), 3 strony
proof spełniają inwarianty 1-2, raport lintu ręcznego zapisany.
**Weryfikacja lint:**
```
$ python3 check_okf.py # w ~/kb-wiki-etap1-sesja-2026-08-27/
ZGODNE z OKF v0.1 (kb-wiki): [...] wszystkie 40 przypisów zweryfikowane w bazie.
```
**`scripts/kb/check_okf.py` z `homelab-codex-ws` uruchomiony na tym samym repo —
zgodnie z rozjazdem przewidzianym w zleceniu:**
```
$ python3 scripts/kb/check_okf.py ~/kb-wiki-etap1-sesja-2026-08-27
Zakres: kb, docs/sessions
Sprawdzono plików .md: 0
BRAK plików w zakresie — nie ma czego walidować.
```
`SCOPE = ("kb", "docs/sessions")` w tamtym skrypcie jest wpisany na sztywno
względem `root``kb-wiki` (żadna z dwóch kopii, lipcowa ani ta) nie ma
podkatalogu `kb/` ani `docs/sessions/`, więc walidator zawsze zwróci "brak
plików" dla tego layoutu. Nie hackowany — to jest realny, ustrukturalny rozjazd
(nie błąd w `kb-wiki`), odnotowany tu jako follow-up: albo `scripts/kb/
check_okf.py` dostaje parametr `--scope`, albo `kb-wiki` (dowolna wersja) trzyma
własny walidator na stałe (rekomendacja tej sesji — już częściowo zrobione, patrz
`check_okf.py` w repo tej sesji).
---
## 3. Różnice konwencji: lipiec vs ta sesja (nieistotne merytorycznie, warto ujednolicić)
| Aspekt | Lipiec (`oskar/kb-wiki`, prawdziwe repo) | Ta sesja (lokalne) | Rekomendacja |
|---|---|---|---|
| Plik nawigacyjny root | `INDEX.md` (duża litera), osobny od OKF-owego `index.md` (nie istnieje w ogóle w lipcowym repo — brak pliku `index.md`) | `index.md` (mała litera, OKF §11 reserved-file, pełni tę samą rolę) | Do rozstrzygnięcia przez operatora — lipcowe repo **nie ma pliku `index.md`** w ogóle, więc formalnie nie przechodzi `check_okf.py` tej sesji (`brak bloku frontmattera` nie wystąpi, bo pliku nie ma, ale reguła "root index.md wymagany" by to złapała, gdyby uruchomić walidator tej sesji na lipcowym repo — nie testowane, bo nie nasze repo do modyfikacji) |
| `type` dla `_meta/conventions.md` | `meta` (dodatkowa wartość w słowniku typów) | `temat` (nadużycie istniejącego typu, bo `TYPES` tej sesji nie miało `meta`) | Lipcowe podejście czystsze — warto przyjąć `meta` jako 6. typ przy rekoncyliacji |
| Frontmatter `sources` obowiązkowe niepuste | Nie wymuszone narzędziem (ręczna dyscyplina) | Wymuszone w `check_okf.py` (poza `_meta/`) | Zachować regułę tej sesji przy rekoncyliacji — tańsze niż poleganie na dyscyplinie |
| Walidator jako plik w repo | Brak (weryfikacja ad hoc, nieskomitowana) | `check_okf.py`, skomitowany, wielokrotnego użytku | Przenieść `check_okf.py` tej sesji do prawdziwego repo przy rekoncyliacji |
| Remote skonfigurowany | Tak (Forgejo, `master`) | Nie (lokalny, celowo) | — |
Żadna z różnic nie jest błędem — obie konwencje są spójne z faza3 §8.2 i audytem
08-26 w rzeczach, które się nakładają (format `[^envelope_id#chunk_id]`, fallback,
sekcja niepewności, CC/API-only, izolacja retrievalu kompilacji od `source='wiki'`).
---
## 4. Rekoncyliacja — do operatora, nie rozstrzygane przez tę sesję
To jest decyzja o realnych, już opublikowanych danych osobowych (finanse,
ubezpieczenia, dziecko na turnieju) w prawdziwym repo — powyżej progu, przy którym
ta sesja podejmuje decyzje sama. Opcje, bez rekomendacji wiążącej:
1. **Scalić nowe strony tej sesji do prawdziwego repo.** `podmioty/mbank.md` i
`osoby/pawel-cesar-sanjuan-szklarz.md` nie kolidują z niczym w lipcowym repo —
czysty dodatek. `sprawy/fll-2025-26.md` **koliduje** (dwie różne kompilacje tej
samej encji) — wymaga porównania treść-po-treści przez operatora albo kolejną
sesję CC, nie automatycznego scalenia.
2. **Porównanie dwóch niezależnych kompilacji `fll-2025-26` jako test jakości
kompilatora.** Obie wersje (lipcowa i ta) zgadzają się merytorycznie w
kluczowych punktach: wynik 195 pkt jako jedyny czytelny wprost z chunka
(`paperless:119#277`/`#278` — obie sesje trafiły w ten sam chunk niezależnie),
pozostałe dwa wyniki (165/230) tylko ze streszczenia, nominacja do Nagrody
Sędziów niepotwierdzona wprost w chunku, imiona z formularzy zgód celowo
pominięte, nazwisko trenera nieczytelne OCR. Rozbieżność: ta sesja znalazła i
zacytowała sprzeczność liczebności drużyny (10 vs 8 osób, z korespondencji
gmail — lipcowa wersja jej nie ma, bo nie sięgnęła po te same koperty gmail).
Lipcowa wersja znalazła niejednoznaczność sezonu SUBMERGED vs UNEARTHED
(`paperless:6`) i konkretne imiona dzieci z nazw plików (metadane, nie treść
dokumentu) — ta sesja pominęła `paperless:6` całkowicie i nie sięgnęła po
`entities[type=filename]`. **Dwie niezależne kompilacje tej samej encji nie są
sprzeczne, są komplementarne** — dobry sygnał, że metoda jest powtarzalna, zły
sygnał, że jedna kompilacja pomija realne dowody, które druga znalazła.
3. **Zostawić oba repo osobno, jawnie zarchiwizować to jako dwa niezależne
przebiegi tej samej fazy.** Najbezpieczniejsze, ale traci szansę na scalenie
uzupełniających się dowodów z punktu 2.
Krok operatora, niezależnie od wyboru z (1)-(3): **`~/kb-wiki-etap1-sesja-2026-08-27/`
istnieje lokalnie, nigdy nie pushowany** — do usunięcia/scalenia/zachowania wg
decyzji, nie automatycznie.
---
## 5. Poza zakresem tej notatki (Etap 2, jeśli operator potwierdzi kontynuację)
Zależnie od wyniku rekoncyliacji z §4:
- Skala do pełnej listy 17 encji z audytu §3 (już częściowo pokryta lipcowym repo
inną listą — PZU/WARTA/wspólnota/FLL nie pokrywają się z 17-pozycyjną listą
audytu poza `fll-2025-26`; wymaga ponownego review, które z 17 są już zrobione
pod innymi nazwami).
- Lint automatyczny w kodzie (`kb-wiki/lint.py`, inwariant 3 pełny) — żadna z
dwóch kopii tego nie ma, obie robiły lint ręcznie.
- Jednorazowy skan `<60>`/`\x00` na źródłach, które faktycznie zasiliły PoC (decyzja
h) — nie wykonany w żadnej z dwóch kompilacji; oba proof-of-concept **napotkały**
uszkodzony OCR organicznie (paperless:119/120 w obu wersjach fll-2025-26,
mbank.md ta sesja) bez systematycznego skanu.
- Integracja `source='wiki'` w `packages/kb-retrieval` (inwariant 5+7) — poza
zakresem obu przebiegów.
- Rozjazd `scripts/kb/check_okf.py` (SCOPE sztywny) — patrz §2, nie naprawiony
celowo (instrukcja zlecenia: nie hackować).
---
## 6. Rekoncyliacja domknięta (2026-08-27, decyzja operatora: opcja 1 z §4)
Operator zdecydował scalić — bez rozstrzygania punktu 3 z §4 (dwa osobne
repo) i bez samego jedynie archiwizowania punktu 2 (test jakości
kompilatora, wykonany przy okazji scalenia `fll-2025-26`, patrz niżej).
Wykonano w klonie roboczym `~/kb-wiki` (repo prawdziwe, `master`), **cztery
commity, lokalnie, świadomie nie pushnięte** — review operatora przed
pushem do Forgejo jest krokiem następnym, nie tej sesji.
### 6.1 `fll-2025-26` — scalenie dwóch niezależnych kompilacji
Wykonane **przed** tą sesją reconciliation (`kb-wiki` commit `c4127b9`,
autor: operator lub wcześniejsza sesja — poza zakresem tego zadania, ta
sesja zastała je już na `master` i pushnięte: *"Push zrobiony"*, cytat
zlecenia). Wynik zgodny z analizą §4 punkt 2: zero sprzecznych twierdzeń,
czysto komplementarne pokrycie (lipiec: 14 kopert paperless; sierpień
dodał 6 kopert gmail + `paperless:183`) — 21 kopert finalnie (15 paperless +
6 gmail), 38/38 par `sources` + 45/45 przypisów inline zweryfikowanych w
bazie przy tamtym scaleniu. Ta sesja **nie modyfikowała** tej strony —
tylko zweryfikowała ją ponownie w ramach pełnego lintu repo (§6.4).
### 6.2 `mbank` i `pawel-cesar-sanjuan-szklarz` — przeniesione bez kolizji
Zgodnie z §4 punkt 1 ("nie kolidują z niczym w lipcowym repo — czysty
dodatek"): skopiowane z `~/kb-wiki-etap1-sesja-2026-08-27/` do `~/kb-wiki`,
linki `[[...]]` przepisane ze składni sesyjnej (`[[../katalog/plik]]`) na
rzeczywistą konwencję repo (`[[plik]]`, bez katalogu). Treść merytoryczna
nietknięta. `INDEX.md` dopisany o oba wpisy. `sprawy/fll-2025-26.md`
przestało być sierotą w grafie `[[...]]` (link przychodzący z obu nowych
stron, sekcja „Powiązane" — decyzja sesyjna sprzed przeniesienia, nie tej
rekoncyliacji: „sprawdzone wprost, zero wspólnego dowodu", link mimo braku
dowodu).
### 6.3 Konwencje: `check_okf.py` przeniesiony, decyzje (d)-(f) scalone
`check_okf.py` (walidator sesyjny) przeniesiony do `~/kb-wiki` — lipcowy
proof-of-concept nie zostawił żadnego skomitowanego narzędzia (§3 tabela,
rekomendacja "Przenieść `check_okf.py` tej sesji do prawdziwego repo przy
rekoncyliacji" — wykonana dosłownie). Zaadaptowany do rzeczywistego layoutu
tego repo: `TYPES` rozszerzone o `meta` (repo miało 6. typ od lipca, sesyjny
walidator znał tylko 5), `README.md`/`INDEX.md`/`_meta/lint-reports/*.md`
wyjęte z wymogu frontmattera stron-konceptów (istniały bez niego od
2026-07-21 — dokumentacja/raporty, nie skompilowane encje).
Decyzje (d)-(f) audytu 08-26, wypracowane w `_meta/conventions.md` sesji
(§5/§7/§8 tamtego pliku), scalone do `_meta/conventions.md` prawdziwego repo
**bez duplikowania** tego, co repo już miało z lipca/wcześniejszej sesji
(6 typów wliczając `meta`, sekcja „Brak danych w KB" — obie już scalone,
commity `156925c`/`3bd2441`, przed tym zadaniem):
- **(d) fallback envelope-only** — `[^envelope_id]` bez `#chunk_id`, gdy
dowód nie ma konkretnego chunka albo chunk zniknął po re-chunkingu.
- **(e) sekcja „Niepewne / sprzeczne"** jako nazwana sekcja końca strony
(już używana de facto na żywych stronach, teraz sformalizowana pisemnie) +
polityka aktualizacji „dopisz, nie nadpisuj" przy nowym sprzecznym dowodzie.
- **(f) inwariant 7** — izolacja retrievalu kompilacji od `source='wiki'`
(mitygacja self-citation/citogenesis), CC/API-only jako wykonawca.
Różnica konwencji z §3 tabeli dotycząca casingu pliku nawigacyjnego
(`INDEX.md` vs OKF-owy `index.md`) **pozostaje nierozstrzygnięta** — zgodnie
z §3, do operatora, poza zakresem tej rekoncyliacji. `check_okf.py`
pragmatycznie traktuje oba pliki root (`README.md`, `INDEX.md`) jako
wyjęte z wymogu frontmattera, bez przesądzania, który plik "wygrywa".
### 6.4 Lint na całości — stan końcowy: 7 stron, zero błędów
`python3 check_okf.py` w `~/kb-wiki`: **ZGODNE**, 74/74 par `sources`
(wszystkie 6 stron-konceptów poza `_meta/`) zweryfikowanych w `KB_DSN`
(SELECT-only). Osobny, pełny przebieg (skrypt jednorazowy, nieskomitowany —
`check_okf.py` nie parsuje treści Markdown) po **wszystkich** przypisach
inline `[^envelope_id#chunk_id]` na **wszystkich** 7 stronach: **150/150**
zweryfikowanych, 0 zdegradowanych do fallback. Zero wiszących linków
`[[...]]`, zero błędów przypisania chunk→envelope. Pełny raport:
`_meta/lint-reports/2026-08-27-rekoncyliacja.md` w `kb-wiki`.
| Metryka | Wynik |
|---|---|
| Stron w repo (po rekoncyliacji) | 7 (5 lipiec + `fll-2025-26` scalone + 2 przeniesione) |
| `sources:` (agregat frontmatter) zweryfikowane w bazie | 74/74 |
| Przypisy inline zweryfikowane w bazie | 150/150 |
| Wiszące linki `[[...]]` | 0 |
| Przypisy zdegradowane (fallback envelope-only) | 0 |
| Commity rekoncyliacji na `kb-wiki:master` | 4, lokalne, **nie pushnięte** |
### 6.5 Co zostało poza zakresem tej rekoncyliacji
- `~/kb-wiki-etap1-sesja-2026-08-27/` — pozostawione nietknięte na żądanie
operatora ("skasuję sam po weryfikacji"), nie usuwane przez tę sesję.
- Push `kb-wiki:master` do Forgejo — czeka na review operatora.
- Wszystko z §5 (skala do 17 encji, lint automatyczny w kodzie, skan
`<60>`/`\x00` na źródłach, integracja `source='wiki'` w retrievalu, rozjazd
`scripts/kb/check_okf.py`) — nadal otwarte, nie ruszone tą rekoncyliacją.