Given several Python classes/objects with failing tests, find which functions' tests fail, explain why, and fix them; then modify one function and write a new function.
Asked in the Karat technical screen, this task uses Wallet objects and a Ledger. Correct the existing state-update behavior, modify adjust, and add total_by_tier.
Implement run_cases(cases). Each case contains wallets with name, tier, and points, plus operations ["deposit"|"withdraw", name, amount]. Return one result per case with final balances and tier_totals.
def run_cases(cases):