v1.4.4 — Coin-age divergence: root cause fixed
Fixes the root cause of the coin-age drift behind the DIVERGENCE reports: when a tx is
re-accepted during a shallow reorg, the maturation write path processed adds before
removes and silently dropped the surviving coin's maturation entry — the coin never got
promoted and the mature/immature split drifted. Balances and the UTXO set were never
wrong.
Fix: process age-diff removes before adds + keep a retained queue entry for coins
already mature on insertion (0a7d5473), with an adversarial test harness including a
deterministic repro (37e95f4c).
Validation: full test suite green; an instrumented node re-synced the exact history
that corrupted every stock node: 19/19 self-checks OK, zero divergences.
Upgrading: drop-in — keep your datadir, just restart on the new binary. The restart
purges any accumulated drift; the fix prevents new drift. Wire-compatible, no hardfork.
All operators should upgrade.
Credits: izzback pointed straight at the mechanism and the fix
ordering. Thanks to HatabaSS, sebit, flyingpig6926, jaja, S1b3r14n, SirCP-Qc, Im mongoled,
dragonkeepers and everyone who posted their DIVERGENCE lines.