When defining expressions or parameter references ($(...) or ${...}) within a workflow step's in section, the parameter context should resolve to the local input object of that specific step (the values passed to the step via source or valueFrom), not the top-level (global) input object of the entire workflow.
The CWL specification defines a parameter context for resolution. Our current implementation in CTADIRAC extension seems to mistakenly use the workflow's top-level inputs object when it should be using the dynamically generated input object specific to the step being executed.
This behavior is problematic because:
- It can lead to unexpected reference errors if a parameter exists in the workflow's global inputs but has not been explicitly mapped to the step's in section.
- It violates the principle of step isolation and explicit data flow, which is a core tenet of CWL. The step should only have access to data that has been explicitly passed to it.
In order to avoid such issues in the future, we should add corresponding tests and ensure the correct parameter context provision for the inputs resolution.