Nút đính kèm 'Bảng so sánh giá' (GeneralAttachmentsSection) trước gate theo readOnly MÀN HÌNH: màn Danh sách mở phiếu readOnly=true nên ẩn nút xóa/tải ở MỌI phase, kể cả Trả lại (TraLai=98) vốn đã nằm trong isEditablePhase. Đổi gate sang (isAdmin || isDrafter) && isEditablePhase(phase), chỉ tách riêng khối đính kèm — HoSoLink + winner giữ theo readOnly màn hình (không mở nhầm); SupplierAttachmentsCell giữ nguyên carve-out approverEditMode (Mig 28 F3); BE không thêm guard (giữ S78 approver-upload). Mirror fe-user + fe-admin. tsc -b + vite build sạch 2 app.
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
§L.a RCA:
- E-012 + AS-16 NEW "bằng-chứng-tự-huỷ-sau-squash": outward artifact cite sha
chưa-push / stamp trước khi git status sạch. Root = tiêu-chí verify chọn theo
cái MÌNH đo được, không theo cái NGƯỜI NHẬN sẽ đo (cùng lớp E-010).
Đối chứng: wave trước cite commit đích -> sống hết.
§L.b:
- (c) memory-triple: do exit 0 · de-xuat A7 251/251 · kiem reviewer FAIL 1C/4M/4m/1nit
· do-record TOTAL 47 + nhip-no 4-vế. sleep-check 4d < 7d -> không INFORM.
- (d)(f) harvest-curator GATE-PASS-5, 5-trục PASS, Fidelity on-behalf PASS STRONG
0-fabrication, C5 dạng-1 đủ, orphan 0/40, Sàn-5 khớp. Spawn-record 5 sub.
- (g) tooling-auditor DRIFT-FOUND(4) -> vá hết: F-A doc "3-vế" vs script 4-vế
(7 site prescriptive; giữ 15 file frozen) · F-B ghost-enum HIGH (mở enum 10->11
mà quên chính vai dùng nó + 2 site số) · F-C lead-model pin chưa ghi sổ
(thêm dòng Lead row S143; cell canonical để owner quyết) · F-D marketplace.
- (j) H24: class_repeat cập theo 2 vai · last_audit light/deep = 17 · history +S143
(khai rõ force-fire SỚM 1 nhịp theo lệnh owner, KHÔNG tới-hạn tự-nhiên).
- (k) trio SKIP có vết (cần restart CLI) -> ghi CẢ session-log vì §6.4 reset WAL.
Sửa-một-phía bắt được 4 lần trong phiên (tool-grant · enum · sổ đếm garble · _note
counter) -> bài: đổi một con số thì grep con số đó repo-wide trước khi đóng.
#53: 5/5 sub garble, 0 mất dữ-liệu nhờ ghi-đĩa. Tally ×20 -> ×25, +path-4
lead-on-behalf khi resume không cứu được diary.
Test 528 kế-thừa (0 file src/fe/tests bị đụng, verify bằng diff). Bundle FROZEN.
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
- APPEND on-behalf entry S143 vào diary lead-view-auditor (vai garble ×2 nên
chưa tự ghi được; VERIFY→APPEND B3, tiền lệ retro-harvest S132). Nguồn
verbatim = runs/2026-07-22-S143-closeout-audit/sub-lead-view-1.md.
- Sổ đếm #53: ×20 qua S118 -> ×23 qua S143 (8 nhãn phiên không cập, nay đúng).
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
Reviewer-gate độc-lập chạy SAU khi thư gốc (6c94873f72e0) đã gửi -> FAIL
1C/4M/4m/1nit. Bản gốc CẤM sửa (vỡ hash) nên phát errata rời.
4 đính chính: (1) sha bằng-chứng dangling sau squash, hub clone không resolve
được -> re-anchor 2757e41 (2) claim OK-reachable tự huỷ; sự thật mạnh hơn:
cả 2 nhánh lành đã chạy runtime trong 1 phiên (3) "pull-age chưa làm" nay ĐÃ
LÀM, fault-inject 7 ca (4) TOTAL detector publish không neo mốc.
+nâng-cấp bằng-chứng tool-grant: 6 -> 9 vai, và nay có nhân-chứng first-person
(reviewer frontmatter 0 Write/Edit nhưng đã Write+Edit thật).
selftest-stamp exit 0 (canonical match). Log _index cùng lượt.
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
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>
Memory cũ giả định Write đã bị gỡ khỏi monitor tool-grant, chỉ còn Bash residual.
Đo @S143: 6 vai read-only KHÔNG khai Write/Edit trong frontmatter nhưng runtime
vẫn cấp, append ở CUỐI danh sách (tell = vị trí, đối chứng implementer-backend
giữ đúng thứ tự file). Whitelist = tuyên-bố ý-định, không phải cơ-chế chặn.
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>