{"record":{"id":"608f7e096bb8ed78","repo":"nautechsystems/nautilus_trader","slug":"order-list-report-is-absent-from-list","errorCode":null,"errorMessage":"order-list report {} is absent from list {}","messagePattern":"order-list report (.+?) is absent from list (.+?)","errorType":"exception","errorClass":null,"httpStatus":null,"severity":"error","filePath":"crates/adapters/binance/src/spot/execution.rs","lineNumber":2585,"sourceCode":"            response.order_list_id,\n        );\n    }\n\n    for report in response.order_reports {\n        anyhow::ensure!(\n            report.order_list_id == Some(response.order_list_id),\n            \"order {} reports order-list ID {:?}, expected {}\",\n            report.order_id,\n            report.order_list_id,\n            response.order_list_id,\n        );\n        let order = list_orders.remove(&report.order_id).with_context(|| {\n            format!(\n                \"order-list report {} is absent from list {}\",\n                report.order_id, response.order_list_id\n            )\n        })?;\n        anyhow::ensure!(\n            report.symbol == response.symbol\n                && report.symbol == order.symbol\n                && report.orig_client_order_id == order.client_order_id,\n            \"order-list report {} does not match its order identity\",\n            report.order_id,\n        );\n        prepare_cancel_order(&report, true, order_ids, client_order_ids, prepared)?;\n    }\n\n    anyhow::ensure!(\n        list_orders.is_empty(),\n        \"order list {} is missing {} child reports\",\n        response.order_list_id,\n        list_orders.len(),\n    );\n    Ok(())\n}\n","sourceCodeStart":2567,"sourceCodeEnd":2603,"githubUrl":"https://github.com/nautechsystems/nautilus_trader/blob/18893faf8b356be3320add8de2f861b0b647cf06/crates/adapters/binance/src/spot/execution.rs#L2567-L2603","documentation":"During cancel-all preparation, each order report in an OrderList response must correspond to one of the child orders listed in the same payload. This error fires when a report's orderId is not found among the list's orders, i.e. the exchange returned a report for an order that the list payload never described, breaking the one-to-one report/order pairing invariant.","triggerScenarios":"Binance cancel-open-orders OrderList response includes an order_report whose orderId does not match any entry in response.orders — caused by decoding drift, payload truncation/mixing, or a genuine exchange-side inconsistency.","commonSituations":"SBE schema mismatch after a Binance update shifting field boundaries so order IDs decode incorrectly; partial response assembly; adapter bug in mapping orders[] vs orderReports[].","solutions":["Update the nautilus_binance adapter to align with the current Binance SBE schema","Log the offending report.order_id and the set of orders[] IDs from the payload and report the inconsistency upstream","Retry the cancel-all request to check whether the mismatch is transient","Inspect for proxies or serialization layers that could corrupt the binary response"],"exampleFix":null,"handlingStrategy":"validation","validationCode":"let order_ids: AHashSet<i64> = response.orders.iter().map(|o| o.order_id).collect();\nlet unmatched: Vec<_> = response.order_reports.iter().filter(|r| !order_ids.contains(&r.order_id)).collect();\nif !unmatched.is_empty() {\n    return Err(anyhow!(\"{} reports unmatched to list orders\", unmatched.len()));\n}","typeGuard":"fn reports_match_listed_orders(resp: &BinanceCancelOrderListResponse) -> bool {\n    let ids: AHashSet<i64> = resp.orders.iter().map(|o| o.order_id).collect();\n    resp.orders.len() == resp.order_reports.len()\n        && resp.order_reports.iter().all(|r| ids.contains(&r.order_id))\n}","tryCatchPattern":"match prepare_cancel_all_orders(...) {\n    Ok(p) => handle(p),\n    Err(e) if e.to_string().contains(\"absent from list\") => log::error!(\"unpaired cancel report: {e}\"),\n    Err(e) => return Err(e),\n}","preventionTips":["Keep the SBE decoder aligned with Binance's current schema","Capture raw responses for order-list cancels to debug payload pairing","Avoid intermediary layers that could truncate binary payloads"],"tags":["binance","validation","order-list","entity-not-found"],"backgroundTag":"resource-not-found","analyzedSha":"18893faf8b356be3320add8de2f861b0b647cf06","analyzedAt":"2026-09-08T20:49:34.690Z","contentChangedAt":"2026-09-08T20:49:34.690Z","schemaVersion":2},"datasetVersion":"2026-09-14T00:17:10.932Z"}