[CLAUDE] Docs: closeout OUTWARD wave adap đợt-9/10 + vá drift skill-matrix H24
All checks were successful
Deploy SOLUTION_ERP / build-deploy (push) Successful in 5m43s

Closeout 4 mục OUTWARD của wave S141-S142 (anh gật @S143):
- adap-report 7/7 thư, đủ 5 trường REPORT-FORMAT LOCK, evidence đo thật
- email hub báo-nấc (sha 6c94873f72e0, selftest_verify exit 0, log _index cùng lượt)
- STAGE-2: 7 thư -> inbox/ai_infra/, _index 0 pending, cross-check 7/7
- squash K=8 wal: -> commit chốt

Ngoài wave: agents/README skill-matrix thiếu 2 row H24 (drift S121) -> 15/17 thành 17/17.

Nấc cao nhất khai được = executed-file/verified-pending-restart (trio CHƯA spawn).
2 phát hiện khai thẳng theo G-015 (chi tiết trong report + email):
- whitelist `tools:` KHÔNG chặn ghi ở runtime: 6 vai read-only bị append Write+Edit
- pull-lag do "watch broadcasts/inbox" canh nhầm chỗ

TICK H24: counter 16->17 (S143), 3-điều-kiện OK-reachable, không fail-loud.
Detector TOTAL 46 == baseline 46, 0 flag mới.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
This commit is contained in:
pqhuy1987
2026-07-22 12:32:27 +07:00
parent b146e2bb4b
commit 2757e418a1
56 changed files with 2318 additions and 58 deletions

View File

@ -5,6 +5,7 @@ metadata:
node_type: memory
type: feedback
originSessionId: 2bf15e52-54c8-4028-93bc-eaa7e6139a95
modified: 2026-07-22T04:33:49.844Z
---
S109 (2026-07-10) resume sleep-recovery: scope 16-file/6-agent "đã chốt + guard 16/16 gen-0 PASS" từ phiên pause hóa ra **14/16 ĐÃ covered** bởi gist gộp-kỳ S70 (`2026-05.gist.md` — header `source-verbatim` ghi rõ cover q1..q4/runs). Phiên pause match "gist tương-ứng" theo **TÊN-FILE 1:1** (`2026-05-q2.gist.md` không tồn tại → tưởng chưa nén). Git-date proof (14/14 verbatim last-commit ≤ ngày gist) → SKIP đúng guard "tránh nén lại", tiết kiệm ~180KB re-distill + tránh 2 bản gist song song drift. Scope thật = 2 file → pipeline trọn, reviewer Fable-real PASS_WITH_FIXES.
@ -15,6 +16,7 @@ S109 (2026-07-10) resume sleep-recovery: scope 16-file/6-agent "đã chốt + gu
**Phân-biệt 2 lỗi:** "đo nhầm" = có chạm đĩa nhưng lệch. Cái này **KHÔNG chạm đĩa lần nào** — suy từ artifact kế-hoạch rồi phát ngôn ở thể khẳng-định. **"Không ai được giao" ≠ "chưa có trên đĩa"**; bảng-wave mô-tả Ý-ĐỊNH, không mô-tả TRẠNG-THÁI.
🔸 **Bẫy đo kèm:** `grep -c '<pat>'` đếm **DÒNG khớp**, `grep -o '<pat>' | wc -l` đếm **occurrence**. Trên mega-line (`HANDOFF.md:5` = 50 665 byte / 45 đoạn logic) hai lệnh lệch **8×**`-c` cho `1` ⇒ kết-luận "chỉ 1 khoá" = sai. Mega-line ⇒ LUÔN `-o | wc -l`.
🔸 **Bẫy đo thứ-3 CÙNG HỌ (S130, E-010/AS-14):** `Get-Content`/console-pipe PS5.1 KHÔNG ép `-Encoding` trên file **no-BOM** = đọc ANSI ⇒ ký-tự Việt (2-3 byte UTF-8) đếm ×2-3 ⇒ lead báo anh "mega phình ~13K/ngày" trong khi số UTF-8 thật +2.6K (sai ~5×, lọt thẳng vào AskUserQuestion trình owner). Repo CỐ Ý để docs no-BOM ⇒ phép đo mặc-định LUÔN dính. Đo text ⇒ `[System.IO.File]::ReadAllText($p, [System.Text.UTF8Encoding]::new($false))`; cần ĐỌC tiếng Việt từ console ⇒ dump-ra-file rồi Read tool (console cũng mojibake). Số lỡ báo owner ⇒ đính-chính NGAY trong phiên, giữ kết-luận nếu còn đúng + khai độ-lớn sai.
🔸 **Bẫy đo thứ-4 — CHÍNH CÁI VÁ bẫy-thứ-3 mở ra bẫy MỚI (S142, vòng-2 adap đợt-9/10):** `[Text.Encoding]::UTF8.GetString([IO.File]::ReadAllBytes($p))` = cách đọc "an-toàn-encoding" khuyến-nghị ở bẫy-3 — nhưng nó **KHÔNG nuốt BOM** (khác `Get-Content`/StreamReader vốn `detectEncodingFromByteOrderMarks`). `U+FEFF` sống sót đầu chuỗi ⇒ `ConvertFrom-Json` chết `Invalid JSON primitive` ⇒ detector mới FLAG `counter-unparseable` trên file JSON **HOÀN TOÀN HỢP LỆ** (dương-giả). Fix = thêm `.TrimStart([char]0xFEFF)` (viết bằng **code-point**`.ps1` vẫn thuần ASCII, giữ gotcha #30). ⇒ **Luật tổng-quát: vá failure-mode A bằng một API khác = phải hỏi "API mới có failure-mode nào A không có?"** Ở đây `ReadAllBytes+UTF8` đúng về charset nhưng thua về BOM. 🔴 **Chỉ chạy happy-path rồi thấy "có flag = detector có răng" là đủ để ship một dương-giả** — phải fault-inject CẢ 2 CHIỀU (kêu-đúng-khi-lỗi ∧ im-đúng-khi-không-lỗi).
🔸 **Acceptance literal = nợ tự-lão-hoá:** số/ngày tuyệt-đối trong acceptance có thể stale **trong cùng NGÀY** viết ra nó. Viết acceptance dạng **quan-hệ** ("in đúng ngày ở anchor STATUS.md:6"), cấm literal.
**How to apply:** (0) 🔴 **Trước khi phát ngôn thể KHẲNG-ĐỊNH về trạng-thái đĩa (tồn-tại/đã-làm/còn-thiếu/orphan): chạy ĐÚNG 1 lệnh chạm đĩa.** Rẻ hơn mọi thứ khác; lead S121 bỏ qua bước này và đầu-độc cả brief fan-out + run.md + WAL + báo-cáo owner. Suy-luận từ spec/bảng/kế-hoạch ⇒ chỉ được nói ở thể **nghi-vấn** ("chưa thấy wave nào được giao — để tôi đo đĩa"). (1) Mọi resume-from-pause: TRƯỚC execute, re-derive tiền-đề scope từ disk — đọc HEADER artifact đích (field source/coverage) + git-date so artifact vs nguồn; match theo NỘI-DUNG coverage, KHÔNG tên-file 1:1. (2) Lệch tiền-đề → thu-hẹp scope theo guard + báo user option ép-đè tường minh (đừng im lặng chạy scope cũ, cũng đừng im lặng bỏ). (3) Khi distill/nén (reviewer S109 meta-lesson): **3 bề-mặt lỗi NGOÀI body mà coverage-diff máy móc MÙ** = gist-metadata count (đếm từ disk, không copy brief) · số-TỰ-TÍNH (delta arithmetic không có token verbatim đối chiếu) · fact-claim trong N/A-note (resolved/pending phải verify tươi) — semantic reviewer soi riêng 3 lớp này. Liên quan [[agent-kill-recovery]] [[prod-config-inspect-before-change]] [[stale-diagnostic-background-agent]].