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 <noreply@anthropic.com>
- [x]**đợt-3 `cd79d1c`** (`gymC4mU_`·`BKyJyauY`): gỡ 2 nút góc phải · header chỉ còn mã đậm · nút **+** từng dòng · **allow-list xoá +`TraLai`** = VÁ LỆCH 2 TẦNG (gotcha #82) · +1 test CHỨNG CÓ RĂNG (stash vá→FAIL, trả vá→PASS) · **645/645**
- [x]**đợt-4 `4704aaf`** (`8z75Zyyu`·`Bfwi0T6c`): gộp panel "Thêm hạng mục" thành **1 DÒNG của bảng**. KHÔNG "+ đẻ dòng trống inline" vì unique 3-cột CỐ Ý không lọc NULL ⇒ dòng trống thứ 2 cùng NCC đụng dòng gốc
- [x]**đợt-5 `1fa079d`** (`Cx8NQ8lS`·`BYHa3JR8`): gỡ chú-thích "Thêm cho: NCC" + gỡ vẻ-khối-riêng + dọn `addFor.supplierName` gán-mà-không-đọc. 🔴 2 câu trả lời của anh MÂU THUẪN — chọn hướng làm CẢ HAI khớp, đã khai
- [x]**đợt-6 `ca9208f`** (`BG-xXFql`·`DyRJmp0R`): bỏ khung ô nhập DÒNG ĐÃ CÓ (ghost), GIỮ khung dòng thêm. 🔴 `:554` và `:685` class GIỐNG HỆT ⇒ sửa kèm ngữ-cảnh, KHÔNG replace-all; đối chiếu sau sửa: 2 ô còn khung đều ở dòng thêm
- [x] 🧊**đợt-1..6 cửa-sổ 5 NÉN thành con-trỏ** (đã ship + 6/6 deploy VERIFIED, chi-tiết sống ở `_context-s-11.md` PAUSE-6 mục (1) + 6 commit): `530af22`·`b346b41`·`cd79d1c`·`4704aaf`·`1fa079d`·`ca9208f`. Mốc bundle cuối cửa-sổ 5 = `BG-xXFql`·`DyRJmp0R`. **Mig 72** + backfill 5/5 có mã · test **645/645** · gotcha **#82** vá lệch 2 tầng
- [x]**đợt-7 `99370de`** (S178 — anh: *"giữ lại chỗ chọn hạng mục - số tiền - thêm hủy thôi, bỏ luôn chỗ ghi chú luôn"*): GỠ ô Ghi chú CẢ 2 chỗ (dòng đã có + dòng thêm) · dọn `addNote` + `note` khỏi 2 mutation · vá chú-thích `:556` trỏ vào chính ô vừa gỡ. 🔴 **SUÝT DÍNH BẪY CHUỖI DÙNG CHUNG LẦN 4**: `Ghi chú (tùy chọn)` ở dist = 2 KHÔNG phải gỡ hỏng — `PeWorkflowPanel:869` + `HardCopiesPage:371` cùng dùng; chuỗi phân biệt KHKK là bản **CÓ dấu `…`**. Nguồn 2→0 · dist 0/0 · control dương 2/2. Thao tác append-theo-STT anh mô tả ĐÃ đúng sẵn (`onSuccess setAddFor(null)`+`invalidate`, BE `OrderBy(CreatedAt)`)
- [x] 🔴 **4 phép đo của LEAD hỏng rồi tự bắt + 1 vượt trần sổ**: ① dò thư quét `../AI_INFRA…` (repo không ở đó ⇒ `all=0` là RỖNG-VÌ-HỎI-SAI-CHỖ) · ② `HEAD~1` ≠ commit-trước-của-mình (hook `wal:` chèn giữa ⇒ so bản mới với CHÍNH NÓ) · ③ đọc DLL sai heap + lệch khung UTF-16 + quoting `\"` không phải PowerShell · ④ kỳ-vọng chuỗi=0 sai **3 lần** (`STT`·`Giá đề xuất`=6·`bg-brand-50/40`=12) vì đều DÙNG CHUNG · ⑤ WAL phình 73/40. **CONTROL DƯƠNG cứu cả 4**
- [x]`/pause`@PAUSE-6: `_pause-6.md` + `_context` PAUSE-6 (🔴 lead chèn NHẦM ĐẦU FLOW — `_context` là mới-nhất-ở-CUỐI, NGƯỢC `_mind`; đã sửa) + MIND-7 (`ctx-curator` bắt **7 điểm**, vá đủ, máy `dat=11 TRUOT=0`) + nén MIND-1 (51.260B→48.884B) + `_snapshot-1``e1942a5`
-`curl -s https://admin.solutions.com.vn/ | grep -oE 'index-[A-Za-z0-9_-]+\.js'` → khác `index-BG-xXFql.js` = đợt SAU đã tới (mốc S177 đợt-6 = `ca9208f`; eoffice `index-DyRJmp0R.js`)
-`curl -s https://admin.solutions.com.vn/ | grep -oE 'index-[A-Za-z0-9_-]+\.js'` → mốc CŨ (trước đợt-7) = `BG-xXFql`·`DyRJmp0R`; dist local của `99370de` = **`C1x59woX`·`Cn2Ctxap`** ⇒ prod khớp 2 hash này = đợt-7 ĐÃ TỚI
- 🔴 đo đợt-7 phải dùng chuỗi **`Ghi chú (tùy chọn)…` CÓ dấu `…`** (đích 0). Bản KHÔNG dấu `…` = **control dương phải CÒN 2** (`PeWorkflowPanel:869`+`HardCopiesPage:371` dùng chung — đừng đọc thành gỡ hỏng)
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-<hash>.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]].
Reference in New Issue
Block a user
Blocking a user prevents them from interacting with repositories, such as opening or commenting on pull requests or issues. Learn more about blocking a user.