CHECK G0 mint advertises both rails in one process PASS [('bolt11', 'sat'), ('xmr', 'xmr')] CHECK G0b the pre-patch path /v1/mint/quote/bolt11 with unit=xmr is rejected PASS http=400 {"detail":"no support for method 'bolt11' with unit 'xmr'.","code":10000} Generated a new mnemonic. To view it, run "cashu info --mnemonic". CHECK G0 Wallet(unit='xmr') loaded the xmr keyset and no other unit PASS keysets units=['xmr'] ids=['013dc093d6b5'] CHECK G1 request_mint() returned a Monero address, not a bolt11 invoice PASS request=88EZowMnuYzjCQX6m3… len=95 CHECK G1b the stored quote is labelled with the xmr method (core/base.py fix) PASS method=xmr unit=xmr CHECK G2 the wallet reads its own quote back as UNPAID PASS state=unpaid ### funding tx 4ec5aca38f9242df3905280d33c0239f539d482070451912255e5737b7c3c60d CHECK G3 an external wallet really paid the address (real tx) PASS 4ec5aca38f9242df3905 CHECK G4 the wallet's own get_mint_quote() flips to PAID PASS state=paid CHECK G5 wallet.mint() issued the note through the xmr rail PASS proofs=57 CHECK G5b the wallet balance is the full amount PASS balance=1048576 (0.000001048576 XMR) ### 57 proofs, input_fee_ppk=100 -> input fee 6, melting 1048570 CHECK G6 wallet.melt_quote(monero address) works — no bolt11 decoding off-rail PASS amount=1048570 method=xmr fee_reserve=0 CHECK G7 wallet.melt() paid out PASS state=PAID CHECK G7b the melt carries the on-chain txid the mint broadcast PASS payment_preimage=423cd772bb92030ef46e1e79 CHECK G8 the destination subaddress really received the coins (chain check) PASS new_incoming=1 received=1048570 want>=1048570 CHECK G8b that is more incoming transfers than before the melt PASS incoming 227 -> 231 CHECK G9 the spent proofs are gone from the wallet PASS balance=0 (was 1048576) CHECK G10 /v1/info unchanged at the end (no restart, no keyset rotation) PASS [('bolt11', 'sat'), ('xmr', 'xmr')] === 17/17 checks passed ===