Summary
conductor v0.1.17+ allows script: agents to declare \output:\ schemas just like LLM agents (#118 / commit 9d603a1 in microsoft/conductor). Polyphony's lifecycle-dispatch scripts (lifecycle-router.ps1, batch-integrator.ps1, etc.) currently emit JSON to stdout with no declared schema, so conductor cannot validate output fields at schema-parse time.
What to do
For each script node in .conductor/registry/workflows/\ that emits structured JSON, add an \output:\ schema declaration matching the emitted shape. This closes the M2-class footgun for script-node outputs and enables the Jinja path resolver lint to validate script outputs.
Files to audit
oot-item-dispatch.yaml\ — lifecycle-router, state-detect, emitter scripts
oot-batch-dispatch.yaml\ — aggregate_renegotiation, batch-integrator
- \polyphony.yaml\ — outer_loop_evaluator, preflight_sync
- Any other workflows with \ ype: script\ nodes that emit JSON
Effort/Risk
~1-2h per workflow (mechanical annotation pass). Low risk — adds schema; doesn't change runtime behavior.
References
- Conductor commit 9d603a1: \eat(script): allow script agents to declare output schemas\
- conductor-mechanics skill M2: LLM Agent Output Schemas (same footgun for script nodes)
- Mahler adoption survey 2026-05-28 (decision inbox)
/cc Epic #521
Summary
conductor v0.1.17+ allows script: agents to declare \output:\ schemas just like LLM agents (#118 / commit 9d603a1 in microsoft/conductor). Polyphony's lifecycle-dispatch scripts (lifecycle-router.ps1, batch-integrator.ps1, etc.) currently emit JSON to stdout with no declared schema, so conductor cannot validate output fields at schema-parse time.
What to do
For each script node in .conductor/registry/workflows/\ that emits structured JSON, add an \output:\ schema declaration matching the emitted shape. This closes the M2-class footgun for script-node outputs and enables the Jinja path resolver lint to validate script outputs.
Files to audit
oot-item-dispatch.yaml\ — lifecycle-router, state-detect, emitter scripts
oot-batch-dispatch.yaml\ — aggregate_renegotiation, batch-integrator
Effort/Risk
~1-2h per workflow (mechanical annotation pass). Low risk — adds schema; doesn't change runtime behavior.
References
/cc Epic #521