nautechsystems/nautilus_trader · error
Swap decision header changed in the pre-sign ancestry reread
Error message
Swap decision header changed in the pre-sign ancestry reread
What it means
Pre-sign ancestry re-verification: re-reading the header window between watermark and decision block no longer ends at the same swap decision header, indicating a reorg or data inconsistency since the quote.
Source
Thrown at crates/adapters/blockchain/src/execution/client.rs:2705
let watermark = required_verification(
self.verification
.verify_block(anchors.watermark.number)
.await,
"pre-sign profiler watermark reread",
)?;
anyhow::ensure!(
watermark.value == anchors.watermark,
"Pool state header changed before signing"
);
let ancestry = required_verification(
self.verification
.verify_header_window(watermark.value, anchors.state.number)
.await,
"pre-sign profiler ancestry reread",
)?;
if let Some(last) = ancestry.value.last() {
anyhow::ensure!(
*last == anchors.state,
"Swap decision header changed in the pre-sign ancestry reread"
);
} else {
anyhow::ensure!(
watermark.value == anchors.state,
"Empty pre-sign ancestry does not end at the swap decision header"
);
}
let quote = match anchors.quote_kind {
SwapQuoteKind::ExactInput(amount_in) => required_verification(
self.verification
.verify_quote_exact_input_single(
&anchors.quote_contract,
anchors.token_in,
anchors.token_out,
amount_in,
anchors.fee,View on GitHub (pinned to 18893faf8b)
Solutions
- Retry with a fresh quote and ancestry
- Check that the RPC/HyperSync sources agree on the canonical chain
Defensive patterns
Strategy: retry
When it happens
Trigger: Thrown at crates/adapters/blockchain/src/execution/client.rs:2705 when the library encounters an invalid state.
Common situations: See trigger scenarios.
AI-assisted analysis of nautechsystems/nautilus_trader@18893faf8b (2026-09-08).
Data as JSON: /api/errors/63da4fb2341f1cb0.
Report an issue: GitHub.