Backport upstream workflow-host shutdown fix - #93
Merged
GoonMachine merged 3 commits intoJul 31, 2026
Conversation
Use a daemon stdin reader so a blocked follow-up read cannot keep asyncio.run alive after a workflow result or error. Add a regression test covering the Paybill failure shape.
Replace the daemon reader variant with the tested implementation and regression suite from paradigmxyz#1238 at 44bef27.
Carry the follow-up from paradigmxyz#1238 at b5a32b7 so pipe-backed workflow hosts accept protocol messages larger than 64 KiB.
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.
Summary
Upstream provenance
This PR carries the upstream paradigmxyz#1238 changes through
b5a32b7692f53050560be5f7fc3c7a7ce7b4fdd6, applied on top of TipLink main. It is a short-lived backport and should disappear through normal upstream synchronization after Paradigm merges paradigmxyz#1238; it is not intended as permanent TipLink-only behavior.Production evidence
A CDD workflow emitted a terminal error but the host remained alive because
asyncio.runcould not join the blocked stdin executor thread. The durable task stayed running instead of recording the failed attempt promptly.Tests
uv run --project services/workflow-python python -m unittest discover -s services/workflow-python/tests -p "test_*.py"