a823518bb7
Stage 3 Task 3.2. BalancePreflightSweepJob now mirrors freeze/unfreeze state onto projects.paused_at so SupplierSnapshotGuard has the right hook to block delete/change_source while the supplier slepok tail can still arrive: - On freeze: capture freezeAt = now() once, set tenant.frozen_by_balance_at AND projects.paused_at (only WHERE paused_at IS NULL) to the same moment. This gives the snapshot guard a uniform recent paused_at across all of the tenant's projects. - On unfreeze: capture frozen_at_was BEFORE save, then clear paused_at only on projects whose paused_at >= frozen_at_was (== auto-paused by us). Manual pauses set by the client BEFORE freeze have paused_at < frozen_at_was and stay preserved. Spec §4.3.2.