Files
solution-erp/.claude/agent-memory/cicd-monitor/archive/2026-08.md
2026-08-01 17:31:18 +07:00

5.8 KiB
Raw Blame History

CI/CD Monitor — archive 2026-08

L2 archive. Moved byte-exact from L1 MEMORY.md khi vượt soft-cap. Con-trỏ ở _INDEX.md.


  • S167 (08-01) aaed699 K7 bridge KHKK→HĐ 13 file cross-stack (4 BE + 6 FE ×2 + 3 test, 0-mig) — PARTIAL 4/6+1 (gate 639=45+594 Δ+17 · Mig GIỮ 71 · tables 97 · bundle Ig1R5tAh→RgvHZkPH + DFOCQ2ks→D65FJPGd). 🔴 BÀI TO NHẤT — PUSH-ĐÈ NUỐT DEPLOY (đề-xuất gotcha #86): run #441 của aaed699 bị CANCELLED lúc 3m02s vì lead push 628132c đè ⇒ Gitea cancel-in-progress. K7 ship được CHỈ NHỜ MAY: 628132c có chạm fe-*/src/** nên đẻ run #442. Nếu commit-2 rơi trọn paths-ignore (docs/memory-only) ⇒ run-1 cancelled + run-2 skip ⇒ code KHÔNG BAO GIỜ lên prod, mà bảng Actions trông vẫn lành + git log đã push.LUẬT: sau 2 push liên tiếp, verify "run cuối có head_sha == TIP" VÀ "TIP ⊇ commit code" (git merge-base --is-ancestor), CẤM đọc "có run xanh" là xong. 🔑 KIỂM-TRA-TIỀN-ĐỀ marker trước khi tin 0-hit (nâng cấp K6, suýt FAIL-OAN lần 3): file báo bundle "ASCII text" ⇒ nghi \u-escape → bác bỏ bằng ĐO (grep -c -F 'Hợp đồng'=4 trên bundle PRE); nghi code-split (page nằm lazy-chunk thì 0-hit vô nghĩa) → bác bỏ bằng ĐO (index.html chỉ 2 asset · 0 ref "./x-<hash>.js"). Cả 2 nghi đều SAI nhưng phải đo mới được quyền kết luận. 🔑 CONTROL DƯƠNG = chuỗi bản TIỀN-commit của CHÍNH file đang sửa (4/4 =1 ở cả 2 bundle) — chứng "file có trong bundle + grep có răng" rẻ hơn mọi cách khác. 🔑 Admin = control idempotent SẴN CÓ, miễn phí: seeder chạy 3 role báo 2 upgraded (không phải 3) ⇒ nhánh no-op ĐÃ thực thi thật trên prod (code if(changed) upgraded++) ⇒ chứng idempotent ở tầng-row dù chỉ có 1 restart. ⚠️ log lần-2 sẽ IM LẶNG (guard if(added>0||upgraded>0)) — đừng đọc thành hồi-quy. ⚠️ appcmd list wp map PID→pool là BẮT BUỘC: PID 7680 start cùng cửa-sổ nhưng là vietreport-admin (dự án KHÁC) — đọc vội tưởng pool ta restart 2 lần. ⚠️ nv.test login 401 ⇒ tầng-2 #82 của Drafter CHƯA đo live; CẤM lấy Admin-qua-được để tuyên grant đã ăn (Admin có bypass, không tách được công của row). Evidence runs/2026-07-31-S164-4gd-khkk-fanout/sub-cicd-verify-k7.md. Tag [run-442, push-de-nuot-deploy, ancestry-proof, tien-de-marker, control-duong-tien-commit, admin-control-idempotent, appcmd-map-pid]

  • S167 (08-01) 1c6d77a K6 admin thu-gọn menu ADMIN_HIDDEN_KEYS 12-key (FE-admin 1 file, 0-mig) — PASS 5/5 (#440 6m29s · gate 622=45+577 delta 0 · Mig GIỮ 71 · tables 97 · menu 200/perm 2221 đứng im). 🔴 BÀI TO NHẤT: 0-hit marker SAI 2 LẦN LIÊN TIẾP do CƠ-CHẾ REGEX, cả 2 lần trông y hệt "code không ship" ⇒ suýt FAIL-OAN. (a) rolldown/Vite 8 minify string → BACKTICK (new Set([\PurchaseEvaluations`,…])), regex neo ["']không bao giờ khớp; (b) vá xong truyền pattern-chứa-backtick qua biến trong"…"→ shell nuốt,grep -cE gãy (Unmatched () trả **0 gần như im lặng** trong vòng lặp. ⇒ **LUẬT: marker chuỗi trên bundle dùng grep -Ffixed-string + LUÔN trích byte thật.{90}X.{90}TRƯỚC khi kết luận vắng-mặt.** 🔑 **KỸ THUẬT MỚI — COUNT-DELTA**: literal đã có từ K4a ⇒ *có/không* = 0 bit, nhưng *số lần xuất hiện* PRE→POST đo được: **12/12 key đều +1**; ngoại lệ duy nhấtWorkflows**+2** giải-thích-được (substring ⊂PeWorkflows) ⇒ thành kiểm-tra-nhất-quán MIỄN PHÍ. 🔑 **LOG CI IN THẲNG dist/assets/index-.js ** = nhân chứng THỨ 4 độc lập curl, khớp LM prod **tới từng giây** ⇒ rẻ nhất để phân biệt **FROZEN-lành-tính** (eoffice: LM 11:14→**12:00:41** đổi + log in CÙNG hash DFOCQ2ks= rebuild deterministic) với bundle-kẹt (LM cũ). 🔑 **2-TẦNG #82 đo bằng SỐ**:/api/menustrả **12/12 key bị ẩn** ⇒ ẩn client KHÔNG thu quyền. Marker-ÂM display-only: route/purchase-evaluations**68→68** nguyên vẹn. Evidenceruns/2026-07-31-S164-4gd-khkk-fanout/sub-cicd-verify-k6.md. Tag [run-440, 0-hit-gia-2-lan, grep-F, count-delta, frozen-lanh-tinh, log-CI-nhan-chung-4]`

  • (08-01 e202393 S166 K5+K4c FE-only — PASS 5/5: #439 6m16s, gate 622=45+577 (+1 = đúng 1 Fact mới). 🔑 marker differential 4/4 element-wise (K5 vào CẢ 2 app · K4c CHỈ eoffice) + Δsize cùng chiều = nhân chứng ⟂ grep. 🔴 recipe đếm mig trong MEMORY có FALSE-NEGATIVE: grep -v Snapshot ăn nhầm AddPeApprovedBudgetSnapshot (Mig 67) → phải neo đuôi Designer\.cs$|ModelSnapshot\.cs$; ưu tiên set-diff repo↔prod 2 chiều thay khớp-tổng. ⚠️ bar "FE route 200" KHÔNG CÓ RĂNG với SPA-fallback (POS ≡ NEG byte-identical 876B). verbatim → runs/…/sub-cicd-verify-k5-k4c.md)

  • (08-01 88e7ecf S166 K4a+K4b — PASS 7/7: #438, gate 621=45+576, menu 151→200, perm 1584→2221. 🔑 PHỦ 2 RUN 1 LƯỢT ⇒ delta khép kín. 🔑 MỐC PRE ĐỀ BÀI SAI, bắt bằng ĐO (lead giao 143⇒192, đo LIVE ra 151 → truy phạm-vi thay vì hô drift) — mốc PRE lão hoá sau MỖI deploy. 🔑 phân rã 49+588 khớp cơ-chế 2-site skip-existing (588=49×12 role). ⚠️ PERM row ≠ policy. 🔑 A5 restart ×2 thật + soi ĐIỀU KIỆN log trong source TRƯỚC khi đọc im-lặng (if (added>0)). 🔴 marker lead gợi ý BỊ BÁC BẰNG ĐO (Kết cấu có sẵn ⇒ 1/1 = 0 bit). verbatim → runs/…/sub-cicd-verify-k4ab.md)