Files
solution-erp/docs/governance/adap-reports/2026-07-14-Governance-harness-24-lead-self-audit-h17-cadence.md
pqhuy1987 72f68d1a2c
All checks were successful
Deploy SOLUTION_ERP / build-deploy (push) Successful in 5m32s
[CLAUDE] Docs: S131-S132 session-end — 3-gap báo hub + E-011/AS-15 nghi-thức-chạy-tắt + dồn H1/H2 S127→S131 (GAPS→CLOSED) + seed 2 diary H24 + ghi bù timeline S127-S129
- S131: 2 email hub stamped (3-gap e46863c8 + closure-cadence 641bf8ca ĐANG BÀN) + adap-report H24 §6 + tick 6→7; chết session-limit giữa §L.b → S132 /tiep nối verify-5/5
- E-011 + AS-15 error-ledger: 3 closeout S128-S130 chạy tắt (kẽ thiết-kế H22 pause/tiep ⟂ §L.b); guard episodic verified-S132; wire-tick-/tiep CHỜ ANH GẬT
- H2 dồn: 0-orphan/31 run.md · seed lead-{view,omission}-auditor MEMORY (retro S124 8379B/9967B) · rmdir stray S119 · S130 solo không nợ
- H1 dồn: rag-onboarding-guide:118/:134 contextual_retrieval true→false + gỡ "+15% recall" chưa-đo (owner-final f5ce2778); roster 14/14 khớp 4-nguồn; reviewer-gate verified-pending → spawn-probe carry
- STATUS +2 block (S131+S132 + ghi-bù S127→S129) · HANDOFF segment mới RE-STAMP 8 carry · session-log kèm marker Sàn-5 wf-run-id S127-S128
- (j) counter=7 · light 4/6 · deep 4/15 · OVERDUE none · (i) spot-check 3/3 · (h) n-a · curate reviewer 20.3→16.8KB seal-verified (S128, gộp từ wal-flush)

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
2026-07-17 08:38:27 +07:00

106 lines
13 KiB
Markdown
Raw Permalink Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

# 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_classes` enum · `.session-counter.json` · STATUS `Sub-agents` 12→14 + row `Policies` **216**
- `dfa3dae``session-start §2.1.8` counter-tick + `session-end §L.b(j)` + RE-STAMP
- `a09dcae`**W4 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-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-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ó **đã land****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****đ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**`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*
## 6. UPDATE S131 (2026-07-17) — flip nấc S124 + 3 operational-gap khi dùng THẬT
**Flip nấc so với §5(a):** 2 vai ĐÃ CHẠY lần đầu S124 (owner-triggered dogfood @counter=3, credited cả light+deep: lead-view **9 flag** · lead-omission **4 flag + 1 escalate** carry-age-vacuous; 0-garble) — caveat "CHƯA CHẠY LẦN NÀO" hết hiệu-lực ở vế *soi-được-lần-đầu*; vế *"chưa chứng-minh HIỆU-QUẢ chu-kỳ"* (caveat (c), n=1) **GIỮ NGUYÊN**. Counter đã tick tới 7 (S122→S131).
**3 operational-gap mới (S131 — lộ nhờ owner hỏi "sao monitor không thấy chạy"; evidence đầy-đủ + reviewer-gate PASS_WITH_FIXES: email `2026-07-17-se-to-ai_infra-h24-h22-van-hanh-3-gap`):**
- **GAP-1 tick-coverage (H24×H22):** tick (increment) chỉ wire ở `/session-start §2.1.8`; mạch pause→`/tiep` KHÔNG tick (`tiep.md` grep tick|counter = 0 hit) → S128·S129·S130 counter đứng 6. Cửa-sổ 8 nhãn S124→S131: **5 tick / 3 không-tick → counter dưới-đếm ~37% (≈1,6× theo đơn-vị nhãn phiên, window-dependent)**. Fix trong-khung: wire tick vào `/tiep` (chờ owner gật).
- **GAP-2 closeout-no-monitor (Harness-1 discipline):** 3 closeout liên tiếp (S128 `289ba96` 20:57 · S129 `295c70c` 23:16 · S130 `71757fc` 00:26) không spawn H1/H2 dù `§L.b` "KHÔNG skip" (diary mtime đứng 07-16 15:18, 0 commit sau đó chạm; S130 tự ghi "0 sub spawn") — và cũng bỏ luôn bước đọc-overdue `§L.b(j)`. Không detector nào đo lớp nghi-thức-có-chạy. Caveat: proxy 2-nguồn (mtime + commit-log), chưa loại cách đọc "có chạy mà không harvest".
- **GAP-3 per-role-diary mồ-côi (H24 landing × H2 coverage):** diary 2 vai H24 KHÔNG TỒN TẠI dù đã chạy S124 — findings kẹt ở run-folder (`sub-lead-view.md`/`sub-lead-omission.md`), lead sót harvest on-behalf (monitor RETURN-only không tự Write); `memory-budget.json:measured` 0 key cho 2 vai. Dual-accept đo per-RUN nên im ĐÚNG theo thước của nó; lớp per-ROLE chưa ai sở-hữu; harvest-curator (lớp bắt lỗi này) nằm trong GAP-2 → vòng tự-che khép kín.
**Trạng-thái:** 3 fix trong-khung trình owner @S131 (tick-wire `/tiep` · spawn dồn H1+H2 + harvest hồi-tố + error-ledger entry · H24 light-run sớm); 2 đề-xuất khung (tick đa-điểm-vào + 2 detector nghi-thức) gửi hub trong email trên.
---
*UPDATE @S131 (2026-07-17) · lead Fable 5 · reviewer-gate PASS_WITH_FIXES (2 major fencepost/overclaim đã sửa trước stamp: "8 nhãn/+4" → mốc-S124 7-nhãn/+4 · "gấp đôi" → ~37%/1,6× window-dependent)*