fix(workflows): make tracked-event dispatch durable - #467
Draft
vladbisceanu wants to merge 6 commits into
Draft
Conversation
vladbisceanu
marked this pull request as draft
August 31, 2026 10:25
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Problem
/v1/trackstores an event before it dispatches matching workflows. A process exit or workflow-start failure in that gap can leave an accepted event with no workflow execution. The previous path logged dispatch failures and moved on, so there was no bounded recovery path.What changed
The recovery invariant is: an accepted event remains recoverable until every matching workflow target has a durable enrollment or resume claim, or the bounded retry policy dead-letters it for inspection.
Stack
This PR is stacked because the durability path builds on three open PRs that all target
next:9836930616ce56plus its current-nextfixture update9657c7ee079765The P6-specific commits are
27f4332and8b2e421. The dependency diff will disappear when those PRs merge and this branch is rebased.Known follow-up
Final local review found the event-versus-timeout race already assigned to setup-works#139: the timeout path still needs the compare-and-swap state transition planned for P7. This PR does not claim to close that race. P7 will be a separate upstream PR before deployment.
Verification
Tracks setup-works#138.