Chuyển tới nội dung chính
Phiên bản: 1.1

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ữ ở backlog kèm Activity "Task bị khoá do đang chờ PAY-101 hoàn thành".
  • Không bỏ chặn non: khi BE xong, PAY-101 mới sang cột review — code chưa merge vào main. Hệ thống tuyệt đối không mở PAY-102 lúc này (agent FE sẽ đọc mã nguồn cũ).
  • Bỏ chặn khi done: approve PAY-101 → merge vào maindonePAY-102 tự 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.

Chip subtask trong tab Comments

  1. Mở task cha → tab Comments → mỗi comment từng sinh subtask hiện một hàng chip ([mã] tiêu đề @persona).
  2. Bấm chip → nhảy thẳng tới task con (mở được cả thẻ Backlog).
  3. Chip đọc từ metadata.spawnedSubtasks server đã ghi lúc tạo comment — không suy từ nội dung comment.

Phân biệt hai cách có task con:

Mention-batch (từ comment)Tạo tay
Cách tạo@persona <việc> trong CommentsNew Task / API rồi gán parentId
Quan hệ cha-conTự gán parentId + externalSource: mentionBạn tự gán
Trạng thái ban đầubacklog / idle, không tự chạyDo bạn chọn
Giới hạn≤5/comment, 1 transaction, 6 luật rớt (xem Tạo task & chạy agent)Ràng buộc hierarchy chung (tối đa 3 tầng)

Task Group — chạy song song có trần

  1. New Group (phím G) → điền title, priority, repoPath, baseBranch.
  2. Đặt maxConcurrency bằ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.

  1. Thêm task con (children), hoặc bật autoRun để group tự chạy khi tạo.
  2. Run Group (POST /api/groups/:id/run). Hệ thống giữ đúng maxConcurrency task ở in-progress; task xong thì task kế tiếp đủ điều kiện gating được đẩy vào.
  3. 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-progress khi BE chưa done → bị chặn kèm thông báo rõ; BE done → FE tự mở.
  • Trong lúc group chạy, số task ở in-progress không bao giờ vượt maxConcurrency.