docs: session log 2026-08-06 wieczor — przyrostowka IMAP na zywo (Krok 7 DONE)

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
This commit is contained in:
oskar 2026-08-06 17:35:07 +02:00
parent 428fd8e8fb
commit 04884ed67d

View file

@ -0,0 +1,107 @@
---
okf: "0.1"
type: session-log
visibility: private
status: active
updated: 2026-08-06
links: []
---
# Sesja 2026-08-06 (wieczór) — przyrostówka IMAP na żywo (Krok 7 fazy mailowej DONE)
## Ścieżka: recon → decyzje → implementacja
Recon (`75d9695`, `kb/audits/mail-sync-2026-08-06.md`) → decyzje **(a)(g) zatwierdzone
w całości** → implementacja w trzech commitach:
| Commit | Zawartość |
|---|---|
| `c65f0f2` | adapter IMAP w `packages/kb-mail`, migracja 005 `mail_sync_state` |
| `f056b08` | job `mail-imap-sync` |
| `ae16deb` | takt `kb-ingest` co 2h + etap mailowy, korekta `kb-mail-pillar` (JMAP→IMAP) |
**642 testy.**
## Pierwsze uruchomienie wg runbooka `mail-sync-run.md` — z incydentami
### Run #1 — padł na `UID SEARCH ALL`
Gmail: `UID SEARCH ALL` na **227 900** wiadomości przekroczył `imaplib._MAXLINE`
(1 MB) → crash.
Przyczyna: błąd operatora w `.env``MAIL_GMAIL_INITIAL_MODE=full` zamiast `since`,
a `FASTMAIL_INITIAL_MODE` w ogóle niewpisany (fastmail zdążył zsynchronizować
new-only i zapisać stan).
> **FOLLOW-UP do CC:** utwardzić search na duże foldery — zakres UID / `SINCE`
> zamiast `ALL`, podbicie `_MAXLINE`. Obecnie **tryb `full` na dużym koncie = crash**.
### Naprawa
Korekta `.env` + `DELETE` stanu fastmail z `mail_sync_state` → run #2 czysty.
### Run #2 — initial
| Konto | Tryb | Seen | Inserted | Dup | Conflict |
|---|---|---:|---:|---:|---:|
| gmail | initial (SINCE=2026-06-15) | 1 872 | 1 692 | 180 | — |
| fastmail | initial-full | 96 | 87 | 1 | 8 (`conflict_other_source`) |
Razem **1 779 nowych kopert, 0 błędów**. Nakładka `SINCE` zadziałała; cross-account
dedup po `Message-ID` działa (te 8 konfliktów to ta sama poczta widziana z drugiego
konta).
### Run #3 — test przyrostowości
`mode=incremental`: gmail **+5**, fastmail **0**, kursor OK.
## Drenaż embed
`mail-body-ingest --only-unchunked`: **698 embeddingów** (baseline 187 163 → **187 861**).
> **Uwaga (follow-up):** tempo ~570 ms/chunk sugeruje, że `OLLAMA_URL=SOLARIA` nie
> przebił się przez `sudo env` i liczyło CPU PIHA. Do weryfikacji przy następnym
> dużym drenażu.
## Test end-to-end — PASS
Mail wysłany 17:21 (gmail→fastmail), obie kopie wylądowały poprawnie: envelope
gmail + `conflict_other_source` fastmail. Ścieżka **sync → ingest → hybrid search**:
top-1 dist **0.391**. Decyzja **(g) potwierdzona**.
## Automat
- `kb-mail-sync.timer`**enabled**, tick co ~1 h, pierwszy 18:01.
- `kb-ingest.timer` — co 2 h (nowa definicja `0/2:00:00`).
- Reguła `fleet-prometheus/kb-mail-sync.yml` wchodzi przy najbliższym deployu
fleet-prometheus *(follow-up)*.
## Poprawki do runbooka (follow-up, nie zrobione)
- Ręczne runy wymagają `sudo` do odczytu `.env` (`600 root:root`) — podać wariant
`sudo bash -c`.
- Krok 7: `curl` na `localhost:8230` nie zadziała — `kb-query` binduje na
`192.168.31.5`.
## Otwarte
- **Rotacja hasła `kb-postgres` (WISI)** — wyciekło 2026-08-05/06 do transkryptu
i historii shella. **Trzeci udokumentowany przypadek tej klasy.**
- Fix `UID SEARCH` (patrz Run #1).
- Załączniki PDF z maili (~336 + nowe).
- NUL w nagłówkach `jsonb` (`gmail-header-backfill` / `bulk-import`).
## Stan fazy mailowej po sesji
| Element | Status |
|---|---|
| (a) batching | ✓ |
| (b) Etap B | ✓ |
| (c) regresja | ✓ |
| (d) hybrid default | ✓ |
| Krok 7 — przyrostówka | ✓ **ŻYWA** |
Pozostało: backfill PDF, Google Drive Takeout.
**Następna duża rzecz wg roadmapy: FAZA 5 — wiki-kompilat.** Materiał mailowy jest
kompletny i świeży, więc warunek wejścia spełniony.