nautechsystems/nautilus_trader · error

Released nonterminal intent {} retains signed ownership

Error message

Released nonterminal intent {} retains signed ownership

What it means

Migration integrity check: a released intent that is not yet terminal still carries signed nonce ownership, which would conflict with future signing; the migration aborts instead of permitting double ownership.

Source

Thrown at crates/adapters/blockchain/src/execution/client.rs:5408

                Some(finalized.number),
                Some(finalized.number),
            );

            if !intent.active {
                if matches!(intent.status.as_str(), "finalized" | "reverted") {
                    let expected_marker =
                        if purpose == TransactionPurpose::Swap && intent.status == "finalized" {
                            intent.fill_emitted
                        } else {
                            intent.terminal_emitted
                        };
                    anyhow::ensure!(
                        expected_marker,
                        "Released terminal intent {} has no durable event marker",
                        intent.id
                    );
                } else {
                    anyhow::ensure!(
                        matches!(intent.status.as_str(), "dropped" | "recoverable")
                            && authenticated.is_empty(),
                        "Released nonterminal intent {} retains signed ownership",
                        intent.id
                    );
                    records.push(ExecutionVerificationMigrationRecord {
                        intent_id: intent.id,
                        nonce: intent.nonce,
                        transaction_hash: None,
                        terminal_status: None,
                        block_number: None,
                        block_hash: None,
                        receipt_success: None,
                        gas_used: None,
                        effective_gas_price: None,
                        recover_prepared: false,
                        decisions: vec![base_decision],
                    });

View on GitHub (pinned to 18893faf8b)

Solutions

  1. Re-run verification migration after fixing intent ownership records
  2. Inspect the intent's release path for premature ownership release
Defensive patterns

Strategy: validation

When it happens

Trigger: Thrown at crates/adapters/blockchain/src/execution/client.rs:5408 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/36423ca3f9952e47. Report an issue: GitHub.