# investigator-codebase/2026-05-q3 — gist
distill-gen: 1
source-verbatim: .claude/agent-memory/investigator-codebase/archive/2026-05-q3.md (4 entry → 4 cụm, 2 cụm là housekeeping/bản-sao)
pointer-style: substring

## TỔNG-HỢP (3-5 ý)
- Diary khai việc ≠ bằng-chứng công-cụ: các entry cũ ghi "spawn Investigator" kèm chi-phí 28-40K token, nhưng trong S27 spawn agent type `investigator` NOT FOUND ⇒ hồ-sơ spawn của chính vai có thể sai — tạm tin + GẮN CỜ nghi-vấn (token loại Fidelity, giữ nguyên không tự phán).
- Pre-flight hạ-tầng PHẢI spawn: miss CRITICAL "Qdrant Web UI static thiếu" bị người dùng cuối (anh) phát-hiện qua trình duyệt thay vì lượt pre-flight — tuyên "X hoạt động" trong docs thì phải có ai đó đã CHẠM vào X.
- Bug 1 changelog chốt là lỗi bộ lọc FE (HistoryTab lọc cứng TraLai-only): lượt audit trước đoán đúng nhưng phải sang phiên sau mới cầm được bằng-chứng FE; CI run #215 FAIL (SQLite tie-break tái phát) → #216-#221 PASS liền chuỗi; gotcha #48 còn nợ docs.
- Quy-trình curate tự nhân bản sao: baseline 2026-05-11 xuất hiện trong 2 file archive khác nhau của cùng vai — entry housekeeping nên nằm ở header file, không chiếm slot dòng thời-gian.

## Entries

**[cao] B3-A — S27: hai bài học, một là tự nghi-ngờ hồ-sơ của chính mình**
- VIỆC: hồi-cố phiên S27 (em-main solo, không spawn) + rà lại các entry S20-S26 từng khai "spawn Investigator".
- KẾT-LUẬN: (i) miss CRITICAL: nếu có spawn pre-Plan A.3 thì đã bắt "Qdrant Web UI static thiếu" TRƯỚC khi em-main viết link `localhost:6333/dashboard` vào `rag-dashboard.ps1` — anh phát-hiện qua trình duyệt rồi báo ngược. (ii) Trong S27, spawn agent type `investigator` NOT FOUND ⇒ registry chưa từng nạp trong phiên đó; nhưng diary S23 t1 K0 / S25 t1 / S26 Plan AG / Plan AI đều ghi "spawn Investigator" kèm chi-phí 28-40K token. Hai khả-năng: (a) phiên trước nạp được (bản Claude Code cũ / định-dạng khác / hot-reload sau khi mở UI `/agents`), hoặc (b) em-main quy-sai, thực ra spawn `general-purpose`. Kết: tạm tin entry cũ nhưng GẮN CỜ nghi-vấn cho lần điều-tra sau.
- BÀI-HỌC: kiểm-tra phụ-thuộc-ngoài (binary ≠ web UI ở repo khác) là việc của lượt pre-flight, không phải của người dùng cuối; tuyên "X hoạt động" trong tài-liệu thì phải có ai đó đã CHẠM vào X.
- BẤT-NGỜ: vai tự phát-hiện hồ-sơ spawn của chính nó có thể sai — chi-phí token ghi trong diary không chứng-minh danh-tính agent đã chạy. Ca "diary khai việc mà không khai bằng-chứng công-cụ" — đúng loại rủi-ro Fidelity mà H2 phải soi.
→ substring:"rag-dashboard.ps1"

**[vừa] B3-B — S25 wrap: chốt root-cause 2 bug + chuỗi CI hồi phục**
- VIỆC: khép phiên S25 sau audit ~28K: xác nhận nguyên-nhân 2 bug rồi em-main tự làm 6 kế-hoạch tiếp.
- KẾT-LUẬN: Bug 1 = handler ĐÃ log (Header+Update) nhưng HistoryTab lọc cứng chỉ TraLai nên loại mất; Bug 2 = `ApplyReturnModeAsync` 4 mode không `Changelog.Add()`, chỉ người gọi log chuyển-phase. Đường vá: BE thêm log + FE nới filter + tách badge Decision. 7 commit `e23f51c..506cada`; run #215 FAIL (test Plan M vỡ vì SQLite tie-break tái phát) → #216-#221 PASS liền chuỗi; gotcha #48 còn nợ docs.
- BÀI-HỌC: "em-main solo từ Plan AC" vì chuỗi lý-luận xuyên tầng — implementer sẽ TỪ CHỐI, nên phân việc phải xét độ-xuyên-tầng trước khi xét khối-lượng.
- BẤT-NGỜ: bản này chốt Bug 1 là lỗi bộ lọc FE (giả-thiết ở lượt audit) — lượt audit trước đoán đúng nhưng chưa cầm được bằng-chứng FE, phải sang phiên sau mới xác nhận.
→ substring:"e23f51c"

**[thấp] B3-C + B3-D — housekeeping & bản sao** *(rút narrative — token sống ở phụ-lục)*
- VIỆC: ghi lại phiên curate S29-era + chép lại baseline khởi-tạo agent 2026-05-11.
- KẾT-LUẬN: curate: 10 entry S21→S24 chuyển sang `archive/2026-05-q1.md`, KEEP S25/S26/setup, MEMORY 34.9 KB → mục-tiêu 20-22 KB; baseline: 44 gotcha + 14 memory + 6 skill + 27 mig + 81 test, "No investigations performed yet".
- BÀI-HỌC: entry housekeeping nên nằm ở header file archive, không chiếm slot dòng thời-gian hoạt-động — chính nó gây trùng khi curate lần sau.
- BẤT-NGỜ: baseline 2026-05-11 xuất-hiện 2 lần trong 2 file archive khác nhau của cùng vai ⇒ bản sao nhân lên bởi chính quy-trình curate, không phải bởi việc thật (trùng 100% với entry đầu q1 — xem `_lienfile-notes-batchB.md` #1).
→ substring:"Awaiting first SendMessage"

## Phụ-lục token (coverage)
*(chép TRỌN token-list section investigator-codebase/2026-05-q3 của proposal curator — lưới coverage-diff)*

- **gotcha#:** `#48` (SQLite tie-break — "pending docs")
- **surprise (nhãn nguyên-văn):** không có nhãn "Surprise:" — token cùng loại: "Investigator pre-flight CRITICAL miss" · "spawn `investigator` agent type NOT FOUND trong session S27" · "**For now: trust prior memory entries but FLAG uncertainty cho future investigation.**" · "Possibility: (a) … hoặc (b) Em main misattribute - actually spawn `general-purpose` agent default" · "runs #215 FAIL Plan M tests SQLite tie-break re-emerge"
- **guard:** "**pre-flight infrastructure audit MUST spawn Investigator** trước khi em main claim 'X work' trong docs" · "cross-stack reasoning Implementer would REFUSE" · Rule §6.5 (trong header các file chị em; ở file này là "Patterns proven + Active workflow schemas foundation preserved untouched")
- **root-cause:** ① "Bug 1 Budget Adjust Handler ĐÃ log Changelog (Header+Update) nhưng FE HistoryTab filter strict TraLai-only loại" ② "Bug 2 ApplyReturnModeAsync 4 mode KHÔNG add Changelog.Add() — chỉ caller LogTransitionAsync log phase transition" ③ (meta) "registry chưa bao giờ load trong session này"
- **file:line:** **0 token file:line** trong toàn file (chỉ tên file `rag-dashboard.ps1` + URL `localhost:6333/dashboard`)
- **định-danh khác:** commit range `e23f51c..506cada` (7 commit) · CI run `#215` FAIL → `#216`-`#221` PASS · MEMORY 34.9 KB → 20-22 KB · baseline "44 gotchas + 14 memory entries + 6 skills + 27 mig + 81 test pass cumulative" (trùng q1) · token-cost ~28K
