#35361 [Bug]: GET /v1/files 500s with "argument after ** must be a mapping, not NoneType" when a managed row has a null file_object
### Check for existing issues
- [x] I have searched the existing issues and checked that my issue is not a duplicate.
### What happened?
`GET /v1/files?target_model_names=...` returns a 500 when any row in the caller's result set has a null `file_object` column:
``` OpenAIFileObject() argument after ** must be a mapping, not NoneType ```
The failure takes down the **whole page**, not the offending row — a caller whose files are almost all valid gets no listing at all. A single affected row is enough; the ratio of valid to affected rows makes no difference.
Such rows are created by normal proxy operation, not by anything unusual on the caller's part. The batch cost poller registers a completed batch's `output_file_id` and `error_file_id` as managed IDs, and those registrations carry no `file_object` — so every user who runs a managed batch to completion accumulates rows that break their own file listing.
Note that null appears to be a *supported* state on the write side: the store helper guards its writes of that column on the value being non-null. So the writer permits null and the reader does not.
**Expected:** rows with no `file_object` are skipped, and the caller's parse…