Bug
When a child agent reaches MaxTurnsExceeded, Strix marks it as stopped, but the root coordinator can continue waiting indefinitely for a completion message that will never arrive.
Evidence
- Child agent:
0ccd175e (SQL Injection)
- Failure:
MaxTurnsExceeded: Max turns (500) exceeded
- Status changed to:
stopped
- Root remained in
wait_for_message
- The run stayed
running without further model turns until manually steered
Expected behavior
stopped, failed, crashed, and completed child agents must be treated as terminal states. The root should resume, finalize the scan, and report that the child was capped.
Actual behavior
The root waits for a completion message that cannot arrive, leaving the scan stalled/looped.
Suggested fix
- Wake the parent when a child enters any terminal state.
- Treat
stopped as terminal in coordinator wait logic.
- Prevent
wait_for_message from waiting on stopped children.
- Add a regression test for
MaxTurnsExceeded.
Environment
- Strix target:
[redacted-target]
- Scan mode: deep/full
- Observed: 2026-07-23/24
Bug
When a child agent reaches
MaxTurnsExceeded, Strix marks it asstopped, but the root coordinator can continue waiting indefinitely for a completion message that will never arrive.Evidence
0ccd175e(SQL Injection)MaxTurnsExceeded: Max turns (500) exceededstoppedwait_for_messagerunningwithout further model turns until manually steeredExpected behavior
stopped,failed,crashed, andcompletedchild agents must be treated as terminal states. The root should resume, finalize the scan, and report that the child was capped.Actual behavior
The root waits for a completion message that cannot arrive, leaving the scan stalled/looped.
Suggested fix
stoppedas terminal in coordinator wait logic.wait_for_messagefrom waiting on stopped children.MaxTurnsExceeded.Environment
[redacted-target]