Make joins synchronize the matching arc set so they compose with the inclusive gateway

Implements https://www.drupal.org/project/orchestra/issues/3612093

Discriminator and AND joins (quorum, threshold, timeout, wait_all) now count against the active arc set (the incoming arcs whose condition holds) rather than every declared incoming arc, so they compose with the inclusive gateway and no longer deadlock on a branch that was never started. wait_all becomes equivalent to matching; JoinCoordinator derives the early-fire flag from the matching arcs.

Adds unit coverage (JoinDecisionTest) for all four joins on the active-arc basis, an end-to-end kernel test (MatchingBasisJoinTest) that reproduces the all-confirm deadlock and asserts the fix, and updates docs/joins-splits.md with the unified behavior and the shared-state contract for join-arc conditions.

Merge request reports

Loading