[CLAUDE] Scripts: S129 adap 2 errata EOL 16-07 — pre-satisfy fix①②③ + vá point-of-generation mfe-eval 2-phía (BOM/LF) + AXIS-limit header + compendium 4-gated/3-discipline + 2 adap-report + email hub 10ca96c9 (H9 2-workflow wf_3fccd7d1 + wf_8a0249f6)
All checks were successful
Deploy SOLUTION_ERP / build-deploy (push) Successful in 5m30s

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
This commit is contained in:
pqhuy1987
2026-07-16 23:16:50 +07:00
parent 33d402bb33
commit 295c70c904
15 changed files with 498 additions and 4 deletions

View File

@ -10,11 +10,11 @@ chain:
[x] Email hub disposition (2026-07-16-se-to-ai_infra-disposition-owner-gated-dot-16-07) + _index OUTBOUND + commit PUSHED
[x] Check-email đợt 2 (anh gõ /check-email + /adap-apply): 2 errata ĐÃ PHÁT 22:08 → STAGE-1 nhận + verify 2-tuyến PASS (whole-file 9c716472/5e500ae8 + stamp_verify canonical eb12b9b8/0db707e4) + log _index pending. Reply-batch (i) + do-token CHƯA phát (do-token còn drafts/)
[x] IMPLEMENT wf_3fccd7d1-b63 DONE 3/3 0-error: T0 = SE 0-defect-site/8-graded · T1 = #4 sạch-0-suspect · #5 n-a · #6 1-instance-contained (mfe-eval.ps1:204 CRLF→.mfe-state.json, blob LF nhờ attr) · #7 quote-axis UNDETERMINED · T2 = 7/7 ADOPTED + 3 quick-test PASS + 2 known-open. Garble #53 WRITE-lane ×2 (T0 subMdPath=None · T1 claimed-not-written) → em-main on-behalf sub-0/sub-1 VERBATIM journal (bằng chứng: implement-synthesis.md + sub-investigator-codebase-{0,1,2}.md)
[!] wf: REVIEW adap-errata-16-07 run=2026-07-16-S129-adap-errata-16-07 wf_8a0249f6-709 (2 lane reviewer: R0 re-verify+grade P1/P2 · R1 adversarial+integrity+nail-39-vs-40; spec-file spec-review-errata-16-07.md) — ĐANG CHẠY NỀN. Attempt-1 wf_dc8975ba-4ab FAIL-AT-LAUNCH 5ms JSON-args-mangle → spec-file invocation. Xong → fold review-synthesis + áp diff GO + adap-report ×2 + STAGE-2 + email hub
[x] REVIEW wf_8a0249f6-709 DONE 2/2 GO-WITH-FIXES ×2 (attempt-1 wf_dc8975ba FAIL-AT-LAUNCH JSON-mangle → spec-file H21): R0 = T0/T1 ĐỨNG byte-exact + P1 GO-có-điều-kiện + P2 GO · R1 = cite 4/4 exact + quick-test re-run byte-exact + tally-rung MAJOR + story-40 MINOR + on-behalf 0-miss. FOLD + ÁP TRỌN: mfe-eval.ps1 vá 2-phía (:193 +Encoding UTF8 · :204 WriteAllText no-BOM+LF) + eol-check +AXIS-limit :27-30 — verify parse-0/ASCII-0/shape CR=0 BOM=False/round-trip/eol-check-39-exit-0. 2 adap-report + STAGE-2 move (hash preserve 9c716472/5e500ae8) + email hub 10ca96c9 selftest-PASS + harvest 2 agent-memory + session-log run= markers (bằng chứng: review-synthesis.md + sub-reviewer-{0,1}.md + adap-reports ×2)
[ ] 🔒 CHỜ ANH — 3 mục S126: B3 mega-line giữ/tách/re-tier (em khuyến-nghị #3 re-tier) · B4 diff _target_note wording ("real-token headroom"→"cận-trên heuristic-notice", 2 biến-thể VN/EN) · mark-S123 ACTIVE-MARKS.md:33 (⚠️ dấu-hiệu ĐÃ-chốt-rồi — mark RC-…17-23-10 tồn-tại dòng 25+28 — anh confirm 1 chữ là gỡ carry)
[ ] CHỜ HUB (adopt-on-broadcast khi land, verify hash trước áp): (i) lời-chốt anh cho _owner_ratified (hub P1.3 reply-nợ) → áp theo CANONICAL hub + re-sync F10 session-start.md:206 · (iii) seal-verify khuôn hub · do-token letter (ask SE giữ MỞ — đừng đóng sớm) · recipe body-sha strip-1 vs strip-ALL (ứng-viên adap-request, sub-reviewer-1.md §tooling-note)
next: wf_3fccd7d1 xong → fold + REVIEW + adap-report ×2 + STAGE-2 + email hub + commit-push. Hub phát tiếp → nhận (i)/do-token. Anh chốt 3 mục S126 → apply theo b3-b4-owner-gated-proposals.md.
next: Đợt adap 2-errata ĐÓNG TRỌN (commit+push xong + cicd-monitor verify vì đụng scripts/*.ps1). Còn chờ người: hub phát reply-batch (i) + do-token → nhận + áp canonical; anh chốt 3 mục S126 → apply theo b3-b4-owner-gated-proposals.md + gỡ mark-S123 carry.
verify:
- python -c "import json; d=json.load(open(r'.claude/agent-memory/memory-budget.json',encoding='utf-8'))['harness_floor']; print('measured_token_estimate' not in d, d['rounded_up_tokens'])" → True 100000

View File

@ -18,6 +18,7 @@ Read-only INTERNAL audit SOLUTION_ERP codebase. Tools: Read, Grep, Glob, Bash +
---
## 🆕 Recent invest (S112-S114 stubs — verbatim → git history + `archive/2026-07.md`)
- **S129 (07-16 đêm) adap 2 errata EOL 3-lane `wf_3fccd7d1`:** T0 sweep = SE **0 defect-site** (counter duy-nhất `agent-frontmatter-eol-check.ps1` byte-level pre-satisfy fix①③; pattern hỏng chỉ mention-site). T1: 19 `i/-text` đều declared-binary 0-suspect **filter mẫu erratum thiếu docx/xlsx = 13 dương-giả trên SE** (tailor-per-class!); generator-drift thật duy-nhất `mfe-eval.ps1:204` Set-Content UTF8 = **BOM+CRLF** (blob mang BOM 3-byte); W0.6 = EOL-only A/B, trục-quote UNDETERMINED đừng over-read. T2: nấc thật = **4 gated + 3 discipline** (đừng "7/7" phẳng R1 MAJOR). 2 bẫy tự-mắc đáng nhớ: `git log -- <file> | tail -1` = **first-touch KHÔNG phải policy-landing** (.gitattributes 08c7036 06-15 vs 92de58f 07-15) · story "40 = +1 agent mới" BỊA số scoped=39, delta=`skills/README.md` ngoài glob SKILL.md (meta-count class). #53 WRITE-lane 2/3 lane journal cứu trọn, em-main scribe. Tag `[s129, adap-errata-eol, byte-counter-pre-satisfy, bom-in-blob, tail1-first-touch-trap]`
- **S114 (07-12) PE multi-winner PER-HANG-MUC (fable-clone):** Mig58/59 multi-winner = WHOLE-SUPPLIER (`PurchaseEvaluationSupplier.IsWinner`); `Quote.IsSelected` per hang-muc×NCC = latent-hook Mig12 nay LIVE (Mig65 backfill re-key winner-truth IsWinnerIsSelected = CARDINALITY-CHANGE #2). winnerQuoteTotal=SUM(Quote WHERE IsSelected) `PeFeatures.cs:1188`. #1 open: N-win 1 hang-muc split KHOI-LUONG hay full-price (schema thieu per-winner volume). Tag `[s114, pe-multiwinner-per-hangmuc, quote-isselected-live]`.
- **S113 (07-12) Supplier import v2 (5-lane ensemble):** selection consumers qua ListSuppliersQuery (`PeDetailTabs:2222`+`ContractCreatePage:321`+dashboard); chot IsPublic-bool + dedup-MST+Code + fail-closed default. Prod 37 NCC. 1 lane #53-garbleem-main recover. Tag `[s113, supplier-import-v2, ma-ncc=code]`.
- **S112 (07-12) Supplier Excel-import + PE sign-off (fable-clone):** Supplier 27/27 bijective (Mig62 SHIPPED prod); dedup Code CI-collation normalize-case TRUOC store; PE bypass = go/gate `ApplyDrafterBypassOnSubmitAsync`; EDGE-5 drafter-forge-Reject REACHABLE. Tag `[s112, supplier-mapping, pe-bypass-a1, edge5-reachable]`.

View File

@ -70,6 +70,7 @@ 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`)
- **S129 (07-16 đêm) REVIEW adap-errata-EOL 2-lane `wf_8a0249f6` — GO-WITH-FIXES ×2:** R0 re-verify **byte-exact** T0/T1 + bắt P1 writer-only = **NỬA-VÁ** (reader `mfe-eval.ps1:193` là read duy-nhất thiếu `-Encoding UTF8`, đang BOM-sniff; blob mang BOM thật `ef bb bf` — S87 consumer-sweep áp cho cả ĐỀ-XUẤT-VÁ, không chỉ code) + 2 presentation-gap (blob-mutation không khai · lợi-ích thổi khi porcelain vốn rỗng — S81 class). R1 adversarial: 4/4 cite exact + 2 quick-test **tự chạy lại = chứng không-bịa rẻ nhất**; tally "7/7 ADOPTED" = rung-flatten 4-gated/3-discipline (S122 memory≠enforcement); story T0 "+1 agent mới" BỊA (delta thật = `skills/README.md` ngoài glob, số scoped=39); on-behalf verbatim 0-miss (22/22+41/41). Cả 2 lane #53 khai-path-không-ghi → em-main scribe từ journal. Tag `[s129, review-adap-errata, half-fix-writer-only, rung-flatten, byte-exact-rerun]`
- **[→ 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.

View File

@ -0,0 +1,24 @@
# review-synthesis — REVIEW wf_8a0249f6-709 (2/2 lane, 0 error, ~15 phút, 338K tok) + disposition fold
> Fold bởi em-main 2026-07-16 đêm. Cả 2 lane: **GO-WITH-FIXES** — mọi fix đã áp trong lượt này (bảng disposition dưới).
## Verdict 2 lane
- **R0 (re-verify T0/T1 + grade diff): GO-WITH-FIXES.** T0-claim "0 defect site" **ĐỨNG** (sweep góc-khác độc-lập: counter sống duy-nhất = eol-check byte-level; push-path sống duy-nhất = session-end §5.2 so-SỐ; mọi occurrence pattern-hỏng = mention). T1 #4/#6/#7 **tái-lập chính-xác từng số** (19 i/-text · 0 suspect · CR=5 worktree/0 blob). **Datum MỚI quyết-định:** blob `.mfe-state.json` mang **BOM 3-byte** (ef bb bf) — P1 dạng writer-only = nửa-vá → **GO-WITH-CONDITIONS**: phải vá reader `:193` cùng commit + khai thật blob-mutation + đừng thổi lợi-ích (porcelain vốn rỗng). P2 = **GO** (block :25-31 đúng chỗ, ASCII, không mâu-thuẫn severity-ladder). Adversarial-note: session-end `:168` có shape `A && B || C` nhưng an-toàn (không push, B=echo không fail) — T0 không flag là ĐÚNG.
- **R1 (adversarial T2 + integrity): GO-WITH-FIXES.** 4/4 cite EXACT + 6 bonus · 2 quick-test **re-run BYTE-EXACT** (FmCr=4, 39 file · A7 251/251) = không bịa · on-behalf **VERBATIM 0-miss** (T0 22/22 + T1 41/41 dòng) · lớp-1 "N/A-by-design" = **VALID không Goodhart** (mất 0 chứng-nhân — SE không claim đo). **1 MAJOR:** tally "7/7 ADOPTED" làm phẳng nấc — thật = **4 machine-gated (L3 eol-check-teeth · L5 selftest-ABORT · L6 archive-gate · L7 Test-Quoted) + 3 discipline/relabel (L1/2/4 — memory-rung KHÔNG auto-fire, S122)**. **1 MINOR (thuộc T0):** story "40 = 39 + 1 agent mới" **SAI** — delta = `.claude/skills/README.md` (ngoài glob SKILL.md); số scoped ĐÚNG = **39** (khớp canonical session-end:213); sweep-verdict không ảnh-hưởng. **1 minor:** L5 nên cite STAGE-1 hash-verify (đã chạy thật trên 2 errata) làm evidence "ran".
## Disposition từng FLAG (đã áp lượt này)
| FLAG | Xử-lý |
|---|---|
| R0-P1 GO-WITH-CONDITIONS | **ÁP ĐỦ CẢ 3 điều-kiện:** `mfe-eval.ps1:193` +`-Encoding UTF8` (reader hết lệ-thuộc BOM-sniff) + `:202-209` writer → `WriteAllText` UTF8-no-BOM + LF tường-minh, comment khai thật BOM-in-blob + one-time blob change. Verify: parse 0-err · 0 non-ASCII · synthetic write-shape CR=0 LF=5 BOM=False · reader round-trip OK |
| R0-P2 GO | **ÁP:** 4 dòng AXIS-limit vào block "WHY IT STILL EXISTS" (`agent-frontmatter-eol-check.ps1:27-30` mới). Verify: chạy lại script — control ± PASS, 39 file, 0 flag, exit 0 |
| R1-MAJOR tally rung-flatten | **ÁP tại điểm-propagate:** review-synthesis này + adap-report compendium dùng tally ĐÚNG-NẤC "4 gated + 3 discipline" (KHÔNG rewrite sub-2 — file lane giữ nguyên làm bằng-chứng; thân nó vốn minh-bạch, chỉ dòng tally sai) |
| R1-MINOR T0 story-40 | **ÁP tại synthesis:** số scoped canonical = **39**; T0's 40 = đếm all-tracked 3-dir (set khác, hợp-lệ cho set đó); story "+1 agent mới" = meta-count class bịa-nhãn-nhân-quả — ghi vào harvest record T0 |
| R1-minor L5 cite | **ÁP:** adap-report compendium cite STAGE-1 hash-verify 2-tuyến (whole-file + stamp_verify canonical) làm evidence RAN cho lớp-5 |
## Sự-cố lặp + số-liệu
- **#53 WRITE-lane 4/5 lane** (T0/T1/R0/R1 khai path không ghi; chỉ T2 ghi thật) — nội-dung KHÔNG mất (journal trọn), em-main scribe on-behalf verbatim (R1 verify 0-miss cho đợt implement). Pattern mới đáng note: tỉ-lệ WRITE-lane-garble tăng khi lane chạy qua Workflow-tool sandbox.
- REVIEW attempt-1 `wf_dc8975ba-4ab` FAIL-AT-LAUNCH (JSON args mangle tầng harness, 5ms 0-agent) → spec-file invocation (H21) chạy OK. Bài: **args dài = fragile; spec trên đĩa = đường bền.**
- Chi-phí: implement 462K + review 338K + attempt-fail 0 = ~800K tok worker.

View File

@ -0,0 +1,76 @@
# sub-reviewer-0 — R0 (S129) — ON-BEHALF TRANSCRIPT
> 🔴 GHI ON-BEHALF bởi em-main từ journal.jsonl wf_8a0249f6-709 (2026-07-16 đêm).
> Lane R0 khai subMdPath nhưng file KHÔNG tồn-tại trên đĩa (class #53 WRITE-lane, lần 3-4 trong run này).
> Nội-dung dưới = VERBATIM return 4-field từ journal.
---
## findings (verbatim)
**VERDICT: GO-WITH-FIXES** — T0+T1 core verdicts re-verified ACCURATE from disk (0-defect-site STANDS; #4/#6/#7 measurements reproduce exactly; fix②/③ gradings hold). P2 = GO. P1 = GO-WITH-CONDITIONS (NOT GO-as-proposed — writer-only is a half-fix). One T0 supporting-number FALLS: scoped-set "40" is off-by-one, correct = **39** (I own this side of the 39-vs-40 nail).
=== §R0 sub-reviewer-0.md (full detail — em-main scribe verbatim) ===
## (a) Sweep-hole-hunt (independent angle ≠ T0) — T0 "0 defect site" STANDS
Ran `git grep -nE "w/crlf|i/lf|tr -cd .*\r|0x0[Dd]|grep -c"` + `git grep -n "git push"` + `git grep -n "ls-files --eol"` on `*.ps1 *.md *.js *.yml`, excluding frozen (runs/ except this, sessions/, outbox/, agent-memory archives).
- **Only live EOL-counter** = `scripts/agent-frontmatter-eol-check.ps1` (byte-level 0x0D at :14,:181,:287,:311). CLEAN per fix① (byte CR-count, not `grep -c 'i/lf.*w/crlf'`; catches w/mixed; attr-independent).
- **Only live push-path** = `.claude/commands/session-end.md:209`. All other `git push` hits = doc examples (`docs/rules.md:451`, `vps-setup.md:64`, `cicd.md:105` — bare, no gate), memory logs, or cicd-monitor.md:32 (descriptive) = N/A.
- **Every broken-pattern occurrence** (`grep -c 'i/lf.*w/crlf'`, `[ "$n" -eq 0 ] && git push || echo`) lives in `broadcasts/inbox/ai_infra/2026-07-15-...defect-notice.md:52,74,105` + `2026-07-13-...push-guard.md:77` (hub SOURCE = mention) or `docs/governance/adap-requests/2026-07-15-se-r2...` (SE's own request TO hub = mention). ZERO live SE consumers. Correct use⟂mention.
- session-end.md's OWN `grep -c` uses (:73-75,:165) are WAL-counting (`run=`, `wal:`), NOT EOL, and :175 EXPLICITLY forbids using grep-c exit-code as condition. Corroborates fix③ already adopted.
-**T0-claim "0 defect site" STANDS** — my different-angle sweep found no additional live defect site. (Nuance: T0's enumerated "8 live-site" is T0's own framing; the substantive 0-defect holds regardless of whether the enumeration is exactly 8.)
- **Adversarial note (looked, not a defect):** session-end.md §5.0 **:168** DOES use `[ "$K" -eq 0 ] && echo "K=0 → skip" || {...}` — an `A && B || C` SHAPE. But (i) §5.0 is pre-pass with NO `git push`, (ii) B=`echo` never fails so `||C` runs only when the numeric test is false. Safe; T0 correctly did not flag it (fix③ targets push-gating specifically).
## (b) i/-text — T1 #4 STANDS EXACTLY
`git ls-files --eol | grep 'i/-text' | grep -v 'attr/-text'` = **0** (empty). Total `i/-text` = **19**. Breakdown: **12 docx + 6 png + 1 xlsx**. Matches T1 #4 claim to the file. All 19 are attr-declared binary; 0 heuristic-binary. STANDS.
## (c) .mfe-state.json — T1 #6 STANDS + NEW BOM datum
- `git ls-files --eol .claude/agent-memory/.mfe-state.json``i/lf w/crlf attr/text=auto eol=lf`.
- `git status --porcelain <file>` = **EMPTY** (clean-filter normalizes; worktree matches blob after clean).
- Python byte-count (NOT Get-Content): worktree bytes=85, CR=5, LF=5, CRLF=5. Blob (`git cat-file -p :<file>`): CR=0, LF=5. ⇒ CRLF does NOT enter blob. T1 #6 "1 instance contained, blob LF, porcelain empty, 5 CR" STANDS.
- **NEW (decisive for P1):** worktree first bytes = `ef bb bf 7b 0d 0a` and **blob first bytes = `ef bb bf 7b 0a`** → the committed **blob CONTAINS a UTF-8 BOM** (EF BB BF), 80 bytes. Written by PS5.1 `Set-Content -Encoding UTF8` (BOM + CRLF). Full worktree = `b'\xef\xbb\xbf{\r\n "strikes_total": 21,...}\r\n'`.
## (d) .gitattributes provenance — T0/T1 fix②+surprise STAND
- `git log --format='%h %cI' -- .gitattributes | tail -1` = **08c7036 2026-06-15** = first-touch, `broadcasts/** text eol=lf` ONLY (confirmed via `git show 08c7036:.gitattributes`). This is the column-trap T0 flagged (tail-1 = oldest, NOT landing).
- Class-wide `* text=auto eol=lf` landed at **92de58f 2026-07-15** (`git show 92de58f:.gitattributes` → line 14 `* text=auto eol=lf`). Confirmed NOT present in intermediate **8aa3869 2026-07-12** (`git show 8aa3869:.gitattributes` = only broadcasts/** + *.sh; diff 08c7036..8aa3869 adds no text=auto). Both dates < today attr applied+committed. T0/T1 fix "measure AFTER attr" + surprise "tail-1=first-touch not landing" STAND. Immaterial: neither T0 nor T1 mentioned intermediate 8aa3869, but it did not touch the class-wide rule.
## (e) session-end.md §5.2 push-guard — T0 fix③ grading STANDS
- :194-204 `recount()``n=$(recount)``if [ "$n" -gt 0 ]`re-squash`n=$(recount)``[ "$n" -eq 0 ] || { echo "STOP..."; exit 1; }` = comparison on the **NUMBER $n** (via `[` builtin, always clean exit), guard-clause form, NOT grep exit-code, NOT inverted.
- :207 `powershell.exe ... agent-frontmatter-eol-check.ps1 # exit 0 ALWAYS` eol-check standalone, INFORM.
- :209 `git push origin main` reached unconditionally relative to eol-check (not `&&`-chained to it). Push IS gated on the WAL-squash NUMBER (correct fix form), eol-check is INFORM-only. T0 grading STANDS.
## (f) GRADE P1 (mfe-eval.ps1:204 Set-Content→WriteAllText LF) — **GO-WITH-CONDITIONS (LOW) / else DEFER; NOT GO-as-proposed**
Reader inventory (repo-wide grep `mfe-state`): only ONE programmatic reader = `mfe-eval.ps1:193` `Get-Content $statePath -Raw | ConvertFrom-Json`; writer = `:204`. All other refs (WAL.md, harvest MEMORY, memory-budget.json, eval/mfe/README.md, adap-reports, .session-counter.json) = doc/mention, not parsers. Content is strictly ASCII (strikes_total, rca_entries, at=ISO-date). Reader is BOM-agnostic for ASCII **functionally safe**.
**BUT three problems make writer-only a half-fix:**
1. **Consumer-sweep gap (PACK-8 / S87):** reader `:193` reads WITHOUT `-Encoding UTF8` the ONLY read in the file that omits it (contrast :44, :55, :281 all `-Encoding UTF8`). It currently leans on the BOM for encoding auto-detection. Removing the BOM (WriteAllText) leaves :193 on PS5.1 codepage-guess. Safe for ASCII today, latent trap if state ever carries non-ASCII. P1 MUST also add `-Encoding UTF8` to :193 in the SAME commit.
2. **Presentation gap (PACK-9 / S81) — blob mutation not disclosed:** synthesis frames P1 as "xoá churn worktree". Measured: the BOM is IN the tracked blob (c). WriteAllText no-BOM removes it a one-time 3-byte BLOB change (history), not a no-op worktree cleanup. Must be stated honestly in commit/adap-report.
3. **Presentation gap — benefit overstated:** `git status --porcelain` is ALREADY empty (c2). There is no active churn; the renormalize is latent (visible only under `git add --renormalize --dry-run`). "Remove worktree churn" overstates a benefit that never surfaces in normal workflow.
**Grade:** aligns with erratum lỗ #6 (point-of-generation normalize as first-class prevention) genuine governance value on SE's ONE tracked-text generator site SO **GO is defensible IF done completely** (writer :204 + reader :193 + honest framing + ASCII-safe verify re-measuring blob = no-BOM + LF). Writer-only as proposed = NO-GO (would itself be a mini change-constant-miss-consumer). DEFER equally defensible since attr-floor already contains blast-radius (T1's own "nicety, not defect-fix").
## (g) GRADE P2 (matrix-ref sentence into eol-check.ps1 header) — **GO**
Insertion target block **"WHY IT STILL EXISTS - the scope limit of that refutation"** confirmed at **:25-31**. It already documents scope-limits (surfaces: agents-only/1 win32 build; not commands/skills/hooks). T1's proposed ASCII sentence adds an AXIS scope-limit (W0.6 = EOL-only A/B, quote-format held constant, does NOT speak to the description-colon-quote axis of the hub 4-cell matrix). Topically consistent; does NOT contradict severity-ladder (:33-39) or the refutation blocks (:4-5, :16-23 already state REFUTED + CRLF-TOLERANT). Proposed sentence is all-ASCII (gotcha #30 OK). Low-risk doc-in-code, zero behavior change. **GO.** Minor: em-main picks exact insertion line; placement right after the "Verdict: CRLF-TOLERANT ... REFUTED" line (:21) is an equally valid alternative.
## DISCREPANCY NAILED — T0 "40" FALLS, correct = 39
`git ls-files '.claude/agents/*.md'` (non-recursive, incl. README per eol-check design :67) = **15**; `commands/*.md` = **18**; `skills/**/SKILL.md` = **6**. TOTAL = **39**. Matches eol-check.ps1 live output (session-end.md:213 "đo S122: 39") and T2's eol-check print (15+18+6). **T0's "40 file (39 +1 agent mới)" is the error** T0 fabricated a +1 adjustment assuming the "39" note was stale; 39 is the live-correct count. Does NOT change T0's core 0-defect verdict (all 39 have 0 CR / 0 w-crlf), only its supporting count. R1 has the authoritative nail with the README-in-scope-vs-roster-14 nuance; I confirm the number is 39.
## Cross-doc staleness (observation, not in-diff): harvest-curator/archive/2026-07.md:18 states ".mfe-state.json = gitignored:124 by-design" — `git check-ignore` exit=1 (NOT ignored) + file IS tracked. T1's "tracked" is the correct current truth; the harvest memory is stale. Not blocking (harvest's own memory, outside S129 artifacts) but flag for harvest-curator next pass.
## checklistEvidence (verbatim)
(a) Independent-angle sweep (w/crlf|i/lf|tr-cd\r|0x0D|grep-c + git push + ls-files--eol on ps1/md/js/yml, frozen excluded): only live EOL-counter=eol-check.ps1(byte 0x0D), only live push=session-end:209 gated on WAL-number; ALL broken-pattern hits=inbox/frozen/adap-request=mention, 0 live SE consumer T0 "0-defect" STANDS. §5.0:168 A&&B||C shape exists but echo-safe+no-push (correctly not flagged).
(b) i/-text total=19 (12docx+6png+1xlsx); minus attr/-text=0 T1#4 STANDS exact.
(c) .mfe-state.json = i/lf w/crlf; porcelain EMPTY; worktree 5CRLF+BOM(85B); blob CR=0 LF=5 but blob HAS BOM ef-bb-bf (80B) T1#6 STANDS + new BOM datum (decisive for P1).
(d) tail-1=08c7036 2026-06-15 (first-touch broadcasts-only); class-wide `* text=auto eol=lf` @92de58f 2026-07-15 (NOT in 8aa3869 2026-07-12 which only added *.sh); both<today T0/T1 fix②+tail-1-trap surprise STAND.
(e) session-end §5.2: recount()→$n`[ "$n" -eq 0 ] || exit1` = number-compare guard-clause (not grep exit-code, not inverted); eol-check:207 exit0-ALWAYS INFORM; push:209 uncond T0 fix STANDS.
(f) P1 GRADE = GO-WITH-CONDITIONS(low)/else DEFER, NOT GO-as-proposed: single reader :193 lacks `-Encoding UTF8` must sweep same-commit (PACK-8); blob HAS BOM P1 mutates blob not just churn (PACK-9); porcelain already clean benefit latent/overstated. Aligns erratum#6 point-of-gen only if writer+reader both done.
(g) P2 GRADE = GO: target block confirmed :25-31; ASCII sentence adds axis-scope-limit consistent w/ refutation(:4-5,:16-23)+severity-ladder(:33-39), no contradiction; em-main pick exact line.
DISCREPANCY: T0 scoped-set "40" FALLS correct 39 (15 agents incl README + 18 commands + 6 skills = matches eol-check live + T2). T0 core 0-defect unaffected.
CROSS-DOC: harvest-curator/archive 2026-07:18 ".mfe-state.json gitignored" = STALE (check-ignore exit=1, file tracked); T1 "tracked" correct.
## memoryDelta (verbatim)
- **task:** S129 review lane-0 R0): re-verify T0+T1 erratum-EOL-16-07 findings from disk + grade 2 diff-proposals P1(mfe-eval.ps1:204 Set-ContentWriteAllText LF) / P2(eol-check.ps1 header matrix-ref sentence).
- **verdict:** GO-WITH-FIXES. T0/T1 core STANDS: 0-defect-site re-confirmed via different-angle sweep; #4(i/-text=19,minus-attr=0)/#6(.mfe-state.json blob-LF porcelain-empty)/#7 measurements reproduce exactly; fix②(attr landed 92de58f 2026-07-15, tail-1-trap)+fix③(session-end§5.2 number-compare) gradings hold. P2=GO. P1=GO-WITH-CONDITIONS not-as-proposed (writer-only=half-fix). T0 supporting-number '40'→FALLS, correct=39.
- **learned:** Grading a writer-encoding change: MEASURE the actual blob bytes, don't trust the framing. The BOM (ef bb bf) was IN the committed blob, so Set-ContentWriteAllText mutates history (3B), not just 'worktree churn' and porcelain was already empty so the churn benefit is latent (only under --renormalize --dry-run). The matching reader (mfe-eval.ps1:193) omitted `-Encoding UTF8` (unlike :44/:55/:281) and silently leaned on the BOM for auto-detection per PACK-8/S87 the reader MUST be swept in the same commit or the diff is the very change-constant-miss-consumer anti-pattern being adopted.
- **surprise:** Two meta-count fabrications, both on the wrong side: (1) T0's off-by-one '40' came from assuming eol-check's live '39' was stale and adding a phantom '+1 new agent' 39 is live-correct (15 agents incl README + 18 cmd + 6 skill). (2) harvest-curator memory (S107) asserts .mfe-state.json 'gitignored:124' but git check-ignore=NOT-ignored AND the file is tracked with a blob a stale cross-doc claim; T1's 'tracked' is the correct current truth.

View File

@ -0,0 +1,70 @@
# sub-reviewer-1 — R1 (S129) — ON-BEHALF TRANSCRIPT
> 🔴 GHI ON-BEHALF bởi em-main từ journal.jsonl wf_8a0249f6-709 (2026-07-16 đêm).
> Lane R1 khai subMdPath nhưng file KHÔNG tồn-tại trên đĩa (class #53 WRITE-lane, lần 3-4 trong run này).
> Nội-dung dưới = VERBATIM return 4-field từ journal.
---
## findings (verbatim)
VERDICT: GO-WITH-FIXES — T2 evidence REAL + citations EXACT (4/4 spot-checks + 6 bonus verified) + both re-run quick-tests reproduce BYTE-EXACT + on-behalf transcripts VERBATIM. 1 MAJOR (headline "7/7 ADOPTED" flattens machine-gate-vs-discipline rung — S122: memory≠enforcement) + 1 MINOR belongs-to-T0 (sub-0 "40=39+1 agent mới" story FALSE) + 1 minor note (Lớp-5 map-only). No fabrication, no false fact in T2.
# sub-reviewer-1 — §R1 ADVERSARIAL review of T2 (compendium 7-lớp) — S129
## (a) Spot-check 4 evidence-cite của sub-2 bảng-A — ALL EXACT (0 FLAG)
Re-đọc từ đĩa, cite-by-cite:
1. `governance-detectors.ps1:598-601` Test-Quoted — **EXACT**: dòng 598 `function Test-Quoted {`, 599 `param([string]$Line,[int]$Index)`, 600 `return ((([regex]::Matches($Line.Substring(0,$Index),'`')).Count % 2) -eq 1)`, 601 `}`. Bonus: header-comment `:593-597` "SHARED by H24-1 và H24-3 ... citation trap is a CLASS ... S123 review caught H24-3 shipping WITHOUT this guard" ✓; live callers `:613/:745/:755` ✓ (grep xác-nhận 3 caller thật, khớp sub-2 "live uses :613/:745/:755").
2. `crystallized-backfill.ps1:25` "convention, NOT measured" — **EXACT**: `# (4) HEURISTIC RANGE (convention, NOT measured): token headroom is a RANGE [bytes/4 .. bytes/3.0]`. Bonus `:117` "convention char/4 + VN ~3.0-3.5 byte/tok -- CHUA do tokenizer that tai SE (see dinh-chinh letter 58f5afd8 2026-07-16)" ✓.
3. `memory-budget.json:90` `_owner_override_note` measured_token_estimate RETIRED — **EXACT**: dòng 90 chứa "the parallel field measured_token_estimate RETIRED", "a stored 'measured/estimate' number invites the mislabel class (san-su-that 190c11ba; SE dinh-chinh 58f5afd8)", "0 script consumers of the retired field (grep-verified S127 + S129)". Bonus `:65` token_estimate "convention ... report a RANGE [bytes/4 .. bytes/3.0]" ✓. **Independently verified**: field KEY `"measured_token_estimate":` genuinely ABSENT (retired, not just noted); grep repo = 0 script consumer (chỉ note tự thân + frozen run-docs S124/S127 tham-chiếu). Claim HOLDS.
4. `ACTIVE-MARKS.md:25` "fault-inject 4 bộ, 24/24" — **EXACT**: dòng 25 (row RC-pqhuy1987-15-07-2026-17-23-10) chứa "**fault-inject 4 bộ, 24/24** — backtick-guard 5/5 · H24-3 6/6 · DUAL-ACCEPT 7/7 · ... thử lại 6/6" (5+6+7+6=24 ✓); §(3) "bẫy tự-quy-chiếu = CLASS ... helper DUY-NHẤT Test-Quoted, mọi matcher prose PHẢI gọi" ✓; stamp "Active-High (anh-confirm S123 · P4 report-before-stamp)" ✓; mark tồn-tại dòng 25+28 ✓ (layer-4 stale-carry claim đúng).
**0 cite lệch dòng/chữ. Citation fidelity của T2 = XUẤT-SẮC** (hiếm: ≥10 cite exact-to-line, gồm cả whitespace-normalized code-block khớp logic).
## (b) Refute "7/7 ADOPTED · 0 GAP ẩn" — 1 MAJOR: rung-flatten gate-vs-discipline
Phân-loại NẤC thật của 7 lớp (verified từ đĩa):
- **GATED (máy/runtime CÓ RĂNG)** = 4: Lớp 3 (eol-check synthetic-control — TÔI RAN, FmCr=4 teeth) · Lớp 5 (send-email.md:32 "6c Selftest-stamp → Lệch = ABORT gửi" = runtime gate thật + recipe canonical :28) · Lớp 6 (archive-gate hysteresis+DRY+strike-threshold — TÔI RAN) · Lớp 7 (Test-Quoted use⟂mention — verified 3 caller).
- **DISCIPLINE/RELABEL/MEMORY (KHÔNG auto-fire)** = 3: Lớp 1 (relabel doc-comment + field-retire — không gate) · Lớp 2 (general "grep-by-class sau mỗi vá" = câu-hỏi phản-tư; Test-Quoted chỉ phủ sub-case citation-trap) · Lớp 4 (grep-before-action = kỷ-luật; near-miss mark-S123 bắt bằng grep-TAY người, KHÔNG phải cổng).
🔴 **FLAG (MAJOR):** headline "7/7 ADOPTED · 0 GAP ẩn" LÀM-PHẲNG split 4-gated/3-discipline. Theo CHÍNH bài-học S122 của SE (`feedback_root_cause_over_symptom`: "lesson-trong-context KHÔNG tự bật; chặn được = LUẬT soi-được, không phải trí-nhớ"), 3 lớp discipline-rung là những cái GIÒN nhất. Tally 7/7 phẳng đẩy ra adap-report/hub sẽ đọc thành "SE có cổng-máy cho cả 7" = over-report rung. Compendium §6.3 YÊU-CẦU "báo lại đúng NẤC" (4 nấc: n-a/thử-không-dính/tìm-thấy-đang-sửa/đã-sửa-verify) — T2 gộp về "ADOPTED" cho cả 7.
**Mitigation (công-bằng):** thân sub-2 MINH-BẠCH — cột "Trạng-thái SE" có qualifier ("ADOPTED (relabel)", "ADOPTED + live near-miss CAUGHT"), §D lý-luận per-lớp, §E tách rõ RAN vs MAP-ONLY. Vấn-đề CHỈ ở dòng tally sẽ propagate. **Fix = 1 mệnh-đề trong tally**: "4 machine/runtime-gated (Lớp 3/5/6/7) + 3 discipline/relabel-adopted (Lớp 1/2/4, memory-rung không auto-fire per S122)". KHÔNG phải re-analyze.
**Lớp-1 "N/A-by-design" = VALID, KHÔNG Goodhart:** phép-thử compendium (đổi hằng-số ±half → all-green = 0 lưới) chỉ có nghĩa với con-số mang nhãn "measured". SE đã RETIRE field measured_token_estimate + relabel "convention, NOT measured" (verified) ⇒ không còn nhãn "đo" để làm-trượt. Compendium §5 TỰ endorse: "dải cận-trên tạm-thời ... ra ngoài dải là BÌNH-THƯỜNG ... dấu-hiệu tốt". Discriminator Goodhart (`feedback_goodhart_leave_measurement_set`: "cái mất đi là dương-giả hay CHỨNG-NHÂN?"): ở đây mất 0 chứng-nhân (SE không claim đo) ⇒ bỏ-nhãn = 1 trong 3 lối thoát hợp-lệ của measured-label gate. VALID.
## (c) Quick-test integrity — RE-RAN 2/3, BYTE-EXACT, KHÔNG bịa
- **eol-check.ps1 (Lớp-3)**: tôi chạy → `(+) CRLF synthetic fm=True FmCr=4 BodyCr=1 PASS` + `(-) LF FmCr=0 PASS` + `agents=15 commands=18 skills=6 = 39 file CR-bytes=0` + `RESULT: GREEN-BUT-VACUOUS` + exit 0. **KHỚP §B-b của sub-2 TỪNG BYTE** — "FmCr=4" plausibility (spec §R1-c) = CONFIRMED REAL, không bịa.
- **archive-gate.ps1 (Lớp-6)**: tôi chạy DRY (default per :86) → `mode DRY-RUN (no writes)` + `A7 GATE PASS - total pointers 251, resolved 251, failed 0` (99+41+55+56=251). **KHỚP §B-a "251 resolved 251"** — plausibility CONFIRMED REAL. `git status --porcelain .archive-strikes.json` = RỖNG cả TRƯỚC và SAU (0 side-effect) ⇒ claim "no-strike-persisted" đúng. "RUN1≡RUN2 byte-identical" tôi chỉ chạy 1 lần nhưng DRY = deterministic (grep+measure, 0 write) ⇒ idempotence cấu-trúc-đảm-bảo + 0 side-effect verified.
- **Test-Quoted (Lớp-7)**: locate + :745/:755 use-site verified (§a). ⇒ 3/3 quick-test = CHẠY THẬT, output-dán khớp đĩa.
## (d) NAIL 39-vs-40 — RESOLVED (số ĐÚNG=39; lệch = T0-story, KHÔNG phải T2)
Đo độc-lập: eol-check-glob (agents `*.md`=15 + commands `*.md`=18 + skills `SKILL.md`=6) = **39** · git-ls-files ALL-tracked 3-dir = **40** · delta = **`.claude/skills/README.md`** (`comm -23` chỉ đúng 1 file — tracked nhưng NGOÀI glob `SKILL.md`-only của skills).
- **Số ĐÚNG cho scoped-set = 39** — khớp CANONICAL `session-end.md:213` ("script đếm scoped-set bằng glob (đo S122: **39 file** = agents/ + commands/ + skills/)") + khớp output tôi vừa chạy. **T2 (39) ĐÚNG.**
- **T0 (40)** = count `git ls-files --eol` all-tracked 3-dir — đúng CHO SET ĐÓ, nhưng set khác (superset).
- 🔴 **FLAG (MINOR, thuộc sub-0/T0):** T0 giải-thích "total 40 file (khớp session-end §5.2 note '39' **+1 agent mới**)" = STORY SAI. agents=15 ở CẢ worktree VÀ tracked (0 agent mới/untracked). +1 thật = `.claude/skills/README.md` NGOÀI glob eol-check, KHÔNG phải agent. Đây đúng meta-count class (PACK #7/S119: số phải tự-đếm-lại; T0 gắn nhãn-nhân-quả bịa cho gap). **Sweep-verdict T0 (0 defect site) KHÔNG ảnh-hưởng** — chỉ reconciliation-narrative sai. em-main synthesis (implement-synthesis:21) ĐÚNG khi để mở "cần phân-xử (meta-count class)" — KHÔNG endorse story "+1 agent" của T0.
## (e) On-behalf integrity — VERBATIM PASS (0 miss)
Đối-chiếu journal.jsonl (wf_3fccd7d1-b63, 6 dòng: 3 started + 3 result) vs sub-0/sub-1. Map agentId: T0=`aff09616` (result-keys KHÔNG có subMdPath ⇒ xác-nhận #53 garble "subMdPath=None") · T1=`acb2e785` (có subMdPath nhưng file không tồn-đĩa = claimed-but-not-written) · T2=`a4462d55` (self-wrote).
- **T0**: 22/22 dòng-findings-substantive + 2/2 dòng-checklist present verbatim trong sub-0 (**0 missing**, normalized-whitespace substring match).
- **T1**: 41/41 dòng-findings + 1/1 checklist present verbatim trong sub-1 (**0 missing**).
- Marker RÕ: mỗi file header "🔴 GHI ON-BEHALF bởi em-main từ journal ... VERBATIM ... KHÔNG phải em-main viết lại". Garble T0 (subMdPath lẫn text) được chép TRUNG-THÀNH. ⇒ on-behalf = faithful, KHÔNG paraphrase/tô-điểm.
## (f) Omission-hunt
- **Erratum §"Bạn phải làm gì" 5 điểm — TẤT-CẢ chạm:** #1(attr-aware count) + #2(push-wiring so-SỐ) = T0 · #3(i/-text lone-CR) + #4(fixture -text) + #5(generator self-check) = T1. #5 phủ ở nấc PROPOSE (mfe-eval.ps1:204 → LF-normalize, verified write-site thật `Set-Content -Encoding UTF8`→.mfe-state.json) — advisory 1-site, KHÔNG dựng "sàn self-check MỌI generator" first-class như erratum đề — nhưng T1 khai đúng INFORM-nấc. Không điểm nào bỏ trống.
- **Compendium §4/§5/§6 vs T2:** §3 (6 dấu-hiệu) → T2 §C đầy-đủ ✓. §4 (văn-hoá) → T2 phủ ngầm các SE-attribution (S125 dinh-chinh 58f5afd8 + NGHI-VERIFIER-TRƯỚC ở row-5/dấu-hiệu-4) ✓. §5 (KHÔNG-BIẾT) → T2 cite §5 cho Lớp-1 "dải cận-trên" ✓; 3 unknown còn lại (candidate-families, index-naming, chép-câu-hỏi-không-chép-số) = caveat "đừng-over-adopt", không phải test → không omission cứng.
- **§6.1 "chạy BẢY phép-thử":** T2 chạy 3 (L3/6/7) + map-only 4 (L1/2/4/5). Map-only DEFENSIBLE: L1 no-suite-để-±half · L2 câu-hỏi-phản-tư không-chạy-được · L4 đã-demo-trên-ca-sống (mark-S123 grep-đĩa) · L5 no-trigger (không sửa artifact-stamped trong task) + recipe strip-1-vs-strip-ALL declared-OPEN (chạy giờ risk spurious-mismatch). **Note (không phải gap):** L5 hash-test NOMINALLY runnable trên stamp có-sẵn — và run.md:5 cho biết STAGE-1 ĐÃ chạy "2-tuyến PASS (whole-file + stamp_verify.py canonical)" trên 2 errata ⇒ cơ-chế Lớp-5 ĐÃ exercised bởi em-main, chỉ không trong lane T2. adap-report NÊN cite STAGE-1 hash-verify làm evidence "ran" cho Lớp-5 thay vì map-only.
## Tổng verdict T2
Phân-tích SOUND, evidence THẬT (mọi claim checkable đều verify: cite exact, test reproduce byte-exact, retire thật, on-behalf verbatim). Không bịa, không sai fact. 1 MAJOR = tally-headline rung-flatten (fix = 1 mệnh-đề, thân đã minh-bạch). 1 MINOR = lỗi T0-reconciliation (skills/README.md ≠ agent mới). 1 minor = L5 nên cite STAGE-1 làm "ran". ⇒ **GO-WITH-FIXES.**
## checklistEvidence (verbatim)
(a) 4/4 cite EXACT + 6 bonus: Test-Quoted @598-601 (fn) + comment 593-597 + callers 613/745/755 · crystallized:25 "convention,NOT measured" + :117 · budget.json:90 measured_token_estimate RETIRED (KEY genuinely absent, 0 script-consumer grep-confirmed) + :65 range · ACTIVE-MARKS:25 "fault-inject 4 bộ,24/24" (5+6+7+6=24). 0 cite lệch.
(b) 7/7 refute → 1 MAJOR: rung split thật = 4 GATED (L3 eol-check-RAN teeth · L5 send-email:32 selftest-ABORT · L6 archive-gate-RAN · L7 Test-Quoted) vs 3 DISCIPLINE/RELABEL (L1 relabel+field-retire · L2 general-grep-by-class · L4 grep-before-action). Headline "7/7 ADOPTED" phẳng rung (S122 memory≠enforcement). Lớp-1 N/A-by-design = VALID không Goodhart (compendium §5 endorse range-convention; retire real, 0 witness lost).
(c) RE-RAN byte-exact: eol-check FmCr=4 + 15/18/6=39 + GREEN-VACUOUS ≡ §B-b; archive-gate DRY "A7 GATE PASS total 251 resolved 251 failed 0" (99+41+55+56) ≡ §B-a + git-status clean before/after (0 side-effect). NOT fabricated.
(d) 39-vs-40 RESOLVED: 39=eol-check-scan (CORRECT = session-end.md:213 canonical) · 40=git-ls-files-all-tracked-3dir · delta=`.claude/skills/README.md` (comm -23, outside SKILL.md glob). T0 số OK cho set-đó nhưng STORY "+1 agent mới" FALSE (agents=15 stable, 0 new) = MINOR meta-count FLAG on sub-0.
(e) On-behalf VERBATIM PASS: T0 22/22 findings + 2/2 checklist, T1 41/41 findings + 1/1 checklist present in sub-0/sub-1 (0 missing, normalized). Markers explicit. Garble T0 (no subMdPath key in journal) chép trung-thành.
(f) Omission: erratum 5-điểm ALL chạm (T0:#1,#2; T1:#3,#4,#5, #5 ở PROPOSE-nấc). Compendium §3/§4/§5 phủ. §6.1 "chạy 7" → T2 chạy-3+map-4 defensible (L1 no-suite·L2 reflective·L4 demoed·L5 no-trigger+recipe-open); note L5 test runnable & STAGE-1 đã exercise (run.md:5) → nên cite làm "ran". §6.3 4-nấc vocab vs "ADOPTED" = tie vào (b).
## memoryDelta (verbatim)
- **task:** §R1 adversarial review T2 (compendium 7-lớp adoption) — S129 adap-errata-16-07: spot-check 4 cite + refute 7/7-ADOPTED + quick-test integrity re-run + nail 39-vs-40 + on-behalf verbatim + omission-hunt.
- **verdict:** GO-WITH-FIXES. T2 evidence REAL — 4/4 cite exact +6 bonus verified; eol-check(FmCr=4,39) & archive-gate(251/251) re-run BYTE-EXACT; on-behalf T0 22/22+T1 41/41 verbatim 0-miss; measured_token_estimate KEY genuinely retired 0-consumer. 1 MAJOR = tally '7/7 ADOPTED' flattens 4-machine-gated(L3/5/6/7) vs 3-discipline/relabel(L1/2/4) rung (S122 memory≠enforcement) — thân minh-bạch, fix=1 mệnh-đề. 1 MINOR(sub-0/T0) = '40=39+1 agent mới' story FALSE (delta=skills/README.md ngoài SKILL.md-glob, agents=15 stable). Lớp-1 N/A-by-design VALID không Goodhart.
- **learned:** 39-vs-40 = SET-DEFINITION mismatch KHÔNG phải count-error: eol-check globs *.md+SKILL.md=39 (=canonical session-end:213), git-ls-files all-tracked=40; nail = `comm -23` hai set để lòi CHÍNH-XÁC 1 phần-tử lệch (.claude/skills/README.md) thay vì nuốt reconciliation-narrative ('+1 agent mới' = story bịa papering gap). Refute 'N/N ADOPTED' tally = phân-loại NẤC (machine-gate RAN-verified vs discipline/relabel memory-rung), vì S122 nói discipline-rung không auto-fire — flat-tally over-reports rung ra hub.
- **surprise:** Citations của T2 EXACT-to-line qua CẢ 4 spot-check +6 bonus (hiếm — thường ≥1 drift); vấn-đề DUY-NHẤT là rung-flatten TALLY, KHÔNG một fact sai nào. Và 'discrepancy REVIEW phải nail' (per synthesis) hoá ra là lỗi T0 (sub-0 meta-count story), KHÔNG phải mâu-thuẫn T2-vs-T0 — cả 2 số ĐÚNG cho set riêng, chỉ T0-narrative sai. Re-run integrity thắng suy-đoán: 'FmCr=4'/'251 resolved' nghe như số-bịa nhưng chạy lại khớp từng byte.