Problem
In execute_task, the Ok(result_str) arm after rig's multi_turn loop marks TaskStatus::Complete, success=true whenever the loop terminates without a rig-level error. The result text is never inspected. A worker that enters a duplicate call loop and writes "I was unable to complete the task" is indistinguishable from genuine success.
This means:
build_task_context embeds soft-failure text as PRIOR_WORK for dependents
ready_tasks() unblocks dependents that should be blocked
- The coordinator has no structural signal forcing a replan
Evidence
Live SSE captures from SRE integration testing show "success": true on tasks where the worker explicitly reported inability to complete, counted as task_failed_count: 0 in analysis.
Solution
After stream_and_forward returns, check the escalation flag set by the duplicate-call guard (#69). If set, run the worker response through maybe_create_artifact (inline if short, artifact pointer if long) and return Err so the task is marked Failed and dependents are blocked in the DAG. The coordinator sees the worker's findings via the existing reflection prompt and can read_artifact for long outputs.
Related code
crates/aura/src/orchestration/orchestrator.rs — execute_task flag check after stream_and_forward
crates/aura/src/orchestration/types.rs — ready_tasks() blocks dependents on TaskStatus::Failed
Problem
In
execute_task, theOk(result_str)arm after rig's multi_turn loop marksTaskStatus::Complete, success=truewhenever the loop terminates without a rig-level error. The result text is never inspected. A worker that enters a duplicate call loop and writes "I was unable to complete the task" is indistinguishable from genuine success.This means:
build_task_contextembeds soft-failure text asPRIOR_WORKfor dependentsready_tasks()unblocks dependents that should be blockedEvidence
Live SSE captures from SRE integration testing show
"success": trueon tasks where the worker explicitly reported inability to complete, counted astask_failed_count: 0in analysis.Solution
After
stream_and_forwardreturns, check the escalation flag set by the duplicate-call guard (#69). If set, run the worker response throughmaybe_create_artifact(inline if short, artifact pointer if long) and returnErrso the task is markedFailedand dependents are blocked in the DAG. The coordinator sees the worker's findings via the existing reflection prompt and canread_artifactfor long outputs.Related code
crates/aura/src/orchestration/orchestrator.rs—execute_taskflag check afterstream_and_forwardcrates/aura/src/orchestration/types.rs—ready_tasks()blocks dependents onTaskStatus::Failed