[CLAUDE] Docs: S162 closeout - cay 4-folder GD ship prod + bookend-close 5 vong/10 vai
All checks were successful
Deploy SOLUTION_ERP / build-deploy (push) Successful in 5m54s

- 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>
This commit is contained in:
pqhuy1987
2026-07-30 15:13:18 +07:00
parent bfc7b79f72
commit e5123ff5e1
52 changed files with 2221 additions and 157 deletions

View File

@ -35,6 +35,8 @@ Detect by **action-signature** (NOT "AI tự phán có vi phạm không"). Scan
| AS-14 | phép ĐO text (length/char-count/so-sánh) qua `Get-Content`/console-pipe **KHÔNG ép encoding** trên file **no-BOM** (PS5.1 default = ANSI → ký-tự Việt đếm ×2-3) | đo-phải-chạm-đĩa-ĐÚNG-CÁCH (E-010; anh em với bẫy `grep -c``feedback_resume_premise_reverify`) | RCA + re-đo `[System.Text.UTF8Encoding]` tường-minh; số đã báo owner → đính-chính NGAY |
| AS-15 | **điểm-đóng-thật** (chốt-đợt commit+push HOẶC session-end) **KHÔNG kèm** delta diary monitor (H1/H2) **và KHÔNG** dòng counter §L.b(j) | session-end §L.b "(a)→(j) đủ HẾT, KHÔNG skip" (E-011 — nghi-thức chạy tắt; máy mù lớp "nghi-thức có chạy không") | RCA + spawn DỒN H1+H2 re-report phủ khoảng bị bỏ + harvest hồi-tố + đọc counter bù |
| **AS-16** | artifact **OUTWARD** (adap-report · email hub · broadcast) **cite sha CHƯA-push**, HOẶC được **stamp trước khi `git status --porcelain` sạch** | E-012 — closeout-squash phá đúng sha vừa cite ⇒ con-trỏ chết với người ngoài; và file sửa sau khi stamp làm câu trong bản đã-niêm thành sai. **Cite outward = commit SẼ SỐNG sau squash.** `git status` là bước **ĐẦU** của outward-gate, không phải bước cuối | RCA + re-anchor sang commit đã-push + **errata rời** (CẤM sửa file đã stamp — vỡ hash) |
| **AS-20** | sổ/stub khai *"X đã được ghi/chuyển/kết-luận"* mà đĩa **0 hit** — claim mạnh hơn việc đã làm | E-016 (S162 ×3 ca cùng phiên: `cicd-monitor` "verbatim→archive" thứ chưa từng archive · `ship-synthesis` trích VERDICT không tồn tại · memory viết claim CÓ-ĐIỀU-KIỆN thành vô-điều-kiện) | mệnh-đề *đã-làm* = **CLAIM ĐO ĐƯỢC**, phải đo trước khi viết; guard = **END-line bắt buộc** cho mọi `sub-*.md` (`END <slug> — VERDICT=<…>`) để trích dẫn luôn có neo grep được |
| **AS-19** | nén/gộp block trí-nhớ làm **rơi ý** mà không để lại vết (byte hợp-lệ, số-hiệu hợp-lệ, máy im) | E-015 (S162: nén `MIND-1` cấp disposition 3/5 ý ⇒ 2 ý mất, 1 trong đó **0 hit ngoài chính block bị nén**) | trước khi nén: liệt tập-ý mục D + gán **nơi đi** từng ý (đóng/carry/con-trỏ). Nén = chuyển-dạng, KHÔNG phải giảm số ý. 🔴 hiện là **nghi-thức, chưa cơ-khí-hoá** |
| **AS-17** | sub được lệnh ghi-đĩa-trong-lúc-làm nhưng lúc return/chết sub-file chỉ có **SKELETON** (header/checklist, 0 finding) — byte-content KHÔNG tăng theo tiến độ | sub-class `skeleton-ruột-rỗng` (E-013 — S150 gate `wf_f4e4c006` khung 274B/0-append → S151 ×2 thuần [sub-lead-stale header-only + sub-lead-gap checklist-only] = **2-strike**; "ghi-đĩa-trong-lúc-làm = CẦN, KHÔNG ĐỦ" — `feedback_agent_return_garble_recover`) | lead verify **BYTE-CONTENT tăng thật GIỮA wave** (đọc RUỘT — size nhỏ = nghi-vấn không phải bằng-chứng, phân biệt skeleton vs đang-viết-dở; H2 m#19) → resume-in-session ép đổ ruột (S151: 5/5 sạch) · lane quan-trọng giữ N-lane-redundancy + em-main-solo backstop |
## 🛡️ Active-Guards index (2-strike promote: episodic → procedural)
@ -86,6 +88,26 @@ Detect by **action-signature** (NOT "AI tự phán có vi phạm không"). Scan
> Format: `E-NNN | date | rule | what | 5-why root | fix (prod-bug = 2-fix: code + guard) | prevention | tags[TYPE/ACTOR/COMPONENT]`
### E-016 — AS-20 claim-mạnh-hơn-việc-đã-làm: sổ khai "đã archive / đã verbatim / đã VERDICT" cho thứ chưa từng tồn tại trên đĩa (S162, **3 ca cùng phiên**, H2 `harvest-curator` bắt cả 3)
- **rule (AS-20 NEW):** mọi mệnh-đề trong sổ có dạng *"X đã được ghi/chuyển/kết-luận"* là một **CLAIM ĐO ĐƯỢC****phải đo trước khi viết**, không được suy từ ý-định. Đặc-biệt nguy khi câu đó nằm trong **stub/summary** — nơi người đọc sau coi là đã-xử-lý xong nên **không mở gốc kiểm nữa**.
- **what — 3 ca, 1 class:**
1. **F-02** `cicd-monitor/MEMORY.md:9` stub khai *"(#422 `b5799fc` · #423 · #424 · #425 `a2bbcb9`) + #419 — verbatim → `archive/2026-07.md`"*; đo: #423/#424/#419 CÓ, **#422#425 = 0 hit toàn `agent-memory/`**, `git log -S"b5799fc" -- .../archive/` **RỖNG toàn lịch sử** ⇒ chưa từng vào archive.
2. **F-03** `ship-synthesis.md:14` trích ``designer `VERDICT: SHIP-READY` `` như **verbatim của vai**, nhưng `sub-frontend-designer-0.md` (17.844 B) **0 hit** `ship.?ready|VERDICT|END` — file kết bằng "TỰ ĐÁNH GIÁ CÒN HỞ". Nội-dung khớp đĩa (tsc/build EXIT 0, SHA-pair 6/6) ⇒ **không phải bịa**, nhưng **hình-thức trích dẫn tạo ra một chuỗi không tồn tại**.
3. **F-08** (reviewer bắt, cùng phiên) memory `frontend-designer` viết *"0 rác 403"* **vô điều kiện** — thật là claim **CÓ ĐIỀU KIỆN** (chỉ đúng khi gate dùng đúng key policy endpoint); + câu *"`Ct_*` kế thừa `Contracts`"* SAI vì seeder tạo row `Ct_*` riêng.
- **5-why:** (1) người viết sổ vừa làm xong việc nên "biết" nó đã xong → (2) viết câu tổng-kết theo **trí-nhớ về ý-định**, không theo đĩa → (3) câu tổng-kết đọc mạnh hơn thực-tế → (4) **stub/summary được thiết-kế để thay thế việc mở gốc** ⇒ sai-số đóng băng ngay tại lớp mà người sau tin nhất → (5) máy MÙ: không detector nào so được "câu khai" với "trạng-thái đĩa" ở dạng tổng quát.
- **fix KÉP (bug-production = 2 fix):** (a) **vá dữ-liệu** — đính chính `cicd-monitor/MEMORY.md` (@S162, nêu rõ nguyên-liệu còn ở run-folder S159, re-distill khi retro-harvest) + sửa 2 câu memory `frontend-designer`; (b) **vá guard** — luật **END-line bắt buộc**: mọi `sub-*.md` kết bằng `END <slug> — VERDICT=<…>` ⇒ trích dẫn verdict **luôn có neo đo được**; ai trích mà grep 0 hit thì lộ ngay. (Đã lên HANDOFF NEXT-em #4 + `[carry:endline-sub-md]`.)
- **guard hiện có ĐÃ giữ:** H2 5-trục Fidelity-FLAG bắt được cả 3 ca **trong cùng phiên chúng sinh ra** ⇒ nấc episodic, chưa cần promote procedural (mới 1-strike với class này).
### E-015 — AS-19 nén-block làm rơi ý IM-LẶNG: nén `_mind` hợp-lệ về byte nhưng 2/5 ý mục D mất không để lại vết (S162, `ctx-verifier` K7 bắt)
- **rule (AS-19 NEW):** thao-tác **nén/gộp một block trí-nhớ** phải đối-chiếu **TỪNG ý** trong block bị nén có **nơi đi** (đóng · carry sang block mới · con-trỏ ra sổ bền). Nén = **chuyển-dạng**, không phải **giảm số ý**; giảm ý mà không khai = **mất dữ-liệu hợp-thức-hoá**.
- **what:** nén `MIND-1` @PAUSE-3 (vượt trần 212 B) tự cấp disposition `(nay …)` cho **3/5 dòng mục D**; **đúng 2 dòng không có disposition là 2 ý biến mất khỏi MIND-4**: `slot-45` (tiền-đề **đã LẬT** — trần thật 89,06%, nên ý này đang từ "báo-động-giả" trở lại "vấn-đề thật") và `detectors :1095/:1760 lọc sub-* sót trio-return (C11b)` (**0 hit ở WAL, 0 hit `_context`, chỉ còn trong chính MIND-1** ⇒ nén lần nữa = **mất hẳn**).
- **vì sao KHÔNG kêu:** máy `mind-check` phép (5)(6) chỉ soi **số-hiệu + bất-biến |block| vs p** — nén là **hợp lệ** với cả hai; phép (9) chỉ đòi *mỗi ý mục D có nhãn*, không đòi *mọi ý kỳ trước có nơi đi*. ⇒ đây là **vắng-mặt trông giống ổn** (`feedback_absence_looks_like_clean`) ở đúng lớp trí-nhớ mềm.
- **5-why:** (1) trần `_mind` chật (89%) ⇒ mỗi cửa buộc nén 1 block → (2) nén chọn block CŨ NHẤT (đúng luật) → (3) người nén tóm-tắt theo **ấn-tượng còn lại**, ý nào không nhớ thì rơi → (4) rơi **không sinh diff đọc được** (block cũ vốn được phép co lại) → (5) ý sống-sót duy-nhất ở block bị nén thì **không có nguồn thứ 2 để đối-chiếu**.
- **fix KÉP:** (a) **vá dữ-liệu** — di-trú 2 ý vào WAL rồi lên `HANDOFF` slot (58) + `[carry:mind-tran-nen-moi-cua]`; (b) **vá guard** — trước khi nén, liệt tập-ý mục D của block sắp nén và gán nơi-đi từng ý (nghi-thức, chưa cơ-khí-hoá được: máy không phán được "ý này đã đóng chưa"). 🔴 Khai thẳng: **guard (b) hiện là NGHI-THỨC, không phải máy** ⇒ đúng lớp "cấm bằng trí-nhớ" mà repo này vốn cảnh-giác; nâng lên máy được khi có nguồn thứ 2 để diff.
- **liên-đới:** trần chật là **nguyên-nhân gốc** ⇒ slot (58) hỏi owner (nâng `mind_ctx_kb` / đổi luật nén / chấp nhận nén mỗi cửa) — vá triệu-chứng mà không hỏi trần thì ca này **tái diễn mỗi cửa `/pause`**.
### E-014 — AS-18 slot-index tái-dụng làm MẤT owner-decision không để lại vết (S146, H24 `lead-omission-auditor` bắt, lead verify bằng `git show`)
- **rule (AS-18 NEW):** khối đánh số (`OWNER-DECISION [n]`, checklist, enum…) **CHỈ ĐƯỢC TĂNG index**. **CẤM tái-dụng số cũ cho nội-dung mới.** Đè slot = nội-dung cũ **biến mất im-lặng** — khác hẳn đổi giá-trị (còn thấy giá-trị cũ để grep).
- **what:** owner @S146 nói *"còn lại xử lý hết xong rồi session-end nhé"*; lead ghi ĐÚNG vào `.claude/WAL.md:9` slot `[7]` = **uỷ-quyền commit+push** (`ad02483`, `9c68bae`). Sau đó lead thêm 3 quyết-định session-model và **tái-dụng slot `[7]`**`e7d06f2` mất hẳn dòng cũ. Grep toàn repo = **0 hit**.