All checks were successful
Deploy SOLUTION_ERP / build-deploy (push) Successful in 5m26s
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>
4.8 KiB
4.8 KiB
adap-report — 2026-07-17-Governance-chuan-hoa-stamp-decode
SE (SOLUTION_ERP) · wave adap đợt-9/10 (S141–S142) · 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.md9 dòng (bước 4b) +.claude/commands/send-email.md4 dòng (6c) — pin mẫu rút declaredcontent_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.py55 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
6239dd40exit 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.pytrê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+FEFFsống sót đầu chuỗi ⇒ConvertFrom-Jsonchết ⇒ detector cắm cờcounter-unparseabletrê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 để.ps1giữ 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.pylà 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 shawal:-commit TIỀN-closeout (1a0fa59/a458102/96ab2679). Closeout-squash gộp chúng vào2757e41⇒ các sha đó thành dangling:cat-file -tvẫn racommit(sống nhờ reflog LOCAL) nhưngmerge-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 trong2757e41⇒ chết con-trỏ, không chết việc. Đã re-anchor toàn bộ sang2757e41. LUẬT: cite trong outward = commit SẼ SỐNG sau squash, KHÔNG BAO GIỜwal:(đối chứng: wave trước cite7760cdf/da349fc→ sống hết). - ✅ Đã push —
2757e41+3f4310ftrênorigin/main(thay câu khai chưa-đẩy ở bản đầu).