Problem
With interaction chains (#3606902) a visitor gets a link scoped to their chain. Once the run moves past that chain the link is stale: today a stale branch-scoped link shows "nothing for you to do". For a multi-step journey we want a choice in how an old link behaves.
Proposed
A per-workflow setting:
- isolated (default): an old chain link shows only its own chain. A leaked or bookmarked link to an earlier step reveals nothing about what came later. Privacy-safe.
- catch-up: an old chain link forward-resolves through the chain predecessor links to the visitor's current chain, so one durable link always lands them where they are now.
Mechanism
The chain predecessor links recorded in #3606902 already form a per-branch list of chains. catch-up walks them forward (the chain whose predecessor is this one, repeatedly) to the latest chain in the branch's lineage, then renders that chain's parked interaction or aggregated messages. An instance-scoped link already follows the current parked step, so the setting mainly governs a branch-scoped link once its token is consumed.
The setting is stored as a third_party_setting on the workflow (owned by orchestra_interaction, like the chain fields) and read by the dispatcher. Default isolated.
Fork caveat
Under a fan-out a chain can have more than one successor, so catch-up has no single current chain to resolve to; it falls back to isolated there.
Dependency
Builds on the interaction chains work in #3606902.
Issue fork orchestra-3606924
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 #3
mably commentedComment #5
mably commented