Repository navigation
Address Nexus service catalogs without mutating the caller namespace - #114
Conversation
…space # Conflicts: # src/durable_workflow/client.py
|
Reviewed The target is in explicit call identity and recorded metadata. Default histories still replay, and changing the recorded target raises a typed replay mismatch before a new request. Focused tests exercise concurrent worker heartbeat, actual outgoing request headers/body, target-scoped payload upload, original caller/run metadata, worker forwarding and the minimal replay corpus fixture. All source, integration, package, docs and target-branch checks pass in run 38128123832. This is source qualification. Issue #111 remains open until publication and actual worker execution. Terminal Nexus lifecycle remains durable-workflow/workflow#753. |
Fix
Addresses #111. Add
target_namespaceto the ordinary client and authored Nexus workflow API. Service execution and its payload discovery/upload use the target's namespace and control credential. Worker requests keep the caller's namespace and worker credential. The scoped request view shares the HTTP pool and isolates discovery, payload cache and direct provider state.Explicit targets participate in deterministic call identity and recorded metadata. Existing default-target identities and histories stay replayable. A changed recorded target raises
NonDeterministicReplayErrorwithout publishing another service request or failing the workflow as an application error.Twenty-six focused Nexus client, worker, payload and replay tests pass locally, including the new replay corpus fixture. All normal Python 3.10/3.11/3.12, integration, corpus, lint, package, docs, boundary and target-branch checks pass at a7c5d91. The merged wire correction #113 is included through a normal main merge. Publication and the actual installed worker proof remain under #111. Full terminal service/caller qualification stays under durable-workflow/workflow#753 and durable-workflow/server#394.