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

Từ chối, rework & xung đột merge

Đối tượng: approver khi diff chưa đạt hoặc merge bị conflict. Điều kiện: đã quen Review View.

Request Changes — vòng rework (tối đa 3 chu kỳ)

  1. Trong Review Panel bấm Request Changes → ReworkModal.
  2. Viết ghi chú cụ thể — đây là toàn bộ thông tin agent nhận được:
Ghi chú tốt vs ghi chú tệ
  • Tệ: "Sửa lại đi".
  • Tốt: "Bổ sung try-catch retry 3 lần với backoff khi VNPay timeout, thêm unit test cho nhánh timeout".
  1. Server ghi task_runs loại rework, bơm ghi chú vào .board/history.md, chuyển task về in-progress trên cùng worktree và branch cũ (không rẽ nhánh mới).
  2. Agent sửa xong → quay lại review cho vòng duyệt tiếp. Tra cứu chuỗi verdict: GET /api/tasks/:id/reviews; task_runsrun_index tăng dần với kind='rework'.
Quá 3 chu kỳ vẫn bị từ chối?

Hệ thống khoá tự chạy lại, task chuyển needs-human để người can thiệp tay.

Xung đột merge — auto-rework đúng 1 lần

Bối cảnh: hai task song song sửa cùng file; task A merge trước; khi approve task B, git báo conflict.

  1. Bảo vệ repo gốc trước tiên: merge fail → git merge --abort ngay (repo gốc luôn sạch, lock được nhả). Task sang merge-conflict, API trả 409 có cấu trúc (không phải 500).
  2. Dò xung đột cách ly: trong task.worktreePath, merge thử main vào nhánh task, lấy danh sách file conflict, rồi abort — không chiếm lock repo gốc nên không chặn task khác.
  3. Auto-rework đúng 1 lần: ghi hướng dẫn vào .board/history.md, gọi lại rework với kind='auto_conflict_resolution' trên cùng worktree.
  4. Agent gỡ xong → merge lần 2 → done. Agent thất bại → needs-human, giao cho người.
Task không dùng worktree (useWorktree=false)?

Dừng ngay ở needs-human, không auto-rework — không có nơi cách ly để thử. Xử lý tay:

docker exec -it agentjira_server sh -c 'cd <worktreePath> && git status'

Gỡ conflict, commit, rồi approve lại trên UI.