InvoiceSwapQuote adds sat_per_v_byte (field 13); chain_fee_sats is now populated when fees are estimated at quote time (previously always 0).
PayAdminInvoiceSwapRequest.sat_per_v_byte is now optional (was required). Pay falls back to the rate stored on the quote; callers must supply fees_req at quote time or pass sat_per_v_byte on pay.
No new RPC methods or HTTP routes; existing admin swap endpoints unchanged.
Operator / client impact
Admin invoice swaps: Pass fees_req in GetAdminInvoiceSwapQuotes to get accurate chain_fee_sats and sat_per_v_byte on quotes. PayAdminInvoiceSwap no longer requires sat_per_v_byte when the quote already has a stored rate.
Watchdog: Root-operation accounting is corrected so admin on-chain swap spends (including miner fees) are fully neutralized; watchdog balance drift from swap flows should stop.
Block processing: New-block handling is serialized to prevent double-crediting the same pending transaction under concurrent LND stream + recovery callers.
Migration
Automatic DB migration SwapRate1785519558948 adds invoice_swap.sat_per_v_byte (default 0). Existing swaps created before upgrade have no stored rate; pay those with an explicit sat_per_v_byte or create new quotes after upgrade.
Config
No new configuration keys or environment variables.