Skip to content

feat(core): canonical identity of CWL processes - #1114

Open
ryuwd wants to merge 1 commit into
DIRACGrid:mainfrom
ryuwd:cwl-1-canonical
Open

ryuwd wants to merge 1 commit into
DIRACGrid:mainfrom
ryuwd:cwl-1-canonical

Conversation

@ryuwd

@ryuwd ryuwd commented Oct 23, 2026

Copy link
Copy Markdown
Contributor

Closes #1106. Part of #1080; replaces part of #1097.

A process is identified by the SHA-256 of a canonical form defined over
the parsed JSON document, not over any CWL library's output, so that it
is deterministic, stable across library upgrades and reproducible by any
tool. Ids, doc and label where they are metadata, $namespaces and dirac:
hints are dropped; prefixes are expanded to full URIs; lists become
maps; fully scoped identifiers are shortened against their scope; type
shorthands are expanded and named types written by short name. Each
child run body is replaced by its own identity, so a workflow's identity
covers its children's (a Merkle tree). pack and unpack convert to and
from a self-contained $graph whose components are named by their
identity.

Documents must be resolved before canonicalisation: $import, $include
and any other schema-salad directive is refused, since the identity
would not cover what it names and a runner would fetch it. Standard
library only.

Closes DIRACGrid#1106
Part of DIRACGrid#1080
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

[Transformation System] Canonical identity of CWL processes

1 participant