You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
fix: eliminate double-serialization in race() and all() results (#59)
race() and all() were double-encoding values by embedding JSON strings
consumers to need extra json.loads() calls to access structured data.
- Add wrap_ok/wrap_err helpers that parse values before embedding
- Fix make_select_future and make_join_future for all task types
- Update race/all/e2e tests to assert direct values (no extra parse)
- Add type preservation tests (string, number, object, array, null, bool)
- Add all()+dequeue_event and race()+dequeue_event regression tests
- Add SDK symmetry section to copilot-instructions.md
Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
Copy file name to clipboardExpand all lines: .github/copilot-instructions.md
+13Lines changed: 13 additions & 0 deletions
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -1,5 +1,18 @@
1
1
# duroxide-python — Copilot Instructions
2
2
3
+
> **🚨 STOP: DO NOT `git commit` OR `git push` WITHOUT EXPLICIT USER PERMISSION 🚨**
4
+
>
5
+
> Always ask before committing or pushing. Never assume.
6
+
7
+
## ⚠️ SDK Symmetry — duroxide-python & duroxide-node MUST stay in sync
8
+
9
+
When making changes to this SDK, **always** check `../duroxide-node` for symmetry:
10
+
1.**Bug fixes**: If you fix a bug here, apply the same fix in duroxide-node (and vice versa)
11
+
2.**API parity**: Every public API in one SDK must have an equivalent in the other (adjusted for language idioms — snake_case in Python, camelCase in JS)
12
+
3.**Test parity**: Every test in one SDK must have a corresponding test in the other
13
+
4.**Feature parity**: New duroxide features exposed in one SDK must be exposed in both
14
+
5.**Rust handler code** (`src/handlers.rs`): Both SDKs share the same interop architecture — `execute_task`, `make_select_future`, `make_join_future` should be kept structurally identical
15
+
3
16
## Project Overview
4
17
5
18
**duroxide-python** is a Python SDK for the duroxide durable execution runtime. It wraps the Rust duroxide library via PyO3/maturin, providing a generator-based API for writing deterministic, replayable workflows.
0 commit comments