Surviving mutants

Generated by scripts/mutation_survivors.py from the cosmic-ray session databases. One row per surviving mutant: the suite ran that mutated line and no assertion failed.

A survivor is not automatically a bug — see the equivalent-mutant classes catalogued in docs/how-to/mutation-testing.md (type annotations, error-message f-strings, interpreter-detail rewrites). Triage means deciding, per row, whether the mutated behaviour is genuinely indistinguishable or whether nothing tests it.

119 surviving mutants across 1 modules, of which 0 are marked annot — a type annotation rewritten by a BitOr-family operator, which cannot change behaviour. Start with the unmarked rows.

src/pyrxd/wallet.py — 119 survivors (0 annot)

Line

Definition

Operator

Original

Mutant

83

(module level)

NumberReplacer

SELECTION_BASE_BYTES: int = 80

SELECTION_BASE_BYTES: int = 81

83

(module level)

NumberReplacer

SELECTION_BASE_BYTES: int = 80

SELECTION_BASE_BYTES: int = 79

98

(module level)

NumberReplacer

SELECTION_INPUT_BYTES: int = 148 + SIG_SIZE_SLACK_BYTES

SELECTION_INPUT_BYTES: int = 147 + SIG_SIZE_SLACK_BYTES

98

(module level)

NumberReplacer

SELECTION_INPUT_BYTES: int = 148 + SIG_SIZE_SLACK_BYTES

SELECTION_INPUT_BYTES: int = 149 + SIG_SIZE_SLACK_BYTES

98

(module level)

ReplaceBinaryOperator_Add_BitAnd

SELECTION_INPUT_BYTES: int = 148 + SIG_SIZE_SLACK_BYTES

SELECTION_INPUT_BYTES: int = 148 & SIG_SIZE_SLACK_BYTES

98

(module level)

ReplaceBinaryOperator_Add_BitOr

SELECTION_INPUT_BYTES: int = 148 + SIG_SIZE_SLACK_BYTES

SELECTION_INPUT_BYTES: int = 148 | SIG_SIZE_SLACK_BYTES

98

(module level)

ReplaceBinaryOperator_Add_BitXor

SELECTION_INPUT_BYTES: int = 148 + SIG_SIZE_SLACK_BYTES

SELECTION_INPUT_BYTES: int = 148 ^ SIG_SIZE_SLACK_BYTES

98

(module level)

ReplaceBinaryOperator_Add_Div

SELECTION_INPUT_BYTES: int = 148 + SIG_SIZE_SLACK_BYTES

SELECTION_INPUT_BYTES: int = 148 / SIG_SIZE_SLACK_BYTES

98

(module level)

ReplaceBinaryOperator_Add_FloorDiv

SELECTION_INPUT_BYTES: int = 148 + SIG_SIZE_SLACK_BYTES

SELECTION_INPUT_BYTES: int = 148 // SIG_SIZE_SLACK_BYTES

98

(module level)

ReplaceBinaryOperator_Add_LShift

SELECTION_INPUT_BYTES: int = 148 + SIG_SIZE_SLACK_BYTES

SELECTION_INPUT_BYTES: int = 148 << SIG_SIZE_SLACK_BYTES

98

(module level)

ReplaceBinaryOperator_Add_Mod

SELECTION_INPUT_BYTES: int = 148 + SIG_SIZE_SLACK_BYTES

SELECTION_INPUT_BYTES: int = 148 % SIG_SIZE_SLACK_BYTES

98

(module level)

ReplaceBinaryOperator_Add_Mul

SELECTION_INPUT_BYTES: int = 148 + SIG_SIZE_SLACK_BYTES

SELECTION_INPUT_BYTES: int = 148 * SIG_SIZE_SLACK_BYTES

98

(module level)

ReplaceBinaryOperator_Add_RShift

SELECTION_INPUT_BYTES: int = 148 + SIG_SIZE_SLACK_BYTES

SELECTION_INPUT_BYTES: int = 148 >> SIG_SIZE_SLACK_BYTES

98

(module level)

ReplaceBinaryOperator_Add_Sub

SELECTION_INPUT_BYTES: int = 148 + SIG_SIZE_SLACK_BYTES

SELECTION_INPUT_BYTES: int = 148 - SIG_SIZE_SLACK_BYTES

101

greedy_select_count

ReplaceBinaryOperator_Mul_Div

def greedy_select_count(values_desc: list[int], photons: int, *, base_cushion: int, per_input_cushion: int) -> int:

def greedy_select_count(values_desc: list[int], photons: int, /, base_cushion: int, per_input_cushion: int) -> int:

113

greedy_select_count

NumberReplacer

total = 0

total = 1

113

greedy_select_count

NumberReplacer

total = 0

total = -1

114

greedy_select_count

NumberReplacer

for i, value in enumerate(values_desc, start=1):

for i, value in enumerate(values_desc, start= 0):

116

greedy_select_count

ReplaceBinaryOperator_Add_BitAnd

if total >= photons + base_cushion + per_input_cushion * i:

if total >= photons & base_cushion + per_input_cushion * i:

116

greedy_select_count

ReplaceBinaryOperator_Add_BitAnd

if total >= photons + base_cushion + per_input_cushion * i:

if total >= photons + base_cushion & per_input_cushion * i:

116

greedy_select_count

ReplaceBinaryOperator_Add_BitOr

if total >= photons + base_cushion + per_input_cushion * i:

if total >= photons + base_cushion | per_input_cushion * i:

116

greedy_select_count

ReplaceBinaryOperator_Add_BitOr

if total >= photons + base_cushion + per_input_cushion * i:

if total >= photons | base_cushion + per_input_cushion * i:

116

greedy_select_count

ReplaceBinaryOperator_Add_BitXor

if total >= photons + base_cushion + per_input_cushion * i:

if total >= photons ^ base_cushion + per_input_cushion * i:

116

greedy_select_count

ReplaceBinaryOperator_Add_BitXor

if total >= photons + base_cushion + per_input_cushion * i:

if total >= photons + base_cushion ^ per_input_cushion * i:

116

greedy_select_count

ReplaceBinaryOperator_Add_Div

if total >= photons + base_cushion + per_input_cushion * i:

if total >= photons / base_cushion + per_input_cushion * i:

116

greedy_select_count

ReplaceBinaryOperator_Add_Div

if total >= photons + base_cushion + per_input_cushion * i:

if total >= photons + base_cushion / per_input_cushion * i:

116

greedy_select_count

ReplaceBinaryOperator_Add_FloorDiv

if total >= photons + base_cushion + per_input_cushion * i:

if total >= photons // base_cushion + per_input_cushion * i:

116

greedy_select_count

ReplaceBinaryOperator_Add_FloorDiv

if total >= photons + base_cushion + per_input_cushion * i:

if total >= photons + base_cushion // per_input_cushion * i:

116

greedy_select_count

ReplaceBinaryOperator_Add_Mod

if total >= photons + base_cushion + per_input_cushion * i:

if total >= photons + base_cushion % per_input_cushion * i:

116

greedy_select_count

ReplaceBinaryOperator_Add_Mod

if total >= photons + base_cushion + per_input_cushion * i:

if total >= photons % base_cushion + per_input_cushion * i:

116

greedy_select_count

ReplaceBinaryOperator_Add_RShift

if total >= photons + base_cushion + per_input_cushion * i:

if total >= photons + base_cushion >> per_input_cushion * i:

116

greedy_select_count

ReplaceBinaryOperator_Add_RShift

if total >= photons + base_cushion + per_input_cushion * i:

if total >= photons >> base_cushion + per_input_cushion * i:

116

greedy_select_count

ReplaceBinaryOperator_Add_Sub

if total >= photons + base_cushion + per_input_cushion * i:

if total >= photons - base_cushion + per_input_cushion * i:

116

greedy_select_count

ReplaceBinaryOperator_Add_Sub

if total >= photons + base_cushion + per_input_cushion * i:

if total >= photons + base_cushion - per_input_cushion * i:

116

greedy_select_count

ReplaceBinaryOperator_Mul_Add

if total >= photons + base_cushion + per_input_cushion * i:

if total >= photons + base_cushion + per_input_cushion + i:

116

greedy_select_count

ReplaceBinaryOperator_Mul_BitAnd

if total >= photons + base_cushion + per_input_cushion * i:

if total >= photons + base_cushion + per_input_cushion & i:

116

greedy_select_count

ReplaceBinaryOperator_Mul_BitOr

if total >= photons + base_cushion + per_input_cushion * i:

if total >= photons + base_cushion + per_input_cushion | i:

116

greedy_select_count

ReplaceBinaryOperator_Mul_BitXor

if total >= photons + base_cushion + per_input_cushion * i:

if total >= photons + base_cushion + per_input_cushion ^ i:

116

greedy_select_count

ReplaceBinaryOperator_Mul_Div

if total >= photons + base_cushion + per_input_cushion * i:

if total >= photons + base_cushion + per_input_cushion / i:

116

greedy_select_count

ReplaceBinaryOperator_Mul_FloorDiv

if total >= photons + base_cushion + per_input_cushion * i:

if total >= photons + base_cushion + per_input_cushion // i:

116

greedy_select_count

ReplaceBinaryOperator_Mul_LShift

if total >= photons + base_cushion + per_input_cushion * i:

if total >= photons + base_cushion + per_input_cushion << i:

116

greedy_select_count

ReplaceBinaryOperator_Mul_Mod

if total >= photons + base_cushion + per_input_cushion * i:

if total >= photons + base_cushion + per_input_cushion % i:

116

greedy_select_count

ReplaceBinaryOperator_Mul_Pow

if total >= photons + base_cushion + per_input_cushion * i:

if total >= photons + base_cushion + per_input_cushion ** i:

116

greedy_select_count

ReplaceBinaryOperator_Mul_RShift

if total >= photons + base_cushion + per_input_cushion * i:

if total >= photons + base_cushion + per_input_cushion >> i:

116

greedy_select_count

ReplaceBinaryOperator_Mul_Sub

if total >= photons + base_cushion + per_input_cushion * i:

if total >= photons + base_cushion + per_input_cushion - i:

116

greedy_select_count

ReplaceComparisonOperator_GtE_Gt

if total >= photons + base_cushion + per_input_cushion * i:

if total > photons + base_cushion + per_input_cushion * i:

116

greedy_select_count

ReplaceComparisonOperator_GtE_IsNot

if total >= photons + base_cushion + per_input_cushion * i:

if total is not photons + base_cushion + per_input_cushion * i:

116

greedy_select_count

ReplaceComparisonOperator_GtE_NotEq

if total >= photons + base_cushion + per_input_cushion * i:

if total != photons + base_cushion + per_input_cushion * i:

118

greedy_select_count

ReplaceComparisonOperator_Lt_Eq

if total < photons:

if total == photons:

118

greedy_select_count

ReplaceComparisonOperator_Lt_Is

if total < photons:

if total is photons:

118

greedy_select_count

ReplaceComparisonOperator_Lt_LtE

if total < photons:

if total <= photons:

156

__init__

ReplaceFalseWithTrue

allow_insecure: bool = False,

allow_insecure: bool = True,

162

__init__

ReplaceComparisonOperator_LtE_Eq

if not isinstance(fee_rate, int) or isinstance(fee_rate, bool) or fee_rate <= 0:

if not isinstance(fee_rate, int) or isinstance(fee_rate, bool) or fee_rate == 0:

227

_make_input

NumberReplacer

if value <= 0:

if value <= 1:

227

_make_input

NumberReplacer

if value <= 0:

if value <= -1:

227

_make_input

ReplaceComparisonOperator_LtE_Eq

if value <= 0:

if value == 0:

227

_make_input

ReplaceComparisonOperator_LtE_Lt

if value <= 0:

if value < 0:

272

build_send_tx

ReplaceOrWithAnd

if not isinstance(photons, int) or isinstance(photons, bool):

if not isinstance(photons, int) and isinstance(photons, bool):

274

build_send_tx

NumberReplacer

if photons <= 0:

if photons <= -1:

274

build_send_tx

NumberReplacer

if photons <= 0:

if photons <= 1:

274

build_send_tx

ReplaceComparisonOperator_LtE_Eq

if photons <= 0:

if photons == 0:

274

build_send_tx

ReplaceComparisonOperator_LtE_Lt

if photons <= 0:

if photons < 0:

295

build_send_tx

ReplaceBinaryOperator_Mul_Add

base_fee_cushion = SELECTION_BASE_BYTES * self._fee_rate

base_fee_cushion = SELECTION_BASE_BYTES + self._fee_rate

295

build_send_tx

ReplaceBinaryOperator_Mul_BitAnd

base_fee_cushion = SELECTION_BASE_BYTES * self._fee_rate

base_fee_cushion = SELECTION_BASE_BYTES & self._fee_rate

295

build_send_tx

ReplaceBinaryOperator_Mul_BitOr

base_fee_cushion = SELECTION_BASE_BYTES * self._fee_rate

base_fee_cushion = SELECTION_BASE_BYTES | self._fee_rate

295

build_send_tx

ReplaceBinaryOperator_Mul_BitXor

base_fee_cushion = SELECTION_BASE_BYTES * self._fee_rate

base_fee_cushion = SELECTION_BASE_BYTES ^ self._fee_rate

295

build_send_tx

ReplaceBinaryOperator_Mul_FloorDiv

base_fee_cushion = SELECTION_BASE_BYTES * self._fee_rate

base_fee_cushion = SELECTION_BASE_BYTES // self._fee_rate

295

build_send_tx

ReplaceBinaryOperator_Mul_Mod

base_fee_cushion = SELECTION_BASE_BYTES * self._fee_rate

base_fee_cushion = SELECTION_BASE_BYTES % self._fee_rate

295

build_send_tx

ReplaceBinaryOperator_Mul_RShift

base_fee_cushion = SELECTION_BASE_BYTES * self._fee_rate

base_fee_cushion = SELECTION_BASE_BYTES >> self._fee_rate

295

build_send_tx

ReplaceBinaryOperator_Mul_Sub

base_fee_cushion = SELECTION_BASE_BYTES * self._fee_rate

base_fee_cushion = SELECTION_BASE_BYTES - self._fee_rate

296

build_send_tx

ReplaceBinaryOperator_Mul_Add

per_input_fee_cushion = SELECTION_INPUT_BYTES * self._fee_rate

per_input_fee_cushion = SELECTION_INPUT_BYTES + self._fee_rate

296

build_send_tx

ReplaceBinaryOperator_Mul_BitAnd

per_input_fee_cushion = SELECTION_INPUT_BYTES * self._fee_rate

per_input_fee_cushion = SELECTION_INPUT_BYTES & self._fee_rate

296

build_send_tx

ReplaceBinaryOperator_Mul_BitOr

per_input_fee_cushion = SELECTION_INPUT_BYTES * self._fee_rate

per_input_fee_cushion = SELECTION_INPUT_BYTES | self._fee_rate

296

build_send_tx

ReplaceBinaryOperator_Mul_BitXor

per_input_fee_cushion = SELECTION_INPUT_BYTES * self._fee_rate

per_input_fee_cushion = SELECTION_INPUT_BYTES ^ self._fee_rate

296

build_send_tx

ReplaceBinaryOperator_Mul_Div

per_input_fee_cushion = SELECTION_INPUT_BYTES * self._fee_rate

per_input_fee_cushion = SELECTION_INPUT_BYTES / self._fee_rate

296

build_send_tx

ReplaceBinaryOperator_Mul_FloorDiv

per_input_fee_cushion = SELECTION_INPUT_BYTES * self._fee_rate

per_input_fee_cushion = SELECTION_INPUT_BYTES // self._fee_rate

296

build_send_tx

ReplaceBinaryOperator_Mul_Mod

per_input_fee_cushion = SELECTION_INPUT_BYTES * self._fee_rate

per_input_fee_cushion = SELECTION_INPUT_BYTES % self._fee_rate

296

build_send_tx

ReplaceBinaryOperator_Mul_RShift

per_input_fee_cushion = SELECTION_INPUT_BYTES * self._fee_rate

per_input_fee_cushion = SELECTION_INPUT_BYTES >> self._fee_rate

296

build_send_tx

ReplaceBinaryOperator_Mul_Sub

per_input_fee_cushion = SELECTION_INPUT_BYTES * self._fee_rate

per_input_fee_cushion = SELECTION_INPUT_BYTES - self._fee_rate

317

build_send_tx

ReplaceBinaryOperator_Sub_Add

trial_change = max(DUST_THRESHOLD, total_in - photons - base_fee_cushion)

trial_change = max(DUST_THRESHOLD, total_in - photons + base_fee_cushion)

317

build_send_tx

ReplaceBinaryOperator_Sub_Add

trial_change = max(DUST_THRESHOLD, total_in - photons - base_fee_cushion)

trial_change = max(DUST_THRESHOLD, total_in + photons - base_fee_cushion)

317

build_send_tx

ReplaceBinaryOperator_Sub_BitAnd

trial_change = max(DUST_THRESHOLD, total_in - photons - base_fee_cushion)

trial_change = max(DUST_THRESHOLD, total_in & photons - base_fee_cushion)

317

build_send_tx

ReplaceBinaryOperator_Sub_BitAnd

trial_change = max(DUST_THRESHOLD, total_in - photons - base_fee_cushion)

trial_change = max(DUST_THRESHOLD, total_in - photons & base_fee_cushion)

317

build_send_tx

ReplaceBinaryOperator_Sub_BitOr

trial_change = max(DUST_THRESHOLD, total_in - photons - base_fee_cushion)

trial_change = max(DUST_THRESHOLD, total_in - photons | base_fee_cushion)

317

build_send_tx

ReplaceBinaryOperator_Sub_BitOr

trial_change = max(DUST_THRESHOLD, total_in - photons - base_fee_cushion)

trial_change = max(DUST_THRESHOLD, total_in | photons - base_fee_cushion)

317

build_send_tx

ReplaceBinaryOperator_Sub_BitXor

trial_change = max(DUST_THRESHOLD, total_in - photons - base_fee_cushion)

trial_change = max(DUST_THRESHOLD, total_in - photons ^ base_fee_cushion)

317

build_send_tx

ReplaceBinaryOperator_Sub_BitXor

trial_change = max(DUST_THRESHOLD, total_in - photons - base_fee_cushion)

trial_change = max(DUST_THRESHOLD, total_in ^ photons - base_fee_cushion)

317

build_send_tx

ReplaceBinaryOperator_Sub_Div

trial_change = max(DUST_THRESHOLD, total_in - photons - base_fee_cushion)

trial_change = max(DUST_THRESHOLD, total_in / photons - base_fee_cushion)

317

build_send_tx

ReplaceBinaryOperator_Sub_FloorDiv

trial_change = max(DUST_THRESHOLD, total_in - photons - base_fee_cushion)

trial_change = max(DUST_THRESHOLD, total_in // photons - base_fee_cushion)

317

build_send_tx

ReplaceBinaryOperator_Sub_FloorDiv

trial_change = max(DUST_THRESHOLD, total_in - photons - base_fee_cushion)

trial_change = max(DUST_THRESHOLD, total_in - photons // base_fee_cushion)

317

build_send_tx

ReplaceBinaryOperator_Sub_Mod

trial_change = max(DUST_THRESHOLD, total_in - photons - base_fee_cushion)

trial_change = max(DUST_THRESHOLD, total_in % photons - base_fee_cushion)

317

build_send_tx

ReplaceBinaryOperator_Sub_Mod

trial_change = max(DUST_THRESHOLD, total_in - photons - base_fee_cushion)

trial_change = max(DUST_THRESHOLD, total_in - photons % base_fee_cushion)

317

build_send_tx

ReplaceBinaryOperator_Sub_Mul

trial_change = max(DUST_THRESHOLD, total_in - photons - base_fee_cushion)

trial_change = max(DUST_THRESHOLD, total_in * photons - base_fee_cushion)

317

build_send_tx

ReplaceBinaryOperator_Sub_Mul

trial_change = max(DUST_THRESHOLD, total_in - photons - base_fee_cushion)

trial_change = max(DUST_THRESHOLD, total_in - photons * base_fee_cushion)

317

build_send_tx

ReplaceBinaryOperator_Sub_RShift

trial_change = max(DUST_THRESHOLD, total_in - photons - base_fee_cushion)

trial_change = max(DUST_THRESHOLD, total_in - photons >> base_fee_cushion)

329

build_send_tx

ReplaceBinaryOperator_Add_BitOr

if total_in >= photons + fee:

if total_in >= photons | fee:

329

build_send_tx

ReplaceBinaryOperator_Add_BitXor

if total_in >= photons + fee:

if total_in >= photons ^ fee:

329

build_send_tx

ReplaceComparisonOperator_GtE_Gt

if total_in >= photons + fee:

if total_in > photons + fee:

331

build_send_tx

ReplaceComparisonOperator_GtE_Eq

if n_selected >= len(sorted_utxos):

if n_selected == len(sorted_utxos):

331

build_send_tx

ReplaceComparisonOperator_GtE_Gt

if n_selected >= len(sorted_utxos):

if n_selected > len(sorted_utxos):

331

build_send_tx

ReplaceComparisonOperator_GtE_Is

if n_selected >= len(sorted_utxos):

if n_selected is len(sorted_utxos):

331

build_send_tx

ReplaceComparisonOperator_GtE_IsNot

if n_selected >= len(sorted_utxos):

if n_selected is not len(sorted_utxos):

331

build_send_tx

ReplaceComparisonOperator_GtE_LtE

if n_selected >= len(sorted_utxos):

if n_selected <= len(sorted_utxos):

331

build_send_tx

ReplaceComparisonOperator_GtE_NotEq

if n_selected >= len(sorted_utxos):

if n_selected != len(sorted_utxos):

333

build_send_tx

NumberReplacer

n_selected += 1

n_selected += 2

333

build_send_tx

NumberReplacer

n_selected += 1

n_selected += 0

343

build_send_tx

ReplaceComparisonOperator_GtE_Gt

if change_value >= DUST_THRESHOLD:

if change_value > DUST_THRESHOLD:

407

build_send_max_tx

ReplaceComparisonOperator_LtE_Eq

if total_in <= DUST_THRESHOLD:

if total_in == DUST_THRESHOLD:

407

build_send_max_tx

ReplaceComparisonOperator_LtE_Is

if total_in <= DUST_THRESHOLD:

if total_in is DUST_THRESHOLD:

407

build_send_max_tx

ReplaceComparisonOperator_LtE_Lt

if total_in <= DUST_THRESHOLD:

if total_in < DUST_THRESHOLD:

420

build_send_max_tx

ReplaceBinaryOperator_Sub_Add

tx_outputs=[TransactionOutput(recipient_script, total_in - DUST_THRESHOLD)],

tx_outputs=[TransactionOutput(recipient_script, total_in + DUST_THRESHOLD)],

420

build_send_max_tx

ReplaceBinaryOperator_Sub_BitAnd

tx_outputs=[TransactionOutput(recipient_script, total_in - DUST_THRESHOLD)],

tx_outputs=[TransactionOutput(recipient_script, total_in & DUST_THRESHOLD)],

420

build_send_max_tx

ReplaceBinaryOperator_Sub_BitOr

tx_outputs=[TransactionOutput(recipient_script, total_in - DUST_THRESHOLD)],

tx_outputs=[TransactionOutput(recipient_script, total_in | DUST_THRESHOLD)],

420

build_send_max_tx

ReplaceBinaryOperator_Sub_BitXor

tx_outputs=[TransactionOutput(recipient_script, total_in - DUST_THRESHOLD)],

tx_outputs=[TransactionOutput(recipient_script, total_in ^ DUST_THRESHOLD)],

420

build_send_max_tx

ReplaceBinaryOperator_Sub_FloorDiv

tx_outputs=[TransactionOutput(recipient_script, total_in - DUST_THRESHOLD)],

tx_outputs=[TransactionOutput(recipient_script, total_in // DUST_THRESHOLD)],

420

build_send_max_tx

ReplaceBinaryOperator_Sub_Mod

tx_outputs=[TransactionOutput(recipient_script, total_in - DUST_THRESHOLD)],

tx_outputs=[TransactionOutput(recipient_script, total_in % DUST_THRESHOLD)],

420

build_send_max_tx

ReplaceBinaryOperator_Sub_Mul

tx_outputs=[TransactionOutput(recipient_script, total_in - DUST_THRESHOLD)],

tx_outputs=[TransactionOutput(recipient_script, total_in * DUST_THRESHOLD)],

420

build_send_max_tx

ReplaceBinaryOperator_Sub_RShift

tx_outputs=[TransactionOutput(recipient_script, total_in - DUST_THRESHOLD)],

tx_outputs=[TransactionOutput(recipient_script, total_in >> DUST_THRESHOLD)],

426

build_send_max_tx

ReplaceComparisonOperator_Lt_LtE

if out_value < DUST_THRESHOLD:

if out_value <= DUST_THRESHOLD: