nautechsystems/nautilus_trader · error
order-list report {} does not match its order identity
Error message
order-list report {} does not match its order identity What it means
For each order report in an OrderList cancel response, the adapter verifies that the report's symbol matches the list's symbol and the order's symbol, and that the report's origClientOrderId equals the listed order's clientOrderId. This cross-check detects mis-paired or corrupted data; it fires when the report and its corresponding order entry disagree on identity.
Source
Thrown at crates/adapters/binance/src/spot/execution.rs:2595
response.order_list_id,
);
let order = list_orders.remove(&report.order_id).with_context(|| {
format!(
"order-list report {} is absent from list {}",
report.order_id, response.order_list_id
)
})?;
anyhow::ensure!(
report.symbol == response.symbol
&& report.symbol == order.symbol
&& report.orig_client_order_id == order.client_order_id,
"order-list report {} does not match its order identity",
report.order_id,
);
prepare_cancel_order(&report, true, order_ids, client_order_ids, prepared)?;
}
anyhow::ensure!(
list_orders.is_empty(),
"order list {} is missing {} child reports",
response.order_list_id,
list_orders.len(),
);
Ok(())
}
fn prepare_cancel_order(
response: &BinanceCancelOrderResponse,
order_list: bool,
order_ids: &mut AHashSet<(InstrumentId, i64)>,
client_order_ids: &mut AHashSet<ClientOrderId>,
prepared: &mut Vec<PreparedCancelOrder>,
) -> anyhow::Result<()> {
anyhow::ensure!(
response.order_id >= 0
&& !response.symbol.is_empty()View on GitHub (pinned to 18893faf8b)
Solutions
- Update the nautilus_binance adapter and nautilus_trader to the latest versions
- Dump the report and matching order entry (symbol, clientOrderId, origClientOrderId) and report the mismatch to maintainers if the raw payload looks valid
- Retry the request to exclude transient corruption
- Verify no proxy/middleware alters the SBE response bytes
Defensive patterns
Strategy: validation
Validate before calling
let by_id: AHashMap<i64, _> = response.orders.iter().map(|o| (o.order_id, o)).collect();
for r in &response.order_reports {
if let Some(o) = by_id.get(&r.order_id) {
if r.symbol != response.symbol || r.symbol != o.symbol || r.orig_client_order_id != o.client_order_id {
return Err(anyhow!("report {} identity mismatch", r.order_id));
}
}
} Type guard
fn report_identities_consistent(resp: &BinanceCancelOrderListResponse) -> bool {
let by_id: AHashMap<i64, _> = resp.orders.iter().map(|o| (o.order_id, o)).collect();
resp.order_reports.iter().all(|r| match by_id.get(&r.order_id) {
Some(o) => r.symbol == resp.symbol && r.orig_client_order_id == o.client_order_id,
None => false,
})
} Try / catch
match prepare_cancel_all_orders(...) {
Ok(p) => handle(p),
Err(e) if e.to_string().contains("order identity") => log::error!("report/order identity mismatch: {e}"),
Err(e) => return Err(e),
} Prevention
- Update nautilus_binance whenever Binance changes its SBE schema
- Log symbol and client-order-ID pairs on failure to spot field misalignment
- Test against recorded real payloads after adapter upgrades
- Keep network paths free of binary-altering intermediaries
When it happens
Trigger: Binance cancel-open-orders OrderList response pairs an order_report with a matching orderId entry, but the report's symbol or origClientOrderId disagrees with the order's symbol/clientOrderId — typically from SBE field-shift decoding bugs or an anomalous exchange payload.
Common situations: Schema drift after a Binance protocol update misaligning clientOrderId/symbol fields; binary payload corruption through intermediary layers; adapter regression in report-to-order mapping.
Understand the failure class
Background: "invalid response format", "malformed payload", "missing data field": when an API returns 200 but the response shape is wrong — this error's family across 23 libraries.
Related errors
- order list {} contains order {} for symbol {}, expected {}
- order list {} contains a duplicate order ID
- order {} reports order-list ID {:?}, expected {}
- order-list report {} is absent from list {}
- Unsupported `OrderSide` for Binance: {value:?}
AI-assisted analysis of nautechsystems/nautilus_trader@18893faf8b (2026-09-08).
Data as JSON: /api/errors/a058cbdaebca80a8.
Report an issue: GitHub.