[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:
@ -246,6 +246,32 @@ Detect by **action-signature** (NOT "AI tự phán có vi phạm không"). Scan
|
||||
|
||||
**Khai thêm 2 nhánh đúng-quy-trình đáng giữ:** lead **đã tự khai** với owner phần lỗi mình gây (không đợi bị bắt); và 2 lần bác-giả-thuyết bằng số (cartesian: đếm đủ 7 bảng mới kết luận · lock-mồ-côi: 0 session ôm transaction) tránh được 2 bản vá sai hướng (AsSplitQuery-vội · recycle-mù).
|
||||
|
||||
## RCA `P0-BUNDLE-S191` — ship bundle crash runtime LẦN 2, mọi cổng đều xanh (2026-08-13, L15 w3)
|
||||
|
||||
**AS-signature:** không khớp AS-1..AS-10 nào — **class mới**, đề xuất **AS-11: "cổng verify đo tính-chất của FILE thay cho tính-chất của CHƯƠNG TRÌNH"**.
|
||||
|
||||
**Sự cố:** owner kiểm prod sau deploy #600 → *"Admin -> tạm ôn. eOffice -> vào trắng màn hình"*. Console: `TypeError: Cannot read properties of null (reading 'useState')` @ `index-BIN1bEGo.js:8`. Ca thứ **2** cùng chữ ký (ca-1 @S189 sau #486).
|
||||
|
||||
**Lỗi KÉP → 2 fix (luật bug-production):**
|
||||
- **Fix CODE** (`305b573f`): `deploy.yml` thôi xoá `package-lock.json`; `npm install` → **`npm ci`** theo lockfile đã commit (lockfile tái sinh từ cây lành, bổ sung `@microsoft/signalr` + 9 transitive vốn thiếu từ 23/04).
|
||||
- **Fix GUARD**: **GUARD-92** chặn build khi React trùng bản (`npm ls react`). Fault-inject **4 ca** TRƯỚC khi push — và nó **bắt được lỗi trong chính guard**: thiếu lookbehind thì `lucide-react@1.8.0` khớp như một bản React ⇒ cây LÀNH cũng FLAG ⇒ CI đỏ vĩnh viễn. Vá `(?<![-\w./@])react@` rồi re-test 4/4 đúng chiều.
|
||||
|
||||
**5-why:**
|
||||
1. Vì sao trắng màn? Bundle prod crash khi khởi tạo React.
|
||||
2. Vì sao bundle crash? Cây phụ-thuộc trong bundle khác cây đã chạy được ở local.
|
||||
3. Vì sao khác? CI **xoá lockfile rồi `npm install`** ⇒ resolve lại theo semver range mỗi run ⇒ cùng commit, bundle khác nhau tuỳ registry tại thời điểm build.
|
||||
4. Vì sao CI làm vậy? Comment `deploy.yml` (từ 2026-04): *"rolldown native binding must match platform; fresh resolve on Windows"* — và lockfile lúc đó **thiếu `@microsoft/signalr`** nên "xoá cho lành" **có vẻ** đúng. Thuốc đúng là **cập nhật lockfile**, không phải bỏ nó.
|
||||
5. Vì sao lọt 2 lần? Mọi cổng verify đo **FILE**: hash CI↔prod byte-match, HTTP 200, bundle rotate. **Không cổng nào đo CHƯƠNG TRÌNH CHẠY.** Byte-match giữa 2 đầu **mà cả hai đầu chưa ai chạy thử** thì hai file giống hệt nhau vẫn cùng crash.
|
||||
|
||||
**Ca-âm nội tại — lead tự khắc SAI root-cause vào chính thuốc:** bản đầu của gotcha #92 (ghi @S191) quy nhân cho **npm-cache runner nhiễm** và kê thuốc *"dọn cache rồi mới tin build"*. `lead-stale-auditor` FLAG-1 bác: `deploy.yml:108-115` (land **12 phút sau** khi gotcha được ghi) nói rõ nguyên nhân là lockfile; và run #488 PASS **mà không ai dọn cache lần nào**. ⇒ Lead **flip được** claim "#92 đóng vì disk" nhưng **giữ nguyên** claim "cause = cache" — *sửa một phía trong cùng một hơi viết*. Đã vá trọn @close, kèm khối "giả thuyết đã BỊ BÁC" giữ cả 2 vòng làm vết.
|
||||
|
||||
**Guard mới có RĂNG:**
|
||||
1. `deploy.yml` **`npm ci` + lockfile committed** — thay đổi này tự nó khoá tính tái lập (chứng: run #488 ra **4/4 hash trùng local** dù runner node v24.15.0/npm 11.12.1 vs local v22.13.0/npm 10.9.2 ⇒ nghi vấn "node drift là nguồn bất định thứ 2" **bị bác bằng đo**).
|
||||
2. **GUARD-92** in `GUARD-92 OK: react don ban = <ver>` mỗi build (verified 2/2 app @#488), fail build nếu ≥2 bản.
|
||||
3. **Luật #92(1)**: verify deploy FE **phải có 1 phép đo RUNTIME**. Đã thi hành @S191: sau deploy #488, load thật 2 site → console 0 lỗi, form render. Đây là **lần đầu** chuỗi *CI build → deploy → runtime verify* được nối trọn.
|
||||
|
||||
🔸 **Nửa lỗ CÒN LẠI (khai, không giấu):** node/npm runner vẫn tự trôi. `.nvmrc`=20 **CÓ** ở `fe-*/` nhưng `deploy.yml` **0 hit** `setup-node` ⇒ ghost-wire class-2 — chờ owner quyết pin hay khai thẳng không pin.
|
||||
|
||||
## RCA `SCORE-T2-S189` — TẦNG-2 chấm sai PHÉP ĐẾM (2026-08-11, bookstart L15)
|
||||
|
||||
**Chấm sai — TẦNG NÀO:** **TẦNG-2** (`score-counter`). **Tầng-1 (lead) = 0 lỗi**, khớp 4/4 khoản, số tái lập được (`score-count-auditor` tự chạy lại `nhip-no-probe.ps1`, khớp verbatim; 27/27 dòng `parts=10`, 0 lệch cột). 🔴 **KHÔNG** nhét nhãn *chấm sai* vào `lead_self_audit.flag_classes` — tập ĐÃ NIÊM PHONG `_sealed_P3B_S181`, máy từ chối exit 2.
|
||||
|
||||
Reference in New Issue
Block a user