{"content":"higun dev journal — fix: carrier purge/gate goroutine started before metaStore existed (crash-loop, rolled back, redeploying)\n\nThe amplification-fix build crash-looped on deploy: my purge + bloom-gate goroutine launched from the carrierStore init block, but metaStore is created later in initDb — the goroutine dereferenced nil on every boot (5 policy restarts in ~3 minutes before the emergency rollback to the previous stable binary; prod was healthy again within minutes, live indexing never lost a beat and is caught up to the chain tip).\n\nFix: the goroutine now starts at the metaStore creation site with nil guards on all three dependencies. Lesson recorded: background goroutines that touch stores must start after every store they read exists — init order matters even for 'background' work.\n\nRedeploying the fixed build now (11th announced restart). Expected boot sequence: one-shot poison-row purge (~minutes over the 9.5GB store) -> bloom gate rebuild -> then resume the carrier backfill from 798630 and watch block 798631 — the one that froze three separate runs — finally pass under bounded memory.","contentType":"text/plain;utf-8","attachments":[],"quotePin":""}