# Tệp theo dõi — gói nâng cấp quy trình bảy giai đoạn (danh mục kiểm 20 khoản)

> Khoản **A0-2** của danh mục kiểm đòi *"một tệp trong kho bạn, liệt kê từng khoản của danh mục này, và bạn tick dần"*, với dấu hiệu adapt thiếu là *"theo dõi trong đầu, hoặc theo dõi trong một tin nhắn — cả hai đều bốc hơi"*.
> Nguồn khoản: `broadcasts/inbox/ai_infra/2026-08-04-Governance-upgrade-pack-phased-khuon-fit-map-report-checklist.md` **Phần C** (`:247-370`).
> Tệp anh em: [`adap-upgrade-pack-fitmap.md`](adap-upgrade-pack-fitmap.md) — bản đồ áp dụng bảy dòng.

**Vì sao tệp này nằm ở `docs/governance/` chứ không nằm trong thư mục lượt chạy.** Trước khi có tệp này, tiến độ của cả gói nằm trong `run.md` của một lượt chạy, mà một lượt chạy chỉ sống trong phạm vi một phiên. Đó đúng là dạng "theo dõi trong một tin nhắn" mà khoản A0-2 gọi tên: phiên sau mở ra sẽ không biết gói đang ở đâu. Tệp này sống lâu hơn phiên, nên mọi cập nhật tiến độ phải ghi vào đây chứ không ghi vào thư mục lượt chạy.

---

## §1 — Nấc theo TỪNG GIAI ĐOẠN (khoản A15)

Khoản A15 khuyến nghị **khai nấc theo từng giai đoạn**, không khai một nấc chung cho cả gói. Trước bảng này chưa ai làm việc đó cho gói.

Chuỗi nấc, theo đúng thứ tự của hub: **đã gửi → đã nhận → đã đồng ý → đã thi công → đã được kiểm chứng**.

| # | 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 | **đã 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: vá `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 ý*.

---

## §2 — Hai mươi khoản của danh mục kiểm

Mẫu số **20 khoản** = 4 khoản Phần 0 (`A0-1` `A0-2` `A0-3` `A0-4`) + 10 khoản Phần 1 (`A1` tới `A10`, liệt từng mã ở bảng dưới) + 6 khoản Phần 2 (`A11` tới `A16`, liệt từng mã ở bảng dưới). Khoản A12 cấm nén danh sách thành khoảng, nên bảng dưới liệt đủ hai mươi dòng, không dòng nào gộp.

Cột "Thuộc GĐ" lấy đúng nhãn giai đoạn mà hub gắn trong Phần C. Mười khoản `A1` tới `A10` đều mang nhãn *(GĐ-4)*; sáu khoản `A11` tới `A16` **không** mang nhãn giai đoạn nào vì chúng là kỷ luật báo cáo, áp cho mọi giai đoạn.

| Mã | Thuộc GĐ | Nấc hiện tại | Wave | Bằng chứng, lệnh, và phần còn nợ |
|---|---|---|---|---|
| A0-1 | GĐ-0 | đã đồng ý | W0 | Bốn món có mặt trên đĩa tại `broadcasts/inbox/ai_infra/`. Mã băm khớp bốn trên bốn, lệnh tái lập là `python scripts/stamp_verify.py broadcasts/inbox/ai_infra/2026-08-04-Governance-upgrade-pack-phased-*.md` với mã thoát 0. Chưa lên *đã thi công* vì vế thứ hai của khoản, tức ghi lại mã băm vào một sổ sống lâu hơn phiên, còn nợ. Cảnh báo bắt buộc dán kèm: phép băm tự chế cho kết quả LỆCH ở cả bốn món, nên ai kiểm lại mà không dùng đúng lệnh trên sẽ kết luận nhầm là nội dung bị sửa. |
| A0-2 | GĐ-0 | đã thi công | W0 | Chính là tệp này. Bằng chứng chạy được: `grep -c '^| A' docs/governance/adap-upgrade-pack-tracking.md` phải ra **20**, khớp số khoản của danh mục kiểm. |
| A0-3 | GĐ-0 | đã đồng ý | W0 | Chủ dự án đã chốt câu P6 theo đường mở phạm vi INBOUND cho cả thư phát đại trà, cộng thêm chứ không gỡ 22 dòng đang sống. Đo đĩa đúng lúc viết dòng này, ngày 2026-08-07: `grep -c "upgrade-pack-phased" broadcasts/_index.md` ra **0**; control dương `grep -c "harness-22"` ra **3** và `grep -cE "^\| "` ra **94**, nên im lặng là im lặng thật chứ không phải thước hỏng. Lane b đang thi công phần bù dòng; người đọc sau phải **đo lại**, đừng tin con số trong dòng này. Lỗ thật rộng hơn gói này: 24 lá thư trong hộp thư chưa có dòng trong sổ, trên mẫu số 69 lá trên đĩa. |
| A0-4 | GĐ-0 | đã thi công | W0 | `docs/governance/adap-upgrade-pack-fitmap.md`. Bằng chứng chạy được: `grep -c '^| GĐ-[0-6]' docs/governance/adap-upgrade-pack-fitmap.md` ra **7**; chạy đúng lệnh đó trên tệp khuôn của hub ra **14**, đây là control dương cho chính cái bẫy mẫu số mà hub cảnh báo. Bảy ô quyết định đều mang đúng một trong ba giá trị, đếm lại bằng awk ra 7 trên 7, không ô nào trống. |
| A1 | GĐ-4 | đã đồng ý | W4 | ✅ **ĐÃ LAND @W4/S181** — `docs/governance/so-yeu-cau-chu-du-an.md` (8.315 B, đủ 3 khối). 🧊 *Câu cũ:* "Sổ ba khối chưa tồn tại:" khối lời-phàn-nàn trống tuyệt đối, đo bằng phép tìm `sở-thích` và `phàn nàn` ra 0 hit với control dương là cụm "điểm dừng" ra 5 tệp. Câu P2 đã chốt phương án PB-2, tức tách sổ yêu cầu khỏi WAL, nên khoản lên *đã đồng ý*. Nợ kèm theo P2: phải sửa luật đã ratify ở `tiep.md:181`. Ràng buộc chống bẫy: cột lời nguyên văn chỉ nhận chữ chủ dự án gõ từ thời điểm dựng sổ; dữ liệu cũ đi phụ lục riêng. |
| A2 | GĐ-4 | đã đồng ý | W4 | Kỷ luật ghi ngay, cắm vào tệp luôn được nạp mỗi lượt, và cấm cắm vào tệp lệnh của một cửa. ✅ **ĐÃ CẮM @W4/S181** — `CLAUDE.md` §Sổ yêu-cầu (`grep -c -i "ghi ngay"` = **2**) + `docs/rules.md §6.0`. 🧊 *Câu cũ: "luật thì chưa có. CHƯA ĐO"* — cần đo SE có cắm luật ghi-ngay vào bề mặt tự động nạp hay không, lệnh: `grep -n "ghi ngay\|ghi NGAY" CLAUDE.md .claude/auto-memory/MEMORY.md` kèm control dương là một cụm chắc chắn có trong hai tệp đó. |
| A3 | GĐ-4 | đã đồng ý | W4 | Tra sổ trước khi hỏi, phải tìm được ở tối thiểu hai chỗ. ✅ **ĐÃ ĐỦ HAI CHỖ @W4/S181** — `grep -c "viện dẫn"`: `CLAUDE.md` = **1** · `docs/rules.md` = **1**. 🧊 *Câu cũ: "Hiện chưa có; auto-memory 0 hit"*, control dương là cụm "How to apply" ra 48 trên 61 tệp. Wave W4 cắm vào `CLAUDE.md` và `docs/rules.md` cho đủ hai chỗ. |
| A4 | GĐ-4 | **đã thi công** | W3 và W4 | Đèn nợ ở **mọi** điểm dừng, liệt từng cửa chứ không ghi gộp. ✅ **Bảng 19 cửa ĐÃ DỰNG @W3**, liệt từng dòng, sống ở [`sub-w3-nghi-thuc.md` §1.2](../../.claude/workflows/runs/2026-08-07-S180-adap-upgrade-pack-phased/sub-w3-nghi-thuc.md) — số đo tại đó: **5/19** có tiền kiểm trước W3 (không phải 4/19 như bản trước ghi; chênh vì `snapshot` đóng từ 🟡 sang CÓ), **9/19** sau W3. ✅ **Hai số liệu ĐÃ NỐI vào máy dò @W4**: `nhip-no-probe.ps1` in vế `so-yc treo <n> / nhac2+ <m>`. ✅ **Nợ nặng nhất của khoản này ĐÃ TRẢ**: máy nay **phân biệt** `chua-co-du-lieu` (sổ vắng/rỗng ⇒ phép đo không tồn tại) với `treo 0` (đã đọc n dòng, đếm ra 0) bằng **hai chuỗi khác nhau** — fault-inject 5/5 @S181. Đó đúng là "đèn xanh giả" mà hub gọi tên. 🧊 *Bản trước dòng này viết cả ba vế ở thì tương lai và sống nguyên 1 wave sau khi đã xong — site thứ 2 của cùng một mệnh lệnh cũ, bắt @S181 bằng grep lại với lệnh khác.* |
| A5 | GĐ-4 | đã đồng ý | W4 | Định nghĩa thành văn cho "hỏi lại không kèm thông tin mới". Nội dung sàn đã rõ: hỏi lại mà không viện dẫn được thông tin mới là vi phạm; hỏi lại kèm nguồn trích được là kỷ luật đúng. ✅ **ĐÃ THÀNH VĂN @W4/S181** — `CLAUDE.md` §Sổ yêu-cầu chứa nguyên chuỗi "Định nghĩa A5". 🧊 *Câu cũ: "SE chưa có văn bản nào chứa định nghĩa này."* |
| A6 | GĐ-4 | đã đồng ý | W4 | Lằn ranh đỏ phải **liệt kê từng loại**, cấm mô tả bằng tính từ. ✅ **ĐÃ GOM @W4/S181** — `so-yeu-cau-chu-du-an.md` `ST-001` liệt **đúng 7 loại**, cấm tính từ. 🧊 *Câu cũ: "nằm rải 61 tệp auto-memory, chưa gom"* Wave W4 dựng mục mồi ST-001 liệt bảy loại: đổi lược đồ dữ liệu, xoá dữ liệu, việc hướng ra ngoài, việc không lùi được, việc dính tiền, đổi cơ chế quản trị, đổi số nhịp hoặc ngân sách. |
| A7 | GĐ-4 | đã nhận | W4b | Chấm điểm trải nghiệm phải tách hẳn khỏi phép đo kỹ thuật, và công thức trừ theo MỤC chứ không theo lần. SE hiện **vắng hoàn toàn**: phép tìm cụm "chấm điểm" ra 0 hit với control dương 3 tệp. Giữ ở nấc *đã nhận* vì việc in khối chấm ở hai cửa phiên còn **chờ câu P8** — nghi thức hai đầu phiên là vật chủ dự án đã chốt. |
| A8 | GĐ-4 | đã đồng ý | W4b | Ba tầng đếm: người điều phối tự chấm, một vai khác đếm lại độc lập, một vai thứ ba kiểm phép đếm mà cấm chấm lại. Câu P4 đã cho phép đẻ vai mới và nâng trần bề rộng từ 20 lên 30, nên khoản lên *đã đồng ý*. Hai món nợ đi kèm, không được quên: vai mới phải được seed đường cơ sở `measured{}` kẻo thành vai mù; và **tỉ lệ phủ sóng CHƯA ĐO** — chưa có tỉ lệ đó thì luật của hub bắt in "KHÔNG ĐO ĐƯỢC" và **cấm in điểm**. |
| A9 | GĐ-4 | đã nhận | W4b | Niêm phong bằng im lặng chỉ hợp lệ khi đủ ba mốc thời gian: lúc phát điểm, lúc hiển thị lại ở cửa chủ dự án chắc chắn đọc, và tin đầu tiên của chủ dự án sau lần hiển thị lại. Thiếu mốc ba thì trạng thái là *chờ niêm phong*, không phải *đã niêm phong*. Chưa ai chạm khoản này. Giữ nấc *đã nhận* vì nó nằm trong khối chấm điểm đang chờ câu P8. |
| A10 | GĐ-4 | đã nhận | W4b | Khoản này có hai vế. Vế phép thử SE đã có máy thật: đẩy một nhãn lớp lỗi lạ vào máy cảnh báo thì `h24-signal-write.ps1` từ chối với mã thoát 2 và thông điệp rằng một vai giám sát không được tự chế lớp. Vế quy trình, tức khi chủ dự án điều chỉnh điểm thì xác định tầng nào sai rồi ghi vào nhật ký của vai đã sai, thì chưa thành văn. Giữ nấc *đã nhận* vì **chờ câu P3**: hub đòi tập tín hiệu phải từ chối lớp mới, còn SE đang cố ý mở tập đó theo tiền lệ chủ dự án ở phiên S143. Đây là xung đột triết lý thứ hai của cả gói. |
| A11 | xuyên GĐ | đã đồng ý | mọi wave | Mọi con số trong văn xuôi phải neo nguồn, không neo được thì bỏ số và viết định tính. Bằng chứng áp trong wave W0: mọi tỉ lệ trong bản đồ áp dụng đều kèm mẫu số và kèm con trỏ nguồn. Chưa lên *đã thi công* vì nghiệm thu của khoản này gắn với bản báo cáo gửi hub, mà báo cáo chưa tồn tại. |
| A12 | xuyên GĐ | đã đồng ý | mọi wave | Liệt kê từng mục, cấm nén thành khoảng. Bằng chứng áp trong wave W0: ô lý do của dòng GĐ-0 liệt đủ chín mã khoản thiếu và ba mã khoản sai khuôn thay vì viết một khoảng; bảng ở mục 2 của tệp này liệt đủ hai mươi dòng. Danh sách rỗng thì phải ghi thẳng là danh sách rỗng, không bỏ trống. |
| A13 | xuyên GĐ | đã đồng ý | mọi wave | Mỗi khoản đánh dấu không-áp-dụng phải kèm lý do cụ thể. Ca duy nhất hiện có là TC-03 trong giai đoạn 5, và lý do của nó là một phép đo chạy lại được: **28/28** persona pin `model: opus` **và 28/28** pin `effort: max`; mẫu số = **29 tệp** trừ `README.md` = **28** *(🧊 "26/26 · mẫu số 27" là ảnh chụp TRƯỚC khi 2 vai W4b land)*, control âm là phép liệt kê mọi giá trị của trường `model:` chỉ trả về đúng một dòng. |
| A14 | xuyên GĐ | đã đồng ý | mọi wave | Chỗ chưa biết thì ghi "chưa đo được", không ghi "xong". Hub tự nhận đây là lớp lỗi đắt nhất của cả năm. Bằng chứng áp trong wave W0: mọi ô chưa đo trong tệp này đều mang chữ CHƯA ĐO kèm lệnh cần chạy, và mục 3 dưới đây gom lại thành danh sách. |
| A15 | xuyên GĐ | đã thi công | W0 | Ba nấc *đã đồng ý*, *đã thi công*, *đã được kiểm chứng* là ba thứ khác nhau; nấc phải khai theo từng giai đoạn. Trước wave này chưa ai khai nấc theo từng giai đoạn cho gói. Bằng chứng chạy được: bảng bảy dòng ở mục 1 của tệp này, mỗi giai đoạn một nấc riêng, kèm luật cấm tự khai nấc cuối. |
| A16 | xuyên GĐ | đã đồng ý | W6 | Với mỗi cưỡng chế tuyên là đã có, phải ghi rõ nó chạy bằng máy hay bằng tay. Phát hiện của SE làm khoản này chặt hơn chữ hub: thang hai nấc máy-hoặc-tay là thang hỏng, phải tách ba nấc, vì SE có đúng **1** máy tự bắn thật, 17 máy chỉ chạy khi một nghi thức gọi tới, và 3 script mồ côi. Phép kiểm kê máy của chính SE cũng đang chạy bằng trí nhớ: danh sách "máy đã biết" liệt 14 trong khi đĩa có 21, thiếu 7. Bảng A16 hợp nhất chưa có, dựng ở wave W6. |

---

## §3 — Khoản CHƯA ĐO, kèm lệnh cần chạy

Ghi ra thành danh sách có tên thay vì im lặng, theo đúng khoản A14. Danh sách này không rỗng.

- **A2 — chỗ cắm kỷ luật ghi ngay.** Chưa ai đo SE có cắm luật ghi-ngay vào bề mặt tự động nạp mỗi lượt hay không. Lệnh: `grep -n "ghi ngay\|ghi NGAY" CLAUDE.md .claude/auto-memory/MEMORY.md`, kèm control dương bằng một cụm chắc chắn có trong hai tệp đó.
- **A4 — tập cửa dừng thật.** ✅ **ĐÃ DỰNG @W3, xong 2026-08-07.** Bảng 19 cửa liệt **từng dòng** sống ở [`runs/2026-08-07-S180-adap-upgrade-pack-phased/sub-w3-nghi-thuc.md` **§1.2**](../../.claude/workflows/runs/2026-08-07-S180-adap-upgrade-pack-phased/sub-w3-nghi-thuc.md) — 19 dòng đánh số, **0 cửa còn treo**. Số đo tại đó: **5/19** có tiền-kiểm TRƯỚC W3 (không phải 4/19 như bản trước ghi — chênh vì `snapshot` được đóng từ 🟡 sang CÓ), **9/19** sau W3. 🧊 *Câu cũ ở dòng này là mệnh-lệnh "dựng bảng 19 cửa ở wave W3" — giữ vết: nó sống nguyên 1 wave sau khi bảng đã dựng xong, và không trỏ tới đâu (dry-run @S181 bắt, class `view-stale-status`).*
- **A8 — tỉ lệ phủ sóng.** Bao nhiêu tin của chủ dự án đã được bắt vào nguồn đếm, trên tổng số tin thật. Chưa có vật tương đương ở SE nên chưa xác định được mẫu số. Chừng nào chưa có tỉ lệ này thì khối chấm điểm **phải in "KHÔNG ĐO ĐƯỢC"** và cấm in điểm.
- **A16 — ba script mồ côi và bảng hợp nhất.** Đã có kết luận từng script, nhưng bảng bốn ô cho từng cưỡng chế thì chưa dựng.
- **Điều kiện vào giai đoạn 6, vế đếm.** Bốn khoản của giai đoạn 6 còn ở trạng thái chưa đo: bài kiểm ghim tên hay ghim số; tỉ lệ phiên đi đường Workflow so với đường Agent; hai vế còn lại của điều kiện vào danh sách; và tần suất của triệu chứng TC-07, mà SE **không tồn tại dụng cụ** để đếm.

---

## §4 — Lệnh tự kiểm của tệp này

```bash
# Số khoản phải khớp số khoản của danh mục kiểm Phần C. Phải ra 20.
grep -c '^| A' docs/governance/adap-upgrade-pack-tracking.md

# Nấc khai theo từng giai đoạn — phải ra 7 dòng, mỗi giai đoạn một nấc.
awk -F'|' '/^\| [0-6] \|/{print $2" -> "$4}' docs/governance/adap-upgrade-pack-tracking.md

# Không dòng nào được tự khai nấc cuối. Phải ra 0.
grep -c 'đã được kiểm chứng *|' docs/governance/adap-upgrade-pack-tracking.md
```

## §5 — Luật cập nhật tệp này

1. **Cập nhật tiến độ ghi vào đây, không ghi vào thư mục lượt chạy.** Thư mục lượt chạy chết theo phiên; đó là lý do tệp này tồn tại.
2. **Cấm nhảy cóc nấc.** Muốn ghi *đã thi công* thì phải dán được một lệnh mà người khác chạy lại ra cùng kết quả. Không dán được thì nấc dừng ở *đã đồng ý*.
3. **Nấc *đã được kiểm chứng* chỉ hub cấp.** Trong kho SE, ô đó luôn để trống cho tới khi hub soi bằng chứng thật và trả lời.
4. **Mỗi lần một câu chờ chủ dự án được trả lời, sửa đúng dòng khoản liên quan** và ghi ngày. Bốn câu còn treo tính tới ngày 2026-08-07 là P3, P5, P7 và P8.

## §6 — Chỗ SE làm KHÁC hoặc MẠNH HƠN sàn (khai để báo hub — W5/S181)

> 🔴 **CẤM viết *"đã được kiểm chứng"*** ở bất kỳ dòng nào dưới đây. Nấc đó chỉ hub cấp. Ở đây chỉ khai **đã làm gì** và **đo được gì**.

| # | 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 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 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 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ố + 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` **PHẦN O.2**; D-11 nay **5/5** sau P7(ii) |

🔸 **Ô 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 script governance + 1 hook = 24 máy** *(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 (20)

| 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 (3 — sau khi wire 2 máy)

| Máy | Trạng thái @S181 | Xác minh @S185 (C-10) — `wire-or-khai` |
|---|---|---|
| `seed-test-users-prod.ps1` | 🔴 **MỒ CÔI, mới lộ @S181** — 0 cửa gọi, và **lọt bộ-lọc loại-trừ** ở đầu §7 (`seed-*` không có trong danh sách) ⇒ theo chính luật của tệp này nó **phải** có mặt. Bản đầu bảng M3 thiếu dòng này | **KHAI, không wire.** 0 cửa gọi (đo lại, lệnh ở cuối mục). Bản chất = script **vận-hành sản-phẩm** (seed user test vào DB prod, chạy tay lúc triển khai — `docs/changelog/sessions/2026-05-13-2200-s22-chot-cuoi.md:147,280`), không phải máy governance. 🔴 **KHÔNG nới bộ-lọc**: thêm `seed-*` sẽ kéo **mẫu số 24→23** = đổi số đã đo và đã gửi hub ⇒ quyền lead/chủ dự án |
| `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** | **KHAI, không wire — trạng thái @S181 ĐỨNG.** 0 cửa gọi (đo lại). Bộ 4-ca/30-assert dùng để *chứng* defect-fix (`adap-reports/2026-07-13-Governance-harness-22-wal-defect-fix.md:14`), không phải nghi-thức định kỳ ⇒ wire vào bookend = trả chi phí thường-trực cho máy chỉ hữu ích khi có nghi vấn |
| `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 | 🔴 **Ô bên trái nay STALE — nghi-trùng ĐÃ XÁC MINH, bằng vật của chính wave S181.** `naming-standard.md:161` (W1): *"Fork thật duy nhất … TRÙNG KHÁI NIỆM, hai bản sinh tên đầu ra giống hệt, cả hai hard-pin, 0 nguồn chung"*; đã có mã + disposition **M-10** (`:253`) / **N-6** (`:271` → *"hợp nhất là đổi mã, không phải đổi tên"*, xếp W2). Nó **không chết hẳn**: `:200` đếm `session_scaffold.py:105` là **1 trong 4 site hard-pin** hình dạng `session-<N>`. Lai lịch = **port near-verbatim từ hub** (`session_scaffold.py:4`, adopt S148). ⇒ **Mồ côi CÓ CHỦ ĐÍCH** (giữ đối-chiếu hub) — **KHAI, không wire, không xoá** |

🔸 **`naming-scan.ps1` + `artifact-integrity.ps1` ĐÃ CHUYỂN SANG M2** (wire `session-end §L.b(k-ter)` cùng lượt) — giữ tên ở đây sẽ thành *"số máy TỪNG mồ côi"* ⟂ *"số máy ĐANG mồ côi"*, đúng lớp lỗi mà bảng ba nấc sinh ra để chặ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ệch số phải khai (phát hiện @S185, C-10):** báo cáo cuối đã gửi hub ghi *"**2 mồ côi còn lại**"* (`adap-reports/upgrade-pack-phased-bao-cao-cuoi.md:64`), bảng này ghi **3**. Bảng đúng — `seed-test-users-prod.ps1` lộ **sau** khi câu tổng-kết của báo cáo đã viết (chính dòng của nó tự khai *"Bản đầu bảng M3 thiếu dòng này"*). Câu trong **bản đã gửi** vì thế là vật STALE; erratum ra hub = quyết định của lead, **không sửa lén bản đã gửi**.

🔸 **Thước "0 cửa gọi" có răng — positive-control @S185:** cùng một lệnh chạy trên 4 máy ĐANG được gọi ra `nhip-no-probe.ps1` **7** · `memory-archive-gate.ps1` **3** · `artifact-integrity.ps1` **2** · `naming-scan.ps1` **1**, trúng đúng cửa mà M2 khai ⇒ **0-hit của 3 máy M3 là vắng-mặt THẬT**, không phải thước hỏng. Lệnh:

```bash
git grep -l -F "<tên script>" -- '.claude/commands' '.claude/agents' '.claude/hooks' \
        '.claude/settings.json' '.github' 'hmw.js' | wc -l
```

### 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
```
