Ap spec-apply-hub-s145-v2 (5 axis, governance-only: 0 prod-code, 0 migration). Workflow S145 chet giua chung -> /tiep §4 relaunch-cat-gon wf_3d803740-41d 3/3 DONE. Owner-decision @S146: - session_ctx_kb = 64 TUONG-MINH (giu nguyen caveat ghost-wire: 0 reader) - session-model: scaffold IDEMPOTENT (tach cap-SO vs tao-THU-MUC) · closed.md WIRE (session-end §6.3-bis) · V2 AUTO (go cong NGUOI, GIU cong NHIP 6/15/3) Landed: C7 §N.8 predicate 4-ve · hook wal-flush.ps1 4 path (+.claude/sessions/) · San-3 tin-hieu ⑤ + ORPHAN-L · D2 KIEM end-only · §L.c completeness-gate co RANG. LIVE-VERIFY hook 4-path PASS repo THAT (da7ee8a). Session-model chay TRON VONG dau tien: pause-S146 -> resume-S146 -> ORPHAN-L can so. H24 force-fire (P=8 pause >= 1, luat auto moi): 2 vai + h24-audit -> 7 FLAG, va het: - sweep-consent sot 6 site (h24-audit.md:4 = frontmatter description) - closed.md wired-but-declared-unwired (ghost-wire CHIEU NGUOC) - owner-decision [7] BI GHI DE do tai-dung slot-index -> mat uy-quyen push 3/3 vai lane-H24 garble #53: ghi-dia-SOM cuu tron, ghi-MUON mat trang. So: orphan run-folder 3->0 · carry 14->20 (co tag [carry:*]) · +E-013 +E-014 error-ledger · +memory feedback_absence_looks_like_clean · .gitignore +lock file. Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
3.1 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.
🔸 Neo chung cả 3: thứ có mặt sai thì grep ra; thứ vắng mặt thì không. Nên với xoá/đè/rỗng, bằng-chứng phải đến từ NGUỒN KHÁC (git history · lệnh khác · người khác), không từ chính bề-mặt đang soi.