so if someone has a cold HD wallet and wants to use JoinMarket's sendpayment to spend only a fraction of the wallet, what is the proper way to do that?
I'm going to ignore the JoinMarket question (because I know nothing about it), and focus only on the sending from cold wallet part. You mentioned a cold HD wallet, which makes me think it could be Electrum. This is what I would do (and maybe add a VPN, or use Electrum over Tor for privacy):
Online:Install Electrum on your PC.
Import your address to create a watch-only wallet.
Preview the transaction, Copy the unsigned transaction. Put it on a USB stick.
Offline and running without hard drive storage:Get a Linux LIVE DVD. Use Knoppix or Tails for instance, or any other distribution that comes with Electrum pre-installed.
Unplug your internet cable. Close the curtains. Reboot your computer and start up from that DVD. Don't enter any wireless connection password. Keep it offline.Start Electrum.
Import your private key.Copy your unsigned transaction from the USB stick, load it into Electrum.
CHECK the transaction in Electrum. Check the fees, check the amount, check all destination addresses (
character by character).
If all is okay, sign the transaction. Copy it back to your USB stick.
Turn off the computer.
That wipes the Live LINUX from memory and all traces are gone.Online:Use your normal online Electrum to (check again and) broadcast the transaction.
I wrote this for a paper wallet, you already have the offline computer for signing so it's easier. Send the small amount you want to use to your JoinMarket wallet (or any other destination).