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

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.

Rollback Wiki & nhánh tri thức

  1. Rollback trang Wiki (POST /api/wiki/pages/:slug/revisions/:version/rollback?projectId=…): cần Board admin human thật (cùng cổng wiki:approve với duyệt draft) — rollback tạo version mới, không ghi đè lịch sử.
  2. Member/agent gọi rollback403 ngay tại cổng Board (thiếu admin hoặc không phải human).
  3. Vượt qua cổng Board nhưng Arkon từ chối quyền → 502 kèm detail (Failed to roll back page: …): đó là cổng Arkon, liên hệ owner Space / sysadmin kiểm tra department và token.
  4. Merge / close nhánh Wiki (POST /api/wiki/branches/:id/merge · .../close) cũng cần admin + human — merge là duyệt mọi draft trong nhánh trong 1 transaction (kẹt conflict giữa đường → 409, giữ nguyên để bạn xử lý).