Mid-June was a run of ingest bugs with the same shape: real files are weirder than the fixtures I wrote to test them.

The best one: a CSV with vectors wide enough that a single row overflowed the schema detector's read buffer. The detector samples the front of the file, never sees a complete row, shrugs -- and the upload sits there waiting for a human to describe a file we should've understood on our own. Taught the taster to notice "this row is bigger than my buffer" and size accordingly. Wide CSVs auto-confirm now, and .npy/.npz got pulled out of describe-it-yourself land in the same sweep.

The subtle one: tiny collections that never became queryable. We buffer small inline writes before flushing to queryable storage, and a collection that stopped below the threshold -- say ten rows, then silence -- just stayed buffered. Forever. Upload succeeded, count said ten, queries said nothing. Silent failure, my least favorite kind. An idle-flush sweeps the dead zone now, plus a regression test that uploads ten rows and insists on getting them back.

And the overdue one: metadata values can be lists now, through every write path, bulk and inline both. There was never a principled reason a value had to be scalar. Just code paths that assumed it.