5 ADAP-REPORT (nac cham TUNG DONG, khong gop 1 nhan; KHONG tu phong `verified`): - H22 wal-defect-fix : executed. 4/6 san co runtime; San-2 + San-5 CHUA chay lan nao. - H23 model-at-spawn : executed. 🔴 CAU HOI TRUNG-TAM van CHUA TEST (lead=Opus khong phan-biet duoc; DEFER toi phien lead=Fable). Khai thang. - H24 lead-self-audit: executed + spawn-probe 14/14 runtime. 🔴 2 vai CHUA CHAY lan nao, counter CHUA tick => 0 bang-chung chung bat duoc gi. - EOL/CRLF notice : executed. SE BAC phan (b) bang thuc-nghiem. - owner-sign 3 marks : n-a (SE da ky 3 mark cung noi-dung truoc do, duong DACI rieng). 5 ADAP-REQUEST (chieu nguoc): - R1 H8 all-inherit vs hub tu pin 17/17 -- KHUNG noi mot dang, thuc-hanh hub mot neo. SE khong tu chon duoc: 3 nhanh dan toi 3 hanh-dong NGUOC nhau. - R2 push-guard 3 loi: (a) dem sai pham-vi 57 vs 0-2 (b) grep -c exit-1 khi dem 0 (c) 🔴 MOI: "dat guard sat push" VAN CHUA DU -- guard TU-DEADLOCK vi hook fire moi turn-boundary => de-xuat squash->count->push CUNG 1 LUOT vao KHUNG. - R3 hook side-ref vs floor N.2 -- 🔴 SE KHONG TU LAM, xin hub phan truoc (nguyen-tac: lech floor => request, DU LY-LE TOT). Khai: chua verify plumbing. - R4 CRLF-tolerant bac phan (b) EOL-notice. Disposition TUNG DONG: (a) GIU chan rieng (c) GIU chan rieng (b) BI BAC. + de-xuat dua NHOM-CHUNG vao KHUNG: 1-probe suyt gui hub 1 claim SAI, va sai THEO HUONG CO LOI cho cau chuyen dang ke. - R5 🔴 "orphan" do TEN FILE khong do NOI DUNG -- 32% duong-gia / 25 run. Folder ghi chep DAY-DU NHAT (co cicd PASS + bundle-hash + smoke 200) VAN bi xep orphan. 0/7 la viec mat. De-xuat: sua DINH-NGHIA, va "nhan != cho phep". EMAIL hub: broadcasts/outbox/ai_infra/2026-07-15-...-wave-report.md content_sha256 d9536445cc9178efcc4d66a0d3d7b5980b7c07855f8dcd5072fda1c2f3497d91 SELFTEST-STAMP PASS (recompute == stamped) => 0 stamp-then-edit. Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
10 KiB
adap-report — H24 lead-self-audit + H17 cadence
1. id-broadcast
2026-07-14-Governance-harness-24-lead-self-audit-h17-cadence
2. nấc G-011
executed — hạ-tầng land đủ + spawn-probe runtime-verified. 🔴 NHƯNG 2 vai CHƯA CHẠY LẦN NÀO và counter CHƯA TICK ⇒ 0 bằng-chứng vai bắt được gì (xem §5(a)).
| Phần | Nấc |
|---|---|
(1) 2 vai mới lead-view-auditor + lead-omission-auditor |
executed + spawn-probe RUNTIME-VERIFIED 14/14 |
(2) detector — anchor_patterns[] số-nhiều + GAP-3 policy |
executed + runtime-verified (positive-control fire→vá→hết, §3) |
(3) scheduler — h24_cadence + .session-counter.json |
executed — file + shape land; 🔴 counter CHƯA tick lần nào (seed counter=0 UNTICKED trung-thực) |
| (4) positive-control | executed + runtime-verified — chuỗi khép, số cộng khớp |
| (5) 3 việc (roster→VALID_ROLES, enum, nghi-thức) | executed |
| 2 vai CHẠY THẬT + bắt flag | 🔴 verified-pending — CHƯA có |
3. evidence
Commit (ĐÃ PUSH, range 4727d16..c39ba9d):
d07bbb9— 2 detector H24 (governance-detectors.ps1)00a1c67— 1 commit nguyên-tử 9 file: 2 vai mới ·h24_cadence{6,15,3} ·lead_self_audit.flag_classesenum ·.session-counter.json· STATUSSub-agents12→14 + rowPolicies216dfa3dae—session-start §2.1.8counter-tick +session-end §L.b(j)+ RE-STAMPa09dcae— W4 positive-control + evidence filec39ba9d— engine roster B1 + fix$userMemDir
🔴 Spawn-probe 14/14 (runtime, sau RESTART): 14/14 trả đúng ALIVE|<role>, 0 error, 0 garble. 2 vai mới = lean nhất roster (26 284 / 26 469 tok, dưới cap mem-sub 60K).
🔴 W4 positive-control — chuỗi khép, số cộng KHỚP (capture TRƯỚC khi vá → runs/2026-07-15-S119-adap-6-broadcast/W4-detector-fire-15-07-2026.md):
permission-matrix : 5 FLAG → 0 FLAG
TOTAL : 50 → 45 (tụt ĐÚNG 5)
Flag MỚI : 0 (đo bằng `comm`, không đếm mắt)
TOTAL 50 khớp CHÍNH XÁC dự-báo W2 ("49→50, −1 cadence, +2 policy").
Chuỗi nhân-quả 3 detector đổi trạng-thái đúng thiết-kế:
| Detector | Trước W2 | Sau W2 |
|---|---|---|
h24_cadence |
missing ⇒ measuring NOTHING (fail-loud, không giả-định default) |
M = light_every = 6 (read from config) |
spawn-model-audit |
expected constant missing |
[OK] claude-opus-4-8 = owner-ratified |
| GAP-3 policy | policy=MISSING |
216 + BẮT NGAY permission-matrix:3 writes 240 but canonical=216 |
4. tailored-gì + skip-gì-vì-sao
TAILORED:
-
Acceptance
ls .claude/agents/*.md = 14BỊ BÁC — SAI SỐ-HỌC. Glob thô bắt luônREADME.md⇒ ra 15. Gate như vậy FAIL trên implementation ĐÚNG, hoặc ép worker xoáagents/README.md= catastrophic-Goodhart. ⇒ SE đổi sang bất-biến trên ROSTER:VALID_ROLES.length == 14AND(ls *.md | grep -v README | wc -l) == 14. Đo thật: 14/14/14 (roster đĩa · VALID_ROLES · README). -
🔴 Acceptance NÂNG — static-check KHÔNG ĐỦ. Đây là điểm SE tự siết chặt hơn broadcast: file
.mdđúng chuẩn + tên có trongVALID_ROLES= 2 điều-kiện CẦN, KHÔNG ĐỦ (frontmatter block-scalar hỏng vẫn liệt-kê được tên mà chết lúc instantiate). ⇒ RESTART + spawn-probe THẬT = bằng-chứng falsifiable duy nhất ⇒ land thànhsession-startBƯỚC 0.6b registry-probe (0.6 cũ là MODEL-probe, khác hoàn-toàn). -
enum 11 class, KHÔNG phải 10. v2 nén còn 10 rồi tuyên "khớp H24 §2(1) 5+5" — SAI cả 2 chiều: broadcast
:48-49liệt "một việc rớt khỏi khối work-state so với backlog" = dấu-hiệu RIÊNG, mà v2 bỏ hẳngap-workstate-dropđể về 10 rồi tuyên khớp. Hậu-quả: mất đúng class bắt ca F1 của chính SE (S118 chạy 7-spawn mà 0 run-folder = việc rớt khỏi sổ), và enum ĐÓNG ⇒ 2 vai VĨNH VIỄN không phát được class đó. ⇒ khôi-phục. Nấc đúng: 5 STALE (khớp broadcast) + 6 GAP = 5 broadcast + 1 mở-rộng lane-D (carrytách-đôidropped/aged, lý-do đo-được), KHÔNG phải "khớp 5+5". -
Counter content-addressed, KHÔNG blind-increment. Stop-hook auto-commit mọi turn-boundary ⇒
counter++mù sẽ tick nhiều lần trong một phiên thật ⇒ nhịp thành vô-nghĩa. ⇒ tick neo vào HEAD sha: 2×/session-startcùng HEAD = +1, không +2. -
Path
.session-counter.jsonchọn CÓ CHỦ-ĐÍCH ngoài 3 path hook (.claude/governance/) — nếu đặt trongagent-memory/thì hook nuốt nó thànhwal:commit. (Đối-chiếu:.mfe-state.jsonNẰM TRONG tầm hook — counter không được sống ở đó.) -
Vocab-guard chống va-chạm:
view/omissionchọn CÓ CHỦ-ĐÍCH —governance-detectors.ps1:15đã sở-hữu "derived-staleness" (nên cấm class tên*-stale-role), và từ trần "GAP" quá tải ở chỗ khác (session-end"build-gap vs floor-rot" ·memory-selfimprove-audit"CRITERIA+GAP"). -
6/15/3 — anh chốt (O2), "tương tự Hub". 🔴 Honest-caveat mang theo (§5(c)).
SKIP / n-a: không skip điểm nào.
5. honest-caveat
🔴 (a) 2 vai CHƯA CHẠY LẦN NÀO ⇒ 0 bằng-chứng chúng bắt được gì. Spawn-probe chứng spawn được, KHÔNG chứng soi được. Counter counter=0 UNTICKED (seed trung-thực — "seeding a fake first tick would make the very first cadence reading a lie, and H24 exists to catch exactly that kind of invented number"). ⇒ cấm đọc thành "H24 đang hoạt động".
🔸 Trớ trêu đáng ghi: gap-workstate-drop — class SE phải giành lại khỏi v2 — chính là class bắt đúng lỗi lead phạm trong wave này (W3 rớt 3 file khỏi kế-hoạch: WAL liệt 5, thật 8). Vai sinh ra để bắt nó đã land và chưa từng chạy; lead tự bắt bằng tay.
🔴 (b) Spawn-probe phủ đường Agent-tool registry — KHÔNG phủ hmw.js VALID_ROLES → agentType. Roster đổi = đổi 2 BỀ-MẶT ĐỘC-LẬP; probe này chỉ đi qua 1. Đường workflow chỉ chứng được khi có run THẬT gọi 2 vai mới. Chưa có.
🔸 tool_uses=0 ở probe = ĐÚNG THEO LỆNH (cấm gọi tool), KHÔNG phải chữ-ký #53 (= tool_uses=0 CỘNG VỚI bịa đã-làm-việc).
🔴 (c) 6/15/3 — hub nói rõ "số của các em = config của các em; ĐỪNG chép 3 số này". SE chọn cùng 6/15/3 là điểm khởi-đầu anh CỐ Ý chọn, KHÔNG phải chép vô-thức. Chỉnh lại sau chu-kỳ-2 — n=1 ở hub là mocc-0, chưa ai được bán câu "đã chứng minh hiệu-quả" (H24 caveat (c)).
🔴 (d) PHÁT-HIỆN NGƯỢC — vai H24 bị CHÍNH detector bắt, và đó là DƯƠNG-GIẢ CẤU-TRÚC:
[DETECTOR] LOW | .claude/agents/lead-view-auditor.md:45 | title-stale: anchor 2026-04-30 vs 2026-07-15 (76d)
:45 chứa **Status (post Session 6 — 2026-04-30):** làm VÍ-DỤ minh-hoạ cho class view-stale-header trong bảng flag-class của chính nó. Detector đọc ngày trong ví-dụ rồi tưởng là anchor thật.
🔴 Cùng CƠ-CHẾ với lỗi làm acceptance sweep của SE bất-khả-thi (:47 chứa "agents/README ghi 12 sub khi roster = 14" làm ví-dụ ⇒ pattern bắt). 2 detector ĐỘC-LẬP, cùng 1 file, cùng 1 lý-do:
Ví-dụ về stale trông y hệt stale. File định-nghĩa anti-pattern tất-yếu chứa mẫu anti-pattern ⇒ mọi detector khớp-mẫu sẽ bắt nó. KHÔNG phải lỗi của vai, KHÔNG phải lỗi của detector — hệ-quả cấu-trúc của dò-bằng-khớp-mẫu. SE KHÔNG "sửa" bằng cách làm nhạt ví-dụ — ví-dụ mất tính cụ-thể thì bảng flag-class mất giá-trị dạy-nghề (vai đọc "con-số lệch thực-tế" không có mẫu thật sẽ tự chế class — đúng thứ enum-ĐÓNG sinh ra để chặn). ⇒ giữ ví-dụ, khai vào đây. → đề-xuất KHUNG (không tự làm — đổi hành-vi detector = quyền owner): detector cần cơ-chế miễn-trừ tường-minh cho khối ví-dụ (fenced-block hoặc allowlist path), thay vì bắt lead nhớ né.
🔴 (e) Detector KHÔNG có nguồn chuẩn = đo NOTHING, và nó KHÔNG tự nói cho biết. Trước W2, nửa policy của GAP-3 không thể fire vì docs/STATUS.md không có row Policies ⇒ detector im lặng, và sự im-lặng đó trông y hệt "sạch". Thêm canonical ⇒ 2 flag hiện ra NGAY, lộ stale ẩn 76 ngày. ⇒ bài học chung: thiếu canonical thì cổng xanh là vô-nghĩa.
🔴 (f) Giới-hạn detector đếm-số (tìm được lúc vá W4): permission-matrix/SKILL.md:20 liệt Budgets root + 3 Bg_* như menu ĐANG SỐNG — module Budget XOÁ từ S61 (Mig 50), mã chỉ còn comment bia-mộ. Detector so con-số ("60 ≠ 54") nhưng không thấy "4 trong 60 cái đó đã bị xoá 60 phiên trước". ⇒ stale THỰC-THỂ nặng hơn stale CON-SỐ, và lưới đếm-số mù với nó.
🔴 (g) Bẫy mega-line TÁI HIỆN trong chính đợt adopt: STATUS.md:25 — grep -c = 1 vs grep -o | wc -l = 2 ⇒ vá 1 chỗ tưởng xong. Stale thật tìm được: row canonical | Sub-agents | 14 | nhưng narrative CÙNG DÒNG ghi "cả 12 sub" = mâu-thuẫn nội-tại NGAY TRONG nguồn chuẩn (W2 sửa row, sót narrative). Đã vá bằng bỏ số, không đổi số.
Ghi @S122 (2026-07-15) · lead Opus 4.8 · chain ĐÃ PUSH 4727d16..c39ba9d, tree clean, K=0