[CLAUDE] Docs: khep tron goi adap 7-GD — W5b + W3b + W6/A16, 10/10 wave da chay
All checks were successful
Deploy SOLUTION_ERP / build-deploy (push) Successful in 6m25s

Chu du an chot @S181: "OK lam het roi khep tron di" (P7 ve ii duoc phan).

W5b (het gated):
- Ve (ii) luat truyen-nguyen-van lane DISPATCH -> harness-11-engine §O.3:
  rao "> anh:" + di-nguyen-khoi + khai-thieu. => D-11 nay 5/5 (truoc 4/5).
  Khai vet: rao CU chi phu lane LUU TRU (pause.md), lane DISPATCH 0 rao —
  ca "phu mot nua trong nhu da phu". Va ca tu quy chieu: chinh prompt lane D
  chua 0 khoi "> anh:".
- Ve-6: artifact-integrity them muc VANG-DAT (CAO NHAT) cho luot dat.
  Fault-inject phan biet dung: r-thuong->VANG, r-dat->VANG-DAT.
  Do that: 54/88 thu muc la luot dat, 4 VANG-DAT (truoc do tron trong VANG).

W3b (phan loai xong, CHUA cam):
- harness-11-engine PHAN Q. Tieu chi KHONG che moi — lay tu ranh co san
  memory-archive-gate:323-325 (toan-ven=CHAN / ve-sinh=CANH-BAO).
- 64/64 co: 63 canh-bao + 1 chan (broken-gotcha-ref = con tro vao hu-khong).
- 🔴 Ma thoat CHUA doi o bat ky may nao — thieu ve "soak INFORM >=1 phien".
  Chan tu tan theo thoi gian, khong can ai phan them.

W6 (phan con lai cua lot truoc):
- Bang A16 3 nac (tracking §7), mau so 23 may — KHONG ep ve 21 cua ke hoach.
- 🔴 Phat hien dat nhat: naming-scan.ps1 + artifact-integrity.ps1 MO COI,
  0 cua nghi-thuc goi. Dung xong o W1/W2, chay dung, fault-inject co rang —
  ma khong ai bam nut => het phien la het chay. Da WIRE session-end §L.b(k-ter).
  2 mo coi con lai giu CO KHAI (wal-recovery-test = dung chay tay; session_scaffold.py
  nghi trung, chua xac minh nen khong xoa theo phong doan).
- Bang nac §1 lat 7/7 GD sang "da thi cong".
- WAL viet lai sach: nhieu dong da thoi (next: con ghi cho P2/W4/W5 da xong;
  "5 tep chua commit" da commit tu lau).

Con lai: cam ma thoat W3b khi soak du · cong dong-bo 4 tang · bao cao cuoi
khuon B -> anh duyet -> gui hub. Nac "da duoc kiem chung" chi hub cap.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
This commit is contained in:
pqhuy1987
2026-08-07 22:41:28 +07:00
parent c4d18380e2
commit 587f0c29c1
5 changed files with 184 additions and 49 deletions

View File

@ -16,13 +16,13 @@ Chuỗi nấc, theo đúng thứ tự của hub: **đã gửi → đã nhận
| # | Giai đoạn | Nấc hiện tại | Vì sao đứng ở nấc này, và cái gì mở khoá nấc kế |
|---|---|---|---|
| 0 | Tiếp nhận và bản đồ áp dụng | đã đồng ý | Quyết định `áp dụng` đã ghi ở bản đồ, và scope đã liệt từng khoản. Chưa lên *đã thi công* vì hai vật còn nợ: dòng "đã nhận" trong sổ liên lạc (lane b đang làm) và báo cáo tiếp nhận gửi hub. |
| 1 | Nền chuẩn đặt tên | đã đồng ý | Đường `không áp dụng` đã bị đóng bằng đo đạc, nên SE buộc phải thi công. Scope 22 trên 24 khoản đã khai. Mở khoá nấc kế: wave W1 chạy xong văn bản chuẩn, sổ đổi tên và máy soi tên. |
| 2 | Lưới ghi đĩa và mục lục vật chứng | đã đồng ý | Quyết định `áp dụng`, nhưng hiện trạng per-khoản là **chưa làm**: hai trên sáu ô nghiệm thu đạt, tức bốn trên sáu chưa đạt. Mở khoá nấc kế: wave W2. |
| 3 | Nghi thức hai đầu phiên và cổng chặn | đã đồng ý | Scope 8 trên 10 khoản đã khai cho wave W3. Chủ dự án đã chốt câu P1 theo phương án PA-2, nên khoản cổng chặn bằng mã lỗi cũng lên *đã đồng ý* và đi wave W3b. Riêng luật tự trị ba bậc vẫn chờ câu P5. |
| 4 | Sổ yêu cầu chủ dự án và chấm điểm | đã đồng ý | Chủ dự án đã chốt câu P2 theo phương án PB-2 và câu P4 cho phép đẻ vai mới, nên phần sổ ba khối và phần vai đều lên *đã đồng ý*. Phần chấm điểm vẫn chờ câu P8, phần đường ghi lại khi chấm sai vẫn chờ câu P3. |
| 5 | Cửa gọi mô hình đắt tiền | đã đồng ý | Scope phần còn thiếu đã khai cho wave W5. Hai khoản đi wave W5b vẫn chờ câu P7. |
| 6 | Niêm phong đồng bộ và bảng gốc | đã nhận | Quyết định ở bản đồ là `hoãn`. Hoãn là quyết định **chưa adopt**, nên nấc không được lên *đã đồng ý*. Mở khoá nấc kế: mọi giai đoạn mang quyết định `áp dụng` đạt *đã thi công*. |
| 0 | Tiếp nhận và bản đồ áp dụng | **đã thi công** | W0 đóng @S180: `fitmap` + `tracking` + `_index` 45→69 dòng, 24/24 hash khớp, VẮNG=0. |
| 1 | Nền chuẩn đặt tên | **đã thi công** | W1 đóng @S180 (`naming-standard.md` + `naming-scan.ps1`, fault-inject 4/4 ba chiều). @S181 baseline tách ra `scripts/naming-baseline.json` (chủ dự án chốt câu 6 = b), fault-inject **6/6 hai chiều**, 7/7 nhóm xanh. |
| 2 | Lưới ghi đĩa và mục lục vật chứng | **đã thi công** | W2 đóng @S180 (`artifact-integrity.ps1`, CA-N1 bắt bằng 2 vị từ độc lập). @S181 thêm **ve-6**: thiếu-tệp-ở-lượt-đắt nâng lên mức CAO NHẤT (`VANG-DAT`), fault-inject phân biệt đúng lượt thường ⟂ lượt đắt. |
| 3 | Nghi thức hai đầu phiên và cổng chặn | **đã thi công** (phần áp) | W3 đóng @S180, acceptance **6/6 đóng @S181** sau restart. Luật tự trị 3 bậc land ở `ACTIVE-MARKS §LT3` (câu P5 = gật nguyên văn). 🔴 **W3b**: phân loại 64/64 cờ XONG (`harness-11-engine` PHẦN Q) nhưng **chưa cắm mã thoát** — còn thiếu vế *soak INFORM ≥1 phiên*. |
| 4 | Sổ yêu cầu chủ dự án và chấm điểm | **đã thi công** | W4 @S181: sổ 3 khối + mã YC/ST/PN vĩnh viễn + máy dò 2 số (phân biệt `chua-co-du-lieu``treo 0`, fault-inject 5/5). W4b @S181: luật chấm điểm 5 khoản bất biến (PHẦN P) + khối in 2 cửa + 2 vai tầng-2/tầng-3. **Lượt đầu in `KHÔNG ĐO ĐƯỢC` đúng luật** — vai tầng-2 chạy thật và từ chối nặn số. |
| 5 | Cửa gọi mô hình đắt tiền | **đã thi công** | W5 @S181:`spawn-model-audit.ps1` (trước vá **0** lane thấy / sau vá **24/24** + mẫu số + dòng KHAI) · D-3 hết `undefined` im lặng · D-10/D-12 → PHẦN O. W5b @S181: sổ khung-nhìn lượt đắt (vế i) + luật truyền nguyên văn lane dispatch (vế ii, câu P7) ⇒ **D-11 nay 5/5**. |
| 6 | Niêm phong đồng bộ và bảng gốc | **đã thi công** (phần lõi) | Chủ dự án chốt @S181 *"đồng ý stamp - ký tên"* ⇒ GĐ-6 rời `hoãn`. Bảng gốc 12 TC land (12/12 · 4 ô giữ chữ · 0 tự phong nấc) + RC ký kèm **phạm vi ký khai rõ** + mutation-test E-9 ĐẠT + bảng A16 3 nấc (§7). 🔴 Còn: cổng đồng-bộ 4 tầng · báo cáo cuối khuôn B. |
**Luật giữ bảng này thật.** Nấc tự khai tối đa là *đã thi công*. Nấc *đã được kiểm chứng* **chỉ hub cấp**, sau khi hub soi bằng chứng thật ở kho SE — không ai trong kho SE được tự viết nấc đó. Cấm nhảy cóc: khoản nào chưa có bằng chứng chạy được thì không được ghi cao hơn *đã đồng ý*.
@ -97,10 +97,58 @@ grep -c 'đã được kiểm chứng *|' docs/governance/adap-upgrade-pack-trac
| # | Khoản | SE làm | Khác/mạnh hơn ở chỗ nào | Đo được |
|---|---|---|---|---|
| 1 | **D-8** — cửa duyệt đặc t | Đặt cửa duyệt ở **ĐẦU** chuỗi, không phải giữa | Sàn đặt ở giữa; SE đưa lên đầu nên đặc tả sai b chặn **trước khi** tiêu công thi công | Chuỗi S180: N1→N2→N3→N4 rồi mới W0; N2 trả `PASS_WITH_FIXES 0C/5M/6m` trước khi có dòng mã nào |
| 2 | **D-18** — vai không hợp lệ | `VALID_ROLES` **STOP-HARD** (ném lỗi ngay) | Sàn chỉ yêu cầu cảnh báo; SE chặn hẳn nên không có lane nào chạy với vai sai | `hmw.js` throw up-front; `resolveModel` nhánh role-less nay chỉ còn defensive no-op |
| 3 | **TC-03** — mô hình thường ở chỗ ngồi | `không áp dụng` **CÓ KHAI** | SE không dùng mô hình thường ở bất kỳ chỗ ngồi nào ⇒ khoản này không áp dụng; **khai** thay vì bỏ trống | 26/26 persona pin `model: opus`, 26/26 pin `effort: max`; mẫu số = 27 tệp `.claude/agents/` trừ `README.md`; control âm: liệt mọi giá trị `model:` chỉ ra **một** dòng |
| 4 | **TC-09** — máy soát chỗ ngồi | Vá máy, **không** vá người | SE không mắc bệnh nhưng MÁY có lỗ: phủ 0 lane mà vẫn in `TOTAL FLAGS: 0` | Trước vá: 5 phiên gần nhất `wf=0` ⇒ máy thấy **0**. Sau vá: phiên S180 thấy **24/24 lane**, có mẫu số, có dòng KHAI khi phiên đo ≠ phiên mới nhất |
| 5 | **D-12** — khai mảnh thiếu | Luật tổng cho **cả 5 mảnh** | Sàn chỉ đòi khai; SE trước đó phủ **1/5** (`pause.md:53`), nay phủ cả gói + bảng trạng thái từng mảnh | `harness-11-engine.md` **PHẦN O.2**; D-11 nay **4/5** (mảnh 4 có nhà từ W4) |
| 1 | Nền chuẩn đặt tên | **đã thi công** | W1 đóng @S180 (`naming-standard.md` + `naming-scan.ps1`, fault-inject 4/4 ba chiều). @S181 baseline tách ra `scripts/naming-baseline.json` (chủ dự án chốt câu 6 = b), fault-inject **6/6 hai chiều**, 7/7 nhóm xanh. |
| 2 | Lưới ghi đĩa và mục lục vật chứng | **đã thi công** | W2 đóng @S180 (`artifact-integrity.ps1`, CA-N1 bắt bằng 2 vị từ độc lập). @S181 thêm **ve-6**: thiếu-tệp-ở-lượt-đắt nâng lên mức CAO NHẤT (`VANG-DAT`), fault-inject phân biệt đúng lượt thường ⟂ lượt đắt. |
| 3 | Nghi thức hai đầu phiên và cổng chặn | **đã thi công** (phần áp) | W3 đóng @S180, acceptance **6/6 đóng @S181** sau restart. Luật tự trị 3 bậc land ở `ACTIVE-MARKS §LT3` (câu P5 = gật nguyên văn). 🔴 **W3b**: phân loại 64/64 cờ XONG (`harness-11-engine` PHẦN Q) nhưng **chưa cắm mã thoát** — còn thiếu vế *soak INFORM ≥1 phiên*. |
| 4 | Sổ yêu cầu chủ dự án và chấm điểm | **đã thi công** | W4 @S181: sổ 3 khối + mã YC/ST/PN vĩnh viễn + máy dò 2 số (phân biệt `chua-co-du-lieu``treo 0`, fault-inject 5/5). W4b @S181: luật chấm điểm 5 khoản bất biến (PHẦN P) + khối in 2 cửa + 2 vai tầng-2/tầng-3. **Lượt đầu in `KHÔNG ĐO ĐƯỢC` đúng luật** — vai tầng-2 chạy thật và từ chối nặn số. |
| 5 | Cửa gọi mô hình đắt tiền | **đã thi công** | W5 @S181:`spawn-model-audit.ps1` (trước vá **0** lane thấy / sau vá **24/24** + mẫu số + dòng KHAI) · D-3 hết `undefined` im lặng · D-10/D-12 → PHẦN O. W5b @S181: sổ khung-nhìn lượt đắt (vế i) + luật truyền nguyên văn lane dispatch (vế ii, câu P7) ⇒ **D-11 nay 5/5**. |
🔸 **Ô nghiệm thu của hub cho TC-03 GIỮ NGUYÊN CHỮ *"chưa đủ mẫu"*** — SE **không** điền số thay hub.
## §7 — Bảng A16: máy ⟂ tay, BA NẤC (W6/S181)
> Khoản A16 đòi phân biệt **máy tự chạy** với **người gõ tay**, và cảnh báo **thang 2 nấc là thang HỎNG** (lane F §1.1): gộp *"có máy"* với *"máy tự fire"* làm một thì một máy mồ côi vẫn được tính là đã tự động hoá.
**Mẫu số: 23 máy governance** *(không tính script sản phẩm: deploy · backup · migrate · install · convert · deps-audit · plan-* · parse_* · setup-* · rename-*)*.
🔸 **Số này ≠ 21 mà `wave-plan` ghi.** 21 là ảnh chụp **trước** khi `tien-kiem-cua.ps1` land (W3) và trước đợt đo lại @S181. Đo lại bằng lệnh ở cuối mục. **Không ép số về 21 cho khớp kế hoạch.**
### M1 — hook, fire ở turn-boundary (1)
| Máy | Fire tự động? | Bằng chứng |
|---|---|---|
| `.claude/hooks/wal-flush.ps1` | ✅ **CÓ** — Stop-hook, mọi turn-boundary | `.claude/settings.json` khối `hooks` |
### M2 — máy được CỬA NGHI-THỨC gọi (18)
| Máy | Số cửa gọi | Máy | Số cửa gọi |
|---|---|---|---|
| `nhip-no-probe.ps1` | 6 | `governance-detectors.ps1` | 2 |
| `session_ctx.py` | 5 | `crystallized-backfill.ps1` | 2 |
| `tien-kiem-cua.ps1` | 4 | `session-scaffold.ps1` | 1 |
| `measure-agent-memory.ps1` | 3 | `session-counter-tick.ps1` | 1 |
| `distill-shard-probe.ps1` | 3 | `memory-archive-gate.ps1` | 1 |
| `stamp_verify.py` | 2 | `closeout-sentinel.ps1` | 1 |
| `spawn-model-audit.ps1` | 2 | `applied-eval-nokey.ps1` | 1 |
| `mfe-eval.ps1` | 2 | `agent-frontmatter-eol-check.ps1` | 1 |
| `memory-selfimprove-audit.ps1` | 2 | `h24-signal-write.ps1` | 2 |
🔸 **"Được cửa gọi" ≠ "fire vô điều kiện".** Nhiều máy nằm sau cổng nhịp hoặc cổng OVERDUE. Nấc này chỉ khai *có đường ghi tự động*, không khai *chạy mỗi phiên*.
### M3 — MỒ CÔI: có máy, KHÔNG cửa nào gọi (4)
| Máy | Trạng thái @S181 |
|---|---|
| `naming-scan.ps1` | 🔴 **mồ côi khi đo** → ✅ **ĐÃ WIRE** vào `session-end §L.b(k-ter)` cùng lượt |
| `artifact-integrity.ps1` | 🔴 **mồ côi khi đo** → ✅ **ĐÃ WIRE** cùng chỗ |
| `wal-recovery-test.ps1` | 🔴 **CÒN mồ côi** — máy kiểm thử phục hồi WAL, đúng bản chất là chạy tay khi nghi ngờ. Giữ mồ côi **CÓ KHAI** |
| `session_scaffold.py` | 🔴 **CÒN mồ côi** — nghi trùng với `session-scaffold.ps1` (đang được gọi). **Chưa xác minh**, không xoá theo phỏng đoán |
🔴 **Đây là phát hiện đắt nhất của W6.** Hai máy W1/W2 vừa dựng xong, chạy đúng, fault-inject có răng — **mà không cửa nào gọi**. Chúng chỉ sống khi có người gõ tay, nên hết phiên là hết chạy. Thang 2 nấc (*"có máy / không có máy"*) sẽ xếp chúng vào **CÓ** và ta yên tâm nhầm; đúng thứ A16 dựng nấc thứ ba để bắt.
### Lệnh đo lại (đừng tin bảng, chạy lại)
```bash
for f in scripts/*.ps1 scripts/*.py; do n=$(basename "$f");
case "$n" in deploy-*|backup-*|migrate-*|install-*|convert-*|deps-audit*|plan-*|parse_*|setup-*|rename-*) continue;; esac
echo "$(grep -rl "$n" .claude/commands/ .claude/hooks/ 2>/dev/null | wc -l)|$n"; done | sort -t'|' -k1 -rn
```

View File

@ -465,9 +465,25 @@ Gói ngữ-cảnh chuẩn (D-11) gồm **5 mảnh**. Mảnh nào chưa có ⇒ g
| 2 | lớp mềm mạch việc | `_mind-s-<N>.md` + `.claude/WAL.md` | ✅ |
| 3 | ký ức vai cắt theo trần | `hmw.js` memory-pack slice + `memory-budget.json` | ✅ |
| 4 | **sở thích thường trực** | `docs/governance/so-yeu-cau-chu-du-an.md` khối 2 | ✅ **MỚI CÓ @W4/S181** (trước đó là ❌) |
| 5 | **lời chủ nguyên văn ở lane DISPATCH** | — | 🔴 **THIẾU — chờ chủ dự án phán P7 vế (ii)**; rào `> anh:` hiện chỉ phủ lane LƯU TRỮ (`pause.md:53`), chưa phủ lane phát lệnh |
| 5 | **lời chủ nguyên văn ở lane DISPATCH** | **§O.3 dưới** (chủ dự án phán **P7 vế (ii)** @S181) | ✅ **MỚI CÓ @W5b/S181** |
**D-11 nay 4/5** (trước W4 là 3/5). Mảnh 5 là mảnh duy nhất còn thiếu, và nó **chặn W5b**.
**D-11 nay 5/5.** *(Lineage: 3/5 trước W4 → 4/5 sau W4 (mảnh 4 có nhà) → **5/5** sau P7(ii).)*
### O.3 — P7 vế (ii): LUẬT TRUYỀN NGUYÊN VĂN ở lane DISPATCH
> Chủ dự án phán @S181. 🔴 Đây là kỷ luật của **LEAD khi phát lệnh**, không phải yêu cầu chủ dự án đổi cách gõ.
**Ba khoản, bắt buộc cả ba:**
1. **RÀO `> anh:`** — lời chủ dự án đưa vào prompt của lane đắt phải nằm trong khối blockquote mở đầu bằng `> anh:`, để người/máy đọc prompt phân biệt được **lời chủ** với **diễn giải của lead**.
2. **ĐI NGUYÊN KHỐI** — chép **verbatim**, CẤM tóm tắt, CẤM paraphrase, CẤM cắt bớt cho gọn. Cần cắt vì quá dài thì để `...`**giữ con trỏ tới chỗ có bản đầy đủ**.
3. **KHAI THIẾU** — không có lời chủ cho việc đang phát lệnh ⇒ ghi đúng chuỗi **`(THIẾU — lý do)`**. 🔴 **CẤM dựng lại từ trí nhớ** rồi trình bày như thể đó là lời chủ.
🔴 **Vì sao vế này tồn tại — rào CŨ chỉ phủ MỘT NỬA.** Rào `> anh:` **đã có từ trước** ở [`pause.md`](../../.claude/commands/pause.md) — nhưng chỉ phủ lane **LƯU TRỮ** (ghi vào `_context` FLOW). Lane **DISPATCH** (đưa vào prompt vai đắt) **không có rào nào**. Đây là ca *phủ một nửa trông như đã phủ*: grep `> anh:` ra hit, nên nhìn qua tưởng có luật.
🧊 **Đính chính một khai sai chiều, giữ làm vết:** N1 từng khai *"SE chưa có rào `> anh:`"***sai**, rào có thật, chỉ sai **phạm vi**. Lane D §4b sửa lại. Bài: *"chưa có"**"có nhưng phủ nửa"* là hai chẩn đoán khác nhau và dẫn tới hai cách chữa khác nhau.
🔬 **Ca sống tự quy chiếu, ghi thẳng ra:** chính prompt phát cho lane D — cái lane phát hiện ra thiếu sót này — **chứa 0 khối `> anh:`**. Luật này ra đời từ một lượt vi phạm chính nó.
🔴 **Luật tổng (đây là phần D-12 thật sự thêm):** trước đây chỉ **1/5** mảnh có luật khai-thiếu (`pause.md:53`). Từ nay **cả 5** mảnh chịu chung luật: **thiếu thì khai, khai thì nêu lý do**. Một mảnh vắng mà không ai khai thì nó **trông y hệt một mảnh không cần thiết** — đó là lớp lỗi *vắng-mặt-trông-giống-ổn*.
@ -524,3 +540,49 @@ Chấm sai ⇒ ghi **tầng nào sai** + nhãn *chấm sai* vào [`error-ledger.
`luat:66` **CẤM in điểm khi nguồn chưa đủ dày**. Nguồn thưa thì máy **luôn** cho 10/10 (hub đã tự đo — `luat:65`) ⇒ in `10/10` ở lượt đầu là **vi phạm ngay luật vừa adopt**.
⇒ Khối chấm in **`KHÔNG ĐO ĐƯỢC`** cho tới khi sổ đủ dày, và giữ **INFORM-only ≥3 phiên** trước khi được phép ảnh hưởng bất kỳ cổng nào (lane F §4.2).
---
## PHẦN Q — PHÂN LOẠI CỜ chặn ⟂ cảnh-báo (P1 = PA-2, wave W3b) — S181 (🔴 FUNCTION-FLOOR)
> Chủ dự án chốt **P1 = PA-2** (hai mã thoát trong MỘT máy) @S180. Phần phân loại land @S181.
> 🔴 **CHƯA CẮM MÃ THOÁT.** Xem §Q.4 — điều-kiện-vào của W3b còn thiếu một vế.
### Q.1 — TIÊU CHÍ, lấy từ ranh ĐÃ CÓ (không chế mới)
`scripts/memory-archive-gate.ps1:323-325` đã dựng sẵn ranh và nó **đúng**, chỉ chưa ai nêu thành luật chung:
> *"Exit non-zero only on **A7 integrity failure** (broken pointer / 0-byte archive). **Over-cap is a FLAG (not an error)** — the gate reports, a human curates."*
**Luật tổng:**
| Nhóm | Nghĩa | Mã thoát |
|---|---|---|
| **TOÀN-VẸN** | con trỏ trỏ vào hư-không · vật chứng 0 byte · sổ và đĩa mâu thuẫn nhau | 🔴 **CHẶN** (`exit ≠ 0`) |
| **VỆ-SINH / LỆCH-SỐ / SỨC-CHỨA** | số dẫn-xuất cũ · tiêu đề chưa bump · vượt trần · từ-vựng rẽ nhánh | 🟡 **CẢNH BÁO** (`exit 0`) |
**Vì sao ranh nằm ở đây chứ không ở mức nghiêm trọng:** *nghiêm trọng* đo **hậu quả**, còn mã thoát quyết định **có chặn người lại không**. Chặn vì một con số cũ trong tài liệu = dạy người ta tắt máy. Chặn vì một con trỏ chết = đúng việc.
### Q.2 — Phân loại toàn bộ dân số cờ, đo 2026-08-07 (mẫu số **64/64**, không nén thành khoảng)
| Lớp cờ | Số | Bản chất | Mã thoát | Vì sao |
|---|---|---|---|---|
| `dangling-wikilink` | **25** | `[[tên]]` chưa có tệp đích | 🟡 cảnh báo | **Cố ý hợp lệ**: quy ước auto-memory cho phép liên kết tới trí-nhớ *chưa viết* — nó đánh dấu việc nên viết, không phải lỗi. Chặn = phạt đúng thứ quy ước khuyến khích |
| `derived-stale` | **18** | doc dẫn-xuất chở số cũ | 🟡 cảnh báo | Lệch-số, sửa bằng biên tập. Đây là thứ B1 (trỏ-canonical) chữa tận gốc; chặn không làm số mới đúng hơn |
| `H24-*` | **14** | soi-lead | 🟡 cảnh báo | **Đã là INFORM-only theo hợp đồng vai** (`KHÔNG vào TOTAL`). Nâng thành chặn = đổi hợp đồng vai, không phải đổi mã thoát |
| `vocab-fork` | **3** | 2 từ-vựng cùng sống | 🟡 cảnh báo | Nguy thật (2 tên cho 1 vật) nhưng **không mất dữ liệu**. Leo thang khi lặp, không chặn ngay |
| `title-stale` | **2** | tiêu đề chưa bump | 🟡 cảnh báo | Lệch-số thuần |
| `diary-0-delta` | **1** | nhật ký vai 0 delta | 🟡 cảnh báo | Tín hiệu *vai đang mù*, nhưng chưa phải mất mát đã xảy ra |
| `broken-gotcha-ref` | **1** | trích `#91` khi max là `87` | 🔴 **CHẶN** | **Con trỏ trỏ vào hư-không** — đúng định nghĩa A7 integrity failure ở Q.1. Đây là lớp DUY NHẤT trong dân số hiện tại đạt ngưỡng chặn |
**Tổng: 63 cảnh-báo · 1 chặn.** Tỷ lệ này **là kết quả, không phải mục tiêu** — nó phản ánh kho hiện sạch về toàn-vẹn và bẩn về vệ-sinh.
### Q.3 — 🔴 Vì sao 1/64 KHÔNG phải dấu hiệu tiêu chí quá lỏng
Cám dỗ ở đây là *"chặn có 1 cái thì cổng gần như vô dụng"* rồi nới tiêu chí cho nhiều cờ chặn hơn. **Đó là Goodhart.** Cổng chặn tồn tại để bắt **cái chết người**, không để chứng minh nó bận rộn. Nới ranh xuống lớp vệ-sinh sẽ tạo đúng thứ lane F cảnh báo: *8-12 lớp nợ tồn kêu cùng lúc ⇒ người tưởng máy hỏng rồi tắt máy* — và khi đó **cả cái cờ chặn thật cũng chết theo**.
### Q.4 — 🔴 CHƯA CẮM: điều-kiện-vào W3b còn thiếu một vế
Điều-kiện-vào W3b = **P1 đã chốt** (✅ PA-2, S180) **+ rider-jump W2 đã soak INFORM ≥1 phiên** (❌ **chưa** — W2 land 2026-08-07, cùng ngày).
⇒ Phân loại ở trên **đã xong và có thể cắm**, nhưng **mã thoát chưa được đổi ở bất kỳ máy nào**. Mọi máy governance **vẫn `exit 0`**. Cắm khi soak đủ; đây là chặn **tự tan theo thời gian**, không cần ai phán thêm.