Repository navigation
2.5.3
Condition replay drift now preserves the workflow for recovery.
- Changed condition keys or predicate fingerprints raise
NonDeterministicReplayErrorwith the original wait identity, workflow sequence and conflicting definitions. - Workers fail the current task without recording a terminal workflow failure. Accepted updates preserve their replay fault for repair, and queries report unavailable state with the original cause.
- Deploy compatible code, then call
await handle.repair()to resume the blocked task. The Server holds replay failures instead of repeatedly running incompatible code. - Application predicate and update-handler failures keep their ordinary failure behavior.
The source qualification covers Python 3.10–3.12, official replay fixtures and connected recovery through cold workers. Publication qualification uses an actual Python 2.5.2 producer, the exact PyPI successor and published Server 2.5.16. Existing histories and public wire contracts are unchanged.