Files
solution-erp/docs/governance/adap-reports/2026-07-14-Governance-harness-24-lead-self-audit-h17-cadence.md
pqhuy1987 6dcd457dc7 [CLAUDE] Docs: W6 adap - 5 adap-report + 5 adap-request + email hub (selftest-stamp PASS)
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>
2026-07-15 15:29:07 +07:00

10 KiB
Raw Blame History

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 TICK0 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) detectoranchor_patterns[] số-nhiều + GAP-3 policy executed + runtime-verified (positive-control fire→vá→hết, §3)
(3) schedulerh24_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)
  • 00a1c671 commit nguyên-tử 9 file: 2 vai mới · h24_cadence{6,15,3} · lead_self_audit.flag_classes enum · .session-counter.json · STATUS Sub-agents 12→14 + row Policies 216
  • dfa3daesession-start §2.1.8 counter-tick + session-end §L.b(j) + RE-STAMP
  • a09dcaeW4 positive-control + evidence file
  • c39ba9d — 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:

  1. Acceptance ls .claude/agents/*.md = 14 BỊ BÁC — SAI SỐ-HỌC. Glob thô bắt luôn README.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 == 14 AND (ls *.md | grep -v README | wc -l) == 14. Đo thật: 14/14/14 (roster đĩa · VALID_ROLES · README).

  2. 🔴 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ó trong VALID_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ành session-start BƯỚC 0.6b registry-probe (0.6 cũ là MODEL-probe, khác hoàn-toàn).

  3. 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-49 liệ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ẳn gap-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 (carry tách-đôi dropped/aged, lý-do đo-được), KHÔNG phải "khớp 5+5".

  4. Counter content-addressed, KHÔNG blind-increment. Stop-hook auto-commit mọi turn-boundarycounter++ 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-start cùng HEAD = +1, không +2.

  5. Path .session-counter.json chọn CÓ CHỦ-ĐÍCH ngoài 3 path hook (.claude/governance/) — nếu đặt trong agent-memory/ thì hook nuốt nó thành wal: commit. (Đối-chiếu: .mfe-state.json NẰM TRONG tầm hook — counter không được sống ở đó.)

  6. Vocab-guard chống va-chạm: view/omission chọ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").

  7. 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ó đã landchư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đ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ỳ-2n=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ể firedocs/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:25grep -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