Files: src/conductor/ai/agents/runtime/runtime.py; reproduced by examples/agents/86_coding_agent.py
Symptom: python examples/agents/86_coding_agent.py hangs forever, no output after the worker banner. Output at 180s and 300s is byte-identical — no progress.
Cause: Workers start only for the parent agent's tools=. Tools declared on the agent passed as planner= get none, so the planner's read_file tasks stay SCHEDULED with nothing polling them. grep -n '\.planner' runtime.py matches only comments — no code reads that slot when collecting worker tools, while _ensure_models_for_agent walks a.agents recursively. Named slots planner=/fallback= replaced the older agents=[planner, fallback] form, which that traversal covered.
Fix: Collect worker tools through planner= and fallback=, not only agents=.
Verify: python examples/agents/86_coding_agent.py reaches the planner and stops hanging. Confirmed: supplying those four workers from a second process ends the hang (128s vs indefinite).
Note: This does not make 86 pass — it then fails with No JSON plan found and no fallback agent configured, a separate defect.
Also affects: 115_plan_execute_planner_context.py, adk/24_planner.py (4 examples use planner=, 8 use PLAN_EXECUTE).
Files:
src/conductor/ai/agents/runtime/runtime.py; reproduced byexamples/agents/86_coding_agent.pySymptom:
python examples/agents/86_coding_agent.pyhangs forever, no output after the worker banner. Output at 180s and 300s is byte-identical — no progress.Cause: Workers start only for the parent agent's
tools=. Tools declared on the agent passed asplanner=get none, so the planner'sread_filetasks stay SCHEDULED with nothing polling them.grep -n '\.planner' runtime.pymatches only comments — no code reads that slot when collecting worker tools, while_ensure_models_for_agentwalksa.agentsrecursively. Named slotsplanner=/fallback=replaced the olderagents=[planner, fallback]form, which that traversal covered.Fix: Collect worker tools through
planner=andfallback=, not onlyagents=.Verify:
python examples/agents/86_coding_agent.pyreaches the planner and stops hanging. Confirmed: supplying those four workers from a second process ends the hang (128s vs indefinite).Note: This does not make
86pass — it then fails withNo JSON plan found and no fallback agent configured, a separate defect.Also affects:
115_plan_execute_planner_context.py,adk/24_planner.py(4 examples useplanner=, 8 use PLAN_EXECUTE).