Files
solution-erp/.claude/workflows/runs/2026-07-16-S127-adap-dot-16-07/sub-investigator-2-spec-draft.md
2026-07-16 19:30:09 +07:00

31 KiB
Raw Blame History

sub-investigator-2 — spec-cách-làm draft (Giai đoạn B, fable-real single deep-pass)

Ghi TĂNG-DẦN trong lúc làm (chống #53, bài S123). Trạng thái: HOÀN TẤT (6/6 việc ground-truthed + spec'd). Engine: fable-real-single · investigator-codebase · 2026-07-16 · run S127-adap-dot-16-07 Nguồn: spec-invest-cach-lam-16-07-2026.md + sub-reviewer-1-verdict.md (verdict A) + 6 broadcast inbox (hash 6/6 verified ở run.md)

Trạng thái ground-truth per việc

  • Việc 1 (bản 5) — rag.json — GT XONG (LỆCH-1 vị-trí: file trong repo SE)
  • Việc 2 (bản 1) — re-verify nhịp 4 mục — GT XONG (a/b/c/d đều verified đĩa)
  • Việc 3 (bản 2) — 3-câu-hỏi × 7 vòng lặp — GT XONG (bảng 7×3 + seal-gap loop 2/7 confirmed)
  • Việc 4 (bản 3) — nhãn đã-đo — GT XONG (C1+C2 verified; sweep ứng viên 3 = 0 độc-lập mới, 2 borderline cùng-lớp)
  • Việc 5 (bản 4) — n-a nắm-hướng — GT XONG (hub tự khai §6/§7)
  • Việc 6 (thư 0) — adap-reports ×5 + email gộp — GT XONG (khuôn LOCK + send-email 6c/7 + WAL:12)

VIỆC 1 (bản 5, f5ce2778) — flip contextual_retrieval true→false

Ground-truth (TỰ MỞ đĩa)

Anchor Đĩa nói vs verdict A
D:\...\SOLUTION_ERP\.claude\rag.json:26 "contextual_retrieval": true, ✓ KHỚP (nhưng file ở repo SE — xem LỆCH-1)
...\rag.json:31 rationale "Flag true but per v1.3 §12.1 + §9.4: ... Evaluate per eval recall@5 trial week 3." — trial 2026-06-16 treo, không chạy ✓ KHỚP
AI_INFRA\claude-rag\lib\projects.py:39 "contextual_retrieval": False, # OWNER-FINAL 2026-07-16 (s100)... — default khung ĐÃ false + owner-final rationale sẵn ✓ KHỚP (mirror — SE KHÔNG sửa)
AI_INFRA\.claude\rag.json:33 hub tự config false từ 2026-05-26 (rationale :38) (bổ sung — khớp claim bản 5 "default false từ cuối tháng Năm")
projects.py:54 cfg.setdefault chỉ merge key THIẾU → SE override true THẮNG default Xác nhận hedge "đúng sẵn" KHÔNG áp SE ✓

Spec execute

  • File đích: D:\Dropbox\CONG_VIEC\SOLUTION\SOLUTION_ERP\.claude\rag.json (TRONG repo SE — KHÔNG đụng AI_INFRA)
  • Diff:
    • Line 26 before: "contextual_retrieval": true, → after: "contextual_retrieval": false,
    • Line 31 before: "contextual_retrieval_rationale": "Flag true but per v1.3 §12.1 + §9.4: SOLUTION_ERP chunks self-contained (gotchas, patterns, decisions) → Contextual Retrieval prepend likely wasteful. Evaluate per eval recall@5 trial week 3."
    • after (đề xuất): "contextual_retrieval_rationale": "FALSE — OWNER-FINAL fleet-wide 2026-07-16 (broadcast f5ce2778: hub-owner chốt false toàn fleet; flag trong khung chỉ gate structural title-prepend ở chunking.py — 0 API-call, KHÔNG phải dead-config-vì-thiếu-key). Lineage SE: true 2026-05-26 → flip S127 2026-07-16. Rationale cũ 'Evaluate trial week 3' = revisit ĐÓNG bởi owner-final (trial không chạy). Recall-delta chưa đo (hub khai); data đã nhúng giữ nguyên tới re-bootstrap kế (AI_INFRA op). Mirror khung: projects.py:39 default False."
  • Lệnh verify (chạy được):
    python -c "import json; c=json.load(open(r'D:\Dropbox\CONG_VIEC\SOLUTION\SOLUTION_ERP\.claude\rag.json', encoding='utf-8')); print(c['contextual_retrieval'])"
    # expected output: False   (đồng thời chứng JSON parse OK — không vỡ file)
    
  • Owner-gate: KHÔNG cần gate mới — hub-owner đã chốt fleet-wide + anh đã gõ /adap-apply trong đề bài S127 (consent per-invocation). Quyền SE sửa = tiền lệ S41 tự sửa exclude_paths cùng file. Báo anh trong closeout + báo hub 1 dòng (gộp email Việc 6). Hiệu-lực index chờ re-bootstrap = AI_INFRA-op (KHÔNG tự chạy bootstrap.py — charter v2, cần VOYAGE key).
  • Lane D: HMW-worker mechanical (edit in-repo 2 dòng + verify; KHÔNG cross-repo write)
  • Acceptance D: lệnh verify trên in False + git diff --stat chỉ 1 file .claude/rag.json.

VIỆC 2 (bản 1, 85bf89ca) — re-verify nhịp: 4 mục (a)-(d)

Ground-truth (TỰ MỞ đĩa)

Anchor Đĩa nói vs verdict A
docs/governance/adap-reports/2026-07-15-Governance-h17-cadence-update-bookend.md:8 ...7 khoản cũ SAI (3 nhịp · "ở nguồn" 6/15/3 · >=/OVERDUE · "đến hạn" trigger · "delta run-2" · self-check >= · "dogfood mốc-0"). ✓ KHỚP — "7 khoản cũ SAI" lệch bản published (broadcast §2: "năm thành sai hoặc sai một nửa, hai khoản đổi cách đọc"; reviewer_gate M-1 fold "3-chỗ")
.claude/commands/session-start.md:206 Honest-caveat: hub nói rõ "số của các em..." ... Chỉnh lại sau chu-kỳ-2 — n=1 ở hub là mocc-0, chưa ai được bán "đã chứng minh hiệu-quả" ✓ KHỚP — stale: neo "n=1 ở hub / mốc-0 hub" (hub ĐÃ GỠ counter → không bao giờ có run-2 hub; typo "mocc-0")
.claude/agent-memory/memory-budget.json:123 _owner_ratified "...anh chot 6/15/3, 'tuong tu Hub'... Re-tune after cycle-2 (H24 caveat (c): the real delta only appears from run-2; n=1 at the hub is mocc-0...)" ✓ KHỚP — stale cùng class: "tuong tu Hub" + neo run-2 CỦA HUB (nay không tồn tại)
.claude/governance/.session-counter.json:13-20 counter=6, last_ticked S127 (07-16), last_audit light/deep@3 (S124, 07-15) → tick 3→6 trong 2 ngày ✓ KHỚP verdict A "(c) GIỮ counter — phiên ngắn-nhiều, điều-kiện gỡ hub (1-phiên/ngày + trả-mọi-lượt) KHÔNG áp"
broadcasts/_index.md:33-38 6 row INBOUND 2026-07-16, tất cả pending + folder (root) ✓ KHỚP — khuôn move: header :11 "pending (ở inbox/ root) → processed (đã MOVE vào inbox//)"

Spec execute (4 sub-việc)

2a — sửa adap-report bookend dòng 8

  • File đích: D:\...\SOLUTION_ERP\docs\governance\adap-reports\2026-07-15-Governance-h17-cadence-update-bookend.md
  • Diff dòng 8: before ...chuyển **bookend** (rà đầy-đủ 2-đầu mỗi phiên). 7 khoản cũ SAI (3 nhịp · ...) → after ...chuyển **bookend** (rà đầy-đủ 2-đầu mỗi phiên). 7 khoản cũ cần soi lại — **5 sai/sai-một-nửa + 2 chỉ đổi-cách-đọc** (3 nhịp · "ở nguồn" 6/15/3 · >=/OVERDUE · "đến hạn" trigger [lõi (a) máy-không-tự-bắn VẪN ĐỨNG] · "delta run-2" · self-check >= [idempotent GIỮ] · "dogfood mốc-0"). — GIỮ nguyên enumeration 7 mục, chỉ sửa phân-loại tổng + chèn 2 note ngoặc.
  • Verify: Select-String -Path "docs\governance\adap-reports\2026-07-15-*.md" -Pattern "5 sai" → 1 hit; -Pattern "7 khoản cũ SAI" → 0 hit.
  • Gate: không — đây là đính-chính khớp bản published (derived-flush class). Lane D: HMW-worker .

2b — 2 citation stale re-tune (neo cycle-2 CỦA SE)

  • File 1: .claude/commands/session-start.md:206 — before: **Chỉnh lại sau chu-kỳ-2** — n=1 ở hub là mocc-0, **chưa ai được bán câu "đã chứng minh hiệu-quả"**. → after (đề xuất): **Chỉnh lại sau chu-kỳ-2 CỦA SE** (deep-audit lần 2, xem .session-counter.json last_audit). Hub đã GỠ counter (bookend 07-15, sha 85bf89ca) → ví-dụ 6/15/3 "ở nguồn" = lịch-sử, KHÔNG còn mốc hub để so; delta hub hứa từ run-2 KHÔNG BAO GIỜ có (hub gỡ trước run-2) — **chưa ai được bán câu "đã chứng minh hiệu-quả"**. (giữ vế đầu dòng 206 nguyên: "SE chọn cùng 6/15/3 là điểm khởi-đầu anh CỐ Ý chọn").
  • File 2: .claude/agent-memory/memory-budget.json:123 _owner_ratified — before chứa 'tuong tu Hub' + Re-tune after cycle-2 (H24 caveat (c): the real delta only appears from run-2; n=1 at the hub is mocc-0, so nobody may sell 'proven effective' yet) → after (đề xuất, ASCII-safe giữ style file): "owner-decisions-15-07-2026 Q2 -- anh chot 6/15/3 (dat thoi diem do hub CUNG dung 6/15/3; hub GO counter 2026-07-15 bookend 85bf89ca -> vi-du 'o nguon' nay la LICH-SU, khong con moc hub). HONEST-CAVEAT khi bao hub: SE chon 6/15/3 = DELIBERATE STARTING POINT cua owner, NOT copy vo-thuc. Re-tune after cycle-2 CUA SE (deep-audit lan 2 tinh tu .session-counter.json last_audit; delta hub hua tu run-2 khong bao gio co - hub go truoc run-2), nobody may sell 'proven effective' yet."
  • Verify: Select-String -Path ".claude\agent-memory\memory-budget.json" -Pattern "mocc-0|tuong tu Hub" → 0 hit; JSON parse OK: python -c "import json; json.load(open(r'.claude\agent-memory\memory-budget.json', encoding='utf-8')); print('OK')". session-start.md: Select-String -Pattern "n=1 ở hub" → 0 hit.
  • Gate: _owner_ratified là lời-chốt CỦA ANH → wording đổi cần anh XÁC NHẬN 1 dòng (không đổi 6/15/3, chỉ đổi câu neo). Lane D: soạn diff = HMW-worker; APPLY memory-budget.json chờ anh OK (session-start.md:206 = doc dẫn-xuất, worker apply được).

2c — counter GIỮ NGUYÊN (0 diff)

  • Không sửa gì. Ghi vào adap-report: điều-kiện gỡ của hub (§4 bookend: 1-phiên/ngày + owner-trả-mọi-lượt) KHÔNG áp SE — bằng-chứng đĩa: counter 3→6 trong 2 ngày (.session-counter.json:13-16). Lane D: đưa vào text adap-report Việc 6.

2d — STAGE-2 move 6 file inbox root → inbox/ai_infra/ + flip 6 row _index

  • Khuôn hiện tại (đĩa): _index.md:11 — pending (root) → processed (MOVE vào inbox/<from>/). 6 file: 2026-07-16-ai_infra-to-se-huong-dan-adap-4-ban-moi.md + 2026-07-15-Governance-h17-cadence-update-bookend.md + 4 file 2026-07-16-Governance-*.md.
  • Diff: git mv broadcasts/inbox/<6 file>.md broadcasts/inbox/ai_infra/ + _index.md 6 row: pendingprocessed, (root)ai_infra (sha cột GIỮ).
  • Verify: (Get-ChildItem broadcasts\inbox\*.md).Count → 0 file .md còn ở root; Get-FileHash 3 file spot-check sau move == sha-prefix trong _index (byte-preserve); Select-String -Path broadcasts\_index.md -Pattern "\(root\)" → 0 hit ở 6 row đó.
  • Thứ-tự: move SAU KHI adap-reports ×5 viết xong (Việc 6) — vì adap-report cần đọc file gốc; move là bước chốt xử-lý. Lane D: HMW-worker (mechanical, có verify hash).

VIỆC 3 (bản 2, 291550ff) — inventory 3-câu-hỏi × 7 vòng lặp SE

Ground-truth: bảng 7 vòng × 3 câu (mọi anchor TỰ MỞ đĩa)

# Vòng lặp q1: trigger đọc instrument SỐNG? q2: bảo-toàn-byte + NIÊM-PHONG? q3: ĐO/LÀM tách + phanh?
1 wal-flush Stop-hook (.claude/hooks/wal-flush.ps1) SỐNG — git diff --cached --quiet per-path (:17-18) mỗi turn; sau commit diff rỗng → hội tụ không move; git commit = content-addressed sha (niêm-phong máy sẵn) ĐO=:17-18 / LÀM=commit :20-23 chỉ khi cand>0; phanh = rebase-interlock :12 + fail-open :2
2 memory-archive-gate.ps1 (planner L1-cap) SỐNG — PASS-1 đo byte MEMORY.md trên đĩa mỗi run (header :11-15); tunables đọc live từ budget archive_gate (:44-51) ⚠️ GAP THẬT — gate = DRY-planner (:6-7 "Does NOT move"); MOVE do em-main TAY; A7 chỉ verify pointer-resolve + file-exists + size>0 (:16-19) ≠ niêm-phong nội-dung; byte-preserve = kỷ-luật tay (vd budget:153 tooling-auditor S106 "moved-not-cut md5-verified") ĐO=planner / LÀM=người; phanh đủ 3 tầng: A4 hysteresis 0.85 + A5 keep_floor 5 + A6 strike 2 (budget:34-37)
3 crystallized-backfill.ps1 SỐNG — đo byte hotload_sources tươi mỗi run (:105-115); KHÔNG đọc budget.measured n/a — DRY print-only; pour = em-main tay per-session ĐO=print plan / LÀM=tay; phanh = precondition target>0 AND headroom>0 (:126-131); target = owner-authority (budget:74)
4 governance-detectors.ps1 SỐNG — đọc docs live + config h24_cadence từ budget; key thiếu → FAIL-LOUD đo-0, cấm default (:833-845) n/a — flag-only, không move ĐO-only by design; LÀM=em-main; INFORM-not-enforce
5 measure-agent-memory.ps1 Script đo SỐNG (Get-Item .Length :14-23, stdout-only :36-41 — KHÔNG tự ghi budget); NHƯNG snapshot transcribe vào budget.measured (:144) = ĐÔNG-CỨNG giữa 2 lần chạy. Đã được né đúng cách: consumer memory-selfimprove-audit.ps1:18 + :110 khai "budget.measured is STALE — re-measure on disk / ignored"; archive-gate cũng đo live ⇒ 0 trigger tự-động đọc snapshot (display/bookkeeping-only) n/a ĐO-only
6 sleep-recovery L2 gist (.claude/commands/sleep-recovery-memory-l2.md) SỐNG — trigger tay HOẶC INFORM-only đọc last_sleep_at (budget:4); field do CHÍNH command set sau run (Phase 4.4, :54) = instrument phản-ứng hành-động vòng lặp; skip file đã có .gist.md (:59) → hội tụ DERIVE additive KHÔNG move (verbatim ở-lại-đĩa :28); seal-analog = coverage-diff GATE (budget l2_gist rule :29) + reviewer Fidelity (G-001) — kiểm NGƯỜI/AI, chưa máy ĐO=Phase 0.2 detect / LÀM=nén reviewer-gated; phanh = double-distill guard distill-gen≥1 REFUSE (:60) + guard-rỗng
7 curate L1→L2 (nghi-thức em-main closeout) SỐNG — trigger = size L1 đọc thật lúc closeout (MEMORY.md curate log: hook-triggered @23.9KB/@21.4KB) + planner loop-2 đo live ⚠️ GAP cùng lớp loop-2 — "byte-exact append" + append-only (budget l2_verbatim :24) = kỷ-luật TAY; không phép niêm-phong máy sau move ĐO=planner / LÀM=người; phanh = A4/A5/A6 + value_protect advisory (budget:38-41)

Kết luận inventory (input cho adap-report bản 2)

  • q1: KHÔNG có bom instrument-đông-cứng loại hub — mọi trigger đọc live; snapshot đông-cứng duy nhất (budget.measured) có 0 consumer tự-động (bị ignore chủ-động, evidence memory-selfimprove-audit.ps1:18,110). Standing-note: CẤM wire trigger tương-lai vào budget.measured — nếu cần thì tái-cơ-sở như bài hub.
  • q2: GAP THẬT tập trung ở 2 vòng CÓ MOVE (loop 2+7): có bảo-toàn-byte kỷ-luật-tay + pointer-check A7, KHÔNG có niêm-phong máy (kho-mới = kho-cũ + phần-thêm đúng byte + khối-dời là substring nguyên văn). Khớp seed verdict A.
  • q3: mọi vòng có LÀM đều tách tầng + có phanh (hysteresis/keep-floor/strike/precondition/distill-guard/interlock).

Spec execute

  • File đích: docs/governance/adap-reports/2026-07-16-Governance-tang-luu-tru-so-cai-va-bai-hoc-instrument-dong-cung.md (NEW, REPORT-FORMAT LOCK 5 trường — khuôn adap-report.md:13-19)
  • Nội dung: nấc executed (inventory tự-áp = chính hành-động adopt; 3 câu hỏi đã chạy trên 7 vòng) · evidence = bảng trên (file:line) · tailored = "port nguyên 3 CÂU HỎI; ngưỡng/số hub KHÔNG chép (SE đã có phanh riêng A4/A5/A6 từ H11)" · honest-caveat = seal-gap loop 2+7 + đề-xuất-chờ-anh.
  • Đề-xuất chờ anh (KHÔNG build wave này): codify bước seal-verify sau move vào nghi-thức curate (md5 file trước/sau + Select-String -SimpleMatch đầu/cuối khối-dời trong archive = substring-containment) — mức NGHI-THỨC/doc-checklist, chưa viết tool (đúng mandate bản 2 "KHÔNG bảo bạn chép công-cụ").
  • Verify: file tồn tại + đủ 5 trường (Select-String -Pattern "nac G-011|evidence|tailored|honest") + có từ "niêm-phong" trong caveat.
  • Lane D: HMW-worker mechanical (transcribe từ bảng draft này — KHÔNG cần tự điều-tra lại); seal-verify codify = CHỜ-ANH.
  • Acceptance D: Test-Path docs\governance\adap-reports\2026-07-16-Governance-tang-luu-tru-so-cai-va-bai-hoc-instrument-dong-cung.md → True; grep 5 trường đủ.

VIỆC 4 (bản 3, 190c11ba) — kiểm-kê nhãn "đã-đo" + xử 2 ứng viên + câu cửa-duyệt

Ground-truth kiểm-kê (grep calibrat|measured|empirical|đã-đo toàn scripts/*.ps1 + hmw.js + memory-budget.json)

Ứng viên Đĩa nói Phân loại
C1 scripts/crystallized-backfill.ps1:117 (+ header :25 "CALIBRATED RANGE") # calibrated RANGE (invariant 4): tok_low = bytes/4, tok_high = bytes/3.0 — :118-119 hardcode /4.0 /3.0; KHÔNG assert, KHÔNG negative-control, KHÔNG data-point gốc ✓ KHỚP verdict A — nhãn sống bằng uy-tín
C2 memory-budget.json:89 "measured_token_estimate": 55000 TÊN field mang "measured"; note :90 tự khai "honest mid estimate (~19K byte-measured + ~36K harness-injected-est)"; :92 khai "NOT actively subtracted by the current scripts" = 0 consumer tự-động ✓ KHỚP verdict A — metadata giàu ≠ phản-chứng
Ứng viên 3? KHÔNG có hằng-số mới: hmw.js 0-hit; các MEASURED khác đều là đo-live-mỗi-run hoặc probe-có-artifact: mfe-eval.ps1:266 "(MEASURED, not target-then-force)" = computed live; spawn-model-audit.ps1:33,45 = probe S126 thật; wal-recovery-test.ps1 EMPIRICAL = execute-and-measure per-run (ca0/ca3 "Declared, not hidden" :375); agent-frontmatter-eol-check.ps1:65,304 = computed-from-measured per-run; memory-selfimprove-audit.ps1:283,304,322 "calibration-interim" = miễn-trừ visible sẵn Sweep XONG — 0 ứng viên độc-lập thứ 3
Borderline (cùng-lớp, ghi nhận) (a) memory-budget.json:144 section measured = snapshot S107 stale-by-design NHƯNG 0 automated consumer (đã ignore, xem Việc 3 loop 5) → OK-by-architecture, note "byte-governor snapshot" :145 đã visible. (b) memory-budget.json:65 "VN-diacritic hot-memory ~3.0-3.5 byte/tok" = NGUỒN của /3.0 — không provenance, nằm trong honest_caveats (b) xử cùng C1 (1 class)

Honest scope-caveat: sweep phủ đúng scope spec (scripts/*.ps1 + hmw.js + memory-budget.json). KHÔNG quét văn-xuôi docs/ — hub bản 3 §5 cũng đóng lối văn-xuôi (toàn cảnh-báo-giả).

Spec execute (4 sub-việc)

4a — C1: hạ-nhãn (lối-thoát 3 "bỏ nhãn đo-lường") — comment-only, 0 behavior change

  • File: scripts/crystallized-backfill.ps1 — 2 chỗ:
    • :25 before # (4) CALIBRATED RANGE: token headroom is a RANGE [bytes/4 .. bytes/3.0], NOT the → after # (4) HEURISTIC RANGE (convention, NOT measured): token headroom is a RANGE [bytes/4 .. bytes/3.0], NOT the
    • :117 before # calibrated RANGE (invariant 4): tok_low = optimistic (bytes/4), tok_high = worst (bytes/3.0) → after # heuristic RANGE (invariant 4): divisors = convention char/4 + VN ~3.0-3.5 byte/tok — CHUA do tokenizer that tai SE (see dinh-chinh letter 58f5afd8 2026-07-16). tok_low = optimistic (bytes/4), tok_high = worst (bytes/3.0)
  • Cùng-lớp đã grep (0 diff thêm): mfe-eval.ps1:166-167,180 dùng /4.0-/3.0 nhưng KHÔNG nhãn calibrated (khai RANGE honest) → giữ. memory-budget.json:65 thêm đuôi (convention -- chua do tokenizer that tai SE; dinh-chinh 58f5afd8) — gộp gate với 2b.
  • Verify: Select-String -Path scripts\crystallized-backfill.ps1 -Pattern "calibrat" -CaseSensitive:$false → 0 hit; chạy powershell.exe -ExecutionPolicy Bypass -File scripts\crystallized-backfill.ps1 → exit 0, output giữ dòng "tok RANGE [low..high]". ⚠️ giữ pure-ASCII PS 5.1 (gotcha #30).
  • Lane: HMW-worker .

4b — C2: chọn lối-thoát — CHỜ ANH chọn 1 trong 2

  • Option-iii (bỏ nhãn, sạch nhất): rename key measured_token_estimatetoken_floor_estimate (memory-budget.json:89). Điều-kiện tiên-quyết D: Grep "measured_token_estimate" toàn repo → nếu >1 file (docs/adap-reports nhắc tên) thì update mọi ref cùng commit; consumer script = 0 (đã khai :92, grep re-confirm).
  • Option-ii (miễn-trừ visible, ít-chạm): giữ tên, thêm sibling field "_measured_label_exemption": "NAME says measured but value = honest MID-ESTIMATE (19K byte-measured + ~36K harness-injected-est, not byte-countable locally) -- exemption per san-su-that 190c11ba 3-loi-thoat; phep kiem lam no truot = re-run _s112_remeasure procedure" ngay sau :89.
  • Verify (either): JSON parse OK + grep key mới/exemption 1 hit.
  • Lane: CHỜ-ANH chọn → worker apply. (Gộp cùng câu hỏi gate 2b — 1 lần hỏi.)

4c — câu cửa-duyệt vào checklist reviewer

  • File: .claude/agents/reviewer.md — anchor :35 ### 2. Apply 5-category checklist → append 1 mục (cuối section): **Measured-label gate (sàn-sự-thật 190c11ba):** diff chứa con-số mang nhãn đo-lường (measured/empirical/calibrated/đã-đo)? → hỏi: "phép kiểm nào khiến con số này TRƯỢT nếu nó sai?" Không trả lời được → yêu cầu 1 trong 3: phản-chứng chạy được · miễn-trừ lý-do visible · bỏ nhãn.
  • Caveat: agent .md không hot-reload → nấc verified-pending (restart/spawn-test sau).
  • Verify: Select-String -Path .claude\agents\reviewer.md -Pattern "TRƯỢT" → ≥1 hit.
  • Lane: HMW-worker .

4d — adap-report bản 3

  • File: docs/governance/adap-reports/2026-07-16-Governance-vong-tu-bao-tri-thu-nam-san-su-that-nhan-da-do.md (NEW, 5 trường). Nấc executed (sau 4a/4c) — riêng 4b theo lối anh chọn. Evidence = bảng kiểm-kê + positive-exemplars có sẵn (thư đính-chính 58f5afd8 = negative-control đã chạy; wal-recovery-test.ps1 + spawn-model-audit.ps1 = measured-đúng-nghĩa). Honest-caveat: máy-quét cuối-phiên của hub KHÔNG port (tuỳ-chọn per bản 3 §4 — "luật + câu cửa-duyệt mới là phần chuyển được"); văn-xuôi ngoài scope.
  • Lane: HMW-worker .

VIỆC 5 (bản 4, 9234a7aa) — n-a nắm-hướng: CHỈ adap-report

  • Ground-truth: broadcast §6 "Chưa cần làm gì cả — bản này để nắm hướng" + §7 "chưa build, chưa dùng thử" — hub tự khai. ✓ KHỚP verdict A n-a + CẤM copy mục 2.
  • File đích: docs/governance/adap-reports/2026-07-16-Governance-session-logic-tach-session-vat-ly-huong-van-hanh-moi.md (NEW, 5 trường)
  • Nội dung: nấc agreed (nắm-hướng; 0 hành-động theo chỉ-định hub §6 — KHÔNG phải n-a-vì-không-fit, mà hub-chỉ-định-chưa-làm; reviewer #2 chốt wording nấc). Evidence = precursor SE ĐÃ CÓ (mapping 5-vòng: gặt=harvest-curator · soi-lead=H24 2-vai · tự-đo=MFE/H17 · nén-kho=sleep-recovery+archive-gate · sàn-sự-thật=Việc-4-đợt-này; + H22 WAL /pause·/tiep + counter content-addressed = đúng hướng "điểm dừng chủ-động"). Honest-caveat: KHÔNG mô tả mục 2 như thứ SE sẽ áp (hub chưa build — trích §7).
  • Verify: file tồn tại + chứa trích "chưa build, chưa dùng thử" + 0 câu "SE sẽ áp mục 2".
  • Lane D: HMW-worker .

VIỆC 6 (thư 0, 181a6d19) — adap-reports ×5 + email hub GỘP 1 thư

Ground-truth khuôn

  • REPORT-FORMAT LOCK: adap-report.md:13-19 — đúng 5 trường {id-broadcast · nấc G-011 (agreed|executed|verified-pending|n-a — KHÔNG tự khai verified) · evidence đo THẬT (commit-sha·file·byte/dòng) · tailored+skip-vì-sao · honest-caveat}; idempotent update (:33); Write-tool only (:43).
  • Email khuôn: send-email.md:24-34 — id <YYYY-MM-DD>-se-to-ai_infra-<slug>, sha canonical strip-\r+strip-1-leading-newline (🔴 CẤM Get-Content -Raw — :28), Write tool, selftest-stamp 6c NGAY sau Write, log _index bước 7 CÙNG LƯỢT (bài reconcile S123 _index.md:75); to=ai_infra → không cần bản CC.
  • WAL:12 (đĩa): ask do-token = pending (errata batch hub) · ask #2 bookend ĐÃ RESOLVE S127 ✓ KHỚP verdict A row 0 — đừng đóng ask do-token trong email.

Spec execute

  • 5 file adap-reports:
    1. 2026-07-15-Governance-h17-cadence-update-bookend.mdUPDATE (sau 2a): thêm mục "Re-verify nhịp S127": 4 sàn nguyên · counter GIỮ + evidence 3→6/2-ngày · 2 citation re-tuned · nấc executed.
    2. Bản 2 — NEW (Việc 3).
    3. Bản 3 — NEW (Việc 4d).
    4. Bản 4 — NEW (Việc 5).
    5. Bản 5 — NEW: nấc executed + evidence = diff rag.json:26/:31 + commit-sha + verify-output False; honest-caveat "hiệu-lực index chờ re-bootstrap (AI_INFRA op); data cũ giữ nguyên tới re-index (broadcast §3)".
  • Email GỘP: id đề-xuất 2026-07-<ngày-gửi>-se-to-ai_infra-adap-dot-16-07-bao-nacbroadcasts/outbox/ai_infra/. Body ≤ ~1 trang: nấc per-bản ×5 (1 dòng/bản) + ack thư 0 (3 ghi-nợ hub = acknowledge-only, không cần SE làm gì) + 1 dòng "contextual_retrieval flipped false (rag.json SE) — chờ re-bootstrap" + 1 dòng counter-GIỮ (điều-kiện gỡ hub không áp: phiên ngắn-nhiều, 3 tick/2 ngày) + ask do-token GIỮ pending. Full-grammar VN outward (harness-7). Reviewer-gate outward trước gửi (send-email.md:37 — wave này = HMW-review Harness-9 2-workflow phủ).
  • Thứ-tự D: 4a/4c/2a/2b-đợi-gate → 5 reports → email (6c stamp + bước 7 cùng lượt) → STAGE-2 move (2d) → closeout.
  • Verify: 5 file tồn tại đủ 5 trường; email selftest-stamp PASS + _index OUTBOUND +1 row; git log --oneline các commit scope [CLAUDE] Docs:/Governance.
  • Lane D: HMW-worker toàn bộ (input = draft này); riêng thứ-tự phải giữ.

PHÂN-LANE D tổng + gate chờ anh (gộp 1 lần hỏi)

Việc Lane Ghi chú
1 HMW-worker in-repo SE (LỆCH-1); verify python parse
2a HMW-worker đính-chính khớp published
2b ½ worker ½ CHỜ-ANH session-start.md = worker; memory-budget.json _owner_ratified = anh OK wording
2c 0-diff text vào report bản 1
2d HMW-worker chạy CUỐI, hash-verify trước move (check-email.md:28)
3 HMW-worker (transcribe) seal-verify codify = CHỜ-ANH (backlog)
4a HMW-worker comment-only, ASCII #30
4b CHỜ-ANH chọn iii/ii rồi worker apply
4c HMW-worker verified-pending restart
4d+5+6 HMW-worker theo khuôn LOCK + send-email 6c/7 cùng lượt

3 gate chờ anh (1 câu hỏi gộp): (i) wording mới _owner_ratified (2b — không đổi 6/15/3) · (ii) C2 lối-thoát: rename vs exemption-note (4b) · (iii) seal-verify curate ritual = codify doc-checklist hay defer (Việc 3).

Self-acceptance (spec ③) — tự check trước return

  • 6 việc × 4-trường {file-đích · diff before→after · lệnh verify · gate} + phân-lane D
  • ≥5 evidence file:line TỰ MỞ (đếm được ~18: rag.json:26/:31 · projects.py:39/:54 · AI_INFRA rag.json:33/:38 · bookend-report:8 · session-start.md:206 · memory-budget.json:4/:65/:89/:92/:123/:144 · .session-counter.json:13-20 · _index.md:11/:33-38/:75 · backfill:25/:117-119/:126-131 · mfe-eval:166-180 · selfimprove-audit:18/:110 · wal-flush:12-23 · detectors:833-845 · measure:14-41 · sleep-cmd:28/:52-60 · adap-report.md:13-19 · send-email.md:28/:31-33 · check-email:20-28 · WAL:12 · reviewer.md:35)
  • ≥1 LỆCH explicit (LỆCH-1 vị-trí file Việc 1) + các KHỚP có thử-phá (xem addendum LỆCH section)
  • Per việc ≥1 acceptance chạy được cho D
  • Draft = file DUY NHẤT được ghi; 0 file khác chạm; 0 store_memory

Mục LỆCH vs verdict A (adversarial log — cập nhật dần)

LỆCH-1 (Việc 1 — VỊ-TRÍ file, không phải giá-trị): config cần flip nằm TRONG repo SE, KHÔNG phải AI_INFRA

  • Spec B (lead brief) nói: "Việc 1 nằm ở repo khác: D:\Dropbox\CONG_VIEC\AI_INFRA\** — tìm config RAG per-project SE trong khung AI_INFRA".
  • Đĩa nói: file per-project của SE = D:\Dropbox\CONG_VIEC\SOLUTION\SOLUTION_ERP\.claude\rag.json (TRONG repo SE). Cơ chế: AI_INFRA\claude-rag\lib\projects.py:43-56 load_project_config() walk-up từ cwd tìm .claude/rag.json per-repo; cfg.setdefault chỉ merge key THIẾU → key contextual_retrieval CÓ trong file SE nên override default False của khung.
  • Giá-trị verdict A KHỚP đĩa 100%: SE rag.json:26 = "contextual_retrieval": true, ✓ · :31 rationale "...Evaluate per eval recall@5 trial week 3." treo (trial 2026-06-16 không chạy) ✓ · mirror projects.py:39 = False + comment OWNER-FINAL 2026-07-16 (s100) ĐÃ có sẵn phía hub ✓.
  • Phía AI_INFRA KHÔNG cần sửa gì: AI_INFRA\.claude\rag.json:33 đã false (từ 2026-05-26, rationale :38) + projects.py:39 đã False owner-final. SE chỉ sửa file của mình.
  • Hệ-quả lane D: Việc 1 KHÔNG phải cross-repo-write → HMW worker mechanical ĐƯỢC (edit in-repo 2 dòng), không cần lead-solo cross-repo. AI_INFRA chỉ-đọc để verify mirror (đã verify lượt này).
  • Hedge bản 5 "có thể đúng sẵn" KHÔNG áp SE — CONFIRMED trên đĩa: SE override explicit true line 26 → phải flip (khớp verdict A).

Addendum — các KHỚP đã THỬ PHÁ (adversarial log, không chỉ xác nhận mù)

Anchor verdict A Cách thử phá Kết quả
rag.json:26/:31 Nghi file verdict A trỏ = AI_INFRA rag.json → mở CẢ HAI file + trace cơ-chế load (projects.py:43-56) Giá-trị khớp ở file SE; AI_INFRA:33 đã false → LỆCH-1 (vị-trí, spec theo đĩa)
bookend-report dòng 8 "7 khoản SAI" Đối chiếu ngược bản published §2 + reviewer_gate M-1 ("năm-sai-hai-đổi-cách-đọc 3-chỗ") KHỚP lệch-thật — report SE viết theo draft cũ trước fold M-1
session-start.md:206 Đọc cả block :185-206 xem caveat có tự-đứng không cần hub không Stale THẬT: neo "n=1 ở hub"/run-2-hub nay không tồn tại (hub gỡ trước run-2, bookend §4)
memory-budget.json _owner_ratified Grep line-number thật (:123, verdict A không ghi số dòng) + xem 6/15/3 có phải đổi không Chỉ đổi CÂU NEO, số giữ — khớp scope verdict A "(c) GIỮ counter"
counter "phiên ngắn-nhiều" Mở .session-counter.json đếm tick thật thay vì tin mô-tả 3→6 trong 07-15→07-16 (2 ngày) = đúng điều-kiện-KHÔNG-gỡ
backfill:117-119 "calibrated" Grep cùng-lớp `/4.0 /3.0` toàn scripts xem verdict A có sót site nào
"bản 2 seed: budget.measured STALE consumer ignore" Mở selfimprove-audit :18/:110 + kiểm archive-gate/backfill có đọc budget.measured không Cả 2 script đo live, 0 automated reader → seed ĐÚNG và còn MẠNH hơn (0 reader, không chỉ 1 reader-ignore)