Files
pqhuy1987 24566a500c
All checks were successful
Deploy SOLUTION_ERP / build-deploy (push) Successful in 10m12s
[CLAUDE] Docs: S195 closeout L16 — 14 vai bookend, vá 3 ô canonical + cứu clobber-rot + trả nợ harvest S188
Phiên governance thuần, 0 code product. Bookend @close chạy trọn 1 lượt (YC-018/YC-027).

14 vai: H1 8 FLAG · H2 GATE-FAIL 6 · cặp H24 deep (10+7 FLAG) · trio 3/3
(MIXED 38 trục → 4 action/18 BÁC → 50Đ/5T/15KC trên 70 claim) · ring1 41Đ/5T/19KC
· ring2 15Đ/0T/2KC · ring5 1Đ/2 xoá-án/1KC · ctx-audit TRUOT 6 FLAG · tầng-2/3 chấm.

Vá đã land:
- 3 ô SỐ canonical STATUS: Mig 73→74 · test 697→699 (45+654) · gotcha 92→93;
  bổ 3 ô vào ledger WAL TRƯỚC khi vá; lan Mig 74 sang CLAUDE.md + docs/CLAUDE.md.
- CG-1 attempt #1: cứu front-end-reviewer-style 1.192→5.913 B (clobber-rot, 4 chứng;
  harness-audit xác nhận md5 nối thuần, 0 mất).
- Trả nợ harvest S188 4 vai/42.975 B; đóng orphan S194 bằng synthesis hồi-tố.
- Vá gốc dòng rách so-yeu-cau:58-59 => máy đổi muc 28→29, hội tụ đếm tay.
- Đính chính tiền-đề SAI reinject-ledger:70 cho CẢ HAI vai (matcher DÍNH-vs-TÁCH).
- MIND-4 => mind-check --closed từ exit 1 sang exit 0.

3 RCA lỗi của lead: FAKE-VERDICT-S195 (verdict bịa cho vai chưa chạy) ·
RITUAL-ECHO-S195 (tái phạm lần 3) · SCORE-T1-S195 (đọc hụt số máy).

#53 nổ 10 lần, cứu 10/10 bằng resume-in-session.
4 vai tự phát hiện thước hỏng của chính mình — không có bước tự-falsify thì
lượt này có >=7 cáo buộc oan.

completeness-gate S195: vong 4/5 chuc-nang (khong-nhip: V4) | phep DAT 3 / TRUOT 1

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
2026-08-14 11:51:33 +07:00

27 lines
5.7 KiB
Markdown
Raw Permalink 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.

# database-reviewer-style Agent — Persistent Memory
- **S179 (2026-08-07) SINH SỔ — dir này ra đời do SỬA-5a, KHÔNG phải do mày chạy `[LEAD SEED ON-BEHALF; mày CHƯA chạy lần nào — nguồn = đĩa + spec SỬA-6]`:** mày sinh @**S176** (anh chốt đội STYLE 3 vai, lý do đo được: *"mày cứ làm đi làm lại hoài"*), nhưng **3/3 vai style thiếu dir `agent-memory/<vai>/`** suốt từ đó ⇒ **vô hình với mọi máy đo** (`measure-agent-memory.ps1` enumerate DIRECTORY rồi mới đọc `MEMORY.md`; không dir thì không sinh dòng nào, và **thiếu-vắng trông y hệt sạch**). Vá @S179 = SỬA-5a.
🔴 **Nấc THẬT: `file-land`, spawn-probe CHƯA CÓ** — registry no-hot-reload, cần **restart CLI** (anh OK @S179 item-6). Đừng đọc dir này thành "đã chạy rồi".
- **S179 — SỬA-1 vá thước dispatch; MÀY là con THIỆT NẶNG NHẤT vì hình-dạng công-việc:** trước S179 luật gọi mày neo vào `git diff --name-only origin/main...HEAD -- '*Persistence*'`. Mày là gate **PRE-commit**, mà `git diff` **mọi dạng** đều mù file **chưa commit + untracked**.
🔴 **Vì sao chí mạng với riêng mày:** một migration mới sinh ra là **3 file UNTRACKED** (Migration + Designer + ModelSnapshot) — tức **đúng cái dạng thước cũ mù 100%**. ⇒ thước cũ nghĩa là **3-file-rule KHÔNG BAO GIỜ được soi trước khi commit**, mà migration **đã apply prod thì không rút lại được**: bảng/cột đặt lệch quy-ước sẽ sống mãi và mọi thứ sau phải sống chung với nó. Fault-inject @S179 chứng thẳng: thả `Persistence/Migrations/__probe_mig__.cs` untracked → thước cũ **0 hit**, thước mới **bắt**; dọn probe → mới **im**.
Thước mới: `{ git diff --name-only origin/main..HEAD; git status --porcelain | cut -c4-; } | sort -u | grep -i 'Persistence/'`
🔸 Lọc bằng `grep -i 'Persistence/'` **chứ không phải** pathspec `-- '*Persistence*'`, vì `git status --porcelain` không nhận pathspec của `git diff`.
🔴 **Bài học NGƯỢC ĐƠN THUỐC:** đơn cũ ghi *"đổi ba-chấm → hai-chấm porcelain"*. Đo @S179: hai-chấm và ba-chấm cho **md5 Y HỆT** (`origin/main` là ancestor của HEAD) ⇒ vế đổi dấu chấm **KHÔNG sửa gì**; răng nằm **TRỌN** ở vế ` porcelain`. Chỉ swap dấu chấm thì thước nghiệm-thu vẫn xanh mà đội **vẫn mù nguyên** = Goodhart.
🔴 **Citation-trap:** dòng `CẤM origin/main...HEAD` trong persona **chứa chính mẫu bị cấm** ⇒ thước cũ đọc thành dương-giả. Thước đúng phân biệt **use ⟂ mention**: `grep -rn 'git diff [^|]*origin/main\.\.\.HEAD'` → 0.
- **Địa-phận + ranh (từ persona, ghi lại để khỏi drift):** ĐÓNG = `src/Backend/SolutionErp.Infrastructure/Persistence/**` (EF `Configuration` + `Migrations`) + tên bảng/cột/index/FK. Soi **ĐỒNG-NHẤT QUY-ƯỚC ĐẶT TÊN + hình-dạng migration**, **KHÔNG** soi thiết-kế schema đúng/sai (FK strategy · index perf · concurrency = `database-agent`) · KHÔNG soi logic (`reviewer`). Trục **ĐẮT NHẤT = 3-file rule** (Migration + Designer + ModelSnapshot) — thiếu 1 file là hỏng prod, và đây là lỗi **HÌNH-DẠNG** nên đúng việc của mày.
🔴 **LUẬT LÕI anh giao:** *"các tính năng đã deploy thành production rồi thì sẽ là chuẩn, trừ khi tao có điều chỉnh lại lần nữa"* — ở tầng DB luật này **mạnh hơn mọi tầng khác** vì migration đã apply prod thì không rút lại được.
🔸 Quy-ước để đối chiếu: schema `dbo` single · table **PascalCase tiếng Anh** · PK `Id` (Guid) · FK `{Entity}Id` · audit `CreatedAt/UpdatedAt/CreatedBy/UpdatedBy` · soft-delete `IsDeleted/DeletedAt/DeletedBy`.
Tag `[s179, sinh-so-do-SUA-5a, chua-spawn-probe, migration-la-3-file-untracked, 3-file-rule, nguoc-don-thuoc-2cham-vo-dung, citation-trap-use-mention]`
- **S182 (lead-seed, C2 /pause):** registry-probe BƯỚC 0.6b — spawn THẬT lần đầu sau restart, trả `ALIVE|database-reviewer-style` 0-tool đúng lệnh (tool_uses=0 khác #53 vì không bịa việc). Slot (73) đóng 5/5. → `runs/2026-08-07-S182-bookend-open/spawn-probe-registry.md`
## S194 — YC-032 chấm Mig `AddContractSealedAt` + seed template [LEAD SEED ON-BEHALF]
- `PASS-WITH-FINDINGS`. 3-file rule **ĐỦ 3/3** (Migration + Designer + ModelSnapshot `+6/0`), tên khớp khuôn `Add<Entity><Feature>`, cột khớp họ 11 cột `*ByUserId` đã chạy prod, `Down()` reversible thật (2 `DropColumn`, 0 `Sql()`), và **tự chạy `has-pending-model-changes`** đối chứng thay vì tin số lead khai.
- 🔴 **F-1 bắt được BUG LEAD VỪA TẠO CÙNG PHIÊN**: vòng reconcile template lead thêm để "tự hội tụ cờ `IsActive`" quét **TOÀN BỘ 8 template** — mà **XOÁ mẫu ở admin cài bằng `IsActive=false`** (`FormFeatures.cs:307`), KHÔNG phải `IsDeleted`**hồi sinh mẫu admin vừa xoá ở MỖI lần khởi động**, và hàm chạy NGOÀI rào `demoSeedDisabled` nên ăn cả prod (đúng lớp #75/#76). Lead vá: thu hẹp còn đúng 2 FormCode.
- 🔴 Bài của chính vai (đáng nhớ hơn finding): **idempotent ≠ an toàn**. Chạy lại ra cùng kết quả vẫn có thể là *kiên trì ghi đè writer khác*. Tính chất cần kiểm là **quyền sở hữu cột** — phải đọc **đường ghi ĐỐI DIỆN** (Update/Delete handler), không chỉ kiểm chính mình chạy đúng.
- Thước untracked-aware chứng giá trị lần nữa: **2/3 file migration là UNTRACKED**`git diff` thuần = 0 hit.