Skip to content

Replay can leave post-condition activity history unconsumed after signals and updates #50

Description

@rmcdaniel

User-visible defect\n\nA signal or applied update accepted after a condition has resolved, while the workflow's successor activity is running, can retain the completed condition's workflow sequence. Cold replay currently falls back to that stale sequence after an intervening activity boundary and binds the receiver to the already-completed condition.\n\nThe completed condition will not drain receivers recorded after its terminal event. The workflow therefore reaches its next condition with stale state and remains waiting even though the durable history contains the accepted receivers and the successor activity completion.\n\n## Reproduction\n\n1. Open and satisfy condition A with a signal.\n2. Schedule activity B.\n3. While B is running, accept an update and another signal whose recorded workflow sequence still references condition A.\n4. Complete B.\n5. Replay from the full history into a condition that depends on the update and second signal.\n\nCurrent result: replay emits another condition wait.\n\nRequired result: replay applies the post-boundary receivers at their ordinary activity boundary, consumes B's durable result, and completes.\n\n## Acceptance\n\n- Treat recorded event position as authoritative once an activity, timer, child, or terminal step separates a receiver from an earlier condition, even when the receiver carries that condition's stale sequence.\n- Cover both SignalReceived and UpdateApplied in a cold-replay regression with post-condition activity history.\n- Preserve explicit selected-condition sequence binding and repeated physical wait behavior.\n- Pass the complete non-integration suite and static checks.

Metadata

Metadata

Assignees

No one assigned

    Labels

    authority:githubGitHub is the authoritative lifecycle record for this workcompletion:evidence-verifiedAcceptance, fixed version, and required operational evidence are publicly verifiedkind:defectA public product behavior is incorrectpriority:P1High-priority product or release riskrepo:sdk-pythonOwned by the Python SDK repositorystatus:doneDerived from the authoritative closed issue state

    Type

    No type

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions