{"record":{"id":"a039a828dd381cf4","repo":"nautechsystems/nautilus_trader","slug":"pre-sign-decision-header-conflicts-with-its-truste","errorCode":null,"errorMessage":"Pre-sign decision header conflicts with its trusted ancestry","messagePattern":"Pre-sign decision header conflicts with its trusted ancestry","errorType":"exception","errorClass":null,"httpStatus":null,"severity":"error","filePath":"crates/adapters/blockchain/src/execution/client.rs","lineNumber":2573,"sourceCode":"                Some(durable_tip.number),\n                Some(durable_tip.number),\n            ));\n        }\n        let mut cursor = durable_tip;\n        while cursor.number < target.number {\n            let end = cursor.number.saturating_add(4_096).min(target.number);\n            let start = cursor.number.saturating_add(1);\n            let ancestry = required_verification(\n                self.verification.verify_header_window(cursor, end).await,\n                \"pre-sign decision ancestry\",\n            )?;\n            cursor = *ancestry\n                .value\n                .last()\n                .expect(\"nonempty decision ancestry advances the cursor\");\n            decisions.push(verification_decision(&ancestry, Some(start), Some(end)));\n        }\n        anyhow::ensure!(\n            cursor == target,\n            \"Pre-sign decision header conflicts with its trusted ancestry\"\n        );\n        Ok(decisions)\n    }\n\n    async fn verify_transaction_authorization(\n        &self,\n        authorization: &TransactionAuthorization,\n        block: u64,\n    ) -> anyhow::Result<Vec<ExecutionVerificationDecision>> {\n        match *authorization {\n            TransactionAuthorization::Wrap { weth } => {\n                let call = ERC20::balanceOfCall {\n                    account: self.wallet_address,\n                }\n                .abi_encode();\n                let balance = required_verification(","sourceCodeStart":2555,"sourceCodeEnd":2591,"githubUrl":"https://github.com/nautechsystems/nautilus_trader/blob/18893faf8b356be3320add8de2f861b0b647cf06/crates/adapters/blockchain/src/execution/client.rs#L2555-L2591","documentation":"Pre-sign verification failure: the block header a swap decision was based on is not consistent with the re-verified ancestry chain, i.e. chain state shifted (reorg or stale data) between quoting and signing.","triggerScenarios":"Thrown at crates/adapters/blockchain/src/execution/client.rs:2573 when the library encounters an invalid state.","commonSituations":"See trigger scenarios.","solutions":["Retry the swap so a fresh quote and decision header are built","Verify chain data sources (RPC/HyperSync) are on the same fork"],"exampleFix":null,"handlingStrategy":"retry","validationCode":null,"typeGuard":null,"tryCatchPattern":null,"preventionTips":[],"tags":[],"backgroundTag":null,"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"}