From f622218d83749f1edfe6d7d5d3cb29b873afc19f Mon Sep 17 00:00:00 2001 From: pqhuy1987 Date: Thu, 6 Aug 2026 22:37:11 +0700 Subject: [PATCH] [CLAUDE] Docs: memory verify-deploy them 2 bai do duoc tu S178 (hash CI != local, marker phai phan biet) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Bo sung vao feedback_verify_deployed_artifact_byte_level.md — CUNG mot bai "chon DUNG thu de neo", 2 ca do duoc trong cung mot dot ship: 1. Hash bundle CI != hash dist LOCAL cua CUNG mot commit. Do that: 99370de build local ra C1x59woX/Cn2Ctxap, CI deploy ra CZzRTDJS/D1cL-UbV. => CAM neo "da deploy" vao hash-khop-local: neo vay thi deploy THANH CONG van bi doc thanh that bai. Neo dung 2 ve: (a) hash DOI so prod cu + (b) byte-level noi dung kem control duong. dist local chi dung lam doi-chung CO-CHUOI-HAY-KHONG, khong dung lam moc danh-tinh. 2. Marker phai PHAN BIET DUOC, khong thi control duong cung cuu khong noi. Go placeholder 'Ghi chu (tuy chon)…' cua KHKK, do bundle ra 2 => trong y het "go khong an". That ra PeWorkflowPanel + HardCopiesPage dung ban KHONG co dau '…'. Marker dung = ban CO '…' (0/0); ban khong-'…' thanh control duong (2/2). => Truoc khi dat ky-vong =0, grep xem CON AI DUNG chuoi do. Day la lan thu 4 cung lop trong 2 cua-so lien tiep. Docs-only => path filter CI skip, khong deploy. Co-Authored-By: Claude Opus 5 --- .../feedback_verify_deployed_artifact_byte_level.md | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/.claude/auto-memory/feedback_verify_deployed_artifact_byte_level.md b/.claude/auto-memory/feedback_verify_deployed_artifact_byte_level.md index 15a119a..4cbb538 100644 --- a/.claude/auto-memory/feedback_verify_deployed_artifact_byte_level.md +++ b/.claude/auto-memory/feedback_verify_deployed_artifact_byte_level.md @@ -5,6 +5,7 @@ metadata: node_type: memory type: feedback originSessionId: 67157d21-1ead-475d-9a50-cf7f07468583 + modified: 2026-08-06T15:36:33.098Z --- Khi user UAT báo "fix chưa ăn / vẫn thấy UI cũ" SAU khi đã deploy (cicd verify bundle rotate), ĐỪNG đoán cache-vs-deploy — **verify artifact prod BYTE-LEVEL**: `curl -s $BASE/` lấy `/assets/index-.js` → `curl` file đó → `grep -ao` string-fix-mới + string-cũ. Fix-present + old-gone = deploy OK → **100% client-cache** (KHÔNG deploy-fail). **incognito window (Ctrl+Shift+N) = golden-test** (không cache → OK = chắc-chắn cache). SPA Vite: index.html `Cache-Control:no-cache` + JS hash-immutable = ĐÚNG chuẩn; cache-lag do tab-SPA-mở/browser-giữ-index.html, KHÔNG do server (nếu grep `serviceWorker|workbox` = 0). @@ -12,3 +13,8 @@ Khi user UAT báo "fix chưa ăn / vẫn thấy UI cũ" SAU khi đã deploy (cic **Why:** S96 anh Chương "bó tay rồi" — checkbox opt-out không hiện sau Ctrl+F5+logout. Verify byte-level: prod `0MU-kb4N` CHỨA "BỎ tick"/"Đã BỎ tick", chuỗi cũ "✅ static" MẤT → xác nhận cache 100%. Tiết-kiệm giờ debug sai-hướng + trấn-an team ("server có fix rồi, do cache máy"). **How to apply:** deploy-claim + UAT-báo-chưa-ăn → (1) curl-grep bundle prod tìm marker-fix, (2) bảo user incognito, (3) CHỈ nghi deploy-fail khi marker VẮNG khỏi bundle. Xem gotcha #77. Liên [[feedback_root_cause_over_symptom]]. + +**+S178 — 2 bổ-sung ĐO ĐƯỢC, cùng một bài "chọn ĐÚNG thứ để neo":** + +1. 🔴 **Hash bundle CI ≠ hash `dist` LOCAL của CÙNG commit.** Đo thật: `99370de` build local ra `C1x59woX`·`Cn2Ctxap`, CI deploy ra `CZzRTDJS`·`D1cL-UbV`. ⇒ **CẤM neo "đã deploy" vào hash-khớp-local** (neo vậy thì deploy THÀNH CÔNG vẫn đọc thành thất bại). Neo đúng 2 vế: *(a)* hash **ĐỔI** so prod cũ + *(b)* **byte-level nội-dung** kèm control dương. Có (a)+(b) rồi thì lệch hash local là vô hại — dist local chỉ dùng làm **đối-chứng có-chuỗi-hay-không**, không dùng làm mốc danh-tính. +2. 🔴 **Chọn chuỗi marker phải PHÂN BIỆT ĐƯỢC, nếu không control dương cũng cứu không nổi.** Ca S178: gỡ placeholder `Ghi chú (tùy chọn)…` của KHKK, đo bundle ra **2** ⇒ trông y hệt "gỡ không ăn". Thật ra `PeWorkflowPanel`+`HardCopiesPage` dùng chuỗi `Ghi chú (tùy chọn)` **không có dấu `…`**. Marker đúng = bản CÓ `…` (0/0), còn bản không-`…` thành **control dương** (2/2). ⇒ Trước khi đặt kỳ-vọng `=0`, **grep xem còn ai dùng chuỗi đó** — đây là lần thứ 4 cùng lớp, xem [[feedback_absence_looks_like_clean]] + [[feedback_claim_stronger_than_work]].