[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:
@ -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).
|
||||
|
||||
@ -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)" },
|
||||
|
||||
8
.claude/agent-memory/score-count-auditor/MEMORY.md
Normal file
8
.claude/agent-memory/score-count-auditor/MEMORY.md
Normal 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`.
|
||||
8
.claude/agent-memory/score-counter/MEMORY.md
Normal file
8
.claude/agent-memory/score-counter/MEMORY.md
Normal 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ố.
|
||||
36
.claude/agents/score-count-auditor.md
Normal file
36
.claude/agents/score-count-auditor.md
Normal 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>` và **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ế.**
|
||||
31
.claude/agents/score-counter.md
Normal file
31
.claude/agents/score-counter.md
Normal 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** 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.
|
||||
@ -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 **3–5 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).
|
||||
|
||||
@ -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:
|
||||
|
||||
@ -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 })(),
|
||||
})
|
||||
}))
|
||||
|
||||
|
||||
@ -43,7 +43,7 @@ Cột "Thuộc GĐ" lấy đúng nhãn giai đoạn mà hub gắn trong Phần C
|
||||
| A1 | GĐ-4 | đã đồng ý | W4 | 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. Chỗ cắm hợp lệ đã tồn tại ở SE là `CLAUDE.md`; 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ỗ. Hiện chưa có: phép tìm cụm "viện dẫn" trong kho auto-memory ra 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 | đã đồng ý | W3 và W4 | Đèn nợ ở **mọi** điểm dừng, liệt từng cửa chứ không ghi gộp. Đo được: máy dò nhịp được gọi từ 6 cửa, còn tiền kiểm chi phí 0 mới phủ 4 trên 19 cửa. Wave W3 dựng bảng 19 cửa liệt từng dòng; wave W4 nối hai số liệu vào máy dò. Nợ nặng nhất của khoản này: máy hiện **chưa phân biệt** "chưa có dữ liệu" với "đã đo và bằng không" — hub gọi đó là đèn xanh giả. |
|
||||
| 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. 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ừ. Nguyên liệu ở SE có nhưng nằm rải trong 61 tệp auto-memory, chưa gom về một chỗ. 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. |
|
||||
@ -90,3 +90,17 @@ grep -c 'đã được kiểm chứng *|' docs/governance/adap-upgrade-pack-trac
|
||||
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 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) |
|
||||
|
||||
🔸 **Ô 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.
|
||||
|
||||
@ -433,3 +433,94 @@ SE đã có RAG golden-set harness (KHÔNG phải gap): `eval/golden-set-solutio
|
||||
- **Detector = LƯỚI giảm-sót, KHÔNG khoá-cứng** — bắt @đầu/đóng-phiên (theo nhịp); giữa 2 nhịp có khoảng-mù. Phòng-thủ-nhiều-lớp, không bảo-đảm tuyệt-đối.
|
||||
- **Nấc dogfood:** A2/A3/D4/D9/D11 = SE runtime-mechanized SẴN (H11 = chuẩn-hoá). C1-C3 + B3 + memory-archive-gate = MỚI build S75. D5-D8 + B1 = nhãn-hoá/codify cái ngầm-có. Phân-định 'detector viết-thành-lệnh' (executed-file) ≠ 'đã chạy-quan-sát' (runtime).
|
||||
- **§E User-Mark = phần-lớn CONVENTION (S79):** report-trước-đóng-dấu (E.2/P4) + cưỡng-chế-hành-vi (E.3 behavioral) + neo-lý-tính (E.5/P10) = **kỷ-luật người+AI**, KHÔNG công-cụ-ép (đừng nhận "mechanized"). CHỈ session-display (gắn lệnh-phiên P7) + chặn-tool-ở-config (E.3 tool-action P9) = mechanized. RC-sig 3 mark Active-High đã anh-confirm-stamp S79 (`ACTIVE-MARKS.md`) = executed-file; 4 lệnh `/user-mark-*` = command `.md` verified-pending-restart (no hot-reload).
|
||||
|
||||
---
|
||||
|
||||
## PHẦN O — Kỷ luật GÓI NGỮ-CẢNH khi phát lệnh cho lane (D-10 · D-12) — W5/S181 (🔴 FUNCTION-FLOOR)
|
||||
|
||||
> Land @S181 wave **W5**, gói adap 7-GĐ. Nguồn đo: `sub-n3-lane-d-gd56.md` D-10/D-11/D-12.
|
||||
|
||||
### O.1 — D-10: **Tổng hợp = MỘT LƯỢT GỌI MỚI, CẤM nối lại lượt cũ**
|
||||
|
||||
Khi cần **tổng hợp** kết quả của nhiều lane, phải mở **một lượt gọi MỚI** với đầu vào là các **vật chứng trên đĩa**. **CẤM** nối lại (resume) một lane cũ rồi bảo nó tổng hợp.
|
||||
|
||||
**Lý do:** lane cũ mang sẵn ngữ-cảnh riêng của nó; nối lại là để một lăng-kính đã có thiên-hướng đi chấm cả tập. Lượt mới đọc đĩa thì mọi lane vào bằng cùng một cửa.
|
||||
|
||||
🔴 **RANH với resume-#53 — hai việc KHÁC NHAU, đừng gộp:**
|
||||
|
||||
| | resume-#53 | tổng hợp |
|
||||
|---|---|---|
|
||||
| Mục đích | **cứu vật chứng** của CHÍNH lane đó khi return bị garble | **hợp nhất** vật chứng của NHIỀU lane |
|
||||
| Nối lại lượt cũ? | ✅ ĐƯỢC (đó chính là cách cứu) | 🔴 **CẤM** |
|
||||
|
||||
*Counter-datum giữ cho công bằng:* resume @S180 **KHÔNG** rớt model (`n=1`) — ghi nhận đúng cỡ mẫu, **không** chép lo-ngại của hub thành lo-ngại của mình.
|
||||
|
||||
### O.2 — D-12: mảnh ngữ-cảnh nào CHƯA CÓ thì phải **KHAI**, cho CẢ GÓI 5 MẢNH
|
||||
|
||||
Gói ngữ-cảnh chuẩn (D-11) gồm **5 mảnh**. Mảnh nào chưa có ⇒ ghi đúng chuỗi **`(THIẾU — lý do)`**; **CẤM bỏ trống**, **CẤM dựng lại từ trí nhớ**.
|
||||
|
||||
| # | Mảnh | Nhà | Trạng thái @S181 |
|
||||
|---|---|---|---|
|
||||
| 1 | nền trỏ-không-chép | `tiep.md` §3-ter (khoá `tiep_reload`) | ✅ |
|
||||
| 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 |
|
||||
|
||||
⇒ **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**.
|
||||
|
||||
🔴 **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*.
|
||||
|
||||
---
|
||||
|
||||
## PHẦN P — Luật CHẤM ĐIỂM đáp-ứng-yêu-cầu (GĐ-4 / C4-10 · A9) — W4b/S181 (🔴 FUNCTION-FLOOR)
|
||||
|
||||
> Land @S181 wave **W4b**. Chủ dự án đã phán **P4** (đẻ vai) + **P8** (wire 2 cửa) + **P3** (đường ghi lại).
|
||||
> 🔴 **PHẠM VI BẤT BIẾN = ĐÚNG 5 KHOẢN dưới** (`luat:140`) — không phải câu tóm tắt ở `:23`. Ai sửa 1 trong 5 khoản này là **đổi luật**, phải qua chủ dự án.
|
||||
|
||||
### P.1 — Khoản 1/5: CÔNG THỨC
|
||||
|
||||
```
|
||||
điểm = max(0, 10 − số MỤC lặp ≥2)
|
||||
```
|
||||
|
||||
**Đơn vị trừ là MỤC, không phải LẦN.** Một mục bị nhắc 5 lần trừ đúng **1** (`luat:120`), không trừ 4. Lý do: đo *"có bao nhiêu thứ phải nhắc lại"*, không đo *"tổng số lần mở miệng"*.
|
||||
|
||||
**3 cách đọc BẮT BUỘC đi kèm mỗi lần in điểm** (`luat:53-55`) — thiếu một cách là in điểm trần trụi, và điểm trần trụi thì ai cũng đọc thành *"đội tốt/xấu"*:
|
||||
1. Điểm này đo **đội có phải nghe lại không**, KHÔNG đo đội giỏi hay dốt.
|
||||
2. Điểm cao **không** chứng minh làm đúng — chỉ chứng minh **không phải nhắc lại**.
|
||||
3. Điểm thấp là **tín hiệu tra cứu**, không phải bản án; đọc kèm danh sách mục.
|
||||
|
||||
### P.2 — Khoản 2/5: NGUỒN ĐẾM (đã ký, không né được bằng đổi nguồn)
|
||||
|
||||
Nguồn đếm duy nhất = [`docs/governance/so-yeu-cau-chu-du-an.md`](so-yeu-cau-chu-du-an.md), cột *số lần đã nhắc*. **CẤM** đổi sang nguồn khác để làm đẹp điểm (F-08 / lane C §H.1).
|
||||
|
||||
### P.3 — Khoản 3/5: BỐN TẦNG, ranh CỨNG
|
||||
|
||||
| Tầng | Ai | Làm gì | 🔴 Ranh cứng |
|
||||
|---|---|---|---|
|
||||
| 1 | lead | tự chấm theo công thức | — |
|
||||
| 2 | vai đọc sổ | đọc sổ, **tự đếm lại** | 🔴 **KHÔNG được xem điểm tầng-1** trước khi đếm xong |
|
||||
| 3 | vai kiểm | kiểm **PHÉP ĐẾM** của tầng 1+2 | 🔴 **CẤM đề xuất một điểm khác** — chỉ nói phép đếm đúng/sai |
|
||||
| 4 | **chủ dự án** | phán cuối | — |
|
||||
|
||||
### P.4 — Khoản 4/5: BA MỐC NIÊM PHONG (A9)
|
||||
|
||||
`emit_ts` (lúc in) · `redisplay_ts` (lúc hiện lại) · `first_owner_msg_ts` (tin nhắn đầu của chủ dự án sau khi in).
|
||||
|
||||
🔴 **Thiếu mốc-3 ⇒ in `chờ niêm phong`, và KHÔNG được đẩy sang hàng-chờ-anh.** Chưa có phản hồi thì điểm **chưa chốt** — đẩy vào hàng chờ là biến cái chưa chốt thành việc của chủ dự án.
|
||||
|
||||
### P.5 — Khoản 5/5: ĐƯỜNG GHI LẠI KHI CHẤM SAI
|
||||
|
||||
Chấm sai ⇒ ghi **tầng nào sai** + nhãn *chấm sai* vào [`error-ledger.md`](error-ledger.md).
|
||||
🔴 **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`). Máy sẽ **từ chối** (`h24-signal-write.ps1` exit 2). Muốn mở tập thì chỉ chủ dự án mở.
|
||||
|
||||
### P.6 — Dòng tổng kết phải đủ 4 phần
|
||||
|
||||
`{điểm cuối · 3 giá trị tầng · trạng thái niêm phong · liệt TỪNG mục kèm mã}`. Danh sách rỗng ⇒ ghi đúng chữ **"danh sách rỗng"**, CẤM bỏ trống.
|
||||
|
||||
### P.7 — 🔴 LƯỢT ĐẦU PHẢI IN `KHÔNG ĐO ĐƯỢC`
|
||||
|
||||
`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).
|
||||
|
||||
@ -8,8 +8,8 @@
|
||||
"_updated_boi": "S181 (phien-LOGIC 12) - do tuoi sau khi land W3 + P5/P7i + W4 (so yeu-cau).",
|
||||
"_lich_su_thoi": "S180 va :174 tu 54 -> 55; do lai @S181 cung ngay da la 56. 3/7 khoa thoi trong ~1 ngay. Do la ly do khoa nay co _updated: doc so ma khong biet no cu bao lau thi khong danh gia duoc.",
|
||||
"sets": {
|
||||
"vai": 27,
|
||||
"nhat-ky-vai": 26,
|
||||
"vai": 29,
|
||||
"nhat-ky-vai": 28,
|
||||
"lenh": 19,
|
||||
"kich-ban": 57,
|
||||
"moc-phien": 93,
|
||||
|
||||
@ -227,6 +227,26 @@ Write-Section 'B - resolved model (PA-2b, spawn transcripts)'
|
||||
$slug = $RepoRoot -replace '[:\\/_]', '-'
|
||||
$projDir = Join-Path $TranscriptRoot $slug
|
||||
|
||||
# (b) W5/S181 - GOM LANE TU CA HAI DUONG. Mot lane = mot tep .jsonl.
|
||||
# duong 1 PHANG : <session>/subagents/*.jsonl <- spawn bang Agent-tool (Task)
|
||||
# duong 2 WORKFLOW: <session>/subagents/workflows/**/agent-*.jsonl
|
||||
# Ban cu CHI quet duong 2 => mu hoan toan duong 1. Chieu mu dung la
|
||||
# 'THAY Workflow, MU Task/phang' (errata E-5: co luc bi viet NGUOC chieu).
|
||||
# Tra ve mang rong khi khong co gi - de goi ben ngoai tu quyet, khong tu in.
|
||||
function Get-LaneFiles {
|
||||
param([string]$SessionPath)
|
||||
$out = @()
|
||||
$flatRoot = Join-Path $SessionPath 'subagents'
|
||||
if (Test-Path -LiteralPath $flatRoot) {
|
||||
$out += @(Get-ChildItem -Path $flatRoot -Filter '*.jsonl' -File -ErrorAction SilentlyContinue)
|
||||
$wfRoot = Join-Path $flatRoot 'workflows'
|
||||
if (Test-Path -LiteralPath $wfRoot) {
|
||||
$out += @(Get-ChildItem -Path $wfRoot -Recurse -Filter 'agent-*.jsonl' -File -ErrorAction SilentlyContinue)
|
||||
}
|
||||
}
|
||||
return @($out)
|
||||
}
|
||||
|
||||
$dispatch = 0 # spawn lanes found (one agent-*.jsonl = one lane)
|
||||
$explicit = 0 # lanes where a resolved model is actually recorded
|
||||
$mismatch = 0 # lanes resolved to the tier-2 FAMILY but NOT the expected version = alias drift
|
||||
@ -249,17 +269,41 @@ else {
|
||||
else { Write-Flag 'MED' (Rel $cand) 'requested -SessionId not found' 'pass an existing session id, or omit to use the most recent' }
|
||||
}
|
||||
else {
|
||||
# (a) W5/S181 - CHON PHIEN KHONG LOC THEO HINH DANG THU MUC.
|
||||
# Ban cu loc 'Test-Path subagents\workflows' => phien chi co lane PHANG (Task)
|
||||
# la VO HINH. Do that @S181: 5 phien gan nhat deu wf=0, flat=2/24/5/1/1
|
||||
# => may bo qua ca 5, roi ve mot phien cu, ma van in 'TOTAL FLAGS: 0'.
|
||||
# Do la den-xanh-gia tren pham vi 0 - dung lop loi TC-09.
|
||||
# Tieu chi dung = 'co BAT KY vet spawn nao', khong phai 'co thu muc workflows'.
|
||||
$sessionDir = Get-ChildItem -Path $projDir -Directory -ErrorAction SilentlyContinue |
|
||||
Where-Object { Test-Path (Join-Path $_.FullName 'subagents\workflows') } |
|
||||
Where-Object { (Get-LaneFiles $_.FullName).Count -gt 0 } |
|
||||
Sort-Object LastWriteTime -Descending | Select-Object -First 1
|
||||
}
|
||||
|
||||
# (c) phien duoc chon co phai phien MOI NHAT khong? Neu khong, PHAI khai chenh lech.
|
||||
$newestAny = Get-ChildItem -Path $projDir -Directory -ErrorAction SilentlyContinue |
|
||||
Sort-Object LastWriteTime -Descending | Select-Object -First 1
|
||||
|
||||
if ($null -eq $sessionDir) {
|
||||
Write-Host ' [NO-SCOPE] no session with spawn transcripts under this project - nothing measured.' -ForegroundColor DarkGray
|
||||
}
|
||||
else {
|
||||
Write-Host (" session scope : {0} (last write {1:yyyy-MM-dd HH:mm})" -f $sessionDir.Name, $sessionDir.LastWriteTime)
|
||||
Write-Host ' scope = CURRENT session only, by design (old runs predate the convention; owner-decisions:64)' -ForegroundColor DarkGray
|
||||
# (c) W5/S181 - nhan ':262' cu duoc in VO DIEU KIEN, ke ca khi phien duoc chon
|
||||
# KHONG phai phien moi nhat => cau 'CURRENT session' co the SAI ma van in ra.
|
||||
# Nay: dung thi in nhu cu; khac thi KHAI CHENH LECH, khong doi ten cho de nghe.
|
||||
if ($null -ne $newestAny -and $newestAny.Name -ne $sessionDir.Name) {
|
||||
# DO, dung khang dinh. Ban dau tien cua dong nay viet cung 'nhung KHONG co vet
|
||||
# spawn nao' - mot cau CHUA DO, va no SAI ngay lan chay dau (phien moi nhat co 2 lane).
|
||||
# In con so that; ly do vi sao khong chon thi de nguoi doc tu ket luan.
|
||||
$newestLanes = (Get-LaneFiles $newestAny.FullName).Count
|
||||
Write-Host (" [KHAI] phien do KHONG phai phien moi nhat. Moi nhat = {0} (last write {1:yyyy-MM-dd HH:mm}, {2} lane)." -f `
|
||||
$newestAny.Name, $newestAny.LastWriteTime, $newestLanes) -ForegroundColor Yellow
|
||||
Write-Host ' => con so duoi day KHONG mo ta phien moi nhat. Doc kem cau nay.' -ForegroundColor Yellow
|
||||
}
|
||||
else {
|
||||
Write-Host ' scope = CURRENT session only, by design (old runs predate the convention; owner-decisions:64)' -ForegroundColor DarkGray
|
||||
}
|
||||
|
||||
# STRUCTURAL anchor: the model key of an assistant record sits immediately inside
|
||||
# "message":{ ... . Anchoring on the record shape (not a bare "model": grep) keeps quoted
|
||||
@ -267,8 +311,17 @@ else {
|
||||
# counted as if it were a real dispatch.
|
||||
$RX_MODEL = '"message"\s*:\s*\{\s*"model"\s*:\s*"([^"]+)"'
|
||||
|
||||
$wfRoot = Join-Path $sessionDir.FullName 'subagents\workflows'
|
||||
$laneFiles = @(Get-ChildItem -Path $wfRoot -Recurse -Filter 'agent-*.jsonl' -File -ErrorAction SilentlyContinue)
|
||||
$laneFiles = @(Get-LaneFiles $sessionDir.FullName)
|
||||
|
||||
# (d) W5/S181 - IN MAU SO. Khong co mau so thi 'do duoc 0 lech' va 'khong do lane nao'
|
||||
# nhin y het nhau tren man hinh - dung bay ma hop dong may soi ten goi ten o muc (3).
|
||||
$flatN = @(Get-ChildItem -Path (Join-Path $sessionDir.FullName 'subagents') -Filter '*.jsonl' -File -ErrorAction SilentlyContinue).Count
|
||||
$wfN = $laneFiles.Count - $flatN
|
||||
Write-Host (" mau so lane : {0} lane do / {1} lane ton tai (phang/Task {2} + workflow {3})" -f `
|
||||
$laneFiles.Count, $laneFiles.Count, $flatN, $wfN)
|
||||
if ($laneFiles.Count -eq 0) {
|
||||
Write-Host ' [KHAI] 0 lane - moi con so duoi day la tren pham vi RONG, KHONG phai bang chung sach.' -ForegroundColor Yellow
|
||||
}
|
||||
|
||||
foreach ($lane in $laneFiles) {
|
||||
$dispatch++
|
||||
@ -279,7 +332,10 @@ else {
|
||||
}
|
||||
$distinct = @($models | Sort-Object -Unique)
|
||||
|
||||
$wfName = Split-Path (Split-Path $lane.FullName -Parent) -Leaf
|
||||
# Lane PHANG nam thang trong 'subagents' => parent-leaf ra dung chu 'subagents',
|
||||
# doc len khong biet la gi. Dat nhan ro rang de phan biet 2 duong.
|
||||
$parentLeaf = Split-Path (Split-Path $lane.FullName -Parent) -Leaf
|
||||
$wfName = if ($parentLeaf -eq 'subagents') { 'flat/Task' } else { $parentLeaf }
|
||||
$agentType = '?'
|
||||
$metaPath = ($lane.FullName -replace '\.jsonl$', '.meta.json')
|
||||
if (Test-Path $metaPath) {
|
||||
|
||||
Reference in New Issue
Block a user