The external interaction dispatcher (orchestra_interaction) keys its capability token on the instance, so one link drives whatever step the instance is currently parked on. That fits two cases well: a sequential chain of interactive waits, and a single wait offered to several people where the first to act wins (the same link emailed to several recipients).

It does not support parallel external interactions: an AND-split where several branches are each parked on their own external-interaction node, and a distinct validation link is emailed to a different person per branch, all of whom must act. Because the token is instance-scoped, every link is effectively the same credential, and the dispatcher resolves the parked step deterministically (the lowest-id token), so all recipients are routed to the same branch and the others cannot reach theirs.

Proposed solution

Make the link token-scoped (per branch): the capability targets a specific parked token, not just the instance, so each recipient link drives its own branch.

  • Encode the token id alongside the instance id and expiry in the self-encoding capability token, validated the same way; the dispatcher loads that exact parked token and dispatches to its interaction.
  • Carry the token id into the webform binding element so the resume handler resumes that token, not "the parked one".
  • When a branch chains (one person has step1 then step2), re-mint the link for the next parked token in that lineage.
  • Keep single-wait links working: a token-scoped link is a strict superset of the current instance-scoped one.

This is the deferred half of the parallel-interactive-wait findings from the pre-alpha4 audit. The audit fixes (MR !223) took the instance-scoped, one-interactive-wait-at-a-time path and documented the limitation; this issue is the follow-up to support true parallel, per-recipient interactions.

Issue fork orchestra-3606530

Command icon 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

mably created an issue. See original summary.

mably’s picture

Status: Active » Needs review

  • mably committed 7564c303 on 1.x
    feat: #3606530 External interaction: per-branch (token-scoped) links so...
mably’s picture

Status: Needs review » Fixed

Now that this issue is closed, review the contribution record.

As a contributor, attribute any organization that helped you, or if you volunteered your own time.

Maintainers, credit people who helped resolve this issue.

Status: Fixed » Closed (fixed)

Automatically closed - issue fixed for 2 weeks with no activity.