#25386 max_end_user_budget_id does not persist budget_id to DB β budget reset never runs for auto-created end users
## Bug Description
When using `max_end_user_budget_id` in the proxy config to set a default budget for end users, the budget is only applied **in-memory** at auth time but never written to the `LiteLLM_EndUserTable` database record. This causes the budget reset job to skip these users entirely β their spend accumulates forever and never resets.
## Root Cause
Three code paths are involved:
1. **Auth-time budget application** (`auth_checks.py` β `_apply_default_budget_to_end_user()`): When a request arrives with an end-user ID, this function merges the default budget onto the in-memory `LiteLLM_EndUserTable` object by setting `end_user_obj.litellm_budget_table`. The `budget_id` column is **never written to the DB**.
2. **End user auto-creation** (`utils.py` β `update_end_user_spend()`): The upsert `create` clause only sets `user_id`, `spend`, and `blocked`. It does **not** include `budget_id`, even when `litellm.max_end_user_budget_id` is configured. So new end users are created with `budget_id = NULL`.
3. **Budget reset job** (`reset_budget_job.py` β `reset_budget_for_litellm_budget_table()`): This job finds budgets past their `reset_at` date, then queries end users with `WHERβ¦