diff --git a/lib/galaxy/workflow/modules.py b/lib/galaxy/workflow/modules.py index dcbc983ebdb..382ed565c73 100644 --- a/lib/galaxy/workflow/modules.py +++ b/lib/galaxy/workflow/modules.py @@ -2085,13 +2085,8 @@ class PickValueModule(WorkflowModule): output = non_null[0] elif mode == "all_non_null": - if not non_null: - raise FailWorkflowEvaluation( - why=InvocationFailureExpressionEvaluationFailed( - reason=FailureReason.expression_evaluation_failed, - workflow_step_id=step.id, - ) - ) + # CWL spec: all_non_null returns list of non-null values, + # which may be empty if all inputs are null. output = self._create_collection_from_list(trans, invocation_step, non_null) else: diff --git a/lib/galaxy/workflow/run.py b/lib/galaxy/workflow/run.py index db0442ec4e0..c38334698e9 100644 --- a/lib/galaxy/workflow/run.py +++ b/lib/galaxy/workflow/run.py @@ -724,7 +724,13 @@ class WorkflowProgress: # Determine output value from inputs_by_step_id or default outputs = {} if step.id not in self.inputs_by_step_id: - outputs["output"] = step.get_input_default_value(NO_REPLACEMENT) + default_value = step.get_input_default_value(NO_REPLACEMENT) + # For parameter_input steps, unwrap {"src": "json", "value": X} + # dicts to just X — matching the unwrap logic in + # InputParameterModule.get_input_value(). + if step.type == "parameter_input" and isinstance(default_value, dict): + default_value = default_value.get("value", default_value) + outputs["output"] = default_value else: outputs["output"] = self.inputs_by_step_id[step.id]