[CLAUDE] Docs: S191 closeout — vá 10 FLAG H24 + gotcha #92 đổi root-cause + RCA P0-BUNDLE + 3 action refine (A7 429→432) [skip ci]

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
This commit is contained in:
pqhuy1987
2026-08-13 01:58:29 +07:00
parent 305b573f5a
commit d6026b1436
38 changed files with 664 additions and 81 deletions

View File

@ -1,7 +1,7 @@
{
"strikes_total": 25,
"rca_entries": 16,
"at": "2026-08-11",
"at": "2026-08-13",
"warn_baseline": 25,
"history": [
{
@ -158,6 +158,11 @@
"strikes_total": 25,
"rca_entries": 16,
"at": "2026-08-11 00:09"
},
{
"strikes_total": 25,
"rca_entries": 16,
"at": "2026-08-13 01:14"
}
]
}

View File

@ -1,18 +1,12 @@
# CI/CD Monitor Agent — Persistent Memory
- **S190 (08-12) `091073f9` YC-029+YC-030 GĐ3 Duyệt HĐ (BE+2FE+**Mig 73**) — PASS TRỌN 6/6.** Deploy NGAY SAU P0 disk-0 S189: disk **25.9GB** free (lead dọn 4.7→26.6 giữ) ⇒ **disk-death KHÔNG tái**. 🔑 gate **697 EXACT** = 45 Domain + 652 Infra (Δ+17 vs #486=680, TRỌN ở Infra: YC-029 +13 cumulative + YC-030 finalize +4 = `ContractApproveFinalizeTests`). 🔑 **Mig 73 `AddContractEndedByLevelFinalize`** (mirror PE Mig 60, AddColumn bit NOT NULL reversible) áp prod: history top khớp + col `EndedByLevelFinalize` bit is_nullable=0 + `sys.tables` **97 unchanged**. 🔑 **Ship-proof 3 CHÂN:** rotate ×2 (eoffice `DqJszev6→BIN1bEGo`, admin `RZy2dzPC→D2FHMRPX`) + **size prod == dòng CI log TỚI BYTE** (1.819.492==1,819.49kB · 1.803.881==1,803.88kB, `application/javascript`) + **control âm** hash-`text/html` 876B (overwrite THẬT). Smoke 200/401 chuẩn (login token len=468 · contracts/PE/menus). **#91 guard XANH** (updated_at 22:11:20 ≥ commit 22:10:10, branch-head khớp, ActionRun sinh) = ĐỐI LẬP hoàn toàn S189. 🔑 **PRE-snapshot chụp NGAY lúc build đang chạy** (deploy ở CUỐI ⇒ bundle+mig còn CŨ) = differential sạch. Evidence `runs/2026-08-12-S190-soltuon-dieu-chinh-hd/sub-cicd-deploy-yc030.md`. Tag `[s190, gate-697, mig73-ended-finalize, shipproof-3chan-bytematch, control-am-overwrite, disk-death-khong-tai, gotcha-91-xanh]`
- **S191 (08-13) `305b573f` vá GỐC #92 (CI-config-only: `deploy.yml`+2 lockfile) — PASS 6/6 + 1 caveat tự khai.** Run **#488** success 10m24s. 🔑 **PHÉP ĐO QUYẾT ĐỊNH: hash CI == local 4/4** (`CR538vZx`1.700.709·`DNE0buTg`94.665·`C10ta-wB`1.780.807·`CTIZKsjE`88.858) **DÙ runner node v24.15.0/npm11 ⟂ local v22.13.0/npm10** ⇒ nghi-vấn 'chênh node/npm = nguồn bất định thứ 2' **BỊ BÁC BẰNG ĐO**. GUARD-92 **2/2 app** `react don ban = 19.2.5`, 0 FAIL. Gate **697** Δ0. Mig **73** no-advance. 🔑 **BẪY MỚI — hash-delta VÔ DỤNG khi PRE đã trùng hash kỳ vọng** (prod đang chạy bản-cứu chép tay) ⇒ ship-proof chuyển sang **Last-Modified nhảy vào cửa sổ run** (18:10:28→18:23:17 · 18:10:37→18:21:58; run 18:13:51-18:24:15Z) + control âm hash-`text/html` 876B. Bổ sung #69: **mode-C FROZEN-nhưng-ĐÚNG**. 🔴 **Runtime-gap tự khai:** SHA256 prod==local byte-identical, bản local ĐÃ được người mở browser console-0-lỗi ⇒ tính-chạy-được **chuyển giao**; khác 2 lần crash ở CHẤT (byte-match CI⟂prod mà **cả hai đầu chưa ai chạy**). Nhưng tao KHÔNG tự mở browser được ⇒ **file-integrity KHÔNG thay runtime-check**; marker React trong bundle **CHƯA hiệu chuẩn (mất control âm)** ⇒ không dùng làm bằng chứng. Evidence `runs/2026-08-12-S190-soltuon-dieu-chinh-hd/sub-cicd-va-goc-92.md`. Tag `[s191, gotcha-92-va-goc, npm-ci-deterministic, hash-CI==local, guard92-2/2, LM-thay-hash-delta, runtime-gap-tu-khai]`
- **S189 (08-11) `92d8215a` YC-028 FE tách 404⟂lỗi-hệ-thống (8 FE, **0 BE**, 0-mig) — V1 FAIL 8/11 → V2 PARTIAL 8/9.** 🔴 **V1 = KHÔNG CÓ RUN ĐỂ MÀ ĐỎ**: push land, `ls-remote` đúng sha, mà **0 ActionRun**/484 task. 🔑 **DETECTOR #91 = 2 nguồn LỆCH trong CÙNG 1 API:** `/repos/{r}``updated_at` đọc **DB** = giờ push TRƯỚC ⟂ `/branches/main``commit.id` đọc **git trên ĐĨA** = sha mới ⇒ ref tiến trên đĩa mà tầng app chưa hề thấy push. **Stage 2 từ nay ĐO `updated_at ≥ giờ push` TRƯỚC khi kết luận 'đang chờ CI'.** Terminal push SẠCH ⇒ chết ở **notifier**, không ở receive-pack. Sửa = `workflow_dispatch` (204). 🔴 Nguy vì **mọi tín hiệu quen đều XANH** ⇒ chỉ **vắng-mặt thứ đáng lẽ có** mới tố cáo. 🔑 **CẶP ĐỐI-CHỨNG dập nghi-oan filter** (commit anh em có/không file non-ignored → có/không run). 🔑 **V2 SHIP PASS TRỌN:** gate **680 EXACT** Δ0 · JS rotate ×2 + **size prod khớp log CI TỚI BYTE** · marker **0→5/app = 10/10** · hash cũ→`text/html`. 🔑 **CSS không rotate mà vẫn ĐÚNG** (0 class Tailwind mới) — **JS đổi ⟂ CSS giữ = đúng hình dạng diff**. 🔴 **V2 FAIL: A/059 6/16 mẫu >3s (max 8,75s).** **Tự bác cold-start của chính mình vì burst-2 XẤU HƠN burst-1***warm-up curve đẹp KHÔNG đủ, phải đo burst THỨ HAI*. Loại trừ runbook (disk 28,2GB · orphan 0 · `AUTO_CLOSE=0`) → **RAM 4GB ép**: SQL `Total 213MB/Target 1,09GB`, PLE 522s ⇒ **LƯỠNG CỰC 0,6-1,0s vs 5-8,7s, trống ở giữa = hình dạng THIẾU RAM, không phải code chậm**. 🔑 **Logic rẻ hơn đo: commit 0 file BE ⇒ latency không thể do commit này.** 🔴 **Tự nhận:** `Restart-Service gitea` (khuyến nghị của chính tao) làm gitea tái chỉ mục 317MB+512s CPU/25ph, giành RAM/CPU với SQL ĐÚNG lúc đo — phải nói ra, không giấu vào chữ 'transient'. Treo: ghim `max server memory` · **nâng RAM = mặt thứ 2 của YC-028 (trước vỡ ĐĨA, nay ép RAM)** · `compact /u` `Vietreport_Master.mdf` (#88). Evidence `runs/2026-08-10-S189-bookstart-open/sub-cicd-monitor-yc028.md`. Tag `[s189, gotcha-91, detector-updatedat-vs-branchhead, burst2-bac-coldstart, luong-cuc-thieu-RAM, tu-nhan]`
- _(**S190 (08-12) `091073f9` YC-029+YC-030 GĐ3 Duyệt HĐ — PASS TRỌN 6/6**: gate **697 EXACT** (45+652, Δ+17 trọn ở Infra), **Mig 73** `AddContractEndedByLevelFinalize` áp prod (tables 97 unchanged), ship-proof **3 CHÂN** (rotate ×2 + size==log CI tới byte + control âm `text/html` 876B), #91 XANH. 🔑 **PRE-snapshot chụp NGAY lúc build đang chạy** (deploy ở CUỐI ⇒ bundle+mig còn CŨ) = differential sạch. verbatim → `archive/2026-08.md`)_
- _(**S159 (07-29) — 4 đợt PASS/PARTIAL** [harvest hồi-tố @S172]: đợt-2 `1a47a61` PARTIAL bắt regression revoker 447/494 row → đợt-3 đóng bằng **3 chân kiềng** → đợt-4 tái xác nhận ⇒ **durability phải đo ≥2 restart**. 🔑 **control ÂM đọc ở tầng BUNDLE, không tầng source**. verbatim → `archive/2026-08.md`)_
- _(**S189 (08-11) `92d8215a` YC-028 FE (8 FE, 0 BE, 0-mig) — V1 FAIL 8/11 → V2 PARTIAL 8/9**. 🔴 **V1 = KHÔNG CÓ RUN ĐỂ MÀ ĐỎ** (push land, sha đúng, 0 ActionRun) ⇒ đẻ ra **detector #91**: `/repos``updated_at` đọc **DB**`/branches/main``commit.id` đọc **git ĐĨA**; nguy vì **mọi tín hiệu quen đều XANH**, chỉ **vắng-mặt thứ đáng lẽ có** mới tố cáo. 🔑 CẶP ĐỐI-CHỨNG dập nghi-oan filter. 🔑 **CSS không rotate mà vẫn ĐÚNG** (0 class Tailwind mới). 🔴 A/059 chậm: **burst-2 XẤU HƠN burst-1 ⇒ tự bác cold-start của chính mình**; lưỡng-cực 0,6-1s vs 5-8,7s = hình dạng **THIẾU RAM** (VPS 4GB). 🔑 **Logic rẻ hơn đo: commit 0 file BE ⇒ latency không thể do commit này.** 🔴 **Tự nhận:** `Restart-Service gitea` (khuyến nghị của chính tao) giành RAM/CPU với SQL đúng lúc đo. verbatim → `archive/2026-08.md`)_
- _(**S168 (08-01) `0bfadc2` — PASS 6/6**: #444, gate 644 Δ+5 đúng 5 Fact mới. 🔑 **WIRE-PROOF = 400 GỌI TÊN FIELD** (mạnh hơn 401; chứng pool phục vụ BINARY MỚI mạnh hơn `w3wp` StartTime). 🔑 **CHỤP PRE NGAY khi vào việc** → differential thật 404→401, 0→1. 🔑 marker **BẤT-ĐỐI-XỨNG** · CSS = nhân chứng ARTIFACT KHÁC. verbatim → `archive/2026-08.md`)_
- _(**`aaed699` S167 K7 — PARTIAL 4/6+1**: #442 (run #441 CANCELLED). 🔴 **PUSH-ĐÈ NUỐT DEPLOY = gotcha #86**. 🔑 control-dương = chuỗi bản TIỀN-commit của CHÍNH file đang sửa. 🔑 seeder báo **2/3 upgraded** = chứng idempotent tầng-row miễn phí. ⚠️ `appcmd list wp` map PID→pool. verbatim → `archive/2026-08.md`)_
- _(**`1c6d77a` S167 K6 menu 12-key — PASS 5/5**: #440, gate 622 Δ0. 🔴 **0-hit marker SAI 2 LẦN do CƠ-CHẾ REGEX** (minify→BACKTICK · pattern-chứa-backtick qua biến làm `grep -cE` gãy IM LẶNG) ⇒ **LUẬT `grep -F`/python + trích byte thật TRƯỚC khi kết luận vắng-mặt**. 🔑 **COUNT-DELTA** khi literal đã tồn tại. 🔑 menu ẩn 12/12 mà route 68→68 ⇒ **ẩn client KHÔNG thu quyền** (#82). verbatim → `archive/2026-08.md`)_
- _(**Arc S155→S166 (#416#439)** gate 551→622. 🔑 #438 **mốc PRE trong đề bài LÃO HOÁ sau MỖI deploy — bắt bằng ĐO**. 🔑 #436 marker = tên biến local thì 0 bit. 🔴 **#435 ACCEPTANCE CHÂN-LÝ-RỖNG** (`0==0` xanh mà 0 bit). 🔑 #434 TAM-GIÁC 3 nguồn. 🔴 #432 CẤM `HEAD~1` → neo `X^..X`. 🔴 #423 revoker lật 447/494 vì **đo TRƯỚC recycle**. verbatim → `archive/2026-08.md`)_
- _(**Arc S155→S168 + #447 (gộp @S191)** gate 551→644. 🔑 **S168 WIRE-PROOF = 400 GỌI TÊN FIELD** (mạnh hơn 401) · **CHỤP PRE NGAY khi vào việc** · marker BẤT-ĐỐI-XỨNG. 🔴 **K7 `aaed699` PUSH-ĐÈ NUỐT DEPLOY = #86**. 🔴 **K6 0-hit marker SAI 2 LẦN do CƠ-CHẾ REGEX** (minify→BACKTICK · pattern-chứa-backtick qua biến làm `grep -cE` gãy IM LẶNG) ⇒ **LUẬT `grep -F`/python + trích byte thật TRƯỚC khi kết luận vắng-mặt**; menu ẩn 12/12 mà route 68→68 ⇒ **ẩn client KHÔNG thu quyền** (#82). 🔑 #447 **415 = họ hàng 411** ⇒ mọi mã pre-auth phải re-probe đúng dạng; **set-diff Mig 2 CHIỀU**. 🔑 #438 **mốc PRE trong đề bài LÃO HOÁ sau MỖI deploy**. 🔴 #435 **ACCEPTANCE CHÂN-LÝ-RỖNG** (`0==0` xanh mà 0 bit) · #432 CẤM `HEAD~1`→neo `X^..X` · #423 revoker lật 447/494 vì **đo TRƯỚC recycle**. 🔑 S159 **durability đo ≥2 restart** + **control ÂM ở tầng BUNDLE**. verbatim → `archive/2026-08.md` + `_INDEX.md`)_
> **Persistent diary cross-session.** Auto-injected first ~200 lines at spawn (L1 HOT).
> Update BEFORE every stop. Tiered Memory v1: L1 HOT soft-cap ~30KB · L2 `archive/` on-demand · L3 RAG `search_memory` just-in-time. Keep entry ≤ 1.5K chars (gotcha #53).
@ -37,6 +31,7 @@ cicd-lane trả nhầm slice transcript thay verdict — **tao TÁI PHẠM dai n
- **#39 act_runner github.com TCP timeout** run hang "Set up job" 21s. Log `dial tcp github.com:443 i/o timeout`. Fix: manual checkout bypass hardcoded `.gitea/workflows/deploy.yml`. KHÔNG revert.
- **#40 npm cache `tsc not found`** `build_fe_admin` fail post `cache: npm`. DISABLED rolled back `a21790d`. KHÔNG re-enable.
- **#41 paths-ignore docs-only skip** check `git diff --name-only <base>..<head>` vs **7-glob** `['docs/**','**/*.md','.claude/skills/**','.claude/agent-memory/**','.claude/workflows/runs/**','.gitignore','scripts/**.md']`. Gitea đọc *range* 1 file non-ignored build. **AS-6: memory-push/run-trace HẾT trigger CI.** @S189: filter ĐÚNG vẫn 0 run xem **#91** trước khi đổ tại filter.
- **🔴 #92 runner build-env nhiễm bundle crash runtime `useState null` (trắng màn prod ×2: #486 S189, #600 S191).** GỐC = `deploy.yml` **xoá `package-lock.json`** rồi `npm install` mỗi run resolve lại cây theo semver **cùng commit ra bundle khác nhau**. @`305b573f`: giữ lockfile + `npm ci` + GUARD-92 (`npm ls react`, regex lookbehind `(?<![-\w./@])react@` thiếu lookbehind thì `lucide-react` dương-giả CI đỏ vĩnh viễn). **Verify #488: hash CI==local 4/4 ⇒ deterministic ĐẠT.** 🔴 Luật #92(1): **mọi phép đo cũ đều đo FILE, không đo CHƯƠNG TRÌNH CHẠY** exit 0 + byte-match CIprod + smoke 200 vẫn để lọt 2 lần **cả hai đầu của phép so đều chưa ai chạy**. Byte-match chỉ giá trị khi **1 đầu đã runtime-verified**.
- **#25 IIS WebSocket** `notification-hub/negotiate` 401/404 prod. Fix: WebSocket module enable `web.config` site api (skill `iis-deploy-runbook`).
- **#48 SQLite tie-break** `OrderByDescending(CreatedAt).First()` pick wrong khi 2+ `.Add()` cùng frozen-clock. Fix: discriminator filter BEFORE OrderBy.
- **Bundle hash unchanged ship FAIL (đọc #69 bên dưới trước).** Đọc hash qua INDEX.HTML (`curl -s https://admin… | grep -oE '/assets/index-[A-Za-z0-9_-]+\.(js|css)'`), KHÔNG GET thẳng asset. verify PHẢI sau `status=success` (Run #242 false-positive: đo lúc 'running' hash stale).
@ -70,9 +65,9 @@ cicd-lane trả nhầm slice transcript thay verdict — **tao TÁI PHẠM dai n
- **Gitea:** `git.baocaogiaoduc.vn/vietreport-admin/solution-erp` · workflow `.gitea/workflows/deploy.yml` · paths-ignore 7-entry (D10 S111 #495): `['docs/**','**/*.md','.claude/skills/**','.claude/agent-memory/**','.claude/workflows/runs/**','.gitignore','scripts/**.md']`. Anon API works (public repo) when GITEA_TOKEN absent.
- **Prod:** `.solutions.com.vn` (api/admin/eoffice) · `ssh vietreport-vps` · IIS `C:\inetpub\solution-erp\{api,fe-admin,fe-user}`. DB `.\SQLEXPRESS`/`SolutionErp`, key **`ConnectionStrings.Default`**. **VPS chỉ 4GB RAM/3 core, chung với VIETREPORT** (@S189 SQL buffer 213MB/1,09GB API lưỡng-cực). **SSH→PS: viết `.ps1` + `scp` + `powershell -File`**, đừng inline. 🔴 **CẤM `ssh … | head`** `Select-Object -First N` phía REMOTE.
- **SSHPS quoting (S42):** bashsshpowershell nuốt `$var`/`\"` viết `.sql`/`.ps1` rồi `scp` + `sqlcmd -i` / `powershell -File` (đừng nhét inline). sqlcmd `-W -h -1` pw-inline. sys-catalog concat `COLLATE DATABASE_DEFAULT`.
- **Tests baseline: 697 PASS** (45 Domain + 652 Infra · 0 fail/skip) xác nhận lại run **#600/#487** `091073f9` 08-12 (prev #486=680; Δ+17 TRỌN Infra = YC-029 +13 + YC-030 +4). 🔑 Số lấy web-UI log `…/actions/runs/{run_number}/jobs/0/logs` (~18KB, KHÔNG `/api/v1/`) mỗi project 1 dòng `Passed! - Failed: 0, Passed: N, Skipped: 0`; đối chiếu **TÁCH-PHẦN** (45/635) chứ đừng chỉ khớp tổng, **so delta với số Fact mới khai trong commit-msg**.
- **Mig latest repo: Mig 73 `AddContractEndedByLevelFinalize`** (`20260812141501`, S190 AddColumn `EndedByLevelFinalize` bit NOT NULL trên Contracts, mirror PE Mig 60) verify prod @S190 = **73** (history top khớp, col present, tables 97 unchanged). (🧊 prev Mig 72 `AddMaHangMuc...` `20260806070242`; từng kẹt 71 tới S189). 🔴 Đếm phải **NEO ĐUÔI** `grep -vE 'Designer\.cs$|ModelSnapshot\.cs$'`. Mạnh hơn khớp-tổng = **set-diff repo↔prod 2 chiều** (`comm -23`/`-13` cùng rỗng). Prod: `sqlcmd -S .\SQLEXPRESS -d SolutionErp -E` (⚠ `$env:PROD_DB_PASSWORD` KHÔNG trên VPS). `sys.tables`=**97**. **NO-Mig proof = history NOT-advance + empty `git diff <base>..<head> -- '*Migrations*'`.**
- **Bundle hash live:** baseline **#600 (08-12)** admin `D2FHMRPX`/`DVHtHLex` · eoffice `BIN1bEGo`/`b_d2fusd` (JS 1.819.492/1.803.881 B khớp CI log tới byte). 🔑 Ship-proof rẻ nhất = size prod khớp dòng `dist/assets/…` TRONG LOG CI (tới byte). marker minify ra **BACKTICK** `grep -F`/python. **re-snapshot LIVE sau status=success** (#69). id run_number (key theo head_sha).
- **Tests baseline: 697 PASS** (45 Domain + 652 Infra · 0 fail/skip) tái xác nhận run **#488** `305b573f` 08-13 (Δ0, đúng hình dạng: 0 file test trong diff). 🔑 Số lấy web-UI log `…/actions/runs/{run_number}/jobs/0/logs` (KHÔNG `/api/v1/`) mỗi project 1 dòng `Passed! - Failed: 0, Passed: N`; đối chiếu **TÁCH-PHẦN** (45/652) chứ đừng chỉ khớp tổng, **so delta với số Fact mới khai trong commit-msg**.
- **Mig latest repo: Mig 73 `AddContractEndedByLevelFinalize`** (`20260812141501`) verify prod @S191 #488 = **73** (history top khớp · MIGCOUNT 73==73 · `sys.tables` **97**). 🔴 Đếm phải **NEO ĐUÔI** `grep -vE 'Designer\.cs$|ModelSnapshot\.cs$'`. Mạnh hơn khớp-tổng = **set-diff repo↔prod 2 chiều** (`comm -23`/`-13` cùng rỗng). Prod: `sqlcmd -S .\SQLEXPRESS -d SolutionErp -E` (⚠ `$env:PROD_DB_PASSWORD` KHÔNG trên VPS). **NO-Mig proof = history NOT-advance + empty `git diff <base>..<head> -- '*Migrations*'`.**
- **Bundle hash live:** baseline **#488 (08-13, `305b573f`)** admin `C10ta-wB`/`CTIZKsjE` (JS 1.780.807 · CSS 88.858) · eoffice `CR538vZx`/`DNE0buTg` (JS 1.700.709 · CSS 94.665) **trùng ĐÚNG dist local đã verify runtime**, khớp CI log tới byte. 🧊 prev #600 admin `D2FHMRPX` · eoffice `BIN1bEGo` (1.819.492/1.803.881 bản này crash `useState null`, đã thay). 🔑 Ship-proof rẻ nhất = size prod khớp dòng `dist/assets/…` TRONG LOG CI (tới byte). marker minify ra **BACKTICK** `grep -F`/python. **re-snapshot LIVE sau status=success** (#69). id run_number (key theo head_sha).
- **Prod DB anchor (POST #438, đứng im tới #444):** `MenuItems`=**200** · `Permissions`=**2221** · `Roles`=**13** · họ `Khkk%` = 56 menu / 728 perm (=56×13) · control revoker `Hrm*/Off*` CanRead=1 = **29**/377. PK `MenuItems` = **`[Key]`** (KHÔNG `MenuKey`); `Permissions(Id,RoleId,**MenuKey**,CanRead,CanCreate,CanUpdate,CanDelete)`.
- **Bearer:** admin `admin@solutions.com.vn/Admin@123456` (full) · UAT `nv.test@solutions.com.vn/TestUser@123456` (Drafter CCM, gotcha #44 check).
- **API Serilog:** sink THẬT `C:\inetpub\solution-erppi\logs\solution-erp-YYYYMMDD.log` (skill-runbook `…\Logs\log-*.txt` STALE). Level=Information (seed/revoke lines ghi). deploy xoá `logs/` chỉ còn từ deploy cuối.
@ -91,9 +86,7 @@ BE ~90s · FE ×2 ~60s/app · deploy ~30s · **total ~3min code / 0s docs-only**
## 📅 Recent runs (compressed — verbatim → archive via `_INDEX.md`)
- _(**#447 `998ea55` KHKK 3-panel — GO/PASS**: gate 644 Δ0, **set-diff Mig 2 CHIỀU = 0/0**. 🔑 **cặp đối-chứng MIỄN PHÍ** #446/#447 khác đúng 1 commit ⇒ cô-lập nhân-quả. 🔑 **415 = họ hàng 411**: json vào endpoint multipart bị loại TRƯỚC authz ⇒ **mọi mã pre-auth phải re-probe đúng dạng**. 🔴 **'KHÔNG ĐO ĐƯỢC' phải TỰ NGHI** — khai credential chết = SAI, chỉ **tra nhầm sổ** (`docs/HANDOFF.md`). verbatim → `archive/2026-08.md`)_
- _(**S98-S132 #383-#397 + PASS-pattern library S69b→S104** all GO (gate 440→509): AS-6 #41 soi TỪNG file vs 7-glob · `conclusion:None` dù success ⇒ tin `status` · **411-refine** · **LM mới hơn cửa-sổ đã verify = detector 'có run bỏ sót'** · recipe SCHEMA-ADD / DATA-BACKFILL / DATA-SEED · #472 PROD Identity table NON-prefix `Roles`. verbatim → `archive/2026-07.md`+`2026-06.md`)_
- _(**S98-S132 #383-#397 + S188 #481/#482** all GO (gate 440→509): AS-6 #41 soi TỪNG file vs 7-glob · `conclusion:None` dù success ⇒ **tin `status`** · **411-refine** · **LM mới hơn cửa-sổ đã verify = detector 'có run bỏ sót'** · recipe SCHEMA-ADD/DATA-BACKFILL/DATA-SEED · #472 PROD Identity table NON-prefix `Roles`. 🔑 S188 **tự đính chính trong lượt**: 'HD-*=0' là **ARTIFACT PARSE của chính mình** — suýt FAIL oan. verbatim → `archive/2026-07.md`+`2026-06.md`)_
- **Older (S83 #325 ← S29 #232) → git `d2f52ba` + `archive/2026-06.md`** (incl #291 06-16 FAIL [gotcha #65]); pre-S38 → `archive/2026-05-*`.
@ -101,12 +94,8 @@ BE ~90s · FE ×2 ~60s/app · deploy ~30s · **total ~3min code / 0s docs-only**
## 🔄 Curate trigger
- >~30KB → archive recent runs → L2 `archive/<period>.md` (byte-exact append) + `_INDEX.md` substring pointer. Dup failure patterns → merge. Stale >3mo → remove.
- **Last curate: 2026-08-11 S189 (self, 27.4KB→~16.6KB — S159/S168/ARC-S155-S166/#447/S182 verbatim→`archive/2026-08.md` + `_INDEX` pointer; baseline refresh gate **680**, Mig **72** (was stale 71), bundle **#486**).** ⚠️ giữ luật: script sửa MEMORY phải build chuỗi XONG → temp → `os.replace` → verify byte>0.
- **Prev:** S166 08-01 (27.3→16.5) · S162 07-30 (26.9→17) · S118 · S111 · S107 · S104 · S98 (`2026-07.md` NEW) · S80 38.8→16 · S70 65.2→23.2 · S66 · S40.
- **Last curate: 2026-08-13 S191 (self, 22.3KB→17.4KB — S190/S189 verbatim→`archive/2026-08.md` + `_INDEX` pointer; gộp 6 pointer cũ S155-S168+#447 thành 1 dòng; trim S191/Mig/Tests; baseline refresh bundle **#488**, gate 697, Mig 73).** ⚠️ giữ luật: script sửa MEMORY phải build chuỗi XONG → temp → `os.replace` → verify byte>0.
- **Prev:** S189 08-11 (27.4→16.6) · S166 08-01 (27.3→16.5) · S162 07-30 · S118 · S111 · S107 · S104 · S98 · S80 · S70 · S66 · S40.
- _(**S182 YC-013 W0.4 — Q2 sai tiền-đề nhưng W1 GO**: **ký-ức đóng-băng-thời-điểm ≠ ký-ức hỏng** — chỗ gãy là SPEC phổ-quát-hoá mốc cũ. 🔑 pin-lệch 0 row **VỚI control** (bỏ vế phủ-định ra 12 row). 🔑 **hiệu chuẩn thước bằng 2 ANCHOR đã biết** mạnh hơn `count>0`. verbatim → `archive/2026-08.md`)_
## S188 (2026-08-10) — [LEAD SEED ON-BEHALF]
- _(**S188 (08-10)** #481 + cụm PASS 5/5 #482: bundle rotate ×2, seeder prod 7 HD-*, DLL marker `ContractWorkflowGuards` 0→4, smoke 9/9. 🔑 **tự đính chính trong lượt**: 'HD-*=0' là **ARTIFACT PARSE của chính mình** — suýt FAIL oan.)_

View File

@ -41,3 +41,10 @@
### S182 (verbatim)
- **S182 YC-013 W0.4 PRECHECK (lead-seed từ memoryDelta workflow-return VERIFY khớp artifact, C2 /pause):** `LỆCH — Q2 sai tiền-đề nhưng W1 GO 0-blocker` — 12 phiếu prod (3 DaDuyet + 8 Nháp + 1 TraLai; memory-pack "001-003 Phase=3" KHÔNG SAI — thế giới đẻ thêm 9; ký-ức đóng-băng-thời-điểm khác ký-ức hỏng, SPEC phổ-quát-hoá mốc cũ mới là chỗ gãy) · pin-lệch 0 row VỚI control: chạy CHÍNH câu audit bỏ vế phủ-định ra 12 row element-wise + bịt điểm-mù LIKE bằng đẳng-thức-đếm IS-NOT-NULL=12=JOIN-in-family · hiệu chuẩn thước bằng 2 ANCHOR đã biết (MenuItems=200, Permissions=2221) mạnh hơn count>0 · ĐO bác acceptance wave-sau: 6 ô cờ đều 0/88 trên prod ⇒ ép-false vs giữ-thật render Y HỆT, A2 phải seed local 1 level cờ=true mới có răng · #8 Finalize=8/88 = CỜ CHỊU LỰC cấm đụng. → `runs/2026-08-08-S182-khkk-awf-mirror-ncc/sub-cicd-monitor-0.md`
### S190 + S189 (verbatim — archived @S191 curate)
- **S190 (08-12) `091073f9` YC-029+YC-030 GĐ3 Duyệt HĐ (BE+2FE+**Mig 73**) — PASS TRỌN 6/6.** Deploy NGAY SAU P0 disk-0 S189: disk **25.9GB** free (lead dọn 4.7→26.6 giữ) ⇒ **disk-death KHÔNG tái**. 🔑 gate **697 EXACT** = 45 Domain + 652 Infra (Δ+17 vs #486=680, TRỌN ở Infra: YC-029 +13 cumulative + YC-030 finalize +4 = `ContractApproveFinalizeTests`). 🔑 **Mig 73 `AddContractEndedByLevelFinalize`** (mirror PE Mig 60, AddColumn bit NOT NULL reversible) áp prod: history top khớp + col `EndedByLevelFinalize` bit is_nullable=0 + `sys.tables` **97 unchanged**. 🔑 **Ship-proof 3 CHÂN:** rotate ×2 (eoffice `DqJszev6→BIN1bEGo`, admin `RZy2dzPC→D2FHMRPX`) + **size prod == dòng CI log TỚI BYTE** (1.819.492==1,819.49kB · 1.803.881==1,803.88kB, `application/javascript`) + **control âm** hash-CŨ→`text/html` 876B (overwrite THẬT). Smoke 200/401 chuẩn (login token len=468 · contracts/PE/menus). **#91 guard XANH** (updated_at 22:11:20 ≥ commit 22:10:10, branch-head khớp, ActionRun sinh) = ĐỐI LẬP hoàn toàn S189. 🔑 **PRE-snapshot chụp NGAY lúc build đang chạy** (deploy ở CUỐI ⇒ bundle+mig còn CŨ) = differential sạch. Evidence `runs/2026-08-12-S190-soltuon-dieu-chinh-hd/sub-cicd-deploy-yc030.md`. Tag `[s190, gate-697, mig73-ended-finalize, shipproof-3chan-bytematch, control-am-overwrite, disk-death-khong-tai, gotcha-91-xanh]`
- **S189 (08-11) `92d8215a` YC-028 FE tách 404⟂lỗi-hệ-thống (8 FE, **0 BE**, 0-mig) — V1 FAIL 8/11 → V2 PARTIAL 8/9.** 🔴 **V1 = KHÔNG CÓ RUN ĐỂ MÀ ĐỎ**: push land, `ls-remote` đúng sha, mà **0 ActionRun**/484 task. 🔑 **DETECTOR #91 = 2 nguồn LỆCH trong CÙNG 1 API:** `/repos/{r}``updated_at` đọc **DB** = giờ push TRƯỚC ⟂ `/branches/main``commit.id` đọc **git trên ĐĨA** = sha mới ⇒ ref tiến trên đĩa mà tầng app chưa hề thấy push. **Stage 2 từ nay ĐO `updated_at ≥ giờ push` TRƯỚC khi kết luận 'đang chờ CI'.** Terminal push SẠCH ⇒ chết ở **notifier**, không ở receive-pack. Sửa = `workflow_dispatch` (204). 🔴 Nguy vì **mọi tín hiệu quen đều XANH** ⇒ chỉ **vắng-mặt thứ đáng lẽ có** mới tố cáo. 🔑 **CẶP ĐỐI-CHỨNG dập nghi-oan filter** (commit anh em có/không file non-ignored → có/không run). 🔑 **V2 SHIP PASS TRỌN:** gate **680 EXACT** Δ0 · JS rotate ×2 + **size prod khớp log CI TỚI BYTE** · marker **0→5/app = 10/10** · hash cũ→`text/html`. 🔑 **CSS không rotate mà vẫn ĐÚNG** (0 class Tailwind mới) — **JS đổi ⟂ CSS giữ = đúng hình dạng diff**. 🔴 **V2 FAIL: A/059 6/16 mẫu >3s (max 8,75s).** **Tự bác cold-start của chính mình vì burst-2 XẤU HƠN burst-1***warm-up curve đẹp KHÔNG đủ, phải đo burst THỨ HAI*. Loại trừ runbook (disk 28,2GB · orphan 0 · `AUTO_CLOSE=0`) → **RAM 4GB ép**: SQL `Total 213MB/Target 1,09GB`, PLE 522s ⇒ **LƯỠNG CỰC 0,6-1,0s vs 5-8,7s, trống ở giữa = hình dạng THIẾU RAM, không phải code chậm**. 🔑 **Logic rẻ hơn đo: commit 0 file BE ⇒ latency không thể do commit này.** 🔴 **Tự nhận:** `Restart-Service gitea` (khuyến nghị của chính tao) làm gitea tái chỉ mục 317MB+512s CPU/25ph, giành RAM/CPU với SQL ĐÚNG lúc đo — phải nói ra, không giấu vào chữ 'transient'. Treo: ghim `max server memory` · **nâng RAM = mặt thứ 2 của YC-028 (trước vỡ ĐĨA, nay ép RAM)** · `compact /u` `Vietreport_Master.mdf` (#88). Evidence `runs/2026-08-10-S189-bookstart-open/sub-cicd-monitor-yc028.md`. Tag `[s189, gotcha-91, detector-updatedat-vs-branchhead, burst2-bac-coldstart, luong-cuc-thieu-RAM, tu-nhan]`

View File

@ -58,3 +58,5 @@
- 2026-08-01 · S168 #444 `0bfadc2` GD3-D Panel-3 + Lines-editor KHKK (0-mig) — PASS 6/6, wire-proof 400 goi-ten-3-field + chup-PRE-kip-gio + marker bat-doi-xung 1:2 + CSS nhan-chung · `runs/2026-07-31-S164-4gd-khkk-fanout/sub-cicd-verify-gd3d-lineeditor.md`
- **@S189 curate → `2026-08.md` §[ARCHIVED @S189]** — verbatim 5 khối L1: `S159` (arc 4 đợt `b5799fc`/`1a47a61`/`2a72695`/`a2bbcb9`, durability-≥2-restart, control-âm-tầng-bundle) · `S168` (#444 `0bfadc2`, wire-proof-400-tên-field, chụp-PRE, marker bất-đối-xứng) · `ARC S155→S166` (#416#439, chân-lý-rỗng #435, luật cấm `HEAD~1` #432, 3-chân-kiềng #423) · `#447` (`998ea55`, cặp-đối-chứng #446/#447, bẫy-415-pre-auth, không-đo-được-phải-tự-nghi) · `S182` (YC-013 W0.4, hiệu-chuẩn-thước-2-anchor, acceptance ép-false).
- **S190 `091073f9` + S189 `92d8215a`** (archived @S191) → `2026-08.md` §"S190 + S189 (verbatim — archived @S191 curate)" — tra bằng substring `PASS TRỌN 6/6` (S190: gate 697, Mig 73, ship-proof 3 chân) · `KHÔNG CÓ RUN ĐỂ MÀ ĐỎ` (S189: detector #91, burst-2 bác cold-start, lưỡng-cực thiếu RAM).

View File

@ -45,3 +45,12 @@
- **Khoản 1 (hướng-tiếp vs `next:`):** `next:` chỉ chở **3/6 chặng** của §B 3 đuôi (*thăng luật E4 · synthesis S173 · 5 điểm governance*) chỉ sống `_mind` + chain. Lead đã nối đuôi vào `next:`.
- Tag `[s175, ctx-verifier, con-tro-2-tang-may-mu-tang-noi-dung, 0-hit-rong-vi-sai-duong-dan, next-cho-thieu-chang, seed-on-behalf]`
- **S185 (08-10) @/tiep-3 (window-4) `NAP-LAI-SAN-SANG — 15 cờ` `[LEAD SEED ON-BEHALF; verdict ghi ở `.claude/sessions/session-13/_tiep-3.md` dòng cuối — LẦN ĐẦU marker chở verdict, đóng `[carry:tiep-3ter-seed-unwired]` lần 9]`:** máy `mind-check` full 10/10 chạy TRƯỚC. Cờ nặng nhất: **`S184` = 0 hit CẢ `_mind` LẪN `_context`** (control-dương `S183`=1/1 grep sống) trọn window-3 sống ĐỘC NHẤT WAL sổ tái sinh mỗi closeout. Bắt **con-trỏ V-5 SAI CHIỀU** (`_mind:96` trỏ artifact đã đóng; nhà thật từ S184 = WAL) + 4 nhãn §D lệch + §B thiếu 3/6 chặng + deep-sweep **3 bề mặt 3 số** (17/15 · 19/15 · 15/15 sổ máy thắng: counter 59 deep_at 40). 🔴 **Tự truy GỐC CƠ-CHẾ của chính mình:** `ctx-verifier` 0 hit trong `_mind`/`_context` **cửa `/tiep` không có artifact chở verdict** (3 marker `_tiep-*` đều 211 B stub) khác curator vốn nhà `_context` mục (3) **lỗi cấu trúc, không phải đãng trí**. Tag `[s185, s184-chi-song-o-wal, con-tro-sai-chieu, 3-be-mat-3-so, tu-truy-goc-co-che]`
## S191 (2026-08-13) @/tiep window-3 L15 — NAP-LAI-SAN-SANG, 13 cờ
[LEAD SEED ON-BEHALF vai không Write/Edit; nợ 2 lượt (`_tiep-1`+`_tiep-2`) do H2 F-02 bắt, trả tại đây]
- Nặng nhất **cờ-8**: claim "nén 2 memory over-cap" **SAI ĐÍCH** investigator 23.148B + reviewer 25.469B đều DƯỚI trần 25.600; file vượt thật `ring2-audit` 27.458B {đang-cãi}. Lead đối chứng byte KHỚP đóng bằng ĐO, không nén. *(Bổ sung @close: tập over-cap thật là **3 vai**, cờ-8 cũng chưa đủ xem `lead-gap` F5.)*
- cờ-3/4/5: `STATUS:6` chết 4 mặt · `run.md` S190 dừng B5 (5 artifact YC-030+deploy mồ côi) · `sub-wq3-be.md` skeleton 593B 4/4 mục `_(chờ)_` 0 đường tái dựng. lead cả 3 @S191.
- cờ-6 **BỊ LEAD BÁC** (dương giả): carry `pin-max-server-memory-fleet` nhà HANDOFF @S190, vai grep từ-khoá spaced nên 0-hit.
- cờ-10: §E tự phạm hợp-đồng "gom MỌI spawn" thiếu chính `ctx-verifier` @tiep-1 carry `ctx-verifier-no-self-append` **lần 11**.
- Bài: verdict vai sống độc nhất `_tiep-<i>.md` nếu lead không seed 2 lượt trôi trước khi được nhặt.
- Tag `[s191, nap-lai-13-co, sai-dich-nen-memory, no-self-append-lan-11]`

View File

@ -56,3 +56,12 @@ Con ĐO của bộ-ba đồng-kiểm memory-system (adopt AI_INFRA 2026-07-18 kh
## S189 (2026-08-11) — @open L15 · MIXED — 38 trục / 13 REG · 11 HEALTHY · 14 MIXED
- §2 ĐẢO CHIỀU: measured 19/29->29/29 phủ, 18/19->2/29 lệch — đổi bởi ef1d4fbb 21:04 (KHÔNG phải phiên này; Mirror C1 nguyên). Caveat giữ: 27/29 khớp-một-phần là tautology, datum thật = 2 row trôi/3h.
- #22 bị audit phán: NHÃN "lỗi thước" SAI (bảng :380) nhưng PROSE :426 đúng — tự mâu thuẫn bảng-vs-prose; vật đổi (tooling ghi diary), thước không hỏng. Erratum tự bắt: .mfe-state đổi 5.690->5.875 mà git status SẠCH — Stop-hook nuốt vào 234fe02c => backstop chống-ghi-lén = git log wal:, KHÔNG phải working-tree. -> .claude/workflows/runs/2026-08-10-S189-bookstart-open/harness-eval-return.md
## S191 (2026-08-13) @close L15 — VERDICT **MIXED** (11 HEALTHY / 12 REGRESSION / 11 MIXED / 2 không-đo-được / 1 nhường; Σ=37 trục, tự cộng khớp)
[LEAD SEED ON-BEHALF — vai không có Write/Edit]
- Không in HEALTHY dù 3 trục đảo chiều đẹp (nhãn⟺ghi 8=8 · `score-counter` đã rời mốc seed · l2idx đỉnh 68,1%): REGRESSION nhiều hơn, và **2 trục nặng nhất (headroom, MFE tổng) kỳ này KHÔNG CÓ SỐ** ⇒ trục từng-REGRESSION *biến khỏi tầm đo*, không phải được giải (lớp S172).
- Trả 2 câu lead hỏi bằng đo: **(a)** `tran-bo-nho 3` = ngưỡng `autoinject_cap_bytes` 25.600 → `lead-gap` 28.094 · `ring2` 27.458 · `lead-stale` 25.966; 6 số lead dán **thiếu 2 vai này**. Theo **KÝ-TỰ thì 0 over** — đơn-vị đổi thì verdict đổi. **(b)** `ring1-audit` A7 `N/A` KHÔNG phải _INDEX rỗng: index kiểu bảng, 0 token `substring:"` ⇒ guard B2 từ chối PASS trên mẫu-số rỗng (làm ĐÚNG) ⇒ 2 archive ring1 nằm NGOÀI 429/429.
- Cụm D nặng: `measured` khớp đĩa **27/29 → 9/29 trong 2 ngày** ⇒ mọi cột delta dựa `measured`, kể cả cột con-ĐO vừa đưa, đang so số đã trôi.
- Cụm E (bài học phương-pháp cho lead): **bề-mặt-đo đóng băng dán MÔ-TẢ thay vì SỐ thì trục đó biến mất khỏi mọi verdict mà bảng vẫn trông đầy đủ.**
- Caveat: `read-only` = thiếu tool, KHÔNG phải sandbox; `git status` KHÔNG đủ làm backstop (Stop-hook nuốt vào `wal:`) ⇒ phải soi `git log` các commit `wal:` sinh sau lượt vai.
- Tag `[s191, mixed-37-truc, don-vi-byte-vs-kytu, measured-ru-a-2-ngay, mo-ta-thay-so-lam-truc-bien-mat]`

View File

@ -55,3 +55,11 @@ Con ĐỀ-XUẤT của bộ-ba đồng-kiểm memory-system (adopt AI_INFRA 2026
## S189 (2026-08-11) — @open L15 · 2 action / 16 BÁC (4 escalate · 4 nhường · 5 đính-chính con-ĐO)
- A1 distill: dựng _INDEX.md cho {ctx-audit, ring2-audit, lead-stale-auditor}/archive 28.873B L2 hình với A7 archive-gate:249 `continue` qua vai không index. A2 promote luật "drain tay không kèm _INDEX = tự đẻ dark-matter".
- E2 catch nặng nhất: PROPOSE-archive của máy cho ring2 CHĨA SAI (60% file trên heading đầu => keep_floor đẩy Role-baseline + Runs vào drain) audit xác nhận mức máy, CẤM chạy nguyên văn. Chốt-dừng FIRE 2 vật: lead-gap after-est 25.638>cap = BẤT KHẢ số học (không lách lane); ring2 attempt-2 cùng thuốc. 3 nợ lead mang sang: kiểm độc lập cả 3 ĐÃ LAND — không đề lại. -> .claude/workflows/runs/2026-08-10-S189-bookstart-open/harness-refine-return.md
## S191 (2026-08-13) — LUẬT **ARCHIVE-MỘT-PHÁT KHÔNG GIỮ** (promote, A1)
[LEAD APPEND B3 — vai propose-only]
> Archive/distill một vai = thuốc **hết hiệu lực trong ≤4 ngày**: tốc độ append của phiên lớn hơn lượng rút ra. Đo @S191: rút **813 B** (`lead-gap`) / **692 B** (`lead-stale`) → L1 vẫn **+1.201 / +1.188 B** ⇒ append/drain **2,48× / 2,72×**. 6/6 vật từng archive đều tái phình.
> ⇒ **Chốt-dừng nâng từ per-ĐỐI-TƯỢNG lên per-LỚP:** vai đã archive/distill **một lần** mà con ĐO lại báo over-cap ⇒ **CẤM đề lớp ③/④-nén lần nữa** (kể cả đổi span, đổi thuốc — đổi thuốc trên vật đã escalate = **lách chốt-dừng**) ⇒ **ESCALATE cơ-chế** (cap = quyền owner · quy-ước ghi = quyền lead · tự-động-drain = lane tooling).
> **Vì sao không phải "làm mạnh tay hơn":** cắt sâu hơn chỉ dời ngày vượt, **không đổi dấu đạo hàm**.
> 🔴 Luật này ăn ngay vào chính vai: nó cấm B6 — ứng viên hấp dẫn nhất của lượt (thuốc `##` đã chứng hiệu nghiệm 58%→2,1% @S186) — vì **SAI THỨ TỰ**: planner giả định "bottom=newest" trong khi 40-58% ruột 3 vai nằm TRÊN `##` đầu ⇒ gắn `##` sẽ đẩy chính bản-ghi-mới-nhất vào pool drain ⇒ thuốc thành độc. Phải sửa giả-định thứ-tự TRƯỚC (ES-4).
> 🔴 **ES-4 hệ quả vận-hành: CẤM chạy `memory-archive-gate.ps1 -Apply`** cho tới khi sửa `:177-178`.

View File

@ -69,3 +69,13 @@ H2 harvest-MD-integrity auditor **SOLUTION_ERP-self**. Read-only + **propose-onl
- F-01 HIGH: 4 vai chạy S188 nhận 0 chữ = 42.975B mồ côi (ring2 18.195 · ring5 11.282 · harness-audit 10.664 · ctx-audit 2.834) — dedup sạch, APPEND an toàn. F-02 HIGH narrative-capture != memory-landing; ring1 B-09 sửa ĐỘNG TỪ: ef1d4fbb KHÔNG "seed diary" — 3 vai là NÉN-xuống-archive, chỉ harness-refine +5/-0 là append thật (lõi vẫn ĐẠT).
- Orphan 0/93 (dual-accept; ring1 chứng nhánh `harvest/` legacy SỐNG — 5 folder 2026-06-18 chỉ qua nhờ nó). Đối chứng 3 số lead khai: 19 OK · 12 OK · "10 file" SAI, đĩa 14 (-3).
- Read-limit ĐO ĐƯỢC + đảo dấu: chấm KÝ-TỰ (không byte) => 0/29 vai vượt, max lead-gap 96,5%; đứng ở cả x1000 lẫn x1024. -> .claude/workflows/runs/2026-08-10-S189-bookstart-open/sub-harvest-curator-open-S189.md
## S191 (2026-08-13) — @close L15 (phiên ĐÓNG) · GATE-HOLD 6 (2H·3M·1L)
- **C2:** A=7 vai (nguồn-1 CHỈ 1 = `sub-cicd-va-goc-92.md`; folder mới `2026-08-13-S191-bookend-close/` có mỗi `run.md` ⇒ nguồn-1 gần-∅ đúng như cảnh báo S181) · **B=0/29** (grep `S191` toàn 29 MEMORY.md = 0, đo 2 lần cách nhau ~40') ⇒ **AB = 7/7 thủng**. Nguồn-2 (verdict trong `_tiep-2.md` + bảng scribe `run.md`) gánh 6/7 — bỏ nguồn-2 là checklist báo PASS.
- 🔴 **F-01 nợ CHÍNH TAO nêu @S189 chưa đóng, và tao suýt đọc nhầm lần nữa:** tag-scan thấy `ring2-audit` có chuỗi "S188" ⇒ tưởng đã về nhà; mở ra thì đó là **mention trong thân entry S189** (đếm slug "S185 20/23 · S188 47"), KHÔNG phải bản ghi. Grep TRỌN dir (kể cả `archive/`) = **0/4 vai** ⇒ 42.975 B mồ côi (ring2 18.195 · ring5 11.282 · harness-audit 10.664 · ctx-audit 2.834) vẫn nguyên sau 2 cửa sổ. **Đo TÊN-token cũng là đo tên** — chỉ `grep -rn` cả dir mới là đo nội dung.
- 🔴 **F-02 ctx-verifier nợ 2 lượt chứ không 1:** `_tiep-1.md:6` (13 cờ, "lần 10") + `_tiep-2.md:6` (13 cờ, "lần 11") mà sổ dừng ở **S187 lượt 12/lần 9** ⇒ window-2 chưa ai gom. Vai không có Write = nợ CƠ-CHẾ, cửa `/pause` không phải cửa gom.
- **F-03 Placement:** `fe-user/.claude/agent-memory/implementer-frontend/` 3 tầng dir RỖNG (mtime 19:10 = giờ W2/W3), **git mù 2 lớp** (rỗng + `.gitignore:118 fe-*/.claude/`); session-log:34 + WAL:22 khai "dọn stray dir rỗng" mà đĩa còn nguyên (mtime không đổi ⇒ chưa ai rmdir). 🔴 **Thước của chính tao cũng mù:** `find .claude -type d -empty` = 0 — phải quét **repo-wide** mới thấy (đúng bài S172, tái phạm nếu quên).
- **F-04:** session-log:31 "file DUY NHẤT vượt trần = ring2 27.458" — đĩa **3 vai** vượt `autoinject_cap_bytes` 25.600 (lead-gap 28.094 · ring2 27.458 · lead-stale 25.966), và **chính máy lead chạy cùng phiên** (`nhip-no-probe`) in "tran-bo-nho **3 over-cap**" ⇒ số sai mâu thuẫn với máy của chính nó. (Caveat S189 giữ: chấm KÝ-TỰ thì 0/3 vượt — khoá tên `_bytes` + máy đọc byte ⇒ byte là nghĩa đang hiệu lực.)
- **Fidelity STRONG** cho on-behalf `sub-wq3-be.md`: 5/5 claim truy về `69860362` (Mig 3-file 29+7067+3 · service +88 · DTO/controller +21/+22/+16 · `[Fact]`=**4** khớp đúng chữ "+4") ⇒ 0 bịa, không escalate. **Corruption** 25 hit/12 file `.claude`-wide (control dương rc=0, SCANNED 1284) = baseline 24/11 **+1 mention** ở `S185/sub-ring1-audit.md:150` (trích chính ca hỏng của cicd làm bằng chứng — citation-trap đời N) ⇒ lành, baseline mới **25/12**. **Orphan 0/94** run.md (dual-accept), S191-close = IN-PROGRESS không tính.
- Chore tự khai: L1 tao 22.196 B < cap 25.600 nhưng > self-target 17,1K ⇒ self-compact còn DUE. Tag `[s191, C2-nguon-2-ganh-6-tren-7, mention-khong-phai-ban-ghi, no-S188-qua-2-cua-so, ctx-verifier-2-luot, stray-ngoai-.claude-git-mu-2-lop, so-mau-thuan-may-cua-chinh-minh]`

View File

@ -20,9 +20,7 @@
> **Persistent diary cross-session.** Auto-injected first ~200 lines at spawn (L1 HOT). Update qua EM-MAIN VERIFY→APPEND (vai = propose-only, RETURN-only — KHÔNG tự ghi file này). Tiered Memory v1: L1 HOT cap ~17KB · entry ≤1.5K chars (#53).
> **Seeded @S132 (2026-07-17) — retro-harvest on-behalf bởi em-main** từ `runs/2026-07-15-S124-adap-wave-reply/sub-lead-omission.md` (9967B, verbatim còn nguyên trên đĩa). GAP-3 class: vai chạy S124 nhưng diary không ai seed suốt 8 nhãn phiên — chính vai này là catch-layer cho lớp "cái THIẾU không tự hiện ra", và cái thiếu suốt 8 phiên lại là DIARY CỦA CHÍNH NÓ (mirror "git mù dir rỗng" S122).
## 🎯 Role baseline
H24 §2(1) vai-GAP — soi CÁI BỊ THIẾU trong cái LEAD surface (việc rớt khỏi work-state · carry rớt/quá-già · yêu-cầu owner ghi chung-chung mất SPECIFICS · quyết-định-treo chìm · memory nạp dưới hạn-mức). Máy MÙ gần hoàn-toàn lớp này → catch-layer DUY-NHẤT. Method: dựng EXPECTATION-set từ commitment-sources (HANDOFF carries `grep -o` mega-line · WAL · ACTIVE-MARKS · owner-decisions · spec/run.md) TRƯỚC khi so; ≥1 disk-touch trước mỗi gap-* (S121). Class ∈ enum ĐÓNG (5 gap-*): gap-carry-dropped · gap-carry-aged · gap-owner-specifics · gap-decision-sunk · gap-underfill. ĐỌC detector H24-2, KHÔNG recompute streak. KHÔNG lấn H1/H2/lead-view.
> 🗄️ moved @S191 → `archive/2026-08.md`: ## 🎯 Role baseline
## 📅 Runs
@ -75,3 +73,13 @@ H24 §2(1) vai-GAP — soi CÁI BỊ THIẾU trong cái LEAD surface (việc r
## S189 — @open L15 DEEP · 7 FLAG
F-1 gap-incident-unrecorded: ca 0.7(b) 0-hit/7 sổ (->PN-002); cơ chế: ring5 0-hit session-start.md => guard ONESHOT-S188 không fire được @open. F-4 YC-027 land 2/4 cửa. F-5 ring2 over-cap thiếu _INDEX+gist = nợ mới. Honest-zero carry-aged khai thật; underfill TỪ CHỐI báo (ring2 chấm ĐÚNG NẤC). -> .claude/workflows/runs/2026-08-10-S189-bookstart-open/sub-lead-gap-auditor-open-S189.md
## S191 (2026-08-13) @close L15 — 7 FLAG (3H/4M), coverage 6/6 class, 2 honest-zero CÓ LẬP LUẬN
[LEAD SEED ON-BEHALF — vai propose-only, B3]
- F1 `gap-carry-dropped` **17→18 = 6,0× jump=3**: khối RE-STAMP vắng 3 nhãn phiên; 2 slug `w5-host-ondeleted`+`reset-doi-het` **chưa từng** vào HANDOFF. Loại được bào chữa "bỏ vì gấp": cùng lượt lead VẪN viết segment 1.609B ⇒ bỏ **có chọn lọc**. → lead dựng RE-STAMP từ-nguồn @close (52 slug, 2 slug kia đã vào).
- F2: nợ `OVERDUE:deep` **không có nhà sống sót** — chỉ ở WAL mà §6.4 xoá trắng; slug `[carry:h24-deep-overdue]` đóng @S185 đúng closeout đặt `deep_every=1`. → lead chạy deep @close + ghi signal máy.
- F3 `gap-decision-sunk`: 5 site câu CẤM-push sau khi điều kiện gỡ đã thoả; cảnh báo bẫy vá-nửa (WAL sắp bốc hơi, `STATUS:478` cách nhà chính 472 dòng). → lead vá 4 site bền.
- F5 `gap-underfill`: lead đo ĐÚNG byte, **đo NHẦM NGƯỜI** — 3 vai over-cap (`lead-gap` 28.094 · `ring2` 27.458 · `lead-stale` 25.966), 2/3 là chính nhật ký H24 ⇒ **lớp bắt-lỗi mất trí nhớ trước tiên**. Tự khai liên đới: file này là của mình.
- F6: **BÁC** nghi vấn lead — `YC-031` ghi ĐÚNG luật (3/3 nguyên văn, giữ cả typo). Chỉ thiếu 1 specific: owner nói "2-3 lần", sổ truy được **2 ca có vết**, ca-3 0 vết → lead thêm dòng đối-chiếu + hỏi anh.
- honest-zero: `gap-carry-aged`=0 **KHÔNG ĐO ĐƯỢC** (hệ quả F1, cấm đọc thành lành) · `gap-incident-unrecorded`=0 — **tự bác flag đã soạn** bằng control-dương (13 gotcha #80-92 chỉ 2 có RCA ⇒ gotcha-không-RCA là THÔNG LỆ).
- Tag `[s191, restamp-vang-3-nhan, no-deep-khong-nha, cam-push-5-site, do-dung-byte-nham-nguoi, tu-bac-flag-bang-control]`

View File

@ -0,0 +1,6 @@
# archive 2026-08 — lead-gap-auditor (moved-not-cut)
## 🎯 Role baseline
H24 §2(1) vai-GAP — soi CÁI BỊ THIẾU trong cái LEAD surface (việc rớt khỏi work-state · carry rớt/quá-già · yêu-cầu owner ghi chung-chung mất SPECIFICS · quyết-định-treo chìm · memory nạp dưới hạn-mức). Máy MÙ gần hoàn-toàn lớp này → catch-layer DUY-NHẤT. Method: dựng EXPECTATION-set từ commitment-sources (HANDOFF carries `grep -o` mega-line · WAL · ACTIVE-MARKS · owner-decisions · spec/run.md) TRƯỚC khi so; ≥1 disk-touch trước mỗi gap-* (S121). Class ∈ enum ĐÓNG (5 gap-*): gap-carry-dropped · gap-carry-aged · gap-owner-specifics · gap-decision-sunk · gap-underfill. ĐỌC detector H24-2, KHÔNG recompute streak. KHÔNG lấn H1/H2/lead-view.

View File

@ -9,3 +9,4 @@
- 2026-07.md · S146 audit#4 con-trỏ GAP-3 lần-3 (verbatim gốc runs/2026-07-22-S145-apply-hub-answers/sub-lead-omission-S146.md 20.043B) · substring:"[s146, backfill-pointer"
- 2026-07.md · S148 light#5 force-fire P=1 (moved-not-cut @S164 refine A1) · substring:"S148 light-audit #5"
- 2026-07.md · S150 bookend @close lượt đầu hình B vô-điều-kiện (moved-not-cut @S164 refine A1) · substring:"S150 bookend @close LƯỢT ĐẦU"
| `2026-08.md` | `## 🎯 Role baseline` (moved @S191) | substring:"H24 §2(1) vai-GAP — soi CÁI BỊ THIẾU tro" | 813 B |

View File

@ -19,9 +19,7 @@
> **Persistent diary cross-session.** Auto-injected first ~200 lines at spawn (L1 HOT). Update qua EM-MAIN VERIFY→APPEND (vai = propose-only, RETURN-only — KHÔNG tự ghi file này). Tiered Memory v1: L1 HOT cap ~17KB · entry ≤1.5K chars (#53).
> **Seeded @S132 (2026-07-17) — retro-harvest on-behalf bởi em-main** từ `runs/2026-07-15-S124-adap-wave-reply/sub-lead-view.md` (8379B, verbatim còn nguyên trên đĩa — đọc full khi cần). GAP-3 class: vai chạy S124 nhưng diary không ai seed suốt 8 nhãn phiên (per-RUN gate im ĐÚNG thước của nó; per-ROLE không ai sở-hữu — E-011/email e46863c8 GAP-3).
## 🎯 Role baseline
H24 §2(1) vai-STALE — soi VIEW LỆCH SOURCE của cái LEAD surface. Class ∈ enum ĐÓNG `lead_self_audit.flag_classes` (5 view-*): view-residual-asym · view-stale-count · view-stale-status · view-stale-header · view-stale-role-desc. KHÔNG tự chế class; không phân-loại được → verbatim + escalate anh. Chạy theo NHỊP `h24_cadence` (đọc config, CẤM hardcode). ĐỌC output máy (`governance-detectors.ps1`) làm nền — chỉ thêm lăng-kính NGỮ-NGHĨA máy không phán được. KHÔNG lấn: tooling-freshness (H1) · harvest (H2) · cái-THIẾU (lead-gap-auditor).
> 🗄️ moved @S191 → `archive/2026-08.md`: ## 🎯 Role baseline
## 📅 Runs — TÓM (@S185 refine-A2; verbatim 8462B → `archive/2026-07.md`, moved-not-cut)
@ -72,3 +70,13 @@ H24 §2(1) vai-STALE — soi VIEW LỆCH SOURCE của cái LEAD surface. Class
- FLAG-1: `_end` vs WAL — thước đúng = ĐẾM NHÂN CHỨNG (6 chọi 1), KHÔNG phải thứ-tự thời-gian; cụm "GIỮ MỞ" thêm ở ef1d4fbb 21:30 muộn hơn `_end` 46 phút. Lead nhận sai hướng đọc ban đầu + vá WAL cùng phiên.
- FLAG-9: frontmatter description CHÍNH 2 vai H24 còn câu "Chạy theo NHỊP, KHÔNG mỗi phiên" đã bị S153 tuyên sai — sống qua 2 đợt vá vì cả 2 chỉ sửa THÂN file. FLAG-10: detector H24-1 bám mốc HANDOFF:183 (08-01) vì regex không khớp anchor có emoji trong cặp sao — title-freshness phiên này = CẬN-DƯỚI.
- VALID_ROLES: regex ngây thơ 18 vs strip-comment 29 (`]` trong comment hmw.js:39 cắt non-greedy) — ai vá bằng regex thô sẽ tưởng hmw hỏng. -> .claude/workflows/runs/2026-08-10-S189-bookstart-open/sub-lead-stale-auditor-open-S189.md
## S191 (2026-08-13) @close L15 — 10 FLAG (5H/1MH/3M/1L — SÀN; coverage ~5% STATUS, 0/29 persona chưa chạm)
[LEAD SEED ON-BEHALF — vai propose-only, return đầy đủ, lead VERIFY→APPEND B3]
- Sợi chỉ: lead ĐO tốt (tự bác claim của mình sau 40') nhưng **quãng từ phép đo VỀ SỔ vẫn đứt** — 3/10 FLAG là việc ĐÃ XONG mà sổ chưa lật. Lớp *stale-BI-QUAN* lần 4.
- 🔴 F1 đắt nhất: `gotchas.md:1462` khắc root-cause **npm-cache nhiễm** trong khi `deploy.yml:108-115` (land 12' sau) nói **xoá lockfile + npm install**; run #488 PASS mà **0 lần dọn cache**. Lead flip được claim "#92 đóng" nhưng GIỮ claim "cause = cache" — cùng một hơi viết, sửa một phía. → lead VÁ trọn @close.
- F5 bẫy THƯỚC: `STATUS:470` tự ghi phương-pháp "trừ Designer+**Snapshot**" ⇒ bộ lọc nuốt `AddPeApprovedBudgetSnapshot` ⇒ ra 72; đúng phải loại `ModelSnapshot`**73**. Vá số mà không vá câu = tái phát chắc chắn. → lead vá CẢ số CẢ câu.
- F4 **lần thứ NĂM cùng ô** `STATUS:484` (S166·S172·S180·S188·S191); điều-kiện tự-khai "lần 3 wire máy" quá hạn 2 lượt → lead chọn **bỏ digit, giữ con-trỏ artifact cicd**.
- F3: `WAL.md:40-41`**lệnh chạy được** trỏ hash chết ⇒ `/tiep` sau đọc 0-hit thành "prod hỏng". → vá.
- 🔸 Đính chính tiền-đề lead: `.nvmrc` **CÓ** (2 file tracked) — lệch ở **0 consumer**; và "runner node v24.15.0" **0 vết trên đĩa** ⇒ đừng khắc vào doc bền.
- Tag `[s191, gotcha-root-cause-lech, bundle-lan-5, thuoc-tu-nuot-doi-tuong, wal-lenh-tro-hash-chet, nvmrc-ghost-wire, sua-mot-phia-trong-mot-hoi-viet]`

View File

@ -0,0 +1,6 @@
# archive 2026-08 — lead-stale-auditor (moved-not-cut)
## 🎯 Role baseline
H24 §2(1) vai-STALE — soi VIEW LỆCH SOURCE của cái LEAD surface. Class ∈ enum ĐÓNG `lead_self_audit.flag_classes` (5 view-*): view-residual-asym · view-stale-count · view-stale-status · view-stale-header · view-stale-role-desc. KHÔNG tự chế class; không phân-loại được → verbatim + escalate anh. Chạy theo NHỊP `h24_cadence` (đọc config, CẤM hardcode). ĐỌC output máy (`governance-detectors.ps1`) làm nền — chỉ thêm lăng-kính NGỮ-NGHĨA máy không phán được. KHÔNG lấn: tooling-freshness (H1) · harvest (H2) · cái-THIẾU (lead-gap-auditor).

View File

@ -0,0 +1,5 @@
# archive _INDEX — lead-stale-auditor
| period | entries | pointer | bytes |
|---|---|---|---|
| `2026-08.md` | `## 🎯 Role baseline` (moved @S191) | substring:"H24 §2(1) vai-STALE — soi VIEW LỆCH SOUR" | 692 B |

View File

@ -4,3 +4,9 @@
|---|---|---|
| `2026-07.md` | S153 · S162 | moved @S188 (refine A1 — L1 0 tầng L2, máy vĩnh viễn không PROPOSE được vì WARN keep-floor đứng trước PROPOSE trong if/elseif) |
| `2026-08.md` | S168 | moved @S188 (cùng đợt) |
## Con-trỏ VERIFY-ĐƯỢC (A2 @S191 — refine bắt: index kiểu bảng 0 token `substring:` ⇒ 2 archive **6.761 B nằm NGOÀI** lưới A7 429/429; needle lấy từ RUỘT file, không bịa)
| period | entries | pointer | bytes |
|---|---|---|---|
| `2026-07.md` | S162 | substring:"S162 (07-30) KIỂM vòng tooling/harvest @close" | 3904 B |

View File

@ -68,3 +68,15 @@ H1 tooling-freshness auditor **SOLUTION_ERP-self**. Read-only + **propose-only**
- 🔸 **4 item "da can nhac roi BAC" (chong Goodhart):** `permission-matrix:3` "12 root" DUNG (ring1 S182 chot; sai la CAY) · `STATUS:7` "Tests 668" = ban-ghi-dong-lanh co neo phien · `ef-core SKILL:102` "last schema-changing Mig 70" VAN dung (Mig 71&72 `CreateTable`=0) · `STATUS:10` "roster 28" ha xuong **LOW** vi `:8` tu khai dong CURRENT lag + co neo cua-so.
- **Con treo 4 carry-over deu tu drift-audit THANG S179, song ≥4 phien:** F-6 (skill mig 71) · F-7 (permission-matrix cay) · F-2 (schema-diagram 91 vs 97) · F-3 (PROJECT-MAP 0-hit 4 module, control duong `contract`=31).
- Tag `[s189, cong-thuc-trong-doc-lao-hoa, bao-oan-canonical-dung, lop-hep-vs-lop-rong, mat2-sach-6-be-mat, plugin-0-delta-7]`
## S191 (2026-08-13) @close L15 — `TOOLING: PASS_WITH_FLAGS — 8` (2H/3M/2L/1I)
- **F-1 HIGH — o canonical STALE, lop S181 tai phat:** `STATUS:470` ghi `Migrations 72` nhung dia = **73** (`20260812141501_AddContractEndedByLevelFinalize`, land window L15 nay). Do dung cong-thuc S189: 147 `.cs` 73 Designer 1 ModelSnapshot = 73. 🔴 **Chinh `STATUS:6` da ghi "Mig 73 prod-top"** ⇒ file **tu mau thuan voi o canonical cua chinh no**; 5 con-tro B1 resolve ra so sai (`CLAUDE.md:69` · `cicd-monitor:242` · `database-reviewer-style:96` · `investigator-codebase:81` · `ef-core SKILL:3`).
- 🔑 **F-2 — BAI DAT NHAT: tien-de cua LEAD sai, va sai theo huong lam nhe van de.** Lead giao "`.nvmrc` KHONG ton tai". Do dia: **CO**`fe-admin/.nvmrc` + `fe-user/.nvmrc` = `20`, tracked tu commit scaffold. Neu em nhan tien-de thi thuoc se la "tao lai .nvmrc" ⇒ **VO ICH**, vi cai hong khong phai FILE ma la **CO-CHE**: `deploy.yml` **0 hit** `setup-node`/`node-version` (goi thang `C:\Program Files\nodejs\npm.cmd`) ⇒ **khong tang nao doc .nvmrc**; `engines ">=20"` = min khong upper; **0** `.npmrc`/`engine-strict`/`packageManager` ⇒ khong chan. ⇒ **Luat: khi lead dua tien-de "X khong ton tai", do X TRUOC — file-vang va co-che-cam la 2 benh khac thuoc.** Ghost-wire lop H18 (config declared-but-unread), 8 site song khai sai + `deploy.yml:5` **chinh file CI** khai "Runner has Node 20" (that: v24.15.0/npm 11.12.1).
- **F-3 INFORM: va #92 moi bit NUA lo.** `npm ci`+lockfile chan drift CAY; nua kia (node/npm runner tu troi) **chua chan**; GUARD-92 bat react-trung-ban, KHONG bat node-doi-ban. Cung mot truc "build-env nhiem" da no P0 **2 lan**.
- 🔸 **Nguoc chieu drift thuong gap:** `iis-deploy-runbook:300` khai `npm ci` trong khi CI THAT chay `npm install`+xoa lockfile (chung: `git show 305b573f^`). **Doc dung, MAY troi** — runbook la canh-bao-som cua #92 ma khong ai doc cheo.
- 🔸 **4 item can nhac roi BAC:** ef-core mig-table dung Mig 71 ⇒ **DE NGHI DONG FLAG S179-F7**, `:25` da khai chu-dich "bang nay SE LUON tut sau va dieu do HOP LE" · `:102` "last schema-changing Mig 70" VAN dung (Mig 72&73 `CreateTable`=0) · `runbook:117-119` NTFS-compact da phu ca ca cuu `Vietreport_Master` phien nay ⇒ khong stale · `README.md:9` "Node 20+" dung.
- **Mat ② SACH 6/6 phien thu 2 lien tiep** (29: dia · VALID_ROLES · 29 dir · `STATUS:481` · `README:27` enum · matrix `194-233` 29 row comm-2-chieu-rong; frontmatter 29/29 × 3 khoa). **Plugin 18/15/3 — 0-delta phien thu 8.** Gotchas continuity **1→92, 0 gap 0 dup**, `STATUS:478`=92 khop.
- **new-alloc: `webapp-testing`** (user-global Playwright) CHUA co trong bang map `agents/README:238-245` — dung la lo #92 (byte-match+smoke 200 do FILE, khong do CHAY) ⇒ de xuat → `cicd-monitor` + `test-specialist`.
- **Carry S179 con 3** (song ≥5 phien): schema-diagram:515 "91 bang" vs 97 · PROJECT-MAP 0-hit 3 module (control duong `contract`=31) · permission-matrix thieu 5 root.
- Tag `[s191, tien-de-lead-sai-lam-nhe-benh, file-vang-vs-co-che-cam, ghost-wire-node-pin, o-canonical-tu-mau-thuan, doc-dung-may-troi, plugin-0-delta-8]`