[CLAUDE] Docs: S152 closeout — bookend hình B trọn 2 đầu + owner (30)(31)(32) + queue memory-ops TRỌN (squash 20 wal:)
All checks were successful
Deploy SOLUTION_ERP / build-deploy (push) Successful in 5m30s

- Owner 3-quyết: (30) JUMP để-nguyên-theo-nhịp · (31) 4 persona +NEVER-block (restart ĐÃ THOẢ) · (32) vòng 1→5 AUTO — lô consent gỡ 9 site (5 H1 + ring1-tự-bắt + 3 trio; E-013 EXT)
- Memory-ops TRỌN: A1-A4/D1/D2/R1/B-series — A7 392/392 · mfe 20/20-100% lần đầu · lead-gap drain 24.728→16.485B · strike-ledger + WARN-latch (-Ack = owner-action)
- V4 sleep AUTO đầu: 1 shard thật/16 KÊU · ring4 đầu-đời TRƯỢT-4/5 → 4 fix gist (scribe sub-ring4-close vì return-only)
- Thư model re-stamp: 59ce1d0f → 9c909007 published (G-024a) — adap-report Đính-chính @S152 + sweep 13 bề-mặt LIVE
- Bookend @close: stale 6 FLAG + gap 2 FLAG → vá 8/8; ring2 8/8 ĐẠT (4-A pin-bản-cắt → slot 33) · ring1 48Đ/5T/59-claim
- M9 13 đơn-vị diary (3 S151-deep hồi-tố) · #53 ×10-chắc → tally 60-cận-dưới + errata subject-1b85713
- Session-log 2 run= + completeness-gate 5-vòng ĐẠT · HANDOFF segment S152 (carry 3-đóng/3-mới/23-giữ; slot 33/34)

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
This commit is contained in:
pqhuy1987
2026-07-26 01:58:30 +07:00
parent 1b85713bb6
commit c2d01f0dce
96 changed files with 4334 additions and 199 deletions

View File

@ -101,3 +101,13 @@ Adversarial pre-commit reviewer SOLUTION_ERP. Read-only verify + live curl prod
## S149 (2026-07-24) — gate hội-tụ-bookend [LEAD GHI ON-BEHALF @S150 — M9/B3 theo H2-F4 (1 invocation thật → 0 entry); nguồn: `runs/2026-07-24-S149-hoi-tu-bookend/sub-reviewer-hoi-tu.md` 15.733B]
- `/fable-real reviewer` gate spec hội-tụ-bookend: **GO-WITH-FIXES 1C/6M/4m** (CLEAN 218K, 0 garble) — spec v1→v2 trước wave implement 5-lane Opus (5/5 done 946K 0-garble). Lưu ý sổ: lượt gate adap-backlog `wf_f4e4c006` KHÔNG tính invocation vai này (reviewer-lane **skeleton-ruột-rỗng** — khung 274B, 0 append, return+resume đều fail → em-main-solo re-do; xem sổ garble sub-class @S150).
## S152 (2026-07-26) — D2 Fidelity-gate 6 gist "CỤM BỔ SUNG" (coverage-diff) — **PASS_WITH_FIXES** (A/B/C/D PASS · E FAIL)
- **Census thay spot:** 307/307 trích có trong verbatim CẶP (275 exact + 32 sau khi hoàn `'``"`), 307/307 chứa ĐÚNG token gắn nhãn, 307/307 token thật-sự VẮNG khỏi gist tiền-append (0 gap thổi-phồng). `ref`=46 khớp đúng claim lead. Trích = cửa-sổ ~150 ký-tự cố-định, token ở ~27% → cắt giữa từ ở 2 biên nhưng payload (file:line/finding) còn nguyên ⇒ điều-hướng được, KHÔNG rác.
- 🔴 **E FAIL — class-gap hệ-thống, chữ-ký sạch:** máy-trích emit file-ref CHỈ cho `{.cs 101/.tsx 45/.ts 16/.ps1 8}` = 170 token, **ZERO cho `{.yml,.json,.slnx,.csproj,.sql,.config}`** ⇒ 13 token infra vắng ở 5/6 cặp. Nặng nhất: `deploy.yml` (chính file pipeline, trong gist của vai CI/CD!) · `appsettings.Production.json` (16 lần trong verbatim) · 2× `s59-*.sql` (chạy TAY prod ngoài pipeline) · `memory-budget.json` (single-source canonical CLAUDE.md). Header cụm TỰ đặt chuẩn "file-ref phải sống trong gist" mà KHÔNG khai N/A ⇒ trượt bằng chính thước mình.
- 🔴 **3 THƯỚC-HỎNG (bug ở phép đo, không ở vật):** (1) md5 disk vs `git show` — spec gate ghi vậy — báo FAIL GIẢ 3/6 verbatim do worktree CRLF ⟂ blob LF (autocrlf=true + 188 file legacy `i/lf w/crlf`); đúng phải `git diff HEAD --quiet` hoặc strip-CR 2 phía. (2) `grep -c distill-gen` vô-dụng vì CHÍNH header cụm chứa chữ "distill-gen giữ" (citation-trap nhẹ) → phải so VALUE `distill-gen:\s*\d+`. (3) `grep -iF` trên MSYS trả **0-hit im-lặng** cho pattern ASCII trong file UTF-8 (`Mig42`: `-F`=1 nhưng `-iF`=0) = bẫy vắng-mặt-trông-giống-sạch S146 — thoát nhờ đối-chiếu Python.
- **Tự bắt 2 lỗi của CHÍNH mình trước khi báo:** "Mig 47/50/42/46 MISS" = artifact chuẩn-hoá của tao (`Mig42` liền không dấu cách, có ĐỦ 2 phía) · context-regex `.{70}` trả RỖNG đọc nhầm thành sạch → phải `.{0,70}`. ⇒ **LUẬT: mọi MISS phải literal-grep XÁC-NHẬN 2 phía bằng công-cụ THỨ HAI trước khi vào report.**
- D re-ground từ đĩa: `docs/gotchas.md` count=83/max=83 ⇒ 0 nhãn `gotcha #N>83`; soi NGƯỢC 24 dòng gotcha ≤83 tìm mirror-error (run-number đội lốt gotcha) → 0 ca, mọi #N đều là gotcha thật trong ngữ-cảnh nguồn. Tag `[s152, d2-fidelity-gate, coverage-diff, extractor-ext-blindspot, thuoc-hong-x3]`
## S152 (2026-07-25) — R1 retention-note ranh NEVER [M9 on-behalf lead]
- **NEVER Edit/Write vào code-tree, NEVER commit, NEVER push** — vai = verdict-only (PASS/FAIL + issue file:line), sửa là việc em-main/implementer. KHAI THẬT 2 nấc: (a) ranh commit/push/code-tree **chưa từng vỡ**; (b) Write/Edit runtime CÓ cấp và ĐÃ dùng hợp lệ cho sub-file run-folder + diary-self-write (AS-10 VERIFY-KEEP, nhân-chứng S143) — tức "NEVER" áp cho ĐÍCH (code/commit/push), không phải cho tool-tồn-tại; containment thật = git-diff lead. Tag `[s152, r1-retention, never-edit-write-commit-push-target-scoped]`

View File

@ -32,3 +32,58 @@
- [thấp] VIỆC: 6 routine pre-commit gate cũ S33-S49 (S33 Plan B G-H1 Mig 34 SF-6× · S35 G-H2 BE CRUD 16-endpoint SF-8× · Smart-Friend-cumulative-8×-CLEAN · S40 archive-pointer S29-S33 · S43 P11-B LeaveBalance Max-no-truncate · S49 Harness-1/2/3 governance Max-clean). KẾT-LUẬN: tất cả PASS/CLEAN, 0 unique gotcha#/root-cause mới (gate áp-dụng-lặp). BÀI-HỌC: foundation 5-category + Smart-Friend đã ở L1 — các gate này không sinh marker mới. BẤT-NGỜ: N/A (routine). substring:"S33 Plan B G-H1" / "S35 G-H2 BE CRUD" / "S43 P11-B LeaveBalance" / "S49 Harness 1/2/3" → 2026-06.md
- [vừa] VIỆC: 2 die-meta non-deliver (S57bis product-gate die-0-byte ×2 · S60 đợt1 PE submit-guard die mid-run 3rd). KẾT-LUẬN: reviewer chết giữa task → em-main on-behalf gate. BÀI-HỌC: recovery-path = [[feedback_agent_kill_recovery]] (canonical user-memory — marker survive ở đó). BẤT-NGỜ: die-0-byte ×2 cùng điểm. substring:"S57bis product gate" / "S60 đợt1 PE submit-guard" → 2026-06.md
- [vừa] VIỆC: 2 Harness-10 adap-review R2(hmw.js engine)/R3(floor C1-C8) — REDUNDANT (dupe S71 entry giữ L1-top). KẾT-LUẬN: cùng catch C5 L1 over-claim (doc nói hmw.js prompt-builder emit L1, engine no-fs → grep=0 → fixed em-main convention). BÀI-HỌC: marker survive ở L1 S71 + [[feedback_harness10_run_trace]]. BẤT-NGỜ: R2+R3 độc-lập cùng kết luận = high-conf. substring:"Harness-10 adap R2-lens hmw.js" / "Harness-10 adap run-trace folder R3-floor" → 2026-06.md
## CỤM BỔ SUNG [coverage-diff @S152 D2 — máy-trích nguyên-văn + lead-review; KHÔNG phải re-distill, distill-gen giữ]
> Token load-bearing có trong verbatim `2026-06.md` mà gist thiếu — mỗi dòng = token + TRÍCH NGUYÊN-VĂN dòng chứa nó (Ctrl-F token trong verbatim để đọc trọn). Chuẩn gate: gotcha#/Mig/file-ref/guard phải sống trong gist. *(Đính-chính nhãn @lead-review: `#N > 83` = Run/PR-ref CI, KHÔNG phải gotcha — repo max #83; đổi nhãn `ref`.)*
- ref **#283** · trích: "e-checklist PASS 0 blocker') → ship Run #283 PASS prod-verified, bundle rotate both. LEARNED: self-gate em main đứng vững lần 2 (sau S57bis) — checkli"
- ref **#291** · trích: "ual ctor — KHÁC CreateDepartmentCommand #291 CS7036 vì positional-required vs trailing-optional); mirror fe-user==fe-admin SHA256 IDENTICAL (PeDetailT"
- ref **#293** · trích: "`null` backward-compat phiếu thật (Run #293 GET 200); Create/Update +trailing-optional `HoSoLink=null` KHÔNG vỡ call-site (grep 0 manual ctor — KHÁC"
- gotcha **#30** · trích: "k sound (mig 3-file OK pure-ASCII gotcha#30-respect, PUT wired real not-mock). **🟡 MAJOR race STILL PRESENT (carry-over Part1, line 64 entry):** PeDet"
- ref **#313** · trích: "authz) on commit 1d86abc (deployed Run #313) + 1 uncommitted FE-fix. **Uncommitted diff = 2 LOC product only** (`priceMissing` both apps, SHA-identic"
- ref **#381** · trích: "49 Up/Down reversible + 240 test + Run #381 + prod smoke 401/404-control. LEARNED: output-file size=0 + im >5 phút = chết, KHÔNG đợi thêm; KHÔNG re-s"
- gotcha **#42** · trích: "> Foundation (role + bug patterns #42/#43/#44/#47 + 6-category checklist + Smart Friend guard + review essentials) + 6 newest activity entries + S49/S"
- gotcha **#43** · trích: "> Foundation (role + bug patterns #42/#43/#44/#47 + 6-category checklist + Smart Friend guard + review essentials) + 6 newest activity entries + S49/S"
- gotcha **#47** · trích: "dation (role + bug patterns #42/#43/#44/#47 + 6-category checklist + Smart Friend guard + review essentials) + 6 newest activity entries + S49/S43/S35"
- gotcha **#48** · trích: "EAN:** (1) S22 #44 silent-403 · (2) S25 #48 SQLite tie-break · (3) S29 password ≥12 · (4) S29 ApplicableType cross-module · (5) S33 BW test · (6) S33"
- gotcha **#51** · trích: "plete 3 HRM, DbInitializer idempotent + #51 infra-gated, SHA256 mirror, no copy-paste Driver↔Vehicle). **Learned:** parallel fan-out (BE∥FE file-disjo"
- gotcha **#66** · trích: "full 50-900 so brand-800 valid); gotcha #66 — 0 gradient/dark-bg headings added (all headers on light surface use accent-ink text-brand-800/{accent}-7"
- Mig **Mig 43** · trích: "th cumulative gotcha #57 (after Holiday Mig 43 S45 + HRM ×3 Mig 45 S51). 3 Master configs (Department:18/Project:19/Supplier:24) Code unique index `.I"
- Mig **Mig 49** · trích: "thz key-set + role-string vs AppRoles + Mig 49 Up/Down reversible + 240 test + Run #381 + prod smoke 401/404-control. LEARNED: output-file size=0 + im"
- Mig **Mig 54** · trích: "- **2026-06-18 (S72ter-WIRE Mig 54 cross-stack-wire + verify-fix lane — uncommitted priceMissing, PASS no-new-deadlock):** Complement to S72ter-AUTHZ"
- Mig **Mig 56** · trích: "6-19 (S76 Part1 PE budget MA-TRẬN 3 cột Mig 56 — uncommitted, PASS w/ 1 MAJOR race + 2 MINOR):** Form ngân sách 1-cột→ma-trận [Dự án|PRO|CCM]. Entity"
- Mig **Mig42** · trích: ":** 14 file (LeaveBalance entity+config+Mig42 + Features + Controller + deduction hook + Create/Update LeaveType guard + embed balance + FE×4 + tests)"
- Mig **Mig46** · trích: ", no stray. Mig 47 latest in seq (after Mig46 ItTicket SLA). **Learned:** cookie-cutter EXT of proven pattern → discriminator = byte-compare filter st"
- Mig **Mig47** · trích: "status = exactly 3 configs + snapshot + Mig47 (2 untracked) + 1 test + 2 MEMORY; no FE, no extra mig, no stray. Mig 47 latest in seq (after Mig46 ItTi"
- Mig **Mig54** · trích: "ad); type files differ pre-existing BUT Mig54 fields diff-identical. Setter handlers fail-closed Forbidden-before-side-effect, PRO Min<=Max validator,"
- Mig **Migration 3** · trích: ". priceMissing disable Xác nhận đúng. **Migration 3-file OK** (Mig 54 additive-nullable, Designer 5 col, snapshot). **Tests 334 PASS** (45 Dom+289 Inf"
- guard-kw **cascade** · trích: "*3 excluded keys STAY HIDDEN — decisive cascade check:** `Off` is NOT one of the 4 inherit-roots in GetMyMenuTreeQuery (:56-59,:70-73,:80-83 = Contrac"
- guard-kw **Cascade** · trích: "eeProfiles` 7 table UNIQUE indexes + FK Cascade. SeedDemoEmployeeProfiles NOT gated DemoSeed (gotcha #51 ✓). gotcha #50 Layout staticMap mirror ✓. **3"
- guard-kw **lost-update** · trích: "dmin)]`. **2 MINOR defer:** concurrency lost-update UsedDays (no RowVersion — human-sequential accept) · stale line-num comment. Verdict PASS. Tag `[s"
- guard-kw **RowVersion** · trích: "** concurrency lost-update UsedDays (no RowVersion — human-sequential accept) · stale line-num comment. Verdict PASS. Tag `[s43, p11b-leavebalance, ma"
- guard-kw **Serializable** · trích: "on-failure — codegen commits seq in own Serializable tx BEFORE `Add(e)+SaveChanges`; ticket-insert fail → burned IT/2026/NNN gap. NOT new defect = ide"
- guard-kw **SERIALIZABLE** · trích: "✓. **3 MINOR defer:** EmployeeCode race SERIALIZABLE low-risk · Update 3 bool not nullable (partial reset) · Delete DateTime.UtcNow direct. Verdict PA"
- file-ref **ApprovalWorkflowV2AdminFeatures.cs** · trích: "/ `ccmBudgetEditors=CostControlAdmin` (ApprovalWorkflowV2AdminFeatures.cs:155-157 + PurchaseEvaluationFeatures.cs:976-978) đảo-chiều set-lookup 3-que"
- file-ref **DbInitializer.cs** · trích: "prod files: MenuKeys.cs (const+All[]), DbInitializer.cs (1 seed tuple), fe-admin {menuKeys.ts, Layout.tsx staticMap, ItTicketsPage.tsx}. **Independen"
- file-ref **HrmConfigFeatures.cs** · trích: ", Smart Friend 8× CLEAN):** 2 NEW file `HrmConfigFeatures.cs` 439 + Controller 137. build clean, 130/130 PASS. Cat1: 0 mock, 8 ConflictException (Holi"
- file-ref **ItTicketsPage.tsx** · trích: "min {menuKeys.ts, Layout.tsx staticMap, ItTicketsPage.tsx}. **Independent re-verify GREEN:** `dotnet build SolutionErp.slnx` 0-warn/0-err · `npm run b"
- file-ref **Layout.tsx** · trích: "(1 seed tuple), fe-admin {menuKeys.ts, Layout.tsx staticMap, ItTicketsPage.tsx}. **Independent re-verify GREEN:** `dotnet build SolutionErp.slnx` 0-w"
- file-ref **PeApprovedPriceFinalizeTests.cs** · trích: "lt-finalize bypass price). Test header `PeApprovedPriceFinalizeTests.cs:27-31` tự-ghi OBSERVATION report-em-main KHÔNG-fix + reflection-invoke isolati"
- file-ref **PeSuggestedPriceFeatures.cs** · trích: "luật chỉ-touch-2-file. **(a) PASS** — `PeSuggestedPriceFeatures.cs` cả 2 setter ForbiddenException TRƯỚC mọi mutate+SaveChanges (load+NotFound→role-g"
- file-ref **Permission.cs** · trích: "→read+create=true, update/delete=false (Permission.cs defaults false anyway). (4) **3 excluded keys STAY HIDDEN — decisive cascade check:** `Off` is N"
- file-ref **PurchaseEvaluationFeatures.cs** · trích: "valWorkflowV2AdminFeatures.cs:155-157 + PurchaseEvaluationFeatures.cs:976-978) đảo-chiều set-lookup 3-query/req no-N+1; khớp 1:1 gate thật canEditPro/"
- file-ref **PurchaseEvaluationWorkflowService.cs** · trích: "NO deadlock — decisive:** submit-guard `PurchaseEvaluationWorkflowService.cs:174-216` enforces (ALL paths incl Admin/system) winnerQuoteTotal>0 (line1"
- file-ref **memory.ps1** · trích: "apshot) → re-run `scripts/measure-agent-memory.ps1` + curate L1→L2 (additive, archive/ + _INDEX exist). (G2 MED) **stale memory claims** — Harness-9 u"
- file-ref **menu.ts** · trích: "ub) — Layout maps to REAL route. `types/menu.ts` correctly NOT mirrored (`key:string` not typed union). admin auto-perm via `SeedAdminPermissionsAsync"
- file-ref **realtime.ts** · trích: "00KB chunk + INEFFECTIVE_DYNAMIC_IMPORT realtime.ts — git-confirmed none introduced, @import lines untouched in diff). **Regression Cat1 ALL preserved"
- file-ref **types.ts** · trích: "256 page 4bcaf2f IDENTICAL both apps** (types.ts correctly NOT identical — admin AttendanceReportDto vs user HrDashboardDto diverge below; added Assig"
### BỔ-SUNG-2 [F1/F2 sau Fidelity-gate @S152 — mở đuôi infra {yml,yaml,json,slnx,csproj,sql,config} + guard IsUnique/optimistic. N/A CỐ-Ý (F5): bundle-hash xoay #69 · tên-giả phép-thử ZZfakehash* · đuôi .md]
- guard-kw **IsUnique** · trích: "ect:19/Supplier:24) Code unique index `.IsUnique()``+.HasFilter('[IsDeleted] = 0')` + Mig 47 (3-file) + 3 new tests. **Independent re-verify ALL GR"
- guard-kw **optimistic** · trích: "ll Save khi mut.isPending HOẶC onMutate optimistic-merge HOẶC await invalidate. **🔵 MINOR:** (a) `parseVnd` strip `.` → '1.5'→15 (input cho `.` nhưng"
- file-ref **budget.json** · trích: "or-codebase **29819B** (>25600). memory-budget.json `measured` STALE (reviewer 24795/inv 24052 = S70 snapshot) → re-run `scripts/measure-agent-memory."
- file-ref **memory-budget.json** · trích: "estigator-codebase **29819B** (>25600). memory-budget.json `measured` STALE (reviewer 24795/inv 24052 = S70 snapshot) → re-run `scripts/measure-agent-"
- file-ref **package.json** · trích: "tracked `runs/`. NO product/test/csproj/package.json/migration → test baseline 306 untouched, deps N/A. **Spec path trap:** spec said `runs/...` but a"
- file-ref **tsconfig.app.json** · trích: "m exactly) · fe-admin + fe-user `tsc -p tsconfig.app.json --noEmit` BOTH exit 0 clean. **#2 CHÍ MẠNG role-string 'Admin' CONFIRMED REAL (full chain tr"

View File

@ -48,3 +48,27 @@ fields-per-line: VIỆC · KẾT-LUẬN(+file:line/commit) · BÀI-HỌC · BẤ
## COVERAGE-TOKENS (per-file đóng-kín — nguồn: archive/2026-07.md của reviewer)
**Gotcha:** #50(bẫy `"gotcha #50"≠"gotcha#50"`) · #53(S101-LaneC/S123/S124/S128/S129) · #69 · #70 · #73 · #81(S117 · indirect-assignment S133). **Mig:** 54 56 59 60+61(wrong-tablefix) 62/63(`778fc98`) 67. **SHA/hash/wf:** `f229b07` `5ee32c0` `e350660` `b7abbc2f` `bcf812fd` `DxUomy4C`/`DkyQ0xCd`/`l_kwCZIF` `wf_31ea3985-92c` `wf_955643c3-f7d` `wf_5f308fd8-744` `6909299a`/`ee00d253`/`a7ff304b`/`eed277f7` `5f511fe5→5f8b8504` `wf_13e3d35a` `88bd8e6` `382713B` `wf_8a0249f6` `ef bb bf` `c0ac7486447e` `181a6d19`/`f29247cf` `bf93abd` `945cf3ad` `58f5afd8` `wf_f9c0b939-181` `e46863c8` `778fc98`. **file:line:** backup-L73/74==archive-L7/8 · STATUS 9412/11090 · HANDOFF 6147/7775 · PE-service 671/873/911/943/1049 · projections :1153/:647/:767 · workflows/README:51 · budget.json:35-37 · hmw.js:31-32 · PurchaseEvaluationDetailFeatures.cs:282-366 · ContractFeatures.cs:46 · CreateContractFromEvaluation:88-90 · FE:201/BE:206 · ExpectedHeaderTokens:37-66 · RealFileHeaderTokens:420-451 · NormalizeHeader:306/:313 · SVC:53/:66/:92/:265/:290 · ultra-on:21/README:208 · WorkflowService:308 · DbInitializer:1323 · mfe-eval.ps1:193 · rag.json:26. **Guard:** fail-closed BEFORE Phase=DaDuyet · server-recompute no-trust-client · EDGE-5 TOP-of-method · byte-mirror bit-exact · all-or-nothing gate:137-152 · upgrade-path MUTATE row · UpsertQuote 0-budget-field · backfill LIKE marker · fingerprint-Ordinal + FormC · node --check · archive-gate 12/12 + A7 246/246 · fault-inject `-RepoRoot` 4/4. **Root-cause:** cut-not-moved `f229b07` · fabrication-by-merge · singlemulti-stops-at-display · echo-siblings-rots · #81 via-BIẾN · sibling-guard under-restrict · terminal-rải-per-branch · mirror-a-toggle drops-reader · exact-token misses-paraphrased · fencepost/hero-ratio · session-cumulative · Goodhart-rời-tập-đo · do-token mislabel-chunk-as-whole · heuristic-cận-trênreal · P1 writer-only reader-thiếu-UTF8 · Get-FileHash SAI-LOẠI · Get-Content-Raw ANSI-mojibake · NFC-literalexternal. **Surprise:** honest-empty>bịa · spec-KHÔNG-migration-FALSE · drift-note-chỗ-duy-nhất-sai · marker-WRITE-ONLY-dead · joint-winner-FE-hiện-BE-block · accent-800-silent · A1-UAT-behavior-change · fencepost-2×-dù-atomic-đúng · do-token-bẫy-lúc-adopt · notice-N-content-independent · acceptance-grep-mù-deliverable-mình. **Verdict-phổ:** FAIL ×2 · PWC/PWF/GWF ~14 · PASS ~17. **Drop `thấp`:** 0 cụm.
## CỤM BỔ SUNG [coverage-diff @S152 D2 — máy-trích nguyên-văn + lead-review; KHÔNG phải re-distill, distill-gen giữ]
> Token load-bearing có trong verbatim `2026-07.md` mà gist thiếu — mỗi dòng = token + TRÍCH NGUYÊN-VĂN dòng chứa nó (Ctrl-F token trong verbatim để đọc trọn). Chuẩn gate: gotcha#/Mig/file-ref/guard phải sống trong gist.
- Mig **Mig 54** · trích: "- **S72* (2026-06-18) Mig 54 PE giá-đề-xuất + CCM-finalize OPT-IN — financial go-live PASS:** fail-closed guard throw BEFORE set Phase=DaDuyet; finali"
- Mig **Mig 56** · trích: "- **S76 (2026-06-19) PE budget 3-cột Mig 56 + badge — PASS:** MAJOR race fixed gotcha #70 (useIsFetching gate). Badge role-set MUST mirror gate bit-fo"
- Mig **Mig 59** · trích: "6-24) PE Section B 3-cột Dự-án|PRO|CCM (Mig 59) — PASS:** authz byte-mirror UpdatePeSuggestedPriceCcm (NotFound→Forbidden, fail-closed); FE `canEditCc"
- Mig **Mig 60** · trích: "7-01) PE EndsBeforeCeo CONFIG→RUNTIME + Mig 60 backfill (bug anh Kiệt FDC, cross-stack+mig, live UAT) — PASS (0 issue):** field `EndedByLevelFinalize`"
- Mig **Mig 61** · trích: "pattern nào khác ngoài Mig 60 — đã fix Mig 61). *(addendum on-behalf H2-proposed @S98)*"
- Mig **Mig 62** · trích: "additive (prod-safe, expansion-cols từ Mig 62 `778fc98` deployed per 4-NCC-in-prod). **Nice-to-have (KHÔNG block)**: (a) test comment :31-37 + svc :3"
- Mig **Mig 63** · trích: "aw:290 +fingerprint-Ordinal-reject:223, Mig 63 reversible+3-file+snapshot:3330, col→field 30/30 OK (Code=col4 viết-tắt, Name=col5 tên-cty). REQUIRED a"
- Mig **Mig 67** · trích: "fresh-DB migrate-trước-seed → backfill Mig 67 no-op trên bảng rỗng). **Bài: RULE 'mọi nhánh set X' phải grep CẢ assignment-qua-BIẾN, không chỉ token"
- Mig **Migration 3** · trích: "d direct field (filter DaDuyet :176). **Migration 3-file OK** (Designer+Snapshot có bit-NOT-NULL-default-false); backfill marker `LIKE N'%Duyệt KẾT TH"
- guard-kw **race** · trích: "et 3-cột Mig 56 + badge — PASS:** MAJOR race fixed gotcha #70 (useIsFetching gate). Badge role-set MUST mirror gate bit-for-bit. SURPRISE: spec 'KHÔNG"
- file-ref **PeSuggestedPriceFeatures.cs** · trích: "slabel self-target(thật 17.1) · AREA-2 `PeSuggestedPriceFeatures.cs:153-199` dropped."
- file-ref **detectors.ps1** · trích: "I CHỖ trước khi quyết TOTAL (governance-detectors.ps1:65-68 'brand-new net → INFORM-sink day-one' — spec quyết ngược không reconcile). ⭐ M7-class: sửa"
- file-ref **probe.ps1** · trích: "i bước cuối** — lòi ` M scripts/nhip-no-probe.ps1` (+55/-2, mtime SAU push) làm SAI câu '**Chưa làm**, chờ owner' trong THƯ ĐÃ STAMP. ⭐ **Số publish p"
- file-ref **purchaseEvaluation.ts** · trích: "nalizeStepName/LevelName: string|null` (purchaseEvaluation.ts:149-150) → `??`-chain TS-safe. 0 BE/test/mig leak. Build fresh ~17:55 ×2 (fe-user hash `"
### BỔ-SUNG-2 [F1/F2 sau Fidelity-gate @S152 — mở đuôi infra {yml,yaml,json,slnx,csproj,sql,config} + guard IsUnique/optimistic. N/A CỐ-Ý (F5): bundle-hash xoay #69 · tên-giả phép-thử ZZfakehash* · đuôi .md]
- file-ref **distill-shard-probe.ps1** · trích: "obe.ps1`**: thấy session-start/end gọi `distill-shard-probe.ps1` (ĐÚNG, sleep-check `session-start:135`) → suy sai '⇒ KHÔNG gọi nhip-no-probe' (gọi CẢ"
- file-ref **mfe-state.json** · trích: "+ READ-ONLY-budget proof (1 write-op `.mfe-state.json`); WF1-reviewer caught BLOCKING vocab-fork (memory-fidelity H6.7≠H16 → MFE+alias-map §H). Detai"