Files
solution-erp/docs/governance/adap-reports/2026-07-18-ai_infra-to-se-reply-tong-bo-ba-harness-sub-4-khoan.md
pqhuy1987 36cefcca62
All checks were successful
Deploy SOLUTION_ERP / build-deploy (push) Successful in 5m26s
[CLAUDE] Docs: vá 9 finding audit S143 + mở enum gap-incident-unrecorded
Audit 3 lane (reviewer FAIL 1C/4M/4m/1nit + 2 vai H24 = 6 FLAG), lead tự
re-đo từng finding trước khi vá.

CRITICAL/MAJOR:
- Re-anchor 5 adap-report: sha wal: tiền-closeout (1a0fa59/a458102/96ab2679)
  dangling sau squash -> hub clone không resolve nổi. Đổi sang 2757e41.
  LUẬT: cite outward = commit SẼ SỐNG sau squash, không bao giờ wal:.
- Đính chính claim OK-reachable: phép đo tự huỷ trong cùng phiên (squash lật
  sang squash-benign). Sự thật mạnh hơn: cả 2 nhánh lành đã chạy runtime.
- TRIPLE 17/17/17 chọn enum dễ: README:225 (tự xưng "ĐỦ roster") còn 14 +
  "4 monitor"; README:27 ("Roster THẬT") còn 14. Cả 2 vá -> 17/7.
- TOTAL 46 "== baseline" sai: baseline ghi trong repo là 45. Tách claim-DELTA
  (bền) khỏi claim-TUYỆT-ĐỐI (phải neo commit+thời-điểm).

FLAG view-residual-asym: STATUS:450 + README:190 còn khai "NO Write/Edit" như
cơ-chế chặn -> sửa thành tuyên-bố ý-định (runtime vẫn cấp, 9/9 vai; nhân-chứng
reviewer đã Write+Edit thật).

FLAG gap-carry-dropped: HANDOFF carry 13 -> 14, trả [carry:session-model-adopt].
FLAG gap-decision-sunk: 3 mục "Chờ-anh" chìm 2 nhãn phiên -> lên NEXT anh (10)(11)(12).

Enum flag_classes 10 -> 11: +gap-incident-unrecorded (anh duyệt). Vai
lead-omission từ chối tự chế class và escalate đúng luật CLOSED-enum.

Bài học acceptance: AC4 grep theo SỐ nên 2 site liệt-kê-TÊN lọt lưới.
Lần sau đếm PHẦN TỬ rồi so canonical, đừng so hình-dạng chuỗi.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-07-22 13:40:49 +07:00

35 lines
9.7 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 — 2026-07-18-ai_infra-to-se-reply-tong-bo-ba-harness-sub-4-khoan
> SE (SOLUTION_ERP) · wave adap đợt-9/10 (S141S142) · 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`**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` S138S139 "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).