A join that reads a collected variable to decide (a quorum, threshold or matching join, and the merge that feeds a count condition) compares the value as a scalar. When an interaction stores a structured outcome instead of a bare value, for example the comment_operation task which writes a {result, comment} pair, the comparison never matches its approve value, so the quorum never counts the vote and the join stalls.
A join votes on the decision, not the whole record. When a collected value is an array with a result entry, the join should vote on that entry; a plain scalar is unchanged. This keeps both the value-aware join decision and the merged vote list a count condition routes on reading the decision, whatever shape the interaction stored it in.
Steps to reproduce
Fork into an operator branch running a comment_operation interaction whose outcome feeds a quorum join collect variable. The operator submits a decision; the quorum stays open because the structured {result, comment} value never equals the approve value.
Proposed resolution
In JoinCoordinator, collapse a collected value that is an array with a result entry to that entry, at both the join-decision and the vote-merge collection points, so every value-aware join handles a structured outcome. Adds kernel coverage for the merged list and the quorum decision.
Issue fork orchestra-3612351
Show commands
Start within a Git clone of the project using the version control instructions.
Or, if you do not have SSH keys set up on git.drupalcode.org:
Comments
Comment #4
mably commented