changeset-to-galaxy-test-plan
Produce a Galaxy workflow test plan for the update pipeline: carry the existing workflow’s tests forward as a regression baseline and augment them for the change-set’s behavioral deltas. The output is a reviewable YAML handoff conforming to galaxy-workflow-test-plan, not a concrete tests-format file — implement-galaxy-workflow-test authors the final *-tests.yml from it. This Mold is the update pipeline’s analogue of nextflow-test-to-galaxy-test-plan / freeform-summary-to-galaxy-test-plan: the dedicated test-plan producer every Galaxy-targeting pipeline places before the implement step.
Translate-and-augment, not synthesize-from-scratch
The starting point is real test evidence — the existing workflow’s own tests[], captured in summary-galaxy-workflow. Most of the plan is those cases carried forward. So set the plan’s source.derived_from: mixed: baseline cases keep derived_from: test-evidence with evidence: test-evidence on their assertions, while change-set-driven cases and assertions carry evidence: intent (raise to test-evidence only where the change-set pinned a concrete expected value). Unlike a freeform-synthesized plan, the baseline’s workflow-label bindings are label_status: resolved — the summary read them off the concrete existing workflow, so they are known, not assumed.
What the change-set drives
Walk the change-set and touch only the assertions its edits reach:
- Behavior-changing edit → update the affected baseline case. A
change-parameter, replace-tool, or add-step that alters an existing output’s content means the baseline assertion on that output is now wrong. Update it — tighten to the new expected value where the change-set gave one, or loosen it (e.g. presence/format where a content check no longer holds) and record the loosening in omissions[] with a rationale. Never delete a baseline case to make it pass; a regression that silently drops coverage is the failure mode this pipeline exists to avoid.
- New observable behavior → a new assertion or case. An
expose-output / add-output needs a new expected_outputs[] entry asserting the promoted output; a new step whose result is observable needs assertion intent for it; a new add-input needs a job_inputs[] binding and a fixture. Bind change-set-added labels at label_status: assumed (the concrete labels settle downstream once the per-step loop resolves the step) and reconcile them in implement-galaxy-workflow-test.
- Internal-only edit → no assertion change. A
rewire, relabel, or remove-step that does not change an observable output changes no assertions; carry the baseline through untouched.
Scope discipline mirrors the change-set
Change only the assertions the change-set reaches. Do not add assertions for untouched regions beyond what the baseline already covers, and do not tidy or re-tolerance a baseline assertion no edit touched — the update pipeline’s contract is that untouched behavior is verified exactly as before. Gratuitous churn in the plan propagates into gratuitous test churn downstream.
Fixtures
Reuse the baseline’s existing fixtures verbatim — they already ship with the workflow and are the regression data. Only a change-set that adds a workflow input needs new test data: record it with iwc-test-data-conventions (remote-URL-first, storage: unresolved with provenance when the input names data only by description), and leave resolution to the harness test-data step / find-test-data and implement-galaxy-workflow-test. When an added input’s data cannot be settled here, add an unresolved[] entry (with blocking: true when the new case cannot be authored without it) rather than inventing a location.
Keep the plan addressable by stable labels and artifacts (planemo-workflow-test-architecture) so the downstream test, run, and debug Molds can connect assertions back to invocations and outputs.