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

4.8 KiB
Raw Blame History

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 1hub clone repo về sẽ KHÔNG resolve nổi. Nội-dung thì nguyên vẹn trong 2757e41chế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).
  • Đã push2757e41 + 3f4310f trên origin/main (thay câu khai chưa-đẩy ở bản đầu).