[CLAUDE] Docs: S125-S126 closeout GOP — H23-precedence DO (spawn-param THANG hard-pin, /fable-real SONG) + sweep all-inherit va 15+3+5 + gotcha #83 + hub-mail h23-result
All checks were successful
Deploy SOLUTION_ERP / build-deploy (push) Successful in 5m30s

- NHOM A restart-verify: A1 tier:'fable' tren reviewer pin-opus -> resolved claude-fable-5 (spawn-param THANG); A2 no-tier -> claude-opus-4-8 DU lead=Fable (pin an runtime); A3 autoMemory WRITE-path OK (project_h23_spawn_precedence.md moi).
- B1 sweep all-inherit floor-song: 15 dong/5 file + 3 cung-lop lot-pattern + 5 dong H23-stale o 3 command-file (H1 bat) -> VA HET; spawn-model-audit Section-D flush H8->S124 + effort-check (fault-inject 2-chieu PASS, 14 duong-gia -> 0); governance-detectors C3 seed +worker-tier-pin; re-grep 0 floor-song; suite 45 = baseline 0-new.
- vocab-alias-map §3 canonical flip -> worker-tier-pin (all-inherit/two-tier = 2 alias cu); STATUS:6 FROZEN-diary label (het H24-3 lag); STATUS:25 + agents/README:5 sync.
- Email hub h23-precedence-test-result stamp 945cf3ad (reviewer-gate FAIL bat 3 loi truoc stamp -> gotcha #83 aggregate-cumulative) + _index cung luot.
- B3/B4 owner-gated: soan b3-b4-owner-gated-proposals.md CHO ANH (mega-line retier + budget:74 wording) — 0 apply.
- Closeout: harvest 4 lane + 2 monitor (H2 GATE PASS 5/5, 0/29 orphan; H1 3/4 clean + 5-spot fix) + curate moved-not-cut reviewer/inv-cb + carry disposition (DONG 2: restart-s124, h23-fable-test-postrestart; MO re-stamp 9) + H24 counter=5 + pilot H22 D5 (pause-roundtrip + hook-fire re-verified; cross-model PENDING).
- Governance/tooling-only: 0 prod-code, 0 mig, test 509 GIU, bundle FROZEN.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
This commit is contained in:
pqhuy1987
2026-07-16 15:19:08 +07:00
parent 010d12c5f8
commit e9124fc6de
34 changed files with 403 additions and 89 deletions

View File

@ -1,9 +1,21 @@
# WAL — auto-generated, không sửa tay
updated: — | session: — | branch: —
goal: (trống — không có mạch dở)
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.
chain:
(rỗng)
[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)
next: (trng)
verify: (trống)
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.
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)

File diff suppressed because one or more lines are too long

View File

@ -86,7 +86,7 @@ Bearer từ `POST api.solutions.com.vn/api/auth/login` → status matrix expecte
- **[→ git 07-12 · Mig64 IsPublic shipped since] Supplier import-v2 LENS-4 public/visibility recon:** 3 SELECTION consumers ALL hit `GET /suppliers` ListSuppliersQuery (SuppliersPage:83 · PeDetailTabs:2222 · ContractCreatePage:321); DISPLAY-of-existing joins by stored SupplierId MUST NOT filter (ContractFeatures/PeFeatures/Dashboard); write-guard backstops `ContractFeatures.cs:64`+`PurchaseEvaluationSupplierFeatures.cs:49`. Rec fail-closed default + stored `IsPublic bit`. Tag `[s112b, supplier-visibility, fail-closed-default]`.
- **[all verbatim → archive/2026-07.md] S98 verify-lane (detector 28→25, 8 derived-stale=FP vs canonical 61/89/440/79; grep exact misses README variant) · S97 feedback-audit (#77/#78/#79 `gotchas.md:1301/1317/1325`; #53-garble×6=cicd MEMORY-self-target ~17.5KB; Mig60 wrong-table Approvals→Mig61 Changelogs) · 07-01 Supplier-predecessor SUPERSEDED by 07-06 · S93 MFE denom=marks/AS/guards dedup-AS-xref=29, coverage exact-id OR ≥2-content-word.**
- **[→ archive/2026-07.md @S125 + archive/2026-06.md] PE FROZEN-Mig59 + go-live recon (S87→S89):** giữ nóng ⭐ LATENT #73-class HoSoLink PUT-clears (`PurchaseEvaluationFeatures.cs:280` vs PeHeaderForm PUT omits, no preserve-test) · 3 cơ-chế finalize coexist AUTO-first · budget-matrix authz-asymm PRO=drafter/CCM=role (`PeSuggestedPriceFeatures.cs:153-199`).
- **[→ archive/2026-07.md @S125 + 2026-06.md] PE FROZEN-Mig59 recon (S87→S89):** giữ nóng ⭐ LATENT #73-class HoSoLink PUT-clears (`PurchaseEvaluationFeatures.cs:280`) · 3 cơ-chế finalize coexist AUTO-first · budget-matrix authz-asymm PRO=drafter/CCM=role.
- **[→ archive/2026-07.md @S125 + _INDEX] 2026-06-20 governance recon:** `harness-11-engine.md`=CANONICAL (D5-D10) · `error-ledger.md` §L.a/§L.b · H14 age-decay KHÔNG căn-cứ cắt feature · EVAL golden-set 14q weekly-manual.
- **[→ archive/2026-07.md @S125 + _INDEX] PE recon (S69→S76):** WinnerQuoteTotal DERIVED 3-site · Budget gate PURE-ROLE (`PurchaseEvaluationFeatures.cs:800-801`) · V2 routing IGNORES roles (=ApproverUserId) 100% LINEAR.
- **[→ archive/2026-07.md @S125 + _INDEX] Office/HRM recon (S65→S69):** 21 `Off_*` keys · 10 office pages SHA-mirror · golive-flip=remove `RevokeTemporarilyHiddenModulesAsync` (`DbInitializer.cs:2040`) · **gotcha #66** `index.css` ngoài @layer → heading cần `text-white!`.
@ -105,10 +105,10 @@ Bearer từ `POST api.solutions.com.vn/api/auth/login` → status matrix expecte
- **[→ archive/2026-07.md @S125 · Mig 66 SHIPPED] S117 PE giá-chốt RANGE Min+Max invest [fable-real-single]:** ApprovedPrice WRITE 1-site `ApplyApprovedPriceOnFinalize` (3 nhánh DaDuyet; skipToFinal chỉ dời pointer) · ⭐ HĐ-gen KHÔNG đọc ApprovedPrice (GiaTri=SUM IsSelected `CreateContractFromEvaluationFeatures.cs:88-100`) · `types/purchaseEvaluation.ts` KHÔNG SHA-mirror 2-app (edit riêng) · latent: winnerQuoteTotal subset ÂM vs validator `>=0 :501`. `[s117, prominmax]`
- **[→ archive/2026-07.md @S125] S117 PE lũy-kế RCA [fable-real-single]:** phiếu A/018 KHÔNG DaDuyet (opt-in finalize UNCHECKED S97 `PeWorkflowPanel.tsx:57`) · ⭐ residual DISPLAY-LIE #78 nửa-còn-lại: `endsBeforeCeo`=config-TRUE bất chấp pointer (detail `:1152-1154` · list `:647-651`) · 3 cơ-chế finalize phân biệt Mig58-optin ≠ Mig53/54-threshold ≠ Mig31-pointer · fix-rec pointer-aware, KHÔNG nới filter lũy-kế `PeFeatures.cs:906`. `[fable-S117]`
## S116 PE negative-quote invest (fable-clone ensemble, 07-13)
- Hội-tụ **FE-ONLY**: BE/DB nhận âm sẵn (no validator/CHECK); NS giữ-nguyên architectural; 3 chốt FE parseVnd/format/gate; sign-aware `VndInlineEdit:1003` tái dùng; chỉ submit-guard `:206` hard-reject. ⚠️ Lesson: quote sống `details[].quotes` KHÔNG `suppliers[].quotes`. **Detail:** `.claude/workflows/runs/2026-07-13-pe-negative-quote/` + session-log S116 + archive/2026-07.md 2×LENS. `[Opus-S116]`
- **[→ archive/2026-07.md @S126] S116 PE negative-quote invest (fable-clone):** hội-tụ **FE-ONLY** (BE/DB nhận âm sẵn); ⚠️ quote sống `details[].quotes` KHÔNG `suppliers[].quotes`. Detail: `runs/2026-07-13-pe-negative-quote/`. `[Opus-S116]`
- **[→ archive/2026-07.md @S125 verbatim] S122 retro-harvest 7 orphan (`wf_5ce007c4-980`, 836K tok, 6/6 lane neo-SHA-thật 0-garble):** 🔴 LẬT tiền-đề — **0/7 mất, 7/7 ĐÃ XONG chỉ synthesis SAI CHỖ** orphan-authority đo TÊN không đo NỘI-DUNG (8 dương-giả/25 run = 32%) · 🟢 tái-dùng: (a) ordinal-mig = sorted-listing, KHÔNG tin nhãn doc (doc = DẪN-XUẤT) · (b) hash-lệch ≠ invariant-vỡ (`git diff --no-index` 2-app exit-0 = mirror còn) · (c) owner-decision truy VÀO code (`:376` cite số decision) · 🔸 lane-RỖNG ≠ mất (synthesis trên đĩa `run.md:8`per-turn ≠ per-task) · 🔴 memoryPack premise CÓ THỂ SAI (S113→thật S116), lane tự truy git đừng tin brief. Tag `[s122-retro-harvest, false-orphan-by-naming]`.
- **[→ 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]`.
## 🔄 Curate trigger
- >~30KB → archive recent → L2 `archive/<period>.md` (byte-exact append) + `_INDEX.md` substring pointer. Stale >3mo → remove.

View File

@ -43,3 +43,7 @@
- **[→ git+session-log 07-07] S105 BVAAU cross-repo auth RCA:** Q1 root-cause = FE Home MÙ session (bundle cũ relative `/api` trên site TĨNH `web.config` loại `^/api/``/api/auth/me` 404 → anonymous); fix API_BASE-absolute `51c69fb` LIVE. Q2 CRM1 hở 2 tầng (FE soft + API `enforceCrmGate:false`) → flip `AUTH_ENFORCE_CRM_GATE=true`. Q3 Zalo "User_ID" KHÔNG có UI. Class **"hub+site-tĩnh relative-`/api` chết im prod"**; #53-garble-7 → SendMessage-resume recover. *(verbatim → archive/2026-07.md)*
- **[→ 07-12 LENS-3 entry above + git 07-06] S104 Supplier 30-field 🅰️ schema-invest WF `wf_5ac2cdb0`:** SUPERSEDED anchors giữ: ClosedXML 0.105.0 = Excel-standard (KHÔNG OpenXml-raw, `csproj:8`); reuse-existing-cols>parallel; `UpdateSupplierCommand.cs:49-57` blind-set=latent#73; seed fill-nulls-if-exists (`DbInitializer.cs:2781`); `SupplierDto` hand-projected 2-site (`GetSupplierQuery.cs:21`+`ListSuppliersQuery.cs:48-50`); `Dialog.tsx:48` max-h-70vh; extract `ui/PathLink.tsx`. Chốt Mig 62 +18 nullable. *(verbatim → archive/2026-07.md)*
## @S126 hook-curate batch (2026-07-16, em-main single-writer, moved-not-cut verbatim từ L1)
- **S116 — PE negative-quote invest (fable-clone ensemble, 07-13):** Hội-tụ **FE-ONLY**: BE/DB nhận âm sẵn (no validator/CHECK); NS giữ-nguyên architectural; 3 chốt FE parseVnd/format/gate; sign-aware `VndInlineEdit:1003` tái dùng; chỉ submit-guard `:206` hard-reject. ⚠️ Lesson: quote sống `details[].quotes` KHÔNG `suppliers[].quotes`. **Detail:** `.claude/workflows/runs/2026-07-13-pe-negative-quote/` + session-log S116 + archive/2026-07.md 2×LENS. `[Opus-S116]`

View File

@ -77,10 +77,10 @@ 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`.
- **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-TAMPERRCA 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/`.
- **S123 governance 4-change review — PWF (3 must/1 MAJOR/3m):** detail → [topic](project_s123_governance_4change_review.md). 🔴 **#53 garble tại TAO; đĩa KHÔNG cứu vì chưa ghi diary ⇒ Luật: ghi diary TRƯỚC return.** Bài: vá-1-lớp⇒grep MỌI detector cùng-lớp TRONG diff · fault-inject N/N chỉ chứng trục ĐÃ chạm ("trục nào KHÔNG có ca?") · luật-viết≠luật-làm · "N/N" trộn đo+dựng-lịch-sử=false-specificity · "fix" bằng đổi-format-cho-trượt-mẫu = Goodhart rời-tập-đo.
- **[→ 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-TAMPERRCA **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-BOMbuild-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`.
@ -90,14 +90,15 @@ Adversarial pre-commit reviewer SOLUTION_ERP. Read-only verify + live curl prod
- **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.
- **S92 (2026-06-29) PROD-security hide 5 menu-groups admin-only (uncommitted) — PASS (1 note):** A-E upheld; CatalogManager Danh-mục stripped (by-spec, 0 users). → [project_s92_admin_only_modules_revoke.md](project_s92_admin_only_modules_revoke.md).
- **June-2026 digest — LESSON-ONLY (verbatim → `archive/2026-06.md` 70KB + `_INDEX`; S89/S90/S91 PE FROZEN):** merge-distill fabricates false-specificity ⇒ QUALITY gate AFTER presence · sha = self-declared frontmatter NOT recompute · spec-scope-framing can be FALSE ⇒ read changed-set · fail-closed guard BEFORE terminal-state + server-recompute no-trust-client · TRACKED = check-ignore ≠ git-ls-files(committed) · public-grant root NOT inherit-root · upgrade MUST MUTATE row NOT skip-existing; menu-hide ≠ API-lock · single→multi stops at display-layer.
- **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/`.
---

View File

@ -46,3 +46,9 @@
- **S116 (2026-07-13) outward-email GATE se→ai_infra H-22 WAL restart runtime-verify — PASS (0 over-claim / 3 minor):** file `broadcasts/outbox/ai_infra/2026-07-13-se-to-ai_infra-h22-wal-restart-runtime-verify.md`. 6/6 ground-truth re-run MATCH — #1 rev-list=0 · #2 tree clean (modulo email-artifact itself untracked) · #3 HEAD=88bd8e6 · #4 WAL empty-template · #5+#6 EXACT: archive-gate 12/12 sub<25.6KB (tightest investigator-codebase 25237, 363B headroom) + A7 246/246 pointers 0-fail; crystallized 382713B/380K-tok cap/252429-tok headroom. Caveat section STRONG+prominent (own §header "Nấc honest", bold WAL RỖNG/CHƯA, enumerates a/b/c verified vs content-recovery NOT; line31 defers real-persistS111 Stop-hook×2). No implicit "full restart-recovery verified". **Minor: (1) caveat item (a) "WAL persist qua restart" evidentiary-WEAK — `.claude/WAL.md` git-COMMITTED @88bd8e6 empty-template 0-drift → post-reboot existence = git/filesystem guarantee NOT WAL-mechanism proof (self-corrected by line31 defer-to-S111); (2) unit-notation "382.7KB / 380K-tok" juxtaposes bytes-vs-tokens (382.7KB≈95-127K tok not 382.7K) — looks scarier/understates headroom, "(fits)+252K" resolves; (3) current tree clean modulo email-artifact-itself (untracked).** Lesson: persist-claim on git-tracked WAL verify tracked+0-drift FIRST; "file survives restart" = git/filesystem property, mechanism-persist proof lives at Stop-hook run (S111). No Smart-Friend lower report well-calibrated toward humility.
- **S117 (2026-07-13) PE negative-quote FE-only spec-review (financial-invariant-owner lens) PASS (0 blocking, 1 confirm + 2 test-notes):** budget-intact VERIFIED UpsertQuote (`PurchaseEvaluationDetailFeatures.cs:282-366`) writes 0 budget fields; quote ThanhTien flows ONLY into read-only display aggregates (currentProposalTotal/prevSelectedTotal :911-926 + winnerQuoteTotal :1188) NEVER mutates PeWorkItemBudget. #81 IsWinner + S114 multi-winner SAFE: winner-derive keyed on `IsSelected` boolean, sign-agnostic (negative ThanhTien irrelevant). R1 baked (ContractFeatures.cs:46 GiaTri>=0 untouched=manual path; CreateContractFromEvaluation:88-90 no-clamp=PE-inherit). R2 FE:201/BE:206 BOTH `SUM(ThanhTien where IsSelected)<=0` = IDENTICAL algebraic sum → 0 divergence from negatives. CONFIRM raised: enterable-negatives OPERATIONALIZE net-value driving CEO-escalation gate (winnerQuoteTotal<CeoApprovalThresholdCCM skip-CEO) governance, not display; owner sign-off. T3 note: `SeedWinnerWithQuoteAsync` seeds 1 quote/winner "mixed net>0 submittable" half needs multi-quote seed. **Lesson: 2-tier guard divergence check = compare SUM EXPRESSION not just comparator; derived-flag safety = trace what flag is KEYED-ON (IsSelected≠ThanhTien); "budget intact" true for RECORD but quote-sum still flows to display+governance aggregates.**
## @S126 hook-curate batch (2026-07-16, em-main single-writer, moved-not-cut verbatim từ L1)
- **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/`.

View File

@ -46,4 +46,5 @@ H1 tooling-freshness auditor **SOLUTION_ERP-self**. Read-only + **propose-only**
- **2026-07-14->07-15 (S118 @end + S119 @start+META -> `archive/2026-07.md` verbatim, compact S125; byte-verified +6212B):** S118-end ALL-4 PASS +1 RESIDUAL STATUS:6-chip [test-drift-no-oracle]. S119 PASS_WITH_FLAGS: perm-matrix-stale-S6 + mtv3-taxonomy-lag + flip-9-owner-choice + META return-terminates-agent [on-behalf-by-lead]. Lessons hoisted -> user-memory feedback files.
- **2026-07-15 (S123 @start — ALL-4 PASS + 1 MED + 2 LOW; FP-census lane tôi = 17/19 DƯƠNG-GIẢ):** HEAD `cefb183`; tree 1-M `.session-counter.json` (em-main tick 1→2, expected). **①SKILL PASS** 6+23+18 identical S122. **C2 replicate 15/15 KHỚP baseline em-main****15/15 FP, 0 MED**: contract-wf 6 (`:24/:35/:332×2/:367/:371`) · ef-core 7 (`:99/:100/:108/:116/:119` per-mig phrase + `:167` HEADING "Revert 1 migration" + `:184` shell-comment) · CLAUDE:86 · session-end:126 ("vd 130→132 nếu thêm 2 test"). Ratio-band ĐÚNG việc (far-from-canonical→LOW). 🔴 **ĐỪNG vá 13 flag 2 SKILL này** — noise cấu-trúc, KHÔNG suy-giảm. **②ROSTER PASS 14=14=14** (disk 14 = 15 file README · STATUS:25 · hmw.js VALID_ROLES) + **14/14 `model: inherit`**; `agents/README:3` B1-pointer 0-số ✓. 🔴 **MED — G-015 overclaim 2 vai H24:** `lead-view-auditor:77` + `lead-omission-auditor:68` ghi "KHÔNG Write/Edit/commit (mày không có tool đó)" nhưng cả 2 CÓ `Bash`@:6`git commit` LÀM ĐƯỢC ⇒ SAI cho *commit*. 5 persona khác CÓ caveat; đúng 2 vai soi-LEAD thì KHÔNG. 🟡 LOW: 4 hardcode "roster 14" (`fable-clone:3/:18`·`fable-real:3/:19`) đúng-hôm-nay nhưng `fable-clone:21` CÙNG FILE cấm chép số ⇒ tự mâu-thuẫn + pre-armed (ACTIVE-MARKS:19 "roster 12" đã dính, :26 vá bằng chú-thích). **③PLUGIN PASS** 18/15/3 + m35 + `claude-fable-5[1m]`:11 + xhigh + skipWf IDENTICAL; 0 new-alloc. **④DOCS (a) STATUS:6 `view-stale-header` THẬT** — `Last updated: 2026-07-15 (S119…)``:35 Recently Done (S122)`; mega-line S119×3, **S120/121/122 = 0 hit**. **H24-1 MÙ** (chỉ so NGÀY; 07-15=newest⇒0 flag) = **âm-giả chứng-minh-được**. Tái-phát **lần 4** (S116/S117/S118) ⇒ fix CẤU-TRÚC, không bump. **(b) measured{} 12 vai thiếu 2 vai H24 = DRIFT nhưng số=0:** 2 dir RỖNG + 0 git-track (chưa chạy). Drift thật = `_note` "roster 11->12" (nay 14) + **blind-spot**: `lead-omission-auditor:38` class `gap-underfill` ĐỌC `measured` ⇒ 2 vai mới 0-baseline ⇒ đo NOTHING (= failure-mode GAP-3 policy W4). Fix RẺ: `measure-agent-memory.ps1:10` **auto-discover**, 0 hardcode. 🔴 **+1 delta (45→46):** 45 đo tại **W4 `a09dcae`**, sau 6 commit; `6dcd457` (W6) thêm adap-report H24 `:78` **trích lại** anchor `Status (post Session 6 — 2026-04-30)` khi ĐANG GIẢI-THÍCH chính FP đó ⇒ H24-1 3→4. Số-học khép. 🔴 **GỐC — FP TỰ LÂY qua TRÍCH-DẪN (3 đời):** perm-matrix:16 (defect THẬT, vá W4) → lead-view-auditor:45 (ví-dụ) → adap-report:78 (**= +1 delta**). **Mỗi doc viết VỀ FP tự thành FP.** Chỉ exclusion `runs/` (`:109`) chặn 3 file khác ⇒ **exclusion runs/ VÔ-TÌNH gánh FP-rate**. **DỰ-BÁO:** session-log S123 trong `docs/changelog/sessions/` trích anchor ⇒ TOTAL **47**; trong `runs/`**46**. 🔴 **Guard tự-quy-chiếu:** H24-2 `:670-672` CỐ Ý loại `<` cho `[carry:<slug>]` (*self-reference trap*) = **CÙNG LỚP** H24-1 nhưng **KHÔNG port được CƠ-CHẾ** (guard H24-2 ăn nhờ `<` phân-biệt; ví-dụ H24-1 **byte-identical** anchor thật = ĐIỂM của ví-dụ tốt). **ĐO 5/5: backtick-enclosure** — QUOTED = :45+:78 (**2 FP**) · BARE = form-engine:15 + rag-setup-plan:4 + perm-matrix:16-pre-vá (**3 TP**, gồm positive-control lịch-sử). ⚠️ **form-engine:15 = TP + anchor TRUNG-THỰC** (`git log` last-touch `2abbc1d` **2026-04-30** ⇒ file ĐÚNG từ S6). 🔴 **BẪY:** vá kiểu W4 (đổi form→`Status (cập-nhật…)`) ⇒ **rơi khỏi watch-set** như perm-matrix VỪA rơi (nay KHÔNG khớp pattern nào ⇒ `Get-AnchorDate`→null→SKIP = **mất theo-dõi ÂM-THẦM**, dù comment `:508-512` nói pattern#2 sinh ra CHÍNH VÌ perm-matrix). form-engine:15 = **TP DUY-NHẤT nuôi pattern#2**. **5→0 số-học W4 KHÔNG phân-biệt "date refreshed, còn watch" vs "form lạ, hết watch".** Model **Opus 4.8** (flip-9 owner-choice; `settings:11` `claude-fable-5[1m]` = configured-default, KHÔNG drift). ⚠️ L1 over-cap carry S124. Tag `[s123-start, fp-census-17-of-19, fp-self-propagating-via-quotation, backtick-discriminator-5-of-5, g015-overclaim-2-new-vai, status6-stale-header-4th-recur, measured-12-of-14, perm-matrix-silent-watch-loss]`
- **2026-07-16 (S125 @start — ①②③ PASS + ④ PASS_WITH_FLAGS; worker-tier-pin S124 VERIFIED disk+commit):** HEAD `3aacdf9`(wal), tree clean. **②ROSTER PASS** 14 persona; **14/14 `model:opus`@:5+`effort:max`@:6** on-disk+committed (`git show HEAD:tooling-auditor.md`✓); agents/ last-touch `23bbe97`(S124), 0-since. **①SKILL PASS** 6+23+18 identical S123; contract-wf/ef-core count-stale=monthly(08-01). **③PLUGIN PASS** 18/15/3 IDENTICAL; `claude-fable-5[1m]`:11 lead default UNCHANGED (pin=SUBS-only). **R6 ✓** project `settings.json:2` `autoMemoryDirectory`=`.claude/auto-memory`; my ctx-inject FROM that path ⇒ relocate WORKS; authority ③ user-global. **④ 5 RESIDUAL — worker-tier-pin doc-sync NOT finished:** HIGH `STATUS:25` row "all-inherit/TOÀN roster `model:inherit`" + stale "cả **12** lên top-tier"/"**10** product"(roster 14) · HIGH `agents/README:5` "TOÀN BỘ sub `model:inherit`" CONTRADICTS same-file :38 worker-tier-pin · MED `fable-real-runbook.md` **≥2 FALSE CITATION** `:227`/`:563` cite `investigator-codebase.md:5`/`reviewer.md:5`=`inherit` but disk=`opus` (fix NON-trivial: hmw.js alias-vs-frontmatter "chưa test") · MED `fable-real.md:37` · LOW `fable-clone.md:43`(corrected :57). 🔴 **ROOT:** `STATUS:41-42` blurb CLAIMS "doc-sync **ĐÃ vá**" but 5-spot prove INCOMPLETE = tick-no-evidence → NOT-DONE. Ack machine-fired: STATUS:6 header H24-3; harness-11:57 vocab-seed +worker-tier-pin(D7). **Method:** frontmatter tier-flip→grep MỌI doc citing agent `:5`=inherit. Model self **Opus 4.8**. ⚠L1 carry S126. `[s125-start, worker-tier-pin-verified, doc-sync-incomplete-5spot, false-citation-runbook, da-va-but-incomplete, mem-gap-s124]`
- **2026-07-16 (S125 @start — ①②③ PASS + ④ PASS_WITH_FLAGS; worker-tier-pin S124 VERIFIED disk+commit):** HEAD `3aacdf9`(wal), tree clean. **②ROSTER PASS** 14 persona; **14/14 `model:opus`@:5+`effort:max`@:6** on-disk+committed (`git show HEAD:tooling-auditor.md`✓); agents/ last-touch `23bbe97`(S124), 0-since. **①SKILL PASS** 6+23+18 identical S123; contract-wf/ef-core count-stale=monthly(08-01). **③PLUGIN PASS** 18/15/3 IDENTICAL; `claude-fable-5[1m]`:11 lead default UNCHANGED (pin=SUBS-only). **R6 ✓** project `settings.json:2` `autoMemoryDirectory`=`.claude/auto-memory`; my ctx-inject FROM that path ⇒ relocate WORKS; authority ③ user-global. **④ 5 RESIDUAL — worker-tier-pin doc-sync NOT finished:** HIGH `STATUS:25` row "all-inherit/TOÀN roster `model:inherit`" + stale "cả **12** lên top-tier"/"**10** product"(roster 14) · HIGH `agents/README:5` "TOÀN BỘ sub `model:inherit`" CONTRADICTS same-file :38 worker-tier-pin · MED `fable-real-runbook.md` **≥2 FALSE CITATION** `:227`/`:563` cite `investigator-codebase.md:5`/`reviewer.md:5`=`inherit` but disk=`opus` (fix NON-trivial: hmw.js alias-vs-frontmatter "chưa test") · MED `fable-real.md:37` · LOW `fable-clone.md:43`(corrected :57). 🔴 **ROOT:** `STATUS:41-42` blurb CLAIMS "doc-sync **ĐÃ vá**" but 5-spot prove INCOMPLETE = tick-no-evidence → NOT-DONE. Ack machine-fired: STATUS:6 header H24-3; harness-11:57 vocab-seed +worker-tier-pin(D7). **Method:** frontmatter tier-flip→grep MỌI doc citing agent `:5`=inherit. Model self **Opus 4.8**. ⚠L1 carry S126. `[s125-start, worker-tier-pin-verified, doc-sync-incomplete-5spot, false-citation-runbook, da-va-but-incomplete, mem-gap-s124]`
- **S126 (2026-07-16) session-end CHỐT [opus-worker, em-main VERIFY+APPEND]:** 3/4 PASS-clean (① SKILL 6-project 0-diff — task gọi "check-email/send-email skill" thực-ra = **COMMANDS** `.claude/commands/`, 6 skill thật 0-đổi · ② ROSTER 14/14 `opus`@:5 + `max`@:6 disk-verified; README:5 + STATUS:25 flip worker-tier-pin ⇒ **S125-HIGH "README:5 contradicts :38" RESOLVED** · ③ PLUGIN 18/15/3 + `fable-5[1m]`/xhigh IDENTICAL) + ④ DOCS PASS_WITH_FLAGS: 🎯 bắt **5 dòng "H23-precedence CHƯA test" SÓT ở 3 command-file** (`session-start.md:50/:52` canonical BƯỚC 0.6 đọc MỖI phiên · `fable-clone.md:63/:65` cross-ref "hmw.js:44-52 mang cùng ghi-chú" ĐẢO/GÃY sau khi hmw.js vá · `ultra-on.md:35`) trong khi 7 file khác đã "ĐO S126" — **same-class-miss ×2 trong CÙNG PHIÊN đang vá class đó**; em-main vá NGAY 5/5 + LOW STATUS:25 "10+2"→"10+4". Learned: fact-runtime chốt ⇒ grep MỌI file mang claim cũ GỒM lớp **command-doc** (sweep-synthesis liệt consumer thiếu lớp ⇒ miss tái-sinh; commands/*.md blind-spot khớp S57/S99 method-mine). Tag `[s126-end, 5spot-h23-stale-caught, commands-layer-blindspot, s125-high-resolved]`.

View File

@ -2,7 +2,7 @@
> 🔴 **Số vai canonical → [`docs/STATUS.md`](../../docs/STATUS.md) §Sub-agents. KHÔNG chép số vào file này** (B1 derived-trỏ-canonical). *Bản trước S122 cứng-hoá "12-agent" ở **8 chỗ** trong khi roster đã 14 — đó chính là class `view-stale-role-desc`, và `agents/README` bị lấy làm **ví-dụ minh-hoạ** cho class đó trong [`lead-view-auditor.md`](lead-view-auditor.md). Vá @S122 bằng cách **bỏ số**, không phải bằng cách **đổi số** — đổi số thì roster kế lại stale.*
> **Architecture:** sub-agents **all-inherit top-tier (Harness-8 2026-06-16 — thay thế two-tier Harness-4)** + em main **lead frontier-class (anh chọn per-session)** coordinator — **10 product/quality** (7 core + frontend-designer pink S47 + database-agent read-advisory S52 + 📄 office-document S107) + **4 monitor INFORM-only** (`tooling-auditor` H1 + `harvest-curator` H2, 2026-06-07 Harness 1 · `lead-view-auditor` + `lead-omission-auditor` H24, **S121 W2**). Tier: **TOÀN BỘ sub `model: inherit`** (ăn top-tier model của lead — **runtime = per-session (Fable ↔ Opus, outage-driven; Fable DOWN → H5-fallback Opus tự-kích revert-free KHÔNG sửa frontmatter, Fable UP → tự về); lịch-sử flip-chain đầy-đủ (S98→nay) = canonical [`docs/STATUS.md` §Sub-agents]** (🔴 S106 gộp 1-chain per anh-confirm — reader này KHÔNG enumerate/cập-nhật mỗi flip; BƯỚC 0.6 probe mỗi phiên xác-định runtime SỐNG, per-session KHÔNG steady-state) · effort **Max** (env machine-wide). SE KHÔNG có lớp helper/gopher rẻ (**mọi sub đều substantive memory-bearing → tất cả lên inherit**). *(Trước H8: 4 promote inherit + 7 demote pin `claude-opus-4-8` — lịch sử ở Upgrade 2026-06-10 + S66 dưới.)*
> **Architecture:** sub-agents **worker-tier-pin `opus`+`effort:max` (owner-decision S124 2026-07-15 — thay thế all-inherit Harness-8, trước nữa two-tier Harness-4)** + em main **lead frontier-class (anh chọn per-session)** coordinator — **10 product/quality** (7 core + frontend-designer pink S47 + database-agent read-advisory S52 + 📄 office-document S107) + **4 monitor INFORM-only** (`tooling-auditor` H1 + `harvest-curator` H2, 2026-06-07 Harness 1 · `lead-view-auditor` + `lead-omission-auditor` H24, **S121 W2**). Tier: **TOÀN BỘ sub `model: opus` + `effort: max`** (worker-tier-pin S124 — sub cố-định KHÔNG theo lead; **đo S126:** lane no-tier resolve `claude-opus-4-8` DÙ lead=Fable = pin ăn runtime, và per-task `tier:'fable'` THẮNG pin trong lượt lệnh engine-đắt anh gõ. **Lead runtime = per-session owner-choice (Fable ↔ Opus); lịch-sử flip-chain lead = canonical [`docs/STATUS.md` §Sub-agents]** (🔴 S106 gộp 1-chain per anh-confirm — reader này KHÔNG enumerate/cập-nhật mỗi flip; BƯỚC 0.6 probe mỗi phiên xác-định runtime lead SỐNG) · effort **Max** (env machine-wide + frontmatter). SE KHÔNG có lớp helper/gopher rẻ (**mọi sub đều substantive memory-bearing → worker-tier = opus+max, KHÔNG hạ thấp hơn**). *(Lineage: two-tier H4 [4 promote inherit + 7 demote pin `claude-opus-4-8`] → all-inherit H8 S66S123 → worker-tier-pin S124 — chi-tiết ở Upgrade 2026-06-10 + S66 dưới.)*
> 🔍 **Đếm roster = ĐO ĐĨA, đừng tin số trong doc:** `ls -1 .claude/agents/*.md | grep -v README | wc -l`. ⚠️ **Glob thô `ls .claude/agents/*.md` bắt LUÔN `README.md`** ⇒ ra **thừa 1** — đây là bẫy số-học thật (R2-C1: acceptance cũ `=14` **FAIL trên implementation ĐÚNG**, và ép "sửa" bằng cách **xoá `README.md`** = catastrophic-Goodhart).
> **Upgrade S52 (2026-06-08 — AI_INFRA broadcast `2026-06-08-Agent-database-codebase-agents`):** **+database-agent (read-advisory DB specialist, floor DB1DB11)** — schema/query/migration-design-review/perf/concurrency (DB11 RowVersion vá lost-update S43). Tailor READ-tier (implementer-backend vẫn author) · color OMIT (8 standard hết) · `store_memory` strip. `codebase-agent` = **SKIP n-a** (investigator-codebase đã cover grep/audit + `csharp-lsp` Windows no-op). ✅ **verified-runtime** — spawned OK S53 (first real spawn, caught Mig 46 committed-but-unapplied-local drift) + S56 2× (pre-golive-verify schema-stream + golive-harden design+review). DB11 lost-update fix landed S56 (atomic ExecuteUpdate + Serializable tx, gotcha #58).
> Pattern: Anthropic Building Effective Agents orchestrator-workers + Cognition "writes single-threaded" hybrid + post-deploy automated watchdog.

View File

@ -42,7 +42,8 @@
## Project — ongoing decisions / context
- [H22 WAL session-continuity](project_h22_wal_session_continuity.md) — sổ WAL ≤40 + Stop-hook persist VERIFIED-RUNTIME S111 (hot-reload ENV-DEP #2/#3) + /pause·/tiep 1-đường + squash wal: + FLIP run-trace ≥3-task + D10 AS-6-taxonomy-đổi; hook PS1 KHÔNG bash (PATH 3-context); pilot kill/đổi-acc pending
- [Model-tier evolution → worker-tier-pin S124](project_harness4_two_tier_model.md) — H4 two-tier → H8 all-inherit → **S124 worker-tier-pin (14/14 sub = opus+effort:max, lead owner-choice, Fable qua /fable-real)**; H23-precedence nay testable ở Opus (chờ restart); restart-lesson: EDIT-agent-tồn-tại/command cần restart (hot-reload ENV-DEP, agent-MỚI khác)
- [Model-tier evolution → worker-tier-pin S124](project_harness4_two_tier_model.md) — H4 two-tier → H8 all-inherit → **S124 worker-tier-pin (14/14 sub = opus+effort:max, lead owner-choice, Fable qua /fable-real)**; restart-lesson: EDIT-agent-tồn-tại/command cần restart (hot-reload ENV-DEP, agent-MỚI khác)
- [H23 spawn-precedence — ĐO S126](project_h23_spawn_precedence.md) — spawn-param tier THẮNG frontmatter hard-pin ⇒ /fable-real SỐNG · worker-pin ăn runtime (no-tier=opus DÙ lead=Fable ⇒ không inherit); đo 2026-07-16 spawn-model-audit 0-mismatch
- [database-agent verified + local-drift catch](project_database_agent_verified_local_drift.md) — verified-runtime S53; read-advisory DB lens bắt committed-but-unapplied-local mig (green tests+prod miss)
- [HoSoLink open-from-web browser block](project_hosolink_open_from_web_browser_block.md) — web KHÔNG click-open file:// từ https (browser block); chỉ Edge GPO `IntranetFileLinksEnabled` one-click; FE render + Copy fallback (S67)
- [Harness 1·2·3 adopt](feedback_harness_123_adoption.md) — roster 8→10 (+2 monitor INFORM-only tooling-auditor+harvest-curator) · email channel `broadcasts/` self=se; verified-runtime S50

View File

@ -17,4 +17,4 @@ metadata:
- **Commit `wal:` = ngoại-lệ duy-nhất** format `[CLAUDE]` (rules §5.2) — máy sinh, squash về commit-chốt trước push (`origin/main..HEAD` — không bao giờ rewrite đã-push). Squash xong = điểm review-diff wal-paths (AS-10 backstop dời, không mất).
- **D10 S111: deploy.yml paths-ignore +agent-memory/** +runs/**** → budget.json/runs đổi HẾT trigger CI — **AS-6 taxonomy đổi từ S111** (phân loại CI-trigger phiên sau nhớ điều này).
- **Nhánh-im-lặng fail-open phải chứng bằng fault-inject**, không bằng quan-sát-vắng-mặt (reviewer bịt lỗ ca 0-delta).
- **Pilot PENDING (NEXT-anh):** kill-giữa-chain → `/tiep` thật · đổi-tài-khoản · hook-fire re-check phiên mới · pause-roundtrip 1 workflow THẬT. Cơ chế đầy đủ → engine PHẦN N + [[h18-ghostwire-stamp-integrity]] (STAGED-until-verified nguyên tắc) + [[workflow-fanout-reliability]] (run-trace mandate mới).
- **Pilot — ĐÃ CHẠY THẬT 1 leg (S125→S126, 2026-07-16):** pause-roundtrip ✅ — `/pause` (S125) → restart → `/tiep` (S126): sàn-3 §0 cả 3 tín-hiệu MẠNH đều CÓ và đều KHỚP chain (orphan-folder = spec-holder đúng dòng `[!]`), ground-truth verify 4/4, mạch nối 0 hỏi-lại, NHÓM A thực-thi thẳng từ spec. **Còn PENDING:** kill-giữa-chain (unplanned) · đổi-tài-khoản · **đổi-MODEL leg** (WAL dự-kiến Opus 4.8 MAX, owner mở phiên Fable ⇒ thực-tế same-model — KHÔNG claim cross-model đã test). Hook-fire per-turn ✅ **RE-VERIFIED S126**: boundary duy-nhất 14:24 → `f9fa77d wal: flush 20260716T1424` tự-động (1 boundary = 1 commit, đúng thiết-kế; S125 1-turn-dài 0 boundary nên 0 fire = ĐÚNG, không phải hỏng — đừng đọc "không fire ở phiên 1-turn" thành broken). Cơ chế đầy đủ → engine PHẦN N + [[h18-ghostwire-stamp-integrity]] (STAGED-until-verified nguyên tắc) + [[workflow-fanout-reliability]] (run-trace mandate mới).

View File

@ -0,0 +1,17 @@
---
name: h23-spawn-precedence-result
description: "H23-precedence ĐO 2026-07-16 S126: spawn-param tier THẮNG frontmatter HARD-PIN (tier:'fable' trên reviewer pin-opus → resolved claude-fable-5) ⇒ /fable-real SỐNG; worker-tier-pin ăn runtime (lane no-tier = claude-opus-4-8 DÙ lead=Fable ⇒ không phải inherit-lead)."
metadata:
node_type: memory
type: project
originSessionId: c0fa4300-e317-4d1c-ad41-e819e6eb0a42
---
**H23-precedence — ĐO THẬT 2026-07-16 (S126, phiên đầu sau restart kích-hoạt frontmatter S124):**
- **Spawn-param THẮNG frontmatter hard-pin:** lane `reviewer` (frontmatter `model: opus` reviewer.md:5) spawn `tier:'fable'` → resolved **`claude-fable-5`** (3 records, `wf_f960dae2-fa0/agent-a6e8ca7bdaf910195.jsonl`) ⇒ **`/fable-real` + `/fable-clone` SỐNG** — không NO-OP, không cần re-pin.
- **Worker-tier-pin ăn RUNTIME:** lane `investigator-codebase` KHÔNG tier → resolved **`claude-opus-4-8`** (9 records) trong khi **lead = Fable 5** ⇒ loại giả-thuyết inherit-lead (control mạnh hơn hẳn lead=Opus — ở đó 2 giả-thuyết cho cùng đáp-số).
- Phép đo: `scripts/spawn-model-audit.ps1 -SessionId c0fa4300-…` (PA-2b): 2 dispatch / 2 explicit / 0 mismatch; tally đĩa 14/14 `model: opus` + 14/14 `effort: max`.
- 🔴 Khác case frontmatter-`inherit` (đo 07-15 `wf_cb964f83-331`): `inherit` có thể chỉ là "defer to caller" (không có contest); case hôm nay là **contest thật hard-pin vs param → param thắng**.
- Hệ-quả vận-hành: giữ nguyên worker-tier-pin S124 + `/fable-real` per-invocation; carry `h23-fable-test-postrestart` ĐÓNG (báo hub cùng ngày, s124-report §3).
Liên quan: [[project-harness4-two-tier-model]] · [[h22-wal-session-continuity]]

View File

@ -11,7 +11,7 @@ metadata:
- **14/14 sub-agent frontmatter = `model: opus` + `effort: max`** (worker-tier gán-cứng, KHÔNG còn inherit). Lý-do owner: CICD hay rớt, cần Opus MAX mới chạy tốt.
- **Lead = frontier-class owner-choice mỗi phiên** {Fable 5 (1M) Max | Opus 4.8 (1M) Max} qua `/model` (BƯỚC 0.6 probe).
- **Fable cho 1 vai** = owner gõ `/fable-real <vai>` (single-top-model) HOẶC `/model` chọn lead=Fable tay.
- 🔴 **H23-precedence NAY TESTABLE ở lead=Opus** (frontmatter=`opus``fable`): spawn `tier:'fable'` → resolved `fable`=spawn-thắng / `opus`=frontmatter-thắng. **CHƯA test** (chờ restart kích-hoạt frontmatter mới). Nếu frontmatter thắng ⇒ `/fable-real` NO-OP (mark H21 AH) ⇒ owner dùng `/model` tay.
- **H23-precedence ĐÃ ĐO 2026-07-16 S126** (phiên đầu sau restart; lead=Fable vô-tình làm control sạch): spawn `tier:'fable'` trên reviewer (pin `opus`) → resolved **`claude-fable-5`** = **SPAWN-PARAM THẮNG hard-pin**`/fable-real` SỐNG, không re-pin. Lane no-tier → `claude-opus-4-8` DÙ lead=Fable ⇒ **pin ăn runtime, không inherit-lead**. Chi-tiết → [[h23-spawn-precedence-result]].
- `hmw.js resolveModel`: role-có-frontmatter → undefined → frontmatter opus tự lo (worker-tier) · role-less → inherit lead · per-task `tier:'opus'|'fable'` escape-hatch.
**Lineage (lịch-sử, đã superseded):**

View File

@ -58,12 +58,11 @@ taskList: [ { role:'<vai anh gán>', tier:'opus', label:'lens-1', prompt:'…' }
- ⇒ Lỗi cũ 🟥 reviewer @S108 (lead=Fable → ensemble N×Fable) = **đã vá bằng pin**, giữ mô-tả làm lịch-sử.
- 🔴 **Lỗ THẬT còn lại = `tier:'fable'` của `/fable-real`** (KHÁC frontmatter opus) → H23-precedence (xem dưới): nếu frontmatter thắng, `/fable-real` KHÔNG lên Fable được.
### 🔴 CHƯA VERIFY — precedence spawn-param ⟂ frontmatter (H23 §2(2), khai bắt-buộc)
### ✅ ĐÃ VERIFY S126 (2026-07-16) — precedence spawn-param ⟂ frontmatter (H23 §2(2); flip từ "CHƯA VERIFY")
**Ở SE cả hai ĐANG cùng hiện-diện:** `hmw.js` trả alias vào `agent(…, {model:…})` **TRONG KHI** frontmatter **toàn roster** = **`opus`** (worker-tier-pin S124). **Chưa ai test bên nào THẮNG** (`hmw.js:44-52` mang cùng ghi-chú này).
🔴 **Nếu frontmatter (opus) thắng ⇒ `tier:'fable'` của `/fable-real` = NO-OP** ⇒ KHÔNG escalate Fable được (owner dùng `/model` tay). *(`tier:'opus'` thì trùng frontmatter, vô-hại.)*
**Phép thử — NAY TESTABLE kể cả lead=Opus (đổi từ DEFER):** vì frontmatter=`opus``fable`, chạy 1 lane `tier:'fable'` → đọc model THỰC-TẾ resolve: `fable`=spawn thắng · `opus`=frontmatter thắng — **phân-biệt được bất-kể lead**. ⚠️ **CHỜ RESTART** kích-hoạt frontmatter mới rồi chạy (phiên kế). 🔴 Khai thẳng: **CHƯA test lượt này**, đừng bán quá nấc.
**Đang có (PA-2, anh chốt O1) = 2 lớp GIÁN-TIẾP, KHÔNG thay được phép thử trên:** PA-2a hằng-số `TIER2_EXPECTED_FULL_ID = 'claude-opus-4-8'` (`hmw.js:53`) + PA-2b `scripts/spawn-model-audit.ps1` so resolved-vs-expected. 🔸 Neo-tại-spawn = **bất-khả-thi** (param chỉ nhận enum alias) — và **chính mệnh-đề đó cũng CHƯA thử** truyền full-id xem có bị từ-chối không (fix#8a).
**Đo thật (run `wf_f960dae2-fa0`, phiên đầu sau restart kích-hoạt frontmatter S124):** lane `reviewer` (frontmatter `opus`) + `tier:'fable'` → resolved **`claude-fable-5`** ⇒ **SPAWN-PARAM THẮNG hard-pin**`tier:'fable'` của `/fable-real` KHÔNG NO-OP — escalate Fable ĐƯỢC (`hmw.js:44-51` mang kết-quả + caveat cùng nội-dung). *(`tier:'opus'` trùng frontmatter, vô-hại như cũ.)*
Control: lane no-tier → `claude-opus-4-8` **DÙ lead=Fable** ⇒ pin ăn runtime (loại inherit-lead). **Caveat GIỮ:** retrospective (không hứa spawn tương-lai — PA-2b) · **ALIAS-pin only** (hub full-id KHÔNG covered) · **fix#8a vẫn mở** (param từ-chối full-id? chưa thử). Evidence: `runs/2026-07-16-S126-adap-spec-execute/runtime-verify-synthesis.md`.
**PA-2 (anh chốt O1) = 2 lớp GIÁN-TIẾP bổ-trợ:** PA-2a hằng-số `TIER2_EXPECTED_FULL_ID = 'claude-opus-4-8'` (`hmw.js:53`) + PA-2b `scripts/spawn-model-audit.ps1` so resolved-vs-expected.
> ⚠️ **Grep `tier:'opus'` ≥1 hit = ĐIỀU-KIỆN CẦN, KHÔNG ĐỦ** — nó chỉ đo **CHỮ trong file**, không đo runtime ⇒ **Goodhart-able 100%**.
## 🔴 Floor model-tier v3 + lead-discipline

View File

@ -46,11 +46,10 @@ Em main xác nhận **lead model resolve được** đầu session. **Lead = fro
**Lịch-sử flip-chain đầy-đủ (S98→nay) = canonical [`docs/STATUS.md` §Sub-agents]** (🔴 S106 gộp 1-chain per anh-confirm — reader này KHÔNG enumerate/cập-nhật mỗi flip; chống churn 4-file/flip). **BƯỚC 0.6 probe MỖI phiên** xác-định runtime SỐNG (per-session — KHÔNG tin note phiên trước, KHÔNG steady-state).
> 🔴 **H23 note — LỖ CHƯA-TEST (khai bắt-buộc theo H23 §2(2), adopt S122).** Nguyên-văn broadcast đòi khai: *"thứ-tự ưu-tiên giữa **'tham-số tại spawn'** và **'pin ở tệp định-nghĩa'** khi **CẢ HAI cùng hiện-diện** — rất có thể **chưa từng được test**"*.
> **Ở SE, cả hai ĐANG cùng hiện-diện:** `hmw.js` trả alias → `agent(…, {model:…})` **trong khi** frontmatter toàn roster = **`opus`** (worker-tier-pin S124, KHÔNG còn inherit). 🔴 **Chưa ai test bên nào THẮNG.**
> **Vì sao nghiêm-trọng (đổi trọng-tâm S124):** frontmatter=opus nên `tier:'opus'` ≡ frontmatter (trùng, vô-hại). Lỗ THẬT nay = **`tier:'fable'` của `/fable-real`**: nếu **frontmatter (opus) thắng** ⇒ `/fable-real` KHÔNG escalate Fable được (owner dùng `/model` chọn lead=Fable tay).
> **Phép thử ĐÚNG — NAY TESTABLE kể cả lead=Opus (đổi từ DEFER):** vì frontmatter=`opus`≠`fable`, chạy 1 lane `tier:'fable'` → đọc model THỰC-TẾ resolve: ra `fable`=spawn thắng, ra `opus`=frontmatter thắng — **phân-biệt được bất-kể lead** (khác thời all-inherit: inherit→lead làm 2 nhánh trùng khi lead=Opus). ⚠️ **CHỜ RESTART** kích-hoạt frontmatter mới rồi mới chạy phép thử (phiên kế). 🔴 Khai thẳng: **CHƯA test lượt này**, KHÔNG giả-vờ đã test.
> **Đang có (PA-2, anh chốt O1) = 2 lớp GIÁN-TIẾP, KHÔNG phải phép thử trên:** PA-2a hằng-số `TIER2_EXPECTED_FULL_ID` trong `hmw.js` + PA-2b `scripts/spawn-model-audit.ps1` so resolved-vs-expected. 🔸 Neo-tại-spawn = **bất-khả-thi** (param chỉ nhận enum alias `sonnet|opus|haiku|fable`) — và **chính mệnh-đề "chỉ nhận alias" đó cũng CHƯA thử truyền full-id để xem có bị từ-chối không** (fix #8a, anh đã ack hình-thức PA-2a+PA-2b).
> **H23 note — ĐÃ ĐO S126 2026-07-16 (khai theo H23 §2(2); flip từ "LỖ CHƯA-TEST").** Broadcast từng đòi khai: *"thứ-tự ưu-tiên giữa **'tham-số tại spawn'** và **'pin ở tệp định-nghĩa'** khi **CẢ HAI cùng hiện-diện** — rất có thể chưa từng được test"* — nay ĐÃ có phép đo.
> **Kết-quả (phiên đầu sau restart, run `wf_f960dae2-fa0`, đọc bằng `spawn-model-audit.ps1` — KHÔNG tin lane tự khai):** lane `reviewer` (frontmatter `opus`) + `tier:'fable'` → resolved **`claude-fable-5`** ⇒ **SPAWN-PARAM THẮNG hard-pin** ⇒ `/fable-real`·`/fable-clone` SỐNG, KHÔNG NO-OP, không cần re-pin. Control: lane no-tier → `claude-opus-4-8` **DÙ lead=Fable** ⇒ pin ăn runtime (loại giả-thuyết inherit-lead). Evidence: `runs/2026-07-16-S126-adap-spec-execute/runtime-verify-synthesis.md` + báo hub `2026-07-16-se-to-ai_infra-h23-precedence-test-result`.
> **Caveat GIỮ (không bán quá nấc):** retrospective — không hứa spawn TƯƠNG-LAI (đúng PA-2b) · đo trên **ALIAS-pin** (hub full-id-pin KHÔNG covered — ENV-DEPENDENT) · **fix #8a vẫn mở** (param có từ-chối full-id không — chưa ai thử).
> **PA-2 (anh chốt O1) = 2 lớp GIÁN-TIẾP bổ-trợ:** PA-2a hằng-số `TIER2_EXPECTED_FULL_ID` trong `hmw.js` + PA-2b `scripts/spawn-model-audit.ps1` so resolved-vs-expected (retrospective per-session).
## 📋 BƯỚC 0.6b — Registry-probe: RESTART rồi **VERIFY danh-sách agent** (broadcast ③(d) — adopt S122)

View File

@ -32,7 +32,7 @@ argument-hint: (trống = bật mode · hoặc kèm task lớn đầu tiên)
| **P1** decide | sub liên quan (full memory) | recommend approach + **acceptance-checklist** em main chốt plan |
| 🔴 **P1-run** scaffold | 👤 em main | **BẮT BUỘC khi `taskList.length ≥ 3`** (Sàn-1 H22, cơ-khí-hoá S121 W2): scaffold `.claude/workflows/runs/<run-id>/` (TRACKED) + `run.md` kèm **`## taskList snapshot`** truyền `args.run = { name, dir }`. **Thiếu cờ + ≥3 task ⇒ `hmw.js` THROW STOP-HARD.** Script chạy JS-sandbox **KHÔNG filesystem** tự không tạo folder được đây lý-do gate nằm em-main chứ không script. Bỏ qua chết giữa run **mất trace** (per-turn returns chết theo phiên; **chỉ file trên đĩa sống sót**) `/tiep` §4 phải chạy lại TỪ ĐẦU thay cắt-gọt. 🔸 Ngưỡng *"hoặc ước >5 phút"* KHÔNG cơ-khí-hoá được phần đó kỷ-luật lead. 🔸 raw `Workflow`/`Agent` tool = **kẽ CÒN-LẠI** không gate được từ đây |
| **checkpoint** (inform) | 👤 em main | BÁO `{số agent · vai · task}` @inform set `args.checkpointApproved=true` fan-out NGAY (marker-ON=consent; anh interrupt nếu sai KHÔNG chờ confirm từng lần) |
| **P2** execute | Workflow `hmw` | fan-out agent: **memory-pack injected** qua `args` + `agentType` + schema. DEFAULT read/analyze; write = file-disjoint. **worker-tier-pin** (S124): role-có-frontmatter = `opus`+`effort:max` · role-lessinherit lead · per-task `tier:'opus'` escape-hatch (`tier:'fable'` CHỈ trong lượt lệnh engine-đắt anh H21 S110; H23-precedence chưa test) |
| **P2** execute | Workflow `hmw` | fan-out agent: **memory-pack injected** qua `args` + `agentType` + schema. DEFAULT read/analyze; write = file-disjoint. **worker-tier-pin** (S124): role-có-frontmatter = `opus`+`effort:max` · role-lessinherit lead · per-task `tier:'opus'` escape-hatch (`tier:'fable'` CHỈ trong lượt lệnh engine-đắt anh H21 S110; H23-precedence ĐO S126: spawn-param THẮNG pin /fable-real sống) |
| **P3** harvest | 👤 em main (single-writer) | **NGAY sau P2** VERIFY delta + APPEND-only vào MEMORY.md **mọi agent tham gia** (B3) |
| **P4** final | sub quality (full memory) | reviewer PASS/FAIL · cicd-monitor drift · investigator verify · implementer/test scope return delta |
| **→** | 👤 em main | synthesize + **git-diff** + **chunk-count check** + commit (anh OK) |

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": 4,
"last_ticked_session": "S125",
"last_ticked_head": "3aacdf9d1cb36865695f1df9b420316e744a9885",
"counter": 5,
"last_ticked_session": "S126",
"last_ticked_head": "f9fa77d679be704db2448478390bffaaa9d721b8",
"last_ticked_at": "2026-07-16",
"last_audit": {
"light_at_counter": 3,

View File

@ -6,7 +6,7 @@
export const meta = {
name: 'hmw',
description: 'HMW P2 execute (SOLUTION_ERP) — fan-out roster ĐẦY-ĐỦ (số vai canonical → docs/STATUS.md §Sub-agents; KHÔNG hardcode số ở đây — lesson S108 comment stale làm worker đọc sai runtime) có MEMORY-PACK slice (qua args vì script không đọc file) + return findings + checklistEvidence + memoryDelta (spawn-record 4-field). 2 MODE (Harness 2, 06-07): (A) DEFAULT return-delta-only — fan-out NHỎ (<3 task VÀ ≤5 phút), sub KHÔNG ghi file, git-diff verify. (B) RUN-TRACE mode (args.run, Harness-10) — 🔴 BẮT BUỘC khi run ≥3 task HOẶC ước >5 phút (sàn H22 S111; script no-fs KHÔNG tự ép — enforcement = em-main scaffold @P1 + set args.run) — workflow DÀI, em main scaffold .claude/workflows/runs/<run-id>/ TRACKED FLAT (run.md + sub-<role>-<i>.md + <stage>-synthesis.md phẳng cùng cấp) @P1, sub ghi full-detail vào CHỈ sub-<role>-<i>.md mình (B4/B6), harvest per-turn primary (C4) + H2 gom @session-end = backstop verify-idempotent. taskList thoải mái (queue theo slot, không cap cứng). memoryDelta KHÔNG tự ghi — em main VERIFY + APPEND-only @P3 (no-overwrite-unverified, B3). Model worker-tier-pin (owner-decision S124): role-có-frontmatter = opus+effort:max (worker-tier, KHÔNG inherit) · role-less inherit lead · per-task tier:\'fable\'|\'opus\' escape-hatch (fable qua /fable-real; H23-precedence CHƯA test — restart-để-ăn). Scope = repo SOLUTION_ERP ONLY (S1 — KHÔNG fan-out repo/corpus khác).',
description: 'HMW P2 execute (SOLUTION_ERP) — fan-out roster ĐẦY-ĐỦ (số vai canonical → docs/STATUS.md §Sub-agents; KHÔNG hardcode số ở đây — lesson S108 comment stale làm worker đọc sai runtime) có MEMORY-PACK slice (qua args vì script không đọc file) + return findings + checklistEvidence + memoryDelta (spawn-record 4-field). 2 MODE (Harness 2, 06-07): (A) DEFAULT return-delta-only — fan-out NHỎ (<3 task VÀ ≤5 phút), sub KHÔNG ghi file, git-diff verify. (B) RUN-TRACE mode (args.run, Harness-10) — 🔴 BẮT BUỘC khi run ≥3 task HOẶC ước >5 phút (sàn H22 S111; script no-fs KHÔNG tự ép — enforcement = em-main scaffold @P1 + set args.run) — workflow DÀI, em main scaffold .claude/workflows/runs/<run-id>/ TRACKED FLAT (run.md + sub-<role>-<i>.md + <stage>-synthesis.md phẳng cùng cấp) @P1, sub ghi full-detail vào CHỈ sub-<role>-<i>.md mình (B4/B6), harvest per-turn primary (C4) + H2 gom @session-end = backstop verify-idempotent. taskList thoải mái (queue theo slot, không cap cứng). memoryDelta KHÔNG tự ghi — em main VERIFY + APPEND-only @P3 (no-overwrite-unverified, B3). Model worker-tier-pin (owner-decision S124): role-có-frontmatter = opus+effort:max (worker-tier, KHÔNG inherit) · role-less inherit lead · per-task tier:\'fable\'|\'opus\' escape-hatch (fable qua /fable-real; H23-precedence ĐO S126 2026-07-16: spawn-param THẮNG frontmatter hard-pin ⇒ /fable-real SỐNG). Scope = repo SOLUTION_ERP ONLY (S1 — KHÔNG fan-out repo/corpus khác).',
phases: [{ title: 'Execute', detail: 'fan-out memory-pack-injected agents, structured return' }],
}
@ -41,14 +41,13 @@ const VALID_ROLES = [
// ('opus'/'fable'/...), không nhận full-id; SE nay pin ALIAS `opus` (KHÔNG full-id) ở 14/14 frontmatter.
// ⇒ owner chốt PA-2 = PA-2a (hằng-số này, để audit có thứ ĐỐI-CHIẾU) + PA-2b (scripts/spawn-model-audit.ps1
// so resolved-vs-expected). Đọc bởi: scripts/spawn-model-audit.ps1 (thiếu hằng-số ⇒ script FAIL-LOUD).
// 🔸 H23 precedence — NAY TESTABLE (đổi từ DEFER, owner-decision S124): thứ-tự ưu-tiên giữa "tham-số tại spawn"
// và "pin ở tệp định-nghĩa" khi CẢ HAI cùng hiện-diện. Ở SE cả hai đều hiện-diện (resolveModel() trả alias
// vào agent(...,{model:...}) TRONG KHI frontmatter 14/14 = opus, KHÔNG còn inherit).
// 🔴 Vì frontmatter nay = `opus` (KHÁC `fable`): spawn tier:'fable' → nếu spawn THẮNG=fable, nếu frontmatter
// THẮNG=opus ⇒ PHÂN-BIỆT ĐƯỢC KỂ CẢ lead=Opus (khác thời all-inherit — inheritlead làm 2 nhánh trùng).
// 🔴 Nếu frontmatter THẮNG ⇒ tier:'fable' của /fable-real = NO-OP ⇒ KHÔNG escalate Fable được (owner dùng
// /model chọn lead=Fable tay). PHẢI test phiên kế (sau RESTART kích-hoạt frontmatter mới): spawn 1 lane
// tier:'fable' → đọc resolved qua spawn-model-audit.ps1. CHƯA test lượt này (frontmatter mới cần restart).
// 🔸 H23 precedence — ĐÃ ĐO S126 (2026-07-16, phiên đầu sau restart; run wf_f960dae2-fa0, đọc bằng
// spawn-model-audit.ps1, KHÔNG tin lane tự khai): khi CẢ HAI cùng hiện-diện ⇒ SPAWN-PARAM THẮNG hard-pin.
// Lane reviewer (frontmatter `opus`) + tier:'fable' → resolved `claude-fable-5` ⇒ /fable-real·/fable-clone
// SỐNG, KHÔNG NO-OP, không cần owner re-pin. Control: lane investigator-codebase KHÔNG tier → resolved
// `claude-opus-4-8` DÙ lead=Fable ⇒ pin frontmatter ăn runtime (loại giả-thuyết inherit-lead).
// Caveat: retrospective (không hứa spawn TƯƠNG-LAI — đúng PA-2b) · đo trên ALIAS-pin, KHÔNG generalize
// sang full-id-pin (hub form). Evidence: runs/2026-07-16-S126-adap-spec-execute/runtime-verify-synthesis.md.
// 🔸 CHƯA THỬ (fix#8a): param `model:` có TỪ-CHỐI full-id không — doc nói enum-alias; chưa ai thử thật.
const TIER2_EXPECTED_FULL_ID = 'claude-opus-4-8'

View File

@ -0,0 +1,18 @@
# spec-execution synthesis — spec S125 ĐÃ THỰC-THI TRỌN @S126 (2026-07-16)
> Bản-ghi-kết-quả (dạng-1) đóng run `/fable-real` S125: deliverable của run này là `spec-adap-review-s125-16-07-2026.md` (3-mục + checklist AD) — phiên S126 resume qua `/tiep` đã THỰC-THI TRỌN. Chi-tiết từng phép đo → `../2026-07-16-S126-adap-spec-execute/` (runtime-verify-synthesis.md + sweep-synthesis.md).
| Mục spec | Kết-quả @S126 |
|---|---|
| A1 H23-precedence | **`fable`** — spawn-param THẮNG frontmatter hard-pin ⇒ `/fable-real` SỐNG; báo hub `2026-07-16-se-to-ai_infra-h23-precedence-test-result` (stamp `945cf3ad` exit-0) |
| A2 worker-pin runtime | **`opus`** — lane no-tier resolve `claude-opus-4-8` DÙ lead=Fable ⇒ pin ăn thật (không inherit-lead) |
| A3 autoMemory WRITE-path | file MỚI `project_h23_spawn_precedence.md` byte>0 + index |
| B1 sweep all-inherit | 15 floor-sống/5 file + 3 cùng-lớp → VÁ HẾT; fault-inject 2-chiều PASS; re-grep 0 floor-sống; detector-suite 45 = baseline 0-new |
| B2 memory harness4 | body khớp S124 + update kết-quả H23 |
| B3 retier-megaline · B4 budget:74 | 🔒 soạn surface `b3-b4-owner-gated-proposals.md` — CHỜ ANH, không apply |
| B5 closeout GỘP S125+S126 | session-end phiên S126 (STATUS/HANDOFF/session-log/harvest/commit/push) |
| B6 hub follow-up | 0 mail mới; hub CHƯA reply/re-stamp/vá-snippet — ghi-nhận chờ, KHÔNG stamp trước |
| C 6 product carries | 6/6 còn — re-stamp @HANDOFF S126 |
| D notes | D5 pilot ghi memory h22 (same-model leg; cross-model PENDING) · D1 chưa tới hạn · D2 không nợ · D3/D4 deferred · D6 surface HANDOFF |
Honest-note: lệch plan-vs-runtime duy-nhất = lead phiên thực-thi là **Fable 5** (spec §② dự-kiến Opus 4.8 MAX, owner-choice) — không đổi kết-quả phép đo nào; ngược lại làm control A2 mạnh hơn (chi-tiết runtime-verify-synthesis.md §Pilot).

View File

@ -0,0 +1,45 @@
# B3 + B4 — đề-xuất 🔒 OWNER-GATED (chờ anh quyết, em KHÔNG tự apply)
> Soạn @S126 2026-07-16 theo spec `../2026-07-16-S125-fable-real-adap-review/spec-adap-review-s125-16-07-2026.md` mục B3/B4. Mọi con số token dưới đây là **CẬN-TRÊN heuristic notice** (dải, không phải "đo được" — nhãn S125).
---
## B3 · Retier mega-line STATUS/HANDOFF `[carry:retier-megaline]` — anh chọn 1 trong 3
**Hiện-trạng đo từ đĩa (2026-07-16):**
| File | Tổng | Số dòng | Mega-line | Cận-trên notice |
|---|---|---|---|---|
| `docs/STATUS.md` | 137.775 B | 249 dòng | **dòng 6 = 64.681 chars** | 70.892 (whole-file) |
| `docs/HANDOFF.md` | 63.379 B | 12 dòng | **dòng 5 = 57.147 chars** | 33.684 (Read-notice hôm nay) |
Hai file cộng lại chiếm **[1227]% cận-trên** trần 380K luôn-tải (dải byte/4 → notice; KHÔNG phải "27% đã-đo"). Chi phí THẬT đã thấy trong vận hành: (i) Read bị cap 25K token → phiên này phải grep thay vì đọc HANDOFF; (ii) bẫy `grep -c` đếm-dòng vs occurrence trên mega-line (bài S121, đã có memory); (iii) diff git mỗi lần sửa = rewrite cả dòng khổng-lồ, khó review.
**3 phương án:**
| # | Phương án | Được gì | Mất gì / rủi ro |
|---|---|---|---|
| 1 | **GIỮ nguyên** | 0 công; format hiện tại máy vẫn xử được | 3 chi phí trên tiếp diễn; mega-line tiếp tục phình theo session |
| 2 | **TÁCH dòng** — bung mega-line thành section nhiều dòng, nội dung GIỮ nguyên | Read/grep/diff sạch; công nhỏ 1 lần; không mất chữ nào | KHÔNG giảm token luôn-tải (vẫn [1227]% cận-trên); vẫn vi phạm tiering S40 về tinh thần |
| 3 | **RE-TIER** — áp đúng luật tiering S40 sẵn có: giữ current + 2-3 session gần nhất, phần cũ archive verbatim → `docs/changelog/sessions/` + `docs/_archive/` với pointer | Giảm THẬT luôn-tải (ước còn dưới ~1/3 dải hiện tại — số chính xác đo sau khi cắt); đúng luật đã ký; hết cả 3 chi phí | Công lớn nhất; rủi ro cắt-quá-tay → mitigate BẮT BUỘC: archive VERBATIM trước rewrite (bài `feedback_status_handoff_tiering`) + re-ground count từ code |
**Khuyến-nghị của em: #3 (re-tier)** — vì tiering S40 là luật ĐÃ có mà 2 file này đang vi phạm (12 dòng nhưng 57K chars/dòng = dồn nhiều session vào 1 dòng thay vì archive); #2 chỉ đổi hình-dạng, không trả nợ gốc. Nhưng đây là quyết-định anh (carry anh đặt): **giữ / tách / re-tier?**
---
## B4 · `memory-budget.json:74` wording — diff 1-dòng chờ anh gật
Config này anh ký mark `RC-…01-58-01` ⇒ em không tự đổi. Literal xác nhận còn trên đĩa (chạm 2026-07-16): dòng 74 `_target_note` chứa cụm `"...judging a POSITIVE real-token headroom exists on the stable hot-load floor"`.
Vấn-đề: sau relabel S125 (notice-N = heuristic CẬN-TRÊN, không phải token thật), cụm **"real-token headroom"** trong điều-kiện owner-raise là nhãn cũ — chính class mislabel vừa đính-chính với hub.
**Diff đề xuất (đúng spec):**
```diff
- ... ONLY after judging a POSITIVE real-token headroom exists on the stable hot-load floor.
+ ... ONLY after judging a POSITIVE cận-trên (heuristic notice) headroom exists on the stable hot-load floor.
```
Biến-thể B (nếu anh muốn giữ file toàn English cho đồng giọng): `"a POSITIVE upper-bound (heuristic-notice) headroom"`. Nội dung tương-đương, anh chọn 1 hoặc bảo giữ nguyên.
Phần caveat S115 phía sau dòng 74 đã có sẵn chữ "UPPER BOUND" — diff này chỉ làm vế điều-kiện đầu câu khớp nhãn với phần còn lại.

View File

@ -0,0 +1,13 @@
# run — 2026-07-16-S126-adap-spec-execute
> Thực-thi spec `../2026-07-16-S125-fable-real-adap-review/spec-adap-review-s125-16-07-2026.md` (H21: /fable-real S125 propose → phiên này execute). Vào mạch qua `/tiep` — ground-truth khớp WAL 4/4.
> 🔸 **Honest-note pilot H22 (D5):** WAL `next:` dự-kiến lead = Opus 4.8 MAX; THỰC-TẾ lead phiên này = **Fable 5** (owner-choice lúc mở phiên). ⇒ leg "resume ĐỔI-model" KHÔNG xảy ra (Fable→Fable); datapoint thu được = **cross-session same-model resume** OK. Side-benefit: lead=Fable làm A2 control MẠNH hơn (worker resolve `opus` ⇒ pin ăn THẬT, loại được giả-thuyết inherit-lead — điều không phân-biệt được nếu lead=Opus).
## taskList snapshot
- **Đợt A** (Mode A return-delta-only — 2 task <3, args.run không bắt buộc): A1 `reviewer` + `tier:'fable'` probe (H23-precedence: spawn-param vs frontmatter HARD-PIN `model: opus` case UNTESTED per spawn-model-audit.ps1:33) · A2 `investigator-codebase` no-tier (worker-pin runtime; kèm tally frontmatter 14 agent từ đĩa).
- **Đợt B** (sau A, theo spec order): B1 sweep `all-inherit` floor-sống (investigator-codebase, no-tier bổ sung datapoint A2). B2 verify memory body · B3/B4 🔒 OWNER soạn+surface KHÔNG execute · B6 /check-email em-main. B5 closeout GỘP S125+S126 /pause.
## Stages
- [x] runtime-verify (A1+A2 spawn `wf_f960dae2-fa0` spawn-model-audit A3 memory-write) `runtime-verify-synthesis.md` **A1=fable (spawn thắng, /fable-real SỐNG) · A2=opus (pin ăn, lead=Fable control) · A3 file mới OK**
- [x] sweep B1 (+ B2/B6 em-main) `sweep-synthesis.md` **15 floor-sống/5 file VÁ HẾT + 3 cùng-lớp lọt-pattern + Section-D flush (fault-inject 2-chiều PASS) + C3 seed +worker-tier-pin · B6: 0 mail mới, hub chưa xử 2 đề-nghị, email H23-result gated(FAIL→fix)+stamped+logged · B3/B4 soạn surface chờ anh**
- [ ] closeout B5 surface B3/B4 owner-gated + C carries re-stamp + D notes

View File

@ -0,0 +1,28 @@
# runtime-verify synthesis — NHÓM A (A1·A2·A3) @S126 2026-07-16
> Stage 1 của run `2026-07-16-S126-adap-spec-execute` (thực-thi spec S125 §NHÓM A). Fan-out `wf_f960dae2-fa0`: 2 lane, Mode A return-delta-only, 43s, 0 error. Phép đo: `scripts/spawn-model-audit.ps1 -SessionId c0fa4300-e317-4d1c-ad41-e819e6eb0a42` (PA-2b — đọc resolved model từ transcript, KHÔNG tin lane tự khai).
## A1 · H23-precedence — KẾT QUẢ: **`fable`** (spawn-param THẮNG frontmatter hard-pin) ⇒ /fable-real SỐNG
- Lane `wf_f960dae2-fa0/agent-a6e8ca7bdaf910195.jsonl` · agentType=`reviewer` · spawn `tier:'fable'` (hmw.js resolveModel → `model:'fable'` vào agent()).
- Đối-kháng: frontmatter `reviewer.md:5 model: opus` + `:6 effort: max` (hard-pin S124; frontmatter đã ăn runtime — chứng bằng A2, không giả-định).
- Resolved ĐO ĐƯỢC: **`claude-fable-5`** (3 assistant records).
- ⇒ Acceptance "1 trong 2 chữ" = **`fable`**: spawn-param takes precedence over hard-pin ⇒ `/fable-real`·`/fable-clone` KHÔNG NO-OP, KHÔNG cần owner re-pin. Case này trước 2026-07-16 chưa có evidence — khác case frontmatter-`inherit` (wf_cb964f83-331, 07-15): ở đó `inherit` có thể chỉ là "defer to caller", không có contest; ở đây contest THẬT và param thắng.
- Carry `[carry:h23-fable-test-postrestart]`: vế đo → ĐÓNG; vế "báo hub" (hứa s124-report §3) → B6.
## A2 · worker-tier-pin runtime — KẾT QUẢ: **`opus`** (pin ăn THẬT)
- Lane `agent-a97d1fb7c0b985d21.jsonl` · agentType=`investigator-codebase` · KHÔNG tier (resolveModel → undefined → frontmatter tự lo).
- Resolved ĐO ĐƯỢC: **`claude-opus-4-8`** (9 records) = `TIER2_EXPECTED_FULL_ID` — audit lúc đo: 2 dispatch / 2 explicit / 0 mismatch ⚠️ *(COUNTS của script = cumulative CẢ PHIÊN, tăng theo spawn sau — reviewer-gate đo lại 14:27 đã 4/4/0 vì chính 2 lane review; evidence bền = per-lane theo run-id `wf_f960dae2-fa0`, KHÔNG phải số tổng)*.
- 🔴 Control MẠNH nhờ lệch-model ngoài kế-hoạch: **lead phiên = Fable 5** — nếu cơ-chế thật là inherit-lead thì lane này phải ra `claude-fable-5`. Nó ra `opus` ⇒ frontmatter pin LÀM VIỆC runtime. (Ở lead=Opus như WAL dự-kiến, "pin ăn" và "inherit-lead" cho CÙNG đáp-số — không phân-biệt được.)
- Tally đĩa (lane A2 đếm): **14/14 `model: opus` + 14/14 `effort: max`** (line 5/6 frontmatter từng file), README.md loại đúng, 0 file lệch.
## A3 · autoMemoryDirectory WRITE-path — file MỚI ghi được
- File mới: `.claude/auto-memory/project_h23_spawn_precedence.md` (mang fact THẬT từ A1/A2, không phải probe rỗng) + 1 dòng index `MEMORY.md`. Verify byte>0 chạy sau khi ghi (bài #53 0-byte-write).
## Finding phụ — stale-tooling cùng lớp "all-inherit" (chuyển đợt vá B1)
1. `scripts/spawn-model-audit.ps1` **Section D** còn enforce H8 all-inherit (script viết @S119, trước S124) → chạy hôm nay ra **14 MED FLAG dương-giả** "frontmatter pins 'model: opus' — H8 says every agent inherits". Vá = flush kỳ-vọng theo canonical S124 (opus+max); giữ răng detector bằng fault-inject `-RepoRoot` cây tạm.
2. Cùng file **Section E note 5**: "SE has 0 hard-pinned agents (12/12 inherit)" — stale (nay 14/14 hard-pin) + case hard-pin ĐÃ có evidence (chính phép đo A1 hôm nay). Header `:33-35`/`:41-54` đính-chính cùng đợt.
3. `hmw.js:9` (meta) + `:44-51` comment "H23-precedence CHƯA test — restart-để-ăn" → stale sau hôm nay (lesson S108: comment stale làm worker đọc sai runtime). Vá cùng đợt B1.
## Pilot H22 — datapoint D5
- `/pause` (S125, lead=Fable) → restart → `/tiep` (S126): sàn-3 §0 chạy đủ (3 tín-hiệu MẠNH đều CÓ và đều KHỚP chain — orphan folder = spec-holder đúng trạng-thái `[!]`), ground-truth verify 4/4 khớp, mạch nối 0 hỏi lại.
- **Leg "đổi-model" KHÔNG xảy ra:** WAL `next:` dự-kiến lead Opus 4.8 MAX, thực-tế owner mở phiên Fable 5 (owner-choice) ⇒ datapoint thu được = **cross-SESSION same-model resume OK**; pilot cross-MODEL resume vẫn PENDING. Ghi memory `h22` @closeout — KHÔNG claim quá phép đo.

View File

@ -0,0 +1,39 @@
# sweep-synthesis — B1 all-inherit floor-sống + đợt vá + B6/B2/B3/B4 @S126 2026-07-16
> Stage 2 của run `2026-07-16-S126-adap-spec-execute`. Sub: 1 lane `investigator-codebase` (`wf_973163d9-440`, no-tier — resolve `opus` = thêm 1 datapoint A2, 852s, return sạch). Em-main vá + fault-inject + verify.
## B1 · Sweep (sub đo, em-main VERIFY)
- **Con số (grep-instance, 2 pattern `all-inherit` + `12/12…inherit|model: inherit`):** N_tổng=284 / floor-sống=17 instance (15 unique line / **5 file**) / lineage=32 (26 line) / frozen=235 (count-only). 17+32+235=284 ✓.
- **Root-cause đúng class đã có memory:** S125 vá 2 command-file (`fable-real.md:37` · `fable-clone.md:43`) mà KHÔNG grep sibling ⇒ 5 file governance giữ `all-inherit` làm live-regime. Nặng nhất: `vocab-alias-map.md` §3 — doc canonical CHỐNG vocab-fork tự khai `all-inherit` = "Canonical (hiện hành)".
- **+3 chỗ cùng-lớp LỌT pattern grep** (em-main tự thấy khi đọc để vá — không match literal): runbook `:119` "model = lead-runtime (inherit)" · `:227` template `model: inherit` (match nhưng đọc context mới thấy là spawn-arg sống) · `:110` collateral "inherit top-tier (mặc-định)".
## Đợt vá (em-main, 1 lượt grep-cùng-lớp trọn)
| File | Chỗ vá | Hình-thức |
|---|---|---|
| `docs/governance/vocab-alias-map.md` §3 | restructure: canonical=`worker-tier-pin`, alias 2 đời (`all-inherit` · `two-tier`) + evidence đo S126 | 1 khối |
| `docs/STATUS.md:25` | 3 cụm (nhãn mở-đầu · TOÀN-roster · monitor-frontmatter dated) + `:42` over-claim "ĐÃ vá" → khai SÓT-5-file | 4 edit |
| `.claude/agents/README.md:5` | Architecture + Tier line → worker-tier-pin + lineage 3-đời | 2 edit |
| `docs/governance/harness-11-engine.md` | `:298` J.C mechanism-ref · `:332` GAP-1 "CHE qua opus" · `:336` VACUOUSLY-MET dated-mark | 3 edit |
| `docs/governance/fable-real-runbook.md` | `:108/:110/:119/:147/:221/:227/:367/:444/:520/:563/:642` — 4 hard cite-frontmatter-inherit (mechanism-claim VỠ → "PHẢI set `model:'fable'` param, param THẮNG pin đo S126") + 4 mild "CHE" re-attribute + 3 cùng-lớp | 11 chỗ |
| `.claude/workflows/hmw.js` | `:9` meta + `:44-51` comment "CHƯA test" → ĐÃ ĐO S126 (kết-quả + caveat) | 2 edit |
| `scripts/spawn-model-audit.ps1` | header (ii) UNTESTED→MEASURED · PRECEDENCE block +UPDATE · Section E.5 · **Section D flush H8→S124 (expect `opus`+`max`, +effort check mới)** | 5 khối |
| `scripts/governance-detectors.ps1` | C3 seed `@('two-tier','all-inherit')` → +`'worker-tier-pin'` (fork all-inherit-vs-worker-tier-pin từng LIVE 5-file mà seed cũ MÙ) | 1 dòng+note |
## Chứng răng + verify (KHÔNG chỉ happy-path)
1. **spawn-model-audit Section D fault-inject (cây tạm `-RepoRoot`):** inject `model: sonnet` (cicd-monitor) + xóa `effort: max` (database-agent) → **ĐÚNG 2 FLAG** đúng file:line, 12 file sạch IM, Section B NO-SCOPE (không bịa số). Happy-path repo thật: **TOTAL FLAGS 0** (từ 14 dương-giả) + `[OK] worker-tier-pin holds (14/14 model + 14/14 effort)`. Flag-count giảm = flush-theo-canonical, KHÔNG phải rời-tập-đo (anti-Goodhart: inject→FLAG).
2. **Re-grep 5 file sau vá:** 20 hit còn lại (18 `all-inherit` + 2 `model: inherit`) — đối-chiếu TỪNG dòng = 100% lineage/alias-role (bảng alias vocab-map · "như thời all-inherit" · dated S66/S98/S101/S103 · mega-diary STATUS:6). **⇒ B1 acceptance ĐẠT: 0 floor-sống.**
3. **governance-detectors full-suite sau vá:** TOTAL 45 = baseline S119-era (41 LOW known-noise ratio-band + 3 C3 standing-có-alias-map + 1 H24-3 `STATUS.md:6` label-lag S119-vs-S124 **pre-existing** → xử @B5 closeout). **0 flag MỚI từ đợt sửa.**
## B6 · check-email + báo hub (XONG)
- STAGE 1: outbox/se 14/14 đã processed, **0 mail mới** ⇒ hub CHƯA reply đính-chính; 2 broadcast `do-token`/`h17-cadence-bookend` VẪN `NO-DECLARED-SHA`; snippet decode-hở `check-email.md` hub chưa vá. **KHÔNG stamp gì trước khi hub làm** — chỉ ghi-nhận chờ.
- Backlog `outbox/all`: 2 file sau 07-15 18:00 đều ĐÃ có adap-report (erratum-h8-forward-pointer + phuong-phap-dem-token) ⇒ 0 tồn.
- **Báo hub kết-quả A1** (hứa s124-report §3): email `2026-07-16-se-to-ai_infra-h23-precedence-test-result`**reviewer-gate G-015 chạy TRƯỚC stamp, verdict FAIL bắt 3 lỗi thật** (① "Audit 2/2/0" non-reproducible — COUNTS cumulative cả-phiên, chính 2 lane review đẩy 2→4; ② "ba việc" thực chỉ 2 ask; ③ hedge hub-17/17 SE-self-obs) → sửa cả email + 2 chỗ internal đông-cứng cùng số → stamp `945cf3ad…` selftest MATCH + `stamp_verify.py` exit-0 + `_index` logged CÙNG lượt (bài reconcile S123).
## B2/B3/B4 · trạng-thái
- **B2:** body `project_harness4` ĐÃ khớp S124 + update thêm kết-quả H23 (✅ carry (c) vế-memory đóng; vế STATUS:6 frozen-narrative → B5).
- **B3+B4:** 🔒 OWNER — soạn xong `b3-b4-owner-gated-proposals.md` (B3: 3 phương-án giữ/tách/re-tier mega-line, em khuyến-nghị re-tier; B4: diff 1-dòng `memory-budget.json:74` + biến-thể English). **CHỜ ANH, chưa apply gì.**
## memoryDelta harvest (P3 — 3 lane phiên này, em-main VERIFY trước khi ghi)
- `investigator-codebase` (B1-sweep): verdict 15-floor/5-file + learned "patch không grep sibling → runbook/engine/STATUS/README/vocab giữ all-inherit live" + surprise "vocab-alias-map tự khai canonical-stale" — VERIFIED khớp đĩa (em-main re-grep từng file) ✓.
- `reviewer` (email-gate): learned "số AGGREGATE session-cumulative KHÔNG đưa vào outward artifact mời-reproduce; verify 'N việc nêu ở thư X' = MỞ thư đếm ASK thật" + surprise "chính hành-vi REVIEW làm inflate count 2→4" — VERIFIED (em-main đối-chiếu output script 2 mốc) ✓.
- `reviewer` (A1-probe): trivial lane, learned "measurement lane giữ trivial để transcript sạch" ✓.