Repository navigation
refactor(runtime): extract the pipeline vocabulary into dynamo-pipeline - #32
Closed
ishandhanani wants to merge 1 commit into
Closed
ishandhanani wants to merge 1 commit into
ishandhanani wants to merge 1 commit into
Conversation
New leaf crate `lib/pipeline` (`dynamo-pipeline`) holds the runtime-free
pipeline vocabulary: the `AsyncEngine` traits and streams (`engine`), the
request `Context`, pipeline nodes, stream/engine type aliases and
`PipelineError` (`pipeline`), the `DynamoError`/`ErrorType`/`BackendError`
taxonomy migration and routing key on (`error`), and the `Annotated` stream
envelope (`protocols::annotated`, `protocols::maybe_error`). It depends on
tokio, futures, serde, serde_json, anyhow, thiserror, either, and uuid only.
`dynamo-runtime` depends on it and re-exports everything at the historical
paths (`dynamo_runtime::{engine, error, pipeline, protocols::annotated}`), so
no caller changes. The runtime keeps what needs the runtime: the network
transports under `pipeline::network`, the routing policy, and the
transport-bound `RequestStream`/`ManyIn` aliases (kept local so the ingress
handler impls stay coherent). The eight jetstream `PipelineError` variants
and the `local_ip_address`/`prometheus` `#[from]` variants had no users and
are dropped; the one `?` site maps to `PipelineError::Generic`.
Phase 5 of the runtime-optional frontend roadmap: a consumer that needs the
engine contract without the distributed runtime can now depend on
`dynamo-pipeline`. Owned by the runtime area in CODEOWNERS.
Signed-off-by: Ishan Dhanani <ishandhanani@gmail.com>
ishandhanani
had a problem deploying
to
external_collaborator
September 3, 2026 15:44 — with
GitHub Actions
Failure
Owner
Author
|
DEP for this stack: #33. |
Owner
Author
This branch had an error being deployed
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.
Stacked on #31. Phase 5 as written: "extract pipeline traits into a leaf crate".
Summary
lib/pipeline(dynamo-pipeline):engine(AsyncEngine traits/streams),pipeline(Context, nodes, type aliases, PipelineError),error(DynamoError/ErrorType/BackendError taxonomy),protocols::{annotated, maybe_error}. Dependencies: tokio, futures, serde, serde_json, anyhow, thiserror, either, uuid. No dynamo-runtime edge.dynamo-runtimedepends on it and re-exports at the historical paths, so every existingdynamo_runtime::pipeline::…/::engine::…/::error::…/::protocols::annotated::…import compiles unchanged across the workspace and the Python bindings.pipeline::networktransports, routing policy, and the transport-boundRequestStream/ManyIn/client-streaming aliases (a local type is required for the ingress handler impls to remain coherent).PipelineErrorvariants (8 jetstream#[from],local_ip_address,prometheus; none had users); one?site now maps toPipelineError::Generic.lib/pipeline/under the runtime area.This is the first half of the Phase 5 extraction: the engine contract is runtime-free.
dynamo-llmstill depends ondynamo-runtimefor discovery, components, and transports, so the second half (movingdynamo-llm's wire protocols off the runtime) remains.Validation
cargo test -p dynamo-pipeline(37 unit + doctests),cargo test -p dynamo-runtime --lib(602 passed),cargo test -p dynamo-llm --lib(2557 passed).cargo check --workspace --all-targets, bindingscargo check,cargo clippy -p dynamo-pipeline -p dynamo-runtime -p dynamo-llm --all-targets: clean.build_codeowners.py --strictpasses.