Structured contract copied for validation or lookup.
- Purpose
- Validate the emitted CWL summary JSON and provide downstream consumers the output contract.
Validate and normalize a CWL Workflow tree, then emit a lightweight structured summary for downstream Galaxy translation.
Directory Mold with only index.md frontmatter.
source-specific fields are coherent.
eval.md declares cases and check type.
6 typed references; 0 resolver issues.
All on-demand references describe triggers.
Hypothesis references include verification.
Typed Mold references describe what casting consumes and when the generated skill should load each artifact.
Structured contract copied for validation or lookup.
Background synthesis loaded by explicit progressive-disclosure metadata.
Background synthesis loaded by explicit progressive-disclosure metadata.
Tool-level install metadata. Aggregated into the cast bundle's Required Tools section.
Tool-level install metadata. Aggregated into the cast bundle's Required Tools section.
Tool-level install metadata. Aggregated into the cast bundle's Required Tools section.
Structured summary of a CWL Workflow + CommandLineTool tree: inputs, outputs, scatter, conditionals, requirements.
Read a CWL Workflow entrypoint, resolve referenced Workflow, CommandLineTool, ExpressionTool, and Operation documents, and emit summary-cwl.json. This Mold is source-specific and target-agnostic: it records what the CWL says, validates and normalizes references, and leaves Galaxy interface/data-flow choices to downstream molds.
CWL is already a structured workflow language. Do not imitate summarize-nextflow‘s heavy inference machinery unless a real CWL fixture proves the need.
The Mold expects:
tests: [].A single JSON document conforming to summary-cwl. Sketch shape:
{
"summary_version": "1",
"source": {
"ecosystem": "cwl",
"workflow": "rnaseq-qc",
"url": "https://example.org/workflows/rnaseq-qc.cwl",
"version": "abc123",
"license": null,
"slug": "rnaseq-qc",
"cwl_version": "v1.2",
"entrypoint": "rnaseq-qc.cwl#main"
},
"documents": {
"entrypoint": "rnaseq-qc.cwl",
"normalized_path": "normalized/rnaseq-qc.cwl.json",
"validation": {
"command": "cwltool --validate rnaseq-qc.cwl",
"status": "valid",
"diagnostics": []
}
},
"workflow_inputs": [
{
"id": "reads",
"label": "reads",
"type": "File[]",
"optional": false,
"default": null,
"doc": "Input FASTQ files.",
"format": "edam:format_1930",
"secondary_files": []
}
],
"workflow_outputs": [
{
"id": "report",
"label": "report",
"type": "File",
"output_source": "multiqc/report",
"doc": null,
"format": "edam:format_2330",
"secondary_files": []
}
],
"steps": [
{
"id": "fastqc",
"run": "#fastqc_tool",
"run_class": "CommandLineTool",
"label": "FastQC",
"doc": null,
"in": [{ "id": "reads", "source": ["reads"], "value_from": null }],
"out": ["html", "zip"],
"scatter": ["reads"],
"scatter_method": "dotproduct",
"when": null,
"requirements": [],
"hints": []
}
],
"tools": [
{
"id": "fastqc_tool",
"label": "FastQC",
"base_command": ["fastqc"],
"arguments": [],
"inputs": [],
"outputs": [],
"requirements": [
{
"class": "DockerRequirement",
"docker_pull": "quay.io/biocontainers/fastqc:0.12.1--hdfd78af_0",
"docker_image_id": null,
"packages": [],
"raw": {}
}
],
"hints": []
}
],
"graph": {
"nodes": [{ "id": "fastqc", "kind": "step", "label": "FastQC" }],
"edges": [{ "from": "reads", "to": "fastqc/reads", "via": ["scatter"] }]
},
"tests": [],
"warnings": []
}
cwltool --validate or equivalent library validation. If invalid, emit source provenance, validation diagnostics, warnings[], and do not invent graph structure.cwl-normalizer from cwl-utils when possible. Use the normalized JSON document as the preferred extraction surface because referenced documents have been gathered, older CWL versions have been upgraded to v1.2 when needed, and the output is regular JSON.Workflow inputs/outputs, step wiring, scatter, scatterMethod, when, requirements, and hints directly from the normalized CWL object model.CommandLineTool command surface: baseCommand, arguments, input/output bindings, output globs, DockerRequirement, and SoftwareRequirement.via markers for scatter, linkMerge, pickValue, valueFrom, and secondaryFiles.foundry validate-summary-cwl summary-cwl.json before returning it.valueFrom, when, expression-based globs, and JavaScript-heavy tools should surface warnings when they affect data shape.Directory types; downstream Galaxy molds decide whether to use directory-capable wrappers, explicit files, or collections.Workflow in run: is a step target, not a reason to flatten blindly. Summarize its boundary and warn if downstream Galaxy translation needs expansion.DockerRequirement and SoftwareRequirement, but do not resolve them into Tool Shed tools or new wrappers here.