-- Let credits-funded orders exist before the cutover. -- -- `chk_ingested_orders_after_cutover` (migration 0018) refused any row with -- payment_method = 'credits' dated before 2026-01-09. It was written as a -- database-level guard for invariant I1, whose stated reason was splits: -- before the cutover, shared expenses lived in SplitMyExpenses, and -- re-importing them would double-charge Sonu against carryover transaction -- 2348. -- -- That reason no longer holds. Since finance-app 788219b, ACTIVE_OBLIGATION is -- `ts.settled = false AND t.transaction_date >= '2026-01-09'`, so a split on a -- pre-cutover transaction cannot assert a debt at all. The guard now blocks -- something it was never aimed at: the orders themselves, which are ordinary -- historical spend. 275 of them — $9,799.96 of meals and rides across -- 2020-2025 — were invisible because the receipt was the only record and the -- money came from a gift-card balance rather than a card. -- -- What is NOT resolved, and is accepted deliberately (user, 2026-07-28): some -- of those orders were funded by ShopBack gift cards that are themselves -- recorded as expenses, so that portion is counted twice. The exposure is -- bounded at $3,411.16 (14 loads) and is probably smaller, because the -- descriptors name no brand — "ShopBack Gift Cards SQ" is a batch code, and -- the card could be Amazon, Airbnb or Shell as easily as DoorDash. Six are -- categorised `gifts` and may be real presents rather than self-funding. -- Reclassifying them on a guess would corrupt correct data to fix a -- double-count that cannot be demonstrated, so they are left alone; only the -- ShopBack purchase emails can settle it, joined on total paid. -- -- The split guard is untouched: this changes what may exist, not what may be -- owed. ALTER TABLE transactions DROP CONSTRAINT IF EXISTS chk_ingested_orders_after_cutover;