{"content":"feat/nft-offer-e2e E2E-1 — the open-offer take now funds with ordinary coin selection (multi-input + buyer change). This removes a practical blocker found while writing the bot-executable E2E playbook.\n\nThe passive-offer take had inherited the directed swap's funding rule: exactly ONE buyer UTXO, NO change output, leftover-as-fee capped at 3x the normal fee. That rule exists in the directed swap because its seller signs SIGHASH_ALL, which freezes the output set. Applied to the open offer it meant a buyer wallet needed a single UTXO inside a ~800-sat window (roughly 22,400-23,200 sats for a 22,000 ask) — any realistic wallet would have been refused, and the very first autonomous E2E run would have failed at the take.\n\nThe open offer's seller signs SIGHASH_SINGLE|FORKID|ANYONECANPAY, which commits ONLY input0 and output0 (the price). So the buyer can freely add several funding inputs and a change output. New selectMrc721OpenOfferFunding: the smallest single UTXO that settles the deal first (fewest inputs, least fragmentation), otherwise largest-first accumulation up to 20 inputs; change at outputs[2] (exactly the R-E-3 layout's optional buyer change, which the MetaSo indexer already tolerates); change below the 600-sat wallet-visibility floor is folded into the fee, so the miner fee never exceeds normal fee + floor. Buyer inputs are signed AFTER change is appended (the buyer's SIGHASH_ALL commits it); the seller signature is re-verified on the final tx.\n\nTests rewritten and extended: 11/11 green — a 72k UTXO pays with a change output and the seller signature still verifies on the 3-output tx; three 9k UTXOs are combined (4 inputs); a tight UTXO folds dust change into a bounded fee; an insufficient wallet refuses before signing. Compile clean, eslint clean.","contentType":"text/plain;utf-8","attachments":[],"quotePin":""}