[package] name = "op-orchestrator" version.workspace = true edition.workspace = true rust-version.workspace = true license.workspace = true repository.workspace = true description = "OpenPay cross-rail orchestrator: idempotency-keyed payment intents, fraud-gated routing, retry/fallback across card and A2A rails." publish = false [dependencies] # `pci-scope` is enabled because op-vault (transitive) turns it on and # cargo unifies workspace features. The orchestrator only ever sees a # tokenized method by design, but it MUST compile the match arm for # `PaymentMethod::RawPan` because the variant exists in the unified # `op-core`. The arm errors loudly if reached — it's a design violation. op-core = { path = "../op-core", features = ["pci-scope"] } op-vault = { path = "../op-vault", features = ["in-memory"] } op-fraud = { path = "../op-fraud" } op-rails-card = { path = "../op-rails-card" } op-rails-a2a = { path = "../op-rails-a2a" } op-rails-crypto = { path = "../op-rails-crypto" } thiserror = { workspace = true } serde = { workspace = true } serde_json = { workspace = true } uuid = { workspace = true } sha2 = "0.11" tracing = { workspace = true } # Optional OpenTelemetry export. Gated behind the `telemetry` # feature so headless deployments that don't ship spans aren't # forced to compile the OTel stack. When the feature is off # `instrument_transition` still emits a plain `tracing::span!` — # subscribers downstream pick it up via the standard # `tracing-subscriber` layers. tracing-opentelemetry = { version = "0.32", optional = true } opentelemetry = { version = "0.31", optional = true } opentelemetry-otlp = { version = "0.31", features = ["grpc-tonic"], optional = true } opentelemetry_sdk = { version = "0.31", features = ["rt-tokio"], optional = true } tracing-subscriber = { workspace = true, optional = true } [features] default = [] # Wires `init_telemetry` to push spans over OTLP to a collector # (Jaeger, Tempo, Honeycomb, etc.). Off by default so the orchestrator # stays a pure compute crate. telemetry = [ "dep:tracing-opentelemetry", "dep:opentelemetry", "dep:opentelemetry-otlp", "dep:opentelemetry_sdk", "dep:tracing-subscriber", ]