[CLAUDE] Docs: dong W5 + W4b — het wave chay duoc ma khong can chu du an phan

Tiep chuoi adap 7-GD. Sau luot nay: 7/10 wave DONG.

W5 (GD-5):
- Va spawn-model-audit.ps1 4 ve. Bug that nang hon spec ta: 5 phien gan
  nhat deu wf=0 => may thay 0 lane ma van in "TOTAL FLAGS: 0". Sau va:
  phien S180 = 24/24 lane, co mau so, co dong KHAI khi phien do != moi nhat.
  Fault-inject 2 chieu tren cay tam (workflow-only + flat-only).
- D-3: hmw.js sentinel MODEL_INHERIT, het nhanh undefined-im-lang.
- D-10 + D-12: harness-11-engine PHAN O. D-11 nay 4/5 (manh 5 = P7 ve ii).
- §6 tracking: khai lam-KHAC/manh-hon 5 dong, khong tu phong "da kiem chung".

W4b (GD-4, P8 + P4):
- Luat cham diem = harness-11-engine PHAN P, 5 khoan BAT BIEN.
- Khoi cham wire 2 cua phien + rao KHONG DO DUOC + INFORM-only >=3 phien
  + tach do-day-du-khi-chay (cong may) voi tan-suat (quyen chu du an,
  CAM tich no) theo thu hub 2026-08-07.
- P4: cap 20->30 du 2 mirror => slot (75) DONG (28 vai <= 30, het LOUD-skip).
- 2 vai moi score-counter (tang-2) + score-count-auditor (tang-3), ranh cung
  viet thang vao persona. Seed measured{} VA thu muc nhat ky - may soi ten
  bat lead seed nua voi (thieu nhat ky => mfe-eval loai vai khoi phep do).

Khai thang: acceptance W4 o-1 grep '^ST-' = 0 vi so dang BANG (dem dung dang
= 2, dat ve chat); khong be bang de chieu regex. 2 vai moi + khoi cham chi an
tu RESTART ke.

Con lai: W3b (cho soak >=1 phien), W5b (cho P7 ve ii), W6 (moc ky cua anh).

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
This commit is contained in:
pqhuy1987
2026-08-07 21:45:06 +07:00
parent a3776eaac4
commit 384292876e
13 changed files with 317 additions and 18 deletions

View File

@ -15,14 +15,15 @@ chain:
- [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
- [ ] **W5** GĐ-5 (vá defect `spawn-model-audit`) — xếp sau W4, nay MỞ
- [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] **DRY-RUN W3 acceptance @S181 (phiên SAU restart — cửa sổ mà S180 không có)**: 5/6 ô PASS · 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 · 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)
- [x] **W3 acceptance 6/6 ĐÓNG** — ô cuối (`/adap-apply` dry, anh chốt giữa lượt): thân lệnh nạp CÓ BƯỚC 0 + probe exit 0. Defect con-trỏ bảng-19-cửa (`view-stale-status`) ĐÃ VÁ 3 chỗ: `ritual-labels:138` + `:150` + `tracking:67` nay trỏ đúng `sub-w3-nghi-thuc.md §1.2`
- [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)
- [ ] 🔴 **P8 = W4b** (khoản 6/6) — wire khối chấm vào `session-start`+`session-end`; nay ĐỦ điều-kiện (W4 xong + P4 + P8 + P3). Rào bắt buộc: lượt đầu in `KHÔNG ĐO ĐƯỢC` (máy đọc nguồn thưa luôn cho 10/10) + tách *đủ-khi-chạy*=cổng-máy*tần-suất*=quyền-anh **CẤM tích nợ**
- [ ] 🔸 acceptance W4 ô-1 KHAI THẲNG: `grep -c '^ST-'` = **0** vì sổ dạng BẢNG (`| \`ST-001\``); đếm đúng dạng = **2** (đạt về CHẤT). Regex acceptance giả-định layout phi-bảng — class `acceptance literal tự-lão-hoá`, KHÔNG bẻ bảng để chiều regex
- [ ] W3b (P1=PA-2, phân loại ~70 cờ) · W4b (P4+P8 ĐỦ — chờ W4 xong) · **W5b VẪN GATED: P7 vế(ii) chưa phán** · W6
- [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) 2 vai mới + khối chấm **chỉ ăn từ RESTART kế** ⇒ cần 1 phép đo chỉ-xanh sau restart
- [ ] **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
- [ ] 🔴 **W5b CHẶN — chờ anh P7 vế (ii)** (truyền nguyên-văn lane dispatch = đổi cách anh ra lệnh) · 🔴 **W6 — mốc ký RC là của anh**
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).

View File

@ -27,7 +27,8 @@
},
"hmw_width": {
"_note": "O-7 (adap dot-11, khoan owner-gated #19). CANONICAL cua tran WIDTH cho hmw.js fan-out. Co-che = LOUD-skip: vuot tran thi CHAY `cap` lane DAU, BO cac lane CUOI, in 4 dong 🔴 (KHONG throw, KHONG lang-thinh). hmw.js giu `const WIDTH_CAP` HARDCODE = MIRROR cua khoa nay, KHONG doc runtime — vi sandbox workflow no-fs (hmw.js:5). Drift giua 2 noi => detector bat (xem _drift_check).",
"cap": 20,
"cap": 30,
"_cap_raised_S181": "20 -> 30 @S181 2026-08-07. 🔴 OWNER CHOT THAT (khac lan truoc): chu du an noi dut khoat 'nang cap' o cau P4 dot-2. DONG slot (75) treo tu S172. LINEAGE PHAI GIU: @S179 anh tra 'OK' va lead TU THU-HEP thanh 'ghi-nhan, CHUA phai lenh doi so' => giu 20 — do chinh la ca lead-gap-auditor FLAG-4 bat ('Dien-giai cua lead, khong phai chu cua anh'). Lan nay KHONG tu thu-hep. Vi sao 30 chu khong bang roster: roster 26 va con de cho 2 vai tang-2/tang-3 cua W4b + du bien; cap la TRAN CUNG chong runaway nen de cao hon roster mot khoang co chu dinh. Rui ro khai thang: 30 lane uoc ~3,7M token (ngoai suy tu 8 lane ~1,06M @S149). Tran cao hon = rui ro dot cao hon; danh doi CO Y. MIRROR hmw.js WIDTH_CAP da doi CUNG LUOT.",
"mechanism": "loud-skip",
"ratified": "2026-07-24",
"_ratified_by": "🔴 OWNER-DELEGATED -> LEAD-DECIDED @S149 2026-07-24. KHONG PHAI 'owner chot'. Chuoi su-kien chinh xac: lead trinh anh 4 cau (1 factual + 3 owner-SO/owner-LUAT) -> anh tra loi DUNG hai chu 'Tra loi 4 cau' = UY QUYEN cho lead quyet -> lead quyet + ghi vet nay. Uy-quyen la mot quyet-dinh HOP LE cua owner, nhung no KHAC voi owner tu chon tung so. 🔴 GHI PHAN BIET NAY LA BAT BUOC: dung phien nay lead vua va mot bug o hmw.js:116/:120 noi code tu nang ADOPT-theo-floor thanh 'owner chot O-7 2026-07-22' (0 vet tren 5 be-mat owner). Neu ngay sau do lead ghi 'owner chot' cho chinh khoan ay thi la tai pham trong 1 luot. Anh VETO 1 dong bat cu luc nao thi doi.",
@ -209,6 +210,20 @@
"investigator-api": { "l1_hot": 8510, "l2_verbatim": 0, "l2_index": 0, "l2_gist": 0, "rollout": "n/a (empty archive)" },
"database-agent": { "l1_hot": 7388, "l2_verbatim": 0, "l2_index": 0, "l2_gist": 0, "rollout": "n/a (no archive; +S97 on-behalf record S98)" },
"office-document": { "l1_hot": 3323, "l2_verbatim": 0, "l2_index": 0, "l2_gist": 0, "rollout": "n/a (S107 seed + first spawn-test entry — VERIFIED-RUNTIME same-session; no archive yet)" },
"score-counter": {
"l1_hot": 0,
"l2_verbatim": 0,
"l2_index": 0,
"l2_gist": 0,
"rollout": "SEED @S181 2026-08-07 cung luot de vai (W4b, P4). 🔴 SO 0 = CHUA DO, KHONG phai da-do-bang-0. Vai vua tao, chua chay lan nao nen chua co nhat ky. Seed NGAY theo dung no kem cua P4 (lane F: 'them 2 vai khong seed = 10 vai mu baseline') - co dong voi so 0 thi lan do that se thay DELTA; khong co dong thi vai bien mat khoi moi phep do ma khong ai biet. Do that bang scripts/measure-agent-memory.ps1 sau khi vai chay lan dau."
},
"score-count-auditor": {
"l1_hot": 0,
"l2_verbatim": 0,
"l2_index": 0,
"l2_gist": 0,
"rollout": "SEED @S181 2026-08-07 - cung ly do va cung nhip voi score-counter (tang-3 cua luat cham diem). 🔴 SO 0 = CHUA DO."
},
"lead-stale-auditor": { "l1_hot": 3332, "l2_verbatim": 0, "l2_index": 0, "l2_gist": 0, "rollout": "n/a (S138 add — closeout-S137 tra INFORM view-audit; diary seed S132 retro-harvest, light-audit #1 S124 + #2 S137; do tuoi measure-agent-memory.ps1; no archive)" },
"lead-gap-auditor": { "l1_hot": 3691, "l2_verbatim": 0, "l2_index": 0, "l2_gist": 0, "rollout": "n/a (S138 add — closeout-S137 tra INFORM view-audit; diary seed S132 retro-harvest, light-audit #1 S124 + #2 S137; do tuoi measure-agent-memory.ps1; no archive)" },
"harness-eval": { "l1_hot": 1547, "l2_verbatim": 0, "l2_index": 0, "l2_gist": 0, "rollout": "S141 seed - first-run pending restart+consent; re-measure @drift-audit 2026-08-01 (do TUOI measure-agent-memory.ps1 sau khi seed MEMORY.md ton tai; no archive)" },

View File

@ -0,0 +1,8 @@
# score-count-auditor Agent — Persistent Memory
> **Vai TẦNG-3** của luật chấm điểm đáp-ứng-yêu-cầu (canonical `docs/governance/harness-11-engine.md` **PHẦN P**). Đẻ @S181 2026-08-07, wave W4b, chủ dự án phán **P4**.
- **S181 (2026-08-07) — TẠO VAI, CHƯA CHẠY LẦN NÀO.** 🔴 Dòng SEED, không phải bản ghi lượt chạy. Lý do tệp phải tồn tại: giống `score-counter` — không có nhật ký thì `mfe-eval.ps1` loại vai khỏi phép đo trong im lặng.
- **Ranh cứng phải nhớ mỗi lượt:** kiểm **PHÉP ĐẾM**, **CẤM đề xuất một điểm khác** — kể cả khi chắc chắn số đúng là bao nhiêu. Nộp điểm của mình = thành tầng-2 thứ hai ⇒ hệ thống có 3 phép đếm và **không còn ai kiểm phép đếm**.
- **4 lỗi đếm phải soi:** trừ theo LẦN · đổi nguồn khỏi sổ đã ký · tính cả mục nhắc 1 lần (ngưỡng ≥2) · in điểm khi sổ thưa.
- **Đường ghi lại:** chấm sai ⇒ `error-ledger.md` kèm tầng nào sai. 🔴 CẤM nhét nhãn *chấm sai* vào `lead_self_audit.flag_classes` — tập ĐÃ NIÊM PHONG (P3=B), máy từ chối `exit 2`.

View File

@ -0,0 +1,8 @@
# score-counter Agent — Persistent Memory
> **Vai TẦNG-2** của luật chấm điểm đáp-ứng-yêu-cầu (canonical `docs/governance/harness-11-engine.md` **PHẦN P**). Đẻ @S181 2026-08-07, wave W4b, chủ dự án phán **P4**.
- **S181 (2026-08-07) — TẠO VAI, CHƯA CHẠY LẦN NÀO.** 🔴 Đây là dòng SEED, **không phải bản ghi một lượt chạy**. Tệp này tồn tại vì máy đo (`mfe-eval.ps1:264-267`) **LOẠI khỏi phép đo** mọi vai không có nhật ký — tức thiếu tệp này thì vai biến mất khỏi mọi số liệu mà **không ai biết**, đúng lớp *vắng-mặt-trông-giống-ổn*. Chính `naming-scan.ps1` đã FLAG chỗ hụt này ngay lượt đẻ vai, sau khi lead mới chỉ seed `measured{}` trong `memory-budget.json` mà quên thư mục nhật ký — seed một nửa.
- **Ranh cứng phải nhớ mỗi lượt:** CẤM xem điểm tầng-1 trước khi đếm xong. Pin có kèm điểm tầng-1 ⇒ TỪ CHỐI + khai. Đọc rồi thì tính độc lập **không phục hồi được trong cùng lượt**.
- **Bẫy số học:** đơn vị trừ là **MỤC**, không phải **LẦN**. Mục nhắc 5 lần trừ đúng **1**.
- **Bẫy nguồn thưa:** sổ ít dòng ⇒ công thức **luôn** cho 10/10 ⇒ phải trả `KHÔNG ĐO ĐƯỢC`, cấm nặn số.

View File

@ -0,0 +1,36 @@
---
name: score-count-auditor
description: Read-only INFORM-only vai TẦNG-3 của luật chấm điểm đáp-ứng-yêu-cầu (GĐ-4 / C4-10, land W4b @S181; chủ dự án phán P4). Việc DUY NHẤT - kiểm PHÉP ĐẾM của tầng-1 (lead) và tầng-2 (`score-counter`) có đúng luật không. 🔴 RANH CỨNG BẤT KHẢ NHƯỢNG - CẤM đề xuất một điểm KHÁC. Mày chỉ được nói phép đếm ĐÚNG hay SAI và sai ở đâu; đề xuất điểm khác là tự biến mình thành tầng-2 thứ hai, và khi đó không còn ai kiểm phép đếm nữa. Soi 4 lỗi đếm điển hình - trừ theo LẦN thay vì theo MỤC · đổi nguồn đếm khỏi sổ đã ký · tính cả mục nhắc đúng 1 lần · in điểm khi sổ còn thưa (phải là KHÔNG ĐO ĐƯỢC). Chấm sai ⇒ ghi `error-ledger.md` kèm TẦNG NÀO SAI; 🔴 CẤM nhét nhãn *chấm sai* vào `lead_self_audit.flag_classes` (tập ĐÃ NIÊM PHONG P3=B `_sealed_P3B_S181`, máy từ chối exit 2). Luật canonical `harness-11-engine.md PHẦN P` - trỏ, KHÔNG chép. PIN đích-danh fail-closed - thiếu output tầng-1 hoặc tầng-2 ⇒ SKIP-CO-KHAI, CẤM tự đi tìm. KHÔNG Write/Edit, KHÔNG store_memory, propose-only, lead single-writer. KHÔNG tự đếm thay tầng-2 (`score-counter`) · KHÔNG soi lead (H24) · KHÔNG chấm diff-code (reviewer).
tools: Read, Grep, Glob, Bash
model: opus
---
Mày là **tầng 3**. Mày kiểm **PHÉP ĐẾM**, không kiểm **KẾT QUẢ**.
## Ranh cứng — đọc trước mọi thứ khác
🔴 **CẤM đề xuất một điểm khác.** Kể cả khi mày chắc chắn số đúng phải là bao nhiêu.
Lý do có thật, không phải câu nệ: nếu mày nộp điểm của mày thì hệ thống có **ba** phép đếm và **không còn ai** kiểm phép đếm cả — đúng cái lỗ mà tầng-3 sinh ra để bịt. Mày nói *"phép đếm sai ở bước X"*, rồi tầng-1/tầng-2 đếm lại.
## PIN fail-closed
Nhận **đích danh** output tầng-1 + tầng-2. Thiếu bất kỳ cái nào ⇒ trả `SCORE-T3: SKIP-CO-KHAI — thieu pin <ten>`**CẤM tự đi tìm** "bản mới nhất" (vớ bản cũ = chấm thứ không tồn tại mà vẫn báo ĐẠT).
## Bốn lỗi đếm phải soi
1. **Trừ theo LẦN thay vì theo MỤC** — mục nhắc 5 lần phải trừ **1**, không phải 4.
2. **Đổi nguồn đếm** khỏi `docs/governance/so-yeu-cau-chu-du-an.md` (nguồn ĐÃ KÝ).
3. **Tính cả mục nhắc đúng 1 lần** — ngưỡng là **≥2**.
4. **In điểm khi sổ còn thưa** — phải là `KHÔNG ĐO ĐƯỢC`; nguồn thưa thì công thức luôn cho 10/10.
## Khi phát hiện chấm sai
Ghi `docs/governance/error-ledger.md`: **tầng nào sai** + nhãn *chấm sai*.
🔴 **CẤM nhét nhãn *chấm sai* vào `lead_self_audit.flag_classes`** — tập đó **ĐÃ NIÊM PHONG** theo P3=B (khoá `_sealed_P3B_S181`); `h24-signal-write.ps1` sẽ **từ chối bằng exit 2**. Chỉ chủ dự án mở tập.
## Trả về
Dòng-1 **bắt buộc**:
`SCORE-T3: <DUNG|SAI|SKIP-CO-KHAI> — <n> loi dem`
Mỗi lỗi: **tầng nào · bước nào · vì sao sai**. 🔴 **KHÔNG kèm điểm thay thế.**

View File

@ -0,0 +1,31 @@
---
name: score-counter
description: Read-only INFORM-only vai TẦNG-2 của luật chấm điểm đáp-ứng-yêu-cầu (GĐ-4 / C4-10, land W4b @S181; chủ dự án phán P4). Việc DUY NHẤT - đọc `docs/governance/so-yeu-cau-chu-du-an.md` rồi TỰ ĐẾM LẠI số MỤC bị nhắc ≥2 lần, không nhìn kết quả của ai. 🔴 RANH CỨNG BẤT KHẢ NHƯỢNG - CẤM xem điểm tầng-1 trước khi đếm xong; pin nào kèm sẵn điểm tầng-1 thì TỪ CHỐI đọc và khai rõ, vì đọc rồi thì phép đếm độc lập đã hỏng và không phục hồi được. Đơn vị trừ là MỤC không phải LẦN (1 mục nhắc 5 lần trừ đúng 1). CẤM tự phán điểm cuối (tầng-4 = chủ dự án). Luật canonical `harness-11-engine.md PHẦN P` - trỏ, KHÔNG chép. Nguồn đếm ĐÃ KÝ = sổ nói trên, CẤM đổi nguồn. Sổ thưa ⇒ trả `KHÔNG ĐO ĐƯỢC`, CẤM nặn ra số. KHÔNG Write/Edit, KHÔNG store_memory, propose-only, lead single-writer. KHÔNG kiểm phép đếm của người khác (đó là `score-count-auditor` tầng-3) · KHÔNG soi lead (H24) · KHÔNG chấm diff-code (reviewer).
tools: Read, Grep, Glob, Bash
model: opus
---
Mày là **tầng 2** của luật chấm điểm. Toàn bộ giá trị của mày nằm ở chỗ mày đếm **ĐỘC LẬP**.
## Ranh cứng — đọc trước mọi thứ khác
🔴 **CẤM xem điểm tầng-1 trước khi đếm xong.** Nếu prompt/pin có kèm điểm tầng-1, **DỪNG**, khai:
`SCORE-T2: TU-CHOI — pin co kem diem tang-1, phep dem doc lap da hong`
Đây không phải câu nệ hình thức: biết trước một con số rồi đi đếm thì cái ra được là *kiểm chứng thiên lệch*, và **không có cách nào phục hồi** tính độc lập trong cùng một lượt.
## Việc
1. Đọc `docs/governance/so-yeu-cau-chu-du-an.md`**nguồn đếm ĐÃ KÝ, CẤM đổi nguồn** để làm đẹp số.
2. Đếm **số MỤC***số lần đã nhắc* **≥ 2**.
🔴 **Đơn vị là MỤC, không phải LẦN.** Một mục bị nhắc 5 lần đóng góp đúng **1**, không phải 4.
3. Áp công thức `max(0, 10 số MỤC lặp ≥2)`.
4. Sổ còn thưa ⇒ trả **`KHÔNG ĐO ĐƯỢC`**. 🔴 Nguồn thưa thì công thức **luôn** cho 10/10 — nặn ra con số đó là vi phạm chính luật vừa adopt.
## Trả về
Dòng-1 **bắt buộc**:
`SCORE-T2: <điểm|KHÔNG ĐO ĐƯỢC> — <n> mục lặp>=2 / <m> mục tổng`
Rồi liệt **TỪNG mục kèm mã** (`YC-xxx`). Rỗng ⇒ ghi đúng chữ **`danh sách rỗng`**, CẤM bỏ trống.
🔴 **CẤM phán điểm cuối.** Điểm cuối là tầng-4 = chủ dự án. Mày chỉ nộp phép đếm của mày.

View File

@ -154,6 +154,12 @@ 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-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.
- 🔴 **Thiếu mốc-3 `first_owner_msg_ts` ⇒ in `chờ niêm phong`, KHÔNG đẩy sang hàng-chờ-anh** (PHẦN P.4) — chưa có phản hồi thì điểm chưa chốt.
- 🔴 **Chấm sai ⇒ ghi `error-ledger.md` kèm TẦNG NÀO SAI.** CẤM nhét nhãn *chấm sai* vào `lead_self_audit.flag_classes` — tập ĐÃ NIÊM PHONG (P3=B, `_sealed_P3B_S181`); máy từ chối bằng `exit 2`.
- 🔴 **Tần suất nghi-thức = quyền chủ dự án, KHÔNG máy nào cưỡng chế, CẤM tích luỹ nợ** vì "chưa tới lượt chạy"; *độ đầy đủ khi chạy* mới là phần đội chịu và có cổng máy (chủ dự án chốt @S181).
- **(h) 🔏 User-Mark CHỐT cuối phiên (H-12/13 canonical §P/P7, S79 — `harness-11-engine.md §E`):** đọc [`.claude/governance/ACTIVE-MARKS.md`](../governance/ACTIVE-MARKS.md) → (i) **hiển-thị** status-filtered (Active-High/Active hiện · Medium tóm-tắt · Disable ẩn) cho anh đọc lại (đối-xứng `session-start §2.1.4`); (ii) nếu session này có **quyết-định cấp-governance MỚI** (scope-check P6: đổi CANONICAL §-rule/authority) → chạy `/user-mark-<cấp>` DACI: adjust-gov → double-check → **report-trước-đóng-dấu 3-7 tiêu-chí khách-quan (P4)** → anh confirm → stamp `RC-pqhuy1987-dd-mm-yyyy-hh-mm-ss`; (iii) supersede/disable mark cũ (P5) → con-trỏ-xuôi + Active-High cần anh-confirm RIÊNG. 🔴 **KHÔNG tự đóng dấu / đổi cấp trước khi báo (P4/P8).** 0 quyết-định-mới → "n-a, chỉ hiển-thị".
- **(i) 🎯 H18-D(a) outcome spot-check (S100 — [`harness-11-engine.md §J`](../../docs/governance/harness-11-engine.md)):** session governance/review-heavy → chọn **35 artifact đã tự-động-qua-cổng** trước đó (cicd GO verdict · detector verdict · monitor verdict · adap-report claim) → **kiểm-lại TƯƠI bằng ground-truth** (tính lại giá-trị đối-chứng · mở định-nghĩa gốc xem claim có thật-cover · đối-chiếu nguyên-văn nguồn). Gấp vào review sẵn có (chi-phí ~0). Sàn-vai trượt-THẬT khỏi nhật-ký → reinject-on-real-miss qua [`reinject-ledger.md`](../governance/reinject-ledger.md) CG-1 (≤1 lần/N=3 phiên, vẫn trượt → escalate anh — REUSE H17 §I B2, KHÔNG sổ mới). Light/hỏi-đáp → skip. (Nấc honest: dogfood n=1 S100 = mẫu hiệu-chỉnh, CHƯA "proven" — caveat 1 broadcast H18.)
- **(k) 🧪🧭🧮 Bộ-ba đồng-kiểm memory @ĐÓNG-PHIÊN (adopt S141 — đối-xứng `session-start §2.1.9`; khuôn hub 5-câu `58e28bae` khối B):** đầu-thứ-2 của nhịp 2-đầu-phiên. Trục = **CHÍNH-HỆ-MEMORY**, KHÁC (g) H1 tooling / (d)(f) H2 harvest / (j) H24 lead / reviewer chấm-diff. Contract từng vai = canonical ở `.claude/agents/harness-{eval,refine,audit}.md` (B1 — KHÔNG chép contract vai vào đây).

View File

@ -318,6 +318,24 @@ ngược lại → counter += 1 ; last_ticked_session = S<nn> ; last_ticked_head
- Audit MD/RAG của sub-agent đã spawn, synthesize cross-agent learnings
- Integrate vào: rules, architecture, gotcha, skill, daily, hand-off, DB, luồng DB, session log
### 2.1.10 🧮 KHỐI CHẤM đáp-ứng-yêu-cầu — IN ở cửa MỞ (P8, W4b/S181)
> 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.** Cửa đối-xứng: [`session-end`](session-end.md) §L.b(k-bis).
- **Nguồn đếm:** `docs/governance/so-yeu-cau-chu-du-an.md` cột *số lần đã nhắc*. Số sống đọc bằng `scripts/nhip-no-probe.ps1` vế `so-yc`.
- 🔴 **LƯỢT ĐẦU + KHI SỔ CÒN THƯA ⇒ IN ĐÚNG CHỮ `KHÔNG ĐO ĐƯỢC`, CẤM in điểm.** Nguồn thưa thì máy **luôn** cho 10/10; in số đó là vi phạm ngay luật vừa adopt (`luat:65-66`).
- 🔴 **INFORM-only ≥3 phiên.** Trong giai đoạn này điểm **KHÔNG** được ảnh hưởng bất kỳ cổng nào.
- Dòng tổng kết phải đủ 4 phần (PHẦN P.6); danh sách rỗng ⇒ ghi đúng chữ **"danh sách rỗng"**.
🔴 **HAI ĐẠI-LƯỢNG, ĐỪNG ĐỌC GỘP** *(thư hub `2026-08-07-Governance-nghi-thuc-hai-dau-nhip-thua-va-luu-nguyen-van.md`; chủ dự án chốt @S181 — "Đội đầy đủ khi chạy → OK")*:
| Đại lượng | Ai chịu | Cưỡng chế bằng gì |
|---|---|---|
| **Độ đầy đủ KHI CHẠY** | đội | ✅ **có cổng máy** — đã mở nghi-thức thì chạy đủ, không có nấc rút gọn |
| **TẦN SUẤT** | **chủ dự án** | 🔴 **KHÔNG máy nào. CẤM tích luỹ nợ vì "chưa tới lượt chạy".** Khoảng không có nghi-thức **KHÔNG** được chấm thành *quên* hay *tự ý bỏ* |
🔸 Tần suất thấp **NÂNG** chuẩn chứ không hạ: thưa nghĩa là mỗi lần là **mẫu quan sát hiếm**, làm ẩu một lần là mất luôn cửa sổ đó.
## Phase 3 — REPORT (plan status)
Đặt tên + tô màu cho Plan hiện tại đang chạy, kèm tiến độ + agent assignment:

View File

@ -42,6 +42,12 @@ const VALID_ROLES = [
'ring2-audit', 'ring4-audit', // +S145 C4/C4b vai #2/3 + #3/3 round-KIỂM (owner-decision [2] TÁCH mỗi-vòng-1-con). ring2-audit = KIỂM vòng soi-lead (đọc OUTPUT lead-stale+lead-gap, no-self-exempt ≠ chúng, KHÔNG soi lead trực-tiếp) · ring4-audit = KIỂM vòng nén-ngủ (đọc /sleep-recovery gist+Fidelity, tự đo byte). AUTO fire-after-measure, propose-only, NO-OP nếu vòng không đo.
'ctx-audit', // +S153 ctx soft-memory 0df10df4 — vai-3 vòng Ctx: SOI-CHUỖI 2 đầu phiên, INFORM-only (🔄 OWNER-VETO @S153: (38)(a) 1-vai → hub-form 3-vai, anh chốt trực tiếp)
'ctx-curator', 'ctx-verifier', // +S153 OWNER-VETO hub-form 3-vai — vai-1 KIỂM nháp @mỗi-pause (carve-out pause §1) · vai-2 ĐỐI-CHIẾU+NẠP @mỗi-tiep; cả 2 INFORM-only trả-văn-bản
'score-counter', 'score-count-auditor', // +S181 W4b (chủ dự án phán P4) — tầng-2 + tầng-3 của luật chấm điểm
// đáp-ứng-yêu-cầu (canonical `harness-11-engine.md` PHẦN P). 🔴 RANH CỨNG giữa 2 con, đừng gộp:
// tầng-2 `score-counter` ĐẾM ĐỘC LẬP và **CẤM xem điểm tầng-1** trước khi đếm xong;
// tầng-3 `score-count-auditor` kiểm PHÉP ĐẾM và **CẤM đề xuất một điểm khác** (đề xuất điểm = thành
// tầng-2 thứ hai ⇒ không còn ai kiểm phép đếm). Gộp 2 con = mất đúng tính độc lập mà 4 tầng dựng ra.
// Nợ P4 đã trả cùng lượt: seed `measured{}` cho CẢ HAI (số 0 = CHƯA ĐO, không phải đã-đo-bằng-0).
'front-end-reviewer-style', 'back-end-reviewer-style', 'database-reviewer-style', // +S176 ĐỘI STYLE (anh chốt trực-tiếp).
// 🔴 Trục = ĐỒNG-NHẤT style, ⟂ `reviewer` (ĐÚNG-SAI logic) ⇒ chạy SONG SONG được, không giẫm nhau.
// Luật lõi anh giao: "tính năng đã deploy production = CHUẨN, trừ khi tao điều chỉnh lại lần nữa" —
@ -88,14 +94,20 @@ const TIER2_EXPECTED_FULL_ID = 'claude-opus-5'
// Escape-hatch per-task tier:'opus' GIỮ cho sweep/cost (ngoại lệ có chủ đích); tier:'fable' CHỈ hợp lệ
// trong lượt lệnh engine-đắt anh gõ kèm vai (/fable-real|/fable-clone <vai> <đề-bài> — H21 S110);
// lead KHÔNG tự ý elevate theo phán-đoán riêng (MTv3 §1.3: đường DUY NHẤT nâng 1 vai lên hạng-nhất = lệnh owner).
// D-3 (W5/S181) — MỘT NGUỒN cho ý nghĩa "CỐ Ý không override model".
// Trước đây 3 nhánh của resolveModel đều `return undefined`, nên đọc mã KHÔNG phân biệt được
// *cố ý để mặc định* với *quên set* — đúng lớp "undefined-im-lặng" mà D-3 gọi tên.
// Sentinel này KHÔNG đổi hành vi runtime: chỗ-gọi dịch nó về `undefined` trước khi truyền đi.
const MODEL_INHERIT = 'inherit'
function resolveModel(role, rawRole, tier, i) {
if (tier === 'fable' || tier === 'opus') return tier
if (tier) log(`⚠️ hmw: tier "${tier}" lạ (task #${i}) → bỏ qua, dùng mặc định (frontmatter worker-tier opus)`)
// Role-less (null) → inherit lead; invalid non-empty role đã THROW up-front (STOP-HARD, DIRECTED REC-3 2026-07-13)
// → nhánh này giờ CHỈ đạt bởi role-less thật (rawRole null/''); giữ làm defensive no-op.
if (!role && rawRole) return undefined
if (!role) { log(`hmw: task #${i} role-less → inherit lead-model (H6.2 governed-ultracode; per-task tier:'opus' = escape-hatch sweep/cost)`); return undefined }
return undefined // role có frontmatter: tất cả `opus`+`effort:max` (worker-tier-pin S124) — KHÔNG override
if (!role && rawRole) return MODEL_INHERIT
if (!role) { log(`hmw: task #${i} role-less → inherit lead-model (H6.2 governed-ultracode; per-task tier:'opus' = escape-hatch sweep/cost)`); return MODEL_INHERIT }
return MODEL_INHERIT // role có frontmatter: tất cả `opus`+`effort:max` (worker-tier-pin S124) — KHÔNG override
}
const SCHEMA = {
@ -160,7 +172,7 @@ if (A.checkpointApproved !== true) {
// >16 chỉ xếp hàng). Sweep TOÀN-ROSTER là use-case đã chạy thật (S125/S126 = 14/14 thời roster
// 14); roster nay **20** ⇒ cap 16 cắt 4 lane, ép chia 2 đợt vô cớ. Đánh đổi khai thẳng:
// 8 lane @S149 ≈ 1,06M token ⇒ 20 lane ước ~2,5M.
const WIDTH_CAP = 20
const WIDTH_CAP = 30
if (A.taskList.length > WIDTH_CAP) {
const dropped = A.taskList.slice(WIDTH_CAP)
const keptN = WIDTH_CAP
@ -273,7 +285,10 @@ const results = await parallel(A.taskList.map((t, i) => () => {
agentType: role || undefined,
schema: SCHEMA,
label: (t && t.label) || `hmw:${role || 'task'}-${i}`,
model: resolveModel(role, raw, t && t.tier, i), // worker-tier-pin (undefined = theo frontmatter = opus S124)
// D-3 (W5/S181): dịch sentinel → `undefined` NGAY TẠI ĐÂY, tường minh.
// `undefined` truyền xuống nghĩa là "không override, để frontmatter worker-tier quyết"
// (= opus + effort:max, S124). Hành vi runtime y hệt bản trước; cái đổi là ĐỌC RA ĐƯỢC Ý ĐỊNH.
model: (() => { const m = resolveModel(role, raw, t && t.tier, i); return m === MODEL_INHERIT ? undefined : m })(),
})
}))