4.4 KiB
name, description, metadata
| name | description | metadata | ||||||||
|---|---|---|---|---|---|---|---|---|---|---|
| feedback-absence-looks-like-clean | Vắng-mặt trông giống ổn — slot-index tái-dụng xoá im-lặng, phép trích rỗng đọc thành sạch; vá xong phải grep lại bằng lệnh KHÁC |
|
Ba ca cùng một lớp, đo được @S146 (2026-07-22/23) — "cái BỊ MẤT không tự tố-giác".
(1) Slot-index tái-dụng = xoá im-lặng. Owner nói "còn lại xử lý hết xong rồi session-end"; lead ghi đúng vào WAL slot [7] = uỷ-quyền commit+push. Sau đó lead thêm mục mới và tái-dụng [7] ⇒ dòng cũ biến mất, 0 hit toàn repo. Hệ-quả: lead hỏi lại 3 lượt đúng thứ owner đã trả lời, ngay dưới khối tên "ghi đè, KHÔNG hỏi lại".
🔴 Khác đổi giá-trị (còn thấy giá-trị cũ để grep) — đè slot thì không còn gì để grep. Và máy MÙ hoàn-toàn: không detector nào biết [7] từng là thứ khác.
Why: WAL ghi-đè toàn-file ⇒ mất-mát không đi qua diff-review từng dòng.
How to apply: khối đánh số ([n], checklist, enum) CHỈ TĂNG index, CẤM tái-dụng. Đối-chứng mất-mát trong WAL = git show <sha>:.claude/WAL.md. Catch-layer duy nhất = vai soi CÁI THIẾU (feedback_meta_count_selfcoverage_blindspot).
(2) Phép trích rỗng ⟂ không có gì. Vá 6 site theo danh-sách người khác liệt → vá 5 sót 1. Cơ-chế: grep -oE '.{50}consent.{80}' đòi đúng 50 ký-tự TRƯỚC match; match ở offset ~30 ⇒ 0 match ⇒ RỖNG ⇒ đọc thành "dòng này sạch". Đúng phải .{0,60}.
🔴 Nguy hơn bẫy grep -c (đã có trong feedback_resume_premise_reverify): grep -c trả 0 — một con SỐ, nhìn là biết đang đếm; cửa-sổ hỏng trả rỗng, trông y hệt sạch.
How to apply: vá xong PHẢI tự grep lại bằng lệnh KHÁC lệnh đã dùng để tìm (khác mẫu, khác cửa-sổ). Vá-theo-danh-sách mà không tự-verify = đời-3 của cùng lớp lỗi.
(3) Ghost-wire soi được 2 CHIỀU. Trước giờ chỉ canh khai-có-mà-không-chạy. @S146 gặp chiều ngược: tiep.md PROSE khai "closed.md CHƯA wire" trong khi MÁY ngay phía trên đã đọc closed.md thật — wired-but-declared-unwired, và nằm đúng dưới nhãn "chống ghost-wire H18".
Why: khai-chưa-xong cho thứ đã xong khiến người sau đi vá cái đã lành, và làm mất niềm tin vào chính lưới đó.
How to apply: khi lật một cơ-chế sang "đã wire", grep mọi surface khai nó chưa wire — cùng kỷ-luật feedback_cardinality_change_grep_consumers.
(4) HEAD~n KHÔNG phải "commit trước của mình" — đo @S177 (2026-08-06), sập THẬT 1 lần. Verify deploy cần đối-chứng trước/sau, lead chạy git show HEAD~1:<file> vs git show HEAD:<file> ⇒ y hệt nhau. Đọc thẳng thành "không có gì đổi ⇒ deploy hỏng?". Thật ra Stop-hook wal-flush.ps1 auto-commit ở turn-boundary nên HEAD = wal: flush, còn HEAD~1 = chính commit vừa tạo ⇒ phép so bản mới với chính nó.
🔴 Cùng lớp: hai vế bằng nhau trông như một phép đo hợp-lệ, không có gì kêu. Khác ca (2) ở chỗ output không rỗng mà khớp — còn dễ tin hơn.
How to apply: trong repo có hook auto-commit, CẤM HEAD~n cho mọi phép so trước/sau — dùng SHA đích danh (git log --oneline lấy đúng commit sản-phẩm, bỏ qua wal:). Cùng gốc với luật đã có ở project_h22_wal_session_continuity (hook 4-path) và điểm-mù Sàn-3: hook làm "cây sạch" và "HEAD~1" đều mất nghĩa. Bonus S177: bundle prod CŨ cũng không dùng làm đối-chứng được (deploy dọn dist ⇒ URL cũ trả ~900B SPA-fallback, grep ra 0 mọi chuỗi = lại một rỗng đọc thành sạch) — xem feedback_prod_db_verify_integrated_auth.
🔸 Neo chung cả 4: thứ có mặt sai thì grep ra; thứ vắng mặt thì không. Nên với xoá/đè/rỗng/so-nhầm-mốc, bằng-chứng phải đến từ NGUỒN KHÁC (git history theo SHA · lệnh khác · người khác), không từ chính bề-mặt đang soi.