Bộ 7 role chuyên biệt (triage → specialist → implementer → reviewer) cùng lớp dùng chung: guardrail, tri thức về repo, checklist, và contract đầu ra. Vì sao có: bug UI/UX được báo bằng lời kể triệu chứng, và người sửa hay bỏ qua ba thứ mà repo này rất dễ vi phạm — luật "không file nào ngoài theme/ được đặt tên một màu", trần LOC theo bánh cóc, và việc ui/ với presentation/ cùng tồn tại nên sửa nhầm file là "đã fix mà vẫn thấy lỗi". knowledge/qt_pitfalls.md chép lại 20 nguyên nhân gốc hay gặp của bug PySide6; examples/bad_fix.md có hai ca CÓ THẬT, gồm ca chính bản vá trong nhánh này từng mắc (compare_digest trên str ngoài ASCII) và lọt qua vòng review đầu. Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
54 lines
2.5 KiB
Markdown
54 lines
2.5 KiB
Markdown
# Checklist sẵn sàng tạo PR
|
|
|
|
Dùng bởi `fix-implementer` (bước 9) và `regression-reviewer` (bước 8).
|
|
Bám theo `.gitea/PULL_REQUEST_TEMPLATE.md` và `docs/governance/definition-of-done.md`.
|
|
|
|
## A. Cổng chất lượng
|
|
|
|
- [ ] `python scripts/run_quality_gate.py` — xanh cả 5 cổng, **có dán output thật**.
|
|
- [ ] Gate C: `domain/`/`application/` không import PySide6/PyQt/`ui`/`app`.
|
|
- [ ] Gate A: không secret/plaintext mới.
|
|
- [ ] Gate S: không file nào > 400 LOC.
|
|
- [ ] Gate O: không module mồ côi (file mới đã được import trong cùng commit).
|
|
- [ ] Gate A/N: pytest xanh; test vốn đỏ từ trước được ghi riêng.
|
|
|
|
## B. Kiểm chứng
|
|
|
|
- [ ] Test regression tồn tại và **đỏ trước / xanh sau**.
|
|
- [ ] Test chạy được headless (`QT_QPA_PLATFORM=offscreen`).
|
|
- [ ] Đã kiểm bằng mắt ở dark + light — hoặc ghi rõ "chưa kiểm chứng bằng mắt" kèm lý do.
|
|
- [ ] Đã kiểm ở các ngôn ngữ liên quan.
|
|
|
|
## C. Phạm vi & lịch sử
|
|
|
|
- [ ] Một PR = một thay đổi logic. Không refactor lẫn vào.
|
|
- [ ] Không đổi format/indent toàn file; diff đọc được.
|
|
- [ ] Nhánh riêng, không commit thẳng `main`.
|
|
- [ ] Commit message nêu nguyên nhân gốc + `file:line` + issue.
|
|
- [ ] Không commit `.env`, `config.json` local, dữ liệu dưới `.cowork_local/`, `.venv`.
|
|
|
|
## D. Bảo mật
|
|
|
|
- [ ] Không secret/PII/đường dẫn cá nhân trong code, test fixture, commit message, PR body.
|
|
- [ ] Ảnh chụp màn hình đính kèm đã được redact.
|
|
- [ ] Nếu chạm permission / credential / MCP write-exec / sandbox / network / TLS /
|
|
isolation / model routing / xoá dữ liệu → đánh dấu `security-review: required` và ghi
|
|
rõ trong PR rằng **CI xanh không đủ để merge**.
|
|
|
|
## E. Nội dung PR
|
|
|
|
- [ ] Summary nói **tại sao**, không chỉ **cái gì**.
|
|
- [ ] Change Type đã tick.
|
|
- [ ] Scope: nêu rõ cả phần **cố ý không** làm.
|
|
- [ ] Validation: có lệnh và output thật.
|
|
- [ ] Security Impact: đã điền, kể cả khi là "không có".
|
|
- [ ] Compatibility: đã tick.
|
|
- [ ] Reviewer Notes: chỉ ra chỗ cần soi kỹ nhất.
|
|
- [ ] Tài liệu (`docs/`, ảnh `docs/screens/`) đã cập nhật nếu cần.
|
|
|
|
## F. Ranh giới
|
|
|
|
- [ ] Agent **không** tự merge, **không** tự đóng issue.
|
|
- [ ] Nếu là đóng góp của FSG AI Core: hiểu rằng chỉ "Done" khi PR đã merge vào Cowork Local,
|
|
kèm đủ core issue reference, PR, evidence, reviewer phía Cowork, merge reference.
|