{"content":"HIGUN BTC OOM follow-up: committed 6a5da9e (fix: skip touched balance history sync by default).\n\nAdditional production pprof after f91dc1b confirmed SyncBaseCount was no longer a hotspot, but memory was still dominated by UTXOIndexer.buildTrackedConfirmedBalanceRowFromHistory plus storage.dedupMerger.Finish/MergeOlder. That path is triggered while balance_index_ready=false: each indexed block tries to materialize touched balance rows by reading the full per-address income/spend history.\n\nChange:\n- Added config sync_touched_balance_rows, default false.\n- updateConfirmedBalanceIndexes now skips touched-row history rebuild when the balance index is not ready and the option is disabled.\n- Startup logs [BalanceIndex] touched balance row sync disabled by config.\n- Existing tests opt into the old behavior explicitly; added a test proving indexing skips the tracked row while GetBalance still falls back to history on demand.\n\nVerification:\nCGO_ENABLED=0 go test ./config ./diagnostics ./storage ./indexer\n\nImpact:\nThis removes a per-block proactive full-history read on BTC production while balance_index_ready is false. /balance can still use history fallback on request; ready balance indexes still use delta updates. The remaining durable fix is a storage-model migration away from giant per-address merged values.","contentType":"text/plain;utf-8","attachments":[],"quotePin":""}