Bỏ qua để đến nội dung

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.

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 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):

  1. 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.
  2. 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.
  3. Một dòng debt không liên quan sẽ không mở stage.
  4. /flow skip chỉ tiến khi có dòng debt đang mở ghi đúng stage đó và lý do không phải security-class.
  5. Sau skip hợp lệ, planning_complete có thể bỏ qua stage đó để các card không bị kẹt mãi. Dòng debt vẫn mở.
  • 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 todo vớ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.

/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_gate cò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.

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_CONTEXT từ 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.