From b9c1b74d72c570f1532127c376d108adf99fec50 Mon Sep 17 00:00:00 2001 From: pqhuy1987 Date: Fri, 17 Jul 2026 22:29:06 +0700 Subject: [PATCH] wal: flush 20260717T2229 --- .claude/WAL.md | 4 +- .../investigator-codebase/MEMORY.md | 6 + .../spec-adap-3-ban-17-07-2026.md | 55 +++++ .../sub-investigator-codebase-0.md | 199 ++++++++++++++++++ 4 files changed, 262 insertions(+), 2 deletions(-) create mode 100644 .claude/workflows/runs/2026-07-17-S138-adap-3-ban-17-07/spec-adap-3-ban-17-07-2026.md create mode 100644 .claude/workflows/runs/2026-07-17-S138-adap-3-ban-17-07/sub-investigator-codebase-0.md diff --git a/.claude/WAL.md b/.claude/WAL.md index e9e32f4..65fbf31 100644 --- a/.claude/WAL.md +++ b/.claude/WAL.md @@ -4,8 +4,8 @@ goal: Adap 3 bản mới AI_INFRA (dinh-chinh-kep `624c378d` update 2-delta · m chain: [x] 1. STAGE-1 check-email AI_INFRA: outbox/se 0-mới · outbox/all 3 file MỚI copy verbatim → inbox root; verify 2-tuyến WHOLE-OK ×3 + BODY-MATCH full-64 ×3 (verifier-regex thiếu ngoặc-kép tự sai trước — sửa verifier, KHÔNG phải tamper); 3 file cũ hơn có adap-report = đã-adopt không kéo lại (bẫy S119 naive-diff); _index +3 row pending -[!] 2. wf: fable-real invest run=2026-07-17-S138-adap-3-ban-17-07 wf-id=wf_56d248ea-f8e (investigator-codebase tier:fable, 1-lane, ĐANG CHẠY NỀN) — STAGE-1 commit `efc0828` -[ ] 3. Lead verify + ghi spec v1 → /fable-real reviewer chấm spec → lead áp fix → spec v2 +[x] 2. wf: fable-real invest run=2026-07-17-S138-adap-3-ban-17-07 wf-id=wf_56d248ea-f8e XONG CLEAN (model claude-fable-5, 35 tool-use, sub-MD 7-phần trên đĩa, 0 garble) — verdict: 3/3 FIT, cần-implement = 3 cụm (checklist-2-tầng 4 cửa · C6 cite-2-nấc · H24-4 pending-flip), Δ2 SE-originated; lead verify 4/4 claim khớp đĩa; harvest C4 APPEND diary inv-cb (hook-cap bắn ~24.1KB — carry mở, KHÔNG tự nén) — STAGE-1 commit `efc0828` +[!] 3. wf: fable-real review run=2026-07-17-S138-adap-3-ban-17-07 wf-id=wf_a0aa62f5-9e8 (reviewer tier:fable chấm spec v1 ĐÃ GHI — ĐANG CHẠY NỀN) → lead áp fix → spec v2 [ ] 4. hmw implement (Opus 4.8 MAX worker-tier-pin default) theo spec v2 [ ] 5. adap-reports ×3 + STAGE-2 move 3 file → inbox/ai_infra + _index processed + email hub báo-nấc + commit/push (squash §5.0/§5.2) diff --git a/.claude/agent-memory/investigator-codebase/MEMORY.md b/.claude/agent-memory/investigator-codebase/MEMORY.md index 7346cba..65cb25f 100644 --- a/.claude/agent-memory/investigator-codebase/MEMORY.md +++ b/.claude/agent-memory/investigator-codebase/MEMORY.md @@ -116,6 +116,12 @@ Bearer từ `POST api.solutions.com.vn/api/auth/login` → status matrix expecte - **S128 (2026-07-16) adap-đợt-16-07 B ground-truth 6-việc + spec-draft [fable-real-single; return GARBLE #53 → lead ghi on-behalf sau verify-đĩa 5/5]:** ⭐ LỆCH-1: config RAG per-project nằm TRONG repo con — `AI_INFRA\claude-rag\lib\projects.py:43-56` walk-up cwd tìm `.claude/rag.json`, `cfg.setdefault` chỉ merge key THIẾU ⇒ SE `rag.json:26 true` override THẮNG default `False` khung (`projects.py:39` owner-final) ⇒ flip = in-repo edit, KHÔNG cross-repo. · Nhãn-đo sweep: CHỈ C1 `crystallized-backfill.ps1:25/:117` mang "calibrated"; `mfe-eval.ps1:166-180` CÙNG divisor /4.0-/3.0 nhưng honest-RANGE không-nhãn ⇒ cùng-số-khác-tội — nhãn là vấn-đề, không phải hằng-số. · `budget.measured` 0 automated reader (`memory-selfimprove-audit.ps1:18/:110` khai stale+ignore; archive-gate/backfill đo live) — MẠNH hơn seed verdict A "1 reader ignore". · Ghi-đĩa-TRONG-lúc-làm cứu trọn draft 6/6 việc khi return garble (bài S123 lần đầu chạy THẬT ở lane invest). Draft: `runs/2026-07-16-S127-adap-dot-16-07/sub-investigator-2-spec-draft.md`. Tag `[s128, adap-dot-16-07, lech-1-config-in-repo, ghi-dia-trong-luc-lam]` +## 2026-07-17 S138 — /fable-real invest wave adap 3 bản 17-07 (engine: fable-real single deep-pass · model `claude-fable-5` — em-main stamp @P3) +- **Task:** invest + SPEC-propose wave 3 bản AI_INFRA (đính-chính-kép `624c378d` · master-checklist `cadd24ae` · năm-quyết `123d8272`) — run `2026-07-17-S138-adap-3-ban-17-07` `wf_56d248ea-f8e`, sub-MD ghi-đĩa-trong-lúc-làm TRỌN trước return (0 garble, 35 tool-use). +- **Verdict:** 3/3 FIT; cần-implement THẬT = 3 cụm (khối MASTER-CHECKLIST 2-tầng 4 cửa · detector C6 cite-2-nấc · H24-4 pending-flip); Δ2 = **SE-originated** (outbox errata-report `:20` = chính ca 13-dương-giả trong broadcast); còn lại already-compliant/text-only. Lead verify độc-lập 4/4 claim chịu-lực khớp đĩa. +- **Learned:** Delta chữ-hẹp của hub PHẢI grep **landing-site trong luật SỐNG** của mình — SE chép nguyên danh-sách 4-nhãn lỗi vào `reviewer.md:46` (adopt-verbatim = kế-thừa cả lỗi nguồn). Detector mới có matcher prose ⇒ khai `Test-Quoted` + biết-trượt ngay TRONG spec (spec tự-quy-chiếu vì mô tả token CHỜ GẬT). +- **Surprise:** (a) G-011 nấc-ladder 0 định-nghĩa canonical on-disk (import ngầm hub-convention); (b) sweep hứa-máy = 0 unbacked — SE quen cite thẳng tên script; (c) `mfe-eval.ps1` vừa đo vừa ghi `.mfe-state.json` vào vùng-họ-đo (benign — khai ngoại-lệ trong câu luật K1); (d) HANDOFF L15/L19 lineage còn CHỜ-GẬT của việc đã đóng = 2 dương-giả nếu H24-4 quét cả file → scope segment-hiện-hành. + ## 🔄 Curate trigger - >~30KB → archive recent → L2 `archive/.md` (byte-exact append) + `_INDEX.md` substring pointer. Stale >3mo → remove. - **Last curate: 2026-07-16 S125 (em-main single-writer, hook-triggered @23.9KB)** — 14 dòng ≈9.5KB (5 cluster digest S87-89/06-20/S69-76/S65-69/S71 + 2 section S117 + block S122 retro-harvest) verbatim byte-exact → `archive/2026-07.md`, thay stub giữ anchor nóng. L1 ~15KB. diff --git a/.claude/workflows/runs/2026-07-17-S138-adap-3-ban-17-07/spec-adap-3-ban-17-07-2026.md b/.claude/workflows/runs/2026-07-17-S138-adap-3-ban-17-07/spec-adap-3-ban-17-07-2026.md new file mode 100644 index 0000000..6575044 --- /dev/null +++ b/.claude/workflows/runs/2026-07-17-S138-adap-3-ban-17-07/spec-adap-3-ban-17-07-2026.md @@ -0,0 +1,55 @@ +# SPEC — adap wave 3 bản AI_INFRA 17-07 (v1, lead-verified) + +> Run `2026-07-17-S138-adap-3-ban-17-07` · Nguồn: invest `/fable-real` `wf_56d248ea-f8e` (model `claude-fable-5`, sub-MD `sub-investigator-codebase-0.md` 7-phần) → **lead verify 4/4 claim chịu-lực khớp đĩa** (`reviewer.md:46` 4-nhãn thiếu `grounded` verbatim · detector inventory `:14-26` 0 resolver path:line · outbox errata `:20` "13 dương-giả (12 .docx + 1 .xlsx)" SE-originated · sub-MD trọn trên đĩa) + 1 chỉnh: union bề-mặt-đo K1 đọc theo `memory-budget.json:hotload_sources` thật (sub ghi "CLAUDE.md(?)" — sai; đúng = STATUS/HANDOFF/ACTIVE-MARKS/migration-todos/gotchas/agents-README). +> Pipeline anh chỉ định: invest fable → spec → review fable → hmw Opus 4.8 MAX. Add-only §F4.1 · 0 số nhịp/cap mới (quyền anh) · 2 detector mới INFORM-only exit-0. + +## ① Tính-năng / đề-bài + +Adopt wave 3 bản: **(A)** re-verify 2 delta bản đính-chính-kép `624c378d` — vá `grounded` vào câu cửa-duyệt `reviewer.md:46` (landing-site THẬT — SE chép nguyên danh-sách 4-nhãn lỗi của hub) + ghi-nhận Δ2 already-compliant SE-originated; **CẤM adopt lại 2 bản gốc** (luật của chính bản update). **(B)** master-checklist `cadd24ae` — nâng 4 cửa vòng-đời phiên (`session-start` · `session-end` · `pause` · `tiep`) đạt 5 điểm sàn: khối **MASTER-CHECKLIST HAI TẦNG** là **VIEW derive tươi** từ nguồn durable (WAL · STATUS · HANDOFF · ACTIVE-MARKS), tầng-2 = 4 nhóm {xong · đang-dở+breakdown · **chờ-anh LUÔN ĐÁNH SỐ** · chưa-làm}, **CẤM file checklist nguồn-đôi**; sàn-3/4/5 đã đạt sẵn (chỉ +1 dòng luật-hoá đánh-số). **(C)** năm-quyết `123d8272` — K1: 2 câu đóng-băng-bề-mặt-đo (ngoại-lệ WAL + state-write bộ-đo); K2: detector **C6 cite-2-nấc** (`path:line` → file tồn-tại + line ≤ EOF); K3: sweep hứa-máy ĐÃ chạy = 0 unbacked (chỉ ghi-nhận); K4: 1 câu ngoại-lệ relay-attribution (verb-durable cần attribution cạnh verb); K5: detector **H24-4 pending-flip** (token chờ + mã RC ⟷ ACTIVE-MARKS stamped/RESOLVED, scope segment-hiện-hành); K6: +2 dòng `do-record` vào memory-triple + 1 câu luật re-base-số-sống (generalize E-010). + +## ② Cách implement per-khoản + +**(A1) `reviewer.md:46`** — em-main micro-edit 1-từ: `(measured/empirical/calibrated/đã-đo)` → `(measured/empirical/calibrated/grounded/đã-đo)`. Agent `.md` no hot-reload → nấc executed→**verified-pending-restart** (khai trong report). **(A2) Δ2:** 0 code (standing script `agent-frontmatter-eol-check.ps1` đếm byte-CR, KHÔNG dùng ext-filter — `:253-257`/`:135-198`); adap-report bản-1 ghi evidence SE-originated + re-grep 5-nhãn (0 hằng-số `grounded` mọi bề-mặt sống — scripts/=0 · budget.json=0 · hmw.js=0 · docs/=8 prose · .claude/=10 lineage). + +**(B) Khối MASTER-CHECKLIST — khuôn CHUNG in ở 4 cửa (VIEW-derive, KHÔNG file mới):** +- Khuôn: **Tầng-1** = mỗi arc/đầu-việc-lớn 1 dòng {đóng · đang · chưa} (nguồn: STATUS Phase-line + Plan cha/con + WAL `goal`). **Tầng-2** = 4 nhóm: **xong** (WAL `[x]` + Recently-Done phiên này) · **đang-dở + breakdown** đã-xong-gì/đang-giữa-gì/còn-gì (WAL `[!]` + chain evidence) · **chờ-anh — LUÔN ĐÁNH SỐ, anh trả lời bằng số** (HANDOFF NEXT-anh + ⚑ pending-decisions + mark treo) · **chưa-làm/hẹn-cuối-phiên tách từng khoản** (WAL `[ ]` + NEXT-em). Kèm câu cấm: "Checklist = VIEW derive tươi — CẤM tạo file checklist nguồn-đôi (sàn-3)." +- `session-start.md` Phase 3: + khối Tầng-2 4-nhóm vào template REPORT (work-state §2.1.5 GIỮ NGUYÊN làm nguồn — REPORT trỏ nó; nhóm chờ-anh BẮT BUỘC đánh số). +- `session-end.md` Phase 4: + **"TỔNG-HỢP CHỐT"**: arc nào ĐÓNG trong phiên + MỌI mục chưa-đóng → chỉ đích nơi đổ (carry-slug HANDOFF / WAL-line / STATUS-row); + 1 dòng luật-hoá sàn-5 tại §L.b(j)(iv): "khối chờ-anh trong HANDOFF LUÔN đánh số". +- `pause.md` bước 5: + ý-6 "in MASTER-CHECKLIST rút-gọn (Tầng-1 + đếm 4-nhóm + liệt chờ-anh đánh số) — derive từ WAL vừa ghi + HANDOFF". +- `tiep.md` §3-bis (sau "Ground-truth thắng WAL"): "in MASTER-CHECKLIST cập-nhật từ WAL đã reconcile (vừa-xong · vẫn-treo · chờ-anh đánh số)". +- Giữ mỗi khối NGẮN (khuôn ≤15 dòng/file); KHÔNG đổi cấu-trúc section hiện có; KHÔNG chạm con-số config nào. + +**(C1) 2 câu đóng-băng bề-mặt-đo** — `session-end.md §L.b(c)` ĐẦU khối: "Từ lúc chạy script đo đầu-tiên của khối (c) tới verdict cuối: KHÔNG ghi vào **bề-mặt-đo** = `.claude/agent-memory/**` + `.claude/governance/{.session-counter.json, ACTIVE-MARKS.md}` + `docs/{STATUS,HANDOFF,gotchas}.md` + `docs/governance/error-ledger.md` + `docs/changelog/migration-todos.md` + `.claude/agents/*.md` + `runs/*/run.md`; việc ghi phát sinh giữa chừng → xếp hàng SAU verdict. Ngoại-lệ: `.claude/WAL.md` (ngoài vùng đọc cả 5 script đo) + state-write của chính bộ-đo (`.mfe-state.json`)." + 1 câu mirror ngắn ở `session-start.md §2.1.2`. Text-only. + +**(C2) Detector C6 `cite-2-nấc`** (`scripts/governance-detectors.ps1` ONLY): +- Scope: `docs/governance/*.md` top-level (EXCLUDE `adap-reports/` dir = 90 occ lineage) + `.claude/commands/*.md` + `.claude/agents/*.md`. Regex path:line trên ext `md|ps1|js|cs|tsx?`. +- 2 nấc: file KHÔNG tồn-tại (resolve repo-rel + root quen `.claude/`, `docs/`) → FLAG LOW `cite-dead-file`; tồn-tại mà line > EOF (`ReadAllLines.Length`) → FLAG LOW `cite-line-past-eof`. *(LOW không MED — suite convention: net mới chưa-triage đọc bằng phán-đoán, tránh MED-noise ngày đầu; fold TOTAL + nâng sev = quyết sau triage, owner-gated.)* +- 3 loại-trừ: (a) code-fence + inline-backtick qua **`Test-Quoted`** (matcher prose ⇒ BẮT BUỘC — luật S123); (b) lineage: dir-exclude adap-reports + dòng mang marker đóng-băng 🧊 (khai thẳng: lineage ngoài 2 proxy này chấp-nhận dương-giả đầu, tune sau first-run); (c) self-def: đăng-ký `Test-Excluded` (C4) cho chính detector + spec/sub-MD run này. +- INFORM-only exit-0 · first-run BÁO count riêng, **KHÔNG fold TOTAL baseline 45** (chống Goodhart flag-giảm). +- Fault-inject cây tạm `-RepoRoot` 6 ca: cite-gãy-file → FLAG · cite đúng → IM · cite trong fence → IM · line>EOF file thật → FLAG · cite trong backtick → IM · **anti-Goodhart: 2 cite cùng dòng (1 đúng 1 gãy) → FLAG đúng 1**. +- Header khai limit: KHÔNG bắt trôi-mềm trong-EOF (class S108 ±1-2). Script ASCII-only + build token bằng code-point (gotcha #30). + +**(C3) K3:** 0 code — adap-report bản-3 ghi bảng 3-hit/3-traced (`session-end.md:103`→H24-2 · `tiep.md:70`/`:73`→DUAL-ACCEPT block) + verdict candidate-list RỖNG, trình anh 1 dòng. *(Optional owner-gated: câu cửa-duyệt reviewer "diff thêm câu hứa-máy? → mã nào làm?" — chỉ liệt trong report, KHÔNG tự thêm.)* + +**(C4) 1 câu relay-attribution** — nhà ĐỀ-XUẤT-MẶC-ĐỊNH = `docs/rules.md §6.6` *(em-main ghi; [owner-reviewable] — anh đổi nhà sang error-ledger được khi đọc report)*: "Thuật-lại quyết-định owner mang verb-durable (vĩnh-viễn/đóng-hẳn/bỏ-hẳn) = hợp-lệ KHI VÀ CHỈ KHI attribution tường-minh NGAY CẠNH verb (anh-chốt / anh-confirm S / mã RC-* / quote nguyên văn); verb-durable trần = tự-phán. Ranh máy-kiểm nếu mai port scanner lớp-từ: token-attribution cùng dòng + matcher PHẢI `Test-Quoted`." Kèm 1 dòng trỏ **G-011 ladder** (agreed/executed/verified-pending — "KHÔNG tự khai verified") vào `docs/governance/error-ledger.md` vì hiện 0 định-nghĩa canonical on-disk *(surprise-2 invest; [owner-reviewable])*. + +**(C5) Detector H24-4 `pending-flip`** (`scripts/governance-detectors.ps1` ONLY): +- Nguồn A: `docs/HANDOFF.md` **segment HIỆN-HÀNH ONLY** (đầu file → trước match `Prev S` đầu-tiên; L15/L19 lineage = biết-trượt phải IM) + `docs/STATUS.md` §🔥 In Progress hiện-hành. +- Match: token chờ (`CHỜ GẬT|CHỜ ANH|chờ-ký` — build code-point #30) CÓ mã `RC-pqhuy1987-*` hoặc slug-mark cạnh (cùng đoạn-logic) × Nguồn B `ACTIVE-MARKS.md`: mã đó ĐÃ stamped (row Active/Active-High) hoặc `✅ RESOLVED` → FLAG LOW `pending-flip-stale`. +- Biết-trượt 5 ca (cây tạm): hàng giả CHỜ-GẬT RC-fake + mark RC-fake stamped → FLAG · mark 📦 SUPERSEDED → IM · token cạnh RC-khác chưa-stamp → IM · token trong backtick/fence (`Test-Quoted` — spec này TỰ-QUY-CHIẾU vì mô tả token chờ, khai trước) → IM · quét segment lineage → 0 flag. +- Live đầu kỳ-vọng **0 flag** (đúng thiết-kế — giá-trị ở phiên tới). Khai thẳng: class "đề-xuất-landed-in-CODE không mark" (ca S137) NGOÀI tầm máy → GIỮ H24 view-audit mắt-người theo nhịp. + +**(C6) K6 — 2 mảnh:** (i) `session-end.md` §L.b(c) Item 3-bis: +2 dòng khuôn `memory-triple: do-record=` + `memory-triple: do-record=` (0 script mới — vào session-log đã committed). (ii) 1 câu luật re-base — nhà ĐỀ-XUẤT-MẶC-ĐỊNH = `docs/governance/error-ledger.md` Active-Guards (generalize E-010 đang sống ở đó; *[owner-reviewable]*): "Re-base baseline = chốt số SỐNG tại lúc re-base — mọi số vào sổ đọc lại từ nguồn sống tại thời-điểm ghi (CẤM chép từ ghi-chú/phiên trước, kể cả ghi-chú của chính mình); byte = `(Get-Item).Length` (E-010)." + +## ③ Checklist thi-công (vai + deliverable + acceptance ĐO ĐƯỢC) + +| # | Vai | Deliverable | Acceptance (đo được) | +|---|---|---|---| +| L1 | **implementer-backend** (lane-1 — CHỈ 4 file: `.claude/commands/{session-start,session-end,pause,tiep}.md`) | Khối MASTER-CHECKLIST 4 cửa (B) + 2 câu đóng-băng (C1) + 2 dòng do-record (C6i) + 1 dòng luật-số sàn-5 + câu cấm nguồn-đôi | grep anchor `MASTER-CHECKLIST` = 4/4 file · `find -iname "*checklist*.md"` delta = 0 file mới · dry-run: liệt được 4-nhóm từ WAL/HANDOFF THẬT (nhóm chờ-anh ≥1 mục có số) · diff 0 chạm con-số config/nhịp · 4 file giữ cấu-trúc section cũ (heading cũ 100% còn) | +| L2 | **implementer-backend** (lane-2 — CHỈ `scripts/governance-detectors.ps1`) | +C6 cite-2-nấc + H24-4 pending-flip + đăng-ký `Test-Excluded` + `Test-Quoted` CẢ 2 matcher + fault-inject harness cây tạm | fault-inject: C6 6/6 + H24-4 5/5 đúng cả 2 chiều (FLAG đúng + IM đúng) · live-run: H24-4 = 0 flag / C6 báo count riêng KHÔNG fold TOTAL (45 giữ) · exit 0 · suite cũ 0 flag mới (`comm` before/after chỉ ra dòng detector mới) · ASCII-only (#30) | +| L3 | **reviewer** (workflow RIÊNG sau implement — Harness-9 2-workflow) | Falsify acceptance L1/L2 độc-lập + add-only-floor check + `Test-Quoted` coverage MỌI matcher prose trong diff (S123) + measured-label gate mọi con-số mới | re-run fault-inject byte-exact khớp · 0 floor hạ · verdict GO/GO-WITH-FIXES kèm file:line | +| EM | **em-main single-writer** | `reviewer.md:46` +grounded · C4 câu (rules §6.6) + G-011 line + C6ii câu (error-ledger) · adap-reports ×3 · STAGE-2 move + _index processed · email hub · STATUS/HANDOFF | grep `grounded` reviewer.md = 1 hit đúng `:46` · adap-reports 3 file đủ 5-trường REPORT-FORMAT · nấc G-011 đúng từng mục (agent-file = verified-pending-restart, KHÔNG tự khai verified) · selftest-stamp email MATCH | + +**Owner-gated (trình anh trong report cuối, KHÔNG chờ giữa pipeline):** nhà 2 câu luật (mặc-định đã chọn ở trên — anh veto được) · optional câu cửa-duyệt hứa-máy · fold C6 vào TOTAL + nâng sev sau triage · wording luật nếu anh muốn chỉnh. + +**Thi-công:** hmw 1 invocation 2 lane (L1 ⟂ L2 file-disjoint, index 0/1 — không collision sub-file per fix S134) · Opus 4.8 MAX qua worker-tier-pin frontmatter (đúng lệnh anh "hmw cho Opus 4.8 MAX") · L3 = invocation reviewer riêng sau khi L1+L2 land · EM micro-edits sau L3 GO. diff --git a/.claude/workflows/runs/2026-07-17-S138-adap-3-ban-17-07/sub-investigator-codebase-0.md b/.claude/workflows/runs/2026-07-17-S138-adap-3-ban-17-07/sub-investigator-codebase-0.md new file mode 100644 index 0000000..5d95a5b --- /dev/null +++ b/.claude/workflows/runs/2026-07-17-S138-adap-3-ban-17-07/sub-investigator-codebase-0.md @@ -0,0 +1,199 @@ +# sub-investigator-codebase-0 — S138 adap 3 bản AI_INFRA 17-07 (invest + SPEC-PROPOSAL) + +> Engine: /fable-real single deep-pass (anh gán đích-danh). PROPOSE-ONLY — lead verify rồi ghi spec. +> 3 bản đọc TRỌN: đính-chính-kép `624c378d` (update) · master-checklist `cadd24ae` (new) · năm-quyết `123d8272` (new digest). +> Mọi số đếm dưới = ĐÃ chạy lệnh (lệnh ghi kèm §7). Ghi-đĩa-trong-lúc-làm (bài S123 — chống #53 garble). + +--- + +## §1 — PROJECT-FIT per-khoản (CẢ 3 bản) + +| Bản | Khoản | FIT | Nấc | 1-dòng | +|---|---|---|---|---| +| 1 đính-chính-kép | Δ1 nhãn `grounded` sót kiểm-kê | ADOPT | **cần-implement-NHỎ** | Re-grep 5-nhãn ĐÃ chạy trong invest này = 0 hằng-số `grounded` mọi bề-mặt sống; NHƯNG `.claude/agents/reviewer.md:46` câu cửa-duyệt chép đúng danh-sách 4-nhãn LỖI của hub → vá +`grounded` (1-từ) | +| 1 đính-chính-kép | Δ2 ext-filter Office | ADOPT | **already-compliant (SE-originated)** | SE CHÍNH LÀ dự-án báo 13 dương-giả (`broadcasts/outbox/ai_infra/2026-07-16-se-to-ai_infra-adap-2-errata-report.md:20`); script standing `agent-frontmatter-eol-check.ps1` KHÔNG dùng ext-filter (byte-level CR, scope .claude MD-only) → 0 chỗ sửa | +| 2 master-checklist | Sàn-1 hai tầng / 4 nhóm | ADOPT | **cần-implement** | Tầng-1 có (Plan cha/con Phase 3/4 + WAL goal); tầng-2 hiện 3-state (`🟢🟡⚪` / `[x][!][ ]`), nhóm **chờ-anh** nằm TÁCH (work-state §2.1.5-3 + HANDOFF NEXT-anh) — chưa hợp nhất 1 VIEW 4-nhóm | +| 2 master-checklist | Sàn-2 mọi cửa | ADOPT | **cần-implement (2/4 cửa)** | Mở/đóng ĐỦ; `/pause` in 5-ý (goal + `[!]` đầu — không full 2-tầng); `/tiep` in reconcile không in checklist tổng | +| 2 master-checklist | Sàn-3 VIEW ≠ SOURCE | — | **already** | Negative-verify: 0 file checklist nguồn-đôi (chỉ `docs/guides/security-checklist.md` khác nghĩa + broadcast inbox); nguồn durable = WAL/STATUS/HANDOFF/ACTIVE-MARKS/migration-todos | +| 2 master-checklist | Sàn-4 carry khép + máy đối-chiếu | — | **already** | HANDOFF re-stamp `§L.b(j)(iv)` + carry-age H24-2 (`governance-detectors.ps1:24-26`) + Sàn-3 4-tín-hiệu (`tiep.md §0`) + Sàn-5 run-vs-marker (`session-end.md:70-96`) + 5 class `gap-*` omission | +| 2 master-checklist | Sàn-5 chờ-owner đánh số | — | **already** (+1 dòng luật-hoá) | `docs/HANDOFF.md:7` NEXT anh **(1)…(6)** numbered + `[carry:]` stamps; L11 prev cũng numbered — de-facto, chưa thành câu luật | +| 3 năm-quyết | K1 đóng-băng bề-mặt-đo | ADOPT | **cần-implement-NHẸ (1-2 câu)** | 5 script đo mapped read-zones (§3.4); WAL nằm NGOÀI bề-mặt-đo cả 5 → ngoại-lệ WAL đúng như hub; exposure thấp (lead single-writer sequential) — khai thật | +| 3 năm-quyết | K2 cite 2-nấc máy kiểm | ADOPT | **cần-implement (detector C6)** | C1 hiện CHỈ gotcha-ref + wikilink (`:17-18`) — 0 resolver `path:line`; volume đo 291 occurrence (§7.4) | +| 3 năm-quyết | K3 hứa-máy phải quét thật | — | **already-by-sweep** | Sweep ĐÃ chạy: 3 hit ngoài lineage, **3/3 trace được mã thật** (§3.6) → candidate-list cho anh = RỖNG | +| 3 năm-quyết | K4 ngoại-lệ relay-attribution | ADOPT | **cần-implement-NHẸ (1 câu)** + n-a phần máy | SE có 2 luật lớp-từ tương-đương (G-011 "KHÔNG tự khai verified" + measured-label gate `:46`); practice đã attribution-cạnh-verb tự nhiên; chưa có scanner lớp-từ → ranh máy = n-a, ghi nguyên-tắc | +| 3 năm-quyết | K5 pending-flip detector | ADOPT | **cần-implement (H24-4)** | Cặp SE = {HANDOFF/STATUS token chờ ⟷ ACTIVE-MARKS RC-stamps}; ca THẬT ×2 (§3.8); hiện bắt bằng H24 mắt-người theo NHỊP — đúng giai-đoạn hub trước khi máy-hoá | +| 3 năm-quyết | K6.1 file-đo phải commit | — | **PARTIAL-already** (+2 dòng) | memory-triple 3 dòng ĐÃ commit (`sessions/2026-07-17-S135-S137…:25-28`) + mfe strikes persist `.mfe-state.json` tracked; detector-TOTAL + nhịp-nợ = narrative-only | +| 3 năm-quyết | K6.2 re-base = số SỐNG | — | **already-by-practice** (+1 câu luật) | Sleep-baseline "đo tươi Get-Item" dated · TOTAL 46→45 đo cùng commit `7760cdf` · RAG 2441 re-verify live; chưa có CÂU LUẬT tổng-quát (generalize E-010) | +| 3 năm-quyết | K7 thứ-tự đọc 4 bản | — | **already** | Khung-nhịp `3daf5ee4` + năm-vòng `f71c5b65` adopted S135-S137 (`docs/HANDOFF.md:5`); digest đứng sau = wave này | + +--- + +## §2 — Bản 1: grounding 2 delta + +### Δ1 — nhãn `grounded` +- **Chứng SE kiểm-kê thiếu grounded:** `docs/governance/adap-reports/2026-07-16-Governance-vong-tu-bao-tri-thu-nam-san-su-that-nhan-da-do.md:27` — bảng kiểm-kê transcribe grep **`calibrat|measured|empirical|đã-đo`** (đúng 4 nhãn, mirror lỗi §4 hub). +- **Re-grep `grounded` (invest này — kết quả 0 hằng-số):** + - `scripts/` = **0 hit** · `hmw.js` = 0 · `.claude/agent-memory/memory-budget.json` = 0 (grep 4-pattern gồm grounded: các dòng match :72/:74/:83/:88/:90/:142 đều là measured/calibrat-prose đã xử S127-S129, KHÔNG dòng nào chứa `grounded`). + - `.claude/` = 10 occ / 9 file — TOÀN archive agent-memory + workflow-runs (lineage/mention, vd `tooling-auditor/archive/2026-07.md`, run S124/S127 sub-reviewer) — không phải hằng-số sống. + - `docs/` = 8 hit — toàn prose động-từ/lineage: "Empirical-grounded" (`docs/guides/multi-agent-setup-guide.md:5`), "recon-grounded" (`error-ledger.md:94`), "re-grounded counts" (`BROADCAST-OUT…:15`), "Ground S121 bằng đếm mã-nguồn" (`docs/STATUS.md:448` row Policies). 0 hằng-số mang nhãn. +- **🔴 LANDING-SITE THẬT (surprise):** `.claude/agents/reviewer.md:46` câu cửa-duyệt sống: `"…con-số mang nhãn đo-lường (measured/empirical/calibrated/đã-đo)?"` — **4 nhãn, THIẾU `grounded`** = SE đã CHÉP danh-sách kiểm-kê lỗi của hub vào LUẬT SỐNG. Δ1 áp thẳng: vá `:46` thêm `grounded` (1-từ). Agent `.md` no hot-reload → nấc sau vá = executed→verified-pending (mirror E3 cũ, adap-report vòng-5 `:60`). +- **Trớ-trêu đúng kiểu hub tả:** hằng-số hub sống 42 phiên tự dán "Grounded in real measurements" — SE không có hằng-số grounded, nhưng có LUẬT-4-nhãn sẽ bỏ sót đúng nhãn đó nếu mai có. + +### Δ2 — ext-filter Office +- **SE-originated:** `broadcasts/outbox/ai_infra/2026-07-16-se-to-ai_infra-adap-2-errata-report.md:20` — phát-hiện-riêng #1: *"Filter mẫu lỗ #4 của erratum THIẾU docx/xlsx/pptx/dll — chạy nguyên-mẫu … trên SE cho **13 dương-giả** (12 .docx + 1 .xlsx)"*. Broadcast `:33` "một dự-án … tự bắt, tự báo, kèm số — hub xác nhận" + `:61` ghi công = chính SE. +- **Standing check KHÔNG cần sửa:** `scripts/agent-frontmatter-eol-check.ps1` scope = `.claude/{agents,commands,skills}` MD-only (`:253-257` scopeSpecs), đếm **BYTE CR 0x0D** (`:135-198 Measure-EolBytes`) — KHÔNG hề dùng ext-filter/`i/-text` → filter Office không có chỗ đứng trong script. Check lone-CR `i/-text` = one-time S129 (adap-report erratum `:12` — filter SE-tailored → 0 suspect; "giữ làm regression-guard" = nghĩa là file text mới lone-CR sẽ rơi vào `i/-text` khi CÓ AI chạy lại lệnh đó, KHÔNG phải script standing). +- **Nguyên-tắc tailor** đã ghi 2 chỗ: adap-report erratum `:12` + chính thư outbox `:20` đề-nghị hub thêm câu tailor (hub nhận → thành Δ2 tầng-2). → nấc: **already-compliant, evidence-đủ; hành-động = ghi-nhận trong adap-report mới, 0 code**. + +--- + +## §3 — Bản 2 + 3: grounding chi-tiết + +### 3.1 Bốn cửa vòng-đời — hiện in gì +| Cửa | Hiện in | Evidence | +|---|---|---| +| `/session-start` | Phase 3 REPORT: Plan cha/con/task tree 3-state (🟢🟡⚪) + agent assignment + critical signal | `session-start.md:238-260` | +| | Work-state block 4 thành-phần (roadmap · WIP · pending-decisions · recurring-bugs) | `:151-161` (§2.1.5) | +| | H24 tick + dòng-nợ 3-vế `nhip-no-probe.ps1` | `:181-207` (§2.1.8) | +| `/session-end` | Phase 4 REPORT: Plan tree 3-state + done/commit-SHA/CI verdict | `session-end.md:147-163` | +| | §L.b(a) STATUS Recently-Done 1-dòng + (j)(iv) RE-STAMP carry mọi carry mở | `:54` + `:102-105` | +| | §6.4 reset WAL template rỗng | `:253-257` | +| `/pause` | WAL ghi-đè: chain ĐẦY-ĐỦ `[x][!][ ]` + evidence + next + verify | `pause.md:23-27` | +| | Báo 5-ý: goal · `[!]` đầu · wf bỏ lại · "an-toàn thoát" · dòng-nợ | `:38-44` | +| `/tiep` | Sàn-3 4-tín-hiệu → đọc WAL → verify ground-truth thắng → nối từ `next:` | `tiep.md:27-34, :98-116` | + +### 3.2 Sàn-1/2 gap cụ thể +- Tầng-2 bốn nhóm {xong · đang-dở+breakdown · **chờ-owner** · chưa-làm}: SE task-tree = 3-state; nhóm chờ-owner sống TÁCH ở work-state §2.1.5-3 (session-start only) + HANDOFF NEXT-anh (đọc thủ-công). `/pause`/`/tiep` KHÔNG in khối chờ-anh. +- Đóng-phiên "tổng-hợp chốt: arc nào đóng + mục chưa-đóng đi đâu": Phase 4 in plan-state nhưng không có câu bắt-buộc "mỗi mục chưa-đóng → chỉ đích carry-slug/WAL-line". + +### 3.3 Sàn-3/4/5 — already, evidence +- **0 nguồn-đôi:** `find -iname "*checklist*.md"` → 2 hit: `docs/guides/security-checklist.md` (khác nghĩa) + broadcast inbox. KHÔNG có checklist trạng-thái-việc nguồn-đôi. +- **Máy đối-chiếu carry:** H24-2 carry-age (`governance-detectors.ps1:24-26` — streak `[carry:]` ≥M most-recent carry-lines, M từ config) + nghi-thức RE-STAMP (`session-end.md:102-105` — vá vacuous streak≡1 @S122) + Sàn-3 (`tiep.md:27-34`) + Sàn-5 (`session-end.md:70-96`). +- **Numbered:** `docs/HANDOFF.md:7` (mega-line, segment hiện-hành): "NEXT anh:** (1) UAT script lũy-kế… (2) UAT freeze-NS… (3) ⚑ D1… (4) hook-cap… (5) ⚑ DP-2… (6) ⚑ DP-5…" — mỗi khoản kèm `[carry:]`. + +### 3.4 K1 — read-zones 5 script đo (bề-mặt-đo) +| Script | Vùng ĐỌC | Evidence | +|---|---|---| +| `measure-agent-memory.ps1` | `.claude/agent-memory/*/MEMORY.md` + `archive/*.md` | `:5` ($Root) + `:10-19` | +| `memory-archive-gate.ps1` | `.claude/agent-memory/**` (MEMORY.md, `memory-budget.json`, `.archive-strikes.json`, `archive/_INDEX.md`) | `:36-38, :106-111, :247-252` | +| `mfe-eval.ps1` | budget.json + `.claude/governance/ACTIVE-MARKS.md` + `docs/governance/error-ledger.md` + `docs/gotchas.md` + `.claude/agents/*.md` + `agent-memory//MEMORY.md`; **GHI** `.claude/agent-memory/.mfe-state.json` | `:42-52, :220, :241` + erratum-report lỗ#6 | +| `crystallized-backfill.ps1` | agent-memory + budget.json + hotload set {`docs/STATUS.md` · `docs/HANDOFF.md` · CLAUDE.md(?) · `docs/changelog/migration-todos.md`} | `:54-57` + default-hotload block (sed :60-110 → :15-18) | +| `nhip-no-probe.ps1` | `.claude/governance/.session-counter.json` + budget.json + `agent-memory/*/MEMORY.md` + `workflows/runs/*/run.md` | `:61-62, :107-110, :126-129` | +- **Union bề-mặt-đo:** `.claude/agent-memory/**` + `.claude/governance/{.session-counter.json, ACTIVE-MARKS.md}` + `docs/{STATUS,HANDOFF,gotchas}.md` + `docs/governance/error-ledger.md` + `docs/changelog/migration-todos.md` + `.claude/agents/*.md` + `.claude/workflows/runs/*/run.md`. +- **WAL.md KHÔNG nằm trong vùng đọc của cả 5** → ngoại-lệ WAL của hub áp thẳng, đúng bản-chất SE luôn. +- **Ca nội-tại đáng khai:** `mfe-eval.ps1` vừa ĐO vừa GHI `.mfe-state.json` vào agent-memory root (vùng script khác đo — nhưng dotfile root KHÔNG nằm trong tập đếm của measure/archive-gate [chỉ enumerate -Directory + MEMORY.md/archive] → benign; khai thành ngoại-lệ "bộ-đo tự ghi state" trong câu luật). +- **Race THẬT của SE:** thứ-tự §L.b = (c) ĐO trước → (d) flush agent-memory SAU → sequential single-writer nên không đè-giữa-lúc-đo; exposure = sub background return giữa closeout (hiếm). Bài S135 UNION-window cùng họ (detector closeout đo per-label window vì wal-flush dời delta). + +### 3.5 K2 — cite `path:line` hiện-trạng + volume +- `governance-detectors.ps1:17-18` — C1 CHỈ có (a) gotcha-ref (b) dangling wikilink. **0 resolver `path:line`.** Suite hiện: C1(a,b)/C2-B3/C3/C4/H24-1/H24-2/H24-3 (+H25 fold) — `TOTAL FLAGS` print `:1122`; baseline repo = **45** (STATUS.md:465 S137 "TOTAL 46→45"). +- Volume: **291 occurrence** cite-shape (lệnh §7.4) = docs/governance 276 (adap-reports **90** + rest **186**) + commands 10 + agents 5. +- Helper sẵn: `Test-Quoted` (`:598` — SHARED H24-1/H24-3, enclosure use⟂mention) + `Test-Excluded` C4 (`:113`) + fence-tracking đã có tiền-lệ trong H24 matchers. +- Honest-limit khai trước: 2-nấc bắt **GÃY-CỨNG** (file mất / line>EOF); KHÔNG bắt **TRÔI-MỀM** trong-EOF (class S108 cite-drift ±1-2 vẫn lọt — hub cùng giới-hạn). + +### 3.6 K3 — sweep câu hứa-máy (ĐÃ CHẠY, kết quả RỖNG) +Grep rộng (lệnh §7.5) ngoài lineage → đúng **3 hit**, cả 3 trace mã thật: +1. `session-end.md:103` "carry-age detector đo streak" → `governance-detectors.ps1` H24-2 (`:24-26`). REAL. +2. `tiep.md:70` "máy bắt được" (dạng-1) → block bash DUAL-ACCEPT `tiep.md:41-53` + close-gate `session-end §L.b(f)`. REAL. +3. `tiep.md:73` "máy bắt được ngay" (tái-sinh dạng-3) → cùng block (dạng-3 đã gỡ ⇒ run.md-only → ORPHAN flag). REAL. +Phụ: `session-start.md:206` "H24-2 fail-loud nếu key thiếu" → real (config-key check). ⇒ **0 câu hứa-máy không mã** — candidate-list (a)implement/(b)hạ-chữ = RỖNG, trình anh đúng 1 dòng kết-quả. + +### 3.7 K4 — luật lớp-từ SE hiện có +- **G-011 nấc agreed/executed/verified + "🔴 KHÔNG tự khai `verified`"** — usage khắp adap-reports (vd vòng-5 `:17` + `:100`); **surprise: 0 định-nghĩa canonical trong SE** (grep G-011 ngoài adap-reports = 0 hit; error-ledger + engine đều không có) = hub-convention import ngầm. +- **Measured-label gate** `reviewer.md:46` — hạn-chế nhãn đo-lường + 3 lối thoát. +- Practice attribution-cạnh-verb ĐÃ tự nhiên: mọi verb-durable đều kèm `anh chốt "…"` / `anh-confirm S` / `RC-…` (vd ACTIVE-MARKS `:34` "✅ RESOLVED @S130 (anh confirm qua AskUserQuestion…)"; budget `_owner_override_note` quote nguyên văn lời anh S129). +- Không có scanner lớp-từ → ranh máy-kiểm = n-a phần máy; ghi NGUYÊN-TẮC 1 câu (nếu mai port scanner → Test-Quoted BẮT BUỘC vì mọi doc mô tả luật này đều chứa verb-durable). + +### 3.8 K5 — pending-flip: cặp SE + 2 ca THẬT +- **Cặp:** {token chờ trong `docs/HANDOFF.md` (+ `docs/STATUS.md`) ⟷ sổ chữ-ký `.claude/governance/ACTIVE-MARKS.md` (RC-stamps + chú-thích RESOLVED)}. +- **Ca thật #1 (mark-carry):** ACTIVE-MARKS `:33-34` — câu treo "treo cho anh quyết: mark MỚI hay chú-thích đủ?" sống S123→S129 chỉ trong history; "✅ RESOLVED @S130 … near-miss lớp-4 'trạng-thái cũ như chân-lý' — bắt @S129 bằng grep-đĩa, đóng @S130". +- **Ca thật #2 (S137):** HANDOFF "2 đề-xuất S131 CHỜ GẬT (wire tick H24 vào /tiep + light-run owner-triggered)" trong khi CẢ HAI đã actioned (tiep.md §2.5 tick ĐÃ wire + light-run ĐÃ chạy S137) — H24 `lead-view-auditor` FLAG `view-stale-status`, FIXED cùng phiên (session-log S135-S137 `:11`; STATUS `:465`). Token cũ còn ở segment lineage `HANDOFF:15/:19` (frozen Prev — minh-hoạ dương-giả nếu detector quét cả file). +- Volume token: HANDOFF = 7 dòng mang `CHỜ GẬT|CHỜ ANH|chờ anh`, STATUS = 14 dòng (đa số lineage). +- **Honest-limit:** class ca#2 (đề-xuất → landed-in-CODE, không mark) KHÔNG máy-hoá được bằng cặp này (nguồn-resolve = nội-dung file đích tuỳ-ý) → vẫn thuộc H24 mắt-người; máy chỉ ăn class ca#1 (mark-adjacent). + +### 3.9 K6 — hai kỷ-luật đo +- **6.1:** memory-triple 3 dòng COMMITTED — `docs/changelog/sessions/2026-07-17-S135-S137-adap-khung-nhip-nam-vong.md:25-28` (do=measure exit 0 · de-xuat=archive-gate DRY exit 0 · kiem=mfe GOODHART-WARN 21→23). `.mfe-state.json` = tracked (strikes persist trong git — erratum lỗ#6). Detector-TOTAL + nhịp-nợ chỉ nằm narrative/commit-msg (`7760cdf` "TOTAL 46->45") — có vết de-facto nhưng KHÔNG luật. +- **6.2:** practice đúng sẵn: sleep-baseline "baseline 17-07 ≈183KB/5 file — đo TƯƠI (Get-Item).Length CẤM Get-Content (E-010)" (`session-start.md:131` + `session-end.md:56` + HANDOFF:7 số sống 183.054B) · TOTAL 46→45 đo trước-sau cùng commit · RAG 2441 re-verify live S126 (STATUS row). E-010 sẵn ở `error-ledger.md` (`:35/:57/:72` AS-14). GAP = chưa có câu luật TỔNG-QUÁT "re-base = đọc số sống lúc ghi, kể cả từ ghi-chú của chính mình". + +--- + +## §4 — SPEC-PROPOSAL 3-mục (PROPOSE-ONLY — lead verify + ghi) + +### ① Đề-bài +Adopt wave 3 bản AI_INFRA 17-07: (A) re-verify 2 delta bản đính-chính-kép — vá `grounded` vào câu cửa-duyệt `reviewer.md:46` (landing-site thật) + ghi-nhận Δ2 SE-originated, KHÔNG adopt lại 2 bản gốc; (B) nâng 4 cửa vòng-đời phiên đạt 5 điểm sàn master-checklist HAI TẦNG — VIEW derive tươi từ WAL/STATUS/HANDOFF/ACTIVE-MARKS, CẤM file nguồn mới; (C) áp 5 quyết + 2 kỷ-luật đo: 1 câu đóng-băng-bề-mặt-đo, detector C6 cite-2-nấc, sweep hứa-máy (đã chạy = 0 unbacked, chỉ ghi-nhận), 1 câu ngoại-lệ relay-attribution, detector H24-4 pending-flip (scope mark-adjacent), +2 dòng `do-record` vào memory-triple, +1 câu luật re-base-số-sống. Add-only (§F4.1); số nhịp/cadence = 0 đổi (quyền anh); 2 detector mới = INFORM-only exit-0 nhất-quán suite. + +### ② Cách implement per-khoản + +**(A1) Δ1 — `reviewer.md:46`:** thêm `grounded` vào ngoặc nhãn: `(measured/empirical/calibrated/grounded/đã-đo)`. 1-từ, em-main single-writer micro-edit (agent .md — restart note, nấc executed→verified-pending mirror E3). Adap-report bản-1 ghi kết-quả re-grep 5-nhãn (số ở §7.1-7.3, 0 hằng-số grounded) + Δ2 evidence SE-originated (outbox `:20`). + +**(B) Master-checklist — 4 file cửa, khối "CHECKLIST 2-TẦNG" chung 1 khuôn (VIEW-derive):** +- Khuôn in (đặt tên vd `MASTER-CHECKLIST`): Tầng-1 = mỗi arc 1 dòng {đóng·đang·chưa} (nguồn: STATUS Phase-line + Plan cha/con + WAL `goal`); Tầng-2 = 4 nhóm: **xong** (WAL `[x]` + Recently-Done phiên này) · **đang-dở + breakdown** (WAL `[!]` + chain evidence: đã-xong-gì/đang-giữa-gì/còn-gì) · **chờ-anh — LUÔN ĐÁNH SỐ** (HANDOFF NEXT-anh numbered + ⚑ pending-decisions + mark treo ACTIVE-MARKS) · **chưa-làm/hẹn-cuối-phiên** (WAL `[ ]` + NEXT-em, tách từng khoản). +- `session-start.md` Phase 3: nâng template REPORT — thêm khối Tầng-2 4-nhóm (work-state §2.1.5 giữ nguyên, REPORT trỏ nó làm nguồn; nhóm chờ-anh BẮT BUỘC đánh số). +- `session-end.md` Phase 4: thêm "TỔNG-HỢP CHỐT": arc nào ĐÓNG trong phiên + MỌI mục chưa-đóng → chỉ đích nơi đổ (carry-slug HANDOFF / WAL-line / STATUS-row) — khép sàn-4 bằng câu tường-minh; +1 dòng luật-hoá sàn-5 tại §L.b(j)(iv): "khối chờ-anh trong HANDOFF LUÔN đánh số (owner trả lời bằng số)". +- `pause.md` bước 5: +ý-6 "in MASTER-CHECKLIST rút-gọn (Tầng-1 + đếm 4-nhóm + liệt chờ-anh đánh số) — derive từ WAL vừa ghi + HANDOFF, KHÔNG file mới". +- `tiep.md` §3-bis (sau ground-truth-thắng): "in MASTER-CHECKLIST cập-nhật từ WAL đã reconcile (cái vừa xong · vẫn treo · chờ-anh đánh số)". +- 🔴 CẤM tạo `checklist.md` — ghi thẳng câu cấm vào khuôn (sàn-3). FORM tự-do, giữ ngắn (WAL ≤40 dòng không đổi — khối in là OUTPUT chat, không ghi file). + +**(C1) Đóng-băng bề-mặt-đo — 2 câu:** `session-end.md §L.b(c)` đầu khối: "Từ lúc chạy script đo đầu-tiên của khối (c) tới verdict cuối: KHÔNG ghi vào bề-mặt-đo (`.claude/agent-memory/**` + counter/MARKS + STATUS/HANDOFF/gotchas/error-ledger/migration-todos + `agents/*.md` + `runs/*/run.md` — union §3.4 sub-MD này); ghi phát sinh xếp hàng SAU verdict. Ngoại-lệ: `.claude/WAL.md` (ngoài bề-mặt-đo cả 5 script) + state-write của chính bộ-đo (`.mfe-state.json`)." Mirror 1 câu ngắn ở `session-start.md §2.1.2`. Text-only, 0 đổi thứ-tự khối. + +**(C2) Detector C6 `cite-2-nấc` (`governance-detectors.ps1`):** +- Scope: `docs/governance/*.md` (top-level, EXCLUDE `adap-reports/` dir-level = lineage 90 occ) + `.claude/commands/*.md` + `.claude/agents/*.md`. Regex `([A-Za-z0-9_/.\-]+\.(?:md|ps1|js|cs|tsx?)):(\d+)`. +- 2 nấc: (i) resolve path (repo-rel + thử vài root quen: repo-root, `.claude/`, `docs/`) → file KHÔNG tồn tại = FLAG MED `cite-dead-file`; (ii) tồn tại → đếm line (`ReadAllLines.Length`) → line > EOF = FLAG MED `cite-line-past-eof`. +- 3 loại-trừ: (a) trong code-fence (tracker ``` state) + inline-backtick (`Test-Quoted` — matcher prose ⇒ BẮT BUỘC, luật S123); (b) dòng lineage: dir-exclude adap-reports + line có marker đóng-băng (🧊) — KHAI THẲNG phần lineage ngoài 2 proxy này chấp-nhận dương-giả đầu, tune sau first-run; (c) self-def: đăng-ký C4 `Test-Excluded` cho chính detector + file spec/sub-MD run này. +- Nấc: INFORM-only exit-0 (suite convention); first-run = báo count, KHÔNG fold TOTAL baseline cho tới sau fault-inject + triage (tránh Goodhart "flag giảm"). +- Fault-inject (cây tạm `-RepoRoot`): cite gãy-file-giả → FLAG · cite đúng (file+line hợp-lệ) → IM · cite trong fence → IM · cite line>EOF file thật → FLAG · cite trong backtick → IM · anti-Goodhart: 2 cite cùng dòng (1 đúng 1 gãy) → FLAG đúng 1. +- Khai giới-hạn ngay header: KHÔNG bắt trôi-mềm trong-EOF (S108 ±1-2). + +**(C3) K3:** 0 code. Adap-report bản-3 ghi bảng 3-câu-3-mã (§3.6) + verdict RỖNG. (Optional owner-gated: +1 câu cửa-duyệt reviewer "diff thêm câu hứa-máy-quét? → mã nào làm?" — trình anh, không tự thêm.) + +**(C4) K4 — 1 câu nguyên-tắc,** đề-xuất nhà = `docs/rules.md §6.6` (cluster quyết-định khách-quan): "Thuật-lại quyết-định owner mang verb-durable (vĩnh-viễn/đóng-hẳn/bỏ-hẳn) = hợp-lệ KHI VÀ CHỈ KHI attribution tường-minh NGAY CẠNH verb (anh-chốt/anh-confirm/RC-mã/quote nguyên văn); verb-durable trần = tự-phán. Ranh máy-kiểm (khi nào port scanner): token-attribution cùng dòng, matcher PHẢI Test-Quoted." Alt-nhà: error-ledger Active-Guards — lead trình anh chọn. + +**(C5) Detector H24-4 `pending-flip` (`governance-detectors.ps1`):** +- Nguồn A: `docs/HANDOFF.md` **segment HIỆN-HÀNH ONLY** (từ đầu file tới trước match `Prev S` đầu-tiên — L15/L19 lineage = biết-trượt case phải IM) + `docs/STATUS.md` §In-Progress. +- Token chờ (build code-point, gotcha #30): `CHỜ GẬT|CHỜ ANH` có **mã RC-`RC-pqhuy1987-…`** hoặc slug mark cạnh (cùng đoạn-logic). +- Nguồn B: `ACTIVE-MARKS.md` — mã RC đó ĐÃ stamped (row bảng Active/Active-High) hoặc có chú-thích `✅ RESOLVED` → dòng nguồn-A vẫn "CHỜ" = FLAG MED `pending-flip-stale`. +- Biết-trượt (cây tạm): hàng giả "CHỜ GẬT RC-fake…" + mark RC-fake stamped → FLAG · mark 📦 SUPERSEDED → IM · token cạnh mã RC-khác CHƯA stamp → IM · token trong backtick/fence (mô tả — chính spec này!) → IM (`Test-Quoted` BẮT BUỘC — file đề-xuất ĐANG mô tả token chờ = tự-quy-chiếu, khai trước per luật S123) · quét segment lineage → 0 flag (dir/segment-guard có răng). +- Live đầu: kỳ-vọng **0 flag** (segment hiện-hành không hàng treo mark-adjacent) — giá-trị ở phiên tới, mirror hub khoản 5. +- Khai thẳng: class S137 (đề-xuất-landed-in-code) NGOÀI tầm máy → GIỮ H24 view-audit mắt-người theo nhịp (không thay). + +**(C6) K6 — 2 mảnh nhỏ:** (i) `session-end.md` Item 3-bis: +2 dòng khuôn `do-record: governance-detectors TOTAL=` + `do-record: nhip-no=` vào cùng khối memory-triple (0 script mới, 0 file mới — session-log đã committed). (ii) +1 câu luật re-base, đề-xuất nhà = error-ledger Active-Guards (generalize E-010): "Re-base baseline = chốt số SỐNG tại lúc re-base: mọi số vào sổ đọc lại từ nguồn sống tại thời-điểm ghi (CẤM chép từ ghi-chú/phiên trước — kể cả ghi-chú của chính mình); byte = (Get-Item).Length (E-010)." + +### ③ Checklist thi-công (vai + deliverable + acceptance ĐO ĐƯỢC) + +| # | Vai | Deliverable | Acceptance (đo được) | +|---|---|---|---| +| L1 | worker lane-1 (4 file cửa: `session-start.md` + `session-end.md` + `pause.md` + `tiep.md`) | Khối MASTER-CHECKLIST 4 cửa + 2 câu đóng-băng + 2 dòng do-record + 1 dòng luật-số sàn-5 + câu cấm nguồn-đôi | grep anchor khối mới hiện đủ 4 file (4/4) · `find -iname "*checklist*.md"` delta = 0 file mới · dry-run đọc-khuôn: liệt được 4-nhóm từ WAL/HANDOFF THẬT hiện-tại (chờ-anh ≥1 mục có số) · 0 đổi số nhịp/cap (diff không chạm con-số config) | +| L2 | worker lane-2 (`scripts/governance-detectors.ps1` ONLY) | +C6 cite-2-nấc + H24-4 pending-flip + đăng-ký Test-Excluded + gọi Test-Quoted cả 2 matcher | fault-inject cây tạm: C6 6-ca (§②C2) đúng 6/6 · H24-4 5-ca (§②C5) đúng 5/5 · live-run: H24-4 = 0 flag / C6 = báo count first-run (KHÔNG fold baseline) · exit-code = 0 · script ASCII-only (gotcha #30) · suite cũ 0 flag mới (before/after `comm` = chỉ dòng detector mới) | +| L3 | reviewer (gate riêng — Harness-9 2-workflow) | Falsify acceptance L1/L2 + kiểm add-only-floor + kiểm Test-Quoted coverage MỌI matcher prose trong diff (luật S123) + measured-label gate trên mọi con-số mới | Re-run độc-lập fault-inject byte-exact · xác nhận 0 floor hạ · verdict GO/GO-WITH-FIXES | +| EM | em-main single-writer | `reviewer.md:46` +grounded (restart-note) · rules §6.6/error-ledger +2 câu luật (C4+C6ii — trình anh chọn nhà) · adap-reports ×3 + email hub + STATUS/HANDOFF | grep `grounded` reviewer.md:46 = 1 hit · adap-reports 3 file 5-trường · nấc G-011 đúng từng hành-động (KHÔNG tự khai verified) | + +**Owner-gated (trình anh, KHÔNG tự quyết):** nhà của 2 câu luật (rules §6.6 vs error-ledger) · optional câu cửa-duyệt hứa-máy · fold C6 vào TOTAL baseline sau triage · mọi wording luật. + +**Lane-estimate hmw:** ≤3 lane (L1 commands 4-file ⟂ L2 detector 1-file ⟂ L3 review) — file-disjoint hoàn-toàn; micro-edits để em-main. + +--- + +## §5 — Surprises (ngoài câu hỏi chính) +1. **`reviewer.md:46` = bản chép LỖI-4-NHÃN của hub vào luật sống** — Δ1 không chỉ là "re-grep xong" mà có site vá thật trong SE. +2. **G-011 không có nhà canonical trong SE** — nấc-ladder dùng ở mọi adap-report nhưng 0 định-nghĩa on-disk (hub-convention import ngầm). Đáng 1 dòng trỏ trong error-ledger (owner quyết). +3. **Sweep hứa-máy = 0 unbacked** — hiếm; SE quen cite thẳng tên script thay vì hứa "máy sẽ". +4. **`mfe-eval.ps1` vừa đo vừa ghi vào vùng-họ-đo** (`.mfe-state.json` trong agent-memory) — benign vì dotfile ngoài tập đếm, nhưng đúng hình bệnh K1 → khai thành ngoại-lệ tường-minh trong câu luật. +5. **HANDOFF L15/L19 còn "CHỜ GẬT" lineage của việc đã đóng** — nếu H24-4 quét cả file thay vì current-segment = 2 dương-giả ngay ngày đầu (đưa vào biết-trượt case). + +## §6 — Phân-nấc gộp +- **already-compliant:** Δ2 (SE-originated) · sàn-3/4/5 bản-2 · K3 (by-sweep) · K6.2-practice · K7. +- **cần-implement:** khối checklist 4 cửa (sàn-1/2) · C6 cite-2-nấc · H24-4 pending-flip. +- **cần-implement-NHẸ (text-only):** Δ1 reviewer:46 · K1 2-câu · K4 1-câu · K6.1 +2-dòng · K6.2 +1-câu · sàn-5 luật-hoá 1-dòng. +- **n-a:** K4 phần máy (0 scanner lớp-từ) · K5 class đề-xuất-landed-in-code (ngoài tầm máy — giữ H24 mắt-người) · bản-2 n-a-clause (SE CÓ phiên/carry) · Δ2 phần sửa-lệnh (0 standing check dùng ext-filter). + +## §7 — Lệnh + số đã chạy (checklist-evidence) +1. `Grep grounded scripts/` = **0** · `Grep grounded .claude/` = **10 occ / 9 file** (toàn archive+runs lineage) · `Grep grounded docs/` = **8** (toàn prose/verb) · budget.json + hmw.js = **0**. +2. `grep -n "measured" .claude/agents/reviewer.md` → `:46` = `(measured/empirical/calibrated/đã-đo)` — **4 nhãn, thiếu grounded**. +3. Δ2: outbox `2026-07-16-se-to-ai_infra-adap-2-errata-report.md:20` = "**13 dương-giả** (12 .docx + 1 .xlsx)"; `agent-frontmatter-eol-check.ps1:253-257` scope 3-glob MD, `:135+` byte-CR — 0 ext-filter. +4. Cite volume: `grep -rEo '[A-Za-z0-9_/.-]+\.(md|ps1|js|cs|tsx?):[0-9]+' | wc -l` → docs/governance=**276** (adap-reports=**90**, rest=**186**) · commands=**10** · agents=**5** → tổng **291**. +5. Promise-sweep: grep rộng `máy (sẽ|tự)?(quét|bắt|so|kiểm|…)` 3 dir ngoài lineage → **3 hit / 3 traced** (session-end:103 · tiep:70 · tiep:73). +6. memory-triple: `grep -rn memory-triple docs/changelog/sessions/` → **3 dòng** tại `2026-07-17-S135-S137…:26-28` (committed). +7. Pending-token: `grep -c "CHỜ GẬT\|CHỜ ANH\|chờ anh"` → HANDOFF=**7 dòng** · STATUS=**14 dòng** (đa lineage); perl-window xác nhận L15/L19 = "2 đề-xuất S131 CHỜ GẬT" (đã-actioned — ca S137). +8. Nguồn-đôi: `find -iname "*checklist*.md"` → **2 hit**, 0 nguồn-đôi trạng-thái-việc. +9. NEXT-anh numbered: perl-window HANDOFF L7 → **(1)…(6)** + `[carry:]` mỗi khoản; L11 numbered tương-tự. +10. Detector inventory: `governance-detectors.ps1:14-26` = C2/C1(a,b)/C3/C4/H24-1/2/3; `:1122` TOTAL print; baseline **45** (STATUS:465 "TOTAL 46→45" S137). `Test-Quoted :598` · `Test-Excluded :113`. +11. Read-zones 5 script: file:line ở §3.4. +12. E-010: `error-ledger.md:35/:57/:72` (AS-14).