Files
solution-erp/docs/governance/harness-11-engine.md

424 lines
83 KiB
Markdown
Raw 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.

# Harness-11 — Engine bộ-nhớ-và-governance TỰ-BẢO-TRÌ (SE canonical)
> **Adopt S75 (2026-06-18)** — AI_INFRA broadcast `2026-06-18-Governance-harness-11` + checklist (inbox `broadcasts/inbox/ai_infra/`). Áp qua 2 workflow (IMPLEMENT `wf_c5e5844e-7c1` + REVIEW) per mandate ⑤. adap-report → `docs/governance/adap-reports/2026-06-18-Governance-harness-11.md`.
>
> 🔑 **Đây là CANONICAL cho engine governance của SE.** Doc khác (`agents/README`, `session-start/end`) **TRỎ về đây**, KHÔNG copy luật (B1 dogfood — một-chỗ-đổi).
>
> 🔭 **Phạm-vi (S79 consolidate · S81 +§G):** doc gốc Harness-11 (PHẦN A-D) nay **gom thêm §E (User-Mark H-12/13 canonical §P)** + **§F (Harness-14 Eval/Budget/Outcome)** + **§G (Harness-15 memory-budget per-agent token-based, S81)** — 1 engine governance hợp-nhất (mirror AI_INFRA "harness-all" consolidation). Ledger mark = `.claude/governance/ACTIVE-MARKS.md`.
>
> 🔑 **Nguyên-lý lõi:** "tự-bảo-trì" = luôn-TỰ-BIẾT khi có drift (detector tự-động, NÊU-CỜ ngay) **CHỨ KHÔNG tự-viết-lại** nội-dung/luật. DÒ tự-động; SỬA do người-chủ-trì (em-main) làm trên cờ. **BAR-KHÔNG-HẠ = một-người-ghi (single-writer)** — "tự-bảo-trì" TUYỆT-ĐỐI KHÔNG miễn-trừ chốt này.
---
## Bản-đồ artifact (engine SE)
| Cấu phần | Artifact | Nấc |
|---|---|---|
| PHẦN A — hot-mem auto-archive | `scripts/memory-archive-gate.ps1` + `.claude/agent-memory/memory-budget.json` (`archive_gate` params) + `session-end.md §L.b` | mechanized DRY-RUN planner + convention trigger (no-OS-hook) |
| PHẦN B — derived→canonical + freshness | luật B1 (dưới) + `scripts/governance-detectors.ps1` (C2 staleness) | detector mechanized + fix gated qua người |
| PHẦN C — 3 grep detector | `scripts/governance-detectors.ps1` (C1/C2/C3 + C4 self-exclusion + C5 resolve-condition) | mechanized NO-API, DÒ+FLAG-only |
| PHẦN D — orchestration | doc này (3-tier + 1-direction) + `session-start.md`/`session-end.md`/`ultra-on.md` cadence + `hmw.js` checkpoint | mix mechanized + convention |
| PHẦN E — User-Mark (H-12/13, canonical §P) + RC-signature | doc này §E (cơ-chế P1-P10) + `.claude/governance/ACTIVE-MARKS.md` (sổ-cái + display) + 4 lệnh `/user-mark-*` (interface) + `session-start §2.1.4`/`session-end §L.b(h)` (display) | convention (report-trước-đóng-dấu P4) + mechanized (display gắn-lệnh-phiên + tool-deny settings P9) |
| PHẦN F — Harness-14 Eval/Budget/Outcome | doc này §F (3-mức maturity + method) + `eval/` golden-set harness (F.2) + `memory-budget.json`/`measure-agent-memory.ps1` (F.3 = PHẦN A) | eval = executed-file + convention (manual) · budget = mechanized ALIGNED · outcome-correlation/hit-rate = Mức-2 tool-pending-data |
| PHẦN G — Harness-15 memory-budget per-agent (token) **+v2 §G.4 +v3 §G.5** | doc này §G (SÀN floor + 3-tầng token + **§G.4 hot-feed-lớn / L2-L3-bỏ-trần / %-print / ranh-giới-vai-trò** + **§G.5 full-parity 220/60/50 + spawn-fill-to-budget**) + `memory-budget.json` (`harness_floor` + `token_governor` v3 + `spawn_fill_directive` + `archive_gate.value_protect`) + `session-start §2.1.5`+**§2.1.6** + **`session-end §L.b(c)`** | 2-governor mechanized (byte ⟂ token config) + sàn-chức-năng = convention; **v3 (1)=config · (2)(3)=convention** |
| PHẦN H — Harness-16 MFE (memory-fidelity-**EVAL**) | doc này §H (coverage/retention method + maturity-tier) + `scripts/mfe-eval.ps1` (deterministic NO-API) + `eval/mfe/` (seed + README) + `memory-budget.json` (`mfe` config) + **READS** `token_governor` (single-source, never writes) + `session-start §2.1.6`/`session-end §L.b(c)` opt-in | deterministic $0 = executed-file + runtime-smoke (S93) · judge = **SCAFFOLD-only** (Mức-2 chờ age+independent-judge) · READS-not-writes budget |
| PHẦN I — Harness-17 vòng tự-cải-thiện (Đo→Tinh-chỉnh→Kiểm) | doc này §I + `scripts/memory-selfimprove-audit.ps1` (C1 spec-audit NO-API) + `.claude/governance/reinject-ledger.md` (B2 CG-1) + COMPOSE `mfe-eval.ps1`(A2)/`memory-archive-gate.ps1`(archive)/`governance-detectors.ps1`(change-gov) + `session-start §2.1.7`/`session-end §L.b(c)` | C1 spec-audit + A2 MFE + HCV-proxy = mechanized · B1/B2/B3 refine + C2 spot-check = convention · C3/CG-2 = REUSE §D.3/§G.2(b) |
| Canonical state (nguồn-chuẩn) | `docs/STATUS.md` CURRENT STATE table | — |
---
## PHẦN A — Hot-mem auto-archive by budget (🟡 TAILORED)
SE-present từ Harness-9 (L2 archive byte-exact + `_INDEX` substring-pointer + gist). Harness-11 thêm 3 tham-số chống-thrash + standing-gate:
- **A1 byte-gate @session-end** — `memory-archive-gate.ps1` đo byte mỗi `agent-memory/<sub>/MEMORY.md` vs cap. (Trigger = `session-end.md §L.b` convention người-kích — engine no-OS-hook.)
- **A2 additive MOVE** — bản-cũ-nhất → `archive/<YYYY-MM>.md`, NEVER overwrite (runtime-proven `h910-curate`: +N -0 byte-exact).
- **A3 `_INDEX` pointer-only** — 1 dòng/bản-ghi, con-trỏ substring sha-keyed (`memory-budget.json:19`).
- **A4 hysteresis** — dồn tới DƯỚI `low_watermark = 0.85 × cap` (không dừng ở vạch). [param `archive_gate.low_watermark_ratio`]
- **A5 keep-floor** — luôn giữ ≥ `keep_floor_entries` (5) bản-ghi gần nhất, không vét sạch.
- **A6 2-strike** — chỉ ĐỀ-XUẤT dồn khi over-cap ở 2 lần kiểm liên-tiếp (`strike_threshold`), chống alert-fatigue.
- **A7 NO-API L1-eval** — sau dồn: (i) resolve-con-trỏ (mọi pointer `_INDEX` grep-định-vị được trong archive) + (ii) byte-0-loss (tổng trước = sau). grep + measure only, KHÔNG API.
> 🟡 Con-số (cap 25600, 0.85, 5, 2) = TAILOR. SE chọn DRY-RUN planner (in kế-hoạch + người duyệt) thay auto-move — vì move = đụng memory canonical (D6/D9, không tự-ghi).
## PHẦN B — Derived-doc TRỎ canonical, KHÔNG copy (🔴 FUNCTION-FLOOR)
- **B1 — derived TRỎ canonical:** tài-liệu-dẫn-xuất (`CLAUDE.md` root/docs, `skills/*/SKILL.md`, `agents/README`) KHÔNG copy volatile-token (mig#·test#·gotcha#·table#·bundle-hash·model) — **TRỎ `docs/STATUS.md`** (canonical). Lý-do: một-chỗ-đổi-N-chỗ-drift = nguồn drift #1 (chứng-minh sống: root CLAUDE.md kẹt mig 53 qua S70-S74).
- **B2 — giữ readability:** dữ-kiện-ổn-định (tech-stack, module-table, convention) GIỮ inline đọc-được; CHỈ pointer cái HAY-đổi (tránh pointer-soup). Exemplar sẵn: `docs/PROJECT-MAP.md` (0 count-token, 241 dòng).
- **B3 — freshness-DETECT:** `governance-detectors.ps1` (detector C2) grep volatile-token derived vs canonical → FLAG lệch (KHÔNG tự sửa).
- **B4 — fix GATED qua người:** FLAG → em-main xem diff → ghi (single-writer). KHÔNG đường tự-ghi-thẳng. (Mechanized backstop: git-diff commit-gate + run-folder TRACKED.)
## PHẦN C — 3 bộ dò grep tất-định (🔴 FUNCTION-FLOOR MANDATE)
Tất cả ở `scripts/governance-detectors.ps1` — NO-API (grep/measure only), **DÒ+NÊU-CỜ-only** (không tự sửa). Chạy @session-start (D1) báo cờ.
- **C1 broken-pointer** — grep ref nội-bộ (gotcha #N > max · `[[wikilink]]` target thiếu) → FLAG dangling.
- **C2 derived-staleness** (= B3) — count-token derived vs STATUS canonical (+ cross-check disk: mig = `ls Migrations/*.cs` excl Designer/Snapshot; gotcha = max `### N.` trong gotchas.md) → FLAG mismatch + 'canonical-itself-stale' nếu STATUS lệch disk.
- **C3 vocab-fork** — alias-set (seed: `wave-folder↔run-trace`, `Dự trù PRO↔Ngân sách PRO`, `two-tier↔all-inherit`) → FLAG khi ≥2 biến-thể cùng sống.
- **C4 self-line exclusion** 🔴 — detector loại path tự-mô-tả (`governance-detectors.ps1`, `harness-11-engine.md`, `broadcasts/**`, `runs/**`) TRƯỚC khi FLAG → 0 self-match.
- **C5 resolve-condition** 🔴 — mỗi FLAG kèm `resolve: <điều-kiện-gỡ-cờ>`. 2-strike anti-repeat = convention em-main áp (detector stateless per-run; KHÔNG over-claim mechanized-2-strike cho detector).
## PHẦN D — Engine điều-phối (🔴 FUNCTION-FLOOR)
### D.1 — Bảng-nhịp 4-lớp (SE-present, cadence-file)
- **D1 session-start = DÒ+BÁO** — `session-start.md §2.1.1` monitor RE-REPORT + §2.1.2 budget-audit + **chạy `governance-detectors.ps1` báo cờ** (KHÔNG sửa). INFORM-only.
- **D2 session-end = BẢO-TRÌ+archive** — `session-end.md §L` (byte-gate A + harvest-GATE 5-trục + gác-cờ chưa xử-lý).
- **D3 per-turn = chắt-lọc-APPEND** — harvest-LIỀN sau mỗi fan-out (`ultra-on.md` P3, C4 primary), qua em-main.
- **D4 threshold = workflow-gate** — chạm hệ-trọng → bắt qua Workflow (`hmw.js:76` checkpoint THROW = mechanized tripwire). run-id = bằng-chứng.
### D.2 — Tách-an-toàn 3-tầng (🔴 NHÃN-HOÁ EXPLICIT — đây là chuẩn-hoá H11)
> 🧪 **Phép-thử-ranh-giới tất-định:** hỏi "thao-tác này có git-diff vô-hại-ngữ-nghĩa không?" → CÓ = tầng AUTO; chạm prose/luật/con-trỏ/thẩm-quyền/copy = tầng DÒ+FLAG. KHÔNG tin nhãn "máy-móc thôi mà" — xét git-diff THẬT.
| Tầng | Cái gì | Đường-đi |
|---|---|---|
| **D5 — AUTO (semantic-null)** | dồn-archive ADDITIVE (byte-0-loss) · dựng-lại `_INDEX` · APPEND-chắt-lọc gist · đo-byte | tự-động OK (có A7 NO-API gate bảo-chứng) |
| **D6 — DÒ + NÊU-CỜ** | mọi thứ chạm prose/luật/con-trỏ-mục/thẩm-quyền/copy-chéo (3 detector C + monitor H1/H2) | chỉ FLAG → em-main soạn bản sửa (KHÔNG nhánh tự-ghi) |
| **D7 — OWNER-APPROVE** | đổi-luật · đổi-thẩm-quyền · ghi-lan derived · đổi-tên-khái-niệm · nâng-guard chính-thức | anh (project-owner) duyệt trước hiệu-lực — **vận-hành-hoá bởi report-trước-đóng-dấu §E.2** (đổi-luật cấp-governance đi qua quy-trình 4-bước + chữ-ký RC) |
### D.3 — Bốn chốt chống-tự-hỏng
- **D8 khoá-chiều 1-CHIỀU** 🔴 (codify mới H11) — DÒ chỉ đi **canonical → derived** (bắt derived cũ). **TUYỆT-ĐỐI KHÔNG** lấy giá-trị từ derived ghi ngược canonical. (Vd: detector đọc STATUS so root CLAUDE.md; KHÔNG bao giờ đọc root CLAUDE.md ghi vào STATUS.)
- **D9 chỉ-APPEND single-writer** 🔑 BAR-KHÔNG-HẠ — mọi ghi-bộ-nhớ = APPEND qua em-main; KHÔNG sub tự ghi đè memory-chính/luật. Mechanized: `store_memory` strip mọi sub (runtime S48 0/8) + hmw.js SCHEMA return-delta-only.
- **D10 ghi qua file-tool only** — Write/Edit, KHÔNG shell-append (tránh mojibake/$-expansion = gotcha #61). hmw.js:111 cấm Bash-write MD. (convention — Bash residual chưa block cứng.)
- **D11 archive = MOVE-không-XOÁ** — byte 0-loss (md5sum/grep-Fxf artifact `_ledger.md:14`).
---
## PHẦN E — User-Mark (Harness-12/13) + chữ-ký RC quyết-định = canonical §P (🔴 FUNCTION-FLOOR)
> **Adopt S79 (2026-06-20)** — AI_INFRA `2026-06-19-Governance-harness-all-update` (User-Mark) + `…rc-signature` + **canonical §P** (P1-P10). Neo + cưỡng-chế **quyết-định cấp-governance** (luật/chính-sách/kiến-trúc/harness) để không-quên + không-giảm-bằng-cảm-tính. **KHÔNG** dùng cho vận-hành/tác-vụ thường-ngày (P6 scope-discriminator).
>
> 🔑 **3 cấu-phần (B1 phân-vai):** §E này = **CƠ-CHẾ** (codify §P P1-P10 cho SE) · ledger = `.claude/governance/ACTIVE-MARKS.md` (SỔ-CÁI + display, single-writer em-main) · interface = 4 lệnh `/user-mark-active-high|active|medium|disable`. Cấp do em-main gán + anh confirm (KHÔNG agent tự-phán cảm-tính — P8).
### E.1 — Chữ-ký + 4 cấp + binding (P1·P2·P3·P8)
- **P1 Chữ-ký:** mỗi mark mang `RC-pqhuy1987-dd-mm-yyyy-hh-mm-ss` (REUSE format rc-signature, timestamp lúc anh sign-off). Bằng-chứng-có-niêm: minh-oan · tranh-luận-bằng-bằng-chứng (debate khi ruling mâu-thuẫn) · trách-nhiệm-2-chiều. Forward-only (no-retrofit từ 2026-06-20).
- **P2 4 cấp deterministic** (anh-instruction trực-tiếp, KHÔNG design-invention) — **trực-giao** với tầng-an-toàn D5-D8:
| Cấp | Hành-vi xác-định (P8) | Vi-phạm |
|---|---|---|
| 🔴 **Active-High** | bắt-buộc phải làm (cao nhất) | → `error-ledger.md §L.a` RCA (P9) |
| 🟢 **Active** | follow + nhắc-lại xuyên-suốt | nhắc-lại (KHÔNG mandate RCA-tự-động) |
| 🟡 **Medium** | neo quyết-định chưa-rõ; follow nhưng **skippable** | — |
| 📦 **Disable** | tắt (reversible, giữ audit-trail) | — |
- **P3 Binding nhị-phân:** **có stamp = LỆNH · không stamp = đang BÀN** (thảo-luận ≠ lệnh execute).
- **P8 No-cảm-tính:** mỗi cấp = hành-vi DETERMINISTIC, KHÔNG agent tự-phán. "Tự-skip-workflow tiết-kiệm-token" = lệch → theo rule TƯƠNG-ĐỐI H6.1 (substantive→HMW · trivial→solo), KHÔNG số-magic.
### E.2 — Flow DACI report-trước-đóng-dấu + scope-check (P4·P6 = vận-hành-hoá D7, 🔴 floor)
Đổi-luật cấp-governance đi qua **các bước, KHÔNG được tắt** (4 lệnh `/user-mark-*` thực-thi):
1. **Scope-check (P6):** "Có đổi CANONICAL §-rule / authority-routing không? KHÔNG → đây là **work-flow** → KHÔNG mark." (User-Mark = Gov-decision, KHÔNG task-execution.)
2. **Adjust-Gov (P4):** soạn nội-dung luật mới — em-main **single-writer D9**, KHÔNG fan-out.
3. **Double-check (P4):** quét `§A-§E` + `error-ledger.md` Active-Guards + `ACTIVE-MARKS.md` + `governance-detectors.ps1 C3` tìm mâu-thuẫn (cross-harness / vocab-fork).
4. **🔴 Báo anh kèm 3-7 tiêu-chí khách-quan (P4):** điểm-đau đã-xảy-ra-thật · khối-lượng · chất-lượng (KHÔNG quy-mô-đội / thời-gian-tuổi); cấp đề-xuất; §-target; supersedes?; mâu-thuẫn đã-rà. **CHỜ anh confirm. KHÔNG stamp trước báo-cáo.**
5. **Stamp (anh confirm):** `RC-pqhuy1987-dd-mm-yyyy-hh-mm-ss` → ghi `ACTIVE-MARKS.md` + áp §-change vào canonical.
> NEW vs D7-cũ = scope-check tường-minh (P6) + rà-mâu-thuẫn (bước 3) + 3-7 tiêu-chí khách-quan (P4). D7 vốn = "owner duyệt trước hiệu-lực"; §E.2 làm rõ QUY-TRÌNH, KHÔNG tạo flow song-song (tránh C3).
### E.3 — Cưỡng-chế 2-kênh, KHÔNG hook (P9 — = XÁC-NHẬN cái SE đã chứng-minh)
| Kênh | Vi-phạm | Cưỡng-chế | Bằng-chứng SE sẵn-có |
|---|---|---|---|
| **Behavioral-mark** | ghi `error-ledger.md §L.a` (AS-table) + **RCA** | convention (kỷ-luật người+AI) | §L.a 2-strike-promote đã chạy |
| **Tool-action-mark** | **permission-DENY**`.claude/settings*.json` (deny-absolute) — **KHÔNG hook** (hook fails-open = observability-only) | mechanized (config) — *xem D10: Bash residual chưa block cứng = gap honest* | **E-006/AS-10** (`error-ledger.md`): hook fails-open → `store_memory` allowlist-strip = gate THẬT; git-diff = backstop |
### E.4 — Lifecycle + storage/SHOW (P5·P7)
- **P5 Lifecycle:** con-trỏ-XUÔI 1-chiều (mark-mới `supersedes:` mark-cũ) + cập-nhật status/cấp mark-cũ (downgrade HOẶC →Disable). 🔴 supersede mark **Active-High** = anh-confirm RIÊNG (KHÔNG auto-downgrade). **KHÔNG freeze-immutable** (git-history audits; anh sửa/đổi-ý qua re-stamp). Disable ≠ revert-rule (tách-bạch).
- **P7 Storage + SHOW:** ledger `.claude/governance/ACTIVE-MARKS.md` (single-writer em-main B3; P7 location-agnostic). 🔴 **SHOW @session-start §2.1.4 + @session-end §L.b(h)** status-filtered: Active-High + Active HIỆN rõ · Medium tóm-tắt · Disable/superseded ẨN.
### E.5 — Objective-only + neo-lý-tính (P10 = `rules.md §6.6`, 🔴 floor)
- Adopt/giảm function bằng **điểm-đau + khối-lượng + chất-lượng KHÔNG quy-mô-đội / KHÔNG thời-gian-tuổi**; "overkill/quá-mức-solo-dev/cảm-tính/cũ-rồi-nên-bỏ" = **BÁC**.
- **AI = neo-lý-tính:** gặp quyết-định biện-minh bằng cảm-giác → em-main **nêu-cờ + bác trên cơ-sở khách-quan**, KHÔNG xoa-dịu. Thẩm-quyền phán "cần/thừa" = **tầng xuyên-dự-án (AI_INFRA)**, KHÔNG dự-án đơn-lẻ. (Bối-cảnh: rule nảy từ audit thật — 1 dự-án từ-chối chức-năng chống-lách-engine bằng "quá mức solo-dev"; điều-phối ban-đầu cũng xoa-dịu trước khi được chỉnh.)
---
## PHẦN F — Harness-14: Eval / Budget / Outcome (🟡 method TAILORED + 🔴 rule-floor)
> **Adopt S79 (2026-06-20)** — AI_INFRA `2026-06-20-Governance-harness-14-adopt` + checklist-14. Cơ-chế **đo chất-lượng + định-cỡ bộ-nhớ** trên nguyên-lý nền: **mọi con-số suy từ nhu-cầu thật, KHÔNG đặt-cứng tùy-tiện.** 🔴 rule bắt-buộc (time/age = false-proxy) đã codify ở mark `RC-…10-29-11` + `rules.md §6.6` — §F này = phương-pháp + trạng-thái-độ-chín honest.
**4 nguyên-lý nền:** ① suy-ra-từ-nhu-cầu KHÔNG đặt-cứng (cấm "số ma-thuật") · ② loại proxy-sai (time/age/quy-mô-đội) · ③ chỉ-báo phục-vụ kết-quả (tối-ưu chỉ-báo bỏ kết-quả thật = kinh-tế-giả) · ④ trung-thực về độ-chín.
### F.1 — Trạng-thái độ-chín 3 MỨC (🔴 honest — KHÔNG nâng mức thấp lên cao)
- **Mức 1 LÀM-ĐƯỢC-NGAY:** eval-precision (đo chất-lượng truy-xuất) — SE CÓ harness chạy thật (xem F.2).
- **Mức 2 ĐANG-TÍCH-LŨY (có công-cụ ĐO, CHƯA đủ data ra số):** budget-theo-hit-rate (cần nhật-ký truy-cập memory) + tương-quan-outcome (cần nhiều tuần đánh-giá). **🔴 Cổng dữ-liệu: dưới ngưỡng → DỪNG, giữ quy-ước đo-được, KHÔNG bịa số.**
- **Mức 3 TẦM-NHÌN-XA (tạm gác):** trần "nhiễu ngữ-cảnh" — không mốc-cứng đáng-tin theo nghiên-cứu → sao-bắc-đẩu định-hướng, KHÔNG ép số.
### F.2 — Eval-precision (🟡 — SE đã CÓ, map onto, honest)
SE đã có RAG golden-set harness (KHÔNG phải gap): `eval/golden-set-solution_erp.jsonl` (14 query: 11 pos + 3 neg) + `eval/evaluator.md` (Spec-A strict, recall@5 gate ≥0.7, rerank ≥0.7 **per-query confident-hit** [gate aggregate avg-rerank 0.65], Case A/B/C/D triage) + `eval/trial-state-lock.json` (baseline recall@5=1.0, chunk-drift 5%). Nguyên-lý H-14 áp:
- **Cỡ golden-set suy từ độ-chính-xác mong-muốn** (công-thức cỡ-mẫu) KHÔNG đặt-cứng — hiện 14 query là quy-ước-đo-được; khi mở-rộng → suy theo confidence-level.
- **Chống nhồi-từ-khóa:** query test KHÔNG lặp nguyên-văn từ-khóa tài-liệu đích (đo năng-lực thật, không trúng-vì-trùng-chữ).
- **Ngưỡng theo đường-nền tương-đối** (so `trial-state-lock` baseline + biên tụt nhỏ) KHÔNG mốc tuyệt-đối tự-đặt; **mẫu-số động** (tỉ-lệ theo số query thật-có).
- 🟡 **Honest nấc:** harness EXISTS + well-specified nhưng **weekly-Friday MANUAL** (`evaluator.md` chạy MCP `search_memory` tay), CHƯA automated trong `scripts/`; RAG re-index = AI_INFRA-owned op. → **executed-file + convention (manual gate)**, KHÔNG mechanized-CI. KHÔNG overclaim "tự-chạy".
### F.3 — Budget bộ-nhớ (🟡 ALIGNED — đo-thật, KHÔNG số-ma-thuật)
- **Đã ALIGNED:** `memory-budget.json` cap = **seed-by-MEASURE** (`scripts/measure-agent-memory.ps1`, `_note` "SEEDED BY MEASUREMENT NOT imagined headroom"); `archive_gate` = hysteresis 0.85 + keep-floor-5 (newest-protection) + 2-strike — **0 núm decay-theo-tuổi** (≙ mark `RC-…10-29-11`). Trần = hệ-quả (dung-lượng ÷ tốc-độ-thay-mới qua A4 hysteresis), KHÔNG retention-by-age. Cross-ref **PHẦN A**.
- 🟡 **Hit-rate sizing = Mức 2 chờ-tích-lũy:** SE chưa có công-cụ đếm-lượt-truy-cập-memory → budget giữ **quy-ước đo-được** (đo byte thật). KHÔNG trình như "đã suy từ hit-rate".
### F.4 — Outcome (🔴 floor + 🟡 tích-lũy)
- 🔴 **Chống kinh-tế-giả (Goodhart) — tức-thì:** cắt chất-lượng tiết-kiệm token → làm-lại → tốn HƠN (mark/§6.6 + H8.2 "KHÔNG hạ model"). Mỗi chỉ-báo tự-động (recall/hit-rate/byte) gắn câu hỏi "có làm anh chốt-OK sớm hơn không". Áp NGAY, không chờ data.
- 🔴 **Ground-truth = đánh-giá chủ-dự-án** (đo gián-tiếp qua số-lần-làm-lại); chỉ-báo tự-động chỉ là trung-gian.
- 🟡 **Tương-quan chỉ-báo↔đánh-giá-người = Mức 2 chờ-tích-lũy:** SE chưa có công-cụ thu-đánh-giá + đếm-rework có cấu-trúc (error-ledger §L.a RCA = mầm gần nhất) → cần nhiều tuần mới khẳng-định tương-quan. **KHÔNG bịa số tương-quan "đẹp".**
> **Tổng nấc §F (honest, checklist-14):** 🔴 floor (loại proxy time/age 4 mục + outcome 2 mục) = ĐẠT qua mark + §6.6 + §F.4. 🟡 method = eval-precision **executed-file + convention** (manual, không mechanized-CI) · budget **ALIGNED mechanized** (config no-decay) · outcome-correlation + hit-rate = **Mức-2 tool-pending-data** (KHÔNG trình như xong). Các con-số AI_INFRA tự-đo (cỡ golden-set, recall) = bằng-chứng của HỌ, KHÔNG mục-tiêu áp-cứng cho SE.
---
## PHẦN G — Harness-15: Ngân-sách bộ-nhớ per-agent (token-based) — SÀN + 3 tầng, BẮT BUỘC dùng đủ (🔴 FUNCTION-FLOOR + 🟡 number anh-owner) **+v2 §G.4 +v3 §G.5**
> **Adopt S81 (2026-06-20)** — AI_INFRA `2026-06-20-Governance-harness-15-memory-budget` + checklist-15 (inbox `broadcasts/inbox/ai_infra/`). Áp qua 2-process (IMPLEMENT em-main single-writer D9 + REVIEW workflow) per mandate §6. adap-report → `docs/governance/adap-reports/2026-06-20-Governance-harness-15-memory-budget.md`.
>
> **Adopt-delta S82 (2026-06-21)** — AI_INFRA `2026-06-20-Governance-harness-15-v2-hot-feed-update` (type: update · supersedes_scope = tier-1-sizing + L2/L3-caps ONLY). Re-verify CHỈ phần đổi → **§G.4** (Tầng-1 hot-feed-lớn + L2/L3 bỏ-trần + %-print 2-đầu-phiên + ranh-giới-vai-trò). Phần sàn-chức-năng gốc (§G.1-G.3) **KHÔNG đổi**. adap-report → `2026-06-21-Governance-harness-15-v2-hot-feed-update.md`.
>
> **Adopt-delta S83 (2026-06-22)** — **anh owner-directive trực-tiếp** (KHÔNG broadcast): full AI_INFRA parity (lead 220K · mem-sub 60K · wf-sub 50K) + **spawn-fill-to-budget** (sub Tầng-1 = MEMORY.md byte-cap + spawn-prompt giàu) → **§G.5**. Sửa self-shrink S82. Mark H-15 v3-delta (`ACTIVE-MARKS.md`).
>
> **Adopt-delta S94 (2026-06-29)** — **anh owner-directive trực-tiếp** (KHÔNG broadcast): lead **220K→380K** (SE-specific override để chứa full canonical read-set ~368K; lead KHÔNG còn AI_INFRA-parity, subs giữ 60K/50K). ⚠️ ~97% fill = context-rot trade-off **owner-accepted** (honest_caveat §5); trần budget ⟂ harness **Read-25K/call** — mega-line STATUS/HANDOFF VẪN cần re-tier mới Read-trọn (cap raise KHÔNG unblock Read). §G.5 body giữ S83-record (no-retrofit), số sống = `budget.json` live-read. Mark H-15 v4-delta `RC-pqhuy1987-29-06-2026-23-25-50` (`ACTIVE-MARKS.md`).
>
> 🔑 **Cốt-lõi:** ngân-sách bộ-nhớ = **mức TẬN-DỤNG-TỐI-THIỂU phải đạt, KHÔNG phải trần để dè-xẻn.** Tiết-kiệm-token = **quên-việc** (rơi trạng-thái giữa phiên) = KHÔNG tiết-kiệm thật (làm-lại tốn HƠN — cùng họ Goodhart §F.4/§6.6). Khoảng-trống quan-sát hay rơi đúng vào **chính LEAD** (lead tự-nạp kiến-trúc/luật nhưng bỏ quên trạng-thái-công-việc) → §G.2(c) vá đúng chỗ đó.
### G.1 — Mô-hình = SÀN cố-định + 3 tầng được-quản-lý (A1/A2/A3)
- **SÀN-harness (A1, đo-được):** phần cố-định mỗi spawn = tool-schema + framing + persona/role + lead-pasted base-doc-slice + prompt. **SE TỰ đo (KHÔNG mượn số AI_INFRA):** persona đo-thật `.claude/agents/*.md` (4.3KB13.3KB ≈ 1.3K4.0K tok /3.3); tool-schema+framing harness-injected **SE ước-lượng-riêng** (trùng AI_INFRA ~21K vì **cùng-họ-toolset** Read/Write/Edit/Bash/Grep/Glob/Skill/RAG, **KHÔNG mượn-số**) → **floor ≈ 21K measured-estimate → round-up 30K (cap RIÊNG SE)** (`memory-budget.json:harness_floor`). Honest: persona = đo-thật-byte; phần harness-injected = ƯỚC-LƯỢNG (không byte-count cục-bộ được).
- **A3 tách-nhà chống-đếm-trùng:** persona + lead-docs thuộc **SÀN**, KHÔNG đếm vào L1-managed. L1-managed = own agent-memory + archive `_INDEX` + work-state block (`memory-budget.json:harness_floor._note`).
- **3 tầng managed (A2 — cập-nhật v3 §G.5):** Tầng-1 = **HOT-FEED LỚN per-role** (lead **220K** · agent-ký-ức **60K** · agent-workflow **50K****anh-set FULL AI_INFRA parity S83 v3**, supersede self-shrink S82; nạp đầy 4 bucket WIP·lỗi-lặp·tồn-đọng·quyết-định-chờ) · L2/L3 **BỎ TRẦN** (on-demand, no artificial tier-cap, chỉ chặn bởi cửa-sổ-ngữ-cảnh model). 🔴 con-số = **quyền CHỦ-DỰ-ÁN (anh)** — em-main THỰC-THI-đúng-số + BÁO-% (KHÔNG tự-tinh-chỉnh), xem §G.4/§G.5 (`token_governor`).
### G.2 — 6 sàn-CHỨC-NĂNG bắt-buộc (🔴 — map onto SE, honest mechanized-vs-convention)
| Sàn | SE map | Nấc | Cơ-chế-hóa vs quy-ước |
|---|---|---|---|
| **đo-SÀN** (A1) | persona đo-thật-byte **TRỰC-TIẾP** (`Get-ChildItem`, **KHÔNG** qua `measure-agent-memory.ps1` — script đó chỉ đo agent-memory-tier byte = byte-governor, KHÁC floor) + harness-injected ước-lượng + round-up 21K→30K | runtime(đo)→executed-file | mechanized (byte-count trực-tiếp) + convention (ước-lượng harness-injected + round-up) |
| **(a) nạp-đầy L1** | nguyên-tắc dùng-đủ-ngân-sách, no-token-saving, no-garbage (`token_governor._note`) | executed-file → runtime mỗi spawn | **convention** (kỷ-luật nạp) |
| **(b) cắt theo GIÁ-TRỊ** | `archive_gate.value_protect` (gotcha/anti-pattern/recurring/root-cause GIỮ-L1 bất-kể tuổi) ⟂ keep-floor newest-5 (recency) = 2 trục bảo-vệ trực-giao = mark `RC-…10-29-11` áp xuống tầng-bộ-nhớ | executed-file | **convention** (em-main judge; patterns = grep-hint DRY-RUN advisory, KHÔNG auto-exclude) |
| **(c) work-state block @start** | `session-start §2.1.5` LEAD nạp+phát-biểu: roadmap đang-chạy + việc-dở + quyết-định-chờ + lỗi-lặp-lại | executed-file → runtime mỗi phiên | **convention** (kỷ-luật đầu-phiên, vá khoảng-trống-LEAD) |
| **(d) 3 tệp-chốt L1** | (1) persona `.claude/agents/<name>.md` + (2) own `agent-memory/<name>/MEMORY.md` auto-inject + (3) MEMORY-PACK slice (`hmw.js` args) — **đã CÓ SẴN SE** | executed-file | convention (verify-declare) |
| **(e) 2-governor** | byte (tiers/archive_gate) ⟂ token (`token_governor`) — giữ CẢ HAI, KHÔNG gộp (đo 2 thứ khác: file-trên-đĩa ≠ ngữ-cảnh-nạp) | executed-file | **mechanized** (2 config tách) |
### G.3 — Tùy-chỉnh (🟡) + honest tổng
- 🟡 con-số SÀN (SE tự-đo 30K) · con-số 3 tầng (theo khối-lượng ERP nhiều-module) · hình-thức work-state block (SE = session-start REPORT + carry-list). Con-số AI_INFRA (~21K) = bằng-chứng HỌ, **KHÔNG** áp-cứng SE.
- **Honest nấc tổng:** mechanized = chỉ **(e) 2-config byte+token** + **đo-SÀN** (qua measure script); **5/6 sàn-chức-năng = CONVENTION** (nạp-đầy · cắt-giá-trị · work-state · 3-tệp-chốt = kỷ-luật người+AI). KHÔNG nhận "mechanized" cho kỷ-luật. `value_protect.patterns` = grep-hint DRY-RUN (advisory FLAG), **KHÔNG enforced auto-exclude** (archive-gate giữ DRY-RUN, em-main quyết — D6).
- **token≈byte/3.3** (VN thật; byte/4 = cận-trên → headroom THẬT lớn hơn). Floor = đo-được không-exact (honest-note b). Agent chưa-có-archive (database-agent/investigator-api/...) → phần "`_INDEX` theo ngân-sách" moot với chúng (honest-note d).
### G.4 — Harness-15-v2 delta (S82): Tầng-1 hot-feed LỚN + L2/L3 bỏ-trần + %-print + ranh-giới vai-trò
> Delta chồng lên §G.1-G.3 (gốc KHÔNG đổi). Re-verify CHỈ 2 phần đổi + 1 tool mới. Broadcast `2026-06-20-Governance-harness-15-v2-hot-feed-update` (`supersedes_scope = tier-1-sizing + L2/L3-caps ONLY`).
- **(1) Tầng-1 = HOT-FEED LỚN (🔴 SÀN-kiến-trúc):** phần luôn-nạp phải DÀY (đừng để mỏng) — nạp đầy **4 bucket nội-dung-công-việc**: WIP work-state · lỗi-lặp/anti-pattern/gotcha (`value_protect` §G.2(b), giữ bất-kể tuổi) · tồn-đọng · quyết-định-chờ. Bằng-chứng nền: Tầng-1 mỏng → lead **bỏ quên việc nhiều phiên liên-tiếp** (đúng bệnh H15 chữa). Per-role: lead **220K** · agent-ký-ức **60K** · agent-workflow **50K** (`token_governor.tier1_hotfeed_tokens`) — **anh-set FULL AI_INFRA parity (S83 v3 §G.5)**, supersede S82 self-shrink.
- **(2) L2/L3 BỎ TRẦN (🔴 SÀN-kiến-trúc):** gỡ cap cứng L2=6K/L3=4K → on-demand kéo-về tự-do, **không hạn-mức-tầng nhân-tạo**, chỉ chặn bởi cửa-sổ-ngữ-cảnh model. on-demand nên KHÔNG chiếm-chỗ thường-trực (no always-cost).
- **(3) %-print 2 đầu-phiên (🔴 tool mới):** `session-start §2.1.6` (composition Tầng-1 theo %/bucket) + `session-end §L.b(c)` (% sau-nạp + Headroom). Ước-lượng-tỉ-lệ đủ. **Headroom > 0 mà CÒN nội-dung giá-trị-cao = under-fill (SAI)** → nạp tiếp; Headroom = cờ-báo, KHÔNG phải đích-tiết-kiệm.
- **(4) Ranh-giới vai-trò (🔴 governance):** con-số budget = **quyền CHỦ-DỰ-ÁN (anh)**, KHÔNG phải AI-lead. em-main = (i) thực-thi đúng-số (no-truncate, kéo từng bucket tới target) + (ii) báo-% 2-đầu-phiên cho anh quyết. Sửa framing S81 "lead-authority" (nhầm AI-lead ↔ chủ-dự-án). Cùng tinh-thần mark `RC-…10-29-09` (AI = neo-lý-tính, anh quyết) + report-before-stamp.
- **Honest đánh-đổi (v2 §5):** Tầng-1 lớn = rot CAO HƠN trên phần always-loaded — **chấp-nhận có-chủ-đích** (quên-việc tệ hơn rot), KHÔNG phải "rot biến mất". SÀN = **kiến-trúc** (hot-feed lớn + L2/L3 on-demand), KHÔNG phải con-số. Nấc honest: (1)(2) = config mechanized (`token_governor`) · (3)(4) = **convention** (kỷ-luật người+AI: nạp-đủ + báo-% + anh-quyết-số).
### G.5 — Harness-15-v3 delta (S83 2026-06-22): full AI_INFRA parity + spawn-fill-to-budget (anh owner-directive)
> Delta chồng lên §G.4 (gốc KHÔNG đổi). **anh owner-directive trực-tiếp** (KHÔNG qua broadcast AI_INFRA) — con-số = quyền chủ-dự-án (§G.4 (4)). Mark = `ACTIVE-MARKS.md` H-15 v3-delta.
- **(1) FULL AI_INFRA parity (🔴 anh-set):** lead **220K** · mem-sub **60K** · wf-sub **50K** (`token_governor.tier1_hotfeed_tokens`). ⚠️ **[Harness-20 L.D neo-supersede S103]** lead 220K = giá-trị S83 tại thời-điểm delta này; **S94-override→380K** (SE-specific, lead KHÔNG còn AI_INFRA-parity — canonical = `budget.json` live-read; subs giữ 60K/50K). GIỮ 220K lịch-sử-dòng-dõi KHÔNG rewrite. SUPERSEDE S82 self-estimate (lead 60K / sub 20K-16K "vì SE nhỏ hơn / byte-cap binds") — đó là AI **tự-co-nhỏ**, đúng cái mark `RC-…01-58-01` cấm. anh: *"Giờ là 220k → đầu phiên nạp thêm tier1_lead cho đủ."*
- **(2) Sub Tầng-1 = MEMORY.md (byte-cap) + SPAWN-PROMPT (🔴 sửa hiểu-nhầm S82):** byte-cap MEMORY.md (30720B ~9.3K tok) CHỈ LÀ 1 LÁT của Tầng-1 sub — **prompt-spawn em-main viết** (relevant gotcha + state + full task-context + docs/memory liên-quan) nạp PHẦN CÒN LẠI tới token-budget. ⇒ 60K/50K KHÔNG phải "headroom vô-dụng" (bác lập-luận S82 "byte-cap binds first"); nó là **target em-main NẠP-ĐẦY qua prompt giàu** (`spawn_fill_directive`).
- **(3) Spawn-fill discipline (🔴 convention):** khi SPAWN bất-kỳ sub/workflow-agent → nạp context tới budget bằng **prompt GIÀU giá-trị-công-việc** (gotcha + state + task-context + docs/memory), KHÔNG nạp rác. Hot-load token đầu = token **GIÁ-TRỊ-NHẤT** (chắt-lọc qua nhiều giai-đoạn). RECONCILE `agents/README` "≤8K brief": heuristic cũ gác RETURN-truncation #53 (nay vá bằng memoryDelta return + recover-disk) → INPUT KHÔNG starve nữa, nạp giàu.
- **Honest nấc:** (1) = config mechanized (`token_governor` số mới). (2)(3) = **convention** (kỷ-luật em-main viết-prompt-giàu mỗi spawn — KHÔNG tool-ép; cùng họ §G.2 "5/6 convention"). value-gate (highest-value, no-garbage) = judge em-main, không auto-enforce.
---
## PHẦN H — Harness-16: Memory-Fidelity-EVAL (MFE) — đo nạp-vs-nhớ-vs-dùng (🔴 FUNCTION-FLOOR + 🟡 method)
> **Adopt S93 (2026-06-29)** — AI_INFRA 3 broadcast `2026-06-29-Governance-harness-16-{memory-fidelity-eval,mfe-update,cd-judge-sub-update}`. Canonical artifact → `scripts/mfe-eval.ps1` + `eval/mfe/` + `memory-budget.json:mfe` (**KHÔNG copy luật số ở đây — B1**).
>
> 🔴 **VOCAB (C3 — bắt buộc tách nghĩa):** "memory-fidelity" ĐÃ tồn tại ở **H6.7 = `memoryDelta`-routing-fidelity** (delta về đúng `agent-memory/<role>` single-writer). Harness-16 = **memory-fidelity-EVAL (MFE) = coverage/RETENTION** (hot-feed có giữ-được tập must-remember không). 2 nghĩa khác nhau — luôn gọi **MFE** cho nghĩa H-16. Cặp alias đã ghi `governance-detectors.ps1` C3 `$aliasSets` (ghi-nhận, KHÔNG flag drift).
**Vì sao:** `%-print` (§G) đo *đã-NHÉT bao nhiêu vào* Tầng-1 (ước theo độ-dài). MFE đo tiếp: agent có **giữ/dùng** cái đã nhét không — **đã-nạp ≠ nhớ-ra ≠ dùng-đúng**.
**H1 — Sàn deterministic ($0, NO-API, `mfe-eval.ps1`):**
- **LEAD Coverage-FIT** — must-remember denominator (status-field, KHÔNG grep): marks Active(-High) (`ACTIVE-MARKS.md`) + AS-class + Active-Guards (`error-ledger.md`) + recurring-gotchas (`gotchas.md`), **dedup** (gotcha/guard mà AS-row trỏ `#N`/`AS-N` → gộp vào AS; `merge_guard_to_as` toggle). FIT = byte-span → **token-RANGE** [bytes/4 .. bytes/3.0] vs cap **live-read** `token_governor.tier1_hotfeed_tokens.lead_tokens` (S93: 29 item ~2.53.3K tok / cap-live 220K = 1.5% → FIT thừa; ⚠️ **cap S94→380K** `budget.json`, mfe **live-read** tự-đúng — 220K = snapshot S93, KHÔNG hardcode).
- **age-band** — FLAG `old-but-still-required`, **KHÔNG cắt theo tuổi** (mark `RC-…10-29-11`); drop chỉ khi status đổi.
- **Goodhart-anchor** — in `strikes_total` + `RCA_entries` (error-ledger) cạnh coverage; strikes tăng mà coverage cao = **điểm nói dối**. KHÔNG self-grade.
- **SUB per-role coverage** — denom = anti-pattern/NEVER trong `agents/<role>.md`; numer = còn-mang trong **diary `agent-memory/<role>/MEMORY.md`** (KHÔNG project/user MEMORY.md — bẫy trùng-tên H15-v3); match = exact-id OR ≥2 **content-word** sau stop-list (đánh bại bẫy leading-verb-9/9-giả). **ĐO-THẬT** (S93: impl-backend 94% · impl-frontend 85% · reviewer 88%; role prose-only → **N/A** KHÔNG "0%"). **SUB-WORKFLOW** (fan-out ephemeral) = N/A by-design (kênh ký-ức = memory-pack lead bơm).
**H2 — Judge scaffold (Branch A, `-Judge`, OPT-IN cadence-gated):** seed `eval/mfe/sample-questions.json` (12 câu, **stable-id anchored** RC/gotcha#/AS#, immutable, time-stamped — gieo NGAY để vài tháng sau đo age-retention). Scorer **RỖNG**. 🔴 con-số nhớ/dùng **CHƯA có nghĩa** tới khi (a) câu-hỏi đủ-chín-tuổi **VÀ** (b) trọng-tài **độc-lập khác-phiên**; tự-chấm-cùng-phiên = vô-nghĩa.
**H3 — Quyết-định 2-ca:** Coverage<100%/vượt-trần = **thiếu-CHỖ → TĂNG budget** (anh quyết số); nhớ-thấp-dù-đủ-chỗ = **rot → SẮP-XẾP-LẠI** (ưu-tiên-giá-trị). Tăng-chỗ KHÔNG cứu rot.
🔴 **READ-ONLY trên `token_governor`** MFE **đọc** caps (single-source), **KHÔNG ghi/auto-tune** (owner-authority §G.4(4) coverage thấp KHÔNG được tự bơm cap).
**Honest nấc:** H1 deterministic = **executed-file + runtime-smoke S93** (chạy thật, 3-tier OK). H2 judge = **SCAFFOLD-only** (chưa scorer KHÔNG nhận "đã đo độ-nhớ"). token = **RANGE** (char/4 token thật, VN ~3.0-3.5 byte/tok). Wire = **opt-in** `session-start §2.1.6` + `session-end §L.b(c)` (no-param = như ). Cross-harness 0-conflict (additive vs §F eval-precisionG budget/archive-gate-byte/detectors-drift; trùng `value_protect` = same-set CỐ Ý).
---
## PHẦN I — Harness-17: Vòng tự-cải-thiện bộ-nhớ (Đo → Tinh-chỉnh → Kiểm) (🔴 FUNCTION-FLOOR + 🟡 method)
> **Adopt S95 (2026-07-01)** — AI_INFRA 2 broadcast `2026-06-30-Governance-{harness-17-memory-self-improvement, checklist-harness-17}` (hash verify MATCH ✓ cả 2 · `reviewer_gate: PASS`). Áp qua **2-workflow** (Harness-9 mandate) + **1 deep-reverify** (anh-directed): **WF1 `wf_f085d7c4-d78`** (ground-truth reuse-anchor + draft) + **WF2 `wf_8e73c1d6-ee6`** (3-lane review PASS 0-blocking) + **WF3 `wf_6f44eddf-680`** (fault-injection teeth-proof + integration + cross-doc, PASS 0 application-defect). Artifact mới: `scripts/memory-selfimprove-audit.ps1` + `.claude/governance/reinject-ledger.md`. **KHÔNG copy luật số ở đây — B1.**
>
> **Vì sao (đóng "vòng hở"):** nhánh eval (§H MFE) mới ĐO fidelity rồi in số **rồi DỪNG** — thấy mục-sàn rớt khỏi hot-mem nhưng KHÔNG có cơ-chế HÀNH-ĐỘNG. H17 nối 2 khâu thiếu: **Tinh-chỉnh** (tín-hiệu→hành-động, có chốt-dừng) + **Kiểm** (spec-compliance audit). Bộ-nhớ ⇒ **tài-sản được quản-trị**, kiểm-được theo bản đặc-tả.
>
> 🔴 **VOCAB (C3 — bắt buộc tách nghĩa, KHÔNG seed `$aliasSets`):** chữ **"coverage" nay 3 nghĩa** — (1) H2 harvest-curator "**Coverage**" = 0-silent-miss mọi sub/run đã-chạy · (2) §H MFE SUB "**coverage**" = role-floor còn-mang-trong-diary · (3) H17 A1 "**HCV**" (harvest-coverage, said-vs-kept) = cái sub NÓI-ra (return) vs cái GIỮ-lại (memory). Luôn gọi **HCV** cho nghĩa H17. Giống H16 memory-fidelity: **2-3-khái-niệm-1-từ = KHÔNG seed detector** (seed → false-flag), chỉ ghi alias-map + C3-comment (`governance-detectors.ps1`). "audit" (C-KIỂM) gọi **spec-audit** tránh đụng monthly-drift-audit. Từ mới `reinject`/`floor-rot`/`build-gap`/`signal→action` = grep 0-match toàn `docs/` (WF1 Agent-D) → SẠCH.
**A — ĐO (Eval) — 2 sàn:**
- **A1 HCV (harvest-coverage, said-vs-kept):** so cái sub NÓI trong return vs cái GIỮ trong memory bắt **mất-mát âm-thầm khi cô-đặc**. SE: harvest-curator H2 trục **Coverage** (0-silent-miss, convention) + §H MFE SUB per-role coverage (retained-side, mechanized) + **HCV proxy** mới trong `memory-selfimprove-audit.ps1` (run-trace `runs/<id>/` sub-*.md `*-synthesis.md` = file-exists deterministic). 🟡 **Honest:** tỉ-lệ said-vs-kept = **calibration-interim** (caveat 3, cò-báo-đuôi KHÔNG vạch-chất-lượng); per-item-L1-presence cho AS/guard/gotcha = **partial build-gap** (MFE age-band chỉ đo marks-có-date). **HCV proxy hiện N/A-idle** (run gần nhất = return-delta-only mode, 0 `sub-*.md` để chấm) A1-HCV = **cơ-chế-sẵn-sàng CHƯA-có-mẫu-đo** (script tự in N/A minh-bạch), KHÔNG phải đã-đang-đo (WF2-L3 honest-completeness).
- **A2 load-fidelity (fit + %thực-giữ per-tier):** = **§H MFE** (`mfe-eval.ps1` LEAD Coverage-FIT + SUB per-role). **REUSE-cite, KHÔNG rebuild.**
**B — TINH-CHỈNH (Refine) — 3 sàn:** (loop = tầng **D6 DÒ+NÊU-CỜ**; em-main = **D9 writer**; anh = quyết-số)
- **B1 bảng ánh-xạ tín-hiệu hành-động** (4 loại map thẳng cơ-chế SE hiện-có, KHÔNG dựng mới):
| Tín-hiệu | Ngưỡng phát-hiện | Hành-động | Cơ-chế-SE (neo) | Nấc |
|---|---|---|---|---|
| **floor-rot** (mục-sàn RỚT khỏi hot-mem) | MFE age-band FLAG `old-but-still-required` (`mfe-eval.ps1`) + status vẫn Active | **reinject VERBATIM** từ canonical em-main APPEND L1 + ghi reinject-ledger | MFE age-band + work-state block `session-start §2.1.5` + **reinject-ledger** (B2) | detect=**mechanized** · reinject=**convention** |
| **repeat ≥ 2** (lặp 2 phiên) | error-ledger 2-strike + MFE Goodhart `strikes_total` | **promote** pattern/anti-pattern (episodicprocedural) | `error-ledger §L.a` 2-strike-promote + harvest-curator INFORM + `value_protect` giữ-L1 | promote=**convention** · strike-count=**mechanized** |
| **old + valueless** ( hết-giá-trị) | archive-gate: over-cap ngoài keep-floor-5 KHÔNG khớp `value_protect` 2-strike | **cold-archive** MOVE byte-0-loss + con-trỏ `_INDEX` | **§A** `memory-archive-gate.ps1` (hysteresis 0.85) | planner=**mechanized** DRY-RUN · MOVE=**convention** (D5) |
| **raw** (chưa cô-đặc) | L1 entry verbose/>~1.5K char (gotcha #53 risk) | **distill** → nén + đẩy verbatim L2 + gist | `/sleep-recovery-memory-l2` **command** (gist-compress additive) + `_INDEX`/gist (S70) | distill=**convention** (command-assisted) · pointer-resolve=mechanized |
> 🔴 **Đính-chính:** `/sleep-recovery-memory-l2` = **COMMAND thật** (`.claude/commands/`, 12.6KB) — KHÔNG phải "chỉ convention pattern"/skill (WF1 Agent-C nhầm; em-main verify). Distill JUDGMENT vẫn convention.
- **B2 CG-1 termination (reinject-ledger):** [`.claude/governance/reinject-ledger.md`](../../.claude/governance/reinject-ledger.md) — **git-tracked · append-only · single-writer em-main (D9)**. 🔴 **TÁCH khỏi `memory-budget.json`** (file đó = quyền cấp-ngân-sách anh §G.4(4); trộn = AI lấn quyền). Rule: mỗi item reinject **≤1 lần / N=3 phiên**; đo-lại vẫn thiếu → **ESCALATE anh** (build-gap? tăng-budget? đổi-placement — mirror MFE H3 2-ca), **KHÔNG** tự-reinject-lần-2. Chống reinject-loop vô-hạn che build-gap.
- **B3 phép-thử-ranh-giới build-gap vs floor-rot** (chỉ floor-rot mới kích reinject):
> 🧪 **"Item ĐÃ TỪNG hiện-diện trong hot-mem/diary/canonical-ledger ở phiên trước KHÔNG?"** (grep `git log -p` các ledger + `agent-memory/<role>/MEMORY.md` + `archive/`) → **CÓ** = **floor-rot** (cơ-chế có, chỉ RỚT → reinject OK) · **KHÔNG** = **build-gap** (chưa dựng → đi DỰNG cơ-chế qua D7 nếu chạm luật, **KHÔNG reinject**). Chốt: floor-rot = **ĐÃ-tồn-tại ∩ CÒN-giá-trị ∩ RỚT-khỏi-L1**; thiếu 1 vế → KHÔNG reinject (ca rớt-mà-hết-cần = archive-gate đúng-đắn; ca chưa-dựng = build-gap).
**C — KIỂM (Audit / spec-audit) — 5 sàn:**
- **C1 spec-compliance checker deterministic LIVE:** `scripts/memory-selfimprove-audit.ps1` (NO-API, ASCII #30, exit-0, emit **CRITERIA+GAP set KHÔNG frozen-tally** — chạy LIVE mỗi lần vì đo artifact-SỐNG). 3 mặt: **(a) write-gov/D9** [A1 tool-scope sub KHÔNG store_memory · A2 hmw.js SCHEMA return-delta · A3 propose-only decl] · **(b) change-gov/D8** [COMPOSE `governance-detectors.ps1` child-invoke exit-0, KHÔNG re-grep = tránh fork C3] · **(c) distillation-spectrum** [mỗi over-cap agent có raw→`_INDEX`→gist]. 🔴 **Honest:** D9 enforce qua **tool-scope + SCHEMA (A1/A2 mechanized)**, KHÔNG OS-hook (`.claude/settings.json` KHÔNG có hook store_memory — AS-10/E-006 fails-open); A3 = **PROXY** (phrase-presence ≠ enforce). Chứng "guard WIRED", KHÔNG "runtime KHÔNG-THỂ vi-phạm". Runtime-verified S95: A1/A2/A3/B1/B2 PASS, C-spectrum bắt **frontend-designer over-cap GAP** (răng thật).
- **C2 3 spot-check người:** harvest-fidelity + đúng-verdict + provenance-integrity = **convention** (harvest-curator 5-trục Fidelity/Placement + reviewer verdict + `session-end §L.b(f)` gate). MÁY-không-tự-quyết → người soi.
- **C3 single-writer (loop propose-only):** = **D9** (`§D.3`). **REUSE-cite.** 🔴 **Honest:** "store_memory-strip mọi sub" = **hook AI_INFRA runtime, KHÔNG có .js trong repo SE** — SE enforce tại-chỗ = **tool-scope** (12 sub `tools:` chỉ READ verb, 0 store_memory) + **hmw.js SCHEMA** return-delta-only. (Sửa overclaim tiềm-ẩn.)
- **C4 provenance 2-chiều:** phân-biệt entry **chủ-tự-viết** (default) vs **thu-hoạch-từ-sub** (có spawn-record) = `hmw.js:53-63` memoryDelta 4-field + `session-end §L.b(d)`. 🟡 **partial** (nhãn ngầm, chưa tag tường-minh). ⚠️ **field-set LỆCH:** hmw.js `{task·verdict·learned·surprise}` (runtime-return) ≠ session-end `{agent·task·nấc·evidence}` (harvest-record) — 2 schema **2 tầng khác nhau** (return vs record), KHÔNG assume đồng-nhất; 2-chiều-tag tường-minh = build-thêm nhỏ (defer, honest).
- **CG-2 high-value MIỄN hạ-bậc-theo-tuổi:** = **§G.2(b) `value_protect`** + mark `RC-…10-29-11`. **REUSE-cite.** Tuổi KHÔNG phải cớ cắt (pain/volume/quality).
**Cadence wire (D.1):** `session-start §2.1.7` = **loop-DÒ** (chạy spec-audit + MFE báo CRITERIA+GAP + reinject-ledger CG-1 check, INFORM-only) · `session-end §L.b(c)` = **loop-REFINE-propose** (B1 signal→action → em-main APPEND single-writer). **KHÔNG lệnh tự-động đơn-nhất** (caveat 1: walkthrough thủ-công người-điều-phối; khối-đo exit-0 riêng-lẻ).
**Placement-constraint (WF1 Agent-D, 0 hard-conflict):** ① reinject-ledger TÁCH khỏi budget.json · ② reinject = **promote-COPY** L2→L1, nguồn archive INTACT (D11 no-conflict) · ③ loop = D6-tier dưới D9 (CG-1 escalate ≙ E.2 report-before-stamp).
**Honest nấc tổng §I (10 sàn 🔴 ĐẠT):** mechanized = **C1 spec-audit (a/b/c)** + A2 MFE + strike-anchor + HCV-proxy file-exists. **Phần lớn B/C = CONVENTION** (đúng checklist H17 tự nói: chỉ 2 sàn-đo A + spec-checker + gắn-nhãn-nguồn = cơ-chế-hoá; còn lại kỷ-luật người+AI). **5 caveat H17 (giữ trong doc):** (1) "vòng chạy thông" = walkthrough THỦ-CÔNG người-điều-phối nối, KHÔNG lệnh-tự-động-đơn-nhất · (2) judge recall/apply = **STUB** (số CHƯA nghĩa tới khi sample-q chín-tuổi + trọng-tài độc-lập khác-phiên) · (3) ngưỡng HCV = calibration-interim · (4) tự-soi: vòng đo agent-công-nhân CHƯA đo chính khâu-meta (điểm-mù) · (5) cô-đặc mới có NÉN, verify-trước-khi-giữ CHƯA dựng.
---
## PHẦN J — Harness-18: Kiện-toàn kiến-trúc (4 khuôn-mẫu additive) + frontier-method self-audit (🔴 FUNCTION-FLOOR + 🟡 form)
> **Adopt S100 (2026-07-02)** — AI_INFRA broadcast `2026-07-02-Governance-{harness-18-architecture-consolidation, checklist-harness-18}` (content_sha256 re-compute **MATCH ✓ cả 2**; ⚠️ frontmatter cả 3 broadcast đợt này **thiếu field `reviewer_gate`** — 24 broadcast trước đều có; gate-evidence nằm trong body "dogfood 2 phiên · cổng-kiểm ba-làn PASS" → SE áp với reasoning ghi tường-minh + flag format-regression về AI_INFRA). Áp qua 2-workflow Harness-9: **WF1 investigate `wf_50a817ce-a69`** (3 lane investigator-codebase, return-delta MODE-A) + **WF2 review `wf_955643c3-f7d`** (re-run S101 2026-07-03 — gốc `wf_31ea3985-92c` mất theo CLI-restart → re-run fresh; verdict **PASS_WITH_CONCERNS** 0-BLOCKING: Lane-A detector-teeth PASS fault-inject-4/4 · Lane-B ledger PASS_WITH_CONCERNS [1 CONCERN `workflows/README.md:51` nhãn-cũ→FIXED S101] · Lane-C PARTIAL [codify+n-a+containment first-hand ✓; frontier-hash+reviewer_gate dựa record-S100 do broadcast-inbound vắng repo]; Lane-C #53-garble→recover first-hand). **Additive** — KHÔNG thay đợt nào trước. Broadcast chị-em `2026-07-01-…-harness-frontier-assessment`: **content_sha256 MISMATCH** khi re-compute (4 biến-thể canonicalization đều lệch; 2 file H18 MATCH → phép canonical đúng, body đã lệch stamp) → **HELD-integrity**: KHÔNG codify rule từ nó, CHỈ chạy self-audit vô-hại (kết quả dưới); chờ AI_INFRA verify/re-stamp.
**J.A — Freshness-detector nâng-cấp (3 sàn 🔴 — mechanized, fault-inject 4/4 + real-repo verified S100):**
- **mismatch-only + ratio-band confidence:** `governance-detectors.ps1` C2 chỉ flag khi count-token LỆCH canonical (kể-lại-đúng = IM — fault-inject case-2); sev theo **ratio-band** — gần-canonical 0.52.0 = MED (stale-total khả-tín), xa = LOW (count cục-bộ-module) — sửa lớp FP cũ `|diff|≥10=MED` vốn NGƯỢC (S98 verify: 8/8 MED đều FP; post-fix real-repo: MED derived-stale 11→0, giữ 3 vocab-fork known).
- **scan-range theo dải THẬT:** `$derivedDocs` fixed-list → **glob động** (ALL `.claude/skills/*/SKILL.md` + ALL `.claude/commands/*.md`) — vá lớp-mù commands/ nơi "(68)" sống ~11 phiên (H1 F3 S99).
- **exclusion:** self-exclusion 6 path + `$ExcludeExact` (pre-existing, re-verified 0 self-match).
- 🟡 Honest: FP-guard `baseline|S\d{2}` skip-line = blind-spot có-chủ-đích (dòng chứa "Baseline" KHÔNG quét — dòng "130 PASS" session-start đã B1-pointer TAY S100); sev = confidence KHÔNG phải existence (total-cổ-đại "77 test"/440 → LOW advisory vẫn hiện).
**J.B — Vệ-sinh sổ-ghi: retire `runs/_ledger.md` two-beat (🔴 đo-bắt-thật + nghỉ-hưu-trung-thực + sweep):**
- **Đo (WF1-L3, evidence-grade):** ledger true-orphan-catch = **0/15 row lifetime** (đều open+close cùng-ngày 06-18; `⏳` chỉ legend) · folder/disk-scan H2 bắt thật **4+ vụ memory-delta orphan** (S57 · post-S57bis 4-MISS · S98 ×3 · S99 cicd#485) · mode-A ephemeral (default S93+) → ledger coverage workflow gần đây = **0/8**. ⭐ Đính-chính ground-truth: "S71 `harvest/` rỗng" = **wording tiêu-chí** trong session-start, KHÔNG phải vụ catch — run-folder-orphan lifetime = 0 ở CẢ 2 cơ chế.
- **Caveat-3 parity (honest):** replacement KHÔNG "proven bắt tốt hơn" trên run-folder-orphan data (0 incident 2 phía) — căn cứ retire = **coverage-cấu-trúc (mode-A 0/8) + chi-phí duy-trì + đã cần disclaimer-note S98 chống nhầm**, KHÔNG phải catch-rate.
- **Nghỉ-hưu:** 1 dòng 🧊 header `_ledger.md` (đảo-ngược = gỡ dòng; 15 row GIỮ NGUYÊN — dời-đi không xoá). **Orphan-authority = folder-scan:** `runs/<id>/``run.md``*-synthesis.md` VẮNG/0-byte (dual-accept `harvest/` run cũ).
- **Sweep 6 mandate-consumer + cites (mechanized-grep `_ledger` exact — 5 "ledger" khác tên trong repo, tránh C3-fork):** `runs/README.md` ×7 (:3/:38/L1/L2/§C6-header/:117/:127) · `workflows/README.md` ×2 (:20/:34-B3) · `session-start.md` §2.1.1-H2 · `session-end.md` §L.b(f) · `agents/harvest-curator.md` ×3 (:28/:44/:52-cite) · `agents/README.md` G-015-cite · + `agent-memory/harvest-curator/MEMORY.md` baseline re-ground. HISTORY class (session-log/adap-report/archive/runs-synthesis) GIỮ NGUYÊN.
**J.C — Bracket phân-bổ model: 1 ĐẠT + 2 n-a-by-owner-mandate (🔴 điều-kiện xét-lại VIẾT RA):**
- Precondition raw-economics ĐÚNG (Fable > Opus 4.8 giá) NHƯNG **H8 all-inherit = owner-directive 🔴 S66 "chất-lượng trên chi-phí"** (anh-chốt, mọi sister) → KHÔNG demote lớp-việc nào; escape-hatch per-task `tier:'opus'` (hmw.js) GIỮ = cơ-chế hạ-bậc-theo-việc ĐÃ TỒN TẠI khi cần. 4 lớp không-hạ + 2-đầu = vacuously-held (mọi vai đang top-tier). Promote-list 🟡 = n-a (không gì để nâng).
- **Điều-kiện xét-lại (C3-floor, viết ra — đo được):** NẾU anh đảo H8 HOẶC áp-lực chi-phí thật xuất hiện → dựng bracket theo checklist H18-C, so ≥3-run eval vs baseline TRƯỚC khi cố-định; tới lúc đó C1/C2 hết n-a. (Caveat-2 broadcast: "chi-phí ngang nhau thì khuôn-mẫu không áp" — SE = ngang-nhau-BY-DECISION.)
**J.D — Đóng làn kết-quả (🔴 3 sàn — 2 ĐẠT wired + 1 REUSE):**
- **D(a) spot-check tươi:** wired `session-end §L.b(i)` — session governance/review-heavy chọn 35 artifact đã tự-qua-cổng → kiểm-lại tươi bằng ground-truth. Dogfood n=1 S100 (WF2 lane-3). 🟡 Honest: n=1 = mẫu hiệu-chỉnh (caveat-1 broadcast), CHƯA "proven".
- **D(b) reinject-on-real-miss + D(c) chốt-chặn-lặp:** = **REUSE §I B2** `reinject-ledger.md` CG-1 (≤1/N=3 + escalate anh + đo-lại phiên kế) — H17 đã dựng ĐÚNG khuôn này TRƯỚC broadcast, KHÔNG sổ mới (chống C3-fork "ledger").
**Frontier-assessment self-audit (S100 — chạy dù broadcast HELD-integrity, vì self-audit vô-hại + có giá-trị riêng):**
- **P1 taxonomy-claim:** CLEAN — grep `\bMAST\b` = 0 repo-wide; error-ledger "3-axis tag" = internal scheme map Gov-v2 (KHÔNG claim external-taxonomy) → ma-trận anh-xạ n-a-legit.
- **P2 ghost-wire:** **1 THẬT = cron monthly** (`solution-erp-skill-audit-monthly`: CronList runtime = **0 job** + scheduler RỖNG 2026-05-04 + S96 chạy 13:04 em-main-in-session + CronCreate harness session-scoped không persist) → **honest-retire 5 file S100** (rules.md ×2 · CLAUDE.md · STATUS.md · session-start.md): audit monthly = thủ-công em-main theo cadence-pointer STATUS (function KHÔNG ghost — S44/S96 đều chạy đúng hạn; chỉ WIRING claim sai). +2 ghost-wire-config-key (mfe `role_file_glob`/`diary_path_pattern` defined-but-unread) + 1 latent blind-spot (selfimprove `:147` no-`tools:`-skip) → **defer đánh-số STATUS backlog D-1/D-2** (frontier HELD → không sửa vội). Cadence#4 + mọi auto-claim khác = WIRED hoặc disclaimed-no-daemon đúng convention G-015.
- **P3 measurer role-coverage:** 3/3 script (`mfe-eval` + `memory-selfimprove-audit` + `memory-archive-gate`) = **GLOB-LIVE**, 0 hardcode roster/"11" — agent thứ 12 tự-cử (WF1-L1 file:line).
- **P4 correction-cadence proxy:** ghi-nhận method, **KHÔNG áp** — 0 điểm-đau đo được hiện tại; áp-không-pain = chính "frontier-envy" mà broadcast cảnh-báo.
**Honest nấc tổng §J (checklist 12 sàn 🔴):** **A 3/3 ĐẠT** (mechanized + runtime fault-inject 4/4) · **B 3/3 ĐẠT** (đo = convention-với-số-liệu WF1-L3 · retire = executed-file reversible · sweep = mechanized-grep + executed 15 điểm) · **C 1/3 ĐẠT (C3 revisit-condition executed-file) + 2/3 n-a-by-owner-mandate H8** (lý-do khách-quan viết rõ — caveat-2 broadcast) · **D 3/3 ĐẠT** (D-a wired + dogfood n=1 · D-b/D-c REUSE §I CG-1). **Phát-biểu chủ-động: 10/12 ĐẠT + 2/12 n-a-reasoned = phủ đủ phần áp-được.** Mechanized THẬT chỉ: J.A detector + J.B sweep-grep; phần còn lại = convention (KHÔNG nhận mechanized). 🟡 form 4 mục: detector-regex/ngưỡng tự đặt (ratio 0.52.0) · bracket-boundary theo H8 · sổ chốt-chặn = reinject-ledger git-tracked (REUSE) · promote-list n-a.
---
## PHẦN K — Harness-19: "Model ảo" ensemble cho 2 vị-trí phán-quyết + thật/ảo depth-toggle (🔴 FUNCTION-FLOOR + 🟡 form ensemble-depth)
⚠️ **H21 supersede-partial (S110, 2026-07-11, broadcast `2026-07-10-Governance-harness-21`):** marker-toggle + 2-vai-verdict-mặc-định (K.B/K.A dưới) → **per-invocation owner-gõ-kèm-vai** (§K.E). Định-nghĩa 2 engine + ký-ức-đổ-về-đúng-vai (K.C) + chất-lượng GIỮ NGUYÊN từ H19 — KHÔNG re-adopt.
> **Adopt S101 (2026-07-03), anh-directed** (`/check-email AI_INFRA` + `/adap-apply` → "Formal adopt + RC-stamp" + "full 2-workflow"). AI_INFRA broadcast `2026-07-03-Agent-harness-19-fable-clone` (content_sha256 re-compute **MATCH ✓** `6909299a…`; +3 broadcast model-tier cùng đợt [`fable-opus` `ee00d253` · `checklist` `a7ff304b` · `v2-pin-simple` `eed277f7`] đều MATCH + đều có `reviewer_gate: PASS` → format-regression H18 [thiếu field] đã fix). Áp qua 2-workflow Harness-9: **WF1 investigate `wf_5f308fd8-744`** (3 lane wiring+mapping+adversarial, SOUND_WITH_CONCERNS — bắt 3 floor-fidelity gap; resume-after-interruption cached) + **WF2 review `wf_ed5b972f-a4d`** (→ **PASS_WITH_CONCERNS** 0-BLOCKING: Lane-A mechanism PWC [1 CONCERN marker write-only no-reader → **FIXED S101** thêm session-start BƯỚC 0.5b reader] · Lane-B gov-record PASS [RC-mark 3-floor verbatim + vacuous-honest, 7 refutation fail] · Lane-C adap-honesty PASS [4 hash MATCH indep + 12/12 + no-overclaim]. ⚠️ **GAP-3 AS-10 fired LIVE** — lanes tự-ghi reviewer-memory dù RETURN-only-intent; harness-sanctioned "intentional" → KEPT + verified → dogfood-validate §K.C "GAP-3 = convention-KHÔNG-mechanism"). **Additive** — KHÔNG thay H8 all-inherit / bracket / promote; chỉ THÊM ensemble + toggle cho 2 vị-trí phán-quyết.
**K.A — Ánh-xạ 2 vị-trí phán-quyết vào roster SE (🔴 §7 sàn — WF1-confirmed best-fit, no superior alt):**
- **(a) Cổng rà-soát cuối** = `reviewer` (adversarial 6-category + Smart-Friend anti-rubber-stamp + live-curl falsify + phân-xử mâu-thuẫn). **(b) Ground-truth/xác-minh sự-thật** = `investigator-codebase` (truy bằng-chứng gốc file:line + sqlcmd + git, chống bịa + RCA). `investigator-api` EXCLUDED (external-only) · `database-agent` EXCLUDED (DB-only subset). = cặp dogfood S101 (WF2 3-lane reviewer · WF1 3-lane investigator-codebase). **(H21 S110):** cặp này = **REFERENCE-EXAMPLE/likely-pick** (dogfood S101/S108), **KHÔNG còn auto-default** — vai do anh gán đích-danh trong lệnh (§K.E), MỌI vai roster 12 hợp-lệ.
**K.B — Cơ-chế 2 mode thật/ảo (🔴 §4 sàn) + toggle marker (🟡 form):**
- 🧊 (retired H21 S110) **Fable-real (thật, marker `.claude/fable-real-mode.on` CÓ):** 2 vị-trí chạy **1 lần top-model trực-tiếp** (sâu nhất). Fable up=single-Fable · down (H5)=single-Opus-1M per-run fallback (KHÔNG đổi mode toàn-cục).
- 🧊 (retired H21 S110) **Fable-clone (ảo, marker VẮNG = MẶC-ĐỊNH, §4 ít-kinh-phí):** 2 vị-trí chạy **ensemble tier-2-mạnh-nhất** = N lane đa-lăng-kính CÙNG 1 vai (qua `hmw.js parallel`) + em-main **refute + synthesize** (P3/P4) = "bản sao Fable".
- 🧊 (retired H21 S110) **Toggle = 2 lệnh** `/fable-real` (Write marker) + `/fable-clone` (Remove marker) mirror `/ultra-on`/`/ultra-off` — ⚠️ **semantic INVERSE:** marker-VẮNG = ảo-DEFAULT (khác hmw: marker-CÓ = feature-ON). marker **gitignored** (verify `git check-ignore` ✓; commit → thật-mode stuck-ON clone = burn quota, TỆ HƠN hmw vì elevate tier). Đổi mode CHỈ khi anh gõ (§4 — KHÔNG auto theo số-dư/cảm-tính, giữ mark `RC-…10-29-09`).
**Thay bằng §K.E per-invocation.** Marker file đã xóa S110; `.gitignore:92` giữ pattern phòng-hờ.
**K.C — 3 floor-fidelity gap (🔴 WF1-L3 bắt — pin để stamp CÓ NGHĨA, không paperwork):**
- **GAP-1 scope-creep guard:** `hmw.js` VALID_ROLES nhận cả 12 vai (9 lúc adopt S101; +office-document S107; +2 monitor S110 anh-directed), KHÔNG gate → all-inherit **CHE** leak (mọi vai top-tier nên mixed-roster "trông ổn"; Fable về + phân-tầng thì rò top-tier ensemble sang vai ngoài 2 vị-trí = vi phạm §3 hard-scope). → **lệnh-B ensemble-run = N lane CÙNG 1 vai phán-quyết** (multi-lens), KHÔNG mixed-roster fan-out.
- **GAP-2 engine-label (§5):** `hmw.js` SCHEMA `memoryDelta{task,verdict,learned,surprise}` KHÔNG field engine → em-main **stamp nhãn engine @P3 harvest** (single-writer B3), như S101 "model-note Opus-S101". = convention KHÔNG mechanism.
- **GAP-3 AS-10 fragment:** mỗi run-trace ghi `*-synthesis.md` residual + lane giữ Bash (AS-10 fails-open) → "1 vai = 1 trí-nhớ" qua N lane giữ CHỈ bởi em-main single-writer. → **N lane RETURN-only**, em-main ghi 1 MEMORY entry/vai (+ nhãn engine).
**K.D — 3 floor-point RC-stamped (🔴 §9 — `RC-pqhuy1987-03-07-2026-17-46-35`, `ACTIVE-MARKS.md`):** (1) 🧊 ~~lead LUÔN top-model (KHÔNG đụng)~~ [retired H21/mtv3 S110] → **MỚI:** lead = **frontier-class** do anh chọn per-session {Fable 5 | Opus 4.8 — 1M MAX} (model-tier-v3 2026-07-11); CẤM Sonnet/Haiku-class ghế lead; owner-chọn-hạng-hai ≠ outage → 0 caveat/0 revert-nghĩa-vụ · (2) 🧊 ~~CHỈ 2 vị-trí phán-quyết chạm top-model, CHỈ chế-độ thật do anh gõ (KHÔNG auto)~~ [retired H21 S110] → **MỚI:** top-model deep-run CHỈ trong lượt lệnh engine-đắt anh gõ KÈM VAI đích-danh (H21) — không còn 2-vị-trí-mặc-định, không còn mode · (3) mọi vai khác giữ model mặc-định (roster-tier). ⚠️ **VACUOUSLY-MET-for-SE-today:** dưới all-inherit + Fable-outage, reviewer+investigator-codebase ĐÃ top-model (Opus-1M) → point-2 grant **0 runtime-delta**; point-3 trivially-held (SE không có "vai khác" tier-thấp — all-inherit S66). Stamp KHÔNG overclaim runtime-delta; value = future-proof floor + governance-record. *(S108 update: Fable-UP + first-real-run → point-2 grant hoạt-động THẬT lần đầu — 2 vị-trí single-Fable deep ⟂ worker-draft pin tier-2 Opus; "vacuously-met" KHÔNG còn là trạng-thái thường-trực, tùy BƯỚC 0.6 probe per-session.)*
**K.E — H21 per-invocation + spec-file kết-tinh (🔴 sàn 5-điểm, adopt S110 — supersede K.B toggle):**
| Lệnh | Engine | Cách chạy |
|---|---|---|
| `/fable-real <vai> <đề-bài>` | **lệnh-A** single top-model | 1 vai anh gán chạy 1 lần top-model THẬT (deep pass; Fable up → single-Fable · outage → single-Opus-1M/run) |
| `/fable-clone <vai> <đề-bài>` | **lệnh-B** ensemble tier-2 | N lane đa-lăng-kính CÙNG 1 vai (`hmw.js parallel`) + em-main refute+synthesize |
- **(i) Vai owner-gán per-invocation:** `<vai>` ∈ roster 12 (`investigator-codebase` · `investigator-api` · `implementer-backend` · `implementer-frontend` · `frontend-designer` · `database-agent` · `office-document` · `test-specialist` · `reviewer` · `cicd-monitor` · `tooling-auditor` · `harvest-curator`). Thiếu/sai vai → **em-main hỏi anh 1 dòng**, KHÔNG tự đoán. Hiệu-lực CHỈ lượt đó (không marker, không sticky-mode). ✅ **VALID_ROLES = 12 đủ roster (S110 anh-directed):** 2 monitor đã bổ sung (10→12) — lệnh-B trọn roster. *(🧊 limitation cũ "2 monitor ∉ 10-vai → fail-soft default-subagent" + H6-design "monitor ngoài workflow" superseded điểm này; monitor vẫn INFORM-only, lane RETURN-only.)*
- **(ii) Spec-file pipeline (mỗi run engine-đắt PHẢI sinh):** `.claude/workflows/runs/<run-id>/spec-<tên-tính-năng>-<dd-mm-yyyy>.md` — 3-heading CỐ-ĐỊNH: **[1] Tính-năng/đề-bài** (13 câu) · **[2] Cách implement** (bước + quyết-định + ràng-buộc + đường-chết) · **[3] Checklist** (vai + deliverable + acceptance đo được). Luồng: engine **propose-only** → lead **verify****LEAD ghi** (single-writer) → worker **Opus MAX** thực-thi THEO spec bơm qua `args` (`hmw.js` KHÔNG đọc file spec).
- **(iii) 4 ghi-chú trung-thực (🔴 phải hiện-diện — nấc owner-gated, KHÔNG code-enforced §X8):**
- **(a)** owner-gated tầng LỆNH + kỷ-luật lead, **KHÔNG code-enforced**`hmw.js` không gate vai; đường code `tier:'fable'` vẫn tồn-tại. Bảo-đảm = MỌI đường truy về lượt owner-gõ (kỷ-luật), không phải guard chặn.
- **(b)** lệnh/alias = cách anh **gán vai NHANH** — hệ **KHÔNG tự chọn vai**, vẫn phải anh gõ.
- **(c)** spec-file do **lead ghi SAU khi verify** — engine không tự ghi.
- **(d)** run **chấm/verify CŨNG sinh spec** (kế-hoạch xử issue = "cách làm" cần kết-tinh, không chỉ run implement).
- **(iv) Map sàn 5-điểm:** ① spec-file mỗi run · ② worker thực-thi THEO spec · ③ chỉ chạy khi owner gõ lệnh · ④ vai owner-gán đích-danh · ⑤ lead KHÔNG tự-ý gọi engine-đắt.
- **(v) Honest nấc K.E:** codify S110 + dogfood **run-1 = chính lượt adopt này** (spec-file `2026-07-11-h21-mtv3-adopt`); **mechanized = 0** (convention + git-tracked spec làm audit-trail — KHÔNG guard code-enforced).
**Honest nấc tổng §K:** value THẬT ≠ cost (broadcast §8 "ensemble không rẻ hơn nhiều về token thô") mà = **anti-consensus-catch** (dogfood S101 WF2 Lane-B bắt `workflows/README:51` stale-label token-exact-sweep sót, commit `f229b07` — run-folder ephemeral, cite COMMIT) + formalize ensemble-heavy-judgment + thật/ảo depth-toggle owner-control + Fable-outage timeliness. Nấc = **designed + dogfooded** (ensemble-pattern proven S101; thật-mode toggle **first-real-run S108 2026-07-10** — 2-lane single-Fable song song 2-đầu-khác-trục review chính `fable-real-runbook.md`, verdict FAIL-then-fixed đúng Smart-Friend, form kết quả → runbook §5.5). Mechanized THẬT (pre-H21, 🧊 marker-toggle retired S110) = CHỈ marker-toggle (Write/Remove gitignored, verify-idiom) + `hmw.js` parallel-lanes; scope-guard + engine-label + single-writer = **convention** (em-main kỷ-luật, hmw.js không gate vai). RC-sig + command `.md` = executed-file, verified-pending-restart (no hot-reload). **S110 H21-update:** marker-toggle retired (mechanized-marker không còn); per-invocation = owner-gated convention + spec-file git-tracked.
---
## PHẦN L — Harness-20: Fix-all-structure (sửa drift ĐỦ-TẦNG khi supersede) (🔴 FUNCTION-FLOOR quy-trình + 🟡 form)
> **Adopt S103 (2026-07-06)** — AI_INFRA broadcast `2026-07-03-Governance-harness-20-fix-all-structure` (content_sha256 re-compute **MATCH ✓** `bd714a33…`; `reviewer_gate: PASS` + nac PUBLISHED). Áp qua 2-workflow Harness-9: **WF1 implement+verify `wf_55ef6778-a0d`** (Lane-C exhaustive sweep) + **WF2 review** (fable-clone ensemble, run-id ghi dưới). **Additive** — bổ-sung `governance-detectors.ps1` (§C detector DÒ; fix-all-structure ĐẢM-BẢO bản-sửa đủ-tầng), KHÔNG thay.
**L.A — Nguyên-lý (🔴 §1-2 sàn):** supersede/đổi 1 quy-tắc governance → drift KHÔNG tự biến mất; sót ở 4 tầng: **NHÌN** (mục-lục/bảng/sơ-đồ) · **NGUỒN** (văn-bản chuẩn — tiêu-đề + MỌI mệnh-đề active) · **DẤU** (sổ chữ-ký/hash) · **DẪN-XUẤT** (guide/template/onboarding) + 🔴 **PERSONA** (`.claude/agents/*.md` — nạp-lại MỖI spawn = drift độc-hại nhất, dễ sót nhất). Anti-pattern **SỬA-LỆCH-TẦNG**: sửa 1 tầng để tầng khác cũ = TỆ HƠN không-sửa (mâu-thuẫn + nếu tầng-cũ = authoritative → reader nhận quy-tắc SAI). Thứ-tự đúng: **đủ-tầng > không-sửa > sửa-lệch-tầng.**
**L.B — 4 bước (🔴 §3 sàn):** (1) **Quét cạn-kiệt** grep token/hash/tên-policy TOÀN-KHO (KHÔNG chỉ nơi-nhớ). (2) **Phân 4 nhóm** mỗi hit: ĐANG-SAI (mô-tả current sai → sửa + note-supersede) · LỊCH-SỬ-DÒNG-DÕI (saga có neo mốc → GIỮ) · DẪN-XUẤT (guide/template → update/note-đầu) · SNAPSHOT-THEO-NGÀY (chụp thời-điểm → GIỮ). (3) **Sửa HẾT ĐANG-SAI** mọi tầng (nhìn + tiêu-đề-nguồn + mệnh-đề active + dấu). (4) **KHÔNG rewrite LỊCH-SỬ.** + 🔴 **Kiểm 2-đầu khác-trục** (ground-truth + adversarial) chống "cùng-góc-cùng-điểm-mù".
**L.C — Ánh-xạ SE (🟡 form + honest):** SE = **convention** (grep + phân-loại = kỷ-luật người, KHÔNG cơ-chế-hóa auto-fix — trùng nấc D6 DÒ-only). Complements: detector PHÁT-HIỆN (C1/C2/C3), fix-all-structure ĐẢM-BẢO bản-sửa đủ-tầng. Adoption-checklist 6-mục = SE thực-hành từ S96-monthly (nay đặt-TÊN + neo floor). SE đã dogfood pattern (S100 J.B sweep 15-điểm/8-file `_ledger`-retire; S101 `workflows/README:51` 2-đầu bắt sweep-sót) — H20 = codify cái ngầm-có.
**L.D — Dogfood n=1 THIS session (🔴 executed — 2 live-application):**
- **Model-note sweep (F2/F3 recheck-broadcast live-fix):** BƯỚC 0.6 bắt runtime S103 = **Opus** (Fable outage lại; per-session flip S98-Fable→S101-Opus→S102-Fable→**S103-Opus**) → thêm data-point tầng running-note: `agents/README.md:3` (PERSONA-tier) · `session-start.md:37` · `session-end.md:113` (Co-Authored-By "hiện=Fable"→Opus = ĐANG-SAI thật). LỊCH-SỬ-SAGA GIỮ: `agents/README:12` (H8-caveat) + STATUS/HANDOFF S98-blurb. STATUS/HANDOFF mega-line current-claim → cập-nhật @session-end blurb (natural update-point).
- **220K→380K superseded-pointer:** engine `§G.5` "lead 220K" = S83-value, S94-override→380K → neo-supersede (GIỮ 220K + note "→S94 380K", KHÔNG rewrite lịch-sử).
- **2-đầu-catch (🔴 Harness-20 §4 dogfood value — REVIEW bắt sweep-gap thật):** fable-clone review `wf_3c5c37cb-aa2` (Lane-C PASS; 2 lane #53-garble→recover, Lane-C phủ redundant) bắt **2 DẪN-XUẤT stale-trailer** `docs/rules.md:220` + `docs/guides/multi-agent-setup-guide.md:428` (`Opus 4.7``4.8`) mà sweep-đầu-1 SÓT → **FIXED**. Phân-loại 4-nhóm L.B đúng: 2 DẪN-XUẤT (sửa) vs **~14 `sessions/*.md:3` "Opus 4.7" = SNAPSHOT-THEO-NGÀY (GIỮ NGUYÊN**, session-log mốc-cũ tháng-5). = đúng §4 "2-đầu-khác-trục bắt sửa-tầng-nhìn-quên-tầng-nguồn".
**Honest nấc §L:** convention (KHÔNG mechanized auto-fix — nhánh chỉ-DÒ per CAVEAT "auto-WRITE luật = mối-nguy #1"). Dogfood n=1, CHƯA phổ-quát. Mechanized THẬT = CHỈ grep (detector); phân-loại + sửa = người.
---
## PHẦN M — crystallized-backfill (measure-then-fill) + bảng-số ngân-sách + run-loop 2-tầng + Applied%-no-key (🔴 FUNCTION-FLOOR + 🟡 form)
> **Adopt S103 (2026-07-06)** — AI_INFRA 4 broadcast owner-directive + 1 reference, content_sha256 re-compute **MATCH ✓ cả 6**: `harness-full-recheck-crystallized-backfill` (`94c78d1d`, F1-F4) · `session-cmd-budget-display-runloop` (`d47333e0`) · `harness-16-nokey` (`a1dc3a20…`, reviewer_gate PASS-WITH-FIXES) · `Agent-memory-hygiene-mechanization` (`43c9e56f…`, A/B/C) · reference `consolidation-crystallization-measurement` (`5bba339b…`). 2-workflow: **WF1 implement `wf_55ef6778-a0d`** (2 script + Lane-C verify; selftest exit-0 ×2 + fault-inject teeth) + **WF2 review** (run-id ghi dưới). **Additive.**
**M.A — crystallized-backfill (🔴 F4 NEW function):** `scripts/crystallized-backfill.ps1` (NO-API DRY planner). "measure-then-fill" = đo REAL-token headroom hot-feed → đổ crystallized cold-tier vào chỗ-trống để KHÔNG phí trần. 🔴 **DISTINCT crystallization (§I distill):** distill = NÉN-về-nguồn giữ time-invariant; backfill = NGƯỢC, ĐỔ-vào-trống (consolidation Mục 1). 🔴 5 sàn bất-biến: (1) **default target=0=OFF** (owner-authority `budget.json:crystallized_backfill.target`; script READ-ONLY KHÔNG auto-tune) · (2) **NOT-for-sub** (sub-pack lead-curate per-task) · (3) **calibrated RANGE** [bytes/4..bytes/3.0], headroom dùng bytes/3.0 worst-case · (4) **PRECONDITION** mở CHỈ khi target>0 AND measured_headroom>0 · (5) **value-gated source-order** gist→value-marked-archive→curated-RAG, dedup, DRY-no-pour. 🟡 Honest: hotload_sources = **FILE-FLOOR ổn-định** (6 file) → measured_headroom = **UPPER-BOUND** (peak thêm task-context biến-thiên KHÔNG trong list → real-headroom NHỎ HƠN; ~368K peak gần cap). backfill **inert-today** (target=0). = đúng cảnh-báo F4 "byte/4 undercount = ảo-giác còn-chỗ".
**M.B — bảng-số ngân-sách (🔴 #4-Upgrade1):** script in BẢNG số THẬT: cap-live / hotload-đo-bytes / tok-RANGE / measured_headroom / target / expected_backfill — MỌI số đọc-sống 0-hardcode. Wired `session-start §2.1.6` + `session-end §L.b(c)` (bổ-sung %-print). **F1-tightening:** bảng-live thay prose-echo "380K" (dù SE 0-hardcoded-violation, echo session-start:122 nay có nguồn-sống thay).
**M.C — run-loop 2-tầng (🔴 #4-Upgrade2 — 🟡 LARGELY ALREADY-MET honest):** Tầng-1 ĐO mỗi session-end (deterministic: memory-selfimprove-audit + mfe-eval + governance-detectors + archive-gate + crystallized-backfill) → khối-số tươi (cấu-trúc chống "khai-chạy-mà-không-chạy"). Tầng-2 TINH-CHỈNH on-signal (new-gap/drift-vs-last/orphan-TĂNG/coverage-tụt → **cảnh-báo ĐỎ** + refine-in-session HOẶC carry-hi-prio nếu đứt-phiên; KHÔNG nuốt). Weekly full-refine backstop. 🟡 **Honest ALREADY-MET:** `§L.b(c)` ĐÃ có H17 loop-REFINE + %-print + 4 script; M.C = FORMALIZE 2-tầng-framing + khối-số-mỗi-end. Tầng-2-signal-fire dogfood CHƯA chạy thật (như hub n=1).
**M.D — Applied%-no-key (🔴 H16-update mechanism):** `scripts/applied-eval-nokey.ps1`. Cổng đối-kháng fail-closed (control-cố-ý-sai chấm-CAO→BLOCK / control-BỎ-QUÊN→BLOCK / control-thấp→PASS) + merge (loại control, KHÔNG bịa null→0) + selftest 3-ca (fault-inject FLIP-proven, bắt real-bug `$script:`-scope). 2-agent-pass (thí-sinh bịt-đáp-án đúng-persona / trọng-tài khác-phiên sạch-ngữ-cảnh) = DOCUMENTED runtime-via-workflow. 🔴 4 caveat: proxy-điểm-thời-gian / chung-họ-model-chưa-khử / bịt-mắt-chỉ-dặn / chưa-đo-tuổi. Honest: **MECHANISM built, con-số DEFERRED** (sample-Q chín + judge độc-lập khác-phiên). API-key nay **TÙY-CHỌN**.
**M.E — F1/F2/F3 recheck (🟡 already-met):** **F1** (số=con-trỏ): Lane-C sweep = **0 hardcoded-violation** toàn-kho, persona CLEAN → already-met (M.B retire echo). **F2** (sweep-incl-persona) = §L H20. **F3** (model-routing REAL-metadata): **BƯỚC 0.6 ĐÃ đọc env-runtime-thật** — S103 bắt Opus KHÔNG tin comment (đúng bài F3 "ghim thắng inherit khi model blank → đứt âm-thầm") → already-met + live-evidence.
**M.F — memory-hygiene-mechanization (🟡 ALREADY-MET via Harness-9/11 + 🔴 C n/a):** **A** archival = `memory-archive-gate.ps1` (DRY-RUN + value_protect ADVISORY-only + keep-floor + 2-strike + A7 byte-preserve → SIDESTEP grep-gate-trap vì em-main-decides) · **B** drift-detector = `governance-detectors.ps1` 4-layer 1:1 (C1 broken-ref · C2 mismatch-only `if n≠canon` · C3 vocab-fork · C4 self-exclusion SEPARATE-namespace) · **C** launcher-allowlist = **n/a-by-architecture** (SE = Anthropic Workflow JS-sandbox, KHÔNG CLI-launcher; hmw.js:1-5 + workflows/README:51) · **wire** = §2.1.2/§2.1.3 @start + §L.b(c) @end. Đã adopt via Harness-9/11 — M.F = confirm-mapping 1:1 (KHÔNG rebuild).
**M.G — consolidation (🟢 reference, no-mandate):** absorb: crystallization≠backfill (§I vs §M) · staleness-check by CONTENT-diff KHÔNG mtime (harvest-curator đã làm S102 recovery byte-match) · 60K sub-reserve = owner-set KHÔNG converged-measure (đã đúng) · measurement-gap priority-1 (chưa official-tokenizer — SE dùng calibrated-range honest).
**Honest nấc tổng §M:** mechanized-THẬT (NO-API deterministic, selftest exit-0) = crystallized-backfill + budget-table + applied-eval-nokey gate + fault-inject-teeth. Convention = run-loop framing (M.C already-met §L.b) + fix-all sweep (§L). **Inert/deferred honest:** backfill target=0 (peak gần-cap → real-headroom nhỏ) · Applied% numbers DEFERRED (mechanism-only) · measure = calibrated-range KHÔNG official-API-tokenizer (measurement-gap fleet-wide). Owner-authority: mọi con-số ngân-sách READ-ONLY.
---
## PHẦN N — Harness-22: WAL session-continuity (sổ mạch-việc + hook persist + /pause /tiep) (🔴 FUNCTION-FLOOR + 🟡 form)
> Adopt S111 (2026-07-12) từ broadcast `2026-07-11-Governance-harness-22-wal-session-continuity` (body-sha `3de0758a` verified; ≙ AI_INFRA CANONICAL §I4 + §H1). Giải: phiên chết giữa mạch việc (limit/crash/tắt-máy/đổi-acc/chết-giữa-workflow) → mất trí-nhớ chưa-ghi + đốt-lại token. **"WAL" ở đây = sổ-liên-tục-phiên** — KHÁC "WAL RUN-LEDGER hai-nhịp" đã retired H18-B (trùng chữ, khác cơ-chế; alias-map awareness).
- **N.1 Sổ WAL (🔴):** `.claude/WAL.md` **≤40 dòng, ghi-đè toàn-file KHÔNG append**; `chain:` mục `[x]/[!]/[ ]` **KÈM bằng-chứng lệnh** (không mô-tả suông) + `next:` đúng 1 mệnh-lệnh + `verify:` ≥1 lệnh CHẠY ĐƯỢC, chạy TRƯỚC next — **ground-truth thắng WAL** (lệch → sửa WAL cho khớp thực-tế rồi mới đi). **CẤM secret** (file được commit). Template rỗng → `session-end §6.4`.
- **N.2 Hai tầng ghi (🔴):** tầng NỘI-DUNG = **lead single-writer** (D9-consistent), ghi lại sau MỖI subtask đổi trạng-thái (kể cả lúc phóng + thu workflow-run). Tầng PERSIST = **Stop-hook `.claude/hooks/wal-flush.ps1`** deterministic (PS1 — chọn path-independent vì PATH-order bash 2-context Windows ngược nhau, lead-verified S111): hook **ĐƯỢC làm đúng 2 việc** = `git add` per-path 3 path cố định {`.claude/WAL.md` · `.claude/agent-memory/` · `.claude/workflows/runs/`} + commit CAND-only message `wal: flush <ts>`; hook **KHÔNG-ĐƯỢC** = sinh/sửa nội-dung · push · block-stop · đụng path ngoài list · exit≠0 (fail-open MỌI nhánh). Per-path add + CAND chống bẫy all-or-nothing đa-pathspec (bài học test-proven nguồn).
- **N.3 Trạng-thái hook = ✅ VERIFIED-RUNTIME S111 CÙNG PHIÊN (nâng từ STAGED-until-verified — chống ghost-wire S100 bằng bằng-chứng THẬT):** hooks-entry `.claude/settings.json` ghi S111 → Stop-hook **HOT-RELOAD + FIRE ngay giữa phiên** (KHÔNG cần restart): commit **`12071c5 "wal: flush 20260712T1105"`** chứa ĐÚNG 4 file thuộc 3 path cố định (WAL.md + diary invest + run.md + spec), CAND-commit chuẩn (settings.json/broadcasts/docs đứng NGOÀI — persist-only đúng thiết kế), 0 push. Giả-định honest-(c) nguồn "hook chỉ nạp lúc khởi-động phiên" → trên harness NÀY = hot-reload; ⚠️ **ENV-DEPENDENT** (data-point #2 sau skill-registry hot-reload S107/S111 — hub từng NGƯỢC kết quả, KHÔNG fleet-generalize; phiên MỚI vẫn re-check 1 lần trong pilot-checklist, không fire → thử schema phẳng). *(Nấc trước khi có bằng-chứng = STAGED-until-verified: CẤM claim "đang chạy" khi chưa thấy wal:-commit do hook sinh — nguyên tắc GIỮ cho mọi hook tương-lai.)*
- **N.4 Một đường recovery (🔴):** `/pause` (chốt điểm dừng: flush-dirty → WAL-đúng-schema → commit đích-danh `wal: pause` TRƯỚC tuyên-bố an-toàn → DỪNG HẲN) + `/tiep` (đọc WAL → chạy TOÀN BỘ verify + `git status` + disk run-folder → lệch = tin ground-truth → thực-thi next; nhánh `wf:` = relaunch-cắt-gọt). **MỌI con-trỏ recovery trỏ về MỘT chỗ = `/tiep`** (kể cả anh gõ "làm tiếp" text thường); CẤM nạp lại transcript cũ. Delta session-cmd: `session-start BƯỚC 0.7` WAL-check (ngoại-lệ CHỜ duy-nhất, chỉ con-trỏ) · `session-end §5.0` squash `wal:`-trailing CHƯA-push (`origin/main..HEAD`, KHÔNG BAO GIỜ rewrite đã-push; squash-điểm = review-diff wal-paths, AS-10 backstop dời về đây không mất) · `§6.4` reset WAL = bước cuối.
- **N.5 WAL-cho-workflow (🔴 sàn owner-nguồn):** run **≥3 task HOẶC ước >5 phút = BẮT BUỘC RUN-TRACE mode** (`args.run` — per-agent-file `sub-<role>-<i>.md`; chết giữa run còn vật-liệu trên đĩa); run.md +`## taskList snapshot` ghi TRƯỚC launch (spec đã on-disk per H21 — sàn {task-list · spec} đủ); dòng `wf:<mục-đích> run= runId= args= done=k/N harvested=` vào WAL NGAY SAU launch; **harvest-LIỀN** mỗi task xong (C4 per-turn ĐÃ CÓ — honest granularity: per-TURN ≠ per-TASK, `parallel()` trả cả batch cuối turn + Stop-hook cũng fire ở turn-boundary → chết GIỮA turn = returns mất, per-agent-file trên DISK là lớp cứu → `/tiep` đọc CẢ disk); `/tiep` nhánh wf: = **relaunch-ĐÃ-CẮT-GỌT** (grep run-id log-phiên = bằng-chứng đích-danh · harvest-hồi-tố partial-honest · relaunch CHỈ task còn lại · memory-pack **RE-DERIVE TƯƠI, CẤM snapshot**); resume-by-run-id = bonus **SAME-SESSION-ONLY** (CẤM claim cross-session). Trung-thực mất-mát tối-đa: agent song-song đang-chạy tại thời-điểm chết mất phần dở; run nhỏ ngoài diện WAL-hóa có thể mất cả run — rủi-ro chấp-nhận công-khai.
- **N.6 Commit-convention exception:** commit `wal:` (hook-flush + `/pause` + WAL-reset) = **ngoại-lệ DUY-NHẤT** của format `[CLAUDE] <scope>` — máy sinh, KHÔNG Co-Authored-By, bị squash vào commit-chốt trước push (`rules.md §5.2` mirror).
- **N.7 Honest (a)-(e) áp SE:** (a) **pilot CHƯA chạy đủ tại SE** — dựng + codify + **hook-FIRE-verified S111** (`12071c5`/`67be443`; script-RUN tay BỎ — bằng-chứng mạnh hơn thay thế + reviewer fault-inject 2-ca bịt nhánh 0-delta); kill-test / đổi-acc / squash-thật / pause-roundtrip-workflow = phiên mới + anh (HANDOFF pilot-checklist) · (b) SE **0 mark cấm-hook** (5 Active-High không đụng); engine CAVEAT "No-OS-hook" = MÔ-TẢ hiện-trạng đã honest-update ngoại-lệ đích-danh; E.3 chỉ cấm hook-làm-GATE — persist-only 0-content tương-thích; thứ-tự codify-trước-enable tôn trọng CÙNG-COMMIT S111 · (c) schema hooks nested = default, verify ở PHIÊN MỚI, không fire → thử flat · (d) resume-run-id cross-session CHƯA kiểm-chứng — đường chính = relaunch-cắt-gọt · (e) **repo SE TRONG Dropbox — 2 chiều:** risk `index.lock` khi cloud-sync đụng git (thấp-nhưng-có; hook fail-open tự-lành lượt sau) + bonus Dropbox sync cả `.git` → commit local CHƯA-push vẫn sống qua tắt-máy/đổi-máy → `/pause` không cần push vẫn durable.
**Honest nấc §N:** mechanized-THẬT = hook-script deterministic (persist) + template + acceptance grep; convention = lead ghi nội-dung WAL sau mỗi subtask (kỷ-luật, không công-cụ-ép) + squash/reset trong thân session-end do em-main kích. Dogfood S111 = tầng nội-dung (WAL-chain thật trong phiên adopt) + script-RUN tay; hook-FIRE + full-pilot = nấc kế.
---
## CAVEAT (trung-thực — đọc trước khi tự nhận "đã tự-bảo-trì")
- **No-OS-hook:** detector + gate chạy TRONG thân session-start/end body do em-main kích — KHÔNG fully-autonomous. Đúng mức: **DÒ tự-động + toàn-diện; SỬA + GÁC dựa người-chủ-trì.** **Ngoại-lệ đích-danh (S111 H22):** Stop-hook `wal-flush.ps1` persist-only (PHẦN N) — 0-content, fail-open, KHÔNG phải gate (E.3-compatible: không cưỡng-chế hành-vi, chỉ persist trạng-thái xuống đĩa); ✅ VERIFIED-RUNTIME S111 (N.3 — `12071c5` + `67be443` fire thật; STAGED-until-verified giữ làm NGUYÊN TẮC cho hook tương-lai).
- **Auto-WRITE luật/copy = MỐI-NGUY #1, CỐ Ý CHƯA LÀM** — defer tới ≥2 sự-cố thật mà thủ-công thất-bại (hiện 0). Chọn nhánh chỉ-DÒ-NÊU-CỜ cho mọi thứ chạm luật/copy (1-sửa-sai → N-chỗ-sai + phá hash broadcast đóng-băng).
- **Single-writer bar-không-hạ** — cám-dỗ "để nó tự sửa cho nhanh" phải dừng trước chốt D9.
- **Detector = LƯỚI giảm-sót, KHÔNG khoá-cứng** — bắt @đầu/đóng-phiên (theo nhịp); giữa 2 nhịp có khoảng-mù. Phòng-thủ-nhiều-lớp, không bảo-đảm tuyệt-đối.
- **Nấc dogfood:** A2/A3/D4/D9/D11 = SE runtime-mechanized SẴN (H11 = chuẩn-hoá). C1-C3 + B3 + memory-archive-gate = MỚI build S75. D5-D8 + B1 = nhãn-hoá/codify cái ngầm-có. Phân-định 'detector viết-thành-lệnh' (executed-file) ≠ 'đã chạy-quan-sát' (runtime).
- **§E User-Mark = phần-lớn CONVENTION (S79):** report-trước-đóng-dấu (E.2/P4) + cưỡng-chế-hành-vi (E.3 behavioral) + neo-lý-tính (E.5/P10) = **kỷ-luật người+AI**, KHÔNG công-cụ-ép (đừng nhận "mechanized"). CHỈ session-display (gắn lệnh-phiên P7) + chặn-tool-ở-config (E.3 tool-action P9) = mechanized. RC-sig 3 mark Active-High đã anh-confirm-stamp S79 (`ACTIVE-MARKS.md`) = executed-file; 4 lệnh `/user-mark-*` = command `.md` verified-pending-restart (no hot-reload).