What's Changed
Mainnet E2E Validation
Mainnet sync with txindex=1 works. bitcoind syncs fully and serves tx queries through the FUSE layer. Also ran Mempool.space against it — the explorer indexes blocks and txs from the FUSE-served data without issue.
Release-Based Finalization
Moved block file finalization from the Write path to Release. A file is finalized only when the last write handle closes and a successor exists on disk. A per-file refcount tracks concurrent writers so state transitions don't fire early. Kills the races we hit under sustained IBD writes.
IBD Stability & Client Improvements
Several IBD fixes. Manifest loading hits the remote first, falling back to local cache on failure. Empty blk files are preserved — deleting them broke index alignment with bitcoind. Blockmap reads return ENODATA for out-of-range requests. The remote HTTP client got structured logging and configurable transport; a response-size cap guards against pathological upstream responses.
Note: Adaptive fetching may not correctly detect the IBD state on mainnet yet. If you are syncing mainnet from scratch, set general.remote-fetch-mode = file explicitly to enable file-level fetching and get the full speed benefit.
Full Changelog: v0.1.2...v0.1.5