Files
solution-erp/.claude/agent-memory/implementer-backend/archive/2026-07.gist.md
pqhuy1987 e5123ff5e1
All checks were successful
Deploy SOLUTION_ERP / build-deploy (push) Successful in 5m54s
[CLAUDE] Docs: S162 closeout - cay 4-folder GD ship prod + bookend-close 5 vong/10 vai
- Cay 4-folder giai doan duoi tung goi thau (bfc7b79, cicd PASS 5/5 Run #432)
- Bookend-close: H1 PASS_WITH_FLAGS · H2 GATE-FAIL 4 · H24 20 FLAG · trio MIXED
  · ring1 26D/2T · ring2 19D/1T · harness-audit 43D/4T · ctx-audit TRUOT 7 FLAG
- Lead va trong phien: F-01/F-02/F-04 + A1 archive + A2 distill + skill KHKK
  + comment mirror self-ref (SHA-pair 6/6 giu, build x2 EXIT 0)
- MIND-5 = refresh @closeout dau tien (nhip thu 5, theo de ctx-audit)
- STATUS 3 row canonical + dong CURRENT · HANDOFF 6 slot danh so (54)-(59)
- gotcha #85 · error-ledger E-015/E-016 + AS-19/AS-20 · Phase 12 roadmap
- 4 errata khai thang: tally view-stale-count thoi 1 · enum thieu 1 class
  · tong L1 lech 54 B · A2 tren trigger duong-gia (R10)

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
2026-07-30 15:13:18 +07:00

17 lines
3.1 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

# Gist 2026-07 — implementer-backend (L2 distilled, ADDITIVE)
> 🔴 **ADDITIVE — KHÔNG đè `2026-07.md`** (verbatim gốc 2.826 B còn nguyên cạnh file này). Sinh @S162 closeout theo `harness-refine` A2 (shard thứ 16 chưa có twin, đưa đếm 16→15 = mốc owner `min_pending_shards`, **không đụng ngưỡng**). 4-field load-bearing giữ nguyên: đối-tượng · việc · bằng-chứng · bài-học.
## S134 (07-17) — PE lũy kế TẠM TÍNH (BE) · `wf_58302bd5-b9f` return sạch
- **Việc:** `+ComputePendingAsync` + `PePendingAccumulation` (`PeBudgetAccumulator.cs` pure-add **+68/0**) · `PePendingPriorPeDto` · `PeBudgetSummaryDto` append-cuối 5 field (2 site: `:946` frozen-defaults · `:985` live-fill) · D4 audit-note trong `ApplyBudgetSnapshotOnFinalizeAsync` với `Action=Update` **KHÔNG Transition** (#49 — tránh UI đọc 2 lần chuyển-phase), insertion-only **+30/0**, signature GIỮ ⇒ 5 call-site 0-diff.
- **Bằng chứng:** build slnx 0/0 · 0 mig · `ComputeAsync` body 0-diff.
- **Bài học (3):** ① **insertion-only diff** (`grep '^-'` = 0 real-removal) = bằng-chứng MẠNH NHẤT cho "thân method/call-site bất động" — mạnh hơn đọc-mắt, chống báo-số-sai kiểu #53 · ② derived-audit thêm vào helper **không cần đổi signature** nếu tính nội bộ từ field entity sẵn có ⇒ giữ call-site 0-diff · ③ accumulator namespace ≠ DTO namespace (`…Dtos`) ⇒ cần `using` tường minh dù **cùng project**.
## S133 (07-17) — PE budget-freeze (BE, Mig 67) · `wf_4bef08b8-730` **#53 return-fail → disk-truth + em-main-solo**
- **Việc:** lane sửa xong 6 file + `PeBudgetAccumulator.cs` mới (Domain 11 props `ApprovedBudget*` · Config precision/maxlength · DTO append `BudgetFrozen=false` **cuối** positional-record · display-gate frozen/live 2-nhánh trong `GetPurchaseEvaluationQuery` · helper `ApplyBudgetSnapshotOnFinalizeAsync` gọi **4 site** `:862/:901/:934/:1109` · 2 terminal-guard block-CẢ-Admin) **rồi CHẾT trước bước sinh migration** ⇒ em-main solo: Mig 67 sạch **11 AddColumn** (0 RenameColumn — #63) + backfill `Sql()` OUTER APPLY ×3 khớp accumulator **từng điều kiện** + apply 2 DB + filter test **44/44** (T0 RED→GREEN, không sửa test).
- **Bắt được nhờ apply thật:** Dev lòi **drift Mig 66 committed-chưa-apply-local** ⇒ catch-up luôn.
- **Bài học (3):** ① `TransitionAsync` **KHÔNG** SaveChanges nội bộ (`:537`) ⇒ snapshot flush qua SaveChanges của **caller** (mirror pattern ApprovedPrice) · ② khuôn backfill THẬT ở Mig 61/65 = **plain `Sql()`**, KHÔNG C# provider-guard (SQLite `EnsureCreated` không replay = guard kiến-trúc) · ③ Suppliers/Quotes là `BaseEntity` **không soft-delete** ⇒ SQL backfill **không** thêm `IsDeleted` trên `s`/`q`; `WorkItemId` null ⇒ 4 lũy kế NULL mirror helper nhưng `SnapshotAt` **vẫn set**.
- **Class #53:** WRITE-lane garble ≠ mất code — recover bằng disk-truth (git + build + test), entry ghi on-behalf.
Tag `[s162-distill, implementer-backend, 2026-07, insertion-only-proof, mig67-budget-freeze, 53-writelane-disk-recover]`