Khi việc phải dừng
Skip là khoản vay, và vay thì phải ghi sổ. Một skip vì lý do security-class không bao giờ được thực hiện trong im lặng, và không bao giờ do planner quyết định. /flow auto chia tầng: việc xanh có thể merge không hỏi, việc security-class thì HALT.
Trang này là nơi operator tra cứu các luật đó. Các file maintainer vẫn là bản chuẩn trong repo; chỉ link ở chân trang.
Security-class halt rules
Phần tiêu đề “Security-class halt rules”Các lớp này không bao giờ được liệt kê kiểu “ví dụ …” rồi bỏ lửng phần còn lại. Mỗi lớp dưới đây đều HALT.
- authentication / auth
- authorization
- admin-surface exposure
- tenancy
- payments
- data loss / data migration
- removing or weakening validation
Với bất kỳ lớp nào:
- Operator chấp nhận điểm phơi bày bằng văn bản trong
DEBT.md. Bạn không được quyết thay họ. - Trong
/flow autođây là Tier-C HALT. Dừng và hỏi. Không đi tiếp. - Đóng một run khi còn security debt đang mở cần operator xác nhận một cách tường minh. “Temporary” không được tính là xác nhận.
Skip a gate with debt
Phần tiêu đề “Skip a gate with debt”Skip là hợp lệ. Skip lặng lẽ thì không.
Ghi lại điểm phơi bày trước, rồi mới skip:
/flow debt add "skip 01-research" "<the exposure, concretely>" "<close before: named condition>"/flow skip 01-research --reason "…"Các chốt chặn, theo đúng thứ tự này (chúng trỏ về list các lớp ở trên; không được thay bằng bản rút gọn):
- Stage 05 (contract) không bao giờ được skip. Hãy điều chỉnh contract theo loại dự án thay vì skip. Xem Vì sao contract không bao giờ được skip.
- Lý do security-class thì HALT. Operator chấp nhận điểm phơi bày bằng văn bản trong
DEBT.md. Không bao giờ do planner quyết định. - Một dòng debt không liên quan sẽ không mở stage.
/flow skipchỉ tiến khi có dòng debt đang mở ghi đúng stage đó và lý do không phải security-class.- Sau skip hợp lệ,
planning_completecó thể bỏ qua stage đó để các card không bị kẹt mãi. Dòng debt vẫn mở.
DEBT.md
Phần tiêu đề “DEBT.md”- Lần skip đầu tiên sẽ tạo
DEBT.md. - Hình thức dòng: thứ bị skip, điểm phơi bày cụ thể, điều kiện đóng có tên, ngày, card.
- [ ] DEBT: <what was skipped> -- <exposure> -- close before: <named condition> -- opened <date> (cards: C-NNN...)- Đóng run khi còn security debt đang mở cần operator xác nhận một cách tường minh. “Temporary” không được tính là xác nhận.
- Card bị debt chặn thì ở lại
todovới evidence PARTIAL ghi tên debt. Không bao giờ làm dở, không bao giờ làm tròn thành hoàn thành.
Run an auto build
Phần tiêu đề “Run an auto build”/flow auto chạy preflight; đạt thì ghi auto state dùng chung. /flow auto stop trở về chế độ tay. Không có đường tắt ẩn.
Preflight fail-closed:
- mọi card đều có risk đã được phân loại (không
unknown) - card security-class cần xác nhận của một author khác trong
DEBT.md - stage 05 mang bằng chứng
semantic_gatecòn hiệu lực
Rồi với từng card, vòng lặp theo ngôn ngữ của operator là: phân tầng, build trong worktree riêng với subagent scoped, review, bằng chứng, check, merge, deploy, verify live, dán bằng chứng hoàn thành, rồi xong. Dùng các verb /flow workspace để journal không bị thủng. Chạy git worktree add trực tiếp thì không ghi lại gì.
| Tầng | Việc | Hành động |
|---|---|---|
| Tier-A | Xanh, không security-class | Auto-merge không hỏi. |
| Tier-B | Sửa được | Một lần sửa bởi subagent mới (two-strikes). Lần đỏ đầu tiên của một card thường không gọi tới engine cross-vendor tính phí. |
| Tier-C | Chạm security-class hoặc skip kèm debt | HALT. Operator chấp nhận bằng văn bản trong DEBT.md. Không bao giờ do planner quyết định. |
Trần cứng (số vòng / token / wall-clock) là bắt buộc. Vượt trần nào → HALT + báo cáo. Vòng không trần là anti-pattern.
Mọi gate đều quyết định dựa trên tín hiệu cơ học (exit code thật, ## Verify chạy thật, check live). Không bao giờ dựa trên tự đánh giá của agent.
Nếu merge song song bị conflict → dừng và lập plan lại. Nghĩa là check overlap đã bị lách.
When the run stops itself
Phần tiêu đề “When the run stops itself”Run sẽ HALT và báo cáo. Không bao giờ lặng lẽ đi tiếp. Dừng khi gặp bất kỳ điều nào sau:
- Một trần cứng bị vượt (số vòng / token / wall-clock).
- Tín hiệu ground-truth đỏ mà không sửa được trong two-strikes.
- Chạm vào security-class Tier-C.
- Conflict lúc merge song song (check overlap bị lách: dừng và lập plan lại).
BLOCKED/NEEDS_CONTEXTtừ subagent mà thêm context cũng không gỡ được.
Khi dừng: nêu rõ cái gì đã chặn, cái gì đã xong, debt/blocker đang mở, và 2–4 lựa chọn cụ thể. Đừng vá víu quanh một regression. Để operator quyết định.
Dành cho maintainer (không phải trang công khai): skills/flow/references/debt-and-halts.md, skills/flow/references/auto-run.md, skills/flow/references/attestations.md.