# MEMORY — ring1-audit (KIỂM vòng-1: tooling/harvest)

- **S173 (2026-08-05) @open KIEM vong tooling/harvest — `RING1: 78Đ/4T` + 1 KHONG-CHAM-DUOC + 2 INFORM `[LEAD SEED ON-BEHALF — propose-only, single-writer = lead (B3)]; nguon `runs/2026-08-05-S173-bookend-open/sub-ring1-audit-open-S173.md` 38.365 B`:** H1 `PASS_WITH_FLAGS-10` → **8/10 DAT nguyen**; H2 `GATE-FAIL-6` → **4/6 DAT nguyen** (so hoc khep kin 0 dong lech), 1 TRUOT (F-04), 1 TRUOT LOW. 🔴 **PHAN XU MAU THUAN 2 con-do (lead giao dich danh) — H1 DUNG, H2 SAI:** monthly drift-audit **chua chay that** (**5 nguon doc lap**). H2 F-04 vo 2/3 ve: *"mat dau khoi MOI so ben"* → that ra **6 be-mat con giu**; *"ky sau tra ra SAI"* → **DUNG**. 🔴 **Nhung H1 CUNG TRUOT o SO:** "20 commit" **khong quy duoc ve nguon** (that: 89 total / 21 non-wal) vi `git log --since=` **PRUNE IM LANG 22 commit**, trong do **3 cai la `[CLAUDE]` that** (`7a903cf`·`88e7ecf`·`ce35f90`). Ket-luan H1 van song **chi vi tao quet lai tren tap day du**. 🔴 **TU-FALSIFY THUOC CUA CHINH MINH TRUOC KHI PHAN AI** (doi-5 lineage hong-thuoc): 2 engine dem commit **cai nhau** ⇒ dung, truy engine hong — thu pham lan nay la `--since`. **Luat: 2 engine cai nhau thi `comm` so TAP, dung cai SO.** 🔴 **F-3 under-count — be-mat LIVE thu 6 H1 sot:** `.claude/agent-memory/ring2-audit/MEMORY.md:25` day "5 class `view-*`" (enum = **6**), nam duoi `## 🎯 Role baseline` = **nap moi spawn**. **Dang can THAT ngay luc do:** `ring2-audit` chay chinh phien nay voi thuoc thieu vach, dung luc `lead-stale` ban FLAG tren enum 6. ⇒ F-3 = **3 file / 5 site**. Tai phat lan 2 cua A40@S172 (va 1 dong, sot o cung lop). 🔴 **Backstop residual-write THUNG:** H1+H2 SACH that (mtime so rieng truoc luot chay), nhung Stop-hook `wal: flush` **auto-commit xoa dau khoi `git status`** (`ac6e38f` nuot `.mfe-state.json`+`WAL.md`; `f1e1ff9` nuot `harness-eval/MEMORY.md`) ⇒ **soat bang `git show --stat` cac commit `wal:`, KHONG bang `git status`**. 🔴 **Stray dir = 5 (khong phai 4):** cai thu 5 (`ring1-audit`) sinh **11:09 = dung giay lead spawn tao**, RONG. Co-che **monotone 1 dir/1 spawn** ⇒ **so KHONG BAO GIO hoi tu**; H2 bao 1 @10:45 **khong sai**. ⇒ **ghi CO-CHE vao so, dung ghi CON SO**; don o `session-end` sau sub cuoi. 🔴 **Tu-to:** so `ring1-audit` cua chinh tao **mo coi khoi S169** (ENTRY=0) — NEU, khong tu va. Tag `[s173, 78d-4t, phan-xu-h1-dung-h2-sai, since-prune-im-lang, tu-falsify-thuoc-truoc, comm-so-TAP-dung-cai-SO, be-mat-live-thu-6, backstop-git-status-thung, stray-dir-monotone-ghi-co-che]`

- **S172 (2026-08-05) @close — `KIEM-PASS-WITH-2-TRUOT — 69 claim (67 ĐẠT / 2 TRƯỢT) + 4 KHÔNG-CHẤM`; H1 39/40 · H2 28/29; falsify 7 (4 HELD / 3 BROKE) `[LEAD SEED ON-BEHALF @closeout M9 — vai INFORM-only, single-writer = lead (B3 VERIFY→APPEND)]; nguồn `runs/2026-08-05-S172-bookend-close/sub-ring1-audit-close-S172.md` 39.644 B + return`:** 🔴 **Nghề chốt lại: 2 thách-CLEAN đều CHỊU, nhưng chịu bằng LENS KHÁC chứ không bằng đọc verdict.** (A) H1 đối chiếu `SKILL.md ⟷ STATUS.md` = **hai file cùng lớp doc**; mình đổi nguồn sang **ĐĨA CODE** (`find src -path '*Migrations*'` = **71**, khớp row cuối) ⇒ số đứng ở **3 nguồn**, H1 chỉ có 2. (B) H2 chứng `S159 dương-giả` bằng **2 heading**; mình mở **4 vai H2 KHÔNG check** và đối chiếu **byte artifact mà entry tự trích** — **4/4 byte-exact**. 🔴 *Bịa được tên, không bịa được byte.* ⇒ **CẤM retro-harvest folder đó** (đẻ entry trùng trên 10 sổ). **2 TRƯỢT đều là under-count làm flag NẶNG hơn:** A40 H1 skill DRIFT ×1→**×2** (lỗi **PHẠM VI**: vá 1 dòng không quét cả file) · B19 H2 `≥10 vai` chữ đúng (13≥10) nhưng **bảng liệt 11, thật 13** ⇒ ai dùng bảng để hành động sót **53.084 B**. **4 finding riêng:** R-1 lead viết `Updated S172` mà `git log` chứng commit cuối là `ff7f655` @S168 ⇒ **khẳng định một lần cập nhật CHƯA TỪNG XẢY RA** (không phải "sẽ thối" — **sai ngay lúc land**) · R-2 ổ số cứng thứ 2 cùng file · R-3 bản vá R-2 **giữ literal số cũ ⇒ trồng citation-trap vĩnh viễn** · R-4 dùng bảng 13-vai. 🔴 **Tự khai: 3/3 nghi-vấn ĐẦU TIÊN đều là dương-giả của CHÍNH THƯỚC MÌNH** — parser mảng ra 50 phần tử rác (**đời 4** lineage mốc-kết-thúc-sai: S153 → S162 → S168 → nay) · `cut` đọc neo thành vắng mặt · tokenizer đếm 13 thay 23. Cả 3 bắt trước khi nộp; không tự-falsify thì **H1 bị tố oan 3 lần**. Tag `[s172, chiu-bang-lens-khac, bia-ten-khong-bia-byte, under-count-nang-hon, doi-4-moc-ket-thuc-sai]`

- **S168 (08-01) KIỂM @close — `52Đ/4T trên 56 claim` (H1 28Đ/2T · H2 24Đ/2T) · evidence `sub-ring1-audit-close-S168.md`:** falsify 6 (2 HELD/4 BROKE). 🔴 **Class MỚI đáng nhớ nhất — "TỰ-ĐÍNH-CHÍNH NGƯỢC"**: H2 tự nhận sai baseline corruption S162 ("24 hit" → sửa thành 22) nhưng **24 vốn ĐÚNG** — `git grep -c`=**DÒNG**(22), `git grep -o|wc -l`=**LẦN**(24), đo tại `e5123ff` lẫn HEAD đều 22/24 ⇒ H2 nhận tội oan + giao S169 baseline **lẫn đơn-vị** ⇒ kỳ sau đo bằng thước đếm-LẦN sẽ thấy "+2 corruption ảo" (tái phát class `H2-11@S153` đời 3). **Bài: khi con-đo TỰ THÚ, soi luôn lời tự-thú — nhận tội sai cũng là lỗi, và nó ăn vào baseline.** 🔴 **H1 F-3 under-count 6→7**: sót `docs/architecture.md:220` (`→ D:\Backups`) vì H1 gặp 0-hit-giả rồi **thu hẹp** pattern sang `Backups.SolutionErp` — chuỗi này không chứa `\SolutionErp` ⇒ **chỗ thu-hẹp che hit thật** (class `absence_looks_like_clean`, đời 2 trong 1 phiên). Suýt TỰ BÁC finding đúng khi lead sweep ra 0-hit; cứu bằng `git show HEAD:` + `git diff` ⇒ hoá ra lead vừa vá lúc 19:48 (**time-drift**, bài E1@S150 — hỏi "sai, hay ĐÃ-ĐƯỢC-XỬ?" TRƯỚC khi rút claim). ✅ thách-CLEAN A **chịu**: `permission-matrix` fresh THẬT — soi tới `[Authorize(Policy="KeHoachKyKet.Update")]` ở controller `:109`, + control-dương/âm; nợ S162 của tao (`contract-workflow` mù KHKK) **đã đóng**. 🔴 thách-CLEAN B **THỦNG (finding R-1 riêng của tao)**: C5 chứng-nhận folder "đóng" bằng **TÊN+size>0 ⇒ mù NỘI-DUNG** — `sub-reviewer-c2-l3.md` 188 B, Verdict "(ĐANG LÀM)", 0 hit ở diary/run.md/synthesis (săn bằng cách lấy **artifact-đóng NHỎ NHẤT** mỗi folder, không re-chạy phép của H2). 🔴 **F-A BROKE VÀO CHÍNH TAO lần 3**: regex non-greedy `\[(.*?)\]` ra roster 18 (thật 23) vì chết ở `]` trong comment `owner-decision [2]` — **comment của chính persona tao**; 3 đời hỏng-thước: `grep -c||echo 0`(S153) → `grep -v Snapshot`(S162) → non-greedy(S168). Tự bắt thêm **con-trỏ chết trong bảng của chính tao** (A26 trỏ §F-C sai chỗ) — khai ra thay vì lặng lẽ vá. Số tự tái-dựng: roster **23 × 5 nguồn + so TẬP `SET_IDENTICAL`** · C5 79/76/0-orphan (so TẬP với 3 dir được khai miễn) · L1 byte **8/8 khớp từng byte** · F-COV-1 quét **5 pattern** + control-dương (mạnh hơn bản H2). Tag `[s168, 52d-4t-56claim, tu-dinh-chinh-nguoc, don-vi-dong-vs-lan, pattern-thu-hep-che-hit-that, c5-mu-lane-chet, broke-vao-chinh-minh-lan-3, time-drift-cuu-bang-git-show]`

- **S162 (07-30) KIỂM vòng tooling/harvest @close — `26Đ/2T trên 36 claim` `[LEAD SEED ON-BEHALF @closeout M9 — nguon: sub-ring1-audit-close-S162.md 17.231 B + return]`:** H1 15Đ/2T/3KC · H2 11Đ/0T/5KC. 🔴 **THÁCH-CLEAN A THỦNG — skill `contract-workflow`**: H1 gọi “4 skill còn lại PASS” nhưng skill này **0 hit** `SigningPlan|Khkk|Kế hoạch ký kết|PipelineStage` trong 24.949 B, trong khi S161 đẻ nguyên máy mới **nằm đúng lãnh-địa nó** (`ContractSigningPlanPhase.cs` 5 phase, WF V2 type-10, codegen `KHKK/{YYYY}/{Seq:D3}`) và frontmatter nhận đúng từ khoá routing ⇒ người tra bị dẫn vào rồi **đọc nhầm luật RG-001/9-phase**. Không phải nới chuẩn: **H1 dùng 2 THƯỚC trong 1 báo cáo** (nợ-tích-luỹ cho `ef-core-migration`, “đợt này” cho `contract-workflow`) ⇒ TRƯỢT A16 + A17 dẫn xuất (TOTAL under-count 10→11). ✅ **THÁCH-CLEAN B CHỊU** — `reviewer` harvested THẬT (numstat +16/−18, mở ruột dòng cộng có nội dung thật, không phải đếm-tên); `ctx-verifier` numstat **rỗng hoàn toàn** ⇒ **F-01 của H2 mạnh hơn chính bản H2 nộp**. 🔴 **F-A BROKE VÀO CHÍNH TAO**: định tố H1 bịa số Mig “69” (tao đếm 68) — lỗi của tao, `grep -v Snapshot` **nuốt mất** `…AddPeApprovedBudgetSnapshot.cs`; đếm lại 2 engine = **69**, H1 HELD. Tái phát y hệt lỗi `grep -c || echo 0` của tao @S153. **F-B HELD mạnh**: nghi F-02 vô giá trị vì `git log -S` trên path archive “luôn rỗng” → chạy **control-dương** H2 không chạy (`git log -S 1a47a61` = **1 commit**) ⇒ lệnh CÓ RĂNG ⇒ 0-hit là vắng-mặt THẬT. Số tự tái-dựng: roster **23 × 6 nguồn độc lập** · universe **75/72/3 so TẬP không so SỐ** · VALID_ROLES 23 bằng engine khác. Tag `[s162, 26d-2t, thach-clean-thung-contract-workflow, 2-thuoc-1-bao-cao, control-duong-chung-lenh-co-rang, tu-bat-loi-cua-minh, seed-on-behalf]`
- **S153 (07-26) KIỂM vòng V1 (tooling+harvest) `[lead seed on-behalf @closeout M9; nguồn = sub-ring1-S153.md 22.992B]`:** **28 ĐẠT / 4 TRƯỢT-rìa / 1 KHÔNG-CHẤM trên 33 claim** · falsify 7 phép (4 HELD / 3 BROKE — **1 BROKE vào CHÍNH MÌNH**: `grep -c X f || echo 0` in "0" **và** exit 1 ⇒ đếm nhầm 20/20, suýt tố oan H2 bằng số rác của mình) · tái-dựng 11 số khớp / 1 lệch (đổi nguồn `git ls-files` · đổi engine python↔perl · đổi parse json↔grep · **so TẬP thay so SỐ**).
  **4 TRƯỢT đều lỗi RÌA, 0 lỗi ở số load-bearing:** H1-15 MED (F-6 **under-count** — dump 18 key thấy `code-review@`+`feature-dev@` cũng `true` dưới cùng heading ⇒ phá claim mà flag NẶNG hơn) · **H2-11 MED BROKE** (baseline S154 "16 + hit của file NÀY" — file H2 có **0 raw U+FFFD**, dùng ASCII `<FFFD>` ×7 ⇒ kỳ sau đọc 16/10 thành SỤT rồi truy **file phantom**; đúng bẫy m#20 mà H2 vừa đặt) · H1-14 LOW (neo `SKILL.md:122` → chuỗi thật ở `:121`; mtime chứng lệch-thật không time-drift) · H2-10 LOW (phân-hoạch 11+5=16 ≠ 20 role-dir; minh-oan: 11 ĐÚNG dưới vị-từ mtime H2 tự khai ⇒ kết-luận không đổi).
  **Thách-CLEAN 3 mặt — 2 chịu, 1 THỦNG:** ef-core "fresh" THẬT (bảng liên-tục 12..67, 0 lỗ) · Placement 0-stray chịu **3/3 lens** ⇒ số 0 CÓ RĂNG · corruption 16/10 chịu (python≠perl trùng khít) **nhưng THỦNG ở mệnh-đề DỰ-BÁO** ⇒ **ô 🟢 vẫn thủng được ở lời-hứa tương-lai**.
  Tag `[s153, 28d-4t-33claim, broke-vao-chinh-minh-grep-c, h2-11-baseline-phantom, thach-clean-thung-o-du-bao]`

> Vai KIỂM độc-lập vòng-đo H1 (`tooling-auditor`) + H2 (`harvest-curator`) — C4/C4b, land S145, rename @S149 (cũ: `tooling-harvest-audit`). Read-only, propose-only, AUTO fire SAU khi H1+H2 chốt @session-end §L.b(g-bis). Fail-safe: H1/H2 không chạy ⇒ NO-OP im-lặng, CẤM ĐẠT-ảo. no-self-exempt: ≠ H1/H2.

## Seed (2026-07-25 S150 — lead ghi on-behalf, M9/B3)

- **Nguồn seed:** H2 `harvest-curator` FLAG-F1 @S150 (`runs/2026-07-25-S150-closeout-bookend/sub-harvest-S150.md`): thư-mục này RỖNG từ 2026-07-22 (0 file, git-MÙ với dir rỗng — m#13), là GAP-3 lần 5. Seed đặt TRƯỚC lần spawn audit-round THẬT đầu tiên (cùng phiên) để vai vào có nhà.
- **Lịch-sử vai:** S145 chỉ spawn-PROBE (cố-ý 0-ghi, chứng spawn-được). Audit-round thật ĐẦU TIÊN = S150 closeout wave (entry của chính vai sẽ append dưới đây).
- ✅ **Seed ĂN THẬT:** lượt S150 tao vào **KHÔNG mù** — đọc được seed này, biết ngay F1 là nguồn + biết S145 chỉ probe nên không tự nhận "đã có tiền-lệ". Chứng-thực khuyến-nghị H2: *seed TRƯỚC spawn mới có tác dụng* (memory nạp lúc spawn).

---

## E1 — S150 (2026-07-25) · audit-round THẬT đầu tiên · closeout-bookend

- **task:** KIỂM vòng-1 output H1 `sub-tooling-S150.md` (PASS_WITH_FLAGS, 4 flag) + H2 `sub-harvest-S150.md` (GATE-PASS-5, 5 flag) — AUTO @§L.b(g-bis), tuần-tự C4b.
- **verdict:** `KIEM-PASS-WITH-3-TRUOT` — **34 claim: ĐẠT 31 / TRƯỢT 3** (H1 16/19 · **H2 15/15**) · falsify **7 phép: 5 HELD / 2 BROKE** · tái-dựng **6 số: 5 khớp / 1 lệch** · thách-CLEAN: H2 chịu 2/2 lens, **H1 thủng 1 (mặt ③ PASS)**. Evidence: `runs/2026-07-25-S150-closeout-bookend/sub-ring1-S150.md`.
- **learned (4 bài phương-pháp, dùng lại vòng sau):**
  1. 🔴 **Vòng-KIỂM chạy SAU vòng-ĐO ⇒ mọi số đếm-đĩa đều có thể ĐÃ DỜI.** Gặp vênh phải hỏi *"sai, hay đã-được-xử?"* TRƯỚC khi chấm TRƯỢT — nếu không sẽ **phạt con-đo vì nó đúng**. Lượt này 2/2 ca vênh (commit 22 vs 29 · role-dir 19 vs 20) đều là **time-drift**, không phải sai. Cách phân-biệt rẻ: `stat` mtime hiện-vật vs mtime sub-file con-đo.
  2. 🔴 **Con-đo pin `..HEAD` = moving target** ⇒ mọi kiểm-lại sau đó lệch. Cứu được vì H1/H2 có ghi SHA đích ở dòng phạm-vi ⇒ tao tái-đo `aaf95ef..a9efa34` ra đúng 22. Luôn tái-dựng **tại pin của con-đo**, đừng tại HEAD của mình.
  3. **Cách soi CLEAN cho ra ăn:** đừng re-chạy lệnh của con-đo — đổi **đơn-vị đếm** (file-count → occurrence-count), đổi **nguồn** (`ls` → `git ls-files`), đổi **cách parse** (grep → `json.load`), và **so TẬP thay vì so SỐ** (`diff` 2 danh-sách tên mạnh hơn `wc -l` × 2).
  4. 🔴 **Kiểm quy-NGUỒN, không chỉ kiểm con-SỐ.** BROKE-1 lộ ra vì tao hỏi *"số này có ra được từ nguồn nó khai không?"* — `grep -ic 'marketplace' settings.json` = 0. 3 dòng cùng bảng thì tái-dựng được, đúng **1 dòng lạc nguồn** ⇒ dòng lạc **núp trong bảng đúng**.
- **surprise (2):**
  1. 🔴 **Bẫy glob `.claude/agents/*.md` bắt luôn `README.md` cắn CHÍNH TAO** — ra 11 `INFORM-only` thay 10, suýt chấm H2 TRƯỢT. Bẫy này **đã được viết thành cảnh-báo** ở `agents/README.md:5` mà vẫn cắn ⇒ đúng bài `feedback_root_cause_over_symptom` S122: *bài-học nằm-trong-context KHÔNG tự bật*. **Luật tự áp:** mọi lệnh đếm trên `.claude/agents/*.md` phải kèm `-not -name README.md` / `grep -v README`, không có ngoại-lệ.
  2. **Phá được claim mà lại làm FLAG NẶNG hơn** (BROKE-2): H1 nói *"không còn chỗ nào giữ lịch-sử flip lead"* — sai, `flip-9` có ở `STATUS:8`. Nhưng nó nằm trong dòng **FROZEN tự dán "đừng đọc làm hiện-hành"** ⇒ canonical `:452` stale **2 flip / 10 ngày**, không phải 1 ⇒ **vá theo đúng chữ đề-xuất H1 sẽ để sót flip-9**. Bài: over-claim của con-đo đôi khi **che mất phần tệ hơn** của chính vấn-đề nó bắt.

> Tag: S150 · KIỂM-vòng-1 · H1+H2 · 34-claim-31-ĐẠT · 5-HELD/2-BROKE · time-drift-vs-real-error · glob-README-trap · flip-9-discovery

## S151 (2026-07-25) — KIỂM H1+H2, audit-round THẬT đầu tiên [M9 on-behalf]
- {nấc: verified-self · evidence: sub-ring1-S151.md 21.722B · 33Đ/3T/2KC · falsify 9}
- 2/9 phép phá = lỗi CỦA CHÍNH TAO tự bắt (citation-trap U+FFFD use⟂mention suýt nộp HIGH oan + awk mù mega-line) — falsify chạy 2 chiều cả vào mình. Tái-dựng: RAG 2447 tự gọi · gotchas 111.616B chứng hộ F-6. thách-CLEAN BROKE ef-core-Mig-66 = dương-THẬT máy treo.
- #53 chết lúc ghi → resume.

## S152 (2026-07-25→26) — KIỂM H1+H2 @open + @close [M9 on-behalf]
- {nấc: verified-self · evidence: sub-ring1-S152.md 18.444B + sub-ring1-close-S152.md 34.496B · @close 59 claim 48Đ/5T/6KC · falsify 10 (6H/4B) · tái-dựng 15 số (13 khớp) · thách-CLEAN 6 lens (2 THỦNG đều ở ô 🟢)}
- Ăn tiền nhất: BROKE-1 site-6 consent nằm TRONG persona CHÍNH TAO (`ring1-audit.md:24`, mồi KHÁC "gật mới chạy") — no-self-exempt = NÊU không tự sửa; lead vá + error-ledger E-013 EXT. 2 lens THỦNG (Placement + Corruption H2) đều ở ô PASS — soi CLEAN mới ra ăn.
- 3 lần suýt phạt OAN cứu bằng đo-tại-PIN-của-con-đo (commit 18-vs-19 · stackdump-ignore · -Ack-doc; 2/3 vì lead VỪA thi-hành đúng đề-xuất H1 — phạt nó vì nó đúng VÀ được nghe theo) · 1 suýt minh-oan nhầm (đếm `|` vs đếm tên-đoạn — pipe nội-bộ `<ok|OVERDUE>`).
- #53: @open ngược-#53 resume-1 (chạy-không-ghi) → resume-2 "đổ-ruột-TRƯỚC" + CLI-restart cắt đuôi (lead derive on-behalf, khai tại bookend-synthesis); @close return-slice — file 34.496B tự đủ, 0 mất.

## S159 (2026-07-29) — KIỂM vòng tooling/harvest @open bookend L8 [M9 on-behalf]
- {nấc: self (vai KIỂM, không ai chấm lại) · evidence: `sub-ring1-audit-open-S159.md` 33.004B, END TOTAL=47}
- **40Đ/7T** trên 47 claim · falsify **5 phép (3 HELD / 2 BROKE)** · chết #53 1 lần, resume trả sạch.
- ⭐ **thách-CLEAN ĂN THẬT — đây là lý do vai này tồn tại:** H2 báo *"stray `.claude` = 0 · empty-dir = 0"*; chạy **đúng nguyên văn lệnh của H2** ra **stray 1** + **empty-dir 5→6 ĐANG TĂNG** (đo 2 lần cách ~2 phút). Vật thể = `runs/2026-07-29-S159-bookend-open/.claude/agent-memory/{7 vai}`, **0 file** — class `agent-cwd-relative-memory-misland` (S54). Lead dọn ngay.
- 🔴 **`git status` MÙ CẤU-TRÚC với thư-mục rỗng** ⇒ post-wave assertion của lead báo sạch *đúng lệnh* mà vẫn sót ⇒ close-gate phải chạy RIÊNG `find -type d -empty`.
- T-3/T-4 lật 2 claim H2: *"lành theo lai-lịch S152"* = claim mạnh chống bằng suy-luận yếu · *"0 hit mới sau S152"* **tự phản-chứng** (file S159 của chính H2 thêm 3 hit — citation-trap đời 3).
- ⚠️ Tự khai: **suýt dựng TRƯỢT-ảo cho H1** (diff lần đầu báo 23/23 lệch, đo lại mới đúng) ⇒ vai KIỂM cũng phải tự-falsify trước khi buộc tội.
