Skip to content

Add workflowhub validation package - #116

Merged
kMutagene merged 2 commits into
nfdi4plants:devfrom
caroott:feature/validate-wfhub
Aug 7, 2026
Merged

Add workflowhub validation package#116
kMutagene merged 2 commits into
nfdi4plants:devfrom
caroott:feature/validate-wfhub

Conversation

@caroott

@caroott caroott commented Aug 5, 2026

Copy link
Copy Markdown
Member

Adds workflowhub@0.0.1. It tells an ARC owner whether the workflows in workflows/ and the runs in runs/ carry enough metadata to be packaged as a Workflow RO-Crate and deposited on WorkflowHub.

Every workflow and run is checked on its own and reported under its own identifier, so an ARC can hold a mix of ready and not yet ready items. The badge shows how many are ready. The ARC as a whole passes when it loads, has a license, and has at least one item that satisfies everything.

The requirements come from two sources: what ARCtrl 3.2.0 actually needs to convert a workflow or a run into a crate, and what WorkflowHub itself asks of an uploaded crate.

Two current caveats:

  • The per run process table check is on purpose stricter than ARCtrl 3.2.0 needs. ARCtrl validates only the first workflow invocation, so whether a run converts currently depends on the order of its process tables. Certain combinations of processes with inupts/outputs present work or don't work. At this time, the validation requires at least the first process to have both set (they should be annotated anyways)
  • Picking a WorkflowHub team is mandatory when registering, but it is not part of the ARC, so it is only mentioned in the description and not validated.

let workflowResults = workflows |> List.map (fun w -> w, workflowRequirements w)
let runResults = runs |> List.map (fun r -> r, runRequirements r)

let readyWorkflows = workflowResults |> List.filter (fun (_, rs) -> rs |> List.forall holds)

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

This is either weird design or too sophisticated for me to understand. Requirement.holds looks to me like it execute the test cases. so if that is the case, this package runs the test cases at least twice, one time to fill these lists and then to create the non critical tests.

@kMutagene
kMutagene merged commit f2aa10d into nfdi4plants:dev Aug 7, 2026
5 checks passed
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.

2 participants