# adap-report — 2026-07-18-ai_infra-to-se-reply-tong-bo-ba-harness-sub-4-khoan

> SE (SOLUTION_ERP) · wave adap đợt-9/10 (S141–S142) · run vòng-1 `.claude/workflows/runs/2026-07-20-S141-adap-dot-9-10-bo-ba-sub/` (chết giữa chừng, 5/13 partial-honest) + vòng-2 CẮT-GỌT `.claude/workflows/runs/2026-07-22-S142-adap-9-10-vong-2/` (`wf_1e936b16-30c`, 2/2 lane, 0 garble) · spec v2 = fable-clone 5-lane + fold TRỌN fable-real gate GO-WITH-FIXES 0C/7M/9n.

## 1. id-broadcast
`2026-07-18-ai_infra-to-se-reply-tong-bo-ba-harness-sub-4-khoan` (type **reply**; `content_sha256` `58e28baedf05…`, re-verify tươi `python scripts/stamp_verify.py` **exit 0** @S143 2026-07-22).

## 2. nấc G-011
**executed-file / verified-pending-restart** — khối (B) khuôn canonical bộ-ba đã thành 3 persona + 3 diary + wiring nhịp 2-đầu-phiên trên đĩa; khối (C) khoản ①(a) APPROVE đã thành contract v2 trong `.session-counter.json`. 🔴 **3 vai trio CHƯA spawn lần nào** — cần restart CLI + owner consent. **CẤM đọc thành `verified-runtime`.** `verified` = quyền hub.

## 3. evidence (đo thật)
- **3 persona** (commit `2757e41`): `.claude/agents/harness-eval.md` **69 dòng / 6.261 B** · `harness-refine.md` **66 dòng / 6.012 B** · `harness-audit.md` **58 dòng / 5.135 B**. Frontmatter cookie-cutter khớp `lead-view-auditor.md`: `model: opus` + `effort: max` + `memory: project` + `maxTurns: 18`, `tools:` **không liệt kê Write/Edit** (⚠️ xem caveat §5 — điều này KHÔNG chứng minh runtime chặn được ghi).
- **3 diary seed**: `.claude/agent-memory/harness-{eval,refine,audit}/MEMORY.md` mỗi file **16 dòng**, non-empty, khai thẳng "S141 seed, chưa chạy lần nào".
- **TRIPLE 17/17/17** (đo lại tươi @S143): `ls .claude/agents/*.md | grep -v README` = **17** == `VALID_ROLES` trong `hmw.js` = **17** == enum `agents/README.md:236` = **17**. ⚠️ **ĐÍNH-CHÍNH (reviewer-gate @S143):** claim này ban đầu **chọn enum DỄ**. `agents/README.md` có **HAI** enum, và cái còn lại — dòng `:225`, tự xưng *"VALID_ROLES (whitelist `hmw.js` — **ĐỦ roster**)"* — lúc đó vẫn liệt **14**, thiếu đúng 3 trio, kèm câu "**4** monitor" (phải 7). Cùng lớp: `:27` tự xưng *"Roster THẬT"* cũng còn 14. **Cả 2 site đã vá @S143.** Nguyên nhân lọt: acceptance AC4 của wave grep theo **con số** (`roster 14|14/14|14 folder|14 vai`) trong khi 2 site này **liệt kê TÊN, không chứa số nào** ⇒ 0 hit và bị đọc thành "sweep sạch".
- **Wiring nhịp:** `session-start.md` (**30 dòng**) thêm `§2.1.9` bộ-ba consent-gated TUẦN TỰ eval→refine→audit + vết-2-lớp [M4] (proposal-line in cả khi Light + vết `trio: skipped` vào WAL) · `session-end.md` (**14 dòng**) thêm `§L.b(k)` mirror + header `(a)→(k)`.
- **Contract ①(a)** (commit `2757e41`; nội-dung land ở vòng-1, sha vòng-1 gốc đã squash): `.claude/governance/.session-counter.json` **11 dòng** — `_contract.fail_loud_on_regress` v2 (2 trigger/2 verdict) + `_tick_invariant_note`. JSON `ConvertFrom-Json` **exit 0**; chứa `SQUASH-BENIGN` + `transient`.
- **Contract v2 chạy THẬT ngay phiên này:** cửa `/tiep` @S143 áp đúng 3-điều-kiện — counter không lùi (16=16) · `git merge-base --is-ancestor 96ab2679 HEAD` **exit 0** → `OK-reachable` · `git cat-file -t` = `commit` ⇒ không fail-loud, không squash-benign, tick **16→17**. Đây là **lần đầu contract v2 được hành-quyết ở runtime** (nhánh OK-reachable).
  ⚠️ **ĐÍNH-CHÍNH quan trọng (reviewer-gate @S143) — phép đo này TỰ HUỶ trong cùng phiên:** closeout-squash cùng phiên đã nhấc `96ab2679` khỏi lịch-sử, nên chạy lại **BÂY GIỜ** cho `exit 1`, và detector in `[trace] SQUASH-BENIGN … expected closeout-squash drift`. ⇒ ai đọc report rồi tự chạy lại sẽ thấy **ngược** với câu trên nếu không có ghi-chú này. **Sự thật đầy đủ còn MẠNH HƠN bản khai đầu:** trong CÙNG một phiên, contract v2 đã chạy runtime **cả hai nhánh lành** — `OK-reachable` (lúc `/tiep`, tick 16→17) rồi `squash-benign` (sau closeout). Chỉ nhánh `object-missing`/`counter-lùi` là còn chưa gặp ca thật.
- **hmw.js** (**9 dòng**): `VALID_ROLES` +3 trio; `writeGuard` [n9] hoàn thiện enum read-only — thêm cả 4 monitor cũ (`tooling-auditor`, `harvest-curator`, `lead-view-auditor`, `lead-omission-auditor`, vốn thiếu sẵn = drift cũ) + 3 trio.
- **Detector suite** (đo tại `2757e41`, exit 0): claim bền = **wave thêm 0 flag** — có chứng before/after trong `runs/2026-07-22-S142-adap-9-10-vong-2/sub-task-1.md` (`baseline=46 final=46` + Compare-Object 1 delta duy nhất = flag CŨ dời dòng 138→148). `H25-role-notebook` đọc `roster=17 ; diaries-ok=17 ; flagged=0`.
  ⚠️ **ĐÍNH-CHÍNH (reviewer-gate @S143):** bản đầu viết "TOTAL **46 == baseline 46**" — chữ "baseline" ở đó là **số sống lúc chạy**, KHÔNG phải baseline ghi trong repo. Baseline ghi gần nhất là **45** (`STATUS.md` S137 "TOTAL 46→45 = đúng 1 FP classified" · `HANDOFF.md` S138–S139 "live TOTAL 45 giữ"). Con số đã đi **45 → 46 (chưa ai giải trình) → 47 (sau closeout S143)**. ⇒ **LUẬT rút ra:** số tuyệt-đối publish ra ngoài phải **neo commit + thời-điểm**; tách claim-DELTA (bền, có Compare-Object) khỏi claim-TUYỆT-ĐỐI (thối theo giờ, hub chạy lại sẽ ra số khác và đọc thành SE khai sai).

## 4. tailored-gì + skip-gì-vì-sao
- **Tailored (FORM SE, giữ FUNCTION-floor):** khuôn 5-câu của hub map vào topology SẴN CÓ của SE — 3 vai monitor `INFORM-only / propose-only`, **single-writer = lead** (đúng khuôn 4 monitor H1/H2/H24 đã chạy). Nhịp "2-đầu-phiên" gắn vào 2 lệnh vòng-đời sẵn (`session-start §2.1.9` · `session-end §L.b(k)`) — **0 lệnh mới**.
- **Tailored — consent-gate:** hub cho phép chạy theo nhịp; SE **thêm cổng consent** (owner gật mới chạy, mirror `sleep-check §2.1.2`) + **vết-skip vào WAL** để chuỗi bỏ-qua nhìn thấy được. Đây là siết CHẶT hơn floor, không nới.
- **Form-deviation khai thẳng [n1]:** hub câu-5a khuyên ghim **full-id** model; SE dùng **alias** `model: opus`. Lý do: alias là dạng **đã được đo** (`d68de5e7` — H23 precedence tested, n-nhỏ ≥2 dự-án), full-id **n=0 chưa ai thử**. Chọn dạng-đã-test có chủ đích, không phải bỏ sót.
- **Skip:** `harness_trio` **không** thêm cadence-key vào `memory-budget.json` — luật TUẦN-TỰ đã sống ở `§2.1.9` + trong chính persona; thêm key thứ hai = 2 đồng-hồ cho 1 nhịp (trộn với `h24_cadence` là hỏng cả hai). Skip **có lý do**, không phải behind.

## 5. honest-caveat
- 🔴 **Trio chưa spawn lần nào.** Toàn bộ nấc trên là **file-level**. Agent `.md` không hot-reload ⇒ phải restart CLI + owner consent mới có spawn-probe 3/3. Nếu first-run lộ sai contract, nấc phải hạ.
- 🔴 **"Chặn-bằng-thiếu-tool" KHÔNG có răng ở runtime — overclaim đã sửa (G-015).** Spec A1 chốt enforcement là *không liệt kê `Write/Edit` trong `tools:`*. Đo @S143: **9 vai read-only** (3 trio + 2×H24 + `reviewer` + `tooling-auditor` + `harvest-curator` + `investigator-codebase`) đều **không khai** `Write/Edit` trong frontmatter — **nhưng roster runtime vẫn cấp `Write, Edit`**, nối ở **cuối** danh sách tool. *(Bản đầu khai "6 vai" = under-count; reviewer-gate đếm đủ 9.)* 🔴 **Nay có NHÂN-CHỨNG TRỰC-TIẾP, không còn là suy-luận từ vị-trí:** chính `reviewer` — frontmatter `tools:` **0** `Write`/`Edit` — **đã dùng Write + Edit thật** để tạo `runs/2026-07-22-S143-closeout-audit/sub-reviewer-0.md` và sửa diary của nó (hiện trong `git status`). Vai bị cấm trên giấy đã ghi được, và git-diff bắt tại chỗ. Đối chứng phân biệt: `implementer-backend` khai `Edit, Write` ở vị-trí 2-3 và runtime hiện **đúng thứ tự file** ⇒ 6 vai kia là **append thêm lúc chạy**, không phải đọc từ file. ⇒ Whitelist frontmatter = **tuyên-bố ý-định**, KHÔNG phải cơ-chế chặn. Backstop THẬT vẫn là **git-diff commit-gate** + single-writer lead (đúng bài `feedback_monitor_residual_write_containment`, nay mạnh hơn: không chỉ Bash-write mà Write/Edit được cấp thẳng). Cơ-chế vì sao harness append thì SE **chưa xác định** (giả-thuyết `memory: project` cần ghi diary — **chưa kiểm**, không khai thành sự thật).
- **Ranh refine ⟂ lead-omission chờ ratify:** persona `harness-refine` đã ghi ranh sắc (LEAD session hot-feed/carry/work-state → NHƯỜNG `lead-omission-auditor`; refine CHỈ acts agent-memory corpus). Ranh này là **SE tự vạch**, chưa được hub/owner ratify.
- 🔴 **Neo bằng-chứng ĐÃ ĐỔI @S143 (reviewer-gate, class `bằng-chứng-tự-huỷ-sau-squash`):** bản đầu cite sha `wal:`-commit TIỀN-closeout (`1a0fa59`/`a458102`/`96ab2679`). Closeout-squash gộp chúng vào `2757e41` ⇒ các sha đó thành **dangling**: `cat-file -t` vẫn ra `commit` (sống nhờ reflog LOCAL) nhưng `merge-base --is-ancestor <sha> origin/main` = **exit 1** ⇒ **hub clone repo về sẽ KHÔNG resolve nổi**. Nội-dung thì nguyên vẹn trong `2757e41` ⇒ **chết con-trỏ, không chết việc**. Đã re-anchor toàn bộ sang `2757e41`. **LUẬT:** cite trong outward = commit **SẼ SỐNG sau squash**, KHÔNG BAO GIỜ `wal:` (đối chứng: wave trước cite `7760cdf`/`da349fc` → sống hết).
- ✅ **Đã push** — `2757e41` + `3f4310f` trên `origin/main` (thay câu khai chưa-đẩy ở bản đầu).
