Cổng kiểm: chặn và báo cáo
Cổng (gate) là một script tự động kiểm một điều cụ thể và trả về đạt hoặc không đạt. Repo có khoảng 60 cổng trong scripts/check-*.mjs. Danh sách nhóm nằm ở scripts/run-checks-groups.mjs, một nguồn cho cả hook ở máy lẫn CI.
Hai tầng
| Tầng | Lệnh | Khi đỏ | Gồm |
|---|---|---|---|
| Chặn (blocking) | npm run check:code, npm run check:docs | Không commit, không push, CI không deploy | Kiểu, build, seed khớp nguồn, hợp đồng /v1, migration, binding, luật chữ chủ dự án đặt (em dash, ngày, định danh tiếng Anh, design stack), nội dung learner thấy, quy tắc lưu trữ |
| Báo cáo (report, non-blocking) | npm run check:report | Chỉ báo, in trong nightly | Sổ sách docs (SRC, REQ, truy vết, độ tươi), ratchet (shadcn, nợ UI), cổng theo lịch (hạn quarantine), link trong harness |
Luật cho cổng mới: vào tầng báo cáo, trừ khi nói được cái gì hỏng cho người dùng, cho deploy hay cho dữ liệu khi bỏ qua nó. Trước khi tách tầng, một ngày last_reviewed cũ hay một dòng SRC thiếu doc từng chặn deploy của mọi app.
Chạy theo đường dẫn
node scripts/run-checks.mjs code --staged (pre-commit) chỉ chạy cổng có paths khớp file đã stage; cổng không khai paths thì luôn chạy. CI chạy cả nhóm. Mọi cổng phải độc lập và chỉ đọc, vì chúng chạy song song.
Một danh sách, không hai
CI gọi đúng npm run check:code và check:docs, không thêm cổng một dòng trong ci.yml. Cổng check-ci-gates-local đỏ khi ai đó thêm cổng chỉ CI mới biết.