[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

@ -1,40 +1,33 @@
# WAL — auto-generated, không sửa tay
updated: 2026-08-07 | session: S181 (L12, window-2 qua /tiep) | branch: main
goal: adap gói nâng cấp 7 GĐ (4 thư 120KB) — N0-N4 + W0/W1/W2/W3 ĐÓNG; W4/W5 bị chặn bởi P2
goal: adap gói nâng cấp 7 GĐ (4 thư 120KB) — **10/10 wave đã chạy**; còn 1 cổng soak + 2 khoản W6
chain:
- [x] bookend @open 5 vòng 8 vai — H1 PWF-9 · H2 GATE-FAIL-7 · ring1 32Đ/6T · stale 15 · gap 6 · ring2 21Đ/0T | `runs/2026-08-07-S180-bookend-open/bookend-open-synthesis.md`
- [x] slot (73) ĐÓNG — 3 vai STYLE ALIVE | `sub-spawn-probe-style-S180.md`
- [x] N0-N4 | `wave-plan-S180.md` (7 wave + 3 sub gated, 0 loại)
- [x] **W0** GĐ-0 | `docs/governance/adap-upgrade-pack-{fitmap,tracking}.md` + `_index.md` 45->69 dòng, 24/24 hash OK, VẮNG=0
- [x] **W1** GĐ-1 | `docs/governance/naming-standard.md` + `scripts/naming-scan.ps1`, fault-inject 4/4 BA chiều, 0 tên bị đổi
- [x] **W2** GĐ-2 | `scripts/artifact-integrity.ps1`, **CA-N1 BẮT** bằng 2 vị từ độc lập => ô nghiệm thu 4 của hub ĐÓNG
- [x] **W3** GĐ-3 | `docs/governance/ritual-labels.md` + `scripts/tien-kiem-cua.ps1`, tiền-kiểm 5/19->9/19, 4 persona-B vá
- [x] 3 nợ máy-bắt trả sạch | `run-chua-gom 0` + V-3 S180=0 + stray class-S54=0 (control-dương: 33 folder khác vẫn kêu)
- [x] C2 seed on-behalf 6 vai INFORM-only | `grep -c S180` = 1 mỗi vai, moji=0
- [x] **P2 = PB-2 THI HÀNH đủ 2 SITE** @S181`tiep.md §3-bis` (ranh REQUEST⟂TASK + lý-lẽ + lineage, canonical) + `pause.md` bước 6 (B1 chỉ TRỎ). Câu cấm sàn-3 GIỮ NGUYÊN, chỉ thêm ranh đọc
- [x] **W4 GĐ-4 XONG** | `docs/governance/so-yeu-cau-chu-du-an.md` 3 khối + mã YC/ST/PN vĩnh viễn (6 YC · 2 ST mồi · PN trống-có-khai) + phụ-lục "suy ra" · config: `tiep_reload.sources` 8→9 + khoá `owner_request_verbatim_char_cap` · máy dò vế-5 `so-yc treo/nhac2+` **fault-inject 5/5** (`chua-co-du-lieu``treo 0` PHÂN BIỆT) · kỷ luật ghi-NGAY/tra-trước-khi-hỏi + A5 cắm `CLAUDE.md` (+1109B) + `rules.md §6.0`, KHÔNG cắm vào commands
- [x] **W5 GĐ-5 XONG** | vá `spawn-model-audit.ps1` 4 vế (chọn phiên KHÔNG lọc hình-dạng · quét CẢ 2 đường · KHAI khi phiên đo ≠ mới nhất · in mẫu số) — **trước vá máy thấy 0 lane trên 5 phiên gần nhất, sau vá S180 = 24/24**, fault-inject 2 chiều · **D-3** `hmw.js` sentinel `MODEL_INHERIT` (hết undefined-im-lặng, 0 nhánh) · **D-10/D-12**`harness-11-engine` PHẦN O (D-11 nay **4/5**, mảnh 5 = P7(ii)) · **§6** khai làm-KHÁC/mạnh-hơn 5 dòng
- [x] **đợt-2 owner chốt 5/6 câu @S181** | `owner-decisions-07-08-2026-dot-2.md` — P3=**B hub-ĐÓNG** · P5=**gật nguyên văn** · P7=**vế(i) gật, vế(ii) TREO** · P8=**"đội đầy đủ khi chạy OK"** (tần suất=quyền anh, KHÔNG tích nợ) · cột status=**b tách 2 cột** · baseline=**b tách file dữ-liệu**
- [x] **W3 acceptance 6/6 ĐÓNG @S181** (phiên SAU restart — cửa sổ S180 không có): lớp-B `PROBE-B: 12 class = 6 view + 6 gap` đếm-từ-tệp · lớp-C 6/6 cửa `tien-kiem` exit 0 + `/adap-apply` dry nạp CÓ BƯỚC 0 · 4 vị-từ §2.1 chạy thật + control-âm 0 · bảng 19 cửa ĐỦ 19 dòng (5 ô CÓ khớp 5/19 độc lập). Defect con-trỏ (`view-stale-status`) vá 3 chỗ: `ritual-labels:138`+`:150`+`tracking:67`
- [x] **THI HÀNH 5/6 khoản đợt-2 @S181****P5** `ACTIVE-MARKS §LT3` + mark `RC-…-07-08-2026-20-57-48` (3 bậc, ranh = tính PHÁ HUỶ) · **khoản 6** `scripts/naming-baseline.json` NGUỒN + script chỉ đọc, **fault-inject 6/6 hai chiều**, 0 byte non-ASCII, exit 0, 7/7 baseline xanh · **P7(i)** `docs/governance/expensive-runs-view.md` derive-view 5 cột + khai 3 giới-hạn · **khoản 5** `_index` +cột `áp` cuối hàng, backfill **42 áp/4 chưa/23 n-a = 69**, 69/69 dòng 12-trường · **P3=B** niêm phong `_sealed_P3B_S181` (forward-only)
- [x] **W4b GĐ-4 XONG (P8+P4)** | luật chấm điểm = `harness-11-engine` **PHẦN P** 5 khoản BẤT BIẾN (công thức trừ theo MỤC · nguồn đã ký · 4 tầng ranh cứng · 3 mốc · đường ghi lại) · khối chấm wire **2 cửa** (`session-start §2.1.10` + `session-end §L.b(k-bis)`) kèm rào `KHÔNG ĐO ĐƯỢC` + INFORM-only ≥3 phiên + tách *đủ-khi-chạy**tần-suất=quyền-anh CẤM tích nợ* · **P4**: cap 20→**30** đủ 2 mirror ⇒ **slot (75) ĐÓNG** (28 vai ≤ 30, hết LOUD-skip) + 2 vai `score-counter`/`score-count-auditor` + seed `measured{}` + **thư mục nhật ký** (máy soi tên bắt lead seed nửa vời)
- [ ] 🔸 2 KHAI THẲNG: (a) acceptance W4 ô-1 `grep -c '^ST-'`=**0** vì sổ dạng BẢNG, đếm đúng dạng=**2** — regex giả-định layout phi-bảng (`acceptance literal tự-lão-hoá`), KHÔNG bẻ bảng chiều regex · (b) 🔄 **ĐÍNH CHÍNH @S181:** lead viết "2 vai mới chỉ ăn từ RESTART kế" — **SAI**, runtime đăng ký NGAY, spawn-probe chạy được trong cùng phiên. 2 bề-mặt đều khớp (registry SỐNG · `VALID_ROLES` 28=28 đĩa). Khối chấm ở 2 cửa **vẫn** cần restart (command `.md` no hot-reload) — đừng gộp 2 thứ
- [ ] **W3b** — P1=PA-2 xong nhưng còn điều-kiện *rider-jump W2 soak INFORM ≥1 phiên* (W2 land hôm nay ⇒ CHƯA đủ tuổi; chặn tự tan). Việc: phân loại ~70 cờ từng cái
- [~] **W6 PHẦN LÕI XONG (anh chốt "đồng ý stamp - ký tên" @S181)** | `adap-reports/upgrade-pack-phased-bang-goc.md` **12/12 TC** · 4 ô GIỮ CHỮ hub đúng chỗ · **0** tự phong nấc trong bảng · RC `RC-…-07-08-2026-21-42-10` ghi rõ **phạm vi ký = phần ĐÃ THI CÔNG**, W3b/W5b(ii) khai NGOÀI phạm vi · **mutation-test E-9 ĐẠT** (nền 0 → bỏ 1 tên → **2** đỏ mới → trả lại 0). CÒN: cổng đồng-bộ 4 tầng · bảng A16 21 dòng · báo-cáo cuối khuôn B
- [ ] 🔴 **W5b vế (ii) CHẶN — chờ anh P7(ii)** (luật truyền nguyên-văn vào prompt lane đắt) · **W3b** chờ soak ≥1 phiên
- [x] S180: bookend @open 5 vòng 8 vai · N0-N4 (`wave-plan-S180.md`) · **W0·W1·W2·W3** · 3 nợ máy-bắt trả sạch
- [x] **/tiep @S181** — Sàn-3 5/5, ORPHAN-L `session-12` = pause đang nối; ctx-verifier `CO — 13 cờ`, cờ-3 cứu P2 khỏi sửa nửa vời
- [x] **đợt-2: anh chốt 6 câu + thi hành** | `owner-decisions-07-08-2026-dot-2.md` — P3=**B đóng-tập** (`_sealed_P3B_S181`; A10 fault-inject exit 2/0) · P5=**nguyên văn** (`ACTIVE-MARKS §LT3` + `RC-…-20-57-48`) · P7(i)=`expensive-runs-view.md` · P8=**đội-đủ-khi-chạy OK** · status=**b 2 cột** (`_index` 42/4/23=69) · baseline=**b file dữ-liệu** (fault-inject 6/6)
- [x] **P2 = PB-2 đủ 2 SITE**`tiep.md §3-bis` (ranh REQUEST⟂TASK + lineage, canonical) + `pause.md` b6 (B1 chỉ TRỎ)
- [x] **W3 acceptance 6/6** (phiên SAU restart) — lớp-B `12 class = 6 view + 6 gap` đếm-từ-tệp · lớp-C 6/6 cửa + `/adap-apply` dry có BƯỚC 0 · 4 vị-từ chạy thật + control-âm · defect con-trỏ bảng-19-cửa vá 3 chỗ
- [x] **W4** | `so-yeu-cau-chu-du-an.md` 3 khối + mã YC/ST/PN vĩnh viễn + phụ-lục "suy ra" · `tiep_reload.sources` 8→9 + `owner_request_verbatim_char_cap` · máy dò vế-5 (`chua-co-du-lieu``treo 0`, fault-inject 5/5) · A5 + ghi-NGAY cắm `CLAUDE.md` + `rules.md §6.0`
- [x] **W4b** | luật chấm điểm `harness-11-engine PHẦN P` 5 khoản BẤT BIẾN · khối chấm 2 cửa + rào `KHÔNG ĐO ĐƯỢC` + INFORM ≥3 phiên · cap 20→**30** đủ 2 mirror ⇒ **slot (75) ĐÓNG** (28 vai ≤ 30) · 2 vai tầng-2/tầng-3 + seed `measured{}` + nhật ký
- [x] **W5** | vá `spawn-model-audit` 4 vế — **trước vá 0 lane / 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 · §6 khai làm-KHÁC
- [x] **W5b** | vế(ii) luật truyền-nguyên-văn lane DISPATCH → `§O.3`**D-11 5/5** · vế-6 `VANG-DAT` mức CAO NHẤT, fault-inject phân biệt đúng; đo thật **54/88 lượt đắt · 4 VANG-DAT**
- [x] **W3b phân loại 64/64** | `PHẦN Q` — tiêu chí lấy từ ranh CÓ SẴN `memory-archive-gate:323-325`; **63 cảnh-báo + 1 chặn** (`broken-gotcha-ref`)
- [x] **W6 lõi** | bảng gốc **12/12 TC** + 4 ô GIỮ CHỮ + **0** tự phong nấc · RC `RC-…-21-42-10` khai rõ **phạm vi ký** · mutation-test **E-9 ĐẠT** (0 → 2 đỏ mới → 0) · bảng A16 3 nấc (23 máy) · bảng nấc §1 lật 7/7 GĐ
- [x] 🔴 **W6 bắt được lỗ đắt nhất:** `naming-scan` + `artifact-integrity` **MỒ CÔI 0 cửa gọi** (dựng xong, chạy đúng, không ai bấm) → ĐÃ WIRE `session-end §L.b(k-ter)`; 2 mồ côi còn lại giữ CÓ KHAI
- [ ] 🔴 **W3b CẮM MÃ THOÁT** — chờ *rider-jump W2 soak INFORM ≥1 phiên* (W2 land 08-07 cùng ngày). Chặn **tự tan**, phiên sau cắm được; phân loại đã sẵn
- [ ] **W6 còn 2 khoản:** cổng đồng-bộ 4 tầng (trace xuôi/ngược + đối chiếu 3 chiều) · báo-cáo cuối khuôn B 10 mục → anh duyệt → gửi hub
next: thi hành P2 (2 SITE) -> W4 -> W5. Thư hub 08-07 ĐÃ đọc + đã tính vào quyết-định đợt-2. Việc rời chờ xếp: 6 khoản đã chốt (P3-đóng-tập + phép-thử-A10 · P5-vào-ACTIVE-MARKS · P7(i)-expensive-runs-view · P8-wire-2-cửa · _index-tách-2-cột · baseline-ra-file-dữ-liệu)
🔴 P2 = **2 SITE** (`spec:61`): `tiep.md:181` **+ `pause.md:115`** — cả 2 mang CÙNG câu "CẤM tạo file checklist nguồn-đôi (sàn-3)". Sửa 1/2 ⇒ W4 mở nhưng `/pause` VẪN chặn. WAL cũ + `_mind` B + `_context`:56 chỉ chở site-1 (ctx-verifier cờ-3, lead xác minh bằng mắt @S181).
next: cắm mã thoát W3b khi soak đủ → cổng đồng-bộ 4 tầng + báo-cáo cuối khuôn B → anh duyệt → gửi hub. Nấc *đã được kiểm chứng* **chỉ hub cấp**, CẤM tự flip.
verify:
- `powershell -File scripts/naming-scan.ps1` | `scripts/artifact-integrity.ps1` | `scripts/tien-kiem-cua.ps1`
- `python scripts/session_ctx.py mind-check --session 12` => dat=10 TRUOT=0 exit 0
- thu-moi @S181: se=0 all=**1 MỚI** `2026-08-07-Governance-nghi-thuc-hai-dau-nhip-thua-va-luu-nguyen-van.md` (11.749B, **0 tham chiếu toàn repo**; control-dương: pack 08-04 = 10 ref). Nội dung chạm **P5 + P8** ⇒ đọc TRƯỚC khi hỏi anh. (2 thư `loi-do-luong` đã ÁP @S179 — KHÔNG phải nợ)
- 🔴 **5 tệp CHƯA COMMIT, NGOÀI 4 path hook ⇒ không bao giờ tự lưu:** `.claude/commands/{adap-apply,adap-report,adap-request,check-email}.md` (= đúng delta tiền-kiểm 5/19→9/19 của W3) + `.claude/auto-memory/feedback_agent_return_garble_recover.md`. `/pause` commit đích-danh nhưng 2 thư-mục này không nằm trong tập.
- nhịp @S181: counter 54→55 (tick S180→S181) | `NHIP-NO: light 2/6 deep 15/15 **OVERDUE:deep** | tran-bo-nho 3 over-cap | run-chua-gom 0`
- 🔴 4 persona-B CHỈ ĂN TỪ RESTART kế => phải có 1 phép đo chỉ xanh SAU restart
- 🔴 `sub-w3-nghi-thuc.md` mojibake nửa sau (U+FFFD=0, KHÔNG mất chữ) — dừng sửa CÓ KHAI, xem `lead-note-w3-encoding.md`
- 🔴 W2 mù nấc MÃ-HOÁ => đề xuất V-5 chưa cắm
- 12 errata lead | 21 vai #53 recover 21/21 mất 0 byte | vai bác lead 11 lần 11/11 đúng
- `powershell -File scripts/{naming-scan,artifact-integrity,nhip-no-probe,spawn-model-audit}.ps1` + `tien-kiem-cua.ps1 -Cua tiep`**5/5 exit 0**
- `node --check .claude/workflows/hmw.js` OK · 2 JSON parse OK · 3 máy pure-ASCII **0 byte**
- `python scripts/session_ctx.py mind-check --session 12` ⇒ dat=10 TRUOT=0 exit 0
- `grep -c '^| TC-' docs/governance/adap-reports/upgrade-pack-phased-bang-goc.md`**12**
- nhịp: counter 54→55 | `light 2/6 deep 15/15 **OVERDUE:deep** | tran-bo-nho 3 over-cap | so-yc treo 1 / nhac2+ 1 (muc 3, gop 3 dong nhac-lai)`
- 🔸 KHAI THẲNG (a) acceptance W4 ô-1 `grep '^ST-'`=0 vì sổ dạng BẢNG, đếm đúng dạng=**2** — KHÔNG bẻ bảng chiều regex · (b) 2 vai mới **sống ngay không cần restart** (đính chính lead); khối chấm 2 cửa thì **vẫn** cần restart
- 🔸 hệ 4 tầng **bắt lỗi tầng-1**: lead đếm 3 mục (theo DÒNG), tầng-2 đếm **1** (theo MỤC) — đã vá sổ (+cột `nhắc-lại-của`) và vá máy dò
- 🔴 `sub-w3-nghi-thuc.md` mojibake nửa sau (U+FFFD=0, KHÔNG mất chữ) · W2 mù nấc MÃ-HOÁ, V-5 chưa cắm
- thư hub 08-07 `nghi-thuc-hai-dau-nhip-thua` ĐÃ đọc + đã tính vào P5/P8; **chưa** ghi dòng `_index` (kênh `all` đọc tại chỗ)

View File

@ -154,6 +154,14 @@ Em main PHẢI echo **TOÀN BỘ nội dung command body này** (đầy đủ Ph
🔗 **H24-coupling — ngoại-lệ CÓ CHỦ-ĐÍCH, khai rõ (KHÔNG mâu-thuẫn "end-only"):** `ring2-audit` **bám cặp H24 *wherever it fires*** — cặp chạy @§L.b(j)(ii) ⇒ nó chạy ở **close**; cặp chạy @[`session-start`](session-start.md) §2.1.8 (OVERDUE ⇒ **AUTO**, KHÔNG còn cửa consent @S146) ⇒ nó chạy **NGAY tại open, ngay sau cặp**. Lý-do: pin của nó = **FLAG-list H24 tươi**, artifact đó **authoritative NGAY khi cặp trả**, không đợi close. `ring4-audit` cùng khuôn (bám **lượt nén** wherever it fires: AUTO-khi-KÊU @§2.1.2 hoặc @§L.b(c) — 🧊 vế "consent" retired @S152 owner "vòng 1→5 auto"). **Chỉ `ring1-audit` end-only TUYỆT-ĐỐI** (pin = H1-chốt + H2-5-trục, chỉ sinh ở close). ⇒ "end-only" nghĩa là **KHÔNG mở nhịp KIỂM RIÊNG @open**; vai vẫn **đi theo con-đo của nó** bất kể con-đo nổ ở đâu.
- 🔸 **Luật vai-KIỂM cho vòng-đo MỚI (O-3 — OWNER-DELEGATED → lead-decided @S149; K5 land @S150; HOME DUY-NHẤT của luật này):** 【1】 **mặc-định TÁCH** — vòng-đo MỚI sinh ra thì vai-KIỂM riêng của nó land CÙNG đợt (KHÔNG gộp vào con KIỂM có sẵn); tập vòng-thiếu tại S149 = **RỖNG** (3 vòng đầu đã TÁCH @S145, owner-decision [2] — dòng dưới). Anh veto = 1 edit (HANDOFF #25).
- 🔸 **Trạng-thái adopt (owner S145 — đo lại đĩa @S146):** **cả 3 vai-KIỂM đã BUILT + WIRED S145** — `ring1-audit` (g-bis) · `ring2-audit` (j)(ii-bis) · `ring4-audit` (post-step lượt nén). Mỗi vai **chạy audit-round khi vòng tương-ứng chạy**, độc-lập, KHÔNG chờ nhau. 🧊 Bản trước xếp `ring2-audit` + `ring4-audit` vào diện **chờ-land về sau** (đợi vai #1 chạy-thử-1-phiên) = **STALE @S146**: mâu-thuẫn chính danh-sách roster Phase 1 (3 dòng 🔬 đã wire AUTO) **và** mâu-thuẫn đĩa (`.claude/agents/{ring1-audit,ring2-audit,ring4-audit}.md` tồn-tại CẢ 3). Số vai roster canonical → [`docs/STATUS.md`](../../docs/STATUS.md) §Sub-agents (B1 — KHÔNG chép số).
- **(k-ter) 🧭 QUÉT CHUẨN-TÊN + ĐIỂM-DANH VẬT-CHỨNG (W6/S181 — vá 2 máy MỒ CÔI):** chạy 2 máy, đọc dòng tổng kết, **INFORM-only**:
```bash
powershell.exe -ExecutionPolicy Bypass -File scripts/naming-scan.ps1
powershell.exe -ExecutionPolicy Bypass -File scripts/artifact-integrity.ps1
```
- 🔴 **KHÔNG CHẶN** — cả 2 máy `exit 0` by-design (cổng chặn = W3b, chưa cắm). Lỗi bất kỳ ⇒ in `quet-chuan loi (khong chan)` → đi tiếp.
- 🔴 **Vì sao bước này tồn tại:** đo @S181 khi dựng bảng A16 — cả 2 máy có **0 cửa nghi-thức gọi**. Chúng được dựng ở W1/W2, chạy tốt, nhưng **chỉ sống khi có người gõ tay** ⇒ hết phiên là hết chạy. Đó là lớp *guard không có đường ghi = chết câm*: máy đúng, mà không ai bấm nút.
- 🔸 Đọc gì: `naming-scan` → 7 dòng `mau so` + có `lech ky vong` không · `artifact-integrity` → dòng `luot DAT` + đếm **`VANG-DAT`** (mức CAO NHẤT, ve-6 P7).
- **(k-bis) 🧮 KHỐI CHẤM đáp-ứng-yêu-cầu — IN ở cửa ĐÓNG (P8, W4b/S181; đối-xứng [`session-start`](session-start.md) §2.1.10):** luật đầy-đủ = canonical [`harness-11-engine.md` **PHẦN P**](../../docs/governance/harness-11-engine.md) — **B1: chỉ TRỎ + THI HÀNH, CẤM chép công thức / 4 tầng / 3 mốc sang đây.**
- Nguồn đếm = `docs/governance/so-yeu-cau-chu-du-an.md` cột *số lần đã nhắc* (số sống: `scripts/nhip-no-probe.ps1` vế `so-yc`).
- 🔴 **Sổ còn thưa ⇒ in đúng chữ `KHÔNG ĐO ĐƯỢC`, CẤM in điểm** (`luat:65-66`: nguồn thưa ⇒ máy luôn cho 10/10 ⇒ in số đó là vi phạm chính luật vừa adopt). 🔴 **INFORM-only ≥3 phiên**, chưa được đụng cổng nào.

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.

View File

@ -89,6 +89,7 @@ $RX_NAMEREF = '(sub-[A-Za-z0-9._-]+\.md|[A-Za-z0-9._-]+-synthesis\.md)'
$script:Flags = @() # {Kind, Run, Name, Msg}
$script:MissingSets = @() # {Run, Msg}
$script:NFolder = 0; $script:NFile = 0; $script:NSkipV1 = 0
$script:NDat = 0 # so thu muc luot DAT (ve-6 P7, W5b/S181)
$script:NV4Measured = 0; $script:NV4Unmeasurable = 0
$script:NOutOfShape = @()
$script:NKhongKhai = 0; $script:NTroCheo = 0
@ -208,13 +209,27 @@ function Scan-Run {
Write-Host (" [{0}] FLAG THIEU-TAP: 0 vat .md" -f $run) -ForegroundColor Red
return
}
# --- VE-6 (P7, W5b/S181): LUOT DAT thi THIEU-TEP = MUC NGHIEM TRONG CAO NHAT ---
# Vi sao nang muc: mot luot chay dat KHONG TAI-LAP-DUOC bang cach chay lai cho re.
# Mat mot vat chung o luot thuong = ton cong chay lai; mat o luot dat = mat HAN,
# vi khong ai bo tien chay lai lan hai chi de co lai cai tep. Cung mot hanh vi
# thieu tep, hai cai gia khac han nhau => hai muc nghiem trong khac nhau.
# Nhan dien luot dat = dau engine trong BAT KY vat .md nao cua thu muc.
$isDat = $false
foreach ($a in $arts) {
$txt = Get-Content -LiteralPath $a.FullName -Raw -Encoding UTF8 -ErrorAction SilentlyContinue
if ($txt -and ($txt -match 'fable-real|fable-clone|\[engine:')) { $isDat = $true; break }
}
$kindVang = if ($isDat) { 'VANG-DAT' } else { 'VANG' }
if ($isDat) { $script:NDat++ }
$runMd = $arts | Where-Object { $_.Name -eq 'run.md' } | Select-Object -First 1
if (-not $runMd) {
Add-Flag 'VANG' $run 'run.md' 'thu muc luot chay khong co run.md - mat NGUON-2 cua diem danh 2 nguon (V-3 khong do duoc o day)'
Add-Flag $kindVang $run 'run.md' 'thu muc luot chay khong co run.md - mat NGUON-2 cua diem danh 2 nguon (V-3 khong do duoc o day)'
}
$synth = @($arts | Where-Object { $_.Name -match $RX_SYNTH -and $_.Length -gt 0 })
if ($synth.Count -eq 0 -and $runMd) {
Add-Flag 'VANG' $run '*-synthesis.md' 'khong co ban gom non-empty (dual-accept flat + harvest/) - cung tieu chi voi nhip-no-probe run-chua-gom'
Add-Flag $kindVang $run '*-synthesis.md' 'khong co ban gom non-empty (dual-accept flat + harvest/) - cung tieu chi voi nhip-no-probe run-chua-gom'
}
# --- V-1 / V-2 tren tung vat ---------------------------------------------
@ -287,7 +302,8 @@ function Scan-Run {
if ($script:AllNamesInRuns.ContainsKey($x)) { $crossRef += $x } else { $reallyMissing += $x }
}
$v3 = ('nguon-2 neu {0} ten | thieu-tren-dia {1} | tro-cheo {2} | khong-khai {3}' -f $named.Count, $reallyMissing.Count, $crossRef.Count, $notDeclared.Count)
foreach ($x in $reallyMissing) { Add-Flag 'VANG' $run $x 'V-3: run.md co neu ten nay, va KHONG TIM THAY o bat ky luot chay nao' }
# ve-6: V-3 cung nang muc o luot dat - cung ly do, cung mot lop mat mat.
foreach ($x in $reallyMissing) { Add-Flag $kindVang $run $x 'V-3: run.md co neu ten nay, va KHONG TIM THAY o bat ky luot chay nao' }
# KHONG-KHAI: dem RIENG, KHONG phai co. Chua he co luat nao bat run.md
# neu ten tep => 245/720 co cho mot luat khong ton tai = duong-gia ngay dau.
# Nhung con SO thi giu, vi no chung minh NGUON-2 mong den muc nao.
@ -414,6 +430,14 @@ foreach ($d in $dirs) { Scan-Run -Dir $d -DoV4:$doV4 }
# ---------------------------------------------------------------------------
Write-Head '=== TONG ==='
Write-Host (" mau so : {0} thu muc luot chay | {1} vat .md da do" -f $script:NFolder, $script:NFile)
# ve-6 (P7, W5b/S181): luon in mau so luot DAT, ke ca khi = 0. Khong in thi
# 'khong co luot dat nao' va 'co luot dat nhung khong ai nhan dien' nhin y het nhau.
$datVang = @($script:Flags | Where-Object { $_.Kind -eq 'VANG-DAT' }).Count
Write-Host (" luot DAT: {0}/{1} thu muc | co VANG-DAT (muc CAO NHAT): {2}" -f $script:NDat, $script:NFolder, $datVang) -ForegroundColor $(if ($datVang -gt 0) { 'Red' } else { 'Gray' })
if ($datVang -gt 0) {
Write-Host " [!] VANG-DAT = thieu vat chung o LUOT DAT. Luot dat KHONG tai-lap-duoc bang cach chay lai cho re" -ForegroundColor Red
Write-Host " => mat o day la mat HAN, khac han mat o luot thuong (chi ton cong chay lai)." -ForegroundColor Red
}
$byKind = $script:Flags | Group-Object Kind | Sort-Object Name
if ($script:Flags.Count -eq 0) {