All checks were successful
Deploy SOLUTION_ERP / build-deploy (push) Successful in 4m45s
- token_governor v2: L1 12K -> hot-feed per-role (lead 60K/sub 20K/wf 16K); L2/L3 6K/4K -> NO-CAP - engine G.4 + session-start 2.1.6 + session-end L.b(c): %-print 2-dau-phien - role-boundary: con-so = quyen chu-du-an (anh), AI thuc-thi + bao-%; sua framing lead-authority S81 - mark H-15 v2-delta anh-confirm RC-pqhuy1987-21-06-2026-01-58-01 - 2-process: IMPLEMENT em-main D9 + REVIEW wf_04667b25-5fa 3/3 PASS (3 MINOR fixed) - check-email STAGE 1+2 (notify verify ok) + email AI_INFRA (a749bb6bd1be) Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
207 lines
30 KiB
Markdown
207 lines
30 KiB
Markdown
# 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** | 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ò**) + `memory-budget.json` (`harness_floor` + `token_governor` v2 + `archive_gate.value_protect`) + `session-start §2.1.5`+**§2.1.6** + **`session-end §L.b(c)`** | 2-governor mechanized (byte ⟂ token config) + 5/6 sàn-chức-năng = convention; **v2 (1)(2)=config · (3)(4)=convention** |
|
||
| 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 TAILORED)
|
||
|
||
> **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`.
|
||
>
|
||
> 🔑 **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.3KB–13.3KB ≈ 1.3K–4.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 v2 §G.4):** Tầng-1 = **HOT-FEED LỚN per-role** (lead ~60K · agent-ký-ức ~20K · agent-workflow ~16K — SE tự-đo-estimate, **KHÔNG** mượn số AI_INFRA 220/60/50; 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 (`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). SE tự-đo per-role: lead ~60K · agent-ký-ức ~20K · agent-workflow ~16K (`token_governor.tier1_hotfeed_tokens`) — **estimate, KHÔNG mượn 220/60/50 AI_INFRA** (model+scale khác).
|
||
- **(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ố).
|
||
|
||
---
|
||
|
||
## 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).
|
||
- **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).
|