[CLAUDE] Docs: adopt Harness-17 memory self-improvement loop (Đo→Tinh-chỉnh→Kiểm) — 2-workflow, 0 prod code
All checks were successful
Deploy SOLUTION_ERP / build-deploy (push) Successful in 5m8s

- engine §I codify 10 red-floor: A1 HCV/A2 load-fid/B1 signal→action/B2 CG-1 termination/B3 build-gap-vs-floor-rot/C1 spec-audit/C2 spot-check/C3 single-writer/C4 provenance/CG-2 age-exempt
- REUSE-cite (no rebuild): A2=§H MFE · C3=D9 · CG-2=§G.2b value_protect · archive=§A
- new mechanized: scripts/memory-selfimprove-audit.ps1 (C1 spec-audit NO-API exit-0, runtime-verified — bắt frontend-designer over-cap GAP thật)
- new: .claude/governance/reinject-ledger.md (B2 CG-1 git-tracked append-only N=3, tách khỏi budget.json)
- wire session-start §2.1.7 (loop-DÒ) + session-end §L.b(c) (loop-REFINE)
- vocab: HCV alias no-seed (coverage 3-way) + governance-detectors C3-comment; cap-fix 220K→380K-pointer
- 2-workflow (Harness-9): WF1 wf_f085d7c4-d78 (ground-truth) + WF2 wf_8e73c1d6-ee6 (3-lane PASS 0-blocking)
- adap-report + checklist-pointer + email AI_INFRA (hash 54789e19, hash-verified self-consistent)
- dogfood: WF1 agent self-write MEMORY.md reverted (D9/AS-10 containment; archive missing → saved 8.5KB)

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
This commit is contained in:
pqhuy1987
2026-07-01 09:11:46 +07:00
parent 707b632a64
commit 18a17f5498
10 changed files with 577 additions and 2 deletions

View File

@ -22,6 +22,7 @@
| 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 | — |
---
@ -219,7 +220,7 @@ SE đã có RAG golden-set harness (KHÔNG phải gap): `eval/golden-set-solutio
**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 / 220K = 1.5% → FIT thừa).
- **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).
@ -234,6 +235,49 @@ SE đã có RAG golden-set harness (KHÔNG phải gap): `eval/golden-set-solutio
---
## 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): **WF1 `wf_f085d7c4-d78`** (4-agent ground-truth reuse-anchor + draft) + **WF2 review** (run-id → `adap-reports/2026-06-30-Governance-harness-17-memory-self-improvement.md`). 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** (11 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.
---
## 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ì.**
- **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).