[CLAUDE] Docs: S172 closeout — verdict 998ea55 PASS + bookend 5 vòng/11 sub + vá stale
Some checks failed
Deploy SOLUTION_ERP / build-deploy (push) Has been cancelled
Some checks failed
Deploy SOLUTION_ERP / build-deploy (push) Has been cancelled
Verdict sản phẩm: `998ea55` (KHKK 3-panel mirror Duyệt NCC) = PASS. Test-gate #447 644/644 Failed 0 khớp baseline tách-phần Δ0 · bundle 4/4 rotate khớp log CI tới byte · 2 endpoint MỚI 401 · mig repo 71 = prod 71 set-diff 0/0 hai chiều, tables 97 · smoke 8/8. Không rollback, prod khoẻ. Chân #44/#85 đóng bằng đo — nấc cũ "credential UAT chết" SAI (tra nhầm account đời cũ; bộ sống ở HANDOFF slot 64). Phạm vi = 2 tổ-hợp vai (Drafter+Procurement · CostControl+DeptManager); CHƯA loại nhánh vai thường khác vẫn 403 — siết 5 site/3 file sau ring2 ESCALATE-1. Bookend-close 5 vòng / 11 sub → runs/2026-08-05-S172-bookend-close/: H1 DRIFT 7 · H2 GATE-HOLD 6 · lead-stale 9 FLAG(SÀN)+1 ESCALATE · lead-gap 8 FLAG(3 HIGH) · ring1 67/69 · ring2 ĐẠT 17/17 · trio MIXED → 2 action/15 bác → MIXED-PASS 50/59 · ctx-audit TRUOT 3 FLAG. Vá stale @closeout: - STATUS:479 bundle hash (stale 2 phiên, lần 2 cùng ô) → Ajv-MaCz/YsXRkBSR - STATUS:6 counter 42→46, deep 2/15→6/15; Recently Done S171-S172 - HANDOFF segment @S172: E-7 + 5 acceptance có nhà (trước đó 0 hit/6 sổ bền), carry re-stamp sau 4 phiên bỏ, 4 site neo tuyệt đối (1 site sai DẤU), slot 67-72 - skills/README ×2 ổ số cứng nằm cạnh chính con trỏ B1 - gotcha #87 (mã pre-auth 411/415 trả lời sai câu hỏi authz) - run.md S171 hết mồ côi (0→4 hit) · 8 dir rỗng mis-land đã dọn - MIND-3 neo xuất xứ sai 2 trường (ts tương lai + HEAD stale) — ctx-audit F-1 §L.c completeness-gate: vòng 4/5 (V4 không-nhịp) | phép ĐẠT 2 / TRƯỢT 2 / vacuous 0. 2 TRƯỢT cùng một bệnh: S169·S170·S171 chạy xong mà 0 session-log durable. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
This commit is contained in:
@ -1386,6 +1386,18 @@ for h in resp.points: # ← .points không phải iterable trực tiếp
|
||||
|
||||
**Đo trước khi tin:** Dev DB 13/13 role đều có `Contracts=1 ∧ KeHoachKyKet=1` ⇒ ca này **chưa lộ**; nó chờ đúng 1 lần chỉnh ma-trận quyền. Lớp lỗi "chưa vỡ vì dữ-liệu hiện tại may mắn" phải vá ngay, không đợi triệu chứng.
|
||||
|
||||
### 87. Mã lỗi PRE-AUTH (415/411) trả lời SAI câu hỏi authz — phải re-probe đúng dạng body (Session 172)
|
||||
|
||||
**Triệu chứng.** Probe endpoint MỚI để kiểm quyền: `POST /api/contract-signing-plans/{id}/approval-attachments` với `Content-Type: application/json` ⇒ **415**. Đọc thành *"route tồn tại nhưng authz chưa wire"* hoặc *"deploy hỏng"* — **cả hai đều sai**.
|
||||
|
||||
**Cơ chế.** Endpoint nhận **multipart** (upload file). Content-type mismatch bị loại ở tầng **action-selection**, tức **TRƯỚC** authorization filter ⇒ request **chưa bao giờ chạm** `[Authorize(Policy = …)]`. Cùng cơ chế với **411 Length Required** của IIS ở `POST /hubs/notifications/negotiate` bodyless (họ hàng #25). Gửi đúng multipart ⇒ **401**; kèm bearer ⇒ **400 liệt tên field** (validator MỚI đã chạy).
|
||||
|
||||
**Luật.** Mã pre-auth (**411 · 415**) là **vô nghĩa cho câu hỏi authz** — nó chỉ chứng *route tồn tại*. Muốn đọc được authz thì **re-probe đúng dạng body**, rồi mới tin 401/403.
|
||||
|
||||
**Bonus — wire-proof mạnh hơn 401.** `401` chỉ chứng route + có gác. **`400` mà thân lỗi GỌI ĐÚNG TÊN FIELD** của command MỚI (kèm whitelist đuôi file) chứng end-to-end **Api → Application** rằng **binary mới đang phục vụ** — mạnh hơn cả đo `w3wp` StartTime. Dùng làm ship-proof khi hash-delta không đủ.
|
||||
|
||||
⚠️ **Kèm bẫy phạm-vi (cùng phiên):** probe bằng **2 tài-khoản test** rồi kết luận *"role thường có đủ quyền"* là **suy-luận vượt mẫu** — cả 2 đều mang vai cấp riêng, không cái nào là user trần ⇒ nhánh *"vai thường khác vẫn 403"* (chính hình dạng gốc của **#85**) **chưa bị loại**. Phát biểu kết luận **đúng bằng tập đã đo**.
|
||||
|
||||
### 86. Hai push sát nhau — Gitea auto-CANCEL run đầu: CANCELLED ≠ FAIL, verifier đọc run CUỐI của range (Session 167)
|
||||
|
||||
**Triệu chứng:** K7 `aaed699` push xong, governance `628132c` push sát sau. Run Gitea Actions của `aaed699` chuyển **CANCELLED** → tra run theo commit thấy như deploy fail, trong khi **K7 ĐÃ LIVE**: ship qua run **#442** của push sau (checkout HEAD ⊇ K7). cicd-K7 verify artifact-level xác nhận: bundle rotate ×2 app + marker 8/8 + seeder log `"0 added + 2 upgraded"` + CanCreate 1→3 — live sạch.
|
||||
@ -1431,3 +1443,4 @@ for h in resp.points: # ← .points không phải iterable trực tiếp
|
||||
32. Nếu thao tác theo-email/code trên data prod (lock/seed/migrate) trả 0 row affected → DUMP bảng env đích trước khi nghi code — population Dev ≠ prod (seed silent-fail `IdentityResult` không throw) (#60)
|
||||
33. Nếu thêm enum value vào entity DÙNG-CHUNG mà UI/guard phân-loại sai (file lẫn section / false-pass guard) → grep MỌI predicate field-proxy (`supplierId===null`...) loại value mới + build-verify TỪNG app riêng (#71)
|
||||
34. Nếu Gitea Actions run CANCELLED ngay sau khi push 2 commit sát nhau → auto-cancel cùng-branch: đọc run CUỐI của range + verify artifact-level (bundle/marker/seeder-log), KHÔNG đọc CANCELLED thành deploy-fail; side-effect @startup chỉ chạy 1 lần cho cả cụm (#86)
|
||||
35. Nếu probe endpoint để hỏi **authz** mà nhận **415/411** → đó là mã **PRE-AUTH**, vô nghĩa cho câu hỏi authz: request bị loại ở tầng **action-selection / IIS** TRƯỚC authorization filter. Re-probe đúng dạng body (multipart cho endpoint upload; có body cho SignalR negotiate) rồi mới đọc 401/403 (#87)
|
||||
|
||||
Reference in New Issue
Block a user