Architecture and boundaries¶
The runtime resolves the current CWL into a TranspilerContext, including its
Processes, metadata, and resolver. baseline_plugin resolves only previous
through that resolver, compares both contexts, and writes a JSON report.
The library function baseline(previous, current, review_bump=None) returns the
report directly without writing a file (review_bump is keyword-only).
| Module | Responsibility |
|---|---|
normalize |
Serialize supplied DOMs; normalize identities; index parameters and schemas |
types |
Directional type assignability, including an unknown result |
compare |
Compatibility findings, residual change reporting, version aggregation |
models |
Report, finding, and bump types |
plugin |
Options, previous-release resolution, report writing, and check failures |
Normalization uses save(relative_uris=False). It strips the owning document's
location from CWL identity/reference fields while retaining scopes and external
URIs. Defaults, command arguments, expressions, and extension values remain
literal. Named schema references resolve within a Process when unambiguous.
Generated IDs for anonymous inline tools are normalized; public Process IDs
need stable identifiers.
The runtime owns parsing, imports, graph validation, and metadata extraction.
The plugin does not execute CWL, evaluate JavaScript, inspect image contents,
fetch ontologies, or recursively fetch external run URLs. Pin dependencies
and supply their resolved snapshots when reproducible comparisons are needed.
Changes behind an unchanged external reference absent from the supplied DOMs
cannot be detected. Missing or inherited schema definitions can leave type
compatibility unresolved.
Comparison concerns the serialized DOM, not source text. Comments, spelling, and distinctions discarded by the parser cannot be recovered. Finding paths refer to the normalized comparison model, not file line numbers. Neither input context nor its metadata is mutated.
The compatibility policy separates static guarantees from behavior that needs a reviewer. A report is not proof of scientific or behavioral equivalence.