Task phụ thuộc & Task Group song song
Đối tượng: member chạy nhiều task có ràng buộc thứ tự hoặc muốn chạy song song có giới hạn.
Dependency gating — task chờ task
Ví dụ: PAY-101 (Backend: API tạo giao dịch QR) blocks PAY-102 (Frontend: màn hình quét QR).
- Khi kích hoạt, Gating Engine đọc
work_item_links: task không blocker thì chạy, task bị block giữ ởbacklogkèm Activity "Task bị khoá do đang chờ PAY-101 hoàn thành". - Không bỏ chặn non: khi BE xong,
PAY-101mới sang cộtreview— code chưa merge vàomain. Hệ thống tuyệt đối không mởPAY-102lúc này (agent FE sẽ đọc mã nguồn cũ). - Bỏ chặn khi
done: approvePAY-101→ merge vàomain→done→PAY-102tự mở khoá và chạy, kéo code BE mới nhất từmain. - Lưới bảo hiểm: sweeper 15s quét lại task bị block, chống mất event.
Thêm quan hệ phụ thuộc thủ công:
curl -X POST http://<host>/api/tasks/PAY-101/links \
-H 'Content-Type: application/json' \
-d '{"relatedId":"PAY-102","linkType":"blocks"}'
Vì sao thiết kế vậy? Xem Vì sao task chỉ mở khi blocker done.
Task Group — chạy song song có trần
- New Group (phím
G) → điềntitle,priority,repoPath,baseBranch. - Đặt
maxConcurrencybằng ParallelismSlider — trần số agent chạy đồng thời trong group.
Mỗi agent là một process CLI + một worktree
maxConcurrency=8 trên máy 8GB RAM sẽ hết bộ nhớ. Bắt đầu từ 2–3.
- Thêm task con (
children), hoặc bậtautoRunđể group tự chạy khi tạo. - Run Group (
POST /api/groups/:id/run). Hệ thống giữ đúngmaxConcurrencytask ởin-progress; task xong thì task kế tiếp đủ điều kiện gating được đẩy vào. - Stop Group (
POST /api/groups/:id/stop) dừng toàn bộ task đang chạy trong group.
Task bị block không tính vào maxConcurrency và không chiếm slot.
Checklist tự xác minh
- Kéo task FE sang
in-progresskhi BE chưadone→ bị chặn kèm thông báo rõ; BEdone→ FE tự mở. - Trong lúc group chạy, số task ở
in-progresskhông bao giờ vượtmaxConcurrency.