Reusable agent templates, a library of execution strategies, and parallel agent teams with quality gates
Failure modes
| Symptom | Cause | Fix | Severity |
|---|---|---|---|
RuntimeWarning: coroutine 'run' was never awaited |
AgentTeam.run / ExecutionStrategy.execute called without await |
both are async — await them |
high |
get_strategy(name) raises |
unknown name (ValueError), or an arg-taking name like conditional/nested (TypeError) |
use one of the nine no-arg names; construct arg-taking strategies directly | medium |
get_template(id) returns None |
no template with that id | list ids via get_all_templates() |
low |
| A gate blocks but the agent never ran | a GateSpec.agent_key does not match any WorkflowAgent.key |
the agent has no score so the gate fails closed — align the keys | medium |
Risk areas
runandexecuteare async.AgentTeam.runandExecutionStrategy.executemust be awaited.get_strategyresolves the nine no-arg strategies. The registry also holdsconditional/multi_conditional/nested/nested_sequential, which require constructor args (fetching them bare raisesTypeError).- Gates fail closed. A
GateSpecwhose agent errored or produced no score fails the gate rather than passing silently.
Diagnosis order
get_all_templates()— what agents/templates are available?- Are
GateSpec.agent_keys aligned withWorkflowAgent.keys? get_strategy(name)— is the strategy name valid?- Async-not-awaited?
run/executemust be awaited.