Files
solution-erp/.claude/auto-memory/feedback_resume_premise_reverify.md
pqhuy1987 e5123ff5e1
All checks were successful
Deploy SOLUTION_ERP / build-deploy (push) Successful in 5m54s
[CLAUDE] Docs: S162 closeout - cay 4-folder GD ship prod + bookend-close 5 vong/10 vai
- Cay 4-folder giai doan duoi tung goi thau (bfc7b79, cicd PASS 5/5 Run #432)
- Bookend-close: H1 PASS_WITH_FLAGS · H2 GATE-FAIL 4 · H24 20 FLAG · trio MIXED
  · ring1 26D/2T · ring2 19D/1T · harness-audit 43D/4T · ctx-audit TRUOT 7 FLAG
- Lead va trong phien: F-01/F-02/F-04 + A1 archive + A2 distill + skill KHKK
  + comment mirror self-ref (SHA-pair 6/6 giu, build x2 EXIT 0)
- MIND-5 = refresh @closeout dau tien (nhip thu 5, theo de ctx-audit)
- STATUS 3 row canonical + dong CURRENT · HANDOFF 6 slot danh so (54)-(59)
- gotcha #85 · error-ledger E-015/E-016 + AS-19/AS-20 · Phase 12 roadmap
- 4 errata khai thang: tally view-stale-count thoi 1 · enum thieu 1 class
  · tong L1 lech 54 B · A2 tren trigger duong-gia (R10)

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
2026-07-30 15:13:18 +07:00

7.6 KiB
Raw Blame History

name, description, metadata
name description metadata
resume-premise-reverify Resume-from-pause = re-verify TIỀN-ĐỀ scope trên disk (header artifact + git-date) trước khi execute; match theo NỘI-DUNG coverage KHÔNG theo tên-file 1:1; + 3 bề-mặt lỗi distill ngoài body mà gate máy móc mù; + S121 "bảng-kế-hoạch KHÔNG phải đĩa" (không-ai-được-giao ≠ chưa-làm)
node_type type originSessionId modified
memory feedback 2bf15e52-54c8-4028-93bc-eaa7e6139a95 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.

Why: Locked-scope/note phiên trước = snapshot suy-luận, có thể dựa tiền-đề đã sai từ lúc chốt; disk (header artifact đích + git log -1 so ngày artifact-vs-nguồn) = truth. Re-verify rẻ (2 Read + 1 git log) so với chi phí thực thi sai (token lớn + duplicate-artifact khó gỡ). Guard "gen-0 PASS" chỉ chứng nguồn-là-verbatim — KHÔNG chứng "chưa từng được nén" khi artifact đích đặt tên khác quy ước.

S121 bổ-sung — biến-thể NGUY HIỂM HƠN: suy fact-đĩa từ BẢNG-KẾ-HOẠCH (lead tự mắc, /tiep W1). Lead rà bảng 7-wave của spec, thấy không wave nào được giao việc backfill [carry:*] ⇒ kết-luận "orphan, chưa ai làm" ⇒ báo owner + ghi run.md + WAL + bơm vào brief fan-out 694k-token. SAI: disk có 7 khoá thật, vào từ 4727d16 (closeout S119, đã push) — làm NGOÀI cấu-trúc wave. Sub (đo đĩa) bác lại lead. Brief lead còn 4/4 tiền-đề sai cùng lượt: config path (.claude/memory-budget.json không tồn tại, thật = .claude/agent-memory/memory-budget.json) · acceptance literal ngày (2026-07-14 đã tự lão-hoá thành 07-15 bởi commit cùng ngày) · carry · độ-dài (thật ra KHÔNG lệch: wc -c byte vs len() char, VN UTF-8 đa-byte — đừng tính oan cho sub). ⇒ 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.

🔸 Bẫy đo thứ-5 — con-trỏ SỐ-DÒNG vào sổ TÁI-SINH thối trong 1 cửa, và thối IM LẶNG (S162, ctx-verifier K2/K3): .claude/WAL.md bị ghi-đè + đánh số lại mỗi /pause ⇒ mọi con-trỏ dạng WAL:49 / WAL:8,10 hết hạn ngay cửa sau. Đo thật: _mind MIND-4 trỏ WAL:49 ×2 — WAL lúc viết có 61 dòng và dòng 49 là DÒNG TRỐNG (sai ngay lúc viết); WAL:8,10 từ "vá 4 dư-lượng / 3 quyết owner" biến thành "W1 SHIP a8027c0 / W3 SHIP df52fa0" ⇒ giải-nhầm mà không ai biết. 🔴 Vì sao máy MÙ: phép kiểm con-trỏ chỉ verify path tồn tại — path .claude/WAL.md luôn tồn tại ⇒ 0 cờ. Đây là absence_looks_like_clean áp cho con-trỏ. Luật: trỏ vào sổ ghi-đè phải theo NỘI-DUNG ("mục housekeeping trong WAL chain"), KHÔNG theo số dòng; số dòng chỉ dùng cho file append-only / git-tracked ổn định (docs/, src/, session-log). Cùng họ với acceptance literal tự-lão-hoá ở trên — khác ở chỗ literal kia lão-hoá theo NGÀY, cái này lão-hoá theo MỘT LƯỢT /pause.