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

  1. Retry with a fresh quote and ancestry
  2. 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.