[CLAUDE] Docs: S159-S160 closeout arc-2 "Tong quan quy trinh" - STATUS/HANDOFF arc-2 + gotcha #84 revoker-2-chieu + session-log + tick S160
- STATUS CURRENT: +arc-2 5 dot (bo ten 4-GD chot + rui-ro-co-y-thuc verbatim + revoker) + baseline moi (menu 142, bundle D0sXA0fe/Y6dW_5CM, gate 562) + bo claim "0 prod-code" + Gotchas row 84
- HANDOFF: khoi ARC-2 + risk verbatim + luat khong-SQL-tay-cho-menu + va stale _mind 37,9->69,2%
- gotchas: +#84 revoker-2-chieu (data tay prod bi code-path ungated @restart dao nguoc im lang; khuon 3-chan-kieng; lien-quan #75/#76/#82)
- session-log S159: 2 nua phien + 5 dot arc-2 + errata + PARK + chot dau viec (anh @S160, 7 slot treo)
- counter: tick S160 CLEAN 33->34
(spec KHKK note W1 + diary designer/cicd + _tiep-1 da vao wal-flush 57a4155 theo 4-path hook)
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
This commit is contained in:
@ -1366,6 +1366,14 @@ for h in resp.points: # ← .points không phải iterable trực tiếp
|
||||
|
||||
**Fix:** (1) Outward artifact mời-reproduce: trích **bảng per-lane theo run-id** (bất-biến), KHÔNG trích COUNTS tổng; buộc trích tổng → scope rõ "cumulative cả phiên". (2) Internal doc đông-cứng số tổng = ĐÚNG point-in-time nhưng CẤM thừa-kế nguyên-văn ra thư. (3) Biến-thể số-đếm của bài "acceptance literal tự-lão-hoá" (S121). Reviewer-gate G-015 bắt; em-main-solo sót.
|
||||
|
||||
### 84. Sửa data tay trên prod bị code-path ungated @restart ĐẢO NGƯỢC im lặng — revoker 2 chiều (Session 159)
|
||||
|
||||
**Triệu chứng:** S159 đợt-2 grant menu 4-GĐ bằng SQL tay trên prod (494 row canread) → deploy kế restart pool → cicd mục-9 đo lại chỉ còn **47/494** (Admin 38 + Procurement 9): `RevokeTemporarilyHiddenModulesAsync` (nhánh ẩn-module [S92], **ungated, chạy MỌI restart**) lật 447 row về `false`. Grant "thành công" sống đúng tới lần restart kế — không lỗi, không log phía người sửa.
|
||||
|
||||
**Cơ chế — 2 CHIỀU của cùng một lớp lỗi:** DbInitializer chạy mỗi boot có cả 2 loại code-path ngược nhau: (a) **seeder grant `skip-existing`** — chỉ insert row THIẾU, KHÔNG nâng row `false` sẵn có ⇒ xóa/hạ tay sẽ KHÔNG được seed lại đúng kỳ vọng "seeder tự chữa" (mặt này là gotcha #75/#76); (b) **revoker ungated** — lật XUỐNG mọi row khớp điều kiện ⇒ grant tay bị nuốt @restart (mặt mới S159). Hệ quả chung: **MỌI thay đổi permission/menu tay trên prod đều tạm thời nếu tồn tại code-path @startup theo hướng ngược** — phải grep DbInitializer cả 2 hướng (Seed* VÀ Revoke*) trước khi tin thao tác tay là bền.
|
||||
|
||||
**Fix:** (1) Đổi trạng thái menu/permission = **code-first qua seeder + deploy**, KHÔNG SQL tay (S159 đợt-3 gỡ nhánh [S92] khỏi revoker rồi mới regrant). (2) Muốn chứng "fix bền": khuôn **3-chân-kiềng** — (i) chứng restart THẬT (`w3wp` StartTime in-window + dòng đầu log mới), (ii) đo chỉ-số đích SAU restart, (iii) **control ÂM chứng checker còn sống** (`Hrm/Off/Personal` non-Admin vẫn =0 ⇒ revoker không bị vô hiệu hoá cả hàm — thiếu vế này thì "fix" bằng cách xoá luôn revoker cũng xanh y hệt). (3) Khoá regression bằng test 2-vế `StillHiddenKeys` (false) ∧ `ReopenedKeys` (true) — re-add nhánh là CI đỏ. (4) Comment quanh seeder nêu **LUẬT + lệnh grep tự-kiểm**, CẤM ghi số-đếm (số thành nợ tự-lan — 2 lần lệch trong 1 ngày @S159). Liên-quan: #75/#76 (chiều seeder re-add), #51 (seed gate), #82 (menu-flag ⟂ API-authz).
|
||||
|
||||
---
|
||||
|
||||
## Checklist debug bug mới
|
||||
|
||||
Reference in New Issue
Block a user