fix(errors): replace stale roboco_task_* MCP refs in error messages with gateway verbs

10 stale remediation hints across api/routes/tasks.py + exceptions.py pointed at MCP tools deleted in Phase 4 T9 (roboco_task_start, roboco_task_qa_pass, roboco_task_qa_fail, roboco_task_progress, roboco_task_unblock, roboco_task_submit_verification, roboco_task_submit_qa, roboco_task_complete, roboco_task_claim, roboco_task_activate). Each now mentions both the gateway verb (i_will_work_on, pass, fail, complete, unblock, etc.) and the panel REST equivalent. Surfaced live during NAS smoke.
This commit is contained in:
Renn F
2026-05-02 05:13:28 +02:00
parent 453a7ae22a
commit 55d2fae564
2 changed files with 25 additions and 21 deletions
+14 -10
View File
@@ -854,8 +854,9 @@ async def submit_for_qa(
status_code=status.HTTP_400_BAD_REQUEST,
detail=(
"NOT_SELF_VERIFIED: Cannot submit for QA without a prior "
"self-verification step. Call "
"roboco_task_submit_verification() first, then submit_qa."
"self-verification step. Call gateway i_am_done() "
"(handles verification + QA submit), or for the panel "
"POST /api/tasks/{id}/verify before /submit-qa."
),
)
if not task.commits:
@@ -864,7 +865,7 @@ async def submit_for_qa(
detail=(
"NO_COMMITS: Cannot submit for QA without at least one "
"commit on this task. Use roboco_git_commit() before "
"roboco_task_submit_qa()."
"i_am_done() via gateway, or POST /api/tasks/{id}/submit-qa."
),
)
if task.pr_number is None:
@@ -881,8 +882,9 @@ async def submit_for_qa(
status_code=status.HTTP_400_BAD_REQUEST,
detail=(
"NO_PROGRESS: Cannot submit for QA without any "
"progress updates. Call roboco_task_progress() at least "
"once during execution before submitting."
"progress updates. Add progress entries via the gateway "
"(i_have_committed auto-records) at least once during "
"execution before submitting."
),
)
@@ -953,8 +955,9 @@ async def pass_qa(
status_code=status.HTTP_400_BAD_REQUEST,
detail=(
"NO_PR_ATTACHED: Cannot pass QA without a PR on this "
"task. Use roboco_task_qa_fail(notes='PR not created - "
"dev must push and open PR') so the dev fixes it."
"task. Call gateway fail(task_id, issues=['PR not created'])"
" or POST /api/tasks/{id}/fail-qa with the same issue, "
"so the dev fixes it."
),
)
@@ -967,8 +970,9 @@ async def pass_qa(
detail=(
"QA_NOTES_REQUIRED: QA pass must include notes (>=20 "
"chars) summarizing what was verified against the "
"acceptance criteria. Use roboco_task_qa_pass("
"notes='...')."
"acceptance criteria. Call gateway pass(task_id, "
"notes='...') or POST /api/tasks/{id}/pass-qa with "
"notes set."
),
)
@@ -1395,7 +1399,7 @@ async def escalate_task(
msg = (
f"Task escalated to {outcome.target_slug} and set to BLOCKED. "
f"PM will receive notification and must call roboco_task_unblock() "
f"PM will receive notification and must call gateway unblock(task_id) "
"to provide guidance or reassign."
)
return EscalateResponse(
+11 -11
View File
@@ -218,28 +218,28 @@ class TaskLifecycleError(TaskError):
_TRANSITION_HINTS: ClassVar[dict[tuple[str, str], str]] = {
("claimed", "awaiting_documentation"): (
"QA pass skipped the in_progress step. "
"Call `roboco_task_start(task_id)` first, then "
"`roboco_task_qa_pass(task_id, qa_notes=...)`."
"Call gateway i_will_work_on(task_id, plan='...') first, "
"then pass(task_id, notes=...)."
),
("claimed", "awaiting_pm_review"): (
"Call `roboco_task_start(task_id)` first to move claimed → "
"in_progress, then the handoff tool for your role."
"Call i_will_work_on(task_id, plan='...') first to "
"claimed → in_progress, then the handoff verb for your role."
),
("claimed", "completed"): (
"Call `roboco_task_start(task_id)` before `roboco_task_complete(task_id)`."
"Call i_will_work_on(task_id, plan='...') before complete(task_id)."
),
("claimed", "needs_revision"): (
"QA fail from claimed needs the start step first. "
"Call `roboco_task_start(task_id)` then "
"`roboco_task_qa_fail(task_id, notes=...)`."
"Call i_will_work_on(task_id, plan='...') then "
"fail(task_id, issues=[...])."
),
("pending", "in_progress"): (
"Pending tasks must be claimed first. "
"Call `roboco_task_claim(task_id)` then `roboco_task_start`."
"Pending tasks must be claimed + planned first. "
"Call gateway i_will_work_on(task_id, plan='...')."
),
("backlog", "in_progress"): (
"Activate the task first via "
"`roboco_task_activate(task_id)`, then claim + start."
"Activate the task first: PATCH /api/tasks/{id} "
"(status=pending), then i_will_work_on(task_id, plan='...')."
),
}