when: guardsTODO_* sentinels for tool IDs, versions, and wrapper-defined ports_plan_* fields tell the next step what the source evidence supports.class: GalaxyWorkflowDraft
inputs:
reads:
type: collection
collection_type: list:paired
steps:
align_reads:
tool_id: TODO_mapper
tool_version: TODO
_plan_context: "map paired reads to the reference"
_plan_in:
reads: "paired input collection"
reference: "selected genome"
in:
reads: reads
reference: TODO_reference_port
outputs:
aligned_bam:
outputSource: align_reads/TODO_bam_output

gxwf draft-validate checks what’s already concrete against real tool schemas and skips what’s still deferred — so every intermediate plan is valid at the resolution it has reached.
Because deferral is typed, the tooling reads the plan and picks the next unresolved step — no hunting through YAML for what’s unfinished.
$ gxwf draft-next-step wf.gxwf.yml
→ step 3 filter significant peaks [deferred]
_plan_state: keep rows with padj < 0.05A workflow plan anyone can read, review, and refine — one step at a time, whether a person or an agent is filling it in.
