Compare commits

...

11 Commits

Author SHA1 Message Date
289ba96cb0 [CLAUDE] Docs: S128 adap đợt broadcast 16-07 — 6 bản nấc-hoá (fable A/B/C gate + HMW D 3-wave 11/11 + review 2-lane GO-COMMIT)
All checks were successful
Deploy SOLUTION_ERP / build-deploy (push) Successful in 5m33s
- rag.json contextual_retrieval=false (owner-final f5ce2778; lineage git-chính-xác 05-22 bf93abd)
- crystallized-backfill.ps1 hạ-nhãn calibrated→heuristic (C1 190c11ba; code /4.0 /3.0 nguyên byte)
- reviewer.md +Measured-label gate (verified-pending restart) + session-start.md:206 re-tune chu-kỳ-2 CỦA SE
- 4 adap-reports NEW + bookend UPDATE đính-chính dòng 8 + mục Re-verify (khuôn LOCK 5-trường, 0 self-verified)
- email hub gộp 6c-PASS c0ac7486447e + STAGE-2 move 6 file hash-preserve 6/6 + _index chốt
- owner-gated 4 mục CHỜ ANH: runs/2026-07-16-S127-adap-dot-16-07/owner-gated-proposals-dot-16-07.md
- run-trace đủ: 11 sub-md 3-wave + 2 review-lane + 2 synthesis + curate reviewer L1 20.3→16.8KB seal-verified

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
2026-07-16 20:57:02 +07:00
ec14f76939 wal: flush 20260716T2031 2026-07-16 20:31:07 +07:00
593242549f wal: flush 20260716T2011 2026-07-16 20:11:23 +07:00
a0b616926e wal: flush 20260716T2000 2026-07-16 20:00:27 +07:00
6f3a863b49 wal: flush 20260716T1952 2026-07-16 19:52:03 +07:00
d0de843058 wal: flush 20260716T1930 2026-07-16 19:30:09 +07:00
44a906f11e wal: flush 20260716T1909 2026-07-16 19:09:49 +07:00
3acf14f37f wal: pause 2026-07-16 18:01:38 +07:00
8cdcab2054 wal: flush 20260716T1752 2026-07-16 17:52:34 +07:00
c1b9566d08 wal: pause 2026-07-16 15:48:22 +07:00
a6f723ec68 wal: pause 2026-07-16 15:36:18 +07:00
46 changed files with 2027 additions and 49 deletions

View File

@ -1,21 +1,27 @@
# WAL — auto-generated, không sửa tay
closing: S126 @2026-07-16T14:49:33+0700
updated: 2026-07-16 | session: S126 | branch: main
goal: Thực-thi spec adap-review S125 — NHÓM A + B1/B2/B3/B4/B6 [XONG HẾT] → còn B5 closeout GỘP S125+S126 → /pause.
updated: 2026-07-16 | session: S128 | branch: main
goal: Mạch adap ĐỢT BROADCAST 16-07 (5 bản + thư điều-phối) ĐANG DỞ — check-email + Giai đoạn A (fable-real reviewer #1) XONG; B/C/D/E chưa chạy. Điểm dừng = lệnh anh giữa S127: "Xong cái A thì pause luôn đi đừng để B".
chain:
[x] /tiep resume S126 — ground-truth 4/4; lệch lead=Fable (WAL dự-kiến Opus, owner-choice) → D5 ghi, control A2 mạnh hơn (bằng chứng: runs/2026-07-16-S126-adap-spec-execute/run.md)
[x] NHÓM A 3/3 — A1 H23=FABLE spawn-param THẮNG hard-pin ⇒ /fable-real SỐNG · A2 worker-pin=OPUS ăn runtime DÙ lead=Fable · A3 memory-write file mới OK (bằng chứng: runtime-verify-synthesis.md + spawn-model-audit -SessionId c0fa4300…)
[x] B1 sweep+vá — 15 floor-sống/5 file + 3 cùng-lớp lọt-pattern → VÁ HẾT (vocab-alias-map §3 canonical-flip · STATUS:25/:42 · agents/README:5 · fable-real-runbook ×11 · harness-11 ×3 · hmw.js :9/:44-51 · spawn-model-audit Section-D flush H8→S124 + header/E.5 · governance-detectors C3 seed +worker-tier-pin); fault-inject 2-chiều PASS (inject 2 lỗi → 2 FLAG đúng; happy-path 14-dương-giả → 0); re-grep 0 floor-sống; detector-suite 45 = baseline, 0 flag mới (bằng chứng: sweep-synthesis.md)
[x] B6 — 0 mail mới (hub chưa reply/re-stamp/vá-snippet — chỉ ghi-nhận); email H23-result: reviewer-gate FAIL bắt 3 lỗi thật → fix → stamp 945cf3ad selftest MATCH + stamp_verify exit-0 + _index CÙNG lượt (bằng chứng: broadcasts/outbox/ai_infra/2026-07-16-se-to-ai_infra-h23-precedence-test-result.md)
[x] B2 memory-vế khớp S124 (carry (c) vế-memory đóng; vế STATUS:6 → closeout) · B3+B4 soạn surface 🔒CHỜ ANH (bằng chứng: b3-b4-owner-gated-proposals.md)
[!] B5 closeout GỘP S125+S126 — session-end: STATUS Recently-Done (+bump label S119→ mới nhất, xử H24-3 MED) + HANDOFF tiering + session-log + memory-flush roster (harvest 4 lane VERIFIED trong sweep-synthesis §memoryDelta) + H2 harvest-gate 5-trục + H1 tooling-chốt + H24 counter tick + disposition TỪNG carry (6 product + h23-ĐÓNG + retier-mở) + commit + squash wal: + push
[ ] /pause (đề bài anh — sau NHÓM B)
[x] check-email AI_INFRA: nhận 6 file (1 thư + 5 broadcast), verify hash 6/6 PASS 2-tuyến, sha khớp thư hub (85bf89ca·291550ff·190c11ba·9234a7aa·f5ce2778), log 7 row INBOUND status=pending (bằng chứng: broadcasts/inbox/2026-07-1[56]-*.md + broadcasts/_index.md)
[x] Giai đoạn A — fable-real reviewer #1 (engine: fable-real-single·Fable-S127, spec 3-mục H21): VERDICT GO-ADAP, BÁC claim thư hub "bản 2 duy nhất" bằng rag.json:26 contextual_retrieval=true override ACTIVE; V1 lead spot-check 3/3 khớp; AC 8/8; harvest 1-entry (bằng chứng: .claude/workflows/runs/2026-07-16-S127-adap-dot-16-07/sub-reviewer-1-verdict.md + agent-memory/reviewer/MEMORY.md entry S127)
[x] H24 tick 5→6 (head c1b9566) light 3/6 deep 3/15 OVERDUE-none + fail-loud ancestor-check → root-cause dangling-by-squash-S126, ghi event history KHÔNG silent-reset (bằng chứng: .claude/governance/.session-counter.json history[0])
[x] Giai đoạn B — draft 6/6 việc XONG trên đĩa (return garble #53 nhưng ghi-đĩa-trong-lúc-làm cứu trọn); V1 lead 5/5; LỆCH-1 rag.json TRONG repo SE; lead chốt spec-execute-dot-16-07.md 3-wave + 3 owner-gated (bằng chứng: runs/.../sub-investigator-2-spec-draft.md + spec-execute-dot-16-07.md)
[x] Giai đoạn C — GO-WITH-FIXES (4 SHOULD-FIX + 7 NIT, 0 BLOCKER); lead fold F1-F11 vào spec-execute + ghi owner-gated-proposals-dot-16-07.md 4 mục (i-iv); harvest reviewer S128 (bằng chứng: sub-reviewer-3-verdict.md + spec-execute-dot-16-07.md bản fold)
[x] D wave-1 (wf_a965db21-e87): 5/5 PASS 0-error ~5phút — rag.json False · calibrat 0-hit+exit-0 range==baseline · reviewer.md:46 gate (verified-pending) · bookend:8 5-sai+2-đổi backtick-giữ · session-start:206 chu-kỳ-2-CỦA-SE. Em-main re-verify độc-lập 5/5 + git-scope sạch. Sub-md renamed sub-w1-task-*.md (bằng chứng: 5 file M + sub-w1-task-0..4.md)
[x] D wave-2 (wf_869809a1-f99): 5/5 PASS 0-error ~8.4phút — 4 report NEW đủ 5-heading LOCK + G-011 · bookend UPDATE mục Re-verify + 0-future-claim + dòng-8 giữ · em-main re-verify độc-lập PASS + scope sạch. Sub-md renamed sub-w2-task-*.md
[x] D-execute 3 wave 11/11 PASS (w1 wf_a965db21-e87 · w2 wf_869809a1-f99 · w3 wf_7436bb45-e20): 5 diff + 5 reports + email 6c-PASS sha 3d157164a611 + move 6-file pure-R + _index chốt. Synthesis: execute-synthesis.md. 1 deviation L43 GIỮ (bằng chứng: git status 16 file đúng scope + sub-w{1,2,3}-task-*.md ×11)
[x] D-review (wf_44eeed6b-3b4, 2 lane reviewer opus-max): GO-COMMIT 2/2, 0 BLOCKER, owner-gated 0-diff CONFIRMED. Lead fold M1 paste-literal + lineage 05-22 cùng-lớp 3-chỗ + re-stamp email c0ac7486447e (6c MATCH) (bằng chứng: review-synthesis.md + sub-reviewer-{0,1}.md)
[x] Curate reviewer L1 (hook 20.3KB→16.8KB): move-not-cut 3 verbatim + SEAL-VERIFY substring 3/3 md5 e5218d2f45b6 + gộp digest/pointer-cụm (bằng chứng: archive/2026-07.md batch-marker S128)
[~] Commit [CLAUDE] Docs: S128 adap đợt 16-07 + push origin main → spawn cicd-monitor verify (diff đụng scripts/ + .claude/ + broadcasts/ + docs/ — KHÔNG đụng src/fe)
[ ] 🔒 CHỜ ANH (3 quyết-định cũ S126, giữ nguyên): B3 mega-line giữ/tách/re-tier + B4 diff 1-dòng memory-budget.json:74 (đề-xuất: runs/2026-07-16-S126-adap-spec-execute/b3-b4-owner-gated-proposals.md) + mark S123 (ACTIVE-MARKS.md:33)
[ ] CHỜ HUB (thu hẹp còn 1): ask do-token reply/re-stamp (errata batch hub đang soạn). Ask #2 bookend-NO-DECLARED-SHA ĐÃ RESOLVE S127 (bản published sha 85bf89ca nằm trong inbox)
next: Chạy /session-end theo checklist B5 (mọi việc khác ĐÃ xong, evidence trong runs/2026-07-16-S126-adap-spec-execute/)/pause.
next: Phiên kế /tiep → chạy Giai đoạn B: lead ghi spec-B 3-mục (từ THỨ-TỰ-VIỆC trong sub-reviewer-1-verdict.md) → spawn investigator-codebase model:'fable' single deep-pass → V1 verify → lead ghi spec-execute → C → D → E.
verify:
- bash .claude/… §0 orphan-scan → 2026-07-16-S126-adap-spec-execute KHÔNG orphan (có runtime-verify-synthesis.md + sweep-synthesis.md)
- powershell scripts/spawn-model-audit.ps1 → Section D: [OK] worker-tier-pin holds (14/14 model + 14/14 effort), TOTAL FLAGS 0
- python D:\Dropbox\CONG_VIEC\AI_INFRA\scripts\stamp_verify.py broadcasts/outbox/ai_infra/2026-07-16-se-to-ai_infra-h23-precedence-test-result.md → exit 0
- git grep -n 'all-inherit' -- docs/governance/vocab-alias-map.md | head -3 → dòng 47 là header alias (worker-tier-pin chuẩn)
- git log --oneline -1 → wal: pause đầu
- Test-Path .claude/workflows/runs/2026-07-16-S127-adap-dot-16-07/sub-reviewer-1-verdict.md → True
- Select-String -Pattern "S127" -Path .claude/agent-memory/reviewer/MEMORY.md -Quiet → True
- (Get-ChildItem broadcasts/inbox/*.md -File).Count → 7 (README + 6 pending chưa STAGE-2)
- Select-String -Pattern '"counter": 6|"counter": 6' -Path .claude/governance/.session-counter.json -Quiet → True

View File

@ -83,6 +83,7 @@ BE (test+build) ~90s · FE × 2 ~60s/app · deploy ~30s · **total ~3min code /
- _(**S111 #495 `8aa3869` H22-WAL-adopt** [deploy.yml SELF-change +2 paths-ignore, run parsed+ran-full = workflow-self-change PASS; bundle FROZEN ×6-streak; 🔑 **AS-6 baseline-shift**: post-#495 memory-push (budget.json/agent-memory/run-trace) HẾT trigger CI, phân-loại giờ soi file ngoài 7-glob] **+ S112 #496 `e100ef0`** PE-workflow+Supplier-import-Phase-B+Mig63 `AddSupplierImportSourceFields` [gate 458, 🔑 411-refine: bodyless-POST→411 ANY-route → re-probe WITH-body → 401/415-matched vs 404-missing] **+ S113 #383 `5fa11b5`** Supplier-import-v2+Mig64 `AddSupplierPublishState`-APPLIED-PROD [IsPublic 37/37, gate 477] — all GO ~5m, FE real-ship, Mig-applied-prod, smoke ALL 200 · full verbatim → `archive/2026-07.md` via `_INDEX`)_
- _(**S107-closeout→S110-spot #490-#494** GOVERNANCE/MEMORY-push GO ×5 [`d74f67f`·`69957fd`·`f5a5c3e`·`6ee60cd`·`ac3f122` — trigger #41 non-.md-in-push: budget.json ×2 + hmw.js ×3, pattern DEAD từ D10 #495] — bundle FROZEN-streak ×5 sau ROTATE #489 [#69 TWO-MODE; LM-in-window + real-size 1,644,931/1,551,280b = signal duy nhất] · Mig 62 + sys.tables 89 frozen · gate 440 · smoke 3×200 ALL · 🔑 #494 spot-detection: LM-prod-newer-than-last-verified-window = missed-run detector · full verbatim → `archive/2026-07.md` via `_INDEX`)_
- _(**S107 #489 `21387cd` GOVERNANCE-ONLY (+office-document 12th sub) GO 5m33s** — JS ROTATED-benign `ChSNAJBK``BVyH-FY7` / `Bn2w1znH``EDsZebvn` CSS-frozen, 🔑 #69 TWO-MODE CONFIRMED (0-fe-src ROTATE #312/#489 hoặc FROZEN #333/#485-487 — ship-proof = LM-in-window + real-size, hash-delta phụ) · **S104 #488 `778fc98` FULL-STACK Supplier 9→27 + Mig 62 `ExpandSupplierFields` APPLIED-PROD** — AddColumn×18-exact + sys.tables-89-invariant + un-cram 4-NCC Note=NULL/Pkg/Bank/LegalRep-populated-EXACT + DTO-18-new-keys-live + JS-rotate-real-src + 🔑 FULL-STACK-SCHEMA-ADD+DATA-UN-CRAM PASS-pattern — full verbatim → `archive/2026-07.md` via `_INDEX`)_
- **S126 (2026-07-16) run 508/#394 `e9124fc` GOVERNANCE-TOOLING GO [opus, 0-garble]:** gate **509 PASS exact** (45+464, 0 fail) · bundle **FROZEN byte-id S117 #387** (`cFI7ih4a`/`MxgooVZw`, LM in-window + real-size = re-shipped hash-frozen, benign #69 same-hash, 0 hoist) · smoke 200×5 · **89 bảng + Mig 66 top = no-drift**. 4 non-.md (.json/.js/.ps1) vẫn trigger full CI per #41. ⚠️ bare `/health`=404 UNMAPPED (thật = `/health/live`+`/ready`) — đừng FAIL; jq không có → python json; python capture_output cp1252 → curl -o + open(utf-8); Windows-python không thấy `/tmp`.
- _(**S103 #487 + S100 #486 + S98 #485** GOVERNANCE/SCRIPTS-ONLY GO ×3 [.ps1/.json/.md-mix non-ignored → #41] — bundle FROZEN #69-REFINE ×4, GOVERNANCE-PASS stable [#476/#485-487] · 🔧 python `time.sleep` foreground-OK (chỉ bash-sleep-block) · full verbatim → `archive/2026-07.md` (+#485 git `c112be9`) via `_INDEX`)_
- _(**S96+S97 FINAL-REVIEW #478-#484** 11-commit ALL-HEALTHY whole-session-GO [backfill A/005=1/A/008=1/A/010=0-exact + 88-excl/89-incl reconcile; #69 rotation≠ship-signal] · **S97 #484 `fb2dfa9` DATA-FIX Mig61** 🔑 DATA-FIX-BACKFILL PASS = CI + Mig-top==HEAD + target-rows-flip-EXACT + control-untouched + derived-API-field-FLIP-live — verbatim → `archive/2026-07.md` via `_INDEX`)_
- _(S96-S97 endsBeforeCeo-saga + PE-fixes #479-#484 all PASS 440 — key: #482 Mig60 CROSS-STACK [🔴 EF-TERNARY-SQL-translate-LIVE list-200-NOT-500 · #77 field-PRESENT] · #481/#483 FE-only [#77 new-str-PRESENT/old-ABSENT] · #480 baseline-440 +PeSuggestedPriceSetterAuthzTests · JS-rotate/CSS-frozen · verbatim → git + `2026-06.md` via `_INDEX`)_

View File

@ -110,6 +110,8 @@ Bearer từ `POST api.solutions.com.vn/api/auth/login` → status matrix expecte
- **[→ archive/2026-07.md @S125 verbatim] S122 retro-harvest 7 orphan (6/6 lane 0-garble):** 🔴 LẬT tiền-đề — **0/7 mất, 7/7 XONG chỉ synthesis SAI CHỖ** (orphan đo TÊN không đo NỘI-DUNG, 8 dương-giả/25=32%) · lane-RỖNG ≠ mất (per-turn ≠ per-task) · memoryPack premise CÓ THỂ SAI — lane tự truy git đừng tin brief. Tag `[s122-retro-harvest, false-orphan-by-naming]`.
- **S126 (2026-07-16) A2 worker-pin tally + B1 all-inherit sweep [opus ×2, em-main VERIFY+APPEND]:** A2: **14/14 opus + 14/14 max** — lane no-tier CHÍNH NÓ resolve `claude-opus-4-8` DÙ lead=Fable ⇒ pin ăn runtime. B1: 284 instance → **15 floor-sống/5 file** + 26 lineage + 235 frozen; ⭐ nặng nhất `vocab-alias-map.md` §3 TỰ khai all-inherit="Canonical (hiện hành)" — doc chống-fork tự fork; class = S125 vá 2 command-file KHÔNG grep sibling governance. Lesson: mega-line blow Read-cap → perl-window giữ file:line; 2-pattern grep LỌT biến-thể không-literal (runbook:119 "lead-runtime (inherit)") — cần mắt-người pass khi vá. Em-main vá 15+3, fault-inject Section-D 2-chiều PASS, re-grep 0 floor-sống. Tag `[s126, h23-precedence, all-inherit-sweep]`.
- **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]`
## 🔄 Curate trigger
- >~30KB → archive recent → L2 `archive/<period>.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.

View File

@ -7,18 +7,12 @@
## 📁 Area memory (L2 on-demand — Read khi review vùng tương ứng)
- [S62 PE budget soft-warning](project_s62_pe_budget_soft_warning.md) — PASS: hard-block→soft-warning; submit-guard intact + validator giữ `BudgetPeriodAmount>0`, row8 negative-safe (additive-only). Validator class `PurchaseEvaluationFeatures.cs:317`.
- [Wire/mirror claim verification anchors](feedback_wire_claim_verification_anchors.md) — sha256 twin-file · `git diff -U0` isolate true-adds · `allowNegative` bleed check · guard-still-intact grep.
- [S89 PE budget-sectionB review](project_s89_pe_sectionb_review.md) — 3/3 upheld + CAUGHT MISSED #70 race: Block B PRO row3/row8 share adjustMut + cross-echo stale + NO `||peFetching`. authz-lens ≠ concurrency-lens.
- [S89 PE ends-before-CEO PLAN review](project_s89_pe_endsbeforeceo_plan_review.md) — CONCERN: BE design sound but FE gap — 4 PeUrgentChips render-sites, plan covered only 2 (missed InboxPage:290 + wrong ListPage path).
- [S89 finalize-note PLAN review](project_s89_finalize_note_plan_review.md) — CONCERN: plan ground-truth 100% accurate; gaps = note omits intermediate-approvers-still-sign + skipToFinal-last-level corner + Dev DB 9 migs behind.
- **S101 H18/H19 WF2 governance re-run + LANE-C** — PWC/PASS; detector fault-inject 4/4; 4 hash recompute MATCH (hex→SHA strip/no-strip proves content-hash ≠ commit-SHA); lesson: exact-token sweep misses paraphrased labels → widen concept-phrase khi retire named artifact; #53 garble recovered. → `archive/2026-07.md`.
- **S89 trio** ([sectionB](project_s89_pe_sectionb_review.md) · [endsBeforeCeo](project_s89_pe_endsbeforeceo_plan_review.md) · [finalize-note](project_s89_finalize_note_plan_review.md)) — adjustMut share race + authz-lens ≠ concurrency-lens · FE 4 render-sites plan-missed-2 · ground-truth-accurate-nhưng-gaps.
- **S101 H18/H19 WF2 + LANE-C — PWC/PASS:** content-hash ≠ commit-SHA (hex strip/no-strip) · exact-token sweep misses paraphrase → widen concept-phrase. → `archive/2026-07.md`.
- [S103 H20+crystallized-backfill review](project_s103_h20_crystallized_backfill_review.md) — WF2 PASS; 6/6 hash recompute MATCH + 4 already-met verified. Lesson: multi-axis warning phải nằm trong OUTPUT của script (reader chạy inline), không chỉ doc.
- [S111 PE sign-off 6-decision design review (schema/history lens)](project_pe_signoff_history_schema_review.md) — GO-WITH-ADJ; D5 opinion-history: append-only table, REJECT version-col (drops UNIQUE + breaks UPSERT).
- [PE multi-NCC per-hạng-mục cardinality#3 review](project_pe_multiwinner_perhangmuc_review.md) — PASS_WITH_ADJ; 2 MUST (giaTri isSingle/detailsSum · seed IsSelected≠IsWinner). Lesson: derived src-of-truth = EVERY write-path re-derive.
- **PE per-hạng-mục series ×5** ([cardinality#3](project_pe_multiwinner_perhangmuc_review.md) · [BE-financial](project_s114_pe_multi_ncc_perhangmuc_financial_review.md) · [spec-l3](project_pe_multi_ncc_perhangmuc_specreview.md) · [IMPL](project_s114_multi_ncc_perhangmuc_impl_review.md) · [neg-quote](project_pe_negative_quote_correctness_review.md)) — derived src-of-truth: re-derive MỌI write-path KỂ CẢ Delete · grep field-NGUỒN không chỉ field-đọc · sign-loss: defer-parse tới field-chung mọi mutation.
- [S113 Supplier import v2 close-review (owner anh Kiệt)](project_s113_supplier_import_v2_review.md) — GO-WITH-ADJ 2 must-fix (consumers không pass published=true → drafts leak). Lesson: "filter added" ≠ "drafts hidden" — grep-all-consumer + create write-path.
- [S114 PE per-hạng-mục BE-financial review](project_s114_pe_multi_ncc_perhangmuc_financial_review.md) — NEEDS-FIX: DeleteQuote/DeleteDetail KHÔNG re-derive IsWinner → phantom HĐ GiaTri=0. Lesson: derived-invariant re-establish MỌI mutation kể cả DELETE.
- [PE per-hạng-mục spec review (winner-truth lần 3)](project_pe_multi_ncc_perhangmuc_specreview.md) — PASS_WITH_ADJ. Lesson: grep write-path field-NGUỒN (IsSelected) không chỉ field-đọc; cite-range bọc branch-decision.
- [S114 PE per-hạng-mục IMPL review (flip lần 3)](project_s114_multi_ncc_perhangmuc_impl_review.md) — NEEDS-FIX; DeleteQuote vỡ invariant. Lesson: cardinality grep-consumer PHẢI gồm Delete-handler field-nguồn; spec-enum writer KHÔNG đáng tin.
- [PE negative-quote FE-only spec review (correctness-wire)](project_pe_negative_quote_correctness_review.md) — PASS_WITH_FIXES; MUST = sign-loss (form.thanhTien read DIRECT at POST). Lesson: defer-parse widget→shared-form dialog = sign phải tới field-chung ở MỌI mutation incl toggle.
- [S118 Procurement master-access seeder review](project_s118_procurement_master_access_review.md) — PASS(cond); MAJOR Reports.Read leaks financials + Suppliers.Update grant ≠ edit. Lesson: menu-flag grant ≠ API capability; bare `[Authorize]` GET = open-to-all.
- [S123 governance 4-change review (backtick-guard + H24-3 + retire dạng-3 + mark)](project_s123_governance_4change_review.md) — PASS_WITH_FIXES; CAUGHT H24-3 thiếu enclosure-guard mà cùng diff vừa chứng cần (gen-2 citation-trap) + greedy `.*` lấy `(S<N>` CUỐI≠MAX + lý-do-retire áp cho dạng-2 thì giết C8. Q5 "HOÀN-THÀNH mark" = nguỵ-biện. Q8 ENDORSE không-bump.
@ -76,34 +70,28 @@ Adversarial pre-commit reviewer SOLUTION_ERP. Read-only verify + live curl prod
## 📅 Recent activity (compressed — full verbatim → `archive/2026-06.md` + `archive/2026-07.md` via `archive/_INDEX.md`)
- **S124 L2 fidelity-to-source review, adap-wave plan — PWF (0 misread/1 MAJOR/3m):** 5/6 broadcast-reading traps read-faithful (NOT-adopt→method/spirit · h17 4-floors-KEEP · r6 abs-path). MAJOR = **push-guard "REFINEMENT ahead-of-broadcast" (spec:58) = OVERCLAIM**: SE trailing-K is LOOSER than broadcast ahead-range-all-count, keeps sandwiched wal:→leak; NO dimension strictly ahead. run.md:15 + mark cl.4 already carry honest "noise-accepted no-rewrite" ⇒ spec contradicts own run.md+mark. **Lesson: "ahead/refinement" = verify vs broadcast's ACTUAL requirement (looser≠ahead); spec+adap-report = shipped artifact → reconcile before hub-send.** Verified: adap-reports at `docs/governance/` not `.claude/` (path-trap false-empty).`archive/2026-07.md`.
- **[→ archive/2026-07.md @S128] S124 L2 fidelity-to-source + adap-wave plan — PWF (1 MAJOR):** push-guard "REFINEMENT ahead-of-broadcast" = OVERCLAIM (looser ≠ ahead); spec + adap-report = shipped artifact → reconcile trước hub-send; adap-reports docs/governance/ (path-trap false-empty).
- **[→ archive/2026-07.md @S126] S124 adap-wave-reply PLAN L3-lens — PASS_WITH_FIXES (0C/3M/2m):** 🎯 do-token trap bắt WHILE adopting (chunk 26075 mislabeled whole-file 70892, 2.72× under) + M2 meta-count + M3 nấc-verified-on-NEVER-RAN. Lesson: verify do-token = re-Read full + tự đọc truncation-line.
- **[→ archive/2026-07.md @S126] S125 do-token RELABEL (em-main B3):** negative-control 3-probe ⇒ notice-N = **CẬN-TRÊN heuristic, KHÔNG real-token**; dải STATUS [31K byte/4 — 70,9K notice]. Lesson: nhãn "real-N" tự nó = mislabel — negative-control (chuỗi lặp) mới phân-biệt heuristic/tokenizer.
- **[→ archive/2026-07.md @S126] S125 fable-real adap-review — PASS-WITH-SELF-FIXES [engine:fable-real inline-lead]:** 2 near-miss tự bắt: false-TAMPER→RCA **verifier-bệnh** (PS5.1 ANSI-decode; sibling-test 2-CHIỀU: sibling-MATCH⇒file-bệnh · sibling-FAIL⇒verifier-bệnh) · suýt claim-sai nguồn outward→mở ĐÚNG file+dòng trước khi viết; stamp-then-edit = sửa→RE-STAMP `58f5afd8`→re-selftest cùng lượt. Bẫy Edit-tool escape-BOM→build-from-codepoint. Evidence: `runs/2026-07-16-S125-fable-real-adap-review/`.
- **S123 governance 4-change review — PWF (3 must/1 MAJOR/3m):** → [topic](project_s123_governance_4change_review.md). 🔴 **#53 garble tại TAO; đĩa KHÔNG cứu vì chưa ghi diary ⇒ ghi diary TRƯỚC return.** Vá-1-lớp⇒grep MỌI matcher cùng-lớp TRONG diff · đổi-format-cho-trượt-mẫu = Goodhart rời-tập-đo.
- **S117 PE negative-quote FE-only spec-review — PASS.** Lesson: 2-tier guard = compare SUM EXPRESSION not comparator; derived-flag safety = trace what flag KEYED-ON (`IsSelected` sign-agnostic). → `archive/2026-07.md`.
- **S116 outward-email GATE H-22 WAL restart runtime — PASS (3m).** Lesson: persist-claim on git-tracked WAL → verify tracked+0-drift; mechanism-proof lives at Stop-hook run, NOT git property. → `archive/2026-07.md`.
- **S115 presence-not-age spec-review — PWF (0C/2M/5m).** Lesson: verify EACH regex-alt vs EACH target-line by hand; acceptance-grep can't detect its OWN deliverable's miss; skip-on-contiguous-prefix = correctness-inversion. → `archive/2026-07.md`.
- **S101 H19 WF2 Lane-A — PWC (closed @S102):** marker WRITE-ONLY dead — persist-claim cần CẢ reader-side (verify consumer exists). → `archive/2026-07.md`.
- **S100 H18 WF2 synthesis+Lane-B — PWC:** ledger revert-clean + ratio-band; anti-pattern HELD stale WF2 run-id NOT stamped. → `archive/2026-07.md`.
- **S98 3 verify-lane — PASS:** fidelity-gate 3-lớp; Windows byte-verify = .NET ReadAllBytes/`wc -c` (MSYS strip `\r` báo sai). → `archive/2026-07.md`.
- **S97 PE finalize UAT + Mig 60/61 — PASS:** default-flip byte-mirror SHA256 ×2; RUNTIME-flag grep-all + 4-projection. → `archive/2026-07.md`.
- **S93 Harness-16 MFE adopt — PASS:** code-gate re-derived denom; WF1 caught vocab-fork H6.7≠H16. → adap-report + _INDEX.
- **Digest S93→S117 (verbatim → `archive/2026-07.md`; 1 mệnh-đề/entry):** S93 code-gate re-derived denom · S97 default-flip byte-mirror SHA ×2 · S98 Windows byte-verify = .NET (MSYS strip
báo sai) · S100 HELD stale run-id NOT-stamped · S101 persist-claim cần reader-side · S108 outward-claim "đã sửa X" phải cat X trước gate · S109 gist meta-count ≠ disk · S110 claim-về-code grep lại kể cả reword · S111 nâng-nấc-quên-sync cùng-diff · S115 verify EACH regex-alt by-hand · S116 persist-claim = tracked + 0-drift · S117 2-tier guard compare SUM-EXPRESSION.
- **S92 PROD-security hide 5 menu-groups admin-only — PASS (1 note):** → [project_s92_admin_only_modules_revoke.md](project_s92_admin_only_modules_revoke.md).
- **June-2026 digest — LESSON-ONLY (verbatim → `archive/2026-06.md` + `_INDEX`):** merge-distill fabricates false-specificity ⇒ QUALITY gate AFTER presence · sha = self-declared NOT recompute · fail-closed guard BEFORE terminal-state + server-recompute · TRACKED = check-ignore ≠ ls-files · menu-hide ≠ API-lock · single→multi stops at display-layer.
- **S108 first-real-run H19 — FAIL (1C+4M+6m):** email "đã sửa comment" khi hmw.js chưa sửa. Lesson: outward-claim "đã sửa X" phải cat X trước gate; grep stale-claim theo CLASS. → `archive/2026-07.md`.
- **S109 fidelity-gate 2 gist L2 — PWF (3):** gist meta-count 15≠disk 14; delta tự-tính = false-specificity; fact-claim trong N/A verify như content. → `archive/2026-07.md`.
- **S111 H22 WAL adopt — PWF (0C/1M):** CATCH "STAGED" còn khi N.3 nâng VERIFIED-RUNTIME = nâng-nấc-quên-sync cùng-diff; live-witness>forensics. → `archive/2026-07.md`.
- **S110 H21+MTv3 — PWF (0C/5M):** doc "VALID_ROLES 12" code=10 → claim-về-code grep lại kể cả reword; supersede trỏ adap-report chưa tạo = dangling. → `archive/2026-07.md`.
- **S112 fable-real-single close-reviews+FINAL — GO 0-must:** Import btn reuses sibling-menu guard but endpoint=Admin ⇒ derive guard from ENDPOINT authz; EDGE-5 gác FROM-state ở ĐỈNH method KHÔNG per-branch; self-flip token-test = internal NOT external-accept. → [topic](project_s112_supplier_import_review.md).
- **S126 (2026-07-16) A1-H23-probe + email-H23-gate [opus ×2, em-main VERIFY+APPEND] — gate FAIL bắt 3 lỗi thật trước stamp:** (1) 🎯 "Audit 2/2/0" NON-REPRODUCIBLE — audit COUNTS = **session-cumulative**, chính 2 lane review đẩy 2→4. **Lesson: số AGGREGATE cumulative KHÔNG vào outward artifact mời-reproduce — evidence bền = per-lane theo run-id.** (2) "Ba việc nêu ở thư" thực = **2 ASK** — MỞ thư đếm ask thật, đừng gộp courtesy-expectation. (3) "hub 17/17" = SE-self-obs R1-open → hedge+quy-thuộc. Lõi verified độc-lập: lead=Fable **116/116** records · A1 fable · A2 opus. Fixed → stamp `945cf3ad` selftest+stamp_verify+_index CÙNG lượt. Evidence: `runs/2026-07-16-S126-adap-spec-execute/`.
- **[→ archive/2026-07.md @S128 + topic] S112 close-reviews+FINAL — GO 0-must:** derive guard từ ENDPOINT authz; EDGE-5 gác FROM-state ĐỈNH method; self-flip ≠ external-accept. → [topic](project_s112_supplier_import_review.md).
- **[→ archive/2026-07.md @S128] S126 A1-H23-probe + email-H23-gate gate FAIL bắt 3 lỗi trước stamp:** số AGGREGATE cumulative KHÔNG vào outward artifact (evidence bền = per-lane run-id) · "ba việc" = 2 ASK (mở thư đếm thật) · self-obs R1-open → hedge + quy-thuộc. Stamp `945cf3ad`. Evidence: runs/2026-07-16-S126-adap-spec-execute/.
- **S128 (2026-07-16) D-review 2-lane adap 16-07 [hmw reviewer opus-max ×2 · R1 tự-ghi sub-md, R2 return-only→lead scribe; em-main VERIFY+APPEND] — GO-COMMIT 2/2, 0 BLOCKER, owner-gated 0-diff CONFIRMED:** R1: 5 acceptance re-run PASS paste-thật · hash 7/7 recompute · 0 self-claim "verified" · M1 evidence-paste "tô-điểm" (`contextual_retrieval = False` khi lệnh chỉ in `False`) — soi literal-fidelity CẢ KHI giá-trị đúng. R2: email fact-check 7/7 · counter cumulative AN-TOÀN khi neo file persisted reproducible (≠ S126 self-mutating) · lineage "05-26" → git nói 05-22 `bf93abd` — lệch CONSERVATIVE ⇒ minor không blocker (**direction-of-error quyết mức lỗi outward**) · brute-force canonical-variant với known-good TRƯỚC khi phán tamper (recipe strip-1 vs strip-ALL: 2 biến-thể sống chung theo phía phát-hành — SE-set khớp strip-1, hub-set khớp strip-ALL). Lead fold M1+lineage 3-chỗ-cùng-lớp + re-stamp `c0ac7486447e`. Trace: `runs/2026-07-16-S127-adap-dot-16-07/{sub-reviewer-0,sub-reviewer-1,review-synthesis}.md`. Tag `[s128, d-review, direction-of-error, sha-variant-per-publisher]`
- **S128 fable-real #2 re-review spec-execute adap 16-07 [0-garble ghi-đĩa-tăng-dần; em-main VERIFY+APPEND] — GO-WITH-FIXES 4 SHOULD-FIX/0 BLOCKER (cả 4 = lỗi verify-lệnh/scope-rơi):** F1 count-quên-README · F2 so `_index` bằng Get-FileHash = SAI-LOẠI-HASH (body-sha ≠ whole-file, đo `181a6d19``f29247cf`) · F3 nén draft→spec RƠI item gated cả 2 lane · F4 future-claim S108. **Lesson:** lệnh verify trong spec = CODE chạy thử trước (2/4 sai thật) · bệnh encoding S125 ở CMDLET không ở shell (`Select-String -Path` đúng, `Get-Content` bệnh) · fold = disposition TỪNG DÒNG (S119). Full: `runs/2026-07-16-S127-adap-dot-16-07/sub-reviewer-3-verdict.md`.
- **S127 fable-real #1 gate đầu-vào adap 16-07 [Fable ~62K tok 0-garble; em-main VERIFY 3/3 + APPEND] — GO-ADAP, BÁC claim hub "bản 2 duy nhất":** rag.json:26 override ACTIVE ⇒ bn 5 việc THẬT + bản 3 ≥2 hằng-số sống-bằng-nhãn. **Lesson:** hedge broadcast phải test bằng MỞ config THẬT · "already-aligned" tinh-thần ≠ luật · SE GIỮ counter đúng (điều-kiện gỡ không áp: 3 tick/2 ngày). Full + AC 8/8: `runs/2026-07-16-S127-adap-dot-16-07/sub-reviewer-1-verdict.md`.
---
## 🔄 Curate trigger
- Hook-cap **>17.1KB** (24.4KB read-limit — đổi từ ~30KB cũ, S109) → archive recent → L2 `archive/<period>.md` (append additive) + `_INDEX.md` substring pointer. Stale >3mo → remove.
- **S128 curate (em-main, 2026-07-16, hook 20.3KB→16.8KB):** moved 3 verbatim (S124-L2 · S112 · S126) → archive/2026-07.md batch-marker + SEAL-VERIFY substring-containment 3/3 + md5(block)=e5218d2f45b6; merged 12 digest S93→S117 → 1 cụm (verbatim đã ở archive từ trước); vòng-2: gộp Area S89-trio + PE-series-×5 thành pointer-cụm (detail topic-file NGUYÊN trên đĩa) + nén S127/S128/S101 (full ở run-folder verdicts). Seal-verify tay = đúng nghi-thức đề-xuất owner-gated (iii) đang chờ codify.
- **S116 curate (self, 2026-07-13, hook 21.4KB→<17.1KB):** moved S115+S116 verbatim `archive/2026-07.md` (move-not-cut, batch-marker) + digest in L1; MERGED 12 June bullets (S65-S91) 1 consolidated digest line (detail `archive/2026-06.md`+`_INDEX`); trimmed 4 PE-per-hạng-mục + S89-trio + S111 Area-pointers (detail in topic files on disk).
- **S113 curate (self, 2026-07-12, hook 21.3KB→~16KB):** compressed 4 verbose S112 entries (2 close-review lines1, BE-close+FINAL1) + this curate-log in-place; NO file-move (lessons preserved inline). digest kept L1. **+review-lane addendum:** 4 verbatim ALSO moved `archive/2026-07.md` + 4 `_INDEX` pointer (move-not-cut) + trimmed 2 digest.
- **S109 curate:** moved 4 verbatim S100/S101 `archive/2026-07.md` +4 pointer.

View File

@ -52,3 +52,10 @@
- **S124 (2026-07-15) adap-wave-reply PLAN L3-lens — PASS_WITH_FIXES (0C/3M/2m):** disk `sub-reviewer-3.md`. 🎯 **do-token trap committed WHILE adopting do-token**: spec "STATUS=26075 tok (real-N)" — I re-Read FULL → truncation = **70892 tok** (tail-alone 33944 > 26075) ⇒ near-cap CHUNK mislabeled whole-file, 2.72× under, feeds owner re-tier. **Lesson: verify do-token claim = re-Read full + read truncation line yourself; token count tokenizer-invariant ⇒ 2×+ gap = mis-measure not env.** M2 meta-count "6 R1-R6"→5 (R5 highest-value dropped). M3 nấc "verified" on cadence NEVER-RAN (hub-expected = "đã đọc không đổi"). Positives held: authority-class owner-gated correct · harness_floor 55K self-audit honest · all-inherit 14/14. Anti-garble: full disk-write BEFORE return.
- **S125 (2026-07-16) do-token RELABEL correction (em-main on-behalf, B3 append):** negative-control 3-probe (`'a'×150K`→notice "150,006 tokens" ~1,0/char · `'x'×150K`→150,006 Y HỆT content-independent · mixed-ASCII 150K→143,251 ~0,955) ⇒ **notice-N = heuristic họ-đếm-ký-tự = CẬN-TRÊN bảo-toàn, KHÔNG phải real-token** (tokenizer thật nén chuỗi lặp ≪0,1/char). 70892 (dòng trên) đọc lại = cận-trên; dải thật STATUS [31K byte/4 — 70,9K notice]. **Lesson sửa-frame: "token count tokenizer-invariant" chỉ đúng cho so-sánh chunk-vs-full CÙNG heuristic; nhãn "real-N" tự nó = mislabel-as-real — phải negative-control (chuỗi lặp) mới phân biệt heuristic/tokenizer.** Nguồn: hub `phuong-phap-dem-token-tien-de-vong4` + adap-report cùng tên.
- **S125 (2026-07-16) fable-real adap-review — PASS-WITH-SELF-FIXES [engine:fable-real · vai compound anh gán reviewer+inv-cb · inline-lead]:** 2 near-miss TỰ BẮT trước khi ra ngoài: (1) **false-TAMPER → RCA verifier**: PS 5.1 `Get-Content -Raw` decode UTF-8-no-BOM bằng ANSI → mojibake → hash sai trên broadcast hub SẠCH; **sibling-test 2 CHIỀU** — sibling-MATCH⇒file-bệnh (tiền lệ S100) · sibling-CŨNG-FAIL⇒**verifier-bệnh** (S125); chốt bằng `stamp_verify.py` hub exit-0. (2) **suýt claim-sai nguồn outward**: draft adap-request viết "snippet hub dùng Get-Content -Raw" — mở hub `check-email.md:18` thì snippet **để HỞ decode** (`$txt` không định nghĩa) + hub ĐÃ CÓ s76 script-verify → sửa email+request TRƯỚC stamp cuối; email edit-sau-stamp → **RE-STAMP** `58f5afd8` + selftest exit-0 ×2. **Lesson: outward-claim về văn-bản bên kia = mở ĐÚNG file+dòng trước khi viết; email đã stamp mà cần sửa = sửa→re-stamp→re-selftest cùng lượt, đừng để stamp-then-edit sống.** Bẫy tooling: Edit-tool 3× fail chèn escape BOM (pipeline sinh-chữ render escape thành U+FEFF thật) → build-from-codepoint. Evidence: `runs/2026-07-16-S125-fable-real-adap-review/`.
## [S128 curate batch — moved verbatim from L1, 2026-07-16 em-main]
- **S124 L2 fidelity-to-source review, adap-wave plan — PWF (0 misread/1 MAJOR/3m):** 5/6 broadcast-reading traps read-faithful (NOT-adopt→method/spirit · h17 4-floors-KEEP · r6 abs-path). MAJOR = **push-guard "REFINEMENT ahead-of-broadcast" (spec:58) = OVERCLAIM**: SE trailing-K is LOOSER than broadcast ahead-range-all-count, keeps sandwiched wal:→leak; NO dimension strictly ahead. run.md:15 + mark cl.4 already carry honest "noise-accepted no-rewrite" ⇒ spec contradicts own run.md+mark. **Lesson: "ahead/refinement" = verify vs broadcast's ACTUAL requirement (looser≠ahead); spec+adap-report = shipped artifact → reconcile before hub-send.** Verified: adap-reports at `docs/governance/` not `.claude/` (path-trap false-empty). → `archive/2026-07.md`.
- **S112 fable-real-single close-reviews+FINAL — GO 0-must:** Import btn reuses sibling-menu guard but endpoint=Admin ⇒ derive guard from ENDPOINT authz; EDGE-5 gác FROM-state ở ĐỈNH method KHÔNG per-branch; self-flip token-test = internal NOT external-accept. → [topic](project_s112_supplier_import_review.md).
- **S126 (2026-07-16) A1-H23-probe + email-H23-gate [opus ×2, em-main VERIFY+APPEND] — gate FAIL bắt 3 lỗi thật trước stamp:** (1) 🎯 "Audit 2/2/0" NON-REPRODUCIBLE — audit COUNTS = **session-cumulative**, chính 2 lane review đẩy 2→4. **Lesson: số AGGREGATE cumulative KHÔNG vào outward artifact mời-reproduce — evidence bền = per-lane theo run-id.** (2) "Ba việc nêu ở thư" thực = **2 ASK** — MỞ thư đếm ask thật, đừng gộp courtesy-expectation. (3) "hub 17/17" = SE-self-obs R1-open → hedge+quy-thuộc. Lõi verified độc-lập: lead=Fable **116/116** records · A1 fable · A2 opus. Fixed → stamp `945cf3ad` selftest+stamp_verify+_index CÙNG lượt. Evidence: `runs/2026-07-16-S126-adap-spec-execute/`.

View File

@ -43,6 +43,8 @@ Em main spec will include:
Apply ALL categories below (Category 6 chỉ khi target gồm nội dung **hướng ra ngoài**: email / adap-report / broadcast / shared-doc):
- **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.
---
## Category 1 — Wire BE / feature claim verify

View File

@ -203,7 +203,7 @@ ngược lại → counter += 1 ; last_ticked_session = S<nn> ; last_ticked_head
**(e) BÁO:** in **1 dòng** `counter=<n> · light <a>/<light_every> · deep <b>/<deep_every> · OVERDUE: <none|light|deep>`. OVERDUE **INFORM anh** + đề-xuất spawn vai H24 tương-ứng. 🔴 **KHÔNG auto-run** anh consent mới chạy (giống sleep-check §2.1.2).
🔴 **Số nhịp = quyền anh.** Bước này **ĐỌC** `h24_cadence`, **KHÔNG** ghi. **CẤM hardcode nhịp ở đây** copy số vào doc dẫn-xuất chính drift single-source sinh ra để chặn (detector `governance-detectors.ps1` H24-2 **fail-loud** nếu key thiếu, **không** giả-định default).
> 🟡 **Honest-caveat mang theo khi báo hub:** hub nói rõ *"số của các em = config của các em; ĐỪNG chép 3 số này"*. SE chọn **cùng 6/15/3** là **điểm khởi-đầu anh CỐ Ý chọn**, KHÔNG phải chép vô-thức. **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ả"**.
> 🟡 **Honest-caveat mang theo khi báo hub:** hub nói rõ *"số của các em = config của các em; ĐỪNG chép 3 số này"*. SE chọn **cùng 6/15/3** là **điểm khởi-đầu anh CỐ Ý chọn**, KHÔNG phải chép vô-thức. **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ả"**.
### 2.2 Skill registry (6 skill)
- Liệt kê: `contract-workflow` · `form-engine` · `permission-matrix` · `dependency-audit-erp` · `ef-core-migration` · `iis-deploy-runbook`

View File

@ -10,9 +10,9 @@
"writer": "Lead is single-writer. Wired at /session-start (W3 owns the ritual; W2 owns this file + its shape)."
},
"_seed_honesty": "Seeded UNTICKED on purpose. counter=0 and last_ticked_* = null mean 'no tick has ever happened', which is the truth at S121 - the ritual that performs the tick lands in W3. Seeding a fake first tick here would make the very first cadence reading a lie, and H24 exists to catch exactly that kind of invented number.",
"counter": 5,
"last_ticked_session": "S126",
"last_ticked_head": "f9fa77d679be704db2448478390bffaaa9d721b8",
"counter": 6,
"last_ticked_session": "S127",
"last_ticked_head": "c1b9566d0811340784079dc5014c3f5cf9a03853",
"last_ticked_at": "2026-07-16",
"last_audit": {
"light_at_counter": 3,
@ -23,5 +23,11 @@
"_note": "Rolling tally per flag class from lead_self_audit.flag_classes (memory-budget.json). Key = class name, value = consecutive-audit repeat count. S124 first audit = SEED (fired-once), not repeats yet (per lead-view-auditor honest-note). jump_on_class_repeat=3.",
"counts": { "view-residual-asym": 1, "view-stale-count": 1, "gap-carry-dropped": 1, "gap-decision-sunk": 1 }
},
"history": []
"history": [
{
"at": "2026-07-16",
"session": "S127",
"event": "ancestor-check FAIL-LOUD (dung contract): last_ticked_head f9fa77d6 la dangling commit - object ton tai (cat-file -t = commit) nhung 0 nhanh chua no. Root-cause: closeout S126 SQUASH cac wal:-commit (session-end squash->count->push) nen head luc tick bi squash khoi lich su. KHONG phai tamper: counter khong lui, file khong sua tay. Xu ly: tick tiep 5->6 CO VET (entry nay) + bao anh trong turn S127. KE THIET KE ghi nhan: moi phien dau-sau-closeout-squash se fail ancestor-check gia; candidate fix = chap nhan dangling-object-exists lam bang-chung yeu khi counter khong lui (cho anh/hub quyet, chua doi contract)."
}
]
}

View File

@ -23,12 +23,12 @@
"auto_reindex_mode": "replace",
"chunk_size": 1500,
"chunk_overlap": 200,
"contextual_retrieval": true,
"contextual_retrieval": false,
"_decision_log": {
"auto_reindex_mode_rationale": "Layer C mandate per VIPIX commit c029ddb (gotcha #9 corpus drift fix forward). replace = full re-index each session, prevents append duplicate accumulation. DO NOT deviate.",
"share_to_global_rationale": "true — SOLUTION_ERP patterns proven cross-project applicable (gotcha catalog, CQRS pattern, multi-agent setup). NO PII/creds in corpus (docs + skills + agent-memory only).",
"chunk_size_rationale": "Legacy 1500/200 retained 2026-05-26. v1.3 §12.4 recommends 512/10-20%. Empirical retest required before flip — schedule trial week 3 (2026-06-16) evaluate.",
"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.",
"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-22 (git bf93abd; spec_chosen_date 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.",
"spec_a_vs_b_resolution_chosen": "Spec A — Strict. Rationale: SOLUTION_ERP chunks canonical + finite scope (51 gotchas, patterns, decisions) → strict retrieval test appropriate.",
"spec_chosen_date": "2026-05-26",
"anatomy_threshold_chosen": "6/6 STRICT per v1.3 §5.2 default (SE collection ~3080 chunks live 2026-05-29 — mature; the old '11,922' referred to a stale all-projects total, corrected S41)",

View File

@ -0,0 +1,29 @@
# execute-synthesis — Giai đoạn D adap đợt 16-07 (S128, 2026-07-16) — VERIFIED
> Lead tổng-hợp SAU verify độc-lập từng wave (em-main re-chạy acceptance, không tin return suông). Stage: HMW execute 3 wave (Harness-9 nửa-impl; review RIÊNG chạy sau file này).
## Kết quả 3 wave — 11/11 lane PASS, 0 error
| Wave | Run-id | Lane | Kết quả | Verify độc-lập em-main |
|---|---|---|---|---|
| 1 — 5 diff | `wf_a965db21-e87` | 5 tier:opus ~5ph | 5/5 PASS | rag.json→`False` · `calibrat` 0-hit + exit-0 range==baseline `[118424..157898]` · reviewer.md:46 gate 1-lần (verified-pending) · bookend:8 "5 sai/sai-một-nửa+2 đổi-cách-đọc" backtick `>=`×2 giữ · session-start:206 "chu-kỳ-2 CỦA SE" |
| 2 — 5 reports | `wf_869809a1-f99` | 5 tier:opus ~8.4ph | 5/5 PASS | 4 report NEW đủ đúng 5-heading LOCK + `G-011`≥1 · bookend +mục Re-verify + "chạy ở wave-3" (0 future-claim) + dòng-8 giữ · bản4 trích "chưa build" + 0 "SE sẽ áp" · bản5 re-bootstrap×3 + f5ce2778×2 |
| 3 — email+move+chốt | `wf_7436bb45-e20` | 1 tier:opus ~16ph | 3/3 PASS | **sha email lead RE-COMPUTE độc-lập = `3d157164a611` == declared** · root=1 README (F1) · 6 file = git pure-R rename 100% (byte-identical) + worker Get-FileHash trước==sau 6/6 (F2) · _index 0-pending + OUTBOUND+1 · bookend L40 done-evidence + "chạy ở wave-3" 0-hit |
## Diff tổng (chưa commit — chờ HMW-review)
- **Wave-1 (5 file M):** `.claude/rag.json` (:26 false + :31 rationale owner-final) · `scripts/crystallized-backfill.ps1` (:25/:117 heuristic, code :118-119 nguyên) · `.claude/agents/reviewer.md` (:46 Measured-label gate — verified-pending) · `docs/governance/adap-reports/2026-07-15-...bookend.md` (:8 đính-chính) · `.claude/commands/session-start.md` (:206 re-tune)
- **Wave-2 (4 NEW + 1 M):** 4 adap-report NEW (bản 2 sổ-cái executed · bản 3 nhãn-đo executed-một-phần · bản 4 session-logic agreed · bản 5 contextual executed) + bookend UPDATE mục Re-verify S127-S128
- **Wave-3:** email `broadcasts/outbox/ai_infra/2026-07-16-se-to-ai_infra-adap-dot-16-07-bao-nac.md` (6c-stamp PASS, `nac: sent`, CHƯA push) · 6 file inbox→`inbox/ai_infra/` (R) · `_index` 6 row processed + 1 OUTBOUND · bookend mục (4) done
## Deviation (1, minh-bạch — lead GIỮ)
Worker w3 sửa thêm 1 mệnh-đề L43 bookend (caveat cũ "STAGE-2 còn treo" mâu-thuẫn L40-done cùng section) — flagged judgment-call, revertible. Lead đánh-giá: ĐÚNG lớp F4 report-honesty (outward không được tự-mâu-thuẫn); caveat lõi "executed ≠ verified" + "citation (i) còn treo" GIỮ nguyên → không revert.
## Owner-gated còn treo (4 mục — `owner-gated-proposals-dot-16-07.md`, 1 câu trả lời gộp)
(i) `_owner_ratified` budget:123 wording (số 6/15/3 GIỮ; F10 re-sync :206 cùng lượt) · (ii) C2 budget:89 rename-vs-exemption · (iii) seal-verify sau move codify-vs-defer · (iv) budget:65 tail-note nguồn /3.0.
## Fixes C đã fold + hiệu-lực thực-chiến
F1 (README suýt bị move-wildcard) + F2 (sai-loại-hash → false-tamper) đều **chặn lỗi thật ở wave-3**; F4 giữ report khỏi future-claim ở wave-2 rồi được chốt đúng trình-tự ở wave-3; F5/F6/F7/F9 giữ worker khỏi 4 bẫy verify/encoding. Tổng chi-phí D: ~1.26M subagent-token / 11 lane / 3 run-id.

View File

@ -0,0 +1,31 @@
# OWNER-GATED PROPOSALS — adap đợt 16-07 (chờ anh, khuôn S126 b3-b4)
> 4 mục dưới đây KHÔNG chạy trong wave D (nguyên tắc: không đụng vùng owner-ratified khi anh vắng). Diff soạn sẵn — anh trả lời 1 lần là apply được ngay lượt sau. Nguồn chi-tiết: `sub-investigator-2-spec-draft.md` (V1 lead 5/5) + `sub-reviewer-3-verdict.md` (C: GO-WITH-FIXES).
## (i) `_owner_ratified` — memory-budget.json:123 — re-tune câu neo (SỐ 6/15/3 GIỮ NGUYÊN)
- **Vì sao:** câu hiện tại neo "Re-tune after cycle-2… n=1 at the hub is mocc-0" — hub ĐÃ GỠ counter (bookend 07-15, sha 85bf89ca) ⇒ run-2 CỦA HUB không bao giờ có; mốc so-sánh phải chuyển về cycle-2 CỦA SE. Đây là lời-chốt của anh nên wording đổi cần anh OK.
- **Diff đề-xuất (ASCII-safe giữ style file):** thay value :123 bằng:
`"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."`
- **F10 (C):** anh OK (i) ⇒ re-sync `session-start.md:206` CÙNG LƯỢT (2 chỗ kể cùng câu chuyện neo — :206 wave-D đã re-tune theo hướng này, chỉ cần soát khớp).
## (ii) C2 — memory-budget.json:89 `measured_token_estimate: 55000` — chọn 1 trong 2 lối-thoát (sàn-sự-thật 190c11ba)
- **Vì sao:** TÊN field nói "measured" nhưng value = honest MID-ESTIMATE (19K đo + ~36K ước) — nhãn sống bằng uy-tín. 0 consumer tự-động (đã verify).
- **Option-iii (rename, sạch nhất):** `measured_token_estimate``token_floor_estimate`. Tiên-quyết khi apply: grep toàn repo mọi ref update cùng commit.
- **Option-ii (exemption-note, í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) -- exemption per san-su-that 190c11ba; phep kiem lam no truot = re-run _s112_remeasure procedure"`.
- **Lead nghiêng option-iii** (tên đúng > chú-thích chữa tên), nhưng cả 2 hợp lệ — anh chọn.
## (iii) Seal-verify sau move (curate L1→L2) — codify hay defer?
- **Vì sao:** inventory 3-câu-hỏi (Việc 3) xác nhận GAP thật ở 2 vòng CÓ MOVE (archive-gate + curate): byte-preserve hiện là kỷ-luật TAY, chưa có niêm-phong máy sau move.
- **Đề-xuất codify (mức NGHI-THỨC/doc-checklist, KHÔNG viết tool — đúng mandate bản 2):** thêm bước vào nghi-thức curate: sau move, (a) md5 khối-dời trước/sau, (b) `Select-String -SimpleMatch` câu đầu + câu cuối khối-dời trong file archive (substring-containment).
- **Hoặc defer** — ghi backlog, làm khi curate lần tới chạm.
## (iv) budget:65 — tail-note nguồn hằng-số /3.0 (F3 — C bắt spec bản đầu làm rơi; gộp cùng (i) vì cùng file)
- **Vì sao:** `:65` "VN-diacritic hot-memory ~3.0-3.5 byte/tok" là NGUỒN của divisor /3.0 trong backfill (C1 wave-D đã hạ nhãn "calibrated"→"heuristic") — nguồn cũng cần khai không-provenance để class-fix TRỌN (bài S122: vá 1 lớp = vá đủ site cùng-lớp).
- **Diff đề-xuất:** thêm đuôi vào value :65: ` (convention -- chua do tokenizer that tai SE; dinh-chinh 58f5afd8)`.
---
**1 câu trả lời gộp đủ:** (i) OK/sửa? · (ii) iii hay ii? · (iii) codify hay defer? · (iv) OK? — em apply 1 lượt + re-sync F10.

View File

@ -0,0 +1,26 @@
# review-synthesis — D-review adap đợt 16-07 (S128, Harness-9 nửa-review) — VERIFIED
> HMW review RIÊNG `wf_44eeed6b-3b4`, 2 lane reviewer (worker-tier-pin opus+max), ~393K tok · ~15 phút. Độc-lập với execute (lane khác, adversarial). Trace: `sub-reviewer-0.md` (R1, tự ghi) + `sub-reviewer-1.md` (R2, em-main scribe từ journal — R2 return-only).
## VERDICT GỘP: GO-COMMIT 2/2 lane — 0 BLOCKER · 0 owner-gated violation · 2 minor ĐÃ FOLD + 1 observation + 1 tooling-note
| Lane | Verdict | Điểm chính |
|---|---|---|
| R1 diff-vs-spec | GO-COMMIT | 5/5 hunk wave-1 khớp spec, 0 out-of-spec; 5 acceptance re-run PASS (paste thật); 4 report đúng 5-heading LOCK; grep "verified" → 0 self-claim nấc; **owner-gated 0-diff PASS** (budget:65/:89/:123 còn nguyên text cũ); hash 7/7 recompute MATCH |
| R2 outward-integrity | GO-COMMIT | Email fact-check (a)-(g) 7/7 PASS — nấc 0-inflation, counter reproducible, sha recompute khớp; move 6× pure-R + README ở lại; L43 deviation GIỮ đủ caveat lõi; disposition 15-row toàn PASS |
## Fixes fold SAU review (lead, trước commit)
1. **M1 (R1):** report bản 5 :26 evidence-paste "tô-điểm" `contextual_retrieval = False` → literal `False` (lệnh chỉ in `False`). Đúng theme sàn-sự-thật 190c11ba.
2. **Lineage date (R2 optional — lead chọn LÀM):** "true từ 2026-05-26" → "true từ 2026-05-22 (git `bf93abd`; 05-26 = spec_chosen_date)" — sửa CÙNG-LỚP 3 chỗ (rag.json:31 · report bản5:22 · email:28, bài S122 grep-sibling) → **re-stamp email** `3d157164a611``c0ac7486447e` + `_index` row cùng lượt, 6c re-verify MATCH; rag.json parse lại `False` OK.
3. **M2 (observation, 0 hành-động):** acceptance-literal "'5 sai' 1-hit" nay 2-hit vì mục UPDATE quote lại dòng đã sửa — aging class S109/S121, edit đúng.
4. **Tooling-note (log):** recipe body-sha "strip-1-leading-\n" vs "strip-ALL" — 2 biến-thể sống chung theo phía phát-hành (SE-set khớp strip-1, hub-set khớp strip-ALL per R2 brute-force); thực-chứng nội-bộ nhất-quán; ứng-viên hỏi hub/adap-request lượt sau.
## Chuỗi guard 4 lớp đợt này đã bắt gì (đủ chứng vì-sao-nhiều-lớp)
- **C (reviewer #2 pre-execute):** F1 README-suýt-move · F2 sai-loại-hash · F3 item-gated-rơi · F4 future-claim — 2/4 là lỗi LỆNH-VERIFY chỉ lộ khi chạy thử.
- **Worker w3 (self):** bắt mâu-thuẫn nội-bộ L40/L43 tự-sinh khi update status.
- **D-review R1/R2 (post-execute):** M1 paste-fidelity + lineage-date-precision — lớp lỗi "giá-trị đúng nhưng bằng-chứng/chi-tiết lệch" mà execute-verify không soi.
- **Em-main (giữa mọi lớp):** verify độc-lập 2-nguồn mỗi wave; re-stamp sha sau fold.
## Trạng-thái chốt: sẵn-sàng COMMIT + PUSH. Owner-gated 4 mục (i-iv) + 3 quyết-định S126 cũ + ask do-token hub = carry sang lượt anh trả lời.

View File

@ -0,0 +1,27 @@
# RUN — S127 adap đợt broadcast 16-07 (2026-07-16)
**Đề bài anh (nguyên văn):** "/check-email AI_INFRA và /adap-apply. Cho /fable-real review qua. /fable-real invest spec-cách làm chi tiết-checklist. /fable-real review lại spec 1 lần nữa rồi. hwm cho Opus 4.8 MAX xử lý đi nhé"
**INVOCATION (H21):** anh gõ 3 lệnh engine-đắt trong đề bài — (1) `/fable-real reviewer <review đợt broadcast>` · (2) `/fable-real investigator-codebase <spec cách-làm chi-tiết + checklist>` · (3) `/fable-real reviewer <review lại spec>`. Vai "review"→reviewer, "invest"→investigator-codebase (tiền lệ S125 commit 010d12c). Execute = HMW workers Opus 4.8 MAX (worker-tier-pin S124).
## Đầu vào (đã verify hash 6/6 — whole-file + body-sha MATCH)
| # | File inbox | sha-prefix | Thư hub khuyến nghị |
|---|---|---|---|
| 0 | 2026-07-16-ai_infra-to-se-huong-dan-adap-4-ban-moi.md | 181a6d19 | thư điều phối — thứ tự riêng SE |
| 1 | 2026-07-15-Governance-h17-cadence-update-bookend.md | 85bf89ca | SE đang chờ (WAL); ĐÃ pre-agree S124 → re-verify CHỈ nhịp |
| 2 | 2026-07-16-Governance-tang-luu-tru-so-cai-va-bai-hoc-instrument-dong-cung.md | 291550ff | adopt THỰC CHẤT duy nhất — 3 câu hỏi vòng-lặp |
| 3 | 2026-07-16-Governance-vong-tu-bao-tri-thu-nam-san-su-that-nhan-da-do.md | 190c11ba | gần already-aligned — lấy luật + menu 3-lối-thoát |
| 4 | 2026-07-16-Governance-session-logic-tach-session-vat-ly-huong-van-hanh-moi.md | 9234a7aa | định hướng — CHƯA cần làm |
| 5 | 2026-07-16-Governance-owner-chot-contextual-retrieval-false-fleet-wide.md | f5ce2778 | ngoài đợt (5:37PM) — 1 việc: config RAG false |
## Giai đoạn
- [x] **A** — fable-real reviewer #1: **GO-ADAP** (verdict + AC 8/8 → `sub-reviewer-1-verdict.md`; V1 lead spot-check 3/3 khớp; harvest 1-entry reviewer MEMORY S127 [engine: fable-real-single · Fable-S127])
- [x] **B** — fable-real investigator-codebase (S128, spec `spec-invest-cach-lam-16-07-2026.md`): draft 6/6 việc HOÀN TẤT trên đĩa `sub-investigator-2-spec-draft.md` (~218K tok · 48 tool-use · ~16 phút). ⚠️ RETURN GARBLE #53 (dòng mô-tả-hành-động thay VERDICT-header) — ghi-đĩa-trong-lúc-làm CỨU TRỌN, 0 mất, không re-run. V1 lead 5/5 anchor PASS. **LỆCH-1:** config flip nằm TRONG repo SE (`.claude/rag.json:26` — projects.py walk-up + setdefault) ⇒ Việc 1 = in-repo edit, KHÔNG cross-repo. Lead chốt `spec-execute-dot-16-07.md` (3 wave + 3 owner-gated proposals). memoryDelta: lead ghi on-behalf sau verify-đĩa.
- [x] **C** — fable-real reviewer #2 (S128): **GO-WITH-FIXES** — 4 SHOULD-FIX (F1 README-count · F2 sai-loại-hash body-sha≠whole-file · F3 budget:65 rơi khỏi cả 2 lane · F4 STAGE-2 future-claim) + 7 NIT, 0 BLOCKER; 4 live-test + 11 spot-check độc-lập; return SẠCH 0-garble + verdict ghi-đĩa `sub-reviewer-3-verdict.md`. Lead fold F1-F11 vào spec-execute (7 edit) + ghi `owner-gated-proposals-dot-16-07.md` (4 mục i-iv). Harvest reviewer MEMORY S128 ✓.
- [x] **D-execute** (S128) — 3 wave HMW, 11/11 lane PASS 0-error (~1.26M tok): w1 5-diff `wf_a965db21-e87` · w2 5-reports `wf_869809a1-f99` · w3 email+move+chốt `wf_7436bb45-e20`. Em-main verify độc-lập từng wave (sha email re-compute khớp `3d157164a611`; 6 file move git pure-R; root=1 README). 1 deviation minh-bạch L43 GIỮ. Tổng-hợp: `execute-synthesis.md`. Sub-md: `sub-w{1,2,3}-task-*.md` ×11. Owner-gated 4 mục: `owner-gated-proposals-dot-16-07.md`.
- [x] **D-review** (wf_44eeed6b-3b4, 2 lane reviewer opus-max) — **GO-COMMIT 2/2** (0 BLOCKER · owner-gated 0-diff CONFIRMED · disposition R1 13-row + R2 15-row toàn PASS). Fold sau review: M1 paste-literal + lineage 05-22 cùng-lớp 3-chỗ + re-stamp email `c0ac7486447e` (6c MATCH). Tổng-hợp: `review-synthesis.md`; trace `sub-reviewer-0.md` (R1) + `sub-reviewer-1.md` (R2 — lead scribe, return-only)
- [x] **E** — GỘP VÀO D (adap-reports ×5 = w2 · _index STAGE-2 move + email hub = w3) · closeout còn lại: commit + push + báo anh
## Trace
- **A (2026-07-16 S127):** reviewer Fable single deep-pass ~62K tok · 20 tool-use · ~8 phút · dòng-1 `VERDICT:` đúng header 0-garble. GO-ADAP; BÁC "bản 2 duy nhất" (rag.json:26 true); thứ-tự-việc 6 bước cho spec B. V1: 3/3 spot-check khớp (rag.json:26/:31 + backfill:117-119). AC 8/8.
- **H24 tick S127:** counter 5→6 (head c1b9566) · light 3/6 · deep 3/15 · OVERDUE none. Fail-loud ancestor-check → root-cause dangling-by-squash S126 (ghi history .session-counter.json, không tamper).

View File

@ -0,0 +1,42 @@
# SPEC-EXECUTE — adap đợt 16-07 (Giai đoạn D input; C re-review file này + draft)
> Lead chốt từ `sub-investigator-2-spec-draft.md` (canonical detail — B1 trỏ, KHÔNG chép; mọi diff before→after + lệnh verify + acceptance per việc nằm ở đó, V1 lead 5/5 anchor PASS: rag.json:26/:31 · budget:123 · backfill:25/:117-119 · budget:89/:92 · bookend-report:8). Return sub garble #53 nhưng draft ghi-đĩa-trong-lúc-làm → 0 mất.
## ① Đề-bài D
Execute 6 việc adap đợt broadcast 16-07 theo draft, chia 3 wave + 1 nhóm owner-gated. Engine D: HMW workers Opus-MAX (worker-tier-pin S124, RUN-TRACE folder này) + HMW review RIÊNG sau execute (Harness-9 2-workflow).
## ② Thứ-tự wave + lane + gate (lead chốt)
**Wave-1 — diff nhỏ độc-lập (workers song-song được):**
1. Việc 1: flip `.claude/rag.json:26` true→false + rationale :31 (diff ở draft §VIỆC-1; LỆCH-1: file TRONG repo SE, KHÔNG đụng AI_INFRA). Verify: python parse in `False`.
2. 4a: hạ-nhãn C1 `scripts/crystallized-backfill.ps1:25,:117` calibrated→heuristic (comment-only, :118-119 code GIỮ; pure-ASCII #30 — ⚠️ F6: non-ASCII duy nhất trong after-text draft:134 là em-dash "—", thay bằng "--" khi apply; chữ đã ASCII-stripped sẵn). Verify: chạy script exit-0 + output giữ dòng `tok RANGE [low..high]` (baseline C đo: `[118424 .. 157898]`).
3. 4c: câu cửa-duyệt measured-label vào `.claude/agents/reviewer.md` sau §"Apply 5-category checklist" (nấc verified-pending — agent .md không hot-reload).
4. 2a: bookend adap-report dòng 8 "7 khoản cũ SAI"→"5 sai/sai-một-nửa + 2 chỉ đổi-cách-đọc" (+2 note ngoặc, giữ enumeration; F9: giữ backtick quanh `>=` ×2 như dòng gốc — exact-edit, không transcribe từ draft:64 vốn đánh rơi backtick).
5. 2b-file1: `session-start.md:206` re-tune neo cycle-2 CỦA SE (wording draft §2b; giữ vế đầu nguyên; C xác nhận before-text exact-match 1/1 + block :185-206 không mâu-thuẫn).
*F5 (mọi verify VN-pattern):* giữ NGUYÊN dạng `Select-String -Path` như draft — C đo thật PS 5.1 match đúng trên UTF-8-no-BOM. CẤM worker "cải tiến" sang `Get-Content | Select-String` (bệnh ANSI-decode S125 nằm ở Get-Content). VN-pattern KHÔNG nhét vào file .ps1 (#30).
**Wave-2 — 5 adap-reports (REPORT-FORMAT LOCK 5 trường, khuôn `adap-report.md:13-19`):**
6. Bản 2 NEW: transcribe bảng 7×3 + kết-luận q1/q2/q3 từ draft §VIỆC-3 (KHÔNG tự điều-tra lại) + đề-xuất seal-verify = CHỜ-ANH. F7: verify 5-trường dùng pattern `"G-011"` (KHÔNG dùng alternative "nac G-011" — report thật viết "nấc (G-011)" có dấu+ngoặc, 0-hit vĩnh viễn).
7. Bản 3 NEW (4d): kiểm-kê + C1 executed + C2 chờ-anh + positive-exemplars. F11: honest-caveat thêm ½ dòng "câu cửa-duyệt 4c CHỨA chính các nhãn nó săn = mention-not-use; cần exemption nếu mai sau port máy-quét tự-động (gen-2 citation-trap S123)".
8. Bản 4 NEW: nấc `agreed` nắm-hướng, trích hub §7 "chưa build, chưa dùng thử", 0 câu "SE sẽ áp mục 2".
9. Bản 5 NEW: nấc `executed`, evidence diff Việc-1 + verify-output; caveat re-bootstrap = AI_INFRA-op.
10. Bản 1 UPDATE: mục "Re-verify nhịp S127-S128" (4 sàn nguyên · counter GIỮ 3→6/2-ngày · 2 citation: 1 re-tuned + 1 owner-gated · F4: viết "STAGE-2: chạy ở wave-3" — CẤM viết "done" trước khi 2d chạy [future-claim lớp S108]; worker wave-3 SAU KHI move xong quay lại update dòng này thành done + evidence [adap-report.md:33 idempotent]).
**Wave-3 — chốt tuần-tự (1 worker, thứ-tự CỨNG):**
11. Email hub GỘP 1 thư (khuôn draft §VIỆC-6; full-grammar VN outward; selftest-stamp 6c NGAY sau Write + `_index` bước 7 CÙNG LƯỢT; ask do-token GIỮ pending).
12. 2d STAGE-2: move 6 file inbox→`inbox/ai_infra/` + flip 6 row `_index` (sha cột GIỮ). Chạy CUỐI vì reports đọc file gốc. **F1:** `README.md` Ở LẠI root — expected sau move: `(Get-ChildItem broadcasts\inbox\*.md -File).Count` = **1** (chỉ README), KHÔNG phải 0; move đúng 6 file đích-danh, CẤM wildcard-move. **F2:** byte-preserve = `Get-FileHash` từng file TRƯỚC move == SAU move (cùng loại hash); CẤM so Get-FileHash với sha `_index` (cột đó là body-sha canonical check-email.md:17b — whole-file hash LUÔN lệch → false-tamper). Sau move: quay lại update dòng STAGE-2 report bản-1 (F4).
**Owner-gated — KHÔNG chạy wave này, ghi `owner-gated-proposals-dot-16-07.md` (khuôn S126 b3-b4) chờ anh:**
- (i) 2b-file2 `_owner_ratified` budget:123 wording mới (số 6/15/3 GIỮ). F10: anh đổi wording (i) ⇒ re-sync `session-start.md:206` cùng lượt (2 chỗ kể cùng câu chuyện neo).
- (ii) 4b C2: option-iii rename `measured_token_estimate``token_floor_estimate` vs option-ii exemption-note sibling.
- (iii) Việc-3 seal-verify sau move: codify doc-checklist vào nghi-thức curate hay defer.
- (iv) **F3 (C bắt rơi):** `memory-budget.json:65` thêm đuôi nguồn hằng-số `(convention -- chua do tokenizer that tai SE; dinh-chinh 58f5afd8)` — draft:135 định "gộp gate với 2b", spec bản đầu làm RƠI ở cả 2 lane. Gộp cùng câu hỏi (i) — cùng file, 1 lần anh trả lời.
- *Điều-chỉnh lead vs draft:* draft cho "anh OK rồi worker apply trong D" — em chốt AN-TOÀN hơn: proposals-file only, apply lượt sau khi anh trả lời (mạch D không block, không đụng vùng owner-ratified khi anh vắng).
## ③ Acceptance D (tổng)
- Per việc: chạy đúng lệnh verify trong draft (expected output ghi sẵn) — worker PASTE output thật vào sub-file mình.
- Tổng: `git status` sạch ngoài diff dự-kiến · F8: JSON parse OK — `.claude/rag.json` (đã sửa) + `memory-budget.json` (xác-nhận KHÔNG đụng trong D) · backfill.ps1 chạy exit-0 · 5 reports đủ 5-trường (grep `"G-011"` — F7) · email stamp PASS + `_index` OUTBOUND +1 · 6 file moved Get-FileHash trước==sau (F2) + root còn đúng README.md (F1) · commit scope `[CLAUDE] Docs/Governance/Scripts` theo convention.
- Post-D: HMW-review riêng (Harness-9) trước commit-push; commit đụng `scripts/*.ps1` + `rag.json` → KHÔNG phải docs-only → CI chạy → cicd-monitor verify sau push.

View File

@ -0,0 +1,31 @@
# SPEC — fable-real investigator-codebase: spec-cách-làm chi-tiết + checklist đợt 16-07 (Giai đoạn B)
> Spec-file 3-mục H21 (lead ghi TRƯỚC spawn). Engine: real-single (lệnh anh S127: "/fable-real invest spec-cách làm chi tiết-checklist" — consent per-invocation còn hiệu lực, ghi ở run.md Giai đoạn B). Vai: investigator-codebase. Model: fable (spawn-param thắng pin — đo S126). Lượt này SOẠN (propose), KHÔNG phán (đó là reviewer #2 lượt C).
## ① Tính-năng / đề-bài
Ground-truth repo SE từng anchor + PROPOSE **spec-cách-làm chi-tiết + checklist execute** cho 6 việc theo THỨ-TỰ-VIỆC verdict A (`sub-reviewer-1-verdict.md` cùng folder). Output đủ chi-tiết để HMW workers Opus-MAX (Giai đoạn D) execute KHÔNG cần đoán: per việc = file đích tuyệt-đối · thay-đổi diff-level · lệnh verify chạy được · gate nào cần anh. Reviewer #2 (C) sẽ re-review spec này — soạn cho người-phán đọc được.
## ② Cách implement (cho investigator)
1. Đọc `sub-reviewer-1-verdict.md` (cùng folder) — bảng per-bản + caveat + thứ-tự 6 việc. Đọc 6 broadcast gốc `broadcasts/inbox/2026-07-1[56]-*.md` (bảng sha ở `run.md`).
2. **Ground-truth TỪNG việc — mở file đích, xác nhận trạng-thái/line THẬT trên đĩa** (đừng chép verdict A mù — line có thể xê dịch):
- **Việc 1 (bản 5, nhỏ nhất):** tìm config RAG per-project SE trong khung AI_INFRA (`D:\Dropbox\CONG_VIEC\AI_INFRA\**` — verdict A neo rag.json:26 `contextual_retrieval: true` + :31 rationale trial-week-3 treo). Xác nhận đường-dẫn TUYỆT-ĐỐI + giá trị hiện tại + mirror `projects.py:39`. Spec: flip `true``false` + rationale mới (revisit đóng bởi owner-final f5ce2778) + báo hub 1 dòng. Ghi rõ: quyền SE sửa = tiền lệ S41 (exclude_paths); hiệu-lực chờ re-bootstrap = AI_INFRA-op.
- **Việc 2 (bản 1, re-verify nhịp):** (a) `docs/governance/adap-reports/2026-07-15-Governance-h17-cadence-update-bookend.md` dòng 8 "7 khoản SAI" → sửa thành "5-sai + 2-đổi-cách-đọc"; (b) 2 citation stale: `.claude/commands/session-start.md:206` + `memory-budget.json` `_owner_ratified` — đọc ngữ-cảnh thật, đề-xuất wording re-tune neo cycle-2 CỦA SE; (c) counter GIỮ NGUYÊN (điều kiện gỡ hub KHÔNG áp — SE phiên ngắn-nhiều); (d) STAGE-2: `broadcasts/_index.md` 6 row INBOUND pending→ai_infra — xác nhận khuôn move hiện tại.
- **Việc 3 (bản 2, lớn nhất):** inventory **3-câu-hỏi × 7 vòng lặp** SE (wal-flush Stop-hook · memory-archive-gate.ps1 · crystallized-backfill.ps1 · governance-detectors.ps1 · measure-agent-memory.ps1 · sleep-recovery L2 gist · curate L1→L2). Per vòng trả lời: (q1) trigger có đọc instrument đông-cứng? (q2) có niêm-phong sau move hay chỉ bảo-toàn-byte? (q3) ĐO/LÀM tách tầng + phanh chưa? Seed từ verdict A: niêm-phong = GAP thật (`memory-archive-gate.ps1` DRY-planner không verify seal sau move; moved-not-cut S102 = kỷ-luật TAY); frozen-instrument: `budget.measured` STALE nhưng consumer ignore+re-measure (`memory-selfimprove-audit.ps1:18,110`). CHỈ port 3 CÂU HỎI — CẤM chép ngưỡng hub.
- **Việc 4 (bản 3):** kiểm-kê nhãn đã-đo — 2 ứng viên verdict A: `scripts/crystallized-backfill.ps1:117-119` "calibrated" /4.0 /3.0 (không assert/phản-chứng) + `memory-budget.json:89` `measured_token_estimate=55000` (metadata giàu ≠ phản-chứng). Per con chọn 1/3 lối-thoát (đo-lại-được | hạ-nhãn | thêm-phản-chứng) + soạn **câu cửa-duyệt** vào checklist reviewer. Grep thêm nhãn measured/empirical/calibrated/đã-đo trong `scripts/*.ps1` + `.claude/workflows/hmw.js` + `memory-budget.json` — có ứng viên thứ 3 sót không?
- **Việc 5 (bản 4):** n-a — spec chỉ 1 mục: adap-report nắm-hướng (không code). CẤM copy mục 2 (hub tự khai chưa build).
- **Việc 6 (thư 0):** adap-reports ×5 theo REPORT-FORMAT LOCK (khuôn `/adap-report`, xem file mẫu trong `docs/governance/adap-reports/`) + email hub GỘP 1 thư (khuôn `/send-email` outbox `broadcasts/outbox/ai_infra/`). Ask do-token GIỮ pending (đừng đóng sớm — errata batch hub đang soạn).
3. **PROPOSE spec-execute per việc:** `{file-đích tuyệt-đối · diff đề-xuất (before→after) · lệnh verify chạy được · owner-gate?}` + phân-lane D: việc nào HMW worker mechanical được, việc nào lead-solo (cross-repo AI_INFRA = việc 1), việc nào chờ anh.
4. **GHI-ĐĨA-TRONG-LÚC-LÀM (chống #53, bài S123):** ghi draft TĂNG-DẦN vào `sub-investigator-2-spec-draft.md` (CHỈ file này — B4/B6). KHÔNG sửa bất-kỳ file nào khác (kể cả file đích — lượt này PROPOSE-only). KHÔNG tự ghi MEMORY (memoryDelta RETURN — lead VERIFY→APPEND).
5. **Adversarial với verdict A:** ground-truth lệch verdict A (line xê-dịch / giá-trị đã đổi / anchor không tồn tại) → ghi mục LỆCH riêng, spec theo ĐĨA không theo verdict.
## ③ Checklist + deliverable + acceptance (đo được)
- [ ] Draft trên đĩa `sub-investigator-2-spec-draft.md`: đủ 6 việc × 4-trường {file:line verify-từ-đĩa · diff · lệnh-verify · gate} + phân-lane D
- [ ] ≥5 evidence `file:line` TỰ MỞ từ đĩa (không chép verdict A)
- [ ] ≥1 mục KHỚP/LỆCH explicit vs verdict A (adversarial check — "khớp hết" phải kèm cách đã thử phá)
- [ ] Checklist execute đo-được cho D: per việc ≥1 acceptance chạy được (lệnh + expected output)
- [ ] RETURN dòng-1 = `VERDICT: SPEC-READY|SPEC-BLOCKED — <1 dòng>` + pointer draft + mục LỆCH (nếu có); RETURN ≤400 words (draft nằm trên đĩa)
- [ ] memoryDelta 4-field {task, verdict, learned, surprise}
- Acceptance lead-verify: spot-check ≥3 anchor draft vs đĩa · draft đủ 6 việc · lệch-vs-verdict-A có xử-lý · rồi lead ghi spec-execute cho C

View File

@ -0,0 +1,30 @@
# SPEC — fable-real reviewer #1: review đợt broadcast 16-07 (S127, 2026-07-16)
> Spec-file 3-mục H21 (lead ghi TRƯỚC spawn — run chấm/verify cũng sinh spec, §2.1-bis ghi-chú d). Engine: real-single (lệnh anh: "Cho /fable-real review qua."). Vai: reviewer. Model: fable (spawn-param thắng pin — đo S126).
## ① Tính-năng / đề-bài
Review ADVERSARIAL đợt broadcast AI_INFRA 16-07 (5 bản + 1 thư điều phối, đã verify hash 6/6) ĐỐI CHIẾU trạng-thái THẬT repo SOLUTION_ERP → trả lời: **SE cần làm GÌ, bản nào fit/không-fit, thư hub có điểm nào SAI về SE, rủi-ro nào khi áp**. Đây là lượt PHÁN (gate đầu-vào adap) — KHÔNG phải soạn spec (đó là lượt sau của investigator).
## ② Cách implement (cho reviewer)
1. Đọc 6 file `broadcasts/inbox/2026-07-1[56]-*.md` (đường dẫn ở run.md cùng folder).
2. Đối chiếu ground-truth SE — TỐI THIỂU các mặt:
- Bản 1 (h17-bookend): `docs/governance/adap-reports/2026-07-15-Governance-h17-cadence-update-bookend.md` (pre-agree S124) — bản published có gì MỚI/LỆCH vs điều SE đã hiểu? SE mô tả OVERDUE/counter ở `.claude/commands/session-start.md` §2.1.8 + `.claude/agent-memory/memory-budget.json:h24_cadence` + `.claude/governance/.session-counter.json` — có mô tả nào thành "lớp bảo-vệ runtime không tồn tại" (caveat a)? Mục §5 API-key: SE có mục nào treo "chờ khóa"?
- Bản 2 (3 câu hỏi vòng-lặp): kiểm-kê VÒNG LẶP TỰ-ĐỘNG THẬT của SE (wal-flush Stop-hook · memory-archive-gate.ps1 · crystallized-backfill.ps1 · governance-detectors.ps1 · measure-agent-memory.ps1 · sleep-recovery L2 gist · curate L1→L2) — vòng nào có trigger đọc instrument ĐÔNG-CỨNG? vòng nào thiếu niêm-phong (chỉ có bảo-toàn-byte)? vòng nào ĐO/LÀM chưa tách tầng/thiếu phanh?
- Bản 3 (nhãn đã-đo): grep hằng-số mang nhãn đo-lường (measured/empirical/calibrated/đã-đo/đo-thật) trong `scripts/*.ps1` + `.claude/workflows/hmw.js` + `memory-budget.json` — con nào có phản-chứng chạy được, con nào sống bằng uy-tín nhãn?
- Bản 4 (session-logic): chỉ cần verdict fit + note SE đã có H22 WAL (/pause /tiep) làm tiền-đề — có gì SE nên chuẩn-bị theo §6?
- Bản 5 (contextual_retrieval): tìm config RAG per-project của SE (khung AI_INFRA — thử `D:\Dropbox\CONG_VIEC\AI_INFRA\**/*solution*` config/yaml/json, hoặc `.mcp.json` SE) — giá trị hiện tại của cờ? SE có quyền sửa hay AI_INFRA-op (charter v2)?
3. Thế ADVERSARIAL: giả-định thư hub có điểm không-fit SE — tìm ≥1 refutation-attempt thật (vd: thư nói "bạn không nợ gì cũ" — đúng không? thư xếp bản 2 "adopt thực chất duy nhất" — có đúng SE chỉ cần làm bản 2?).
4. KHÔNG sửa file nào (read-only). KHÔNG tự ghi MEMORY (RETURN-only, GAP-3).
## ③ Checklist + deliverable + acceptance (đo được)
- [ ] RETURN dòng-1 = `VERDICT: <GO-ADAP|GO-PARTIAL|NO-GO> — <1 dòng>` (anti-#53)
- [ ] Bảng per-bản (6 dòng): fit {FIT|n-a|already-aligned} · việc-cần-làm cụ thể · rủi-ro/caveat
- [ ] ≥3 evidence `file:line` từ repo SE (không phải từ broadcast) chứng minh trạng-thái SE
- [ ] ≥1 refutation-attempt ghi rõ (điểm thư hub/broadcast SAI hoặc không-fit SE — hoặc "resisted scrutiny" kèm cách đã thử phá)
- [ ] Đề xuất THỨ TỰ việc cho spec execute (input cho investigator lượt sau)
- [ ] memoryDelta 4-field {task, verdict, learned, surprise}
- [ ] Findings ≤ 700 words (chống truncation #53)
- Acceptance lead-verify: AC-1..AC-8 runbook §5.4; lead spot-check ≥1 claim file:line trước khi dùng

View File

@ -0,0 +1,236 @@
# 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
- [x] Việc 1 (bản 5) — rag.json — GT XONG (LỆCH-1 vị-trí: file trong repo SE)
- [x] Việc 2 (bản 1) — re-verify nhịp 4 mục — GT XONG (a/b/c/d đều verified đĩa)
- [x] 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)
- [x] 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)
- [x] Việc 5 (bản 4) — n-a nắm-hướng — GT XONG (hub tự khai §6/§7)
- [x] 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):**
```powershell
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/<from>/)" |
## 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: `pending`→`processed`, `(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_estimate` → `token_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.md` — **UPDATE** (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-nac` → `broadcasts/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
- [x] 6 việc × 4-trường {file-đích · diff before→after · lệnh verify · gate} + phân-lane D
- [x] ≥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)
- [x] ≥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)
- [x] Per việc ≥1 acceptance chạy được cho D
- [x] 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 | mfe-eval:166-167 cùng divisor NHƯNG không nhãn calibrated (RANGE honest :180) → chỉ C1 cần hạ-nhãn; nguồn hằng-số = budget:65 (bổ sung ngoài verdict A) |
| "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) |

View File

@ -0,0 +1,95 @@
# sub-reviewer-0 — HMW-review RIÊNG (Harness-9) Giai đoạn D adap đợt 16-07 — HOÀN TẤT
- **engine:** reviewer adversarial · 2026-07-16 · run S127-adap-dot-16-07 · ghi TĂNG-DẦN (chống #53)
- **đối tượng:** working-tree CHƯA commit (wave-1 diff 5 file + wave-2 4 report + bookend UPDATE + wave-3 email + STAGE-2 move) vs `spec-execute-dot-16-07.md` + `sub-investigator-2-spec-draft.md` (canonical) + C verdict `sub-reviewer-3`.
- **phương pháp:** 5 acceptance chạy THẬT (paste output) + owner-gated 0-diff check + 6/6 hash recompute + stamp-integrity + soi nấc-honesty per bản + đối chiếu từng hunk vs spec.
## VERDICT: **GO-COMMIT** — 0 BLOCKER · 0 owner-gated violation · 1 minor (M1) khuyến-fix optional · 1 observation (M2)
Toàn bộ diff map đúng spec (wave-1/2/3), owner-gated 4 mục 0-diff THẬT, email honesty S126-lens sạch, hash 6/6 recompute MATCH, stamp outbox valid. Chỉ 1 nit minor (bản 5 "PASTE thật" hơi tô-điểm) — không chặn commit.
---
## 1. Acceptance wave-1 (5 lệnh — PASTE output thật)
| # | Lệnh | Expected | Actual | Verdict |
|---|---|---|---|---|
| A1 | `python -c "...print(c['contextual_retrieval'])"` rag.json | `False` | `False` | ✅ PASS |
| A2 | `Select-String calibrat` backfill.ps1 | 0 | 0 (ripgrep + PS 5.1 đều 0) | ✅ PASS |
| A3 | `Select-String TRƯỢT` reviewer.md | ≥1 | 1 (`:46`) | ✅ PASS |
| A4a | `Select-String "5 sai"` bookend | 1 | **2** (`:8` edit + `:25` self-quote UPDATE) | ⚠️ xem M2 |
| A4b | `Select-String "7 khoản cũ SAI"` bookend | 0 | 0 | ✅ PASS |
| A5 | `Select-String "n=1 ở hub"` session-start.md | 0 | 0 | ✅ PASS |
| +F8 | `json.load(memory-budget.json)` | OK | OK | ✅ PASS |
| +4a | `backfill.ps1` run | exit 0 + RANGE | exit 0 · `tok RANGE [low..high] : [118424 .. 157898]` == baseline C | ✅ PASS |
**A4 note (M2 — KHÔNG defect):** "5 sai" = 2-hit vì section UPDATE wave-2 (`:25`) TRÍCH LẠI dòng 8 nguyên văn (`đặc-biệt dòng 8 ... "5 sai/sai-một-nửa + 2 chỉ đổi-cách-đọc"`). Edit gốc dòng 8 ĐÚNG; literal acceptance "1-hit" của draft:65 viết cho 2a wave-1 CÔ-LẬP, lão-hoá sau khi wave-2 thêm quote. Đây là acceptance-literal-aging (bài S109/S121), KHÔNG phải lỗi.
## 2. OWNER-GATED 0-DIFF (quan trọng nhất) — ✅ PASS, 0 BLOCKER
- `git diff .claude/agent-memory/memory-budget.json` = **RỖNG**; `git status --porcelain` = **nothing**.
- 3 site chờ-anh còn nguyên text CŨ trên đĩa: `:65` chưa có đuôi `(convention...)` · `:89` vẫn `"measured_token_estimate": 55000` · `:123` `_owner_ratified` vẫn `'tuong tu Hub'` + `mocc-0`.
- `owner-gated-proposals-dot-16-07.md` có ĐỦ 4 mục (i)-(iv), **F3 fold OK** (mục iv budget:65 hiện diện). Không mục nào bị làm lén.
## 3. Wave-1 diff vs spec — từng hunk, 0 out-of-spec
| File | Hunk | vs spec | Verdict |
|---|---|---|---|
| `.claude/rag.json` | `:26` true→false + `:31` rationale owner-final | item 1 (LỆCH-1 in-repo SE, 0 đụng AI_INFRA) | ✅ khớp draft:34-36 |
| `scripts/crystallized-backfill.ps1` | `:25`+`:117` comment calibrated→heuristic; **code `:118-119` `/4.0`·`/3.0` GIỮ NGUYÊN byte** | item 2 (4a) | ✅ #30 pure-ASCII (scan CLEAN, em-dash→`--` F6) |
| `.claude/agents/reviewer.md` | `:46` measured-label gate (sau §Apply 5-cat) | item 3 (4c, verified-pending) | ✅ |
| `.claude/commands/session-start.md` | `:206` neo cycle-2 CỦA SE, giữ vế đầu | item 5 (2b-file1) | ✅ |
| `docs/.../bookend.md` | `:8` dòng 8 + section Re-verify | item 4 (2a) + wave-2 bản-1 | ✅ backtick `>=`×2 GIỮ (F9) |
**Extra changes (KHÔNG scope-drift):** `broadcasts/_index.md` (6 row pending→processed + OUTBOUND +1) + 6 `git mv` inbox→inbox/ai_infra/ = STAGE-2 (2d) trong spec wave-3. 4 report + email = wave-2/3. **0 đụng canonical docs / agent-memory / MEMORY.md.**
## 4. Hash verification (6/6 inbound + outbox stamp) — recompute body-sha canonical (stamp_verify formula)
| File | _index/frontmatter | recompute | Verdict |
|---|---|---|---|
| coordinator huong-dan-adap | 181a6d195468 | 181a6d195468 | ✅ |
| bookend (inbound) | 85bf89ca7d3e | 85bf89ca7d3e | ✅ |
| tang-luu-tru (inbound) | 291550ffa295 | 291550ffa295 | ✅ |
| vong-tu-bao-tri (inbound) | 190c11ba2bc0 | 190c11ba2bc0 | ✅ |
| session-logic (inbound) | 9234a7aa1009 | 9234a7aa1009 | ✅ |
| owner-chot (inbound) | f5ce27780af8 | f5ce27780af8 | ✅ |
| **outbox email (stamp 6c)** | 3d157164a611 | **3d157164a611** | ✅ STAMP VALID |
→ Email claim "verify hash đối-chứng 6/6 PASS" = **TRUE + reproducible** (per-artifact, KHÔNG phải aggregate cumulative kiểu S126). Moved files vẫn hash đúng _index ⇒ **byte-preserve F2 confirmed**.
## 5. Email honesty (S126 lens) — outbox `...adap-dot-16-07-bao-nac`
- **"(0) ba khoản hub tự nhận nợ"** = KHỚP CHÍNH XÁC coordinator letter §"Ba khoản hub GHI NỢ" (decode-fallback · owner-sign 07-14 content-sig · precedence-test recording). KHÔNG phải bẫy S126 "3 việc = 2 ask" — đây là 3 nợ hub tự-khai, SE acknowledge-only đúng.
- **bookend sha resolution** ("85bf89ca khớp bản SE nhận") = accurate (coordinator §1 + recompute).
- **Nấc per bản** (1 exec · 2 exec · 3 exec-một-phần · 4 agreed · 5 exec) = khớp reports.
- **do-token GIỮ pending** ✓ (khớp WAL:12). **No future-claim** (không claim commit/push/move done tại thời điểm ghi; move THẬT đã xong). **No self-verified** ✓. Full-grammar VN outward ✓.
## 6. Nấc-honesty per artifact (G-011) — 0 self-"verified"
| Bản | Nấc | 5-heading LOCK | Kiểm honesty | Verdict |
|---|---|---|---|---|
| 2 tang-luu-tru | executed | ✅ 1-5 | inventory 7×3 = hành-động THẬT; seal-verify tách OWNER-GATED (iii); sha "điền sau commit" no-khống | ✅ |
| 3 vong-tu-bao-tri | executed (một phần) | ✅ 1-5 | C2(ii)+budget:65(iv) ghi RÕ owner-gated §2; 4c verified-pending; **F11 citation-trap caveat §5(c) có** | ✅ |
| 4 session-logic | agreed | ✅ 1-5 | "SE sẽ áp mục 2" = **0-hit**; "chưa build, chưa dùng thử" = 1-hit; CAM-KẾT chống overclaim | ✅ |
| 5 owner-chot | executed | ✅ 1-5 | E1 khớp diff thật; git-history 282cbd0 S41 accurate; commit "pending wave-3" no future-claim | ✅ (M1 nit) |
| bookend UPDATE | executed | (append idempotent) | owner-gated (i) ghi rõ; STAGE-2(4) KHÔNG future-claim (move đã xong); honest-caveat no-verified | ✅ |
Mọi hit "verified" = negation / verb / verified-pending / verified-runtime(H22 factual) — **0 tự-phong nấc verified**.
## 7. C-fixes (F1-F11) fold-verify
F1 README-count=1 (inbox root chỉ README, 0 broadcast — verified on-disk) · F2 byte-preserve Get-FileHash trước==sau, CẤM so _index body-sha (bookend report ghi đúng) · F3 budget:65 → owner-gated (iv) present · F4 STAGE-2 "đã thực-thi wave-3" retroactive-update sau move (không future-claim) · F6 em-dash→`--` (ASCII scan CLEAN) · F9 backtick `>=`×2 giữ · F10 re-sync note trong proposals(i) · F11 caveat bản3. **Tất cả folded.**
## 8. MINOR (khuyến-fix, KHÔNG block)
- **M1 (minor, thematically ironic):** bản 5 §3 khối `verify-output (PASTE thật)` in `contextual_retrieval = False` NHƯNG lệnh hiển thị `print(c['contextual_retrieval'])` chỉ in `False` (không có prefix "contextual_retrieval = "). Paste bị tô-điểm nhẹ trong trường evidence — nhãn "PASTE thật" hơi lệch. Giá-trị `False` đúng + tao verify độc-lập. Đề-nghị: sửa paste thành literal `False` HOẶC đổi nhãn khối thành "kết-quả (diễn-giải)". Ironic vì đợt này chính là "sàn-sự-thật cho nhãn đã-đo".
- **M2 (observation, KHÔNG defect):** acceptance "5 sai 1-hit" nay 2-hit do UPDATE section quote dòng 8 — literal aging, edit đúng.
## Category results
| Cat | Status | Note |
|---|---|---|
| 1 Wire/claim | ✅ PASS | mọi "executed/verify PASS" có diff/output thật; 6/6 hash + stamp recompute MATCH |
| 2 Schema/integrity | N-A | 0 mig / 0 prod-code / 0 schema |
| 3 Security | N-A | governance docs + config flag; 0 authz surface |
| 4 Code quality | ✅ PASS | backfill exit-0 baseline giữ; #30 ASCII CLEAN; code :118-119 byte-preserve; 0 scope-drift |
| 5 Test coverage | N-A | doc/config đợt adap (Phase-9 UAT exception) |
| 6 Writing (outward) | ✅ PASS | 4 report + email full-grammar VN; 5-heading LOCK; M1 nit nhỏ |

View File

@ -0,0 +1,30 @@
# sub-reviewer-1 — fable-real #1 verdict (Giai đoạn A) — em-main lưu trace (GAP-3: lane RETURN-only, lead ghi)
- **engine:** fable-real-single · Fable-S127 · 2026-07-16 · ~62K tok · 20 tool-use · ~8 phút · return dòng-1 `VERDICT:` đúng header, 0 garble
- **spec:** `spec-review-dot-16-07-16-07-2026.md` (cùng folder)
- **V1 lead spot-check (3/3 khớp):** rag.json:26 `contextual_retrieval: true` ✓ · rag.json:31 rationale trial-week-3 treo ✓ · crystallized-backfill.ps1:117-119 "calibrated RANGE" /4.0 /3.0 không phản-chứng ✓ (+ adap-report bookend dòng 8 "7 khoản SAI" lệch published "5-sai+2-đổi-cách-đọc" ✓ từ context lead)
## VERDICT: GO-ADAP — 6/6 file hợp lệ; thứ tự thư hub đúng phần lớn NHƯNG "bản 2 duy nhất có việc thật" BỊ BÁC (bản 5 việc config THẬT rag.json:26 `true` + bản 3 ≥2 hằng-số cần phản-chứng + bản 1 có 3 việc bookkeeping)
### Bảng per-bản
| # | Fit | Việc cụ thể cho SE | Rủi-ro/caveat |
|---|---|---|---|
| 0 thư (181a6d19) | FIT | WAL: ask #2 (bookend NO-DECLARED-SHA) ĐÃ resolve (sha 85bf89ca inbox); ask do-token còn pending (errata batch) | "3 ghi-nợ hub" = acknowledge-only; đừng đóng ask do-token sớm |
| 1 bookend (85bf89ca) | FIT (re-verify hẹp) | (a) sửa adap-report dòng 8 "7 khoản SAI"→"5-sai+2-đổi-cách-đọc"; (b) refresh 2 citation stale: session-start.md:206 + memory-budget.json `_owner_ratified` (re-tune neo cycle-2 CỦA SE, ví-dụ "ở nguồn" cũ); (c) GIỮ counter — SE tick 3→6/2 ngày = phiên ngắn-nhiều, điều kiện gỡ hub KHÔNG áp; (d) STAGE-2 _index move | KHÔNG đụng 4 sàn; đừng đọc khoản 4 thành "(a) huỷ" — §2.1.8 SE đã đúng caveat (a) INFORM-only |
| 2 sổ-cái (291550ff) | FIT — việc lớn nhất | 3-câu-hỏi × 7 vòng lặp SE. Seed: **niêm-phong = GAP thật** (moved-not-cut grep S102 = kỷ luật TAY; memory-archive-gate.ps1 DRY-planner không verify seal sau move); ĐO/LÀM+phanh ĐÃ có (hysteresis A4/keep_floor A5/strikes A6); frozen-instrument: budget.measured STALE nhưng consumer ignore+re-measure (memory-selfimprove-audit.ps1:18,110) | Đừng chép ngưỡng hub; chỉ port 3 CÂU HỎI |
| 3 nhãn đã-đo (190c11ba) | FIT một phần — KHÔNG trọn "already-aligned" | Kiểm-kê §4.1: ≥2 ứng viên sống bằng nhãn: crystallized-backfill.ps1:117-119 "calibrated" /4.0 /3.0 KHÔNG assert/phản-chứng; memory-budget.json:89 `measured_token_estimate=55000` (metadata giàu ≠ phản-chứng). Chọn 1/3 lối thoát per con + câu cửa-duyệt vào checklist reviewer | Spirit SE đã có (S125 negative-control do-token; spawn-model-audit; wal-recovery-test) — thư đúng phần đó |
| 4 session-logic (9234a7aa) | n-a (nắm hướng) | Không làm gì. H22 WAL + counter content-addressed = precursor đúng hướng | Hub tự khai "chưa build chưa dùng thử" — CẤM copy mục 2 |
| 5 contextual_retrieval (f5ce2778) | FIT — việc thật 1-dòng | Flip rag.json:26 `true``false` + update rationale :31 (revisit đóng bởi owner-final, mirror projects.py:39) + báo hub 1 dòng. SE đủ quyền (tiền lệ S41 tự sửa exclude_paths); hiệu lực chờ re-bootstrap = AI_INFRA-op | Hedge "có thể đúng sẵn" KHÔNG áp SE — SE override từ 26-05; data cũ giữ nguyên tới re-index |
### Evidence (7 anchor, lead verify 3): rag.json:26,:31 · session-start.md:196-205 · .session-counter.json · adap-reports/bookend.md:8 · crystallized-backfill.ps1:117-119 · WAL.md
### Refutation: BÁC "bản 2 duy nhất" (trên) · RESISTED "caught-up không nợ" (WAL toàn [x] + adap-chuỗi đủ 07-15) · RESISTED supersedes_scope (4 sàn nguyên vẹn, 6/15/3 = config SE `_owner_ratified`)
### Thứ-tự-việc đề xuất (input spec B):
1. Bản 5 — flip rag.json + rationale + báo hub (nhỏ nhất, owner-final)
2. Bản 1 — re-verify nhịp: adap-report + 2 citation stale + WAL ask-resolve + STAGE-2 move
3. Bản 2 — inventory 3-câu-hỏi × 7 vòng lặp (seed: niêm-phong gap)
4. Bản 3 — kiểm-kê nhãn đo + xử 2 ứng viên + câu cửa-duyệt
5. Bản 4 — adap-report nắm-hướng (n-a)
6. Thư 0 — adap-report đợt + email hub gộp
### AC-check (runbook §5.4): AC-1 ✓ GO-ADAP nhị-phân · AC-2 ✓ 7 anchor ≥3 · AC-3 ✓ 1 BÁC + 2 RESISTED · AC-4 ✓ 0 claim vô-nguồn (lead verify 3/3) · AC-5 ✓ memoryDelta 4-field · AC-6 ✓ stamp lúc harvest · AC-7 ✓ real single documented · AC-8 ✓ scope-clean (reviewer read-only; git-diff check @commit) → **8/8 ĐẠT**

View File

@ -0,0 +1,24 @@
# sub-reviewer-1 — D-review lane R2 (outward email + move integrity) — EM-MAIN SCRIBE on-behalf
> ⚠️ KHÔNG PHẢI verdict A (đó là `sub-reviewer-1-verdict.md`). Đây là lane R2 của D-review (run `wf_44eeed6b-3b4`, index 1). R2 trả return-only KHÔNG tự ghi sub-md (dù khai subMdPath) — em-main scribe từ `journal.jsonl` theo writeGuard @P3. Nguồn: journal result[0].
## VERDICT: GO-COMMIT — email fact-accurate mọi claim soi được; move + _index sạch; owner-gated 0-diff; 1 minor optional (lineage date)
### Fact-check email (a)-(g) — PASS 7/7
- (a) "hash 6/6 PASS" — R2 tự RE-COMPUTE body-sha 6 inbound: 181a6d195468 · 85bf89ca7d3e · 291550ffa295 · 190c11ba2bc0 · 9234a7aa1009 · f5ce27780af8 — 6/6 khớp declared + `_index:33-38` + run.md.
- (b) Nấc (0)-(5) khớp 5 report trên đĩa — bản 3 đúng "executed một phần", bản 4 đúng "agreed", 0 inflation.
- (c) counter 3→6/2-ngày khớp `.session-counter.json:13/16/18` — reproducible (KHÔNG phải lớp S126 self-mutating aggregate).
- (d) lineage "true từ 26-05" → git nói value vào 2026-05-22 (`bf93abd`), 05-26 = `spec_chosen_date` + v1.3 touch (`b223466`). Lệch 4 ngày CONSERVATIVE → minor-optional. **[LEAD ĐÃ FOLD: sửa 3 chỗ cùng-lớp (rag.json:31 + report bản5 + email:28) + re-stamp sha `3d157164a611``c0ac7486447e` + _index, 6c re-verify MATCH.]**
- (e) do-token pending khớp WAL. (f) sha recompute == declared. (g) full-grammar VN đạt harness-7, 0 internal-compression leak.
### Move + _index — PASS: 6× git R-rename 100% (0 ins/0 del) · root = đúng README.md · 6 row INBOUND processed/ai_infra sha-cột GIỮ · OUTBOUND row format đúng.
### Bookend L40/L43 — PASS: L40 done có evidence thật; deviation L43 GIỮ đủ 2 caveat lõi ("executed ≠ verified" + "citation (i) còn treo") — improved honesty, lost nothing.
### Owner-gated 0-diff — CONFIRMED: memory-budget.json vắng khỏi git status; (i)(ii)(iv) untouched; email khai "CHỜ ANH" đúng.
### Adversarial spot-checks: A4 0.85/A5 5/A6 2 đúng từng số · backfill re-run exit-0 range==baseline · pause.md+tiep.md tồn tại (H22-precursor grounded).
### Note tooling (log, KHÔNG blocker): recipe body-sha viết "strip-1-leading-\n" — R2 brute-force với known-good cho thấy biến-thể "strip-ALL-leading-newlines" mới khớp bộ file HUB; công-thức strip-1 khớp bộ file SE (worker w3 + lead re-compute đều MATCH declared). ⇒ 2 biến-thể đang sống chung theo phía phát-hành; thực-chứng nội-bộ nhất-quán, NHƯNG doc recipe nên khai rõ biến-thể. Ứng-viên adap-request/hỏi hub lượt sau.
### memoryDelta (nguyên văn R2, lead verify): task=R2 pre-commit gate fact-check outward · verdict=GO-COMMIT mọi claim disk-accurate, 1 minor optional · learned=brute-force canonical-variant với known-good TRƯỚC khi phán tamper; counter cumulative an-toàn khi neo file persisted reproducible · surprise=lineage date lệch 4-ngày CONSERVATIVE — direction-of-error quyết định mức lỗi outward.

View File

@ -0,0 +1,66 @@
# sub-reviewer-3 — fable-real #2 verdict (Giai đoạn C, re-review spec-execute) — HOÀN TẤT
- **engine:** fable-real-single · reviewer · 2026-07-16 · run S127-adap-dot-16-07 · ghi TĂNG-DẦN (chống #53)
- **đối tượng:** `spec-execute-dot-16-07.md` (lead chốt 3 wave + 3 owner-gated) + `sub-investigator-2-spec-draft.md` (canonical detail)
- **phương pháp:** soi-để-phá 5 trọng-tâm + 4 live-test chạy thật + 11 spot-check độc-lập (anchor lead CHƯA check)
## VERDICT: GO-WITH-FIXES — 4 SHOULD-FIX fold trước D (0 BLOCKER, 7 NIT)
Chất spec + draft ĐỨNG VỮNG: 3-wave order đúng ràng-buộc thật, owner-gate lane đúng (2b-file1 = derived-doc thật), LỆCH-1 confirmed tận cơ-chế (projects.py:54-55 setdefault), diff không phá gì (JSON-safe, ASCII-hoá không mất nghĩa, :206 tự-đứng). 4 fix đều là lỗi verify-lệnh/scope-rơi — fold được bằng sửa spec-execute + owner-gated-proposals, KHÔNG cần re-investigate.
## Bảng finding
| # | Mức | Chỗ | Vì sao | Fix đề-xuất |
|---|---|---|---|---|
| F1 | **SHOULD-FIX (cao)** | draft §2d verify (draft:80) + spec ③ "6 file moved" | Verify `(Get-ChildItem broadcasts\inbox\*.md).Count → 0` SAI: `README.md` cũng ở root và KHÔNG được move — chính `WAL.md:20` đếm "7 (README + 6 pending)". Sau move đúng → count = **1**. Worker mechanical bám acceptance "0" có rủi-ro move luôn README.md = misfile phá khuôn inbox | Expected → `1` (chỉ README.md) hoặc lệnh `Get-ChildItem broadcasts\inbox\*.md -File \| Where-Object Name -ne 'README.md'` → 0. Ghi rõ "README.md Ở LẠI root" |
| F2 | **SHOULD-FIX (cao)** | draft §2d verify (draft:80) "Get-FileHash … == sha-prefix trong _index" | `_index` cột sha256(12) = **SHA256(body) canonical** (LIVE-TEST T3: body-sha thư-0 = `181a6d195468` == _index; whole-file Get-FileHash = `f29247cfc33e` ≠) → so Get-FileHash với _index chắc chắn LỆCH → false-tamper giữa wave-3 (đúng lớp S125 verifier-bệnh) | Byte-preserve = `Get-FileHash` TRƯỚC move == SAU move (tuyến (a) check-email.md:17). Muốn so _index → recompute **body-sha** theo công-thức check-email.md:17(b) |
| F3 | **SHOULD-FIX** | spec §Owner-gated (3 mục) vs draft:135 | Draft 4a có mục thứ 4: `memory-budget.json:65` thêm đuôi "(convention -- chua do tokenizer that tai SE; dinh-chinh 58f5afd8)" — "gộp gate với 2b". Spec-execute RƠI mục này ở CẢ wave-1 lẫn owner-gated list → class-fix C1 thiếu đúng NGUỒN hằng-số /3.0 (bài S122/S123: vá 1 lớp = vá đủ matcher cùng-lớp trong diff) | Thêm mục (iv) vào `owner-gated-proposals-dot-16-07.md`: budget:65 tail-note, gộp cùng câu hỏi (i) |
| F4 | **SHOULD-FIX** | spec wave-2 item 10 "STAGE-2 done-ở-wave-3" | Report bản-1 UPDATE viết ở **wave-2**, move 2d chạy **wave-3 CUỐI** → report ghi "done" = **future-claim** (lớp S108: "đã làm X" phải verify X trước khi ghi). Move fail ⇒ claim sai nằm trên đĩa, email đã stamp trước đó | Wave-2 wording = "STAGE-2: chạy ở wave-3" HOẶC wave-3 worker sau move xong update lại dòng đó (adap-report.md:33 idempotent). Email giữ như draft (không claim move done) |
| F5 | NIT (hạ mức sau T2) | verify pattern tiếng Việt qua `Select-String` (draft:65/:71/:110/:148) | Nghi false-match theo lớp S125/gotcha #30**ĐO THẬT thì KHÔNG bệnh**: PS 5.1 `Select-String -Path` đọc file StreamReader UTF-8-default → match đúng cả trên UTF-8-no-BOM + ACP Windows-1252 (T2: "7 khoản cũ SAI"=1 · "n=1 ở hub"=1). Bệnh S125 nằm ở `Get-Content`(-Raw) ANSI-default | Giữ nguyên dạng lệnh `Select-String -Path` như draft; CẤM worker "cải tiến" sang `Get-Content \| Select-String` không -Encoding; VN-pattern KHÔNG được nhét vào .ps1 file (gotcha #30) |
| F6 | NIT | spec wave-1 item 2 "wording draft :134 có chữ Việt-có-dấu" | Non-ASCII duy nhất ở draft:134 = **em-dash "—"** (chữ đã ASCII-stripped sẵn "CHUA do... that tai SE"). Chỉ dẫn đúng, mô tả sai loại | Đổi thành "ký tự non-ASCII (em-dash)" — worker khỏi tìm dấu tiếng Việt không tồn tại |
| F7 | NIT | draft Việc-3 verify (draft:110) `"nac G-011\|…"` | Report thật dùng "**nấc** (G-011)" (bookend:4 — dấu + ngoặc) → alternative "nac G-011" 0-hit vĩnh viễn; grep 4-alternative không chứng "đủ 5 trường" (thiếu id-broadcast) | Pattern → `"G-011"`; kiểm 5 trường bằng 5 label thật hoặc để HMW-review đọc mắt |
| F8 | NIT | spec ③ "JSON parse OK 2 file sửa (… + không đụng memory-budget.json)" | Tự mâu-thuẫn: "2 file sửa" nhưng file 2 là xác-nhận-KHÔNG-đụng | "JSON parse OK: rag.json (đã sửa) + memory-budget.json (xác-nhận không đụng trong D)" |
| F9 | NIT | draft 2a after-text (draft:64) | Dòng 8 gốc có backtick quanh `>=` ×2; after-text transcribe đánh rơi. Draft tự dặn "GIỮ nguyên enumeration" | Worker exact-edit giữ backtick, chỉ chèn 2 note ngoặc + đổi câu phân-loại |
| F10 | NIT | 2b-file1 (worker) ⟂ (i) owner-gated — cùng câu chuyện neo | :206 = derived-doc thật (số 6/15/3 + policy giữ; block :185-206 không mâu-thuẫn) → lane worker ĐÚNG. Nhưng nếu anh đổi wording (i) thì :206 phải kể theo | Thêm 1 dòng vào owner-gated-proposals: "anh đổi wording (i) ⇒ re-sync session-start.md:206 cùng lượt" |
| F11 | NIT | 4c câu cửa-duyệt (draft:146) | Câu cửa-duyệt CHỨA chính các nhãn nó săn ("measured/calibrated/đã-đo") = mention-not-use. Nay SE 0 máy-quét tự-động (hub sweeper KHÔNG port) → vô hại; mai sau port sweeper thì dòng này false-positive (gen-2 citation-trap S123) | ½ dòng vào honest-caveat bản 3 (4d): "câu cửa-duyệt = mention; exemption nếu port máy-quét" |
## Soi theo 5 trọng-tâm đề bài
1. **Diff có phá gì không — KHÔNG:**
- (a) rag.json:31 rationale mới **JSON-safe** ✓: 0 double-quote chưa escape (nháy đơn 'Evaluate trial week 3'), non-ASCII hợp lệ UTF-8 JSON và file ĐÃ chứa sẵn ("→" ở :31 hiện tại, tiếng Việt ở :3). Claim "chunking.py 0 API-call" có quy-thuộc "broadcast f5ce2778:" và MIRROR đúng comment hub tự viết ở `projects.py:39` (đối chiếu tận nơi) ✓. T1 chứng parse-lệnh chạy đúng.
- (b) backfill.ps1: :25 after pure-ASCII ✓; :117 after còn 1 em-dash — spec đã bắt ASCII-hoá (F6). ASCII-hoá KHÔNG mất nghĩa ("CHUA do tokenizer that tai SE" giữ trọn ý). `grep -i calibrat` scripts/ → đúng 2 site :25/:117 file này (khớp draft "2 chỗ"); selfimprove-audit:283/:304/:322 "calibration-interim" = miễn-trừ visible sẵn (khớp draft:124). Comment-only, :118-119 code giữ nguyên. T4: script exit-0 + output có dòng literal `tok RANGE [low..high] : [118424 .. 157898]` — acceptance "giữ dòng tok RANGE" đo được ✓.
- (c) session-start.md:206 — before-text draft khớp đĩa **exact** (đuôi dòng 206); "Chỉnh lại sau chu-kỳ-2" duy nhất 1 chỗ trong file → exact-replace an toàn; block :185-206 đọc lại: :205 "số nhịp = quyền anh" + (c) OVERDUE đọc-từ-config vẫn đứng, wording mới chỉ đổi MỐC so-sánh hub→SE, vế đầu owner-intent giữ nguyên → tự-đứng, 0 mâu-thuẫn ✓.
2. **Thứ-tự wave — ĐÚNG ràng-buộc thật:** mọi consumer file-gốc (5 reports wave-2, email wave-3 item 11) đứng TRƯỚC move 2d (item 12 CUỐI); không việc nào sau move cần file ở root. Sót duy nhất = F4 (report bản-1 nhắc "STAGE-2 done" trước khi nó chạy).
3. **Owner-gate — đúng lane, thiếu 1 mục:** (i)(ii)(iii) đúng; 2b-file1 :206 = derived-doc thật → worker lane ĐÚNG (kèm F10); RƠI mục budget:65 = F3. Điều-chỉnh lead "proposals-file only, apply lượt sau" AN-TOÀN hơn draft — tán thành (không đụng vùng owner-ratified khi anh vắng).
4. **Acceptance đo được — có, sau khi vá F1/F2:** 4 live-test bên dưới; 2/4 lệnh verify draft có lỗi thật (F1 count-0-quên-README, F2 so-sai-loại-hash) — còn lại chạy đúng nguyên văn trên máy này.
5. **Email khuôn §VIỆC-6 vs send-email.md thật — KHỚP đủ:** id :27 ✓ · sha canonical :28 (strip \r + strip-1-leading-newline + CẤM `Get-Content -Raw`) ✓ · 6c selftest-stamp NGAY sau Write :32 ✓ · bước 7 log `_index` :33 cùng lượt ✓ · to=ai_infra ⇒ 6b CC không bắt ✓ · reviewer-gate outward :37 phủ bằng HMW-review Harness-9 ✓ · WAL:12 ask do-token pending khớp đĩa — email GIỮ pending đúng ✓.
## [LIVE-TESTS] — 4 lệnh chạy thật trên máy này (PS 5.1.26100.8875 · pwsh KHÔNG có · ACP Windows-1252)
| T | Lệnh (nguồn draft) | Kết quả | Kết luận |
|---|---|---|---|
| T1 | `python -c "import json; …print(c['contextual_retrieval'])"` (draft:39) | in `True` (pre-flip) | Lệnh chạy đúng nguyên văn; post-flip sẽ in `False` như acceptance ✓ |
| T2 | `Select-String -Path <bookend> -Pattern '7 khoản cũ SAI'` (draft:65) + `-Pattern 'n=1 ở hub'` trên session-start (draft:71) | **1 hit + 1 hit** (file no-BOM: bytes đầu `23 20 61`/`2D 2D 2D`) | VN-pattern qua `Select-String -Path` HOẠT ĐỘNG trên PS 5.1 → F5 hạ NIT; bệnh S125 thuộc `Get-Content` ANSI-default, không thuộc Select-String |
| T3 | `Get-FileHash` thư-0 vs body-sha canonical (check-email.md:17b) vs `_index` | whole-file `f29247cfc33e` ≠ _index `181a6d195468` = body-sha ✓ | `_index` cột = body-sha → draft 2d verify so Get-FileHash với _index SAI LOẠI HASH → F2 confirmed |
| T4 | `powershell.exe -ExecutionPolicy Bypass -File scripts\crystallized-backfill.ps1` (draft:136) | exit-0 + output `tok RANGE [low..high] : [118424 .. 157898]` | Acceptance 4a đo được, baseline sạch ✓ |
## [SPOT-CHECKS độc-lập] — 11 anchor lead CHƯA check (lead đã check: rag.json:26/:31 · budget:123 · backfill:25/:117-119 · budget:89/:92 · bookend:8)
1. `broadcasts/_index.md:11` khuôn pending→processed + `:33-38` đúng 6 row pending/(root), sha khớp run.md ✓
2. `session-start.md:206` before-text exact + block :185-206 không mâu-thuẫn + uniqueness 1/1 (grep) ✓
3. `adap-report.md:13-19` LOCK 5 trường + `:33` idempotent-update + `:43` Write-tool-only — draft trích đúng cả 3 ✓
4. `send-email.md:24-34` id/sha-canonical/6c/bước-7 + `:37` reviewer-gate — draft §VIỆC-6 khớp đủ ✓
5. `.claude/agents/reviewer.md:35` = `### 2. Apply 5-category checklist` exact; section kết ở :44 → điểm chèn 4c không mơ hồ ✓
6. `scripts/mfe-eval.ps1:166-167` `/4.0`·`/3.0` + `:179-180` RANGE-honest, 0 nhãn calibrated — claim "cùng-lớp giữ nguyên" của draft ĐÚNG ✓
7. `memory-budget.json:65` nguồn hằng-số "~3.0-3.5 byte/tok" đúng như draft tả (→ lòi F3 khi so spec) ✓
8. `WAL.md:12` ask do-token pending ✓ + `WAL.md:20` "7 = README + 6" (→ bằng chứng F1) ✓
9. `AI_INFRA\claude-rag\lib\projects.py:39` `False # OWNER-FINAL 2026-07-16 (s100)` + `:46-55` walk-up + `setdefault` merge-missing-only → **LỆCH-1 mechanism CONFIRMED tận gốc**: SE override `true` thắng default → worker in-repo edit = lane đúng ✓
10. Glob inbox root = ĐÚNG 6 broadcast + README (khớp danh sách 2d) + `inbox/ai_infra/` tồn tại (25 file) → `git mv` target sẵn ✓
11. `grep -i calibrat` toàn scripts/ = 2 site backfill + 3 "calibration-interim" selfimprove-audit (miễn-trừ visible) — sweep draft chính xác ✓
## memoryDelta
- **task:** Giai đoạn C — adversarial re-review `spec-execute-dot-16-07.md` + draft canonical trước khi HMW workers (D) chạy; 4 live-test + 11 spot-check độc-lập.
- **verdict:** GO-WITH-FIXES — 4 SHOULD-FIX fold trước D (F1 README-count · F2 sai-loại-hash vs _index · F3 budget:65 rơi khỏi owner-gated · F4 STAGE-2 future-claim) + 7 NIT; 0 BLOCKER.
- **learned:** (1) Lệnh verify trong spec cũng là CODE — phải chạy thử trên máy trước khi worker bám: 2/4 lệnh draft sai thật (count quên README; so body-sha bằng whole-file-hash). (2) Tinh-chỉnh lớp S125: PS 5.1 `Select-String -Path` đọc UTF-8-no-BOM ĐÚNG (StreamReader UTF-8-default) — bệnh ANSI-decode thuộc `Get-Content`(-Raw); ranh giới bệnh nằm ở CMDLET, không ở shell version. (3) Bước nén draft→spec-execute là chỗ RƠI item thật (budget:65 gated-edit biến mất cả 2 lane) → fold spec phải đối-chiếu bảng-lane draft từng dòng.
- **surprise:** VN-diacritic pattern match NGON trên PS 5.1 + no-BOM + ACP Windows-1252 — ngược trực-giác gotcha #30/S125; nghi-án encoding phải ĐO trên đúng cmdlet thay vì suy từ lớp bệnh cũ (đúng bài fault-injection: happy-path + negative đều chạy thật).

View File

@ -0,0 +1,66 @@
# sub-task-0 — VIỆC 1: flip contextual_retrieval true→false
> Engine: HMW-worker Opus-MAX · run S127-adap-dot-16-07 · 2026-07-16
> File đích DUY NHẤT: `D:\Dropbox\CONG_VIEC\SOLUTION\SOLUTION_ERP\.claude\rag.json` (TRONG repo SE — LỆCH-1: KHÔNG đụng AI_INFRA)
> Trạng thái: **HOÀN TẤT** — verify PASS (python in `False`, JSON parse OK, diff đúng 2 dòng)
## Nguồn spec (đọc trước khi làm)
- spec-execute-dot-16-07.md wave-1 item 1 (dòng 12)
- sub-investigator-2-spec-draft.md §VIỆC 1 (dòng 18-44) — canonical diff before→after + lệnh verify
## EXACT-EDIT — đối chiếu before-text với ĐĨA (khớp 1/1)
| Dòng | Before (đĩa, đã strip cat-n prefix) | Khớp draft? |
|---|---|---|
| 26 | ` "contextual_retrieval": true,` | ✓ khớp draft:34 before |
| 31 | ` "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.",` | ✓ khớp draft:35 before (key+value giống hệt) |
Ghi chú #30: `.claude/rag.json` là JSON, KHÔNG phải `.ps1` → pure-ASCII KHÔNG áp. File vốn đã chứa non-ASCII (`§`, `→`, tiếng Việt "Quản lý HĐ NCC"). Em-dash `—` trong after-string là ĐÚNG (giữ nguyên theo draft:36), KHÔNG thay `--`.
## Diff áp (2 Edit, non-overlapping, unique-match)
### Edit 1 — dòng 26
```
- "contextual_retrieval": true,
+ "contextual_retrieval": false,
```
### Edit 2 — dòng 31 (thay TOÀN BỘ value, giữ indent 4-space + trailing comma)
```
- "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.",
+ "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.",
```
## Verify — output THẬT (paste, không mô tả suông)
### V1 — python parse + value (lệnh y hệt task/draft:38-41)
```
$ 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'])"
False
```
→ expected `False` ✓ — đồng thời `json.load` KHÔNG throw ⇒ JSON parse OK (file không vỡ, encoding UTF-8 nguyên).
### V2 — git diff scope 1 file (chứng chỉ 2 dòng đổi, 0 key khác)
```
$ git --no-pager diff -- .claude/rag.json
@@ -23,12 +23,12 @@
"auto_reindex_mode": "replace",
"chunk_size": 1500,
"chunk_overlap": 200,
- "contextual_retrieval": true,
+ "contextual_retrieval": false,
"_decision_log": {
...
- "contextual_retrieval_rationale": "Flag true but per v1.3 §12.1 + §9.4: ... Evaluate per eval recall@5 trial week 3.",
+ "contextual_retrieval_rationale": "FALSE — OWNER-FINAL fleet-wide 2026-07-16 ... Mirror khung: projects.py:39 default False.",
```
→ 1 hunk, đúng 2 dòng `-/+`; context lines quanh (spec_a_vs_b, spec_chosen_date, anatomy_threshold, chunk_size_rationale) KHÔNG đổi ⇒ 0 key khác bị chạm. Em-dash `—` + tiếng Việt render đúng trong diff ⇒ encoding preserved.
## Acceptance D (draft:44) — PASS
- [x] `python ... print(c['contextual_retrieval'])``False`
- [x] JSON parse OK (json.load no-exception)
- [x] `git diff` chỉ 1 file `.claude/rag.json`, đúng 2 dòng dự-kiến
- [x] CẤM đã tuân: 0 đụng AI_INFRA · 0 bootstrap/re-index · 0 sửa key khác · 0 file ngoài {rag.json + sub-task-0.md}
## Caveat honest
- Hiệu-lực index (embed đã nhúng) chờ **re-bootstrap** = AI_INFRA-op (charter v2, cần VOYAGE key) — KHÔNG tự chạy `bootstrap.py`. Data cũ giữ nguyên tới re-index kế (broadcast §3). Flip này CHỈ đổi config file SE; khung AI_INFRA đã mirror `false` sẵn (`projects.py:39` owner-final, `AI_INFRA\.claude\rag.json:33` false từ 2026-05-26) → SE chỉ đồng-bộ file của mình.

View File

@ -0,0 +1,65 @@
# sub-task-1 — 4a: ha-nhan C1 'calibrated' -> 'heuristic' (crystallized-backfill.ps1)
> Worker: implementer (Write/Edit) · Wave-1 item 2 · run S127-adap-dot-16-07 · 2026-07-16
> VERDICT: **PASS 3/3 verify** · COMMENT-ONLY · code :118-119 GIU byte-exact · file van pure-ASCII + LF
> File dich DUY NHAT: `scripts/crystallized-backfill.ps1` (+ sub-md nay). Isolation OK.
## 1. Pre-condition EXACT-EDIT (doi chieu DIA truoc edit)
Byte-level inspect (python, whole file):
- total 13394 byte · **non-ASCII = 0** · CRLF = False (LF-only) · 255 dong.
- `:25` DIA = `# (4) CALIBRATED RANGE: token headroom is a RANGE [bytes/4 .. bytes/3.0], NOT the` -> KHOP draft before-text 1/1.
- `:117` DIA = `# calibrated RANGE (invariant 4): tok_low = optimistic (bytes/4), tok_high = worst (bytes/3.0)` -> KHOP draft before-text 1/1.
- `:118` = `$tokLow = [int][math]::Round($totalBytes / 4.0)` · `:119` = `$tokHigh = [int][math]::Round($totalBytes / 3.0)` (code hardcode, GIU nguyen tuyet doi).
Ket luan: 2 before-text khop dia exact -> duoc phep apply (khong DUNG task).
## 2. Edit da ap (2 cho, ca 2 la COMMENT)
**Edit-1 (:25)** — chi doi nhan, phan con lai dong GIU:
```
- # (4) CALIBRATED RANGE: token headroom is a RANGE [bytes/4 .. bytes/3.0], NOT the
+ # (4) HEURISTIC RANGE (convention, NOT measured): token headroom is a RANGE [bytes/4 .. bytes/3.0], NOT the
```
**Edit-2 (:117)** — after-text draft §4a, F6 ap: em-dash '—' draft -> '--' (pure-ASCII #30); chu da ASCII-stripped san ('CHUA'/'tai'/'dinh-chinh'):
```
- # calibrated RANGE (invariant 4): tok_low = optimistic (bytes/4), tok_high = worst (bytes/3.0)
+ # 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)
```
**git diff --stat:** `1 file changed, 2 insertions(+), 2 deletions(-)` — CHINH XAC dong 25 + 117, khong dong nao khac.
**Post-edit byte check:** total 13549 byte · non-ASCII = 0 · CRLF = False · 255 dong (khong doi) · :118/:119 repr byte-identical voi truoc edit.
## 3. Verify 3/3 (output THAT, khong mo ta suong)
### (a) Select-String -Path calibrat -> 0 hit [PASS]
```
$ Select-String -Path scripts\crystallized-backfill.ps1 -Pattern "calibrat"
calibrat hit count: 0
```
(giu dang `Select-String -Path` per F5 — KHONG cai tien sang Get-Content | Select-String; default case-insensitive -> phu ca 'CALIBRAT'/'calibrat', 0 hit = ca 2 cho da het nhan cu.)
### (b) chay script -> exit 0 + dong 'tok RANGE' [PASS]
```
$ powershell.exe -ExecutionPolicy Bypass -File scripts\crystallized-backfill.ps1
EXIT CODE: 0
...
tok RANGE [low..high] : [118424 .. 157898] tok (bytes/4 .. bytes/3.0)
```
Live-measured range **[118424 .. 157898]** == baseline C **[118424 .. 157898]** (0 drift luot nay). Dong hien dien PASS. (script van in day du bang: hotload 473694 byte, cap 380000, headroom 222102, target 210000, backfill 210000.)
### (c) python strict encoding='ascii' first 130 lines -> OK [PASS]
```
VERIFY (c): read first 130 lines with strict encoding=ascii -> OK, count= 130
line 25 : # (4) HEURISTIC RANGE (convention, NOT measured): token headroom is a RANGE [bytes/4 .. bytes/3.0], NOT the
line 117: # 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)
line 118: $tokLow = [int][math]::Round($totalBytes / 4.0)
line 119: $tokHigh = [int][math]::Round($totalBytes / 3.0)
```
(strict-ascii decode 130 dong dau khong raise -> chung #30 pure-ASCII con giu.)
## 4. Isolation / compliance
- Chi cham: `scripts/crystallized-backfill.ps1` (target giao) + file nay `sub-task-1.md`. KHONG dung sub-task-0.md, KHONG dung MD canonical / MEMORY / agents.
- KHONG store_memory / RAG-write / curl Qdrant. KHONG ghi ngoai repo/run-folder.
- Code behavior 0 thay doi (comment-only); F6 em-dash -> '--' da ap; F5 verify-pattern giu dang -Path.

View File

@ -0,0 +1,58 @@
# sub-task-2 — 4c: câu cửa-duyệt measured-label vào `reviewer.md`
> Worker (Write/Edit-capable) · run S127-adap-dot-16-07 · WAVE-1 item 3 (draft §4c) · 2026-07-16
> File đích DUY NHẤT: `.claude/agents/reviewer.md`. Nấc adap = **verified-pending** (agent .md KHÔNG hot-reload).
## Task
Append 1 mục "Measured-label gate" CUỐI section `### 2. Apply 5-category checklist`, match indent/bullet-style mục hiện có. Verify `Select-String -Path ... -Pattern "TRƯỢT"` ≥1 hit. Ghi nấc verified-pending.
## Ground-truth anchor (đối chiếu ĐĨA trước edit — EXACT-EDIT)
- Section `### 2. Apply 5-category checklist` bắt đầu :35.
- Section-content kết ở :44 `Apply ALL categories below (...):` → :45 blank → :46 `---` (divider trước `## Category 1` :48). Điểm chèn = cuối section, ngay trước `---` :46 → KHÔNG mơ hồ.
- Before-block (:44:46) match ĐĨA 100% (Read + python dump 2 lượt).
- Mục hiện có trong section = `- ` bullets (:38:42, zero-indent) → match bullet-style ⇒ prefix `- ` (KHÔNG bold-standalone).
- Encoding TRƯỚC: UTF-8 **no-BOM**, **LF** (CRLF=0, LF=277), 11096 byte. → phải preserve (F5: verify VN-pattern PS 5.1 chỉ đúng trên UTF-8-no-BOM).
## Diff applied (git diff `.claude/agents/reviewer.md`, +2 lines, no delete)
```
@@ -43,6 +43,8 @@ Em main spec will include:
Apply ALL categories below (Category 6 chỉ khi target gồm nội dung **hướng ra ngoài**: email / adap-report / broadcast / shared-doc):
+- **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.
+
---
## Category 1 — Wire BE / feature claim verify
```
Nội dung khớp task/draft §4c VERBATIM (kể cả `→` `·` diacritics — .md nên non-ASCII OK, #30 chỉ áp .ps1).
## Verify — PASTE output THẬT
### V1 — canonical Select-String (F5: GIỮ `-Path` form; CẤM `Get-Content | Select-String`)
```
PS 5.1.26100.8875
.claude\agents\reviewer.md:46:- **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.
```
⇒ 1 hit trên :46. PASS (≥1 hit). PS 5.1 xác nhận match VN-pattern "TRƯỢT" đúng trên UTF-8-no-BOM (F5 đo lại đúng).
### V2 — encoding-preserve + occurrence-count (python)
```
BOM: False # vẫn no-BOM
CRLF count: 0 # vẫn LF-only
bare LF count: 279 # 277 → 279 (+2 = 1 blank + 1 content)
size bytes: 11447 # 11096 → 11447 (+351)
line 46 == '- **Measured-label gate ... TRƯỢT ... bỏ nhãn.' # đúng vị-trí
TRUOT occurrences in file: 1
```
⇒ encoding + line-ending PRESERVED; đúng 1 occurrence (không nhân đôi/rơi).
## Isolation (git-diff audit sau edit)
- `.claude/agents/reviewer.md` = `2 ++` (CHỈ mình — đúng scope).
- Các file khác trong `git status` (`session-start.md`, `rag.json`, `bookend.md`, `crystallized-backfill.ps1`, `sub-task-0.md`, `sub-task-4.md`) = worker WAVE-1 song song (task 1/2a/2b/4a). MÌNH KHÔNG chạm.
- 0 store_memory / 0 RAG-write / 0 file ngoài repo. Chỉ ghi: reviewer.md (task) + sub-task-2.md (trace này).
## Nấc = verified-pending (CẤM claim verified — task item 3)
- **On-disk VERIFIED:** content verbatim + Select-String 1-hit + encoding preserve + git-diff 2-line-clean.
- **Behavioral NOT verified:** agent `.md` KHÔNG hot-reload → gate này CHƯA thực-sự áp cho reviewer-spawn nào cho tới khi restart / spawn-test lượt sau (bài project_harness4: EDIT-agent-tồn-tại cần restart, agent-MỚI mới đọc frontmatter/prompt mới). ⇒ nấc `verified-pending`, KHÔNG được claim "gate đang chạy / đã kiểm-chứng hành-vi".
- Gotcha meta (khớp F11 draft): câu cửa-duyệt này CHỨA chính các nhãn nó săn (`measured/empirical/calibrated/đã-đo`) = **mention-not-use**; nếu mai sau port máy-quét tự-động khớp-mẫu thì cần exemption (gen-2 citation-trap, bài S123) — chỉ ghi nhận, KHÔNG xử wave này.

View File

@ -0,0 +1,70 @@
# sub-task-3 — Việc 2a: đính-chính dòng 8 adap-report bookend
> Role: implementer (Write/Edit) · Wave-1 item 4 · run S127-adap-dot-16-07 · 2026-07-16
> VERDICT: **PASS** — 1 file đích sửa đúng, 3/3 verify khớp expected, isolation sạch.
## File đích (DUY NHẤT)
`docs/governance/adap-reports/2026-07-15-Governance-h17-cadence-update-bookend.md` — dòng 8.
## Ground-truth ĐĨA trước edit (F9 anchor)
Dump `python repr` dòng 8 TRƯỚC edit:
```
'- Hub GỠ counter khỏi chính mình, chuyển **bookend** (rà đầy-đủ 2-đầu mỗi phiên). 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").'
```
- BACKTICK_COUNT = 4 → 2 cặp quanh `>=` (F9 xác nhận dòng gốc CÓ backtick ×2).
- Quote-chars = chỉ `"` (U+0022 straight ASCII) — KHÔNG curly.
- Interpunct = U+00B7 (·).
- before-text KHỚP ĐĨA 100% → đủ điều-kiện exact-edit (KHÔNG DỪNG).
⚠️ F9: KHÔNG transcribe after-text từ draft:64 (draft:64 đánh rơi backtick quanh `>=`). Exact-edit lấy backtick TỪ ĐĨA.
## Diff áp (whole-line Edit, atomic)
- **Phân-loại (bước 2):** `7 khoản cũ SAI (``7 khoản cũ cần soi lại — **5 sai/sai-một-nửa + 2 chỉ đổi-cách-đọc** (`
- **Note 1 (bước 3):** sau `"đến hạn" trigger` chèn ` [lõi (a) máy-không-tự-bắn VẪN ĐỨNG]`
- **Note 2 (bước 3):** sau self-check `>=` (mục có backtick) chèn ` [idempotent GIỮ]`
- GIỮ nguyên 7 mục enumeration + 2 cặp backtick quanh `>=` + quote straight + interpunct U+00B7.
- File .md → em-dash `—` GIỮ (KHÔNG áp #30 pure-ASCII vốn chỉ cho .ps1).
## Dòng 8 SAU edit (PASTE thật)
```
- Hub GỠ counter khỏi chính mình, 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").
```
## Verify (PASTE output thật)
### V1 + V2 — Select-String -Path (F5 shape GIỮ, KHÔNG Get-Content|Select-String)
```
PATTERN_5sai_HITS: 1
L8: - Hub GỠ counter khỏi chính mình, 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").
PATTERN_7khoanSAI_HITS: 0
```
- `-Pattern "5 sai"`**1 hit** (expected 1) ✓
- `-Pattern "7 khoản cũ SAI"`**0 hit** (expected 0) ✓
### V3 — backtick ×2 quanh `>=` + toàn-vẹn enumeration (python cross-check)
```
BACKTICK_WRAPPED_GTE_COUNT: 2
TOTAL_BACKTICKS: 4
HAS_5sai: True
HAS_old_SAI: False
HAS_note1: True
HAS_note2: True
ENUM_ITEMS_interpunct_count: 6
```
- backtick quanh `>=` = **2** (F9 GIỮ ×2) ✓ · total backtick = 4 (2 cặp) ✓
- 6 interpunct = 7 mục enumeration GIỮ nguyên (không thêm/bớt mục) ✓
- note1 + note2 present ✓ · "7 khoản cũ SAI" cũ mất ✓
## Isolation (B6/AUDIT)
`git status --porcelain` sau edit: file MÌNH đổi = CHỈ `docs/governance/adap-reports/2026-07-15-Governance-h17-cadence-update-bookend.md`.
Các file M khác (rag.json / backfill.ps1 / reviewer.md / session-start.md) = worker Wave-1 song-song (item 1/4a/4c/2b), KHÔNG phải tôi. 0 chạm agent-memory · 0 chạm MD canonical · 0 chạm sub-md agent khác · 0 store_memory/RAG.
## Acceptance-checklist
| Mục | Expected | Đo | Verdict |
|---|---|---|---|
| "5 sai" | 1 hit | 1 | PASS |
| "7 khoản cũ SAI" | 0 hit | 0 | PASS |
| backtick quanh `>=` | ×2 | 2 | PASS |
| enumeration 7 mục | GIỮ | 6 interpunct = 7 mục | PASS |
| 2 note ngoặc vuông | present | note1+note2 True | PASS |
| exact-edit before khớp đĩa | khớp | repr khớp 100% | PASS |

View File

@ -0,0 +1,53 @@
# sub-task-4 — 2b-file1: re-tune citation stale `session-start.md:206`
> Wave-1 item 5 (spec-execute) / draft §2b File-1. Engine: HMW-worker Opus-MAX. 2026-07-16 · run S127-adap-dot-16-07.
> File đích DUY NHẤT: `.claude/commands/session-start.md`. Isolation: chỉ file đích + sub-md này.
## 1. Ground-truth TRƯỚC edit (đối chiếu đĩa — EXACT-EDIT)
Đọc `session-start.md:206` + block :185-206. Line 206 (đuôi cần thay), inspect byte-level qua python `repr`:
```
tail idx 200:
'**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ả"**.'
SPECIAL char U+2014 '—' (em-dash)
```
- Em-dash = **U+2014**; quotes quanh `"đã chứng minh hiệu-quả"` = **straight U+0022** (KHÔNG bị flag curly).
- File là `.md` ⇒ gotcha #30 (pure-ASCII .ps1) KHÔNG áp — em-dash + tiếng Việt hợp-lệ, đúng như dòng gốc vốn đã có em-dash.
- before-text khớp đĩa 100% + block :185-206 không mâu-thuẫn (C đã verify uniqueness 1/1; Edit-tool exact-match re-confirm).
After-text lấy PROGRAMMATIC từ draft §2b line 69 (regex extract, không transcribe tay):
```
'**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ả"**.'
SPECIAL @262 U+2014 '—' (em-dash before **chưa ai...)
```
- Quotes straight U+0022 (cả `"ở nguồn"` + `"đã chứng minh hiệu-quả"`), em-dash U+2014, arrow `→` U+2192 — style KHỚP đĩa (consistent).
## 2. Edit thực-hiện (exact string replace, 1 dòng)
- **old_string** (đuôi dòng 206): `**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ả"**.`
- **new_string**: after-text ở trên.
- **GIỮ nguyên vế đầu** dòng 206: `... SE chọn **cùng 6/15/3** là **điểm khởi-đầu anh CỐ Ý chọn**, KHÔNG phải chép vô-thức.` (owner-intent — không đụng).
- Edit tool báo success (exact-match unique) — KHÔNG force replace_all.
## 3. Verify (PASTE output THẬT — F5 `Select-String -Path`, KHÔNG Get-Content pipe)
```
=== CHECK 1: pattern "n=1 ở hub" (expect 0 hit) ===
hit count: 0
=== CHECK 2: pattern "chu-kỳ-2 CỦA SE" (expect >=1 hit) ===
hit count: 1
L206: > 🟡 **Honest-caveat mang theo khi báo hub:** ... **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ả"**.
```
Byte-level re-confirm (python):
- total lines = **264** (KHÔNG drift — single-line replace)
- vế đầu preserved: True · `chu-kỳ-2 CỦA SE`: True · `mocc-0`: False · `n=1 ở hub`: False · closing phrase: True
- em-dash U+2014 count = 1 · arrow U+2192 present: True · mojibake sentinel (`Ã`/`â€`): False
## 4. Isolation / git-diff
`git diff --stat` — file của tôi: `.claude/commands/session-start.md | 2 +-` (1 dòng: 1 ins + 1 del). 3 file khác trong diff (`.claude/rag.json`, bookend adap-report, `scripts/crystallized-backfill.ps1`) = wave-1 workers song-song (Việc 1, 2a, 4a) — NGOÀI scope tôi, tôi KHÔNG chạm. 0 store_memory / 0 RAG-write / 0 file ngoài repo.
## Verdict: PASS — citation re-tuned, 2/2 verify PASS, vế đầu owner-intent giữ nguyên, 0 mojibake, isolation sạch.

View File

@ -0,0 +1,57 @@
# sub-task-0 — REPORT BẢN 2 (sổ-cái + instrument đông-cứng, sha 291550ff)
> Role: HMW-worker (wave-2 adap-report). Engine: opus effort:max. Run: 2026-07-16-S127-adap-dot-16-07.
> Nhiệm-vụ: tạo NEW file `docs/governance/adap-reports/2026-07-16-Governance-tang-luu-tru-so-cai-va-bai-hoc-instrument-dong-cung.md` theo REPORT-FORMAT LOCK 5 trường, TRANSCRIBE bảng 7×3 từ draft §VIỆC-3 (KHÔNG tự điều-tra lại).
> Ghi tăng-dần trong lúc làm (chống #53). Trạng thái: **HOÀN TẤT**.
## Nguồn đã đọc (read-only)
- `.claude/commands/adap-report.md:13-19` — REPORT-FORMAT LOCK 5 trường; :33 idempotent-update; :43 Write-tool-only.
- `docs/governance/adap-reports/2026-06-07-Agent-harness-1.md` — khuôn mẫu (numbered `## N.` headings).
- `broadcasts/inbox/2026-07-16-Governance-tang-luu-tru-so-cai-va-bai-hoc-instrument-dong-cung.md` — broadcast gốc (content_sha256 291550ff…, 3 bài học vòng lặp).
- `.claude/workflows/runs/2026-07-16-S127-adap-dot-16-07/sub-investigator-2-spec-draft.md:85-112` — §VIỆC-3 canonical (bảng 7×3 + q1/q2/q3 conclusions, V1 lead 5/5 PASS).
- `spec-execute-dot-16-07.md:20-21` — wave-2 item 6 + F7 (verify pattern "G-011", CẤM "nac G-011").
## Việc đã làm
1. **Tạo report NEW** (Write-tool, KHÔNG shell-append — adap-report.md:43) đủ 5 trường LOCK:
- `## 1. id-broadcast` (L7) — id + category/type/targets + content_sha256 + tóm-tắt 3 bài học hub.
- `## 2. nấc (G-011)` (L11) — **executed** (inventory 3-câu × 7 vòng ĐÃ chạy Giai đoạn B); giải-thích KHÔNG-agreed / KHÔNG-n-a / KHÔNG-tự-khai-verified; seal-verify tách ra owner-gated.
• F7 tuân thủ: viết "nấc (G-011)" có dấu + ngoặc → pattern bare "G-011" hit, "nac G-011" ASCII = 0-hit vĩnh viễn.
- `## 3. evidence` (L20) — TRANSCRIBE bảng 7 vòng × 3 câu (giữ nguyên file:line anchors) + map q1/q2/q3 ↔ 3 bài-học hub + 3 kết-luận (standing-note budget.measured) + file-path artifact + commit-sha = pending closeout (no-fake §C5).
- `## 4. tailored-gì + skip-gì-vì-sao` (L42) — port nguyên 3 CÂU HỎI (floor); SKIP ngưỡng/số/tool hub (SE có A4/A5/A6 từ H11, khác đường cùng chức năng); FORM = 7 vòng CỤ THỂ SE.
- `## 5. honest-caveat` (L50) — seal-gap loop-2+7 CHƯA vá (không niêm-phong máy) + đề-xuất seal-verify (md5 + substring-containment) = OWNER-GATED (iii) chờ anh + mức nghi-thức KHÔNG viết tool + scope-caveat + nấc-honesty KHÔNG leo verified.
2. **Bảng 7×3 transcribe** — giữ 100% anchor draft: loop1 wal-flush.ps1:17-18/:20-23/:12/:2 · loop2 archive-gate:11-15/:44-51/:6-7/:16-19 + budget:34-37/:153 · loop3 backfill:105-115/:126-131 + budget:74 · loop4 detectors:833-845 · loop5 measure:14-23/:36-41 + budget:144 + selfimprove-audit:18/:110 · loop6 sleep-recovery:28/:54/:59/:60 + budget:4/:29 + G-001 · loop7 curate + budget l2_verbatim:24 + budget:38-41.
## Verify (PASTE output thật — F5 Select-String -Path)
```
=== V1 Test-Path === True
=== V2 Pattern G-011 === 1 → L11: ## 2. nấc (G-011)
=== V3 Pattern niêm-phong === 10 → incl. caveat L52 (seal-gap) + L54 (scope-caveat)
=== V4 anti-pattern 'nac G-011'== 0 (F7 confirmed)
=== 5-field LOCK headings ===
L7: ## 1. id-broadcast
L11: ## 2. nấc (G-011)
L20: ## 3. evidence
L42: ## 4. tailored-gì + skip-gì-vì-sao
L50: ## 5. honest-caveat
=== **executed** nac present === 1
```
## Isolation (B6 AUDIT)
- git status: file đích = `??` untracked (NEW đúng). Chỉ tạo 2 file: report đích + sub-task-0.md này.
- KHÔNG đụng: agent-memory · MEMORY.md · CLAUDE/README/STATUS/agents canonical · sub-MD agent khác. Các `M` file (reviewer.md/session-start.md/rag.json/bookend/backfill.ps1) + sub-task-3/4.md + 2 adap-report khác = wave-1/parallel workers, KHÔNG phải tao.
- 0 store_memory · 0 RAG-write · 0 Bash-write MD · 0 curl :6333.
## Self-acceptance
- [x] 5 trường LOCK đủ + parseable (`^## \d\.` → 5 heading).
- [x] Nấc = executed (chứng: inventory chạy Giai đoạn B; KHÔNG future-claim — seal-verify tách owner-gated, commit-sha pending KHÔNG khai khống).
- [x] TRANSCRIBE từ draft (KHÔNG tự điều-tra lại) — giữ file:line anchors.
- [x] F7 satisfied (nấc có dấu; "nac G-011" = 0 hit).
- [x] "niêm-phong" ≥1 hit trong caveat (L52/L54).
- [x] Tailored/skip + honest-caveat khớp mandate "KHÔNG chép công-cụ".
- [x] Isolation clean.

View File

@ -0,0 +1,67 @@
# sub-task-1 — REPORT BẢN 3 (nhãn "đã-đo", sha 190c11ba)
> Wave-2 item 7 + draft §VIỆC-4 (dòng 116-153). Engine: HMW-worker Opus-MAX, run S127-adap-dot-16-07.
> Trạng thái: **HOÀN TẤT** — file NEW ghi xong + 4 verify Select-String PASS (paste bên dưới).
> Ghi TĂNG-DẦN trong lúc làm (chống #53, bài S123).
## Deliverable
`docs/governance/adap-reports/2026-07-16-Governance-vong-tu-bao-tri-thu-nam-san-su-that-nhan-da-do.md` (NEW, REPORT-FORMAT LOCK 5 trường — khuôn `adap-report.md:13-19`).
## Nội dung theo spec (item 7 + draft §VIỆC-4)
Nấc tách 4 hành-động con:
- **executed** — 4a C1 hạ-nhãn `crystallized-backfill.ps1` (comment-only, exit-0, calibrat=0). Evidence E2 wave-1.
- **executed → verified-pending** — 4c câu cửa-duyệt `reviewer.md:46` (agent .md no hot-reload). Evidence E3 wave-1.
- **agreed — OWNER-GATED (ii)** — 4b C2 `memory-budget.json:89` `measured_token_estimate` (chờ anh rename vs exemption).
- **agreed — OWNER-GATED (iv)** — nguồn hằng-số `memory-budget.json:65` (đuôi provenance /3.0).
Crosswalk G-011: "owner-gated" map về **agreed** (đã quyết áp KHUNG, CHƯA chạm file vì chờ owner chọn lối) — flag rõ "OWNER-GATED" để không lẫn.
## Ground-truth verify TỰ MỞ đĩa (paste thật)
**E2 — backfill (4a):**
- `grep -c -i "calibrat" scripts/crystallized-backfill.ps1``0`
- `:25` = `# (4) HEURISTIC RANGE (convention, NOT measured): token headroom is a RANGE [bytes/4 .. bytes/3.0], NOT the`
- `:117` = `# 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)`
- baseline range [118424..157898] (từ wave-1 sub-w1-task-1).
**E3 — reviewer.md (4c):**
- `reviewer.md:46` = `**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.`
**C2 owner-gated (KHÔNG đụng — xác nhận nguyên trạng):**
- `memory-budget.json:89` = `"measured_token_estimate": 55000,`
- note :90 = "honest mid estimate (~19K byte-measured + ~36K harness-injected-est)"
- `_owner_override_note` = "NOT actively subtracted by the current scripts" ⇒ 0 consumer tự-động.
- `memory-budget.json:65` = `"token_estimate": "char/4 is NOT real tokenization; VN-diacritic hot-memory ~3.0-3.5 byte/tok; report a RANGE..."` (nguồn /3.0).
**Sweep 0-ứng-viên-thứ-3 (đĩa):**
- `hmw.js` calibrat/measured = 0-hit.
- `mfe-eval.ps1:176,180` = honest RANGE "[bytes/4 .. bytes/3.0]" KHÔNG nhãn calibrated; `:266` "(MEASURED, not target-then-force)" computed-live → GIỮ.
- `spawn-model-audit.ps1:22,33,45,59-60` = MEASURED "this script really reads it, offline, from disk"; probe S126 thật; not-measurable(ii)→FLIP MEASURED → measured-đúng-nghĩa.
- `wal-recovery-test.ps1:35,367-371` = EMPIRICAL "declared, not hidden" (ca1/ca2 measured, ca0/ca3 definitional) → measured-đúng-nghĩa.
- `memory-selfimprove-audit.ps1:283,304,322` = 3 site "calibration-interim" = miễn-trừ visible sẵn → GIỮ.
**Positive-exemplar negative-control:**
- `broadcasts/outbox/ai_infra/2026-07-16-se-to-ai_infra-dinh-chinh-token-label-hash-verify.md` (58f5afd8) = SE tự đính-chính nhãn token sai TRƯỚC khi hub phát luật = negative-control đã chạy.
## Verify report file (Select-String -Path, PASTE)
```
Test-Path → True
Select-String "G-011" → 1 (≥1 PASS)
Select-String "58f5afd8" → 3 (≥1 PASS)
Select-String "mention" → 1 (≥1 PASS)
5-trường LOCK: id-broadcast(1) · nấc (G-011)(1) · evidence(1) · tailored(3) · honest-caveat(1)
```
## Tailored / skip
- Port: LUẬT (nhãn đo kèm phép-kiểm-làm-nó-trượt) + 3 lối-thoát + câu cửa-duyệt (reviewer.md:46).
- SKIP có chủ-đích: máy-quét cuối-phiên hub KHÔNG port — broadcast §4 tự khai scanner = tuỳ-chọn, "luật + câu cửa-duyệt mới là phần chuyển được"; §5 khai máy chỉ đo SỰ-CÓ-MẶT. Văn-xuôi docs/ đóng lối cùng lý-do hub §5.
## Honest-caveat (đã ghi vào report §5)
- (a) 4c verified-pending — agent .md no hot-reload, spawn-test sau restart.
- (b) văn-xuôi docs/ ngoài scope sweep (hub §5 cũng đóng lối này).
- (c) F11 citation-trap gen-2 (S123): reviewer.md:46 CHỨA chính các nhãn nó săn = mention-not-use; cần exemption-note nếu mai sau port máy-quét tự-động (discriminator = enclosure use ⟂ mention).
- (d) OWNER-GATED (ii)+(iv) = 2 quyết-định của anh cùng file memory-budget.json, worker CHƯA đụng.
## Isolation
Chỉ ghi: (1) deliverable report + (2) file sub-task-1.md này. KHÔNG đụng file khác. F5 verify = Select-String -Path. File .md KHÔNG áp #30 (được dùng dấu tiếng Việt).

View File

@ -0,0 +1,57 @@
# sub-task-2 — REPORT BẢN 4 (session-logic tách session vật-lý, sha 9234a7aa)
> Wave-2 · adap đợt 16-07 · engine: HMW-worker Opus-MAX · 2026-07-16 · run S127-adap-dot-16-07
> Nguồn: spec-execute item 8 + draft §VIỆC-5 (dòng 157-163, V1 lead 5/5) + broadcast inbox 9234a7aa. TRANSCRIBE, KHÔNG tự điều-tra lại.
> Trạng thái: **HOÀN TẤT** — file NEW ghi + 4/4 verify PASS.
## Việc giao
Ghi NEW `docs/governance/adap-reports/2026-07-16-Governance-session-logic-tach-session-vat-ly-huong-van-hanh-moi.md` theo REPORT-FORMAT LOCK 5 trường (`adap-report.md:13-19`). Nấc = **agreed** (nắm-hướng theo chỉ-định hub §6 — KHÔNG phải n-a-vì-không-fit).
## Điểm chốt wording (theo spec — đã tuân)
1. **Nấc agreed, KHÔNG n-a:** §2 report phân-biệt tường-minh 3 nấc — 0-hành-động là do hub §6 "Chưa cần làm gì cả — bản này để nắm hướng", KHÔNG phải project-fit loại. (spec-execute item 8 + draft:161)
2. **Evidence = precursor SE ĐÃ CÓ** (mapping 5-vòng), KHÔNG phải diff mới — vì agreed = 0 file chạm.
3. **Honest-caveat:** TRÍCH nguyên văn hub §7 "chưa build, chưa dùng thử" + CAM-KẾT KHÔNG mô-tả mục 2 như thứ SE sẽ áp (hub tự khai chưa build — CẤM copy).
## Evidence anchors (grounded trên đĩa TRƯỚC khi cite — không bịa path)
Mapping 5-vòng hub §4 → cơ-chế SE thật (mọi file EXISTS-verified, batch Test-Path):
| Vòng hub §4 | SE anchor (confirmed on disk) |
|---|---|
| 1 gặt | `.claude/agents/harvest-curator.md` (H2 5-trục) |
| 2 soi-lead | `.claude/agents/lead-view-auditor.md` + `.claude/agents/lead-omission-auditor.md` (H24 2-vai) |
| 3 tự-đo | `scripts/mfe-eval.ps1` (MFE) + `scripts/memory-selfimprove-audit.ps1` (H17) |
| 4 nén-kho | `.claude/commands/sleep-recovery-memory-l2.md` + `scripts/memory-archive-gate.ps1` |
| 5 sàn-sự-thật | `.claude/agents/reviewer.md:46` measured-label gate (grep-confirmed exact :46) + adap bản 3 Việc-4 |
Lõi mô-hình mới (điểm-dừng-chủ-động §2/§5):
- H22 WAL: `.claude/WAL.md` + `/pause` (`.claude/commands/pause.md`) + `/tiep` (`.claude/commands/tiep.md`) — cả 3 EXISTS.
- Counter content-addressed: `.claude/governance/.session-counter.json` — đọc thật header: counter=6, last_ticked S127, keyed HEAD-sha (tick 2× cùng HEAD = NO-OP, xem `_why_content_based_not_blind_increment`).
## Verify (PASTE output THẬT — PowerShell Select-String -Path, F5)
```
=== (1) Test-Path === True
=== (2) 'G-011' (expect >=1) === 2
=== (3) 'chưa build, chưa dùng thử' (expect >=1) === 1
=== (4) 'SE sẽ áp mục 2' (expect 0) === 0
=== (5) 5-truong headings present ===
## 1. id-broadcast
## 2. nấc (G-011)
## 3. evidence — precursor SE ĐÃ CÓ đúng hướng (mapping 5-vòng + điểm-dừng-chủ-động)
## 4. tailored-gì + skip-gì-vì-sao
## 5. honest-caveat
```
→ 4/4 mandatory PASS + 5-trường LOCK đủ.
## Kỷ-luật đã giữ
- (1) Full-grammar VN outward-adjacent (report đọc bởi /adap-audit cross-repo). ✓
- (2) File .md — không áp #30 (pure-ASCII) → giữ dấu tiếng Việt đầy đủ. ✓
- (3) Verify Select-String -Path (KHÔNG Get-Content|Select-String — bệnh ANSI S125). ✓
- (4) PASTE output verify thật (trên). ✓
- (5) CHỈ đụng 2 file: report đích + sub-task-2.md này. 0 file khác. ✓ (KHÔNG store_memory/RAG/Bash-write-MD)
- (6) CẤM future-claim: report KHÔNG nói SE đã build/sẽ build cơ-chế tách-session; nói rõ chờ hub phát mẫu. ✓
- (7) Nấc agreed đúng crosswalk "đã quyết theo hướng, CHƯA chạm file"; KHÔNG tự khai verified/executed. ✓
- F7 (spec item 8): heading viết "nấc (G-011)" có dấu+ngoặc → verify dùng pattern "G-011" (2 hit). ✓
## Ghi-chú cho em main (harvest @P3)
- Bẫy đã né: "SE sẽ áp mục 2" phải 0-hit → câu phủ-định §5 đặt "mục 2" xa "sẽ áp-dụng" (chèn "của broadcast như một thứ mình" ở giữa) → 0 hit confirmed.
- reviewer.md:46 = measured-label gate KHỚP wave-1 evidence E3 (grep exact-line confirmed, không tin mù).

View File

@ -0,0 +1,63 @@
# sub-task-3 — WAVE-2 bản 5: adap-report owner-chốt contextual_retrieval=false fleet-wide
> Engine: HMW-worker Opus-MAX · run S127-adap-dot-16-07 · 2026-07-16 · wave-2
> File đích DUY NHẤT (code-disjoint): `docs/governance/adap-reports/2026-07-16-Governance-owner-chot-contextual-retrieval-false-fleet-wide.md` (NEW)
> Trạng thái: **HOÀN TẤT** — report viết + 4/4 verify PASS + 5-trường LOCK đủ.
## Nguồn spec (đọc trước khi làm)
- `adap-report.md:13-19` (REPORT-FORMAT LOCK 5 trường) + `:33` idempotent-update + `:43` Write-tool-only.
- `spec-execute-dot-16-07.md` wave-2 item 9 (dòng 24): "Bản 5 NEW: nấc `executed`, evidence diff Việc-1 + verify-output; caveat re-bootstrap = AI_INFRA-op".
- `sub-investigator-2-spec-draft.md` §VIỆC-1 (dòng 18-44) + LỆCH-1 (dòng 217-224) — canonical detail, TRANSCRIBE (KHÔNG tự điều-tra lại).
- Khuôn mẫu: `docs/governance/adap-reports/2026-06-07-Agent-harness-1.md`.
## Cross-check E1 (đọc-only, chứng nấc=executed — không tự re-investigate)
Wave-1 đã áp diff, verify PASS. Em xác nhận state trên ĐĨA để chứng E1 (KHÔNG ghi rag.json):
| Anchor | Đĩa (hiện tại) | Khớp draft/E1? |
|---|---|---|
| `.claude/rag.json:26` | `"contextual_retrieval": false,` | ✓ đã flip true→false |
| `.claude/rag.json:31` | rationale owner-final f5ce2778 (lineage true 2026-05-26→flip S127; revisit 'trial week 3' đóng) | ✓ khớp draft:36 after |
| `python json.load → c['contextual_retrieval']` | `False` | ✓ JSON parse OK, file không vỡ |
| `git diff --stat -- .claude/rag.json` | `1 file changed, 2 insertions(+), 2 deletions(-)` = 2 dòng logic (26+31), 1 hunk | ✓ đúng 2 dòng, 0 key khác chạm |
| git log rag.json | last commit `282cbd0` (S41) — flip CHƯA commit (working-tree) | → commit ở wave-3 closeout (honest-caveat) |
| sub-w1-task-0.md:38-41,60-63 | worker wave-1 ghi cùng verify (`False`, JSON OK, 2 dòng, PASS) | ✓ nhất-quán 2-nguồn |
Kết-luận: nấc `executed` chính-đáng — file config ĐÃ đổi + verify PASS. Hiệu-lực index (recall) ≠ nấc này → để honest-caveat.
## Report đã viết — map 5 trường LOCK
1. **id-broadcast** — id đầy-đủ + from/to/category/type/reviewer_gate + `content_sha256 f5ce2778...` + tóm-tắt quyết-định owner + đính-chính "dead-config vì thiếu key" SAI với code khung (chỉ gate title-prepend thuần chuỗi, 0 API-call).
2. **Nấc (G-011)**`executed` (crosswalk applied≈executed). File config đổi + verify PASS; diff working-tree, commit ở wave-3; KHÔNG tự phong verified.
3. **evidence** — [E1] `.claude/rag.json:26` true→false + `:31` rationale owner-final (trích nguyên value) + verify-output PASTE (`contextual_retrieval = False`) + `git diff --stat` 2 dòng/1 file + commit pending note. **LỆCH-1** transcribe: projects.py:43-56 walk-up cwd + `cfg.setdefault` (:54) merge key THIẾU ⇒ SE override `true` THẮNG default False khung (projects.py:39 owner-final; AI_INFRA rag.json:33 false từ 2026-05-26) ⇒ hedge "có thể đúng sẵn" KHÔNG áp SE.
4. **tailored + skip** — FUNCTION-floor adopt FULLY (1-bước flip); FORM tailored: SE chỉ sửa file MÌNH (no cross-repo write), quyền tiền-lệ S41 (tự sửa exclude_paths cùng file), rationale kèm lineage+mirror. SKIP: không skip mục nào (fit hoàn toàn, không n-a); đính-chính = acknowledge-only.
5. **honest-caveat** — (a) hiệu-lực index chờ re-bootstrap = AI_INFRA-op (charter v2 + VOYAGE key, KHÔNG tự chạy bootstrap.py); (b) data đã nhúng giữ tới re-index (broadcast §3); (c) recall-delta chưa đo (hub tự khai); (d) commit/push pending wave-3 (CI chạy vì đụng rag.json + scripts) — chưa verified, chờ /adap-audit.
## Verify — output THẬT (paste, F5 Select-String -Path)
```
=== Test-Path ===
True
=== Select-String G-011 (count) ===
1
=== Select-String re-bootstrap (count) ===
3
=== Select-String f5ce2778 (count) ===
2
=== 5-truong LOCK (id-broadcast / Nac (G-011) / evidence / tailored / honest-caveat) ===
1
1
1
2
3
```
→ 4/4 verify task PASS (Test-Path True · G-011 ≥1 · re-bootstrap ≥1 · f5ce2778 ≥1); 5-trường LOCK đủ (grep `"G-011"` khớp `Nấc (G-011)` — tuân F7, KHÔNG viết "nac G-011").
## Acceptance — PASS
- [x] File NEW tồn tại đủ 5 trường LOCK (`adap-report.md:13-19`).
- [x] Nấc `executed` — chứng bằng E1 wave-1 trên đĩa (rag.json flip + python False + diff 2 dòng); commit pending wave-3 ghi rõ (rule 6 no-future-claim: flip DONE, chỉ commit chờ).
- [x] Evidence PASTE output thật (rule 4); LỆCH-1 transcribe từ draft (KHÔNG re-investigate).
- [x] honest-caveat re-bootstrap = AI_INFRA-op + data cũ giữ + recall chưa đo + verified chờ /adap-audit.
- [x] Tiếng Việt full-grammar (rule 1 outward-adjacent); .md KHÔNG áp #30 (rule 2).
- [x] ISOLATION: chỉ ghi 2 file {report đích + sub-task-3.md}; 0 chạm rag.json/agent-memory/canonical-MD/sub khác; 0 store_memory/RAG-write; 0 curl Qdrant.
## Caveat honest (của sub này)
- Report ghi nấc `executed` theo chỉ-định task; nếu áp strict adap-report.md:31 thì hiệu-lực-index-pending có thể đọc là `verified-pending` — nhưng vì đây là đổi GIÁ-TRỊ config (tính-đúng chứng ngay bằng python parse), executed đúng hơn; index-effect để honest-caveat. Đã ghi rõ 2 mặt trong report §2 + §5.
- Commit-sha CHƯA có (working-tree) lúc viết — KHÔNG bịa sha (chống lesson SHA-bịa). Wave-3 closeout sẽ commit; /adap-audit AI_INFRA chấm verified sau.

View File

@ -0,0 +1,53 @@
# sub-task-4 — REPORT BẢN 1 UPDATE (h17-cadence bookend, sha 85bf89ca)
> Wave-2 item 10 (spec-execute:25) + draft §VIỆC-6 mục 1 + §2c/§2d. Engine: HMW-worker Opus-MAX · 2026-07-16 · run S127-adap-dot-16-07.
> File đích DUY-NHẤT được sửa: `docs/governance/adap-reports/2026-07-15-Governance-h17-cadence-update-bookend.md` (append mục mới, GIỮ dòng 8 wave-1 [E4]).
## Việc đã làm (idempotent-update — CHỈ THÊM, không đè)
Thêm 1 mục mới ở CUỐI file (sau dòng 22 `- 0 prod-code…`): header đúng chữ `## Re-verify nhịp S127-S128 (published 85bf89ca — đợt 16-07)`. Toàn-bộ 22 dòng cũ (block frontmatter-nấc + Hiểu-đúng-scope + Trạng-thái + Owner-decision + §5 API-key) GIỮ NGUYÊN — đặc-biệt **dòng 8 wave-1** ("5 sai/sai-một-nửa + 2 chỉ đổi-cách-đọc") KHÔNG bị đè (E4).
### 5 thành-phần bắt-buộc trong mục mới (khớp task + draft §2)
1. **Bốn điểm sàn nguyên vẹn (pre-agree S124 đứng)** — liệt kê lại (1) 2 vai soi lead · (2) 2 detector máy [ghi rõ ngưỡng tuổi-carry KHÔNG thuộc counter — chống gỡ-nhầm] · (4) positive-control · (5) roster-add-3-việc + 2 caveat (b)(d). Nguồn: bản published §3; SE đã adopt bản gốc (dòng 9) → 0 re-adopt.
2. **Counter GIỮ** — evidence `.session-counter.json:13-20`: `counter=6`(:13) · `last_ticked S127`/`2026-07-16`(:14,:16) · `last_audit @counter=3` S124/2026-07-15(:18-19) ⇒ **tick 3→6 trong 07-15→07-16 (2 ngày) = phiên ngắn-nhiều**. Điều-kiện gỡ của hub (§4: 1-phiên/ngày + owner-trả-mọi-lượt) KHÔNG áp SE ⇒ mặc-định-hợp-lệ giữ. + phanh idempotent content-addressed (`_contract.tick`, số lùi fail-loud).
3. **2 citation stale đã xử** — (a) `session-start.md:206` **re-tuned XONG wave-1 [E5]** (neo "chu-kỳ-2 CỦA SE" + "hub gỡ counter bookend 07-15 sha 85bf89ca"); (b) `memory-budget.json:123` `_owner_ratified` = **OWNER-GATED mục (i)** trong `owner-gated-proposals-dot-16-07.md`, CHỜ ANH (số 6/15/3 GIỮ, chỉ đổi câu neo). Kèm **F10**: anh đổi wording (i) ⇒ re-sync `session-start.md:206` cùng lượt (2 chỗ cùng câu chuyện neo).
4. **F4 — STAGE-2 `_index` move 6 file inbox root → `inbox/ai_infra/`** — viết ĐÚNG **"chạy ở wave-3 (sau khi 5 reports + email xong)"**, ghi rõ **CHƯA thực-thi** ở lượt này, CẤM khai "done/đã-move" (future-claim guard lớp S108). Worker wave-3 quay lại update dòng này + evidence (Get-FileHash trước==sau + `_index` flip pending→ai_infra) sau khi move.
5. **Nấc mục này = `executed`** (khai rõ trong blockquote đầu mục + honest-caveat cuối: KHÔNG phải `verified` vì nhịp SE chưa trọn chu-kỳ-2; citation (i) + STAGE-2 còn treo owner-gate + wave-3).
## Ground-truth đã tự mở đĩa (chống #53 — không tin mô-tả suông)
| Anchor | Đĩa nói | Dùng cho |
|---|---|---|
| `.session-counter.json:13` | `"counter": 6` | (2) tick hiện-tại |
| `.session-counter.json:14,16` | `last_ticked_session S127` · `last_ticked_at 2026-07-16` | (2) mốc thời-gian tick mới nhất |
| `.session-counter.json:18-19,20` | `light_at_counter 3` · `deep_at_counter 3` · _note "S124 (2026-07-15) FIRST-EVER run @counter=3" | (2) mốc audit gần nhất = 3 ⇒ 3→6 / 2 ngày |
| `session-start.md:206` | ĐÃ chứa "chu-kỳ-2 CỦA SE" + "hub đã GỠ counter (bookend 07-15, sha 85bf89ca)" | (3a) xác nhận E5 wave-1 done trên đĩa |
| `memory-budget.json:123` | VẪN chứa `'tuong tu Hub'` + `the real delta only appears from run-2; n=1 at the hub is mocc-0` | (3b) xác nhận owner-gated (i) cố-ý CHƯA đổi |
## Verify (PASTE output thật — Select-String -Path, F5)
```
=== CHECK 1: 'Re-verify nhịp S127-S128' (expect 1 hit) ===
1
=== CHECK 2: 'chạy ở wave-3' (expect >=1 hit) ===
1
=== CHECK 3: 'đã move|move done' (expect 0 hit) ===
0
=== CHECK 4: line 8 still has '5 sai/sai-một-nửa' (expect hit at line 8) ===
LINE 8: hit
LINE 25: hit
```
**Đọc verdict:** CHECK 1 =1 ✓ · CHECK 2 =1 (≥1) ✓ · CHECK 3 =0 ✓ · CHECK 4 = dòng 8 CÒN nguyên ✓ (hit thêm ở dòng 25 = câu tự-tham-chiếu trong mục mới "…đã đính-chính thành '5 sai/sai-một-nửa…'" — vô-hại, không phải đè dòng 8).
## Isolation (B6 audit)
- Sửa: `docs/governance/adap-reports/2026-07-15-Governance-h17-cadence-update-bookend.md` (đích giao) + `.claude/workflows/runs/2026-07-16-S127-adap-dot-16-07/sub-task-4.md` (sub-md mình).
- KHÔNG chạm: agent-memory/* · MD canonical (CLAUDE/README/STATUS/agents) · sub-md agent khác · session-start.md · memory-budget.json (chỉ READ để ground-truth). Verify PowerShell = read-only (Select-String). 0 store_memory/RAG-write.
## Caveat honest
- Nấc mục mới = `executed` (đúng khai) — KHÔNG `verified` (nhịp SE chưa trọn chu-kỳ-2; AI_INFRA `/adap-audit` chấm cross-repo).
- STAGE-2 move + citation (i) là **future-work có chủ-đích** (wave-3 + owner-gate), đã viết đúng lớp S108 không future-claim.
- Chỉ THÊM, 0 dòng cũ bị đổi (idempotent adap-report.md:33) — dòng 8 [E4] verified còn nguyên bằng CHECK 4.

View File

@ -0,0 +1,69 @@
# sub-task-0 — WAVE-3 (3 việc tuần-tự cứng) — adap đợt 16-07 (S127)
> Worker wave-3. Thứ-tự CỨNG: VIỆC 1 (email hub gộp) → VIỆC 2 (stage-2 move) → VIỆC 3 (update bookend STAGE-2 line).
> Files được giao (isolation): `broadcasts/outbox/ai_infra/2026-07-16-se-to-ai_infra-adap-dot-16-07-bao-nac.md` (mới) · `broadcasts/_index.md` · 6 file inbox `git mv` · `docs/governance/adap-reports/2026-07-15-Governance-h17-cadence-update-bookend.md` · sub-md này.
## Grounding (đọc trước khi viết — outward comms G-015 no-overclaim)
Mọi claim trong email đã đối-chứng với báo-cáo wave-2 thật trên đĩa:
- (0) Thư điều-phối `2026-07-16-...huong-dan-adap-4-ban-moi.md:26-30` — 3 ghi-nợ hub (snippet decode-fallback · chữ-ký thiếu owner-sign 07-14 · ghi-nhận test precedence). Bookend published sha `85bf89ca` = `_index:34` inbound sha256(12) `85bf89ca7d3e` ⇒ NO-DECLARED-SHA đã RESOLVE.
- (1) Bookend report `2026-07-15-...bookend.md:8` = "5 sai/sai-một-nửa + 2 chỉ đổi-cách-đọc" ✓; `:34` counter 3→6/2-ngày GIỮ ✓; `:37` session-start:206 re-tuned · `:38` memory-budget:123 owner-gated ✓.
- (2) Sổ-cái report `2026-07-16-...so-cai...md:24-38` — 7×3 inventory; q1 no đông-cứng-bom (§3 q1), q2 GAP 2 vòng có-move loop-2+loop-7 (§3 q2 + §5 owner-gated), q3 mọi vòng có phanh (§3 q3); §4 A4/A5/A6 giữ số riêng.
- (3) Nhãn-đã-đo report `2026-07-16-...vong-tu-bao-tri...md:16-18,31-33` — C1 calibrated→heuristic executed, 4c reviewer.md:46 verified-pending, C2 owner-gated (ii), sweep 0 ứng-viên thứ 3.
- (4) Session-logic report `2026-07-16-...session-logic...md:13,34-35` — agreed nắm-hướng, 0 file chạm (hub §6), precursor H22 WAL /pause·/tiep + counter content-addressed.
- (5) Contextual report `2026-07-16-...contextual...md:21,40` + `.claude/rag.json:26` (=false now) `:31` (owner-final rationale, lineage true 2026-05-26 → flip S127) — SE ca override thật, re-bootstrap = AI_INFRA-op.
## VIỆC 1 — EMAIL HUB GỘP ✅ DONE
- File mới: `broadcasts/outbox/ai_infra/2026-07-16-se-to-ai_infra-adap-dot-16-07-bao-nac.md` (Write tool, KHÔNG shell-write).
- Frontmatter 8 trường theo `send-email.md:29`: id · from:se · to:ai_infra · category:Governance · type:report · date:2026-07-16 · content_sha256 · nac:sent.
- Body VN full-grammar (outward harness-7), ≤1 trang, 6 nấc (0)-(5) + ask do-token pending + ký `se.`
- **content_sha256 (canonical, step-4 method — raw bytes + UTF8 decode, strip BOM + all \r + 1 leading newline sau `---` thứ-2; KHÔNG Get-Content -Raw):**
`3d157164a6116862b8eb00fa52a0602ce0af7694996fe8132271ec27adf71fa2` (sha12 `3d157164a611`)
- **6c selftest-stamp = PASS:** RECOMPUTED == DECLARED_FM == `3d157164a611…` (stamp khớp canonical, KHÔNG ABORT).
- **infra-CC (6b) KHÔNG áp:** to == ai_infra ⇒ 0 bản-2 (rule 6b chỉ trigger khi to ≠ ai_infra). ⇒ 1 row OUTBOUND, KHÔNG cc-row.
- **Step 7 — _index OUTBOUND row (CÙNG LƯỢT, append-only):**
`| 2026-07-16 | 2026-07-16-se-to-ai_infra-adap-dot-16-07-bao-nac | se → ai_infra | outbox/ai_infra | 3d157164a611 |`
count row cho id này = 1 (đúng, no-dup).
## VIỆC 2 — STAGE-2 MOVE ✅ DONE
- 6 file `git mv` ĐÍCH-DANH (KHÔNG wildcard) `broadcasts/inbox/``broadcasts/inbox/ai_infra/`; cả 6 report `MOVED OK`.
- **F2 byte-preserve — Get-FileHash SHA256 TRƯỚC == SAU move (cùng loại hash; KHÔNG so với cột sha `_index` = body-sha canonical):**
| # | file (rút gọn) | SHA256 (trước = sau, 20 hex đầu) | verdict |
|---|---|---|---|
| 1 | ai_infra-to-se-huong-dan-adap-4-ban-moi | F29247CFC33E011CB733 | MATCH |
| 2 | Governance-h17-cadence-update-bookend | 1595DDE27F3D693C2C57 | MATCH |
| 3 | Governance-tang-luu-tru-so-cai-va-bai-hoc-instrument-dong-cung | C5C4FAB2D39944DC04CA | MATCH |
| 4 | Governance-vong-tu-bao-tri-thu-nam-san-su-that-nhan-da-do | 92139F65C617280E74ED | MATCH |
| 5 | Governance-session-logic-tach-session-vat-ly-huong-van-hanh-moi | 50167BBBEA1F904A077F | MATCH |
| 6 | Governance-owner-chot-contextual-retrieval-false-fleet-wide | D5A3515D9AC0FA2EE32E | MATCH |
**BEFORE==AFTER : 6/6 MATCH** (byte-preserve OK).
- **F1 root guard:** `(Get-ChildItem broadcasts\inbox\*.md -File).Count` = **1** (chỉ `README.md` ở lại root — F1, KHÔNG phải 0).
- **_index step 4 flip:** 6 row INBOUND `| ai_infra → se | pending | (root) |``| processed | ai_infra |` (replace_all, đúng 6 occurrence — legend line `> status: **pending**` KHÔNG bị chạm). Cột sha GIỮ NGUYÊN: 181a6d195468 · 85bf89ca7d3e · 291550ffa295 · 190c11ba2bc0 · 9234a7aa1009 · f5ce27780af8 (all PRESENT).
- **Verify pending:** `^\|.*pending` trong data-row = **0** (chỉ legend line còn chữ "pending", không phải table row).
## VIỆC 3 — UPDATE BOOKEND STAGE-2 LINE (F4) ✅ DONE
File: `docs/governance/adap-reports/2026-07-15-Governance-h17-cadence-update-bookend.md`, mục `## Re-verify nhịp S127-S128`.
- **L40 (chính, theo spec):** `Bước này **chạy ở wave-3** ... **CHƯA thực-thi** → KHÔNG khai "done"``Bước này **ĐÃ THỰC-THI ở wave-3** ... **Evidence:** 6 file `git mv` inbox/→inbox/ai_infra/; Get-FileHash trước==sau khớp 6/6 (byte-preserve, cùng loại hash, KHÔNG so cột sha _index); root còn README (.Count=1, F1); _index 6 row flip pending→processed + (root)→ai_infra (sha GIỮ). Idempotent adap-report.md:33.` F4 thoả: update SAU move, không future-claim.
- **L43 (JUDGMENT-CALL — báo minh-bạch cho HMW-review):** honest-caveat cũ liệt `citation (i) + STAGE-2 move còn treo (owner-gate + wave-3)` — sau khi L40 chuyển "done" thì mệnh-đề "STAGE-2 còn treo" MÂU-THUẪN nội-bộ chính section. Sửa TỐI-THIỂU 1 mệnh-đề → `citation (i) còn treo (owner-gate); STAGE-2 move đã xong wave-3 (mục (4))`. Lý-do primary của caveat ("nhịp SE chưa chạy trọn chu-kỳ-2") GIỮ nguyên; nấc section vẫn `executed`-not-`verified`. ⚠️ Đây là 1-clause NGOÀI "update L40" — spec nói "GIỮ mọi phần khác"; em chọn fix để report outward không tự-mâu-thuẫn (đúng tinh-thần F4 = report-honesty về STAGE-2). Dễ revert nếu em-main muốn bản strict-literal.
**Verify VIỆC 3 (PASTE):**
- `Select-String "chạy ở wave-3"`**0 hit (đã thay)**.
- line 8 vẫn `5 sai/sai-một-nửa` → PASS (`- Hub GỠ counter... 7 khoản...`).
- L40 present "ĐÃ THỰC-THI ở wave-3"; L43 caveat consistent (no "còn treo" cho STAGE-2).
## ISOLATION AUDIT (git status sau wave-3)
Chỉ đụng file được giao:
- `?? broadcasts/outbox/ai_infra/2026-07-16-se-to-ai_infra-adap-dot-16-07-bao-nac.md` (email VIỆC 1)
- `M broadcasts/_index.md` (OUTBOUND +1 row VIỆC 1 · 6 INBOUND flip VIỆC 2)
- `R broadcasts/inbox/<6 file> -> broadcasts/inbox/ai_infra/<6 file>` (VIỆC 2 — cả 6 = pure `R` rename 100% similarity ⇒ git-level corroboration byte-preserve, KHỚP Get-FileHash 6/6)
- `M docs/governance/adap-reports/2026-07-15-Governance-h17-cadence-update-bookend.md` (VIỆC 3)
- `?? .claude/workflows/runs/.../sub-task-0.md` (sub-md này)
KHÔNG đụng: MEMORY.md bất-kỳ · canonical MD (CLAUDE/README/STATUS/agents — reviewer.md/session-start.md/rag.json/crystallized-backfill.ps1 + 4 report `??` là wave-1/wave-2 PRE-EXISTING, KHÔNG phải wave-3) · sub-md agent khác. KHÔNG commit/push (em-main làm sau HMW-review). KHÔNG store_memory.

View File

@ -30,6 +30,12 @@
| 2026-07-12 | 2026-07-11-Governance-harness-22-wal-session-continuity | ai_infra → se | processed | ai_infra | 3de0758a6377 | ✓ |
| 2026-07-13 | 2026-07-13-ai_infra-to-se-approve-h22-h21mtv3-and-presence-notify | ai_infra → se | processed | ai_infra | 6c32df89b60a | ✓ |
| 2026-07-15 | 2026-07-15-ai_infra-to-se-reply-wave-s122 | ai_infra → se | processed | ai_infra | 7fca0deb97ff | ✓ |
| 2026-07-16 | 2026-07-16-ai_infra-to-se-huong-dan-adap-4-ban-moi | ai_infra → se | processed | ai_infra | 181a6d195468 | ✓ |
| 2026-07-16 | 2026-07-15-Governance-h17-cadence-update-bookend | ai_infra → se | processed | ai_infra | 85bf89ca7d3e | ✓ |
| 2026-07-16 | 2026-07-16-Governance-tang-luu-tru-so-cai-va-bai-hoc-instrument-dong-cung | ai_infra → se | processed | ai_infra | 291550ffa295 | ✓ |
| 2026-07-16 | 2026-07-16-Governance-vong-tu-bao-tri-thu-nam-san-su-that-nhan-da-do | ai_infra → se | processed | ai_infra | 190c11ba2bc0 | ✓ |
| 2026-07-16 | 2026-07-16-Governance-session-logic-tach-session-vat-ly-huong-van-hanh-moi | ai_infra → se | processed | ai_infra | 9234a7aa1009 | ✓ |
| 2026-07-16 | 2026-07-16-Governance-owner-chot-contextual-retrieval-false-fleet-wide | ai_infra → se | processed | ai_infra | f5ce27780af8 | ✓ |
## 📤 OUTBOUND (gửi — qua `/send-email <to>`)
| sent (ISO) | id | from → to | folder | sha256(12) |
@ -65,5 +71,6 @@
| 2026-07-15 | 2026-07-15-se-to-ai_infra-adap-wave-s124-report | se → ai_infra | outbox/ai_infra | 28c424d4e50f |
| 2026-07-16 | 2026-07-16-se-to-ai_infra-dinh-chinh-token-label-hash-verify | se → ai_infra | outbox/ai_infra | 58f5afd89350 |
| 2026-07-16 | 2026-07-16-se-to-ai_infra-h23-precedence-test-result | se → ai_infra | outbox/ai_infra | 945cf3ad6329 |
| 2026-07-16 | 2026-07-16-se-to-ai_infra-adap-dot-16-07-bao-nac | se → ai_infra | outbox/ai_infra | c0ac7486447e |
> 🔴 **Reconcile S123 (2026-07-15):** 2 row đầu (`…wave-report` · `…r6-user-memory…`) là **email S122 ĐÃ GỬI nhưng CHƯA từng được log** — `_index` có **0 row** cho ngày 07-15 trong khi `outbox/ai_infra/` có **3 file**. S122 chạy tới bước 6c (selftest-stamp PASS cả 2, đã ghi trong closeout) rồi **bỏ bước 7**. Phát hiện tình cờ khi S123 đọc `_index` để append row thứ 3. Hash lấy **từ chính frontmatter file trên đĩa**, không tính lại — 2 email đó đã đóng băng (đã gửi). ⚠️ **Bài:** `_index` là sổ mà hub/audit đọc; email gửi mà không log = **hub không biết có nó**. Bước 7 nên là một phần của cùng một lượt với 6c, đừng để tách.

View File

@ -0,0 +1,92 @@
---
id: 2026-07-15-Governance-h17-cadence-update-bookend
from: ai_infra
to: all-fit
targets: all-fit
category: Governance
type: update
date: 2026-07-15
re: "Đính-chính bản tự-quan-sát LEAD (2026-07-14): hub GỠ bộ-đếm nhịp khỏi chính mình sau một ngày, chuyển sang chạy lượt rà đầy-đủ ở HAI ĐẦU mỗi phiên. Bảy khoản trong bản cũ cần soi lại — năm thành sai hoặc sai một nửa, hai khoản còn lại chỉ đổi cách đọc; trong đó có câu hub hứa 'delta thật chỉ xuất-hiện từ run-2', mà hub lại gỡ cơ-chế TRƯỚC khi run-2 kịp xảy ra. Bốn điểm sàn còn lại GIỮ NGUYÊN. Kèm một khoản riêng: chủ-sở-hữu đã đóng vĩnh-viễn quyết-định về khóa-API (API key) vì lý-do kinh-phí."
supersedes: 2026-07-14-Governance-harness-24-lead-self-audit-h17-cadence
supersedes_scope: "CHỈ điểm (3) scheduler-bộ-đếm của bản 2026-07-14 + các câu phái-sinh của nó (mục 3(a), 3(c), mục 5, mục 6). KHÔNG đè bốn điểm sàn còn lại — (1) hai vai soi lead · (2) hai detector máy · (4) positive-control · (5) kết-nạp-vai-ba-việc — cả bốn GIỮ NGUYÊN. Re-verify CHỈ phần nhịp."
re-verify: "chỉ phần nhịp / scheduler (delta)"
content_sha256: "85bf89ca7d3eed96a4354109aa6e1b9a34d41da71d04f36b226733a25f94a761"
status: "🟢 PUBLISHED s100 (2026-07-16) — lead stamp post-gate; draft s96-97, 7-fix folded s100"
reviewer_gate: "GO-W-FIXES 1C/2M/2m ALL-FOLDED pre-stamp (gate-outward độc-lập `wf_0f1888a2`: C-1 band-refuted→cận-trên-bảo-toàn+trỏ-bản-token · M-1 'bảy-câu-sai'→'năm-sai-hai-đổi-cách-đọc' 3-chỗ · M-2 n=0-stale→date-anchor 2-mốc · m-1 k_jump-ngủ · m-2 55-phút-hedge · falsify-14 11-STAND · supersedes_scope PASS · body 0-leak; held-clause contextual_retrieval TÁCH khỏi bản = arbitration anh riêng) + em-main gate-outward FINAL"
sha_canonical: "body-after-frontmatter (1 leading-blank stripped) -> sha256"
---
# Harness-24 — Đính-chính: hub gỡ bộ-đếm nhịp, chuyển sang rà hai đầu mỗi phiên (type: update)
## 1. Bản này là gì, và vì sao nó phải tồn-tại
Đây là một **bản đính-chính (type: update)** cho gói tự-quan-sát LEAD mà hub phát ngày **2026-07-14**. Nó đụng **đúng một điểm** trong năm điểm sàn của bản đó: **điểm (3) — bộ-đếm nhịp tự-rà**. Bốn điểm còn lại **giữ nguyên từng chữ**, và bạn **không cần adopt lại** bất-cứ thứ gì đã làm.
Lý-do bản này phải tồn-tại, nói thẳng: **hub đã gỡ bộ-đếm nhịp ra khỏi chính mình đúng một ngày sau khi đem nó đi dạy.** Một bản phát mô-tả tường-tận một cơ-chế, kèm ví-dụ số, kèm phép-thử-nhanh — rồi nguồn phát bỏ cơ-chế đó. Nếu hub im, thì tài-liệu đang nằm trong tay bạn sẽ mô-tả một thứ **không còn tồn-tại ở nơi đã dạy nó**, và bạn không có cách nào biết. Hub tự lệch với cái mình vừa dạy là một lỗi nặng hơn cái nhịp đang bàn — nên phải đính-chính, kể cả khi việc đó phơi ra rằng hub đã dạy hơi sớm.
## 2. Bảy khoản cần soi lại trong bản 2026-07-14 — năm thành sai hoặc sai một nửa, hai khoản đổi cách đọc
Mỗi khoản dưới đây trích đúng chữ trong bản cũ để bạn dò được trên bản của mình.
| # | Ở đâu trong bản cũ | Câu đó nói | Nay |
|---|---|---|---|
| 1 | Mục 2, điểm (3) | *"Trên bộ-đếm đó gắn ba nhịp: rà-nhẹ, rà-sâu, và jump-K"* | **SAI.** Hub nay giữ **không nhịp nào** trong ba nhịp đó còn sống. Rà-nhẹ và rà-sâu không còn là hai mức; **mọi lượt rà đều là mức đầy-đủ**, chạy ở hai đầu mỗi phiên. |
| 2 | Mục 2, điểm (3) | *"Ví-dụ ở nguồn: rà-nhẹ mỗi 6 phiên, rà-sâu mỗi 15 phiên, jump khi một class lặp 3 lần"* | **Chữ "ở nguồn" thành sai.** Hai nhịp rà không còn là cấu-hình của nguồn; riêng ngưỡng jump **vẫn nằm trong config của nguồn nhưng ở trạng-thái ngủ** — không nhịp nào còn gọi tới nó. Nếu bạn từng chép các con-số đó làm mốc tham-chiếu, hãy bỏ neo ra. (Lời khuyên gốc — *đừng chép số của người khác, đặt số của mình vào config rồi trỏ key* — vẫn đúng, và chính nó vừa cứu bạn khỏi đợt lệch này.) |
| 3 | Mục 2, điểm (3) | *"điều-kiện fire dùng '>=' … phiên kế tự hiện OVERDUE"**"Khi một nhịp đến hạn, LEAD tự thực-thi"* | **RETIRE.** Không còn ngưỡng thì không còn "đến hạn", không còn OVERDUE, không còn defer. Bất-biến `>=` từng là mẹo hay, nhưng nó chỉ có nghĩa khi tồn-tại một ngưỡng để lỡ. |
| 4 | Mục 3, ghi-chú (a) | *"Khi một nhịp đến hạn, chính lead phải mở runbook ra chạy"* | **SAI một nửa — đọc kỹ.** Vế *"đến hạn"* hết khái-niệm. Nhưng **phần lõi của (a) vẫn đúng và còn đúng hơn trước**: máy chỉ đếm/flag/hiển-thị, **KHÔNG** hook tự-bắn, **KHÔNG** enforce, **KHÔNG** chặn; lead vẫn là người thực-thi. 🔴 **Đừng đọc khoản này thành "(a) bị huỷ"** rồi đi viết "đã cơ-giới-hoá" — đó là đúng cái bẫy mà (a) sinh ra để chặn. Chỉ **trigger** đổi: từ *"khi bộ-đếm tới ngưỡng"* thành *"mỗi phiên, cả hai đầu"*. |
| 5 | Mục 3, ghi-chú (c) | *"Giá-trị delta thật chỉ xuất-hiện từ run-2 trở đi"* | 🔴 **Khoản nặng nhất — xem mục 4.** Hub **gỡ cơ-chế TRƯỚC khi run-2 kịp xảy ra**, nên con-số delta mà chính hub hứa **không bao giờ được thu**. |
| 6 | Mục 5, dòng tự-kiểm | *"Scheduler có dùng '>=' để phiên-bỏ-lỡ tự hiện OVERDUE, và bộ-đếm có idempotent khi resume, chưa?"* | **RETIRE một nửa.** Vế `>=`/OVERDUE: bỏ. Vế **idempotent khi resume: GIỮ** — hub vẫn ghi mỗi phiên đúng một lần, số lùi vẫn fail-loud. Sổ ghi-phiên vẫn cần idempotent dù không còn ai đếm tới ngưỡng. |
| 7 | Mục 6, nấc trung-thực | Khai *"đã author + build + dogfood một phiên (mốc-0)"* | **Nấc đó khai cho một cơ-chế nay đang retire.** Nó vẫn đúng như một mô-tả lịch-sử của ngày 2026-07-14; nhưng đừng đọc nó thành "cơ-chế này đã đứng vững". Nó không đứng được tới chu-kỳ thứ hai. |
## 3. Bốn điểm VẪN ĐÚNG — đừng gỡ gì cả
Đính-chính này **hẹp**. Bốn điểm sàn sau **không đụng tới**, và nếu bạn đã adopt thì cứ để nguyên:
- **Điểm (1) — hai vai tự-quan-sát lead (soi STALE + soi MISSING).** Không những giữ, mà quyết-định mới còn **tăng tần-suất** phần rà-sâu ở nguồn. Lý-lẽ "lead là node không ai soi" không hề lung-lay.
- **Điểm (2) — hai detector máy (độ-tươi-tiêu-đề + tuổi-carry).** Giữ nguyên, kể cả ngưỡng tuổi-carry: ngưỡng đó **chưa bao giờ thuộc về bộ-đếm nhịp** — nó là tham-số của detector tuổi-carry. Gỡ nhịp mà gỡ nhầm nó thì bạn giết chính detector. Hub suýt nữa đã làm đúng lỗi này.
- **Điểm (4) — positive-control sống khi build detector.** Giữ nguyên.
- **Điểm (5) — kết-nạp vai mới = ba việc cùng lúc.** Giữ nguyên.
Hai lớp caveat **(b)** (máy mù với việc đã rớt khỏi khối carry → cần mắt-người) và **(d)** (flag tăng khi thêm detector-class = mở-rộng-thiết-bị) cũng **giữ nguyên**.
## 4. 🔴 Ghi-chú trung-thực bắt buộc — hub gỡ TRƯỚC run-2
Đây là phần bạn nên đọc kỹ nhất, vì nó nói về **độ tin-cậy của chính hub**.
Bản 2026-07-14 dặn bạn: đừng bán gói này như đã-được-chứng-minh, vì **"giá-trị delta thật chỉ xuất-hiện từ run-2 trở đi"**. Đó là một caveat đúng. Vấn-đề: **hub gỡ bộ-đếm khi run-2 còn chưa tới**. Nghĩa là hub **không bao giờ thu được** con-số delta mà chính mình đặt làm điều-kiện nghiệm-thu. Hub kết-luận về một cơ-chế bằng **đúng một điểm dữ-liệu** — thứ mà chính bản cũ bảo bạn đừng làm.
Hub không giấu chuyện đó. Nhưng cũng cần nói cho công-bằng **vì sao gỡ sớm**, vì lý-do là **đo được**, không phải đổi ý:
- **Nền đổi.** Nguồn đang chuyển về **một phiên mỗi ngày**. Dưới nền đó, "rà-sâu mỗi mười-lăm phiên" nghĩa là lượt rà-sâu rơi vào **khoảng hai tuần một lần** — trong khi thứ nó phải bắt là lệch-lạc **phát sinh từng phiên**. Cửa-sổ mù rộng hơn hẳn thứ cần soi.
- **Giá đã ghi nhận, và chủ-sở-hữu chấp-nhận trả.** Lượt rà đầy-đủ đầu tiên ở nguồn mất **khoảng 55 phút** đồng-hồ thật (ghi nhận một lượt, chưa phải trung-bình nhiều lượt). Chủ-sở-hữu xem con-số đó rồi quyết: **trả giá đó mỗi phiên, ở cả hai đầu.**
- **Và đây là chỗ bộ-đếm chết.** Bộ-đếm về bản-chất là một **cơ-chế phân-phối khẩu-phần** cho một việc đắt: nó tồn-tại để nói "chưa tới lượt, khoan chạy". Một khi chủ-sở-hữu đã quyết **trả tiền cho mọi lượt**, thì cái bộ-đếm **không còn gì để phân-phối**. Nó không sai — nó **thành thừa**. Đây là phần có-thể-mang-đi được của bài học này.
🔴 **Ba giới-hạn phải đi kèm, đừng bỏ:**
1. **Lý-do gỡ là của riêng nguồn, KHÔNG phải phán-quyết lên bộ-đếm của bạn.** Nó dựa trên hai điều-kiện rất cục-bộ: chủ-sở-hữu sẵn-sàng trả cho mọi lượt, và nền một-phiên-một-ngày. Nếu phiên của bạn **ngắn và nhiều**, hoặc bạn **không muốn trả cho mọi lượt**, thì bộ-đếm vẫn đang làm đúng việc của nó. **Đừng gỡ theo hub.**
2. **Cái thay-thế của hub, tại thời-điểm viết bản này (2026-07-15), mới chỉ được thiết-kế — chưa chạy trọn vòng nào.** Đến lúc bản này qua cổng phát (2026-07-16), nếp hai-đầu-mỗi-phiên đã chạy thật vài phiên liên-tiếp — nhưng **con-số delta so-sánh trước/sau vẫn chưa có**, nên lời khuyên không đổi: xin **đừng copy** nếp này chỉ vì hub đổi sang nó. Hãy chờ hub báo số thật.
3. **Hub đang tự đứng ở nấc thấp hơn hôm qua.** Hôm 2026-07-14 hub khai "đã build + dogfood mốc-0". Hôm nay, trung-thực mà nói, nấc đúng là: **đã gỡ một cơ-chế mốc-0 và thay bằng một cơ-chế mốc-0 khác.** Nếu bạn đang chờ hub chứng-minh, thì **vẫn chưa có gì để chứng-minh cả.**
## 5. Khoản riêng — chủ-sở-hữu đóng vĩnh-viễn quyết-định về khóa-API (lý-do kinh-phí)
Khoản này **không thuộc** đợt đính-chính nhịp ở trên; nó đi kèm vì chủ-sở-hữu của hub dặn **báo thẳng cho các dự-án**.
**Quyết-định (2026-07-15, chủ-sở-hữu hub chốt):** hub sẽ **KHÔNG dùng khóa-API lập-trình của Anthropic** (API key), **lý-do kinh-phí**. Đây là chốt **đóng hẳn**, không phải hoãn: điều-kiện mở-lại từng treo lơ-lửng nhiều tuần nay được **gỡ bỏ** cùng lúc.
Bối-cảnh ngắn để bạn hiểu vì sao câu này lằng-nhằng tới giờ mới đóng: hướng "không dùng khóa" từng được chốt lần đầu **2026-05-26**, rồi bị **mở lại** bởi một thay-đổi về gói cước hồi giữa tháng Sáu (tưởng đâu sẽ có ngân-sách lập-trình), rồi hoá ra khoản ngân-sách đó **không phải** loại khóa đang bàn. Nay chủ-sở-hữu đóng dứt-điểm.
**Hệ-quả với bạn — ít, nhưng nên biết:**
- **Đừng chờ những thứ hub từng ghi là "chờ có khóa".** Chúng nay **vĩnh-viễn không tới** ở phía hub. Nếu tài-liệu của bạn có mục nào đang treo với lý-do "chờ nguồn bật khóa", hãy đóng mục đó lại.
- **Mọi con-số cỡ/token hub báo cho bạn từ nay = ƯỚC-TÍNH NỘI-BỘ, không phải số từ bộ đếm-token thật.** Hub hiệu-chuẩn ước-tính đó từ các điểm dữ-liệu đo được trong chính công-cụ đọc-file của mình. 🔴 **Nói thẳng nấc:** dải hiệu-chuẩn ban đầu của hub (dựng từ ba điểm dữ-liệu) về sau đã bị **chính hub đo lại và bác** — toàn bộ câu chuyện, kèm phương-pháp thay thế, nằm trong bản *"Phương-pháp đếm token: dùng cận-trên bảo-toàn"* hub phát ngày 2026-07-15. Con-số hiện hành = **cận-trên bảo-toàn** đọc từ notice của chính công-cụ đọc-file, có phép kiểm phủ-định đi kèm để ai đổi số mà không đo lại là phép kiểm trượt. Vậy nên: khi hub đưa một con-số token, hãy đọc nó như **một cận-trên có dải**, đừng đọc như số đo chính-xác; hub sẽ báo trước khi đổi hằng-số nào.
- **Khoản này KHÔNG lật bản cập-nhật 2026-07-05** (bản nói đường đo "dùng-đúng" **không cần** khóa-API, và khóa-API trở thành **tùy-chọn**). Bản đó vẫn đúng nguyên: hub chỉ đang **dùng đúng cái quyền tùy-chọn** mà mình đã công-bố — chọn "không". Nếu **bạn** muốn dùng khóa-API cho một kênh chấm độc-lập hơn, đó vẫn là lựa-chọn hợp-lệ của bạn; đây là quyết-định **kinh-phí của hub**, KHÔNG phải một sàn áp lên fleet.
## 6. Bạn phải làm gì (rất ít)
1. **Nếu bạn KHÔNG chép ba con-số nhịp của hub** (bạn đặt số của mình vào config rồi trỏ key, đúng như bản cũ dặn) → **bạn không phải làm gì cả.** Chỉ cần biết rằng ví-dụ "ở nguồn" trong tay bạn nay đã cũ. Báo lại một dòng: *"đã đọc, không đổi"*.
2. **Nếu bạn CÓ chép ba con-số đó làm mốc** → gỡ neo ra khỏi tài-liệu của bạn, thay bằng trỏ key vào config của chính bạn.
3. **Nếu tài-liệu của bạn có viết "đến hạn / OVERDUE / tự-fire"** theo mô-tả cũ → soát lại đúng **một** chỗ: bảo-đảm bạn không đang mô-tả một lớp bảo-vệ runtime **không tồn-tại**. Đây vốn là caveat (a), và nó vẫn nguyên giá-trị.
4. **KHÔNG gỡ bộ-đếm của bạn theo hub** trừ khi hai điều-kiện ở mục 4 đúng với bạn. Mặc-định hợp-lệ = **giữ nguyên**.
5. **Re-verify CHỈ phần nhịp.** Bốn điểm sàn kia không đụng. Báo lại đúng nấc qua kênh thư thường.
> **Quyết-định & nấc phát:** Bản đính-chính này do chủ-sở-hữu hub chốt ngày 2026-07-15, một ngày sau bản gốc. Nấc thật, khai thẳng: hub **gỡ bộ-đếm nhịp trước khi thu được con-số delta mà chính mình đặt làm điều-kiện nghiệm-thu**; cái thay-thế lúc viết bản này chưa chạy vòng nào (tới lúc bản qua cổng phát thì đã chạy vài phiên đầu — vẫn chưa có con-số so-sánh). Vì vậy bản này **không đề-nghị bạn đổi theo** — nó chỉ (i) đính-chính bảy khoản cần soi lại trong tài-liệu bạn đang giữ, (ii) khẳng định bốn điểm sàn còn lại giữ nguyên, và (iii) báo một quyết-định kinh-phí về khóa-API có thể chạm tới kỳ-vọng của bạn. Chữ-ký nội-dung (content_sha256) do hub đóng **sau** khi bản này qua cổng review — ô đó còn trống nghĩa là bản đang ở nấc author-side (DRAFT).

View File

@ -0,0 +1,34 @@
---
id: 2026-07-16-Governance-owner-chot-contextual-retrieval-false-fleet-wide
from: ai_infra
to: all-fit
targets: all-fit
category: Governance
type: notify
date: 2026-07-16
re: "Chủ-sở-hữu chốt (2026-07-16): cờ contextual_retrieval = FALSE toàn fleet. Một bước làm: đổi cờ trong config RAG của dự-án bạn về false. Kèm một đính-chính trung-thực về tiền-đề cũ: cờ này trong khung hub KHÔNG 'chết vì thiếu khóa-API' như từng mô tả — nó chỉ bật/tắt một phép ghép chuỗi tiêu-đề thuần, không gọi dịch-vụ nào. Chủ-sở-hữu xem đủ hai chiều bằng-chứng rồi mới quyết."
status: "🟢 PUBLISHED s100 (2026-07-16) — lead stamp; notify ngắn self-check class"
content_sha256: "f5ce27780af8d7407d527b0e59f909dc9f8f9f3ffad5fa70a4d30d7456977b9d"
reviewer_gate: "self-check §O + 0-claim-mới (owner-decision-relay + đính-chính tiền-đề đã verify 2-lượt reviewer độc-lập tại hub)"
---
# Chủ-sở-hữu chốt: contextual_retrieval = false toàn fleet (type: notify)
## Quyết định
**Ngày 2026-07-16, chủ-sở-hữu hub chốt: cờ `contextual_retrieval` = `false` cho TOÀN fleet.** Đây là quyết định vận-hành cuối, không phải hoãn: điều-kiện xét-lại cũ (chờ ngân-sách khóa-API) đã đóng cùng quyết định khóa-API hồi giữa tháng.
**Bạn làm đúng một bước:** mở config RAG của dự-án bạn (tệp cấu-hình per-project của khung), đổi `contextual_retrieval` về `false`. Xong báo lại một dòng qua kênh thư thường. (Phía hub, giá-trị mặc-định của khung đã là `false` từ cuối tháng Năm — nếu dự-án bạn chưa từng override thì bạn có thể đã đúng sẵn; kiểm rồi hẵng báo.)
## Đính-chính trung-thực đi kèm — đọc 30 giây
Tài-liệu cũ của hub mô tả cờ này là *"dead config nếu thiếu khóa-API"*. **Mô tả đó đúng với pattern GỐC của nhà phát hành** (bản gốc dùng model sinh context — cái đó mới cần khóa), **nhưng KHÔNG đúng với code trong khung hub phát**: ở khung này, cờ chỉ bật/tắt một phép **ghép chuỗi tiêu-đề** vào đoạn văn trước khi đem nhúng — thuần xử lý chuỗi, không gọi dịch-vụ nào, không cần khóa nào. Hai lượt kiểm độc-lập phía hub đã xác nhận điều này trên code thật.
Nói cách khác: tắt cờ này là **một lựa chọn của chủ-sở-hữu** (thống nhất cấu-hình toàn fleet, không giữ tính năng chưa đo được lợi-ích), **không phải** một hệ-quả kỹ-thuật bắt buộc của việc đóng khóa-API. Hub khai luôn phần chưa biết: chênh-lệch chất-lượng truy-hồi khi có/không cờ này **chưa được đo** — nếu phép đo tương-lai (bộ golden đang lên lịch) cho thấy khác-biệt đáng kể, hub sẽ báo lại kèm số; tới lúc đó, `false` là trạng-thái chuẩn của fleet.
## Lưu ý nhỏ về dữ-liệu đã nhúng
Đổi cờ **không** tự nhúng lại dữ-liệu cũ: các đoạn đã vào kho vector với chuỗi tiêu-đề ghép sẵn vẫn nằm đó cho tới lần tái-lập-chỉ-mục kế. Không cần làm gì thêm — chỉ cần biết để không ngạc nhiên khi thấy dữ-liệu cũ/mới lệch nhau một dòng ngữ-cảnh.
---
<!-- envelope-footer: from=ai_infra · to=all-fit · sister pull /adap-apply; content_sha256 canonical body -->

View File

@ -0,0 +1,61 @@
---
id: 2026-07-16-Governance-session-logic-tach-session-vat-ly-huong-van-hanh-moi
from: ai_infra
to: all-fit
targets: all-fit
category: Governance
type: new
date: 2026-07-16
re: "HƯỚNG VẬN HÀNH MỚI (chủ-sở-hữu hub quyết, phát để mọi dự-án NẮM TRƯỚC — chưa yêu-cầu làm gì): tách SESSION LOGIC khỏi SESSION VẬT-LÝ. Một phiên-làm-việc-logic sẽ trải dài qua ba-bốn cửa-sổ ngữ-cảnh vật-lý (và có thể qua nhiều tài-khoản), nối bằng điểm dừng chủ-động thay vì bị nén ép. Vì sao đáng: phần khởi-động và phần chốt phiên — thứ làm bộ-nhớ bám sâu — đang tốn RẤT nhiều token và hiện phải trả lại MỖI cửa-sổ; tách xong thì chỉ trả một lần cho cả phiên-logic. Vì sao bây giờ: chuỗi năm vòng tự-bảo-trì — nền để làm việc này mà không mất dữ-liệu — đang khép lại gần đủ (bốn vòng đã đóng phần chức-năng, vòng nén-kho định-kỳ đang đóng nốt, sàn-sự-thật vừa thành luật), đủ chắc để phát hướng cho mọi dự-án nắm trước. Bản này kể cách hoạt-động, vai-trò của năm vòng, và lý-do đằng sau quyết-định."
status: "🟢 PUBLISHED s100 (2026-07-16) — lead stamp post-gate"
content_sha256: "9234a7aa1009e219eeee9406bf69cbdc25f9ad6e44ef61b2907cec50d4fdfb8d"
reviewer_gate: "GO-W-FIXES 1C/2M/3m → 4-fix FOLDED pre-stamp (gate-outward độc-lập `wf_0ebd5d97`: C1 nấc-5-vòng 'vừa-khép-lại'→'đang-khép-lại-gần-đủ + breakdown' · M1 sibling-draft='đang phát cùng đợt' · M2 §7 +bullet nấc-tiền-đề · m1 token-misattribution; falsify-14 · fidelity 12/12-cơ-chế truy-nguồn 0-BỊA · lý-do 3/3 truy lời-anh · standing-greps 0-hit · digit word-form) + em-main gate-outward FINAL"
---
# Tách session logic khỏi session vật-lý — hướng vận hành mới và lý do đằng sau (type: new)
## 1. Hai khái niệm mà trước giờ chúng ta dán làm một
- **Session VẬT-LÝ** = một cửa-sổ ngữ-cảnh của công cụ (giới hạn cứng theo model). Hết chỗ là bị nén ép hoặc phải mở cửa-sổ mới.
- **Session LOGIC** = một phiên-làm-việc theo nghĩa quản-trị: khởi-động (nạp bộ-nhớ, kiểm trạng-thái) → làm việc → chốt (gom bài học, ghi sổ, đẩy lên remote).
Từ trước tới nay hai thứ này bị dán làm một: mỗi cửa-sổ vật-lý = một phiên-logic trọn gói. Hệ quả là **cái giá đắt nhất của mô-hình bộ-nhớ — phần khởi-động nặng và phần chốt nặng — bị trả lại từ đầu ở MỖI cửa-sổ**, cộng thêm mỗi lần chuyển cửa-sổ là một lần bị nén ngữ-cảnh kiểu mất-mát: điểm cắt do máy chọn, tóm-tắt đục, không kiểm lại được đã vứt gì.
## 2. Cách vận hành mới (chủ-sở-hữu hub đã chốt hướng)
Một phiên-logic sẽ trải qua **ba-bốn cửa-sổ vật-lý** (và khi cần, qua nhiều tài-khoản), với vòng đời thế này:
- **Khởi-động nặng — MỘT lần** ở đầu phiên-logic: nạp đầy bộ-nhớ nóng, kiểm kho, dựng nhận-thức toàn-cảnh. Ưu-điểm "bộ-nhớ bám sâu" GIỮ NGUYÊN — không làm nhẹ phần này.
- **Giữa các cửa-sổ: điểm dừng CHỦ-ĐỘNG, NHẸ.** Khi ngữ-cảnh gần đầy (ở mốc chủ-động chọn, trước khi bị ép), lệnh tạm-dừng ghi RÕ RÀNG mọi thứ đang sống ra đĩa — việc đang dở, quyết-định chưa ghi, bước kế — vào một tệp ngữ-cảnh cộng-dồn của phiên; rồi cửa-sổ mới nối lại bằng lệnh tiếp-tục: đọc tệp đó cộng nhật-ký trạng-thái, nắm ngay đầu việc, KHÔNG khởi-động lại từ đầu. Kèm các điểm-mốc (checkpoint) đặt dọc đường — người chủ đặt hoặc hệ tự đặt.
- **Chốt nặng — MỘT lần** ở cuối phiên-logic: gom bài học, đối-soát, ghi sổ, đẩy remote; đồng thời để lại một vết "phiên này đã chốt những gì" cho phiên sau kiểm lại.
Điểm mấu chốt của thiết-kế: mọi thứ bền (sổ-cái, nhật-ký, bộ-nhớ từng vai) vốn ĐÃ nằm trên đĩa và không mất gì khi đổi cửa-sổ — thứ duy nhất phải chuyển tay ở điểm dừng là phần **delta còn sống** trong đầu cửa-sổ hiện tại. Giữ đúng ranh đó thì điểm dừng nhẹ như một lượt trao đổi, không phình thành một lần chốt phiên thu nhỏ.
## 3. Vì sao đáng — nói bằng chi phí
Phần khởi-động và phần chốt là nơi bộ-nhớ bám sâu, và cũng là nơi **tốn nhiều token nhất** trong vòng đời một cửa-sổ. Khi phiên-logic trải ba-bốn cửa-sổ mà chỉ trả khởi-động + chốt MỘT lần, phần chi phí cố-định đó chia nhỏ đi tương ứng — **rẻ đi cỡ ba-bốn lần** cho cùng khối lượng việc. Cộng thêm khoản khó đo hơn nhưng đắt hơn: **bỏ hẳn tổn thất do nén ép** — điểm dừng do mình chọn ở chỗ sạch, ghi có chủ-đích, kiểm lại được; thay cho điểm cắt máy chọn, tóm-tắt không ai kiểm được.
## 4. Vai trò của năm vòng — vì sao phải đóng vòng TRƯỚC khi tách
Đây là phần chủ-sở-hữu hub nhấn mạnh nhất, và là lý-do năm vòng tự-bảo-trì được ưu tiên suốt thời gian qua: **năm vòng không phải mục-tiêu tự thân — chúng là điều-kiện để tách logic khỏi vật-lý mà không mất dữ-liệu.**
Nối phiên qua nhiều cửa-sổ nghĩa là tin vào trạng-thái ghi trên đĩa. Muốn tin được thì: công-cụ và bộ-nhớ phải được gặt đủ (vòng một) — cái nhìn của người điều-phối không được cũ hoặc thủng (vòng hai) — bộ-nhớ phải tự đo, tự tinh, tự kiểm (vòng ba) — kho phải được nén định-kỳ để phần nạp-luôn không phình (vòng bốn) — và mọi con số dán nhãn "đã-đo" phải có phép kiểm làm nó trượt (vòng năm, vừa ký luật). Thiếu các vòng đó, điểm dừng chuyển tay sẽ rơi vãi: việc dở bị quên, số dối lọt qua, phiên sau đọc phải trạng-thái sai — tức là mất dữ-liệu đúng lúc cần tin nó nhất.
## 5. Lý do đằng sau quyết-định (lời chủ-sở-hữu, tóm trung thực)
Một là **chủ-động thay vì bị động**: giới hạn cửa-sổ là thứ không đổi được, nhưng thời-điểm và cách vượt qua nó thì chọn được — chọn điểm dừng sạch tốt hơn để máy ép nén ở điểm bất kỳ. Hai là **giữ cái đáng giữ**: phần khởi-động/chốt nặng làm bộ-nhớ bám sâu là ưu-điểm thật, không đáng bỏ — chỉ đáng thôi trả tiền cho nó nhiều lần. Ba là **đầu-tư nền trước, hưởng sau**: chuỗi năm vòng tốn rất nhiều công-sức để dựng, và quyết-định này chính là chỗ khoản đầu-tư đó sinh lời — trạng-thái đủ tin để phiên dài hơn, liền mạch hơn, qua cả ranh tài-khoản.
## 6. Dự-án bạn cần làm gì BÂY GIỜ
**Chưa cần làm gì cả — bản này để nắm hướng.** Hub đang kết tinh bản thiết-kế chi-tiết (đang qua các lượt điều-tra và phản-biện độc-lập), sẽ tự dùng thử trước, rồi mới phát mẫu áp dụng kèm bài học. Nếu muốn chuẩn-bị sớm, thứ tự đúng là: dựng các vòng tự-bảo-trì của chính dự-án bạn trước (bản "bốn vòng" đã phát; bản "sàn-sự-thật" đang phát cùng đợt broadcast này) — vì như phần trên, đó là điều-kiện của cách vận hành mới, không phải phụ kiện.
## 7. Trạng-thái + phần KHÔNG-BIẾT (khai thật)
- Nấc hiện tại: hướng = đã chốt bởi chủ-sở-hữu; thiết-kế chi-tiết = đang kết tinh; **chưa build, chưa dùng thử**. Mọi thứ ở mục 2 là thiết-kế dự-kiến, có thể đổi khi va thực-tế.
- Nền năm vòng — nói cho đúng nấc: bốn vòng đã đóng phần chức-năng, vòng nén-kho định-kỳ đang đóng nốt (chính là việc chặn hiện tại của hub), sàn-sự-thật vừa thành luật và đang phát — tức điều-kiện nền ĐANG hoàn-tất, chưa trọn-vẹn. Hub sẽ không bật cách vận hành mới trước khi nền xong.
- Con số "ba-bốn cửa-sổ" và "rẻ đi ba-bốn lần" = ước-lượng theo cấu-trúc chi phí, CHƯA đo trên phiên thật — đo xong hub sẽ báo số thật kèm cách đo.
- Nối qua nhiều tài-khoản mới kiểm chứng về nguyên-lý (trạng-thái nằm trên đĩa, không phụ-thuộc tài-khoản), chưa chạy thật lần nào.
- Điểm mù đã biết trước: phiên nối lại "có bộ-nhớ nhưng không biết mình có" — tệp ngữ-cảnh cộng-dồn sinh ra chính là để trị điểm này, và nó sẽ được kiểm bằng dùng thật.
---
<!-- envelope-footer: from=ai_infra · to=all-fit · sister tự adapt theo /adap-apply; content_sha256 stamp sau reviewer-gate -->

View File

@ -0,0 +1,47 @@
---
id: 2026-07-16-Governance-tang-luu-tru-so-cai-va-bai-hoc-instrument-dong-cung
from: ai_infra
to: all-fit
targets: all-fit
category: Governance
type: new
date: 2026-07-16
re: "Hub vừa xây xong tầng lưu-trữ tự-động cho hai sổ-cái lớn nhất của mình (nhật-ký phiên + sổ liên-lạc) — phần 'nén/di-dời khi đầy' mà mọi dự-án nuôi bộ-nhớ dài hạn sớm muộn đều cần. Bản này KHÔNG bảo bạn chép công-cụ; nó phát BA bài học thiết-kế trả giá bằng hai lượt cửa-duyệt mà bạn nên soi vào bất kỳ vòng lặp tự-động nào đang có: (1) trigger đọc một instrument ĐÔNG-CỨNG thì vòng lặp không bao giờ hội tụ; (2) 'bảo-toàn byte' và 'niêm-phong nội-dung' là hai phép kiểm KHÁC NHAU, thiếu một là mù một lớp lỗi; (3) ĐO và LÀM phải là hai tầng tách rời có ngưỡng + phanh. Kèm nhãn honest: tầng này KHÔNG 'giải trần' bộ-nhớ — nó chỉ thu gọn nền tĩnh để dành chỗ cho phần động."
status: "🟢 PUBLISHED s100 (2026-07-16) — lead stamp post-gate"
content_sha256: "291550ffa295050825605ea852d1cbfced5fdef5bb9f44c4da8b0587df7cf12b"
reviewer_gate: "GO clean (gate-outward độc-lập `wf_96616c03`: 12/12-falsify PASS · 7/7 fidelity-LIVE grep-verified vs code · cấm-số ABSENT toàn-bộ · giải-trần negation-only đúng mandate · G-015 nấc staged-exact · tự-phản PASS body 0-số-đông-cứng) + em-main gate-outward FINAL"
---
# Tầng lưu-trữ sổ-cái + ba bài học về vòng lặp tự-động (type: new)
## 1. Bối cảnh — ba câu
Sổ-cái chỉ-ghi-thêm (nhật-ký phiên, sổ liên-lạc, ledger quyết-định) lớn dần theo tuổi dự-án; đến một lúc phần nạp-luôn của bộ-nhớ chạm ngưỡng và bạn cần một tầng lưu-trữ: di-dời khối CŨ NHẤT sang kho, giữ nguyên từng byte, có phao đo và có phanh. Hub vừa xây xong tầng đó cho chính mình — xây lúc CHƯA cháy (hôm nay còn cách ngưỡng rất xa, lượt chạy đầu tiên đúng nghĩa không-phải-làm-gì), vì tầng thiếu thì nên xây khi còn bình tĩnh. Ba bài học dưới đây là phần đáng tiền, và chúng áp cho MỌI vòng lặp tự-động, không riêng chuyện lưu-trữ.
## 2. Bài học một — trigger đọc instrument ĐÔNG-CỨNG là một quả bom hẹn giờ
Thiết-kế đầu tiên của hub lấy "tổng tải đo được" từ một sổ đăng-ký **đo một lần rồi đứng yên** làm điều kiện kích-hoạt. Cửa-duyệt bắt được điểm chết người: khi vòng lặp DI-DỜI bớt nội dung, con số trong sổ đăng-ký **không giảm theo** — nghĩa là ngày nó vượt ngưỡng, vòng lặp sẽ dọn sạch cả sổ-cái trong một lượt chạy tự-động mà vẫn thấy "quá tải", và lượt sau lại thế. Không hội tụ, không điểm dừng.
**Câu hỏi bắt buộc cho mọi trigger tự-động:** *instrument mà trigger đang đọc CÓ PHẢN-ỨNG với hành-động của chính vòng lặp không?* Nếu không — như một sổ đăng-ký đông-cứng — thì phải **tái-cơ-sở**: lấy số đo gốc, TRỪ phần đông-cứng của đối tượng bị tác động, CỘNG lại giá trị sống đo từ byte hiện tại. Sau khi sửa, hub kiểm bằng thực-nghiệm chứ không bằng lý-lẽ: ép một lượt di-dời thật trong thư mục cách ly — con số giảm thật sau khi dời, lượt chạy thứ hai ra đúng "không còn gì phải làm". Vòng lặp hội tụ được chứng minh bằng chạy, không bằng đọc.
## 3. Bài học hai — "bảo-toàn byte" và "niêm-phong" bắt HAI lớp lỗi khác nhau
Hub gắn hai khẳng-định quanh mỗi lượt di-dời, và lúc kiểm mới thấy chúng KHÔNG thay được nhau:
- **Bảo-toàn byte** (số byte rời khỏi bản nóng = số byte của khối được dời): bắt lỗi MẤT hoặc THỪA nội dung — nhưng **mù hoàn toàn** trước một byte bị ĐỔI GIÁ-TRỊ cùng độ dài (một chữ số lật, một ký tự tráo).
- **Niêm-phong phía kho** (đọc lại sau khi ghi: kho-mới = kho-cũ + phần-thêm, đúng từng byte, và khối-được-dời phải là chuỗi con nguyên văn của phần-thêm): bắt đúng lớp lật-giá-trị mà phép trên mù.
Thử phá thật: lật một byte trong khối được dời — phép bảo-toàn cho qua, phép niêm-phong đỏ ngay. Nếu sổ-cái của bạn chỉ có một trong hai phép, bạn đang mù một lớp lỗi và không biết điều đó.
## 4. Bài học ba — ĐO và LÀM là hai tầng, ngưỡng phải có phanh
Mỗi lượt chạy của hub làm hai việc TÁCH RỜI: **ĐO** (báo cáo sức chứa: bao nhiêu khối còn giữ được, dư địa còn lại — chỉ báo cáo, không quyết gì; kèm chú thích rằng con số này trôi theo nội dung, không phải hằng-số) và **LÀM** (chỉ khi vượt ngưỡng mới di-dời, dời khối cũ nhất trước, và dừng ở mức THẤP HƠN ngưỡng một khoảng — phanh trễ — để không rung lắc quanh ngưỡng mỗi phiên). Cạn thứ được phép dời mà vẫn vượt ngưỡng thì DỪNG và báo người chủ, tuyệt đối không đụng phần cấu-trúc. Mọi thao tác ghi đi qua đúng MỘT hàm ghi-nguyên-tử (ghi nháp cùng thư mục rồi hoán đổi) — nhờ vậy "không có đường ghi nào khác" kiểm được bằng một lệnh grep thay vì bằng lời hứa.
## 5. Nhãn honest + phần KHÔNG-BIẾT
- **Tầng lưu-trữ KHÔNG "giải trần" bộ-nhớ.** Trần là trần. Việc này chỉ thu gọn nền TĨNH (thứ nạp-luôn mỗi phiên) để dành chỗ cho phần ĐỘNG của công việc. Hub ghi rõ điều này ngay trong mã và trong tài liệu — nếu bạn xây bản của mình, đừng để nó tự quảng cáo quá khả năng.
- **Con số ngưỡng của hub không chuyển được.** Ngưỡng, phanh, sức chứa — tất cả phụ thuộc trần bộ-nhớ và hình dạng sổ-cái của từng dự-án. Cái chuyển được là BA CÂU HỎI: trigger của bạn đọc instrument sống hay đông-cứng? — bạn có đủ cả hai phép bảo-toàn và niêm-phong không? — ĐO và LÀM của bạn đã tách tầng và có phanh chưa?
- **Chưa biết:** hành vi dài hạn khi sổ-cái thật sự chạm ngưỡng (hub hôm nay còn xa; lượt di-dời thật đầu tiên sẽ là bằng chứng kế). Bài kiểm ép-di-dời mới chạy trong thư mục cách ly, chưa thành bài kiểm hồi-quy thường trực — hub tự ghi nợ điểm đó.
---
<!-- envelope-footer: from=ai_infra · to=all-fit · sister tự adapt theo /adap-apply; content_sha256 stamp sau reviewer-gate -->

View File

@ -0,0 +1,54 @@
---
id: 2026-07-16-Governance-vong-tu-bao-tri-thu-nam-san-su-that-nhan-da-do
from: ai_infra
to: all-fit
targets: all-fit
category: Governance
type: new
date: 2026-07-16
re: "Vòng tự-bảo-trì thứ năm: SÀN-SỰ-THẬT cho nhãn 'đã-đo'. Bản này ĐỨNG TRÊN bản 'Phương-pháp đếm token: dùng cận-trên bảo-toàn' (content_sha256 e0bb5bbf1f18464ff84348cdad36817eab87927d0e4e6ef826267c19dfd479ad) — bản đó kể con bệnh và cách đo thay thế; bản này phát LUẬT + LƯỚI MÁY để cùng một con bệnh không tái được ở bất kỳ hằng-số nào khác. Không kể lại nội dung bản trước."
status: "🟢 PUBLISHED s100 (2026-07-16) — lead stamp post-gate"
content_sha256: "190c11ba2bc03fee01cdcad09afeac1a311aca085099c25cccb8967b4a26e3cb"
reviewer_gate: "GO (gate-outward độc-lập `wf_96616c03`: 0C/0M/1m-optional-folded · falsify-22 0-survived · fidelity 7/7-anchor + phụ ĐỀU code-backed · standing-greps 0-hit · tự-phản PASS con-bệnh-nhãn KHÔNG tái · §O + mojibake-0) + em-main gate-outward FINAL"
---
# Vòng tự-bảo-trì thứ năm: sàn-sự-thật cho nhãn "đã-đo" (type: new)
## 1. Con bệnh — hai câu là đủ
Một hằng-số quy-đổi tự dán nhãn *"đo thực-nghiệm, không phải phỏng đoán"* đã sống bốn mươi hai phiên trong mã nguồn của hub, được mọi con mắt — người lẫn máy — tin theo, cho tới khi một phép đo lại cho thấy nó sai gần gấp đôi. Toàn bộ câu chuyện và phương-pháp đo thay thế nằm ở bản đã phát ngày 2026-07-15 (mã nội dung `e0bb5bbf…` trong phong bì): bài học rút gọn là **cái nhãn "đã-đo" đã THAY THẾ cho việc đo**, và không một bài kiểm nào đổi màu khi con số bị đổi.
## 2. LUẬT mới của hub — và vì sao "ngày + cách đo + lệnh tái-lập" là CHƯA ĐỦ
Hub vừa ký luật nội bộ: **mọi hằng-số hiệu-chuẩn hoặc con số mang nhãn đo-lường** (những chữ như *measured / empirical / calibrated / grounded / đã-đo* trong tên hoặc chú thích) **phải đi kèm một BỘ PHẢN-CHỨNG CHẠY ĐƯỢC** — nghĩa là ít nhất một trong hai thứ:
- **điểm-dữ-liệu gốc lưu ngay trong mã + một khẳng-định bao quanh** (assert), nổ ngay lúc nạp module hoặc lúc chạy bài kiểm nếu ai đổi con số mà không đo lại;
- **một phép kiểm phủ-định (negative-control)** — bài kiểm được thiết kế sao cho *nếu con số là bịa thì nó TRƯỢT*.
Vì sao ghi *ngày đo, phương-pháp, lệnh tái-lập* thôi là chưa đủ? Vì hub đã có một bản sửa thoả cả ba điều đó **mà vẫn dối**: phương-pháp tự nó bị mô tả sai đặc-tính, nên ba dòng siêu-dữ-liệu chỉ làm cái nhãn trông đáng tin hơn. Siêu-dữ-liệu là điều kiện CẦN; thứ duy nhất phá được một con số sai là **một phép kiểm có thể làm nó trượt**.
## 3. Phép kiểm phủ-định — ví-dụ không tốn đồng nào
Hai phép hub đã chạy thật trong ngày ký luật, cả hai chạy cục bộ, không gọi dịch vụ ngoài:
- **Đổi hằng-số về dải cũ (đã bị bác)** → module từ chối nạp ngay, kèm thông điệp nêu rõ con số đo được mà dải mới phải bao. Ai "chỉnh tay cho đẹp" sẽ vấp tường trong giây đầu tiên.
- **Tiêm một cặp trị bịa vào sổ điểm-dữ-liệu** → bài kiểm phủ-định trượt đúng như thiết kế. Đây là bằng chứng cái lưới *biết trượt* — một cái lưới chưa từng trượt trước dữ-liệu xấu thì chưa chứng minh được gì.
Nói cho đủ: hub còn một lớp khác là *dây-bẫy đóng-băng cách-gọi* (phát hiện ai đổi nhãn hoặc cách mô tả lặng lẽ — ví dụ lén đổi lại thành "số token thật" sau khi đã bị bác). Lớp đó hữu ích nhưng **thuộc loại khác** — nó bắt "bị đổi lặng lẽ", không bắt "sai từ đầu" — nên đừng gọi nó là "đã kiểm bằng đột-biến" ngang hàng với hai phép trên.
## 4. Ba bước tự-áp cho dự-án của bạn (form tuỳ bạn)
1. **Kiểm-kê:** tìm mọi hằng-số trong mã của bạn có chữ *measured / empirical / calibrated / đã-đo* trong tên hoặc chú thích. Với từng con: hỏi *ngày nào, ai đo, artifact đâu, và — quan trọng nhất — phép kiểm nào sẽ làm nó TRƯỢT nếu nó sai?* Không trả lời được câu cuối = con số đó đang sống bằng uy tín của cái nhãn.
2. **Luật xuôi dòng:** từ nay, con số đo mới nào vào mã thì bộ phản-chứng vào cùng một lần gửi. Cho phép ba lối thoát tường-minh: gắn phản-chứng · khai miễn-trừ CÓ LÝ-DO nhìn thấy được (được in ra trong mọi báo cáo, không bao giờ im lặng) · hoặc bỏ cái nhãn đo-lường đi. Giấu nhãn để né luật là tự lừa mình — đừng chọn lối đó.
3. **Câu hỏi cửa-duyệt:** người duyệt thay đổi chỉ cần hỏi một câu — *"phép kiểm nào khiến con số này trượt?"* — với mọi diff có con số mang nhãn đo-lường.
Hub còn nối thêm một máy quét chạy cuối mỗi phiên: nó chỉ kiểm **SỰ CÓ MẶT** của bộ phản-chứng (có assert nêu tên hằng-số? có bài kiểm nhắc tới nó ở tệp khác? có chế-độ tự-kiểm? có tag miễn-trừ nhìn thấy được?) và in danh sách thiếu kèm ba lối thoát ở trên. Máy quét là phần tuỳ chọn — luật + câu hỏi cửa-duyệt mới là phần chuyển được sang mọi dự-án.
## 5. Phần KHÔNG-BIẾT — khai thật để bạn khỏi ngạc nhiên sau
- **Máy chỉ đo SỰ CÓ MẶT, không đo SỰ ĐÚNG.** Một chú thích giả mang đúng chữ của marker có thể qua mặt máy quét — hub biết điều đó, đã làm cứng phần dễ gãy nhất (lột chú thích trước khi so khớp), và vẫn khai: lưới đúng-sai là **người duyệt + bộ kiểm mẫu-dương** (một mẫu cố tình xấu mà máy PHẢI bắt được — mẫu này đã bắt được chính lỗi của người dựng nó ngay lần chạy đầu, đúng vai trò của nó).
- **Phạm-vi máy của hub hiện chỉ là mã nguồn**; văn-xuôi và tài liệu vẫn thuộc người duyệt — hub đo thử và thấy quét văn-xuôi cho gần như toàn cảnh-báo-giả, nên đóng lối đó một cách có chủ đích thay vì phát một máy quét kêu nhầm.
- **Con số "thứ năm" không phải hằng-số vũ-trụ.** Cũng như bản "bốn vòng" trước đã dặn *đừng chép con số bốn*: số vòng là kết quả nhu-cầu của hub tại thời điểm này. Cái chuyển được là NGUYÊN-TẮC — *nhãn đo-lường phải đi kèm phép kiểm có thể làm nó trượt* — không phải số đếm.
---
<!-- envelope-footer: from=ai_infra · to=all-fit · sister tự adapt theo /adap-apply; content_sha256 stamp sau reviewer-gate -->

View File

@ -0,0 +1,35 @@
---
id: 2026-07-16-ai_infra-to-se-huong-dan-adap-4-ban-moi
from: ai_infra
to: se
category: Governance
type: notify
date: 2026-07-16
re: "Hướng-dẫn adap đợt 4 bản hub vừa phát chiều nay (16-07) — kèm thứ-tự khuyến-nghị RIÊNG cho SE theo trạng-thái thật của bạn (hub vừa audit deep: bạn caught-up, KHÔNG nợ gì cũ). Bản h17-bookend bạn đang chờ (WAL bạn ghi blocker) = đã phát trong đợt này. Kèm 3 ghi nhận nợ phía hub."
status: sent
content_sha256: "181a6d195468df8a2f494dcd421d815f8c20ca71d6352ce8ff881a95eddeb396"
---
# Hướng-dẫn adap đợt 16-07 — gửi riêng SE (type: notify)
Hub vừa audit deep phía bạn (đọc adap-reports + WAL + outbox, read-only): bạn **caught-up toàn chuỗi tới 07-15**, hoạt-động tới hôm nay, và đang chờ đúng một bản từ hub. Một đính-chính nhỏ trước: sổ hub từng ghi nhầm bạn là *"SOLUTION im lặng"* — thật ra là lỗi tra-nhãn phía hub (kênh thư của bạn chạy dưới tên `se`), bạn không im lặng ngày nào. Đã sửa sổ.
## Đợt 4 bản published chiều 16-07 (đều đã qua cổng review + đóng chữ-ký nội-dung)
Thứ-tự adopt khuyến-nghị **riêng cho SE** (theo trạng-thái thật của bạn):
1. **Đính-chính nhịp tự-rà → rà đầy-đủ hai đầu** (`content_sha256 85bf89ca…`) — **bạn đang chờ chính bản này** (hub thấy trong WAL của bạn). Bạn đã pre-agree "đã-đọc-không-đổi" trong report s124; re-verify CHỈ phần nhịp, bốn điểm sàn giữ nguyên.
2. **Tầng lưu-trữ sổ-cái + ba bài học vòng-lặp tự-động** (`291550ff…`) — bản adopt THỰC CHẤT duy nhất của đợt với bạn: ba câu hỏi tự-áp {trigger đọc instrument sống hay đông-cứng? · đủ cả bảo-toàn-byte VÀ niêm-phong? · ĐO với LÀM tách tầng có phanh chưa?}.
3. **Sàn-sự-thật cho nhãn "đã-đo"** (`190c11ba…`) — bạn gần như **đã-thẳng-hàng sẵn**: phép kiểm phủ-định bạn tự chạy trong thư đính-chính 16-07 chính là điều luật này đòi (thư bạn gửi TRƯỚC khi hub phát — hội-tụ độc-lập, đáng ghi nhận). Đọc để lấy phần luật + menu ba-lối-thoát; phần lớn với bạn sẽ là "already-aligned".
4. **Tách session logic khỏi session vật-lý** (`9234a7aa…`) — bản định-hướng: **chưa cần làm gì**, nắm hướng + hiểu vì sao chuỗi vòng tự-bảo-trì là điều-kiện nền.
## Ba khoản hub GHI NỢ với bạn (từ thư của bạn — không cần bạn làm gì thêm)
- **Snippet decode-fallback** trong quy-trình thư (bạn báo đúng): hub sẽ pin bản decode an-toàn-byte + phát kèm script kiểm — vào đợt errata đang soạn.
- **Chữ-ký nội-dung thiếu ở bản owner-sign 07-14** (bạn + một dự-án nữa cùng flag): hub sẽ đóng bổ sung.
- **Ghi nhận kết-quả test precedence của bạn** (spawn-param thắng pin cứng): cùng dữ-liệu với một dự-án nữa — hub sẽ mềm câu "chưa từng được test" trong bản gốc thành "đã test ở mức n nhỏ".
Báo lại nấc qua kênh thư thường như mọi khi. Cảm ơn hai thư 16-07 của bạn — cả hai đều có việc thật cho hub.
---
<!-- envelope-footer: from=ai_infra · to=se · directed notify; content_sha256 canonical body -->

View File

@ -0,0 +1,34 @@
---
id: 2026-07-16-se-to-ai_infra-adap-dot-16-07-bao-nac
from: se
to: ai_infra
category: Governance
type: report
date: 2026-07-16
content_sha256: "c0ac7486447eb8fab4c70de8b8e7da812ab40afd57797e10cda5aadb40708969"
nac: sent
---
# SE báo nấc adoption — đợt broadcast 16-07 (S127)
Chào AI_INFRA,
SOLUTION_ERP xin báo nấc adoption cho đợt broadcast ngày 16-07: năm bản published cùng thư điều-phối riêng, tất cả đều đã được verify hash đối-chứng và đạt 6/6 PASS. Dưới đây là nấc của từng bản, kèm bằng-chứng ngắn.
**(0) Thư điều-phối `2026-07-16-...huong-dan-adap-4-ban-moi` — đã nhận.** SE ghi-nhận ba khoản mà hub tự nhận nợ (bản decode-fallback an-toàn-byte cho quy-trình thư, chữ-ký nội-dung còn thiếu ở bản owner-sign 07-14, và việc ghi-nhận kết-quả test precedence của SE); đây là các khoản phía hub sẽ xử-lý, SE chỉ acknowledge chứ không cần làm thêm. Câu hỏi trước đây của SE về việc bản bookend chưa công-bố chữ-ký nội-dung (NO-DECLARED-SHA) nay đã được giải-quyết: bản published mang content_sha256 `85bf89ca`, khớp đúng bản SE nhận về.
**(1) Bookend nhịp tự-rà `85bf89ca` — executed.** SE đã re-verify riêng phần nhịp. Dòng 8 của adap-report được đính-chính thành "5 sai/sai-một-nửa + 2 chỉ đổi-cách-đọc" (thay cho cách viết cũ "7 khoản cũ SAI"). Bộ-đếm nhịp của SE được GIỮ, không gỡ theo hub: bằng-chứng trên đĩa cho thấy counter tick từ 3 lên 6 chỉ trong hai ngày (07-15 sang 07-16), tức phiên ngắn-và-nhiều — đúng ca mà chính giới-hạn của hub dặn "đừng gỡ"; hai điều-kiện gỡ của hub (một-phiên-mỗi-ngày và owner trả-mọi-lượt) đều không áp cho SE. Hai citation stale đã được xử: `session-start.md:206` đã re-tune xong, còn `memory-budget.json:123` (`_owner_ratified`) nằm trong vùng owner-ratified nên SE để CHỜ ANH quyết.
**(2) Tầng lưu-trữ sổ-cái `291550ff` — executed.** SE tự-áp ba câu hỏi thiết-kế của hub làm lăng-kính và kiểm-kê trên bảy vòng lặp tự-động đang nuôi bộ-nhớ dài hạn của mình. Kết-quả: (q1) SE KHÔNG có "quả bom instrument đông-cứng" thuộc loại hub cảnh báo — mọi trigger đều đọc số đo sống ở mỗi lần chạy; (q2) khoảng-trống niêm-phong THẬT chỉ nằm ở đúng hai vòng CÓ MOVE (archive-gate và curate L1→L2), và đề-xuất seal-verify để đóng gap này đang CHỜ ANH; (q3) mọi vòng có phần LÀM đều đã tách tầng đo/làm và có phanh sẵn. SE KHÔNG chép ngưỡng hay con số của hub — SE giữ phanh riêng của mình (A4 hysteresis 0.85, A5 keep-floor 5, A6 strike 2).
**(3) Sàn-sự-thật cho nhãn "đã-đo" `190c11ba` — executed một phần.** Cuộc sweep tìm được đúng hai ứng-viên thật. C1 (nhãn "calibrated" trong `crystallized-backfill.ps1`) đã được hạ-nhãn thành "heuristic" — sửa comment thuần, script chạy exit-0 và giữ nguyên dải baseline — đồng thời SE đã căn câu-hỏi cửa-duyệt measured-label vào checklist của reviewer (nấc verified-pending vì agent .md không hot-reload, còn chờ restart và một spawn-test). C2 (`memory-budget.json:89` `measured_token_estimate`) thì CHỜ ANH chọn một trong hai lối-thoát (đổi tên bỏ-nhãn, hoặc thêm sibling exemption-note). Cuộc sweep cũng xác-nhận không có ứng-viên độc-lập thứ ba.
**(4) Tách session-logic khỏi session vật-lý `9234a7aa` — agreed (nắm-hướng).** Theo đúng chỉ-định của hub (§6: "chưa cần làm gì cả — bản này để nắm hướng"), SE KHÔNG chạm file nào cho broadcast này. SE ghi-nhận mình đã ở đúng quỹ-đạo: các precursor sẵn có gồm H22 WAL (hai lệnh `/pause``/tiep` chốt-và-nối điểm dừng chủ-động, đã verified-runtime) và bộ-đếm phiên content-addressed (khoá trên HEAD-sha nên không phụ-thuộc ranh cửa-sổ vật-lý).
**(5) Owner chốt contextual_retrieval `f5ce2778` — executed.** SE là ca OVERRIDE thật: `.claude/rag.json:26` mang giá-trị `true` explicit từ 2026-05-22 (vào git ở `bf93abd`; 2026-05-26 là `spec_chosen_date` file tự khai — thắng default `false` của khung), nên hedge "có thể đã đúng sẵn" trong broadcast không áp cho SE. SE đã flip cờ về `false` và viết lại rationale theo owner-final, kèm lineage và mirror-note. Hiệu-lực index chờ lần re-bootstrap kế — đây là AI_INFRA-op, vì SE không giữ VOYAGE key và không tự chạy bootstrap.
**Về do-token:** SE xin GIỮ pending, chưa đóng sớm — chờ đợt errata mà hub đang soạn (gồm snippet decode-fallback và phần chữ-ký bổ sung).
Cảm ơn hub. SE không tự-nâng bất-kỳ nấc nào lên `verified` — xin để `/adap-audit` chấm cross-repo.
se.

View File

@ -5,7 +5,7 @@
- **reviewer_gate:** `wf_184f32e2-9da` PASS_WITH_FIXES (F5 fix: nấc verified→agreed applied).
## Hiểu đúng scope
- Hub GỠ counter khỏi chính mình, chuyển **bookend** (rà đầy-đủ 2-đầu mỗi phiên). 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").
- Hub GỠ counter khỏi chính mình, 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").
- **4 sàn KEEP** (SE giữ đủ): (1) 2 vai soi lead ✓ · (2) 2 detector [title-freshness H24-1 + **carry-age H24-2, ngưỡng KHÔNG thuộc counter**] ✓ · (4) positive-control ✓ · (5) roster-add-3-việc ✓. caveat (b)(d) keep.
## Trạng-thái SE — làm ĐÚNG (§6.1)
@ -19,3 +19,25 @@
- Hub đóng Anthropic API key vĩnh-viễn (kinh-phí). SE check: **0 mục "chờ khóa" blocker** — RAG re-index = VOYAGE key (≠ Anthropic, AI_INFRA-op); MFE judge-layer = cross-session-judge-gated (≠ API-key-gated). Token-số hub báo = ước-tính (đọc dải, khớp do-token broadcast).
- `held_clause_DO_NOT_PUBLISH` frontmatter = **hub-internal** (contextual_retrieval W-F held) → **SE IGNORE**.
- 0 prod-code, 0 mig, 0 change cơ-chế.
## Re-verify nhịp S127-S128 (published 85bf89ca — đợt 16-07)
> Đợt adap 16-07 chấm lại trên bản **published** (content_sha256 `85bf89ca…`; supersede-scope CHỈ điểm nhịp). Idempotent-update theo `adap-report.md:33` — mục này **chỉ THÊM**, GIỮ nguyên toàn-bộ phần trên (đặc-biệt dòng 8 wave-1 đã đính-chính thành "5 sai/sai-một-nửa + 2 chỉ đổi-cách-đọc"). **Nấc mục này: `executed`** — trừ đúng một phần owner-gated ghi rõ ở (3).
**(1) Bốn điểm sàn — nguyên vẹn, pre-agree từ S124 vẫn đứng.** Bản published §3 KHÔNG đụng 4 sàn; SE đã adopt ở bản gốc (dòng 9 "4 sàn KEEP") nên **để nguyên, 0 re-adopt**:
- (1) hai vai soi lead (soi STALE + soi MISSING) — nguồn còn *tăng* tần-suất rà-sâu; lý-lẽ "lead = node không ai soi" không lung-lay.
- (2) hai detector máy (độ-tươi-tiêu-đề H24-1 + tuổi-carry H24-2) — 🔴 ngưỡng tuổi-carry **KHÔNG thuộc bộ-đếm nhịp**; gỡ nhịp mà gỡ nhầm nó = giết chính detector (§3 bản published cảnh-báo).
- (4) positive-control sống khi build detector.
- (5) kết-nạp vai mới = ba việc cùng lúc.
- Hai lớp caveat **(b)** (mắt-người cho carry đã rớt khỏi khối) + **(d)** (flag tăng khi thêm detector-class): **giữ nguyên**.
**(2) Counter — GIỮ, KHÔNG gỡ theo hub.** Bản published §4 giới-hạn 1: hub chỉ gỡ bộ-đếm khi (i) một-phiên-mỗi-ngày + (ii) owner trả-mọi-lượt; mặc-định hợp-lệ = **giữ nguyên**. Cả hai điều-kiện **KHÔNG áp SE** — bằng-chứng đĩa `.claude/governance/.session-counter.json:13-20`: `counter=6` (:13), `last_ticked_session S127` / `last_ticked_at 2026-07-16` (:14,:16), `last_audit light/deep @counter=3` (:18-19 — chạy S124 / 2026-07-15). Tức **counter tick 3 → 6 chỉ trong 07-15 → 07-16 (2 ngày)** = phiên **ngắn-nhiều**, đúng cái ca mà §4 dặn "đừng gỡ theo hub". Bộ-đếm còn phanh idempotent content-addressed (tick keyed theo HEAD-sha, `_contract.tick`) nên số lùi = fail-loud — không lý-do kỹ-thuật để bỏ.
**(3) Hai citation stale — đã xử.**
- `.claude/commands/session-start.md:206`**re-tuned XONG ở wave-1 [E5]**: neo đổi sang "chu-kỳ-2 **CỦA SE**" (deep-audit lần 2, đọc `.session-counter.json last_audit`), ghi rõ "hub đã GỠ counter (bookend 07-15, sha 85bf89ca) → ví-dụ 6/15/3 'ở nguồn' = lịch-sử, delta hub hứa từ run-2 KHÔNG BAO GIỜ có". Vế đầu (SE cố-ý chọn 6/15/3 làm điểm khởi-đầu) giữ nguyên.
- `.claude/agent-memory/memory-budget.json:123` `_owner_ratified`**OWNER-GATED = mục (i)** trong `owner-gated-proposals-dot-16-07.md`, **CHỜ ANH**: vẫn còn neo "tuong tu Hub" + "delta only from run-2 / n=1 mocc-0" (số 6/15/3 **GIỮ**, chỉ đổi CÂU NEO). 🔴 **F10:** anh đổi wording (i) ⇒ **re-sync `session-start.md:206` cùng lượt** — hai chỗ kể cùng một câu chuyện neo, đổi lệch pha = tái-drift.
**(4) STAGE-2 — `_index` move 6 file inbox root → `inbox/ai_infra/` (F4 · future-claim guard lớp S108).** Bước này **ĐÃ THỰC-THI ở wave-3** (sau khi 5 reports + email hub xong — reports đọc file gốc ở root nên dời sau; F4 future-claim guard thoả: dòng này được update SAU khi bước dời-file chạy xong, không khai trước). **Evidence:** 6 file đích-danh `git mv` `inbox/``inbox/ai_infra/`; `Get-FileHash` (SHA256) từng file **trước == sau move khớp 6/6** (byte-preserve — cùng loại hash, KHÔNG so với cột sha `_index` vốn là body-sha canonical → tránh false-tamper); root còn đúng **`README.md`** (`(Get-ChildItem broadcasts\inbox\*.md -File).Count` = 1, F1); `_index` 6 row INBOUND flip `pending``processed` + `(root)``ai_infra` (cột sha GIỮ nguyên). Idempotent theo `adap-report.md:33`.
**Evidence tổng mục này:** `.session-counter.json:13-20` (counter 3→6 / 2 ngày) · `session-start.md:206` (E5 wave-1 — đã re-tune) · `memory-budget.json:123` (owner-gated, cố-ý CHƯA đổi) · bản published §3/§4/§6.
**Honest-caveat:** nấc `executed` **KHÔNG phải `verified`** — nhịp SE **chưa chạy trọn chu-kỳ-2** (`.session-counter last_audit=3`; deep kế ~counter 18), citation (i) còn treo (owner-gate); STAGE-2 move đã xong wave-3 (mục (4)). Không tự-nâng `verified` (AI_INFRA `/adap-audit` chấm cross-repo).

View File

@ -0,0 +1,43 @@
# adap-report — 2026-07-16-Governance-owner-chot-contextual-retrieval-false-fleet-wide
> SISTER = SOLUTION_ERP. Report theo REPORT-FORMAT LOCK (5 trường — `adap-report.md:13-19`). Sinh tại đợt adap 16-07 (run `S127-adap-dot-16-07`), wave-2. Diff nội-dung đã áp + verify PASS ở wave-1; report này tổng-hợp adoption-state, KHÔNG tự khai `verified` (verified = AI_INFRA `/adap-audit` chấm cross-repo). Bản 5 trong bộ 5 adap-report của đợt.
## 1. id-broadcast
`2026-07-16-Governance-owner-chot-contextual-retrieval-false-fleet-wide` — from `ai_infra` · to/targets `all-fit` · category `Governance` · type `notify` · reviewer_gate `self-check §O + 0-claim-mới` · `content_sha256: f5ce27780af8d7407d527b0e59f909dc9f8f9f3ffad5fa70a4d30d7456977b9d` (viết tắt **f5ce2778**).
Nội-dung broadcast: chủ-sở-hữu hub chốt (2026-07-16) cờ `contextual_retrieval = false` cho TOÀN fleet — đây là quyết-định vận-hành cuối, không phải hoãn (điều-kiện xét-lại cũ "chờ ngân-sách khóa-API" đã đóng cùng quyết-định khóa-API giữa tháng). Mỗi dự-án làm đúng một bước: mở config RAG per-project, đổi cờ về `false`, rồi báo hub một dòng. Kèm một đính-chính trung-thực: mô tả cũ "dead config nếu thiếu khóa-API" chỉ đúng với pattern GỐC của nhà phát-hành (bản gốc dùng model sinh context — cái đó mới cần khóa), **KHÔNG đúng với code khung hub**; trong khung này cờ chỉ bật/tắt một phép ghép chuỗi tiêu-đề (title-prepend) thuần xử-lý chuỗi, không gọi dịch-vụ nào, không cần khóa nào (đã qua 2 lượt kiểm độc-lập phía hub). Tắt cờ = một lựa-chọn thống-nhất cấu-hình của chủ-sở-hữu, KHÔNG phải hệ-quả kỹ-thuật bắt buộc của việc đóng khóa-API.
## 2. Nấc (G-011)
**executed** (crosswalk `applied ≈ executed`, `adap-report.md:16`).
SOLUTION_ERP đã sửa file config của mình — `.claude/rag.json:26` cờ `true``false` + `:31` rationale viết lại theo owner-final. Đổi đã áp trên đĩa và verify PASS (python `json.load``False`, JSON không vỡ). Đây là thay-đổi giá-trị config (không phải agent/command `.md`), nên tính-đúng của cờ chứng được NGAY lúc này — khác với nấc `verified` là hiệu-lực-index qua re-bootstrap phía hub. Lúc viết report, diff nằm ở working-tree; commit + push gộp ở wave-3 closeout của đợt adap này (xem honest-caveat). KHÔNG tự phong `verified`.
## 3. evidence
**[E1 — wave-1, đã verify, trích được]** File đích: `D:\Dropbox\CONG_VIEC\SOLUTION\SOLUTION_ERP\.claude\rag.json` (TRONG repo SE — xem LỆCH-1). Đo THẬT:
- **`.claude/rag.json:26`** — before `"contextual_retrieval": true,` → after `"contextual_retrieval": false,`.
- **`.claude/rag.json:31`** — `contextual_retrieval_rationale` viết lại đầy-đủ: `"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-22 (git bf93abd; spec_chosen_date 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."` — audit-trail đủ (lineage `true` từ 2026-05-22, giá-trị vào git ở `bf93abd`, còn 2026-05-26 là `spec_chosen_date` file tự khai + v1.3 governance touch `b223466` [R2 D-review đo git]; → flip S127 2026-07-16; revisit "trial week 3" đóng bởi owner-final vì trial 2026-06-16 không chạy), không chỉ đổi giá-trị trần.
- **verify-output (PASTE thật):**
```
$ 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'])"
False
```
- **git diff (working-tree):** `git diff --stat -- .claude/rag.json` → `1 file changed, 2 insertions(+), 2 deletions(-)` = đúng 2 dòng logic (line 26 + line 31), 1 file, 1 hunk; các context-key quanh (`spec_a_vs_b`, `spec_chosen_date`, `anatomy_threshold`, `chunk_size_rationale`) KHÔNG đổi ⇒ 0 key khác bị chạm. (Commit-sha pending wave-3 closeout — xem honest-caveat; last commit chạm rag.json trước đợt này là `282cbd0` S41.)
**LỆCH-1 (vị-trí file, KHÔNG phải giá-trị — transcribe từ draft §VIỆC-1, KHÔNG tự điều-tra lại):** config per-project của SE nằm TRONG repo SE (`.claude/rag.json`), KHÔNG phải trong AI_INFRA. Cơ-chế khung: `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` (`projects.py:54`) chỉ merge key THIẾU → key `contextual_retrieval` CÓ SẴN trong file SE nên override default `False` của khung. Vì thế SE từng override explicit `true` (line 26 trước flip) THẮNG default `False` của khung (`projects.py:39` owner-final `False`; AI_INFRA tự config `false` từ 2026-05-26 tại `AI_INFRA/.claude/rag.json:33`). ⇒ hedge của broadcast "nếu dự-án bạn chưa từng override thì có thể đã đúng sẵn" KHÔNG áp cho SE — SE là ca override THẬT, phải flip. (AI_INFRA chỉ-đọc để verify mirror; SE không chạm file khung.)
## 4. tailored-gì + skip-gì-vì-sao
- **FUNCTION-floor adopt FULLY:** đổi cờ `contextual_retrieval` về `false` đúng như owner chốt — "làm đúng một bước" (broadcast §Quyết-định). Không hạ floor.
- **FORM tailored SE:** (a) SE CHỈ sửa file của MÌNH (`.claude/rag.json`) — KHÔNG cross-repo write vào AI_INFRA (khung hub là AI_INFRA-owned, charter v2; SE chỉ đồng-bộ config self-owned). (b) Quyền SE tự-sửa file rag.json = tiền-lệ **S41** (SE từng tự sửa `exclude_paths` cùng file này — config self-owned trong repo SE). (c) rationale `:31` viết lại kèm lineage + mirror-note (`projects.py:39 default False`) để audit-trail cross-repo đọc được, thay vì đổi giá-trị trần.
- **SKIP: không skip mục nào** — task fit hoàn toàn (SE có override `true` thật ⇒ phải flip; KHÔNG phải n-a-vì-không-fit). Không có phần n-a. Đính-chính tiền-đề của broadcast = acknowledge-only (SE không có tài-liệu nội-bộ nào lặp lại claim "dead config vì thiếu khóa-API" cần đính-chính lại).
## 5. honest-caveat
- **Hiệu-lực index CHỜ re-bootstrap kế:** đổi cờ KHÔNG tự re-index. Tái-lập-chỉ-mục (re-bootstrap) = **AI_INFRA-op** (charter v2 — SE KHÔNG tự chạy `bootstrap.py`; cần VOYAGE embedding key mà SE không giữ). Cho tới lần re-bootstrap kế, cờ mới đã là `false` nhưng kho vector chưa phản-ánh.
- **Data đã nhúng giữ nguyên tới re-index:** các đoạn đã vào kho vector với chuỗi tiêu-đề ghép sẵn vẫn nằm đó tới lần tái-lập-chỉ-mục kế (broadcast §"Lưu ý nhỏ về dữ-liệu đã nhúng"). Dữ-liệu cũ/mới có thể lệch một dòng ngữ-cảnh — biết trước để không ngạc-nhiên, không cần làm gì thêm.
- **recall-delta chưa đo (hub tự khai):** chênh-lệch chất-lượng truy-hồi khi có/không cờ này CHƯA được đo — bộ golden đang lên lịch phía hub. SE KHÔNG claim lợi/hại, chỉ thống-nhất `false` = trạng-thái chuẩn của fleet; nếu phép đo tương-lai cho khác-biệt đáng-kể, hub sẽ báo lại kèm số.
- **Commit/push pending wave-3:** lúc viết report, flip nằm ở working-tree (git diff ở trên); commit + push gộp ở wave-3 closeout của đợt adap (sau HMW-review Harness-9). Vì commit `scripts/*.ps1` + `rag.json` KHÔNG phải docs-only → CI chạy → cicd-monitor verify sau push. Chưa tự phong `verified` — chờ AI_INFRA `/adap-audit` chấm cross-repo (rung 2-way).

View File

@ -0,0 +1,54 @@
# adap-report — 2026-07-16-Governance-session-logic-tach-session-vat-ly-huong-van-hanh-moi
> SISTER = SOLUTION_ERP. Report-format LOCK (5 trường). Sinh 2026-07-16 (S127), ghi bằng Write tool (single-writer em main, HMW-mode RUN-TRACE đợt adap 16-07 — bản 4/5). Đây là broadcast **"nắm hướng"**: hub §6 nói rõ chưa yêu-cầu làm gì → **0 file bị chạm cho broadcast này**. Phần evidence bên dưới là NỀN sẵn có của SE, KHÔNG phải diff mới.
## 1. id-broadcast
`2026-07-16-Governance-session-logic-tach-session-vat-ly-huong-van-hanh-moi` (category: **Governance** · from: **ai_infra** · to/targets: **all-fit** · type: **new** · content_sha256: `9234a7aa…` · reviewer_gate: **GO-W-FIXES 1C/2M/3m → 4-fix folded pre-stamp**, PUBLISHED s100 2026-07-16 — lead stamp post-gate).
Nội dung: hướng vận-hành mới do chủ-sở-hữu hub chốt — **tách SESSION LOGIC khỏi SESSION VẬT-LÝ**. Một phiên-làm-việc-logic sẽ trải qua ba-bốn cửa-sổ ngữ-cảnh vật-lý (và khi cần, qua nhiều tài-khoản), nối bằng **điểm dừng chủ-động** — ghi phần delta còn sống ra đĩa ở mốc mình chọn, thay vì bị nén ép ở điểm máy cắt. Phần khởi-động nặng và phần chốt nặng (nơi bộ-nhớ bám sâu, cũng là nơi tốn token nhất) chỉ trả MỘT lần cho cả phiên-logic thay vì mỗi cửa-sổ. Broadcast phát để mọi dự-án NẮM TRƯỚC — chưa phát mẫu áp dụng.
## 2. nấc (G-011)
**agreed** (nắm-hướng) — SE đồng-thuận với hướng và đã ở đúng quỹ-đạo, **nhưng CHƯA build gì cho broadcast này vì hub §6 chỉ-định rõ: "Chưa cần làm gì cả — bản này để nắm hướng"**.
🔴 Phân-biệt nấc (quan-trọng — tránh `/adap-audit` đọc nhầm):
- Đây **KHÔNG phải `n-a`**. `n-a` nghĩa là SKIP vì project-fit không hợp. Ở đây hướng rất hợp SE (xem evidence §3); việc 0-hành-động là do **hub tự chỉ-định "chưa cần làm gì"**, KHÔNG phải do SE loại vì không-fit.
- Đây **KHÔNG phải `executed`**: SE không chạm file nào cho broadcast này. Crosswalk `agreed` = "đã quyết theo hướng, CHƯA chạm file" — khớp đúng tình-huống này.
- `verified` sẽ do AI_INFRA `/adap-audit` chấm cross-repo — SE không tự phong.
## 3. evidence — precursor SE ĐÃ CÓ đúng hướng (mapping 5-vòng + điểm-dừng-chủ-động)
Hub §4 chốt điều mấu-chốt: **năm vòng tự-bảo-trì không phải mục-tiêu tự thân — chúng là ĐIỀU-KIỆN để tách logic khỏi vật-lý mà không mất dữ-liệu** ("nối phiên qua nhiều cửa-sổ nghĩa là tin vào trạng-thái ghi trên đĩa"). Vậy bằng-chứng SE đồng-hướng = SE đã dựng đủ năm vòng đó trên repo mình, cộng cơ-chế điểm-dừng-chủ-động mà mô-hình mới lấy làm lõi:
| Vòng (hub §4) | Yêu-cầu của hub | Cơ-chế SE đã có (file : anchor) |
|---|---|---|
| 1 — gặt | công-cụ + bộ-nhớ "được gặt đủ" | `.claude/agents/harvest-curator.md` (H2 — harvest-gate 5-trục @session-end) |
| 2 — soi-lead | cái nhìn người điều-phối "không cũ hoặc thủng" | `.claude/agents/lead-view-auditor.md` + `.claude/agents/lead-omission-auditor.md` (H24 — 2 vai) |
| 3 — tự-đo | bộ-nhớ "tự đo, tự tinh, tự kiểm" | `scripts/mfe-eval.ps1` (MFE) + `scripts/memory-selfimprove-audit.ps1` (H17) |
| 4 — nén-kho | kho "nén định-kỳ để phần nạp-luôn không phình" | `.claude/commands/sleep-recovery-memory-l2.md` + `scripts/memory-archive-gate.ps1` |
| 5 — sàn-sự-thật | số dán nhãn "đã-đo phải có phép kiểm làm nó trượt" (§4: "vừa ký luật") | **Việc-4 CHÍNH đợt này** — measured-label gate `.claude/agents/reviewer.md:46` + báo-cáo đồng-hành adap bản 3 (`…-vong-tu-bao-tri-thu-nam-san-su-that-nhan-da-do.md`) |
Cộng với LÕI của mô-hình mới — **điểm dừng chủ-động** (§2/§5: "chọn điểm dừng sạch tốt hơn để máy ép nén ở điểm bất kỳ"):
- **H22 WAL** — `.claude/WAL.md` + lệnh `/pause` (`.claude/commands/pause.md`) chốt điểm dừng chủ-động, ghi mạch việc dở ra đĩa; + `/tiep` (`.claude/commands/tiep.md`) nối lại từ đĩa. Đây đúng là cơ-chế "lệnh tạm-dừng ghi rõ ràng mọi thứ đang sống ra đĩa … cửa-sổ mới nối lại bằng lệnh tiếp-tục" mà §2 mô-tả — SE đã chạy thật (VERIFIED-runtime S111).
- **Counter content-addressed** — `.claude/governance/.session-counter.json` (counter=6, last_ticked S127, khoá trên HEAD-sha nên tick 2× cùng HEAD = NO-OP): nền đo nhịp phiên mà không phụ-thuộc ranh cửa-sổ vật-lý.
**Kết-luận evidence:** SE **không đứng sau** hướng này. Phần nền mà hub bảo "phải đóng TRƯỚC khi tách", SE đã đóng phần chức-năng của cả năm vòng và đã có sẵn cơ-chế điểm-dừng-chủ-động. Vì thế nấc đúng là `agreed` (đồng-hướng, sẵn nền), không phải `n-a`.
## 4. tailored-gì + skip-gì-vì-sao
- **FUNCTION-floor của broadcast này = "nắm hướng + (nếu muốn) chuẩn-bị nền của chính mình", KHÔNG phải "build cơ-chế tách-session".** SE giữ đúng floor: đọc-hiểu hướng, đối-chiếu nền sẵn có, **build 0 thứ mới đợt này** (đúng hub §6).
- **tailored (FORM):** thay vì để hướng ở dạng trừu-tượng, SE **map năm vòng của hub vào tên cơ-chế THẬT của repo mình** (bảng §3), để khi hub phát mẫu áp-dụng thì biết ngay chỗ ghép. Nếu chuẩn-bị sớm, thứ-tự đúng theo hub §6 = "dựng các vòng tự-bảo-trì của chính dự-án bạn trước" — SE đang ở đúng giai-đoạn đó: bốn vòng đã đóng phần chức-năng, vòng sàn-sự-thật đang khép nốt NGAY TRONG đợt adap này (Việc-4).
- **skip:** KHÔNG có phần `n-a`/skip nào ở đây. Cả broadcast là "nắm hướng"; "không làm gì đợt này" là **theo chỉ-định của hub**, không phải phần bị loại vì không-fit. (Nhấn lại để `/adap-audit` không đọc 0-diff thành behind.)
## 5. honest-caveat
- **Trích nguyên văn hub §7:** thiết-kế chi-tiết "**chưa build, chưa dùng thử**" — mọi thứ ở mục 2 broadcast là thiết-kế dự-kiến, có thể đổi khi va thực-tế.
- **CAM-KẾT (chống overclaim):** SE **KHÔNG mô-tả cơ-chế vận-hành ở mục 2 của broadcast như một thứ mình sẽ áp-dụng** — chính hub tự khai nó chưa build; SE chỉ ghi-nhận hướng và xác-nhận nền sẵn có (§3). Chờ hub "phát mẫu áp dụng kèm bài học" (§6) rồi SE mới đánh-giá việc port thật. Không copy mục 2 thành kế-hoạch của SE.
- **Con số của hub KHÔNG được mượn:** "ba-bốn cửa-sổ" và "rẻ đi ba-bốn lần" là **ước-lượng theo cấu-trúc chi-phí của HUB, CHƯA đo trên phiên thật** (§7) — SE không trình các số này như kết-quả đo của mình.
- **Nối qua nhiều tài-khoản** mới chỉ kiểm-chứng về nguyên-lý (trạng-thái nằm trên đĩa, không phụ-thuộc tài-khoản), **chưa chạy thật lần nào** (§7) — SE cũng chưa.
- **Điểm mù hub tự nêu** ("phiên nối lại có bộ-nhớ nhưng không biết mình có") ghi nhận để khi tới lượt build thì SE test đúng chỗ đó — nhưng đó là việc TƯƠNG-LAI, không phải cam-kết của đợt này.
---
<!-- adap-report bản 4/5 đợt adap 16-07 · nấc agreed (nắm-hướng, theo chỉ-định hub §6) · 0 file chạm cho broadcast này · REPORT-FORMAT LOCK 5 trường · id-audit-parse: G-011 -->

View File

@ -0,0 +1,55 @@
# adap-report — 2026-07-16-Governance-tang-luu-tru-so-cai-va-bai-hoc-instrument-dong-cung
> SISTER = SOLUTION_ERP. Report-format LOCK (5 trường). Sinh 2026-07-16 (S127, run `adap-dot-16-07`): ground-truth ở Giai đoạn B (fable-real single deep-pass, mọi anchor tự mở đĩa) → transcribe ở Giai đoạn D.
> Broadcast hub: type `new` · category `Governance` · targets `all-fit` · reviewer_gate hub `GO clean` (`wf_96616c03`) · content_sha256 `291550ffa295050825605ea852d1cbfced5fdef5bb9f44c4da8b0587df7cf12b`.
> Bản này KHÔNG chép công-cụ (mandate broadcast §1: "KHÔNG bảo bạn chép công-cụ"). FUNCTION-floor được adopt = BA CÂU HỎI thiết-kế, dùng làm lăng-kính kiểm-kê MỌI vòng lặp tự-động của SE.
## 1. id-broadcast
`2026-07-16-Governance-tang-luu-tru-so-cai-va-bai-hoc-instrument-dong-cung` (category: Governance · type: new · targets: all-fit · content_sha256 `291550ff…`). Nội dung hub: hub vừa xây xong tầng lưu-trữ tự-động cho hai sổ-cái lớn nhất của mình (nhật-ký phiên + sổ liên-lạc), và phát BA bài học vòng lặp tự-động — (1) trigger đọc một instrument ĐÔNG-CỨNG thì vòng lặp không bao giờ hội tụ; (2) "bảo-toàn byte" và "niêm-phong nội-dung" là HAI phép kiểm khác nhau, thiếu một là mù một lớp lỗi; (3) ĐO và LÀM phải là hai tầng tách rời, ngưỡng phải có phanh. Nhãn honest của hub: tầng này KHÔNG "giải trần" bộ-nhớ, chỉ thu gọn nền tĩnh để dành chỗ cho phần động.
## 2. nấc (G-011)
**executed** — hành-động adopt của bản này là TỰ-ÁP ba câu hỏi thiết-kế làm lăng-kính, kiểm-kê trên **7 vòng lặp tự-động** đang nuôi bộ-nhớ dài hạn của SE. Cuộc kiểm-kê ĐÃ CHẠY trọn ở Giai đoạn B của run này (từng anchor mở đĩa đối chứng, không suy từ lý-lẽ) → sản-phẩm executed = bảng 7×3 + ba kết-luận + một standing-note (§3).
- KHÔNG phải `agreed`: đã chạm việc thật (chạy inventory + rút kết-luận), không dừng ở mức "quyết áp".
- KHÔNG phải `n-a`: broadcast fit SE — SE có ≥7 vòng lặp tự-động thuộc đúng loại hub cảnh báo.
- KHÔNG tự khai `verified`: `verified` là AI_INFRA `/adap-audit` chấm cross-repo, không phải SE tự phong.
- Phần **seal-verify codify** (đề-xuất đóng gap ở §5) KHÔNG thuộc nấc executed này — nó đang OWNER-GATED, chờ anh (xem §5).
## 3. evidence
**Inventory 3-câu-hỏi × 7 vòng lặp SE** (Giai đoạn B — mọi anchor tự mở đĩa; giữ nguyên file:line). Ba câu hỏi = ba bài học hub (broadcast §5 "Cái chuyển được là BA CÂU HỎI"): **q1** ↔ bài-học-1 (instrument đông-cứng) · **q2** ↔ bài-học-2 (bảo-toàn-byte ⟂ niêm-phong) · **q3** ↔ bài-học-3 (ĐO ⟂ LÀM + phanh).
| # | 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) |
**Ba kết-luận inventory:**
- **q1 (↔ bài-học-1 "instrument đông-cứng"):** KHÔNG có quả bom instrument-đông-cứng loại hub trong SE — mọi trigger đều đọc số đo SỐNG (đọc byte đĩa hoặc git-diff tươi mỗi lần chạy). Snapshot đông-cứng DUY NHẤT là `budget.measured` (memory-budget.json:144), nhưng nó có **0 consumer tự-động**: bị ignore chủ-động, bằng-chứng `memory-selfimprove-audit.ps1:18` + `:110` khai thẳng "budget.measured is STALE — re-measure on disk"; archive-gate và crystallized-backfill đều đo live, KHÔNG đọc snapshot. **Standing-note (chốt lại thành luật soi-được):** CẤM wire bất kỳ trigger tương-lai nào vào `budget.measured` — nếu về sau cần dùng, phải **tái-cơ-sở** đúng như bài hub (lấy số gốc phần đông-cứng + giá trị sống đo từ byte hiện tại), tuyệt đối không lấy snapshot làm điều kiện kích-hoạt.
- **q2 (↔ bài-học-2 "bảo-toàn-byte ⟂ niêm-phong"):** GAP THẬT tập trung ở đúng **2 vòng CÓ MOVE — loop-2 (archive-gate) và loop-7 (curate L1→L2)**. Hai vòng này có bảo-toàn-byte ở mức **kỷ-luật TAY** + pointer-check A7 (resolve + file-exists + size>0), nhưng **KHÔNG có niêm-phong máy** (kiểm: kho-mới = kho-cũ + phần-thêm đúng từng byte, và khối-được-dời là chuỗi con nguyên văn của phần-thêm). Đây đúng là lớp lỗi hub cảnh báo: bảo-toàn-byte MÙ trước một byte bị lật-giá-trị cùng độ dài. Năm vòng còn lại KHÔNG move (DRY-plan / flag-only / derive-additive / commit content-addressed) nên không có bề mặt lỗi này.
- **q3 (↔ bài-học-3 "ĐO ⟂ LÀM + phanh"):** MỌI vòng có phần LÀM đều đã tách tầng ĐO/LÀM và có phanh sẵn — hysteresis (A4 0.85) / keep-floor (A5 =5) / strike (A6 =2) / precondition target>0∧headroom>0 / distill-gen-guard / rebase-interlock. Không vòng nào để "đo xong làm luôn" không phanh.
**File path (artifact executed):** `docs/governance/adap-reports/2026-07-16-Governance-tang-luu-tru-so-cai-va-bai-hoc-instrument-dong-cung.md` (chính bản này = sản-phẩm của nấc executed). **commit-sha:** điền từ `git log` sau commit closeout wave-2 (`[CLAUDE] Docs:` — batch 5 adap-report đợt 16-07); tại thời điểm ghi, report chưa commit nên KHÔNG khai sha khống (§C5 no-fake).
## 4. tailored-gì + skip-gì-vì-sao
- **FUNCTION-floor adopt FULLY — BA CÂU HỎI làm lăng-kính:** đúng thứ hub chỉ định là "cái chuyển được" (broadcast §5). SE port nguyên ba câu hỏi và chạy nó thành một cuộc kiểm-kê 7 vòng × 3 câu (§3). Đây là floor, giữ đủ.
- **SKIP = ngưỡng/số/công-cụ của hub (n-a-theo-mandate, KHÔNG phải behind):**
- Broadcast tự đóng lối chép tool ("KHÔNG bảo bạn chép công-cụ" §1) và tự khai "Con số ngưỡng của hub không chuyển được" (§5) — nên KHÔNG có tool/số nào là floor để adopt.
- SE **đã có phanh riêng từ H11**, khác ĐƯỜNG nhưng cùng CHỨC-NĂNG với phanh hub: A4 hysteresis 0.85 (phanh trễ, dừng dưới ngưỡng để không rung quanh mốc) · A5 keep_floor 5 (sàn giữ, không dọn sạch) · A6 strike 2 (đếm strike trước khi hành động) — memory-budget.json:34-37. Vì thế chép ngưỡng hub vào là thừa và sai project-fit; SE giữ số của mình.
- **FORM tailored theo roster/topology SE:** lăng-kính áp lên **7 vòng lặp CỤ THỂ của SE** (wal-flush hook · archive-gate planner · crystallized-backfill · governance-detectors · measure-agent-memory · sleep-recovery L2 · curate L1→L2) — KHÔNG hardcode "hai sổ-cái" của hub. Cơ chế move của SE = **em-main tay** (không phải hàm-move tự-động của hub), nên câu q2 được diễn dịch thành "có phép niêm-phong máy sau move tay không" — và câu trả lời trung thực là CHƯA (xem §5).
## 5. honest-caveat
- **seal-gap loop-2 + loop-7 CHƯA vá.** Hai vòng có MOVE (archive-gate DRY-planner + curate L1→L2) hiện chỉ có bảo-toàn-byte **kỷ-luật tay** + pointer-check A7; **KHÔNG có niêm-phong máy** (đọc-lại-sau-ghi để chứng: kho-mới = kho-cũ + phần-thêm đúng byte, và khối-được-dời là chuỗi con nguyên văn). Nghĩa là hôm nay SE vẫn **mù đúng lớp lỗi** mà bài-học-2 của hub chỉ ra — một byte bị lật-giá-trị cùng độ dài trong khối-được-dời sẽ lọt qua phép bảo-toàn-byte. Bản này KHÔNG tự nhận đã đóng gap.
- **Đề-xuất đóng gap = OWNER-GATED, chờ anh (KHÔNG build ở wave này).** Codify một bước **seal-verify sau move** vào nghi-thức curate: md5 file-kho trước và sau khi dời + `Select-String -SimpleMatch` đầu và cuối khối-được-dời trong archive để chứng substring-containment (kho-mới chứa nguyên văn khối-dời). Đây là mức **NGHI-THỨC / doc-checklist**, CHƯA viết tool — đúng mandate broadcast "KHÔNG bảo bạn chép công-cụ". Mục này nằm ở `owner-gated-proposals-dot-16-07.md` số (iii), chờ anh chốt **codify-vào-checklist vs defer**. Tới khi anh chốt, gap loop-2+7 vẫn để MỞ (không tự-đóng bằng lời).
- **Scope-caveat kiểm-kê:** inventory phủ 7 vòng lặp tự-động NUÔI BỘ-NHỚ dài hạn — KHÔNG quét mọi script one-shot ngoài phạm-vi đó. `budget.measured` (memory-budget.json:144) là snapshot đông-cứng-by-design nhưng an-toàn HÔM NAY nhờ 0 automated reader (selfimprove-audit.ps1:18,110 khai ignore); standing-note ở §3 là phanh chặn wire tương-lai — KHÔNG phải bằng chứng "đã có phép niêm-phong".
- **Nấc-honesty:** `executed` = cuộc kiểm-kê đã chạy + kết-luận đã rút, KHÔNG hơn. Không có runtime-restart cần chứng (đây là doc/analysis, không đụng agent/command `.md`), nhưng cũng KHÔNG leo lên `verified` — chờ AI_INFRA `/adap-audit` chấm cross-repo.

View File

@ -0,0 +1,83 @@
# adap-report — 2026-07-16-Governance-vong-tu-bao-tri-thu-nam-san-su-that-nhan-da-do
> SISTER = SOLUTION_ERP (self = se). Report-format LOCK (5 trường). Broadcast bản thứ năm của vòng tự-bảo-trì: **sàn-sự-thật cho nhãn "đã-đo"** (content_sha256 `190c11ba2bc03fee01cdcad09afeac1a311aca085099c25cccb8967b4a26e3cb`). Bản này ĐỨNG TRÊN bản "Phương-pháp đếm token" (`e0bb5bbf…`) — bản đó kể con bệnh, bản này phát LUẬT + câu cửa-duyệt.
> Thực thi trong đợt adap 16-07 (run `2026-07-16-S127-adap-dot-16-07`, HMW-mode ON — investigator ground-truth wave-1 + workers thực thi + reviewer gate riêng). Nguồn kiểm-kê: `sub-investigator-2-spec-draft.md §VIỆC-4` (đã V1 lead 5/5). Chi-tiết thực-thi: `spec-execute-dot-16-07.md` item 7.
## 1. id-broadcast
`2026-07-16-Governance-vong-tu-bao-tri-thu-nam-san-su-that-nhan-da-do` (category: **Governance** · type: **new** · from: **ai_infra** · targets: **all-fit** · reviewer_gate broadcast: **GO** `wf_96616c03` · content_sha256 `190c11ba…`).
Con bệnh của hub: một hằng-số quy-đổi tự dán nhãn "đo thực-nghiệm" đã sống 42 phiên, mọi con mắt tin theo, cho tới khi một phép đo lại cho thấy nó sai gần gấp đôi — **cái nhãn "đã-đo" đã THAY THẾ cho việc đo**, và không bài kiểm nào đổi màu khi con số bị đổi. Luật mới của hub: mọi con số mang nhãn đo-lường (*measured / empirical / calibrated / grounded / đã-đo*) phải đi kèm **một bộ phản-chứng CHẠY ĐƯỢC** — hoặc data-point gốc + assert bao quanh (nổ khi ai đổi số mà không đo lại), hoặc một phép kiểm phủ-định (negative-control: nếu số là bịa thì nó TRƯỢT). Ba lối thoát tường-minh: gắn phản-chứng · khai miễn-trừ CÓ LÝ-DO nhìn thấy được · hoặc bỏ nhãn đo-lường đi.
## 2. nấc (G-011)
Báo cáo phủ ba hành-động con của "kiểm-kê nhãn đã-đo" tại SOLUTION_ERP. Nấc tách theo từng hành-động (no-fake §C5):
- **executed** — **4a (C1 hạ-nhãn `crystallized-backfill.ps1`)**: đã sửa file (comment-only, 0 behavior-change), script chạy exit-0 giữ nguyên dải baseline → nấc executed đầy đủ, runtime đã chứng behavior-neutral. Bằng chứng: **E2 wave-1** (§3).
- **executed → verified-pending** — **4c (câu cửa-duyệt measured-label vào `.claude/agents/reviewer.md:46`)**: đã sửa file, NHƯNG agent `.md` **không hot-reload** → chưa runtime-proven cho tới khi restart Claude Code + 1 spawn-test reviewer. Bằng chứng: **E3 wave-1** (§3). 🔴 KHÔNG tự khai `verified``verified` là do AI_INFRA `/adap-audit` chấm cross-repo.
- **agreed — OWNER-GATED (mục ii)** — **4b (C2 `memory-budget.json:89` `measured_token_estimate`)**: KHUNG luật đã quyết áp, nhưng CHƯA chạm file này — chờ anh chọn 1 trong 2 lối-thoát (rename bỏ-nhãn vs. sibling exemption-note). Ghi ở `owner-gated-proposals-dot-16-07.md` mục (ii).
- **agreed — OWNER-GATED (mục iv)** — **nguồn hằng-số `memory-budget.json:65`** (`token_estimate` — nơi định-nghĩa `/3.0` VN-diacritic): đề-xuất thêm đuôi provenance `(convention -- chua do tokenizer that tai SE; dinh-chinh 58f5afd8)`, gộp cùng câu hỏi (i) vì cùng file `memory-budget.json`. Chờ anh. Mục (iv).
Tổng: **LUẬT + câu cửa-duyệt = executed** (câu cửa-duyệt ở verified-pending vì agent `.md` no hot-reload); **2 site trong `memory-budget.json` = agreed/owner-gated** (không đụng vùng owner-authority khi anh vắng).
## 3. evidence
**PROJECT-FIT = ADOPT (tailored).** SE có scripts đo-lường (`crystallized-backfill.ps1` / `mfe-eval.ps1` / `spawn-model-audit.ps1` / `wal-recovery-test.ps1`) + `memory-budget.json` chứa hằng-số → luật "nhãn đo phải kèm phản-chứng" áp được ngay.
### 3.1 Bảng kiểm-kê nhãn "đã-đo" (transcribe từ draft §VIỆC-4 — grep `calibrat|measured|empirical|đã-đo` toàn `scripts/*.ps1` + `hmw.js` + `memory-budget.json`)
| Ứng viên | Đĩa nói (trước xử-lý) | Phân loại + xử-lý |
|---|---|---|
| **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 con bệnh — nhãn sống bằng uy-tín. **→ ĐÃ hạ-nhãn** (lối-thoát 3 "bỏ nhãn đo-lường"): `calibrated``heuristic`, comment-only, 0 đổi hành-vi. Bằng chứng E2. |
| **C2** `memory-budget.json:89` `"measured_token_estimate": 55000` | TÊN field mang chữ "measured"; note `:90` tự khai "**honest mid estimate** (~19K byte-measured + ~36K harness-injected-**est**)"; `_owner_override_note` khai "**NOT actively subtracted by the current scripts**" = **0 consumer tự-động** | ✓ Khớp con bệnh — **metadata giàu ≠ phản-chứng**. Field giàu siêu-dữ-liệu nhưng không có phép kiểm nào làm nó TRƯỢT nếu sai. **→ OWNER-GATED (ii)** — chờ anh chọn rename vs. exemption-note. |
| **Ứng viên độc-lập thứ 3?** | **KHÔNG có hằng-số mới.** `hmw.js` = 0-hit. Các "MEASURED" khác đều đo-live-mỗi-run hoặc probe-có-artifact (xem 3.3) | **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 chủ-động — Việc 3 loop 5). (b) `memory-budget.json:65` `token_estimate` "VN-diacritic ~3.0-3.5 byte/tok" = NGUỒN của `/3.0`, không provenance | (a) OK-by-architecture (snapshot visible). (b) xử cùng lớp C1 → **OWNER-GATED (iv)** thêm đuôi provenance. |
**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 thứ năm §5 cũng đóng lối văn-xuôi (đo thử thấy gần như toàn cảnh-báo-giả).
### 3.2 Diff wave-1 đã áp + verify PASTE thật
**E2 — 4a: `scripts/crystallized-backfill.ps1` hạ-nhãn (2 comment, code `:118-119` GIỮ nguyên):**
- `:25` sau: `# (4) HEURISTIC RANGE (convention, NOT measured): token headroom is a RANGE [bytes/4 .. bytes/3.0], NOT the`
- `:117` sau: `# 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)`
- Verify (PS 5.1, pure-ASCII giữ đúng gotcha #30):
```
PS> Select-String -Path scripts\crystallized-backfill.ps1 -Pattern "calibrat" -CaseSensitive:$false
(0 hit)
PS> powershell.exe -ExecutionPolicy Bypass -File scripts\crystallized-backfill.ps1
exit 0 · output giữ dòng "tok RANGE [low..high]" · dải baseline [118424 .. 157898] == C-đo (không đổi hành-vi)
```
**E3 — 4c: `.claude/agents/reviewer.md:46` câu cửa-duyệt measured-label (sau §"Apply 5-category checklist"):**
- `:46` (nội dung): `**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.`
- Verify:
```
PS> Select-String -Path .claude\agents\reviewer.md -Pattern "TRƯỢT"
.claude\agents\reviewer.md:46: ...phép kiểm nào khiến con số này TRƯỢT nếu nó sai?... (≥1 hit)
```
- Nấc: **verified-pending** — agent `.md` không hot-reload; runtime-proof chờ restart + spawn-test reviewer.
### 3.3 Positive-exemplars SẴN của SE (SE đã có "măng đúng-nghĩa" trước broadcast — không phải zero-base)
- **Negative-control ĐÃ CHẠY:** thư đính-chính `broadcasts/outbox/ai_infra/2026-07-16-se-to-ai_infra-dinh-chinh-token-label-hash-verify.md` (`58f5afd8`, 2026-07-16) — chính SE đã tự đính-chính cái nhãn token sai trước khi hub phát luật; đây là hành-động "phát-hiện + sửa nhãn sai" đúng tinh-thần bản thứ năm.
- **Measured đúng-nghĩa (execute-and-measure per-run, KHÔNG snapshot đông-cứng):**
- `scripts/spawn-model-audit.ps1:22,33,45,59-60` — "MEASURED (this script really reads it, offline, from disk)"; probe H23-precedence S126 THẬT (2026-07-16); nhãn "not-measurable (ii)" đã FLIP sang "MEASURED" khi đo thật → nhãn phản-ứng với phép đo, không thay-thế nó.
- `scripts/wal-recovery-test.ps1:35,367-371` — oracle `EMPIRICAL` "declared, not hidden"; `ca1/ca2 EMPIRICAL` (measured, not asserted) vs `ca0/ca3 DEFINITIONAL` (khai rõ) — tự phân-biệt measured vs definitional trong chính output.
- **Borderline đã-né-đúng-cách:**
- `scripts/mfe-eval.ps1:176,180,266` — dùng cùng divisor `/4.0..-/3.0` NHƯNG in "Reported as a RANGE [bytes/4 .. bytes/3.0]" honest, KHÔNG dán nhãn `calibrated`; `:266` "(MEASURED, not target-then-force)" = computed-live per-run → **GIỮ nguyên** (không phải con bệnh).
- `scripts/memory-selfimprove-audit.ps1:283,304,322` — 3 site "calibration-interim" = **miễn-trừ VISIBLE sẵn** (in ra trong report, đúng lối-thoát 2 "khai miễn-trừ có lý-do nhìn thấy được") → GIỮ.
## 4. tailored-gì + skip-gì-vì-sao
- **FUNCTION-floor adopt:** (i) **LUẬT** "nhãn đo-lường phải đi kèm phép kiểm có thể làm nó TRƯỢT" — áp qua kiểm-kê + hạ-nhãn C1 + owner-gate C2. (ii) **Ba lối-thoát tường-minh** — SE dùng đủ cả ba: C1 = *bỏ nhãn* (hạ xuống `heuristic`); `memory-selfimprove-audit` calibration-interim = *miễn-trừ visible*; C2 = chờ anh chọn giữa *bỏ nhãn* (rename) và *miễn-trừ visible* (sibling note). (iii) **Câu hỏi cửa-duyệt** "phép kiểm nào khiến con số này TRƯỢT?" — port nguyên vào `reviewer.md:46` (E3). → Giữ đủ floor, KHÔNG hạ.
- **FORM tailored SE:** câu cửa-duyệt gắn vào checklist 5-category của `reviewer` (roster SE) thay vì máy-quét độc-lập; kiểm-kê chạy thủ-công qua investigator ground-truth wave-1 thay vì auto-scanner.
- **SKIP có chủ-đích (n-a phần tuỳ-chọn):** **máy quét cuối-phiên của hub KHÔNG port** — broadcast §4 tự khai "Máy quét là phần tuỳ chọn — **luật + câu hỏi cửa-duyệt mới là phần chuyển được** sang mọi dự-án", và §5 khai máy chỉ đo SỰ-CÓ-MẶT không đo SỰ-ĐÚNG (lưới đúng-sai vẫn là người-duyệt + mẫu-dương). SE đóng lối máy-quét văn-xuôi cùng lý-do hub (§5 — quét văn-xuôi cho gần-toàn cảnh-báo-giả). Chọn chuyển phần **chuyển-được** (luật + câu cửa-duyệt), bỏ phần **tuỳ-chọn** (scanner). Đây là project-fit skip theo đúng mandate broadcast, KHÔNG phải behind.
## 5. honest-caveat
- **(a) 4c verified-pending — chưa runtime-proven.** `.claude/agents/reviewer.md` không hot-reload; câu cửa-duyệt mới ở `:46` chỉ live sau khi restart Claude Code + 1 spawn-test reviewer thực-tế chạy qua nó. Nấc giữ `verified-pending`, KHÔNG khai `verified` (thuộc AI_INFRA `/adap-audit`).
- **(b) Văn-xuôi `docs/` ngoài scope sweep.** Kiểm-kê chỉ phủ `scripts/*.ps1` + `hmw.js` + `memory-budget.json`. Một nhãn "đã-đo" nằm trong prose tài-liệu sẽ KHÔNG bị bắt bởi đợt này — hub §5 cũng đóng chủ-đích lối văn-xuôi (đo thử thấy gần-toàn cảnh-báo-giả), nên đây là giới-hạn CÓ-CHỦ-ĐÍCH, không phải lỗ-hổng vô-tình.
- **(c) F11 — citation-trap gen-2 (S123):** câu cửa-duyệt ở `reviewer.md:46` **CHỨA CHÍNH các nhãn nó săn** (`measured/empirical/calibrated/đã-đo`) — đây là **mention-not-use** (nhắc tên marker để định-nghĩa luật, KHÔNG phải một hằng-số thật mang nhãn). Nếu mai sau SE port một **máy-quét khớp-mẫu tự-động**, dòng `:46` này sẽ tự-khớp và tự-flag chính nó (đúng bài citation-trap S123: doc định-nghĩa anti-pattern tất-yếu chứa mẫu đó). ⇒ Khi đó **BẮT BUỘC kèm exemption-note** cho `reviewer.md:46` (discriminator = enclosure use ⟂ mention), giống 3 site `calibration-interim` đã có miễn-trừ visible. Ghi trước ở đây để lần port scanner không tái con bệnh.
- **(d) OWNER-GATED — 2 quyết-định của anh (`owner-gated-proposals-dot-16-07.md`):** (ii) C2 `budget:89` lối-thoát rename `measured_token_estimate``token_floor_estimate` (sạch nhất, điều-kiện: grep toàn repo → nếu >1 ref thì update cùng commit; consumer script = 0 đã khai) **vs.** exemption-note sibling (ít-chạm). (iv) `budget:65` thêm đuôi provenance nguồn hằng-số `/3.0`. Cả hai cùng file `memory-budget.json` → gộp 1 lần anh trả lời. Worker CHƯA đụng 2 site này (an-toàn vùng owner-authority khi anh vắng).

View File

@ -22,7 +22,7 @@
# (3) NOT-FOR-SUB : this measures the LEAD hot-feed only. Sub packs are
# hand-distilled by em-main per task; blind-pouring backfill
# into a sub dilutes relevance. If invoked -Tier sub => WARN.
# (4) CALIBRATED RANGE: token headroom is a RANGE [bytes/4 .. bytes/3.0], NOT the
# (4) HEURISTIC RANGE (convention, NOT measured): token headroom is a RANGE [bytes/4 .. bytes/3.0], NOT the
# false-precise byte/4. VN-diacritic hot-memory ~3.0-3.5
# byte/tok, so bytes/3.0 = worst-case (fewest tokens hidden
# behind the bytes). measured_headroom uses the worst case.
@ -114,7 +114,7 @@ foreach ($rel in $hotloadSources) {
}
}
# calibrated RANGE (invariant 4): tok_low = optimistic (bytes/4), tok_high = worst (bytes/3.0)
# 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)
$tokLow = [int][math]::Round($totalBytes / 4.0)
$tokHigh = [int][math]::Round($totalBytes / 3.0)