Duyệt & approve — dành cho Approver
Đối tượng: Tech Lead / Reviewer — chốt chặn cuối trước khi code agent vào nhánh chính. Role kỹ thuật: Board
adminvàactor.type === 'human'(cùngownerlà 2 role duy nhất được approve). Điều kiện: hiểu Máy trạng thái task (peer-review→human-gate→approved).
Màn hình — Review View
Vào Header → Review, tối ưu duyệt liên tục bằng bàn phím (j xuống, k lên, a approve):
- ReviewQueue (sidebar): mọi task ở cột
review, badge tầng hiện tại (Human Gate/Peer Review/Rework/Conflict/Escalated/Approved), kèmagentType/priority. - ReviewPanel: header
itemKey+branchName; nút Rework / Approve; Description + Acceptance Criteria. Chú ý: nhãn nút ghi(R)/(A)nhưng chỉalà phím tắt thật —Rchưa được nối key handler trong ReviewView, dùng chuột hoặc phíma. - 3 tab: Automated Verdict (điểm + findings của Reviewer Agent) / Code Changes (DiffViewer) / Quality Checks (lint/test/typecheck).
- ReworkModal: nhập ghi chú khi từ chối.
Không state nào của review phụ thuộc kết quả checks. Quyết định dựa trên diff + verdict + acceptance criteria — đừng tin "checks xanh là đủ".
Duyệt và approve — 3 tầng
- Tầng 1 — Task Checks: đọc kết quả lint/test/typecheck (
POST /api/tasks/:id/checks). Đỏ không tự chặn task — bạn quyết có chấp nhận không. - Tầng 2 — Reviewer Agent: persona
@reviewer(khác persona viết code) đọc toàn bộ diff, đối chiếu từng acceptance criteria, xuất.board/review-verdict.json:
{
"score": 95,
"verdict": "approved",
"summary": "…",
"findings": [
{ "file": "src/payment/webhook.ts", "severity": "minor", "message": "…" }
]
}
verdict ∈ approved | changes_requested | rejected;
severity ∈ critical | major | minor | info.
Mặc định AGENTBOARD_REVIEWER_AGENT=auto chỉ chạy khi có LLM thật — không có LLM thì task đi thẳng
tới bạn kèm cảnh báo, không kẹt.
- Tầng 3 — bạn: mở diff + verdict + checks → bấm Approve (
ahoặcPOST /api/tasks/:id/approve). Hệ thống ghi audit bắt buộc (reviews+ Activity, không ngoại lệ) rồi merge theomergeStrategycủa Space:
- merge-local
- create-pr
- manual
Chiếm mutex withRepoLock → git merge --no-ff nhánh agent vào baseBranch → task done.
Dùng khi repo và server cùng host (mặc định).
Push nhánh lên origin, tạo Pull Request → task done. Repo local không bị chạm.
Dùng khi quy trình PR bắt buộc.
Chỉ đánh dấu done. Bạn tự merge. Dùng cho repo đặc biệt cần kiểm soát tay hoàn toàn.
- Duyệt nhanh nhiều task: ở Review View dùng
j/kdi chuyển,aapprove liên tục (phím tắt tắt khi con trỏ đang tronginput/textarea/select).
Duyệt Wiki draft
Vào Wiki View → Review Queue: xem draft do agent (wikiProposals) hoặc member đề xuất → sửa trong
Draft Editor nếu cần → Approve (POST /api/wiki/drafts/:id/approve) ghi vào Arkon Wiki, hoặc Reject.
Duyệt Wiki cũng cần admin + human như approve code.
Duyệt retro draft ở hàng đợi gộp
Khi Epic đủ điều kiện (≥1 hậu duệ, mọi hậu duệ done, chưa từng retro), draft Retrospective: <Tên Epic>
do @architect soạn nằm chờ ở Unified Review Queue cùng hàng với code:
- Vào Header → Review → lọc Knowledge (hoặc All) để chỉ thấy draft/nhánh Wiki.
- Mở draft retro → đối chiếu 4 mục với thực tế: số item + loại, số rework, tổng runtime agent (đếm lại ở Tree View thay vì tin số trong draft).
- Đạt → Approve (ghi vào Arkon Wiki); chưa đạt → Reject / sửa rồi duyệt lại.
Human Gate không đổi: retro chỉ là đề xuất chờ người publish — không tự ghi Wiki, không tự chạy agent.
Việc bạn KHÔNG làm / KHÔNG được làm
| Việc | Quy định |
|---|---|
| Approve bằng script CI / service token | 403 và không có cách bypass — tự động hoá được thì nó không còn là chốt chặn |
| Sửa cấu hình Space, thêm/xoá thành viên | cần owner — liên hệ owner |
| Merge tay trong repo gốc khi hệ thống đang merge | cấm — phá mutex withRepoLock, gây conflict khó cứu |
| Xoá owner cuối cùng (khi bạn kiêm owner) | 409 — cấp owner cho người khác trước |
git checkout / merge / rebase / commit thủ công phá mutex withRepoLock (mutex trong-process,
không biết terminal của bạn). Quy tắc bất di bất dịch.
Checklist tự xác minh
- Duyệt 1 task end-to-end: verdict + diff + checks → approve →
done/approved, code có mặt trênbaseBranch(hoặc PR được tạo). - Phân biệt
peer-review(AI đang xem) /human-gate(chờ bạn) /changes-requested/merge-conflict/needs-human. - Biết khi nào giao lại cho member (sửa mô tả), owner (đổi
mergeStrategy/requireHumanGate), sysadmin (Reviewer Agent tắt vì thiếu LLM key).
Đọc tiếp: Từ chối, rework & xung đột merge · Pentest Human Gate.