{"record":{"id":"55359bea1941e371","repo":"nautechsystems/nautilus_trader","slug":"venue-execution-reports-are-not-supported-on-the-b","errorCode":null,"errorMessage":"Venue execution reports are not supported on the blockchain execution client","messagePattern":"Venue execution reports are not supported on the blockchain execution client","errorType":"exception","errorClass":null,"httpStatus":null,"severity":"error","filePath":"crates/adapters/blockchain/src/execution/client.rs","lineNumber":2832,"sourceCode":"            self.chain.name\n        );\n        Ok(())\n    }\n\n    async fn disconnect(&mut self) -> anyhow::Result<()> {\n        // Task handles stay registered so a later `connect` can prove their termination\n        // before releasing any stale pre-signature slot claim\n        self.pending_tasks.abort_all_retained();\n        self.signer = None;\n        self.core.set_disconnected();\n        Ok(())\n    }\n\n    async fn generate_order_status_report(\n        &self,\n        _cmd: &GenerateOrderStatusReport,\n    ) -> anyhow::Result<Option<OrderStatusReport>> {\n        anyhow::bail!(\"{VENUE_EXECUTION_REPORTS_UNSUPPORTED}\");\n    }\n\n    async fn generate_order_status_reports(\n        &self,\n        _cmd: &GenerateOrderStatusReports,\n    ) -> anyhow::Result<Vec<OrderStatusReport>> {\n        anyhow::bail!(\"{VENUE_EXECUTION_REPORTS_UNSUPPORTED}\");\n    }\n\n    async fn generate_fill_reports(\n        &self,\n        _cmd: GenerateFillReports,\n    ) -> anyhow::Result<Vec<FillReport>> {\n        anyhow::bail!(\"{VENUE_EXECUTION_REPORTS_UNSUPPORTED}\");\n    }\n\n    async fn generate_position_status_reports(\n        &self,","sourceCodeStart":2814,"sourceCodeEnd":2850,"githubUrl":"https://github.com/nautechsystems/nautilus_trader/blob/d1527c24afdf475115785557f89a55c3e336c51f/crates/adapters/blockchain/src/execution/client.rs#L2814-L2850","documentation":"The ExecutionClient trait's generate_order_status_report asks a venue to report a single order's state. The blockchain execution client has no such venue API: on-chain state is read directly and recovery is done by durable intent reconciliation at connect(), so the method unconditionally bails with VENUE_EXECUTION_REPORTS_UNSUPPORTED (defined at client.rs:102).","triggerScenarios":"Invoking generate_order_status_report on a BlockchainExecutionClient, directly or through LiveNode/generic reconciliation code that calls the trait method for every execution venue.","commonSituations":"Generic node wiring or tooling ported from a CEX adapter that polls order status; user code calling mass-report helpers that fan out to per-order status queries; framework routines that assume venue reconciliation is available on all clients.","solutions":["Do not request venue order status reports from the blockchain client; rely on its connect-time reconciliation of unresolved execution intents","Read on-chain/durable state instead: query the client's transaction cache or the chain directly for the order's intent and receipt","If writing generic multi-venue code, feature-gate report generation so it is skipped for blockchain-backed clients"],"exampleFix":"// before: assumes every client supports venue reports\nif let Some(report) = client.generate_order_status_report(&cmd).await? { ... }\n\n// after: skip report-driven recovery for blockchain clients\nmatch client.client_type() {\n    ClientType::Blockchain => { /* rely on connect() reconciliation */ }\n    _ => { if let Some(report) = client.generate_order_status_report(&cmd).await? { ... } }\n}","handlingStrategy":"try-catch","validationCode":null,"typeGuard":null,"tryCatchPattern":"// Treat as an unsupported-operation marker, not a runtime fault\nmatch client.generate_order_status_report(cmd).await {\n    Err(e) if e.to_string().contains(\"not supported\") => {\n        log::debug!(\"venue reports unsupported for blockchain client; relying on connect reconciliation\");\n        Ok(None)\n    }\n    other => other,\n}","preventionTips":["Gate report calls on the execution client type in generic wiring","Prefer the client's durable transaction cache for blockchain order state","Cover this in integration tests so refactors do not start calling it unconditionally"],"tags":["blockchain","execution-client","order-status","unsupported-operation","trait"],"backgroundTag":"unsupported-venue-report-operation","analyzedSha":"d1527c24afdf475115785557f89a55c3e336c51f","analyzedAt":"2026-08-21T11:28:30.864Z","contentChangedAt":null,"schemaVersion":2},"datasetVersion":"2026-09-14T05:17:10.506Z"}