Description
LangGraph — this project's own tracked comparator for durable/checkpointed graph execution, "a dimension no other tracked agent covers" — has two long-standing patterns Zeph lacks: a generic namespaced cross-thread Store, and a Command return value letting a node dynamically update state and route to any named node at runtime. Zeph has narrower, purpose-built analogs for both.
Current State (source-verified)
Cross-thread store: bespoke, non-generic tables only — learned_preferences (crates/zeph-memory/src/store/preferences.rs:48-110, globally keyed, no conversation_id), persona facts (crates/zeph-memory/src/store/persona.rs, provenance-only session id), semantic/cross_session.rs (search, not addressable KV). No generic store.put(namespace, key, value) primitive.
Dynamic handoff: the only dynamic-routing primitive is recovery.route_to: Option<TaskId> (crates/zeph-orchestration/src/graph.rs:453, hardened this session by PR #6346) — statically declared at DAG-definition time, single-target, failure-only (dag.rs:214-234 rejects chaining; activates only via mark_dormant_route_to_targets, dag.rs:418). No agent-returned Command(goto=<any_agent>, update=state) exists for normal (non-failure) dynamic routing.
Expected Behavior
(a) a generic namespaced cross-thread store usable by any subsystem/tool without a bespoke schema; (b) a Command-like return type allowing runtime dynamic routing beyond pre-declared failure fallbacks.
Actual Behavior
Memory has several purpose-built global tables but no generic store; orchestration routing is fixed at DAG-definition time except for the narrow route_to failure fallback.
Environment
- Version: main @ df20cd9
- Relevant crates: zeph-memory, zeph-orchestration
Spec
.local/specs/072-cross-thread-store-dynamic-handoff/spec.md
See Also
LangGraph Store/Command; PR #6346 (nearest existing primitive to build from or supersede)
Description
LangGraph — this project's own tracked comparator for durable/checkpointed graph execution, "a dimension no other tracked agent covers" — has two long-standing patterns Zeph lacks: a generic namespaced cross-thread
Store, and aCommandreturn value letting a node dynamically update state and route to any named node at runtime. Zeph has narrower, purpose-built analogs for both.Current State (source-verified)
Cross-thread store: bespoke, non-generic tables only —
learned_preferences(crates/zeph-memory/src/store/preferences.rs:48-110, globally keyed, noconversation_id), persona facts (crates/zeph-memory/src/store/persona.rs, provenance-only session id),semantic/cross_session.rs(search, not addressable KV). No genericstore.put(namespace, key, value)primitive.Dynamic handoff: the only dynamic-routing primitive is
recovery.route_to: Option<TaskId>(crates/zeph-orchestration/src/graph.rs:453, hardened this session by PR #6346) — statically declared at DAG-definition time, single-target, failure-only (dag.rs:214-234rejects chaining; activates only viamark_dormant_route_to_targets,dag.rs:418). No agent-returnedCommand(goto=<any_agent>, update=state)exists for normal (non-failure) dynamic routing.Expected Behavior
(a) a generic namespaced cross-thread store usable by any subsystem/tool without a bespoke schema; (b) a
Command-like return type allowing runtime dynamic routing beyond pre-declared failure fallbacks.Actual Behavior
Memory has several purpose-built global tables but no generic store; orchestration routing is fixed at DAG-definition time except for the narrow
route_tofailure fallback.Environment
Spec
.local/specs/072-cross-thread-store-dynamic-handoff/spec.md
See Also
LangGraph
Store/Command; PR #6346 (nearest existing primitive to build from or supersede)