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:
parent
428fd8e8fb
commit
04884ed67d
107
docs/sessions/2026-08-06-kb-mail-sync-live.md
Normal file
107
docs/sessions/2026-08-06-kb-mail-sync-live.md
Normal 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.
|
||||||
Loading…
Reference in a new issue