Skip to content

feat(core): what DiracX accepts in a submitted CWL process - #1116

Draft
ryuwd wants to merge 2 commits into
DIRACGrid:mainfrom
ryuwd:cwl-2-policy
Draft

ryuwd wants to merge 2 commits into
DIRACGrid:mainfrom
ryuwd:cwl-2-policy

Conversation

@ryuwd

@ryuwd ryuwd commented Oct 23, 2026

Copy link
Copy Markdown
Contributor

Closes #1107.

Blocked by #1114, whose commit this branch includes until it merges.

ryuwd added 2 commits October 23, 2026 16:18
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
check_policy checks every process of a canonical tree against rules
beyond valid CWL, and lists every violation in one error:

- requirements outside an allow-list every backend can honour are
  refused, on a process and on a step, dirac: requirements included;
  hints are not restricted;
- DockerRequirement is accepted, to run with Apptainer, for an image to
  pull (dockerPull, dockerImageId); dockerFile, dockerLoad and
  dockerImport are refused, in hints too, since they build or fetch an
  image on the worker node;
- abstract Operations are refused, since no runner can execute them;
- processes larger than 256 kB are refused.

Closes DIRACGrid#1107
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] Submission policy for CWL processes

1 participant