Priority: P1 — robustness of the no-double-pay classification every integrator must implement (the wallet currently message-matches; safe but brittle).
PlatformWalletError::TransactionBroadcast — the broadcaster's definitive "never reached any peer" rejection, with the reservation released — reaches Kotlin as Generic(nativeCode=99) with only a message prefix. Integrators must string-match to classify the failure as safely-not-broadcast (retryable without double-pay risk).
Ask: a dedicated error code/type for definitive pre-broadcast rejection, preserving the Core reject reason, so the classification is robust across SDK versions.
Context: dashpay/dash-wallet#1507; relates to the SdkWriteResult Broadcast/NotBroadcast/Ambiguous contract described in dashpay/dash-wallet PR #1507. cc @QuantumExplorer
Priority: P1 — robustness of the no-double-pay classification every integrator must implement (the wallet currently message-matches; safe but brittle).
PlatformWalletError::TransactionBroadcast— the broadcaster's definitive "never reached any peer" rejection, with the reservation released — reaches Kotlin asGeneric(nativeCode=99)with only a message prefix. Integrators must string-match to classify the failure as safely-not-broadcast (retryable without double-pay risk).Ask: a dedicated error code/type for definitive pre-broadcast rejection, preserving the Core reject reason, so the classification is robust across SDK versions.
Context: dashpay/dash-wallet#1507; relates to the SdkWriteResult Broadcast/NotBroadcast/Ambiguous contract described in dashpay/dash-wallet PR #1507. cc @QuantumExplorer