spec-tdd-task-daglisted
Install: claude install-skill BenjaminChenLab/spec-tdd-skill
# spec-tdd-task-dag
**REQUIRED BASE:** `spec-tdd-task-loop` — read it first; every rule there applies unchanged(三層分工、輕量 gate、Phase 0 拆解 bootstrap、數字複核、mock-first、續作、揭露、commit 紀律)。本 skill 是它的**平行 overlay**:任務總表從序列佇列升級為相依 DAG,不相依且檔案互斥的 task 成波並行。不新增也不減弱驗證強度——只壓縮牆鐘(波末聯集測試 run 補回平行失去的那份,見下)。
## When to Use(vs task-loop)
- 時間敏感 + DAG 有真實可平行結構(非鏈)→ 本 skill。平行同時乘上**限額壓力(×N,上限 3)與頂層 context 開銷**(狀態列流量、波管理、逐兄弟處置)——context 緊張的 phase,序列更省。
- 鏈狀相依 / task 數少 / 429 易觸發時段想保守 / 要最簡機制 → `spec-tdd-task-loop`。**序列不是舊行為,是 ×1 限額壓力的安全模式**:平行把 token 吞吐乘上併發數,易觸發時段(如白天尖峰)一個一個慢做,離峰(如半夜)再全速跑 DAG——模式本來就是時段的函數。
**When NOT to use:**
- 多單元 bug batch 的平行波(無 task-loop 基座:無權威計畫文件、無 per-task commit)→ `spec-tdd` 的 **multi-unit** 平行波。
## Board 升級:任務總表 = DAG
- 每列加兩欄:**depends-on**(空 = 根)與**預期改動檔案**(Phase 0 拆解一併產出)。
- Phase 0 的 fresh-context review 因此多一個攻擊維度:**相依邊正確性 + 預期檔案欄的互斥性**。
- **波計算 = 拓撲分組 + 預期檔案欄互斥檢查。** 欄位重疊的兩個 task 不進同波,即使邏輯不相依——共檔 = 序列鏈(tier 層 multi-unit 波的實戰規則上抬)。互斥排除的是**文字 merge 衝突**;**語意互毀(零共檔仍互相改變行為)不能由互斥排除**,由波末聯集 run 兜底(下節)。
## Pre-flight:模式 ask(task-loop 的 asks 之後,加一問)
展示波結構(如「3 波:[T01,T03]→[T02,T04,T05]→[T06]」),四選:
- **全平行** — 建議離峰時段;**全序列** — 行為等同 task-loop,429 易觸發時段的安全選擇;
- **逐波選** — 每波邊界問一次平行或序列;
- **自動時段** — 你報一次尖峰/離峰時段(例:「10:00–22:00 尖峰走序列,其餘平行」——**時段是你的限額經驗,skill 不預設**),之後每波邊界按本地時間自動切換,每次切換在 board 揭露。切換於波邊界生效,**在飛的波不中途殺**。
鏈狀 DAG(無可平行者)→ 此問靜默跳過。**併發上限 3(user 可調)**:同一波最多 3 個 task 同跑(每 task 內部還有 2–3 個 nested dispatch,最多 ≈9 條 agent 流),超過的波內分批輪轉。
**授權耦合(task-loop pre-flight 2)**:未授權頂