Finish Task
Reply in Russian. The server appends the PR link idempotently, completes the selected generic target, and adds a clickable task link to the PR body; clients never send credentials.
- Config. Read
task_boardfrom.review.yml, otherwiseget_board_config(). Use onlytype,project,create_target,done_target, andoptions. If no board is resolved, report a board-less no-op. - Resolve key and PR. Match
key_patternon the current branch, newestbriefsfile, orgh pr view --json title,body; otherwise ask. Resolve the PR URL withgh pr view --json url -q .url(or ask). Missing key or URL is a no-op. - Discover. Call
get_board_targets(board_type=<type>, project=<project>, provider_options=<task_board.options or {}>). Selectdone_targetfromtargetswith a done purpose. For each option withrequired_forcontainingfinish, resolve its value fromchoices; if required metadata is missing, ask instead of guessing. - Offer + confirm. Show the PR link and the resolved done target by its label plus every selected option, and state that a task link will be prepended to the PR body. Ask whether to add an optional note. Write only after explicit confirmation; never write to the board silently.
- Write. Call
Onfinish_task(key=<key>, pr_url=<url>, note=<note or null>, board_type=<type>, target=<done_target or null>, provider_options=<task_board.options or {}>)status == "error", report the reason in Russian and stop. - Re-index. Call
sync_board(board=<project or null>, board_type=<type>, provider_options=<task_board.options or {}>), then report the write and sync result. Whenalready_closedis true, state that no duplicate PR link was added. Report the task link fromtask_link_status, not fromtask_link_addedalone:added— the link was written now;already_present— it was already in the PR body, so report it as normal (an idempotent no-op, never as a problem);failed— only then relay the warning verbatim, and the board write still succeeded.task_link_addedstaystrueonly foradded(older deploys may omittask_link_status: treat a missing field asadded/failedby whether warnings mention the link).
All reads are fail-open; the explicitly confirmed finish_task call is the only write.