wal: flush 20260727T1551
This commit is contained in:
@ -1,5 +1,5 @@
|
||||
# WAL — auto-generated, không sửa tay
|
||||
updated: 2026-07-27T14:12+07:00 | session: S155 (phiên-LOGIC L7, window 2) | branch: main
|
||||
updated: 2026-07-27T15:34+07:00 | session: S156 (phiên-LOGIC L7, window 3) | branch: main
|
||||
|
||||
goal: [A-product] PE nút XÓA phiếu ở màn duyệt — **2 ĐỢT ĐÃ DEPLOY** (`b1bae77` nền + `4464a46` nút/menu/màn-Đã-xóa). Chờ cicd-verify đợt 2. || [B-governance] 22 FLAG treo chờ (42)(43)(44)(E2) — 2 cửa-sổ chưa động, KHÔNG bị việc sản-phẩm nuốt.
|
||||
|
||||
@ -10,7 +10,7 @@ chain:
|
||||
[x] ĐỢT 1 deploy `b1bae77` · **CICD PASS 6/6** — mig `20260727033522` ở TOP `__EFMigrationsHistory` prod, cột khớp, smoke 8/8, PUT 401, bundle rotate ×2
|
||||
[x] ĐỢT 2 deploy `4464a46` — 562 PASS/0 FAIL · npm build ×2 · md5 mirror `7cd6bbfe…` · F8 gate qua (2 file mới 269+822 dòng CÓ trong commit)
|
||||
[x] T27 khoá CẢ LỚP lỗi entity-có-cờ-mà-DTO-không-có — 🧪 fault-inject: tiêm bug ⇒ ĐỎ, khôi phục ⇒ xanh
|
||||
[!] cicd-verify ĐỢT 2 **XONG MỘT PHẦN** (7.925 B, agent dừng giữa chừng — mục 4/5/6/7 còn `(chưa có)`, KHÔNG có verdict cuối). ✅ ĐÃ XÁC MINH: **nhãn `Pe_*_Pending` "Duyệt"→"Đang duyệt" ĐỔI THẬT 2/2** (pre-deploy 14:08 còn `'Duyệt'` ⇒ chứng `labelBackfill` CHẠY trong đúng cửa-sổ deploy này) · NO-MIG confirm (`git diff -- '*Migrations*'` rỗng · top history vẫn Mig 68 · `sys.tables`=89) · `MenuKeys.All` không bị chạm (diff 1 hunk, không đụng dòng 156) · 4 approver hiện có `allowDel=0` (đúng — chưa ai tick). ❌ **CHƯA đo: endpoint mới sống chưa · smoke hồi-quy · bundle FE ×2 · verdict tổng**
|
||||
[x] cicd-verify ĐỢT 2 **XONG TRỌN @S156** — lead tự đo curl/sqlcmd (không giao lại cicd-monitor vì chính vai đó dừng giữa chừng). **PASS 6/6**: mục 4 endpoint 2/2→401 (control bịa 404) · mục 5 smoke 8/8 + **D3 giao-tập-ID = 0** (37 sống ⟂ 9 xóa) · mục 6 bundle rotate ×2 app, LM 14:41–14:42 trong cửa-sổ deploy, **4/4 byte-marker** · mục 7 verdict PASS. 🔴 3 caveat ghi trong file (envelope rỗng · KHÔNG chứng minh hồi-tố bundle riêng `4464a46` · 2 lỗi đo tự bắt). Trước đó (7.925 B, agent dừng) đã xác minh: **nhãn `Pe_*_Pending` "Duyệt"→"Đang duyệt" ĐỔI THẬT 2/2** (pre-deploy 14:08 còn `'Duyệt'` ⇒ chứng `labelBackfill` CHẠY trong đúng cửa-sổ deploy này) · NO-MIG confirm (`git diff -- '*Migrations*'` rỗng · top history vẫn Mig 68 · `sys.tables`=89) · `MenuKeys.All` không bị chạm (diff 1 hunk, không đụng dòng 156) · 4 approver hiện có `allowDel=0` (đúng — chưa ai tick). ❌ **CHƯA đo: endpoint mới sống chưa · smoke hồi-quy · bundle FE ×2 · verdict tổng**
|
||||
[x] ctx-curator @PAUSE-2 `SUA — 8 điểm`, lead nhận **CẢ 8** → MIND-2 đã chèn, `mind-check --session 7` = **dat=10 TRUOT=0**, 3 block, 28.010B/32.768B
|
||||
[x] 🔴 **Vai bắt lỗi QUY-TRÌNH của lead**: WAL bị lead nén 92→28 dòng GIỮA lượt kiểm, bản nén **đánh rơi 2 dòng `[ ] @MIND-2 mục C/D`** — mà `_context` FLOW + MIND-1 đều BẤT BIẾN nên MIND-2 là cửa DUY NHẤT. Chèn nguyên nháp = mất vĩnh viễn ở CẢ HAI sổ. Vai dùng `git show HEAD~1` làm chứng. ⇒ đã xử trọn trong MIND-2 mục C (2 số bất-biến) + mục D (3 nhãn)
|
||||
[ ] **Guard post-wave assertion mù 4 path hook** — chẩn-đoán đã chốt, thuốc đã chạy 1 lần thật (`git log --name-only origin/main..HEAD -- <path>` thay `git status`), nhưng **VÔ-GIA-CƯ**: 0 dòng trên bản-đồ ⇒ dựng dòng này để nó khỏi rơi (MIND-2 mục D nêu)
|
||||
@ -18,11 +18,14 @@ chain:
|
||||
[ ] ghi memory 3 datum: lớp lỗi "cơ-chế-đúng-dữ-liệu-không-có" ×4 · phép-đo-rỗng-nghĩa (`tsconfig.json` vs `tsconfig.app.json`) · chia-task-FE-theo-file
|
||||
[ ] B-governance: 22 FLAG chờ (42) canonRows · (43) carry con-trỏ-vs-slug · (44) END-line-thành-luật · (E2) harvest-curator 111,1% trần
|
||||
[ ] `.claude/agent-memory/reviewer/MEMORY.md` = 19.049 B **trên ngưỡng 17.1KB** — curate lượt sau
|
||||
[ ] 🚩 `ctx-verifier` @tiep-2: **3 ý MIND-1 §D rơi IM-LẶNG khỏi MIND-2** (chưa định-đoạt, 0 khai) — "vét-cạn vẫn hở ⇒ vòng KIỂM giữ nguyên" {đang-cãi} · "trần `mind_ctx_kb`=32KB" {treo-chờ-anh} · "`ring5-audit` build SE-form" {treo-chờ-anh} ⇒ MIND-3 phải nhận lại
|
||||
[ ] 🚩 **trần `_mind` 28.010/32.768 B = 85,5%, dư 4.758 B** mà block nhỏ nhất = 5.767 ⇒ **MIND-3 cỡ thường VƯỢT TRẦN** — phải nén MIND-1 (đủ 3 block nên nén hợp lệ) TRƯỚC khi chèn
|
||||
[ ] 🚩 `_mind` §E:107 ghi `sub-implementer-backend-1.md` "(file nay không còn)" = **SAI theo đĩa** (3.499 B, committed `9c0ac68`) — đính chính ở MIND-3; nó là chứng-nhân cho memory-datum `skeleton-ruột-rỗng`
|
||||
|
||||
[x] 🐛 **fix-nhanh UAT anh báo**: click "Danh sách" → menu sáng nhầm "Đã duyệt". Gốc: `phase` VỪA là bộ-lọc (nằm `TRANSIENT_QUERY_KEYS` từ fix 2026-05-08) VỪA vừa-mới thành danh-tính điều-hướng của "Đã duyệt" (đợt 2 hôm nay) ⇒ `queryMatches` strip cả 2 vế ⇒ 2 mục KHÔNG PHÂN BIỆT ĐƯỢC. Vá 2 chỗ ×2 app: transient chỉ bỏ qua khi đích KHÔNG ghim + route "Đã duyệt" thêm `&view=approved` (khoá định-danh, trang bỏ qua). Kiểm **4 ca đường đi**, giữ nguyên hành vi user-tự-lọc. Commit `f4494cf`, đã push
|
||||
[ ] cicd verify cho `f4494cf` — chưa chạy (bundle FE phải đổi hash ×2)
|
||||
[x] cicd verify cho `f4494cf` — **PASS**, run 531 success 5m41s (14:36:54→14:42:35); bundle prod hiện tại CHÍNH LÀ của commit này (LM 14:41–14:42) và chứa `view=approved` ×2 app. Đóng cùng lượt đo với đợt 2 (chung phép bundle)
|
||||
|
||||
next: chạy `/tiep` → **đo nốt 4 mục cicd đợt 2 còn thiếu** (endpoint `by-approver`+`/deleted` phải 401 KHÔNG 404 · smoke hồi-quy · bundle hash ×2 + byte-verify chuỗi `allowApproverDelete` · verdict) → chèn MIND-2 → bump STATUS + ghi memory.
|
||||
next: **bump `docs/STATUS.md`** (test 532→562 · Mig 67→68 · counter →30 · row In Progress/Recently Done cho S155/S156 — `ctx-verifier` 🚩4: §In Progress còn đứng ở S117) → ghi memory 3 datum → rồi mới tới nhóm 🚩 `_mind` (nén MIND-1 trước khi chèn MIND-3).
|
||||
|
||||
verify:
|
||||
tail -3 .claude/workflows/runs/2026-07-27-S155-pe-delete-approver/cicd-verify-dot2.md
|
||||
|
||||
@ -1,5 +1,10 @@
|
||||
# ctx-verifier Agent — Persistent Memory
|
||||
|
||||
- **S156 (2026-07-27) LƯỢT CHẠY ĐẦU ĐỜI — spawn-probe ALIVE, nấc `file-land`→CHẠY THẬT @`/tiep` §3-ter (L7 window 3):** verdict `CO-CO — 10 cờ`. Nấc-vàng học được: **4 khoản của mày ĐỀU ra cờ, nhưng cờ NẶNG nhất KHÔNG nằm ở khoản nào cả** — nó là **biến-thể NGƯỢC của khoản 3**: ý mục D **rơi IM-LẶNG** giữa 2 block (MIND-1→MIND-2 mất 3 ý, 0 khai) trong khi khoản 3 chỉ dạy soi "định-đoạt mà chưa đổi nhãn". ⇒ **LUÔN diff tập-ý D block-trên vs block-dưới**, đừng chỉ đọc block top (đúng vệt `absence_looks_like_clean`). Ca đắt nhất: ý "trần `mind_ctx_kb`=32KB" {treo-chờ-anh} rơi ĐÚNG lúc nó thành ràng-buộc thật — đo ra `_mind` **85,5% trần (28.010/32.768 B), dư 4.758 B < mọi block (5.767-7.536)** ⇒ MIND-3 sẽ vượt, luật buộc nén MIND-1.
|
||||
**2 nghề rẻ mà ăn tiền:** (a) **đo byte từng block** (`python` split theo `## MIND-`) — 1 lệnh ra cờ trần + số để lead quyết nén · (b) **chạm ĐĨA để bác chú-thích lớp mềm**: §E ghi `sub-implementer-backend-1.md` "(file này không còn)" mà `ls` ra **3.499 B, commit `9c0ac68`, ruột toàn `⏳`** ⇒ nhãn đúng = `skeleton-ruột-rỗng` CÒN SỐNG. Máy `mind-check` chấm `dat` vì nó chỉ soi path TỒN TẠI — **máy đúng, chữ sai**; khoản 4 phải soi CHÚ-THÍCH chứ không chỉ đọc verdict.
|
||||
**Bẫy bản-đồ 2 chiều (khoản 2):** `run.md` tail còn `[ ] Đ2-W1/W2/W3` dù WAL `[x]` đã deploy — **ledger run-folder tụt hậu so WAL**; và việc sinh SAU mốc block-top (commit `f4494cf`) thì `_mind` mù **có lý do chính đáng** — vẫn cờ, nhưng phải nói rõ "mù có lý do" kẻo lead đọc thành lỗi cẩu-thả.
|
||||
Tag `[s156, lan-chay-dau, spawn-probe-alive, y-D-roi-im-lang, do-byte-tung-block, tran-85-5, chu-thich-vs-dia, ledger-tut-hau]`
|
||||
|
||||
- **S153 (2026-07-26) SINH RA — vai-2 vòng Ctx `[seed on-behalf by lead @closeout M9 — mày CHƯA chạy lần nào; nguồn = đĩa]`:** sinh bởi **OWNER-VETO @S153** (anh chốt trực tiếp *"Build đủ 3 vai như hub"* qua AskUser = **owner chốt THẬT**, không phải delegated). Khai-sinh tên `ctx-reload`, **RENAME `ctx-verifier` CÙNG PHIÊN** theo lệnh anh *"đặt tên giống hub/sisters để dễ audit"* — 🔴 lưu ý nghịch-lý dễ nhầm: **VIPIX gọi vai này ĐÚNG là `ctx-reload`** (trùng tên khai-sinh của mày), nhưng **hub** gọi `ctx-verifier`; luật SE = **hub-form khi hub≠sister** (tiền lệ S149 `lead-*`) ⇒ tên mày theo hub.
|
||||
**Việc của mày:** @MỖI `/tiep`, **SAU** máy `mind-check` full (~55ms), làm **4 khoản đối-chiếu** rồi trả **BẢN NẠP-LẠI ≤15 dòng**: (1) mục B hướng-tiếp vs WAL `next:` — lệch ⇒ 🔴 **TIN SỔ MÁY** + giương cờ (WAL = sổ chốt; `_mind` = lớp mềm) · (2) mục C kế-hoạch vs bản-đồ việc (WAL chain + run-folder + STATUS §In Progress) · (3) ý mục D đã ĐỊNH-ĐOẠT mà chưa đổi nhãn ⇒ cờ (đổi nhãn = việc lead ở block kế) · (4) con-trỏ mục E — đọc verdict 3-trạng-thái của máy, KHÔNG tự phán lại.
|
||||
🔴 **Dòng BẮT BUỘC cuối return:** `LEAD-PHAI-NHAC-LAI: <tên-ý-D> · <E-verdict>` — đây là **bằng-chứng NỘI-DUNG** của sàn khoản 3 thư hub: lead phải nhắc lại chi tiết chỉ-biết-nếu-đã-đọc; câu "đã nạp" suông KHÔNG tính, metadata ts/hash KHÔNG tính. Thiếu dòng này = sàn khoản 3 thành khai suông.
|
||||
|
||||
@ -3,3 +3,4 @@ head-sha: 76488e88d7f682e33e14128bf3b97db3e7984118
|
||||
window-ordinal: 3
|
||||
jsonl-hint: D--Dropbox-CONG-VIEC-SOLUTION-SOLUTION-ERP/2089c49d-4a99-4f96-a614-451e0cbde182
|
||||
account-label: none
|
||||
ctx-verifier: CO-CO — 10 co (0 lech B-vs-next noi-dung; nang nhat = tran _mind 85,5% chan MIND-3)
|
||||
|
||||
@ -118,18 +118,130 @@ Tổng: `Permissions` 718 hàng / **68 MenuKey distinct** · `MenuItems` 105 hà
|
||||
vẫn `20260727033522_AddPeAllowApproverDelete` (Mig 68) · `sys.tables`(is_ms_shipped=0) = **89**.
|
||||
Đúng kỳ vọng "đợt 2 không có migration".
|
||||
|
||||
## 4. Endpoint mới — ĐANG ĐO
|
||||
---
|
||||
|
||||
(chưa có)
|
||||
> 🔻 **Mục 4-7 đo ở `/tiep` @S156 (2026-07-27 ~15:35), do LEAD tự đo bằng curl/sqlcmd** — không giao lại
|
||||
> `cicd-monitor` vì chính vai đó đã dừng giữa chừng ở file này lúc 14:14 (VERIFY-lane, khuôn `#53`).
|
||||
> 🔴 **Đổi ngữ cảnh so mục 0-3:** sau `4464a46` còn một deploy nữa — **`f4494cf`** (fix menu sáng nhầm),
|
||||
> run **531** `14:36:54 → 14:42:35 = 5m41s status=success`. Nên **bundle hiện tại là của `f4494cf`**,
|
||||
> đã ĐÈ bundle của `4464a46`. Xem caveat B ở mục 7.
|
||||
|
||||
## 5. Smoke chống hồi quy — ĐANG ĐO
|
||||
## 4. Endpoint mới — ✅ PASS (401, KHÔNG phải 404)
|
||||
|
||||
(chưa có)
|
||||
Route thật (`PurchaseEvaluationsController.cs:177,187`): `DELETE {id:guid}/by-approver` · `GET deleted`.
|
||||
|
||||
## 6. Bundle FE ×2 — ĐANG ĐO
|
||||
```
|
||||
DELETE /api/purchase-evaluations/{guid}/by-approver -> 401 ← endpoint MỚI #1
|
||||
GET /api/purchase-evaluations/deleted -> 401 ← endpoint MỚI #2
|
||||
DELETE /api/purchase-evaluations/{guid} -> 401 (control: xóa nháp, có từ trước)
|
||||
--- control: route chắc chắn KHÔNG tồn tại ---
|
||||
DELETE /api/purchase-evaluations/{guid}/by-approver-nonexistent -> 404
|
||||
GET /api/purchase-evaluations/deleted-nonexistent -> 404
|
||||
```
|
||||
|
||||
(chưa có)
|
||||
→ 2 route mới **401** = đã lên prod + `[Authorize]` chặn đúng. Route bịa trả **404** ⟹ 404 đúng là tín-hiệu
|
||||
"route chưa lên", nên **401 ở route thật là CÓ NGHĨA** — discriminator sạch, không phải may.
|
||||
|
||||
## 7. Verdict — ĐANG ĐO
|
||||
## 5. Smoke chống hồi quy — ✅ PASS 8/8 + D3 anti-regression PASS
|
||||
|
||||
Bearer admin (`POST /api/auth/login` → 200, `accessToken` 468 ký tự).
|
||||
|
||||
```
|
||||
PE /api/purchase-evaluations?page=1&pageSize=5 HTTP 200 bytes=5103 InvalidCol=False
|
||||
HopDong /api/contracts?page=1&pageSize=5 HTTP 200 bytes=91 InvalidCol=False
|
||||
DeXuat /api/proposals?page=1&pageSize=5 HTTP 200 bytes=91 InvalidCol=False
|
||||
NghiPhep /api/leave-requests?page=1&pageSize=5 HTTP 200 bytes=91 InvalidCol=False
|
||||
TangCa /api/ot-requests?page=1&pageSize=5 HTTP 200 bytes=91 InvalidCol=False
|
||||
CongTac /api/travel-requests?page=1&pageSize=5 HTTP 200 bytes=91 InvalidCol=False
|
||||
DatXe /api/vehicle-bookings?page=1&pageSize=5 HTTP 200 bytes=91 InvalidCol=False
|
||||
AwV2-list /api/approval-workflows-v2 HTTP 200 bytes=41230 InvalidCol=False
|
||||
```
|
||||
⇒ **8/8 HTTP 200, 0/8 có `Invalid column name`**. (Caveat giữ nguyên như đợt 1: 6 module Văn-phòng-số trả
|
||||
91 B = envelope rỗng ⇒ chỉ chứng minh query **không ném**, chưa chứng minh join sâu.)
|
||||
|
||||
**Model ⟷ DB đồng bộ:** `AwV2` materialize `allowApproverDelete` = **54** · `allowApproverFinalize` = **54**
|
||||
(khớp đúng số đợt 1) ⇒ cột mới round-trip qua EF từ DB thật.
|
||||
|
||||
### 🔑 D3 anti-regression — phiếu xóa mềm KHÔNG rò rỉ sang list sống
|
||||
|
||||
🔴 **2 phép đo ĐẦU TIÊN của lead là RỖNG NGHĨA, phải vứt** — đo `item.isDeleted` trên cả 2 endpoint,
|
||||
ra "0 rò rỉ" + "9 item không-deleted lọt vào". **Cả hai vô nghĩa**: `isDeleted` **KHÔNG có trong DTO**
|
||||
(đã kiểm: key-set 29 field, `'isDeleted' in item` = `False` ở CẢ HAI). Một cái trông như PASS, một cái
|
||||
trông như FAIL — **đều là hư không**. Đúng lớp lỗi *phép-đo-rỗng-nghĩa* mà chính phiên này vừa ghi bài học.
|
||||
|
||||
Phép ĐÚNG = **giao tập ID**, độc lập hoàn toàn với field DTO:
|
||||
|
||||
```
|
||||
list thường = 37 phiếu (totalCount=37)
|
||||
/deleted = 9 phiếu (totalCount=9)
|
||||
GIAO TẬP = 0 ← phiếu đã xóa KHÔNG hiện ở list sống
|
||||
```
|
||||
→ **8a PASS** (`IgnoreQueryFilters()` có kèm `.Where(x => x.IsDeleted)`, không "gỡ filter rồi liệt kê tất").
|
||||
→ **8c(a) PASS** (list "Đã xóa" không chứa phiếu sống). Hai tập phân hoạch sạch.
|
||||
|
||||
**KHÔNG phải lỗi (đã soi, kết luận là cố ý):** `/deleted` dùng **CHUNG DTO** với list sống ⇒ không có
|
||||
`deletedAt`/`deletedBy`. FE khai thẳng ở `PurchaseEvaluationsListPage.tsx:557-561` và hiển thị `updatedAt`
|
||||
với nhãn **`🗑 xóa ≈`**, **cố ý bỏ trống tên người xóa thay vì đoán**. Spec mục 6 chỉ đòi "CHỈ XEM",
|
||||
không đòi cột ai/khi-nào ⇒ **không phải lớp "DTO thiếu field FE đang đọc"** (H1 đợt 2), vì FE biết và đã
|
||||
xử lý trung thực. Ghi lại để lần sau khỏi báo động nhầm.
|
||||
|
||||
## 6. Bundle FE ×2 — ✅ PASS
|
||||
|
||||
```
|
||||
== admin ==
|
||||
JS pre(14:07)=CiUBEEJr now=BK8w3QxU ROTATED
|
||||
CSS pre(14:07)=DX5ew0wg now=DiNJjaoo ROTATED
|
||||
real-js index-BK8w3QxU.js HTTP 200 size=1674598 ct=application/javascript LM=Mon, 27 Jul 2026 07:41:15 GMT
|
||||
FAKE-ctl HTTP 200 size=900 ct=text/html
|
||||
== eoffice ==
|
||||
JS pre(14:07)=DFh7GK0t now=DYnxSI0T ROTATED
|
||||
CSS pre(14:07)=BHsBUA8e now=BRCvEHvC ROTATED
|
||||
real-js index-DYnxSI0T.js HTTP 200 size=1574829 ct=application/javascript LM=Mon, 27 Jul 2026 07:42:10 GMT
|
||||
FAKE-ctl HTTP 200 size=876 ct=text/html
|
||||
```
|
||||
|
||||
- **JS + CSS ROTATE cả 2 app** so baseline pre-đợt-2 (14:07:54).
|
||||
- `Last-Modified` **07:41:15 / 07:42:10 GMT = 14:41:15 / 14:42:10 +07** → nằm **TRONG cửa-sổ deploy run 531
|
||||
(`f4494cf`, 14:36:54–14:42:35)** ⇒ ship-proof thật, không phải hash-delta suông.
|
||||
- Bẫy SPA-fallback loại sạch: hash bịa cũng trả 200 nhưng **`text/html` + 900/876 B** ⟹ file thật là JS thật.
|
||||
|
||||
### Byte-verify #77 — mã tính-năng CÓ THẬT trong bundle prod (cộng dồn 3 commit)
|
||||
|
||||
| chuỗi | nguồn | admin | eoffice |
|
||||
|---|---|---|---|
|
||||
| `allowApproverDelete` | `b1bae77` đợt 1 (cờ F6) | 8 | 2 |
|
||||
| `by-approver` | `4464a46` đợt 2 (endpoint xóa) | 1 | 1 |
|
||||
| `deleted=1` | `4464a46` đợt 2 (màn "Đã xóa") | 1 | 1 |
|
||||
| `view=approved` | `f4494cf` (fix menu sáng nhầm) | 1 | 1 |
|
||||
|
||||
→ **4/4 marker có mặt trong CẢ HAI bundle** ⟹ mã của **cả ba** commit đang sống trên prod.
|
||||
|
||||
## 7. Verdict — ✅ **CICD PASS 6/6**
|
||||
|
||||
| # | Hạng mục | Kết quả |
|
||||
|---|---|---|
|
||||
| 1 | Gitea run + test gate | ✅ run 530 `4464a46` success 5m47s · **562 PASS/0 FAIL** trích từ log CI |
|
||||
| 2 | Menu prod (trọng-tâm) | ✅ 4 key mới + `Pending` "Duyệt"→"Đang duyệt" 2/2, có mốc pre-deploy làm chứng |
|
||||
| 3 | Permission seed | ✅ 4 key mới × 13/13 role, cả 2 danh sách seed đều ăn · NO-MIG confirm |
|
||||
| 4 | Endpoint mới | ✅ 2/2 route → 401; control bịa → 404 |
|
||||
| 5 | Smoke + D3 anti-regression | ✅ 8/8 · giao tập ID = 0 · AwV2 cột mới ×54 |
|
||||
| 6 | Bundle FE ×2 | ✅ rotate ×2 app, LM trong cửa-sổ deploy, 4/4 byte-marker |
|
||||
|
||||
**Kèm: cicd cho `f4494cf` cũng ĐẠT** — run 531 success 5m41s; bundle hiện tại chính là của commit này
|
||||
(LM 14:41–14:42) và chứa `view=approved`. Hai mục nợ trong WAL (`[!]` đợt 2 + `[ ]` `f4494cf`) đóng **cùng
|
||||
một lượt đo** vì dùng chung phép bundle.
|
||||
|
||||
### ⚠️ 3 caveat khai thẳng (đừng đọc thành "đã kín")
|
||||
|
||||
- **A. 6 module Văn-phòng-số trả envelope rỗng 91 B** ⇒ chỉ chứng minh query không ném, **chưa** chứng minh
|
||||
join sâu. Hai phép mạnh thật là PE (5.103 B có dữ-liệu) và AwV2 (41.230 B).
|
||||
- **B. 🔴 Không thể chứng minh HỒI-TỐ rằng bundle của riêng `4464a46` đã rotate lúc 14:12** — không ai chụp
|
||||
snapshot tại thời điểm đó, và `f4494cf` đã đè lên 30 phút sau. Cái **chứng minh được** là: mã FE của đợt 2
|
||||
(`by-approver`, `deleted=1`) **đang sống trong bundle prod hiện tại**. Về vận-hành đó mới là điều cần biết,
|
||||
nhưng phát biểu phải đúng phạm vi — không được nói "bundle đợt 2 đã verify rotate".
|
||||
- **C. Lead tự bắt 2 lỗi đo của chính mình trong lượt này**: (i) `item.isDeleted` — field không tồn tại,
|
||||
cả PASS-giả lẫn FAIL-giả; (ii) `item.code` — tên thật là `maPhieu`, nên `/deleted` trông như trả rỗng.
|
||||
Cả hai lộ ra vì **hỏi lại "phép đo này có đo gì không"** trước khi tin con số.
|
||||
|
||||
<!-- END · TOTAL=6 HANG-MUC · VERDICT=PASS -->
|
||||
|
||||
(chưa có)
|
||||
|
||||
@ -166,6 +166,9 @@ Mọi tên dưới đây là **CANONICAL**. BE phải hiện thực ĐÚNG tên
|
||||
- **19**: `PeWorkflowPanel.tsx` phải giữ **md5 giống nhau ×2 app** sau khi sửa
|
||||
- Nhân bản: menu sinh trong `foreach PurchaseEvaluationTypeCodes` ⇒ mỗi mục mới **× số loại phiếu**
|
||||
|
||||
- [ ] Đ2-W1 — BE (xóa-by-approver + list deleted + menu seed + changelog)
|
||||
- [ ] Đ2-W2 — FE (nút xóa + 3 mục menu + màn Đã xóa)
|
||||
- [ ] Đ2-W3 — test + reviewer → deploy
|
||||
- [x] Đ2-W1 — BE (xóa-by-approver + list deleted + menu seed + changelog)
|
||||
- [x] Đ2-W2 — FE (nút xóa + 3 mục menu + màn Đã xóa)
|
||||
- [x] Đ2-W3 — test + reviewer → deploy — `reviewer-diff-dot2.md` FAIL 12 FLAG (H1 DTO thiếu field) → lead vá → deploy `4464a46`
|
||||
|
||||
> 🔧 Sau đợt 2, một fix-nhanh UAT nữa đã đẩy: **`f4494cf`** — click "Danh sách" lại highlight "Đã duyệt" (`phase` vừa là bộ-lọc vừa là danh-tính điều-hướng ⇒ `queryMatches` strip cả 2 vế). Vá 2 chỗ ×2 app. **cicd verify cho commit này CHƯA chạy.**
|
||||
> 🔧 Ledger này tụt hậu so WAL tới `/tiep` @S156 mới đối-chứng ra (`ctx-verifier` 🚩3) — 3 dòng trên đã `[x]` từ lúc `4464a46` lên prod.
|
||||
|
||||
Reference in New Issue
Block a user