Skip to content

CTM-330: ordering of set values in expression evaluation#3548

Merged
davidangb merged 6 commits intodevelopfrom
da/CTM-330_workflowInputOrdering
Jan 28, 2026
Merged

CTM-330: ordering of set values in expression evaluation#3548
davidangb merged 6 commits intodevelopfrom
da/CTM-330_workflowInputOrdering

Conversation

@davidangb
Copy link
Contributor

@davidangb davidangb commented Jan 27, 2026

Ticket: CTM-330

When evaluating an expression against a set of entities, the result does not respect the order of entities in the set.

Imagine you have some participants:

participant_id name
1 Alice
2 Bob
3 Carol
4 Dan
5 Eve

And a participant set:

participant_set_id participants
my-set [1, 2, 3, 4, 4, 4, 4]

And you run a workflow against my-set using an expression of this.participants.name into a WDL input of Array[String].

Previously, you would have received an input that did not respect your set order:
[Bob, Dan, Carol, Alice]

Now, you will have received an input that exactly matches your set:
[Alice, Bob, Carol, Dan]

Note that in both cases, multiple references to the same entity are de-duplicated; "Dan" only appears once. This preserves behavior of pre-Quicksilver expression evaluation. I verified pre-Quicksilver behavior by checking out a commit before we deleted the legacy expression evaluation and adapting this PR's unit tests into that old commit.

Also note that the legacy pre-Quicksilver submissions also did not handle ordering correctly. So, this fix is technically a behavior change, though it feels correct.

@davidangb davidangb marked this pull request as ready for review January 27, 2026 17:27
@davidangb davidangb requested a review from a team as a code owner January 27, 2026 17:27
@davidangb davidangb requested review from calypsomatic and rjohanek and removed request for a team January 27, 2026 17:27
@davidangb davidangb merged commit b67541f into develop Jan 28, 2026
25 checks passed
@davidangb davidangb deleted the da/CTM-330_workflowInputOrdering branch January 28, 2026 16:45
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.

3 participants