All checks were successful
Deploy SOLUTION_ERP / build-deploy (push) Successful in 6m17s
Anh chốt "(c) THEO TAY CẦM PHIẾU": Nháp/Trả-lại (tay người soạn) ⇒ chỉ người soạn up file duyệt; Chờ-duyệt ⇒ chỉ thành viên quy trình đã pin (membership, không đòi đúng-lượt — chữ anh @S171 không thu hẹp); terminal DaDuyet/TuChoi ⇒ chặn cả hai (hồ sơ đã chốt). Guard mới EnsureApprovalAttachmentUploaderAsync (WorkflowGuards) wire vào UploadContractSigningPlanAttachmentCommandHandler — CHỈ rẽ nhánh Purpose=ApprovalAttachment; đường căn-cứ dossier giữ nguyên hành vi cũ (có control-test chặn nới guard ngoài phán quyết). Đóng lỗ đo prod @S172: drafter qua policy KeHoachKyKet.Update up được file vào phiếu không thuộc tay mình (#82 hai tầng — policy là quyền module, không phải quyền theo tay). FE 0-đổi (nút vốn chỉ trong dialog duyệt — display-layer; guard này là API-layer thật). Test 660 → 668 (+8: 3 nhánh tay × 2 chủ thể + ngoài-cuộc + terminal-2-vế + control đường-soạn). YC-016 vào sổ; YC-013 nhắc=2 (YC-015 verify 4-chân). Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>