Device-reported balances (e.g. Trust Wallet after a sweep) could carry
negative values that were stored verbatim by coinAttributesFromBalance
(only is_numeric was checked). BTC/ETH/BSC/SOL are not auto-refreshed
after ingest (only Tron is), so the negative persisted in the DB and
rendered in the UI. Clamp negatives to 0 at ingest and in formatAmount
so stale device-reported negatives never display.
Co-authored-by: Cursor <cursoragent@cursor.com>