Hệ thống test và QC
Mục tiêu của bản lệnh 18.10.2026: cực nhanh, tối giản, rẻ, đủ chặn lỗi người dùng cảm thấy, và tự động hết mức. Chủ dự án không phải làm tay bước nào; agent chỉ hỏi khi cần một quyết định thật.
Nguyên tắc gốc: mỗi chặng chỉ kiểm thứ nó còn bắt được rẻ. Lỗi bắt được ở pre-commit thì đừng để CI bắt lại bằng một job riêng; thứ đắt (E2E) thì để lượt hằng tuần.
Năm chặng
| Chặng | Chạy gì | Ngân sách |
|---|---|---|
| pre-commit | Kiểm ổ đĩa, node_modules khớp lockfile, tự sửa file sinh, eslint + typecheck file đã stage, cổng khớp đường dẫn | dưới 5 s |
| pre-push | Typecheck toàn repo khi có code, unit test workspace bị đụng và workspace dùng chúng | dưới 60 s |
| CI | MỘT job: phạm vi thay đổi, cài từ cache, typecheck + lint + unit test + test API song song, check:code, check:docs, migration, deploy | dưới 5 phút |
| Hằng tuần | check:report, nâng phiên bản thư viện, npm audit, 10% E2E quan trọng nhất; trên máy, $0 | dưới 15 phút |
| Production | Kiểm từ ngoài vào sau mỗi deploy và theo lịch, đối chiếu bản đang chạy với main |
Thứ tự làm
Bản lệnh bắt làm theo thứ tự, mỗi phần commit riêng, và đo hiện trạng trước khi sửa:
- Audit: liệt kê mọi chỗ test chạy, đo từng gate một lần.
- Một danh sách gate, ba tầng.
- Git hooks.
- Hooks của Claude Code.
- CI một job.
- Lượt kiểm hằng tuần.
- Tiêu chuẩn code.
- Site harness này.
- Bẫy đã gặp thật, mỗi bẫy phải có máy chặn.
Xong khi
- Bảng trước/sau: thời gian pre-commit, pre-push, CI; số phút Actions mỗi tháng; số gate mỗi tầng.
- Mọi gate chặn xanh trên
main; test của hooks và gate xanh; một lượtnpm run weeklychạy thật từ đầu tới cuối (kể cả đường nâng xanh rồi tự push) và log ghi đúng exit code. - Không còn tham chiếu tới quy trình cũ ngoài phần ghi lịch sử.
- Trang harness đã deploy và trả 200; memory và
CLAUDE.mdghi quy trình mới. - Báo chủ dự án một bảng: lỗi gặp trong phiên, nguyên nhân gốc, cách chặn theo thứ bậc hook > gate/test > luật > skill > memory (chặn càng sớm, càng ít phải nhớ).
Ở Conan hôm nay
| Chặng | Ở Conan (đo 18.10.2026) |
|---|---|
| pre-commit | Không có git hook. Hook Claude Code PostToolUse bắt gạch dài ngay khi sửa file; Stop chạy qc-scan + workspace-deps (khoảng 0,6 s). |
| pre-push | Hook Claude Code (không phải git hook) chạy run-guards --fast: 14 gác, khoảng 1,3 s. Không typecheck, không test. |
| CI | ci-checks trên PR, tới 16 job (trung bình 3,1); 16 workflow deploy riêng trên main. Khoảng 2.580 phút Actions mỗi tháng. |
| Hằng tuần | Không có. Có vòng QC đêm (routine cloud 03:00) và làn mã chết. |
| Production | smoke-production.mjs sau mọi deploy, d1-invariants mỗi đêm, sổ lỗi tự động. Sentry đã nối nhưng chưa có DSN. |
Chi tiết và kết luận từng chặng: Audit.