Files
solution-erp/docs/governance/adap-reports/2026-07-17-Governance-chuan-hoa-stamp-decode.md
pqhuy1987 36cefcca62
All checks were successful
Deploy SOLUTION_ERP / build-deploy (push) Successful in 5m26s
[CLAUDE] Docs: vá 9 finding audit S143 + mở enum gap-incident-unrecorded
Audit 3 lane (reviewer FAIL 1C/4M/4m/1nit + 2 vai H24 = 6 FLAG), lead tự
re-đo từng finding trước khi vá.

CRITICAL/MAJOR:
- Re-anchor 5 adap-report: sha wal: tiền-closeout (1a0fa59/a458102/96ab2679)
  dangling sau squash -> hub clone không resolve nổi. Đổi sang 2757e41.
  LUẬT: cite outward = commit SẼ SỐNG sau squash, không bao giờ wal:.
- Đính chính claim OK-reachable: phép đo tự huỷ trong cùng phiên (squash lật
  sang squash-benign). Sự thật mạnh hơn: cả 2 nhánh lành đã chạy runtime.
- TRIPLE 17/17/17 chọn enum dễ: README:225 (tự xưng "ĐỦ roster") còn 14 +
  "4 monitor"; README:27 ("Roster THẬT") còn 14. Cả 2 vá -> 17/7.
- TOTAL 46 "== baseline" sai: baseline ghi trong repo là 45. Tách claim-DELTA
  (bền) khỏi claim-TUYỆT-ĐỐI (phải neo commit+thời-điểm).

FLAG view-residual-asym: STATUS:450 + README:190 còn khai "NO Write/Edit" như
cơ-chế chặn -> sửa thành tuyên-bố ý-định (runtime vẫn cấp, 9/9 vai; nhân-chứng
reviewer đã Write+Edit thật).

FLAG gap-carry-dropped: HANDOFF carry 13 -> 14, trả [carry:session-model-adopt].
FLAG gap-decision-sunk: 3 mục "Chờ-anh" chìm 2 nhãn phiên -> lên NEXT anh (10)(11)(12).

Enum flag_classes 10 -> 11: +gap-incident-unrecorded (anh duyệt). Vai
lead-omission từ chối tự chế class và escalate đúng luật CLOSED-enum.

Bài học acceptance: AC4 grep theo SỐ nên 2 site liệt-kê-TÊN lọt lưới.
Lần sau đếm PHẦN TỬ rồi so canonical, đừng so hình-dạng chuỗi.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-07-22 13:40:49 +07:00

31 lines
4.8 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

# adap-report — 2026-07-17-Governance-chuan-hoa-stamp-decode
> SE (SOLUTION_ERP) · wave adap đợt-9/10 (S141S142) · run vòng-2 `.claude/workflows/runs/2026-07-22-S142-adap-9-10-vong-2/` lane W-B (hạng mục B5).
## 1. id-broadcast
`2026-07-17-Governance-chuan-hoa-stamp-decode` (type **update**; `content_sha256` `6239dd403792…`, re-verify tươi `stamp_verify.py` **exit 0** @S143).
## 2. nấc G-011
**executed** — cả (A) đầu-đọc khoan-dung 3 dạng lẫn (B) đọc byte-safe đã nằm trong repo và **đã chạy thật 7/7** trên chính bộ thư đợt này.
## 3. evidence (đo thật)
- **(A) Đầu-đọc khoan-dung** (commit `2757e41`): `.claude/commands/check-email.md` **9 dòng** (bước 4b) + `.claude/commands/send-email.md` **4 dòng** (6c) — pin mẫu rút declared `content_sha256:\s*"?([0-9a-fA-F]{8,64})"?`, nhận cả 3 dạng (có-ngoặc · không-ngoặc · rút-gọn ≥8-hex). Grep `{8,64}` hiện ở **CẢ 2** command.
- **🔴 CẤM quote-strict** ghi thẳng vào cả 2 file: mẫu `([0-9a-fA-F]+)` sẽ whiff hash-có-ngoặc → **false-tamper**. Đây không phải lo xa — S141 **suýt cắm cờ giả-mạo oan 3/3**.
- **Port script** (commit `2757e41`): `scripts/stamp_verify.py` **55 dòng**, mirror verbatim từ `AI_INFRA/scripts/stamp_verify.py`, có header-note *"mirror-of AI_INFRA — re-pull khi hub đổi §N canon"*. Cả 2 command ƯU TIÊN gọi script, regex-pin làm đường lui.
- **Verify 3-dạng** (spec [n7]): thư quoted thật `6239dd40` **exit 0** + 2 file synthetic tạm (frontmatter hash **không-ngoặc** · hash **rút-gọn 8-hex**) đều verify OK rồi xoá.
- **Re-đo tươi @S143 — 7/7:** chạy `python scripts/stamp_verify.py` trên **toàn bộ 7 thư** đợt-9/10 ⇒ **exit 0 cả 7**, gồm 2 thư hash không-ngoặc (`9cd1a486`, `58e28bae`) và 5 thư hash có-ngoặc. Đây là bằng-chứng khoan-dung ăn thật, không phải happy-path 1 mẫu.
## 4. tailored-gì + skip-gì-vì-sao
- **Tailored:** hub mô-tả nguyên-tắc "ghi MỘT cách · đọc BA cách"; SE hiện-thực bằng **2 tầng**: script `stamp_verify.py` (chính) + regex-pin trong command (đường lui khi python vắng). Giữ đúng function-floor, thêm tầng dự-phòng cho môi-trường Windows/PowerShell của SE.
- **Tailored (B) byte-safe:** hub ghim "đọc bytes rồi giải UTF-8" để né bug shell 5.1 giải UTF-8-không-BOM thành ANSI (E-010 của SE, đã có sẵn trong error-ledger). SE áp đúng — **và phát hiện nó đẻ ra lỗi kế tiếp**, xem §5.
- **Skip:** 0 điểm sàn nào skip.
## 5. honest-caveat
- 🔴 **§M — phản-hồi ngược lên hub: cách đọc byte-safe hub ghim VẪN HỎNG ở bước sau, SE đã vấp thật.** `[Text.Encoding]::UTF8.GetString([IO.File]::ReadAllBytes($p))` né đúng bug ANSI — **nhưng KHÔNG nuốt BOM**: `U+FEFF` sống sót đầu chuỗi ⇒ `ConvertFrom-Json` **chết** ⇒ detector cắm cờ `counter-unparseable` trên một file JSON **hoàn toàn hợp-lệ**. Tức là vá failure-mode A (chữ hỏng → hash sai) **mở ra failure-mode B** (BOM sống → parse chết), và triệu-chứng của B *trông giống* "detector có răng" nên rất dễ ship một **dương-giả**.
**Fix SE đang dùng:** `.TrimStart([char]0xFEFF)` — viết bằng code-point để `.ps1` giữ thuần ASCII (gotcha #30 của SE).
**Đề-xuất KHUNG:** nếu hub giữ khuyến-nghị byte-safe, nên ghim **kèm bước strip BOM**, vì mọi dự-án đọc file JSON/YAML sau đó đều sẽ vấp đúng chỗ này.
*(Bằng-chứng: bắt được là nhờ fault-inject chứ không phải happy-path — chạy happy-path sẽ thấy "có flag = có răng" và ship luôn.)*
- **`stamp_verify.py` là bản mirror**, không phải nguồn: hub đổi §N canon mà SE quên re-pull thì 2 bên lệch **im lặng** — hiện **không có máy nào canh drift** giữa 2 bản, chỉ có header-note nhắc người.
- 🔴 **Neo bằng-chứng ĐÃ ĐỔI @S143 (reviewer-gate, class `bằng-chứng-tự-huỷ-sau-squash`):** bản đầu cite sha `wal:`-commit TIỀN-closeout (`1a0fa59`/`a458102`/`96ab2679`). Closeout-squash gộp chúng vào `2757e41` ⇒ các sha đó thành **dangling**: `cat-file -t` vẫn ra `commit` (sống nhờ reflog LOCAL) nhưng `merge-base --is-ancestor <sha> origin/main` = **exit 1****hub clone repo về sẽ KHÔNG resolve nổi**. Nội-dung thì nguyên vẹn trong `2757e41`**chết con-trỏ, không chết việc**. Đã re-anchor toàn bộ sang `2757e41`. **LUẬT:** cite trong outward = commit **SẼ SỐNG sau squash**, KHÔNG BAO GIỜ `wal:` (đối chứng: wave trước cite `7760cdf`/`da349fc` → sống hết).
-**Đã push**`2757e41` + `3f4310f` trên `origin/main` (thay câu khai chưa-đẩy ở bản đầu).