aiworkhub_task_recover_blocked_rework
Recover a blocked task for rework with manager feedback, optional validation changes, or an audited resolution of a scope rejection.
Instructions
Recover one exact blocked task through the canonical transaction.
scope_rejection_resolved is the manager's explicit, audited clean-root
resolution of a scope_rejected card; it requires feedback_reason.
A feedback_reason over 8000 UTF-8 bytes is refused with
feedback_reason_too_large:<bytes>><cap>; it is never truncated.
When the core result's stdout parses to a card dict the reply is the
shared _lifecycle_receipt projection
(aiworkhub.recover_blocked_rework_receipt.v1, include_card="none"):
task_id/status/worker_status plus card_sha256/card_bytes from the
canonical _card_identity (the same basis as aiworkhub_task_show),
the card's runner/recovery_epoch/recovery_predecessor when present, a
detail_request for aiworkhub_task_show, and every extra top-level
key the core call attached -- never the whole recovered card
(NF-2026-01566). command is never echoed: its argv carries
feedback_reason (up to 8000 bytes). A not-ok or card-less result is
returned unchanged minus the argv echo, so error text is never hidden.
Tool call template
Replace each placeholder with a value matching the input schema. Only required parameters are included; add optional parameters as needed.
{
"id": 1,
"jsonrpc": "2.0",
"method": "tools/call",
"params": {
"arguments": {
"task_id": "<task_id>"
},
"name": "aiworkhub_task_recover_blocked_rework"
}
}Input Schema
| Name | Required | Description | Default |
|---|---|---|---|
| task_id | Yes | Id of the blocked card to recover. | |
| feedback_reason | No | Manager feedback for the rework, at most 8000 UTF-8 bytes (longer is refused, never truncated); required with scope_rejection_resolved. Default empty. | |
| validation_amendment | No | Validation commands to amend the recovered card with, checked by the same rules as validation on aiworkhub_task_create, e.g. pytest -q tests/test_target.py; omit for no amendment. | |
| validation_only_replay | No | Set true to authorize a validation-only replay of the retained candidate; refused unless the retained predecessor has a request id and changed-path hashes. Default false. | |
| allowed_writes_amendment | No | Repo-relative paths to add to the card's allowed_writes (add-only, reject_review's path rules), e.g. tests/test_target.py; refused with validation_only_replay; omit for no amendment. | |
| scope_rejection_resolved | No | Set true to record the manager's audited clean-root resolution of a scope_rejected card; requires feedback_reason and is not combinable with validation_only_replay. Default false. | |
| validation_amendment_mode | No | How validation_amendment changes the card's validation: append (default, add new deduplicated commands), replace (the amendment becomes the whole list) or remove (drop each listed command, which must exactly equal an existing one, else validation_amendment_remove_unknown, plus its role); the result must keep the work_kind role gate (e.g. bugfix needs reproduction and regression) and not be empty; anything else is refused with validation_amendment_mode_invalid. | append |
| validation_roles_amendment | No | Roles for a replace, one per validation_amendment command in the same order (each a quality_evidence validation role such as reproduction, regression or generic); required when the card carries validation_roles and refused with validation_amendment_roles_invalid outside replace or when misaligned. | |
| clean_root_if_predecessor_missing | No | Set true to recover from a clean root when the hash-pinned predecessor workspace was removed; not combinable with validation_only_replay. Default false. |
Output Schema
| Name | Required | Description | Default |
|---|---|---|---|
No arguments | |||