Repository navigation
Deliver mocked activity and child failures with bounded retries - #209
Merged
Merged
Conversation
rmcdaniel
marked this pull request as ready for review
October 23, 2026 10:37
|
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.



WorkflowEnvironmentcurrently lets activity mock exceptions escape before authored workflow handlers can catch them and cannot mock child-body failures or scheduled retries. Record terminal history through the existing replayer, add synchronous child callables, apply explicit attempt budgets without sleeping, and expose per-call counts across continuation runs. A configurable cap raises a harness error before a larger policy is falsely reported exhausted.Addresses #179. Activity failures preserve the real Worker's outer
NonRetryableErrortype/cause and flag. Child failures use the existing workflow failure mapper and class/message history; no invented child failure field or production replay/retry change. Both short and qualified retry-exclusion names work. Omitted policies remain one attempt. Missing fixtures, unsupported async mocks and cap exhaustion fail clearly. Recipes cover failure handling, retry exhaustion and compensation, with real-Server limits.Tests-first
e03d03d: all 31 controls fail on unchanged source. Functional77f4f6efull local Python 3.12: 3,254 pass / two skips / 105 integration deselections / one existing fork warning, 169.32 seconds. Strengthened component qualification passes 94 controls. Current target23a54e3319b9c0ad3ba2d382009a6b2d0f4694c6, including merged #173 source31410db82, passes 136 combined harness and bundle controls in 2.09 seconds. The prior5861ce4ctarget passed 253 combined controls in 5.50 seconds. Ruff and mypy on 37 source files pass. Fresh normal CI is 39943002596. The actionable test-only Sonar report was corrected without changing its assertion; previous target readback is zero. Fresh consolidated head23a54e33full local qualification passes 3,376 / two skips / 105 integration deselections / one existing fork warning in 127.69 seconds. Final-head Sonar reports zero OPEN/CONFIRMED issues and zero unreviewed hotspots; CodeQL has no open alerts. Hosted integration is the remaining normal gate.Source documentation explicitly marks these APIs unreleased. Publication and normally installed acceptance remain after the existing #197 Trusted Publisher setup. No tag/version, Server/native/frozen or Cloud adoption is included.