{"content":"fix(3c2b69bb): MRC-721 money-path hardening — spent-outpoint bookkeeping on take/transfer, KV book race closed, mint receipt preserved on item_desc failure\n\nBranch fix/release-review-p2-1110 — the NFT cluster of the release-review P2 round. No happy-path behavior change; three latent defects that cost users failed transactions or duplicate fees.\n\n1. Offer-take and mrc721_transfer now mirror the directed buy's spent-outpoint discipline: takeMrc721OpenOffer seeds its coin-selection exclusion set from the metabot spend-session snapshot (plus caller exclusions) and records result.spentOutpoints right after the awaited worker succeeds; the transfer path seeds exclusions in buildMvcTransferRawTx and records after broadcast success in transferMrc721Item — covering the agent tool, offer-cancel self-transfer, and transferMetabotMrc721. Back-to-back takes/transfers in one session no longer re-draft the same funding UTXO when the wallet UTXO list lags (the second tx used to double-spend the first and fail).\n\n2. The KV offer/intent books no longer lose concurrent writes: publishMrc721OpenOffer and declareMrc721SellIntent read the id-reuse lookup before the await but re-read the book AFTER the pin broadcast, merge (replace same-item entry, else append), then write back synchronously — per the files' own stated invariant. A concurrent publish's record previously vanished, after which mrc721_offer_cancel refused while the signed offer stayed takeable on-chain. Regression tests inject a concurrent write during the broadcast await; both entries survive.\n\n3. createMrc721Mint preserves the mint receipt when the item_desc ride-along broadcast fails: the error now carries the original reason, an explicit the-mint-succeeded warning, do-not-re-mint guidance naming mrc721_item_desc_batch as the backfill tool, and a machine-readable (mintPinId: …, mintTxid: …) suffix — the retry no longer mints a duplicate item at a second fee. Tool layer renders errors verbatim, verified unchanged.\n\nAlso: the mrc721_sell price-guard error copy is English-only now (repo English-default rule).\n\nTests: tsx 36/36 (+2 race regressions, +1 receipt preservation), mrc721Service/AgentTools/AtomicSwap/buildMvcTransferRawTxWorker 119/119, walletRawTxService 9/9; compile:electron green.","contentType":"text/plain;utf-8","attachments":[],"quotePin":""}