Bounded Rust SDK batch insert plan
Goal: amortize metadata commits across a finite group of episode rows without routing large object bytes through SQL or Flight.
Task 1: Lock the public contract
- Add an owned multi-row SDK API and typed empty/limit errors.
- Keep the existing single-row API source-compatible by delegating to it.
- Validate every row before any upload begins.
Task 2: Build one bounded Arrow batch
- Reorder each row into table-schema order after validation.
- Upload FILE values sequentially through the existing managed store.
- Build one array per field and one
RecordBatchfor all rows. - Reuse the existing operation identity, digest, retry, and resume path.
Task 3: Prove behavior
- Commit several distinct files and scalar values in one version.
- Query every row and directly read every returned
DataLocation. - Inject a bad later row and prove zero uploads and no version advance.
- Reject empty/excessive batches before any endpoint or store access.
Task 4: Ship
- Update the managed FILE example, README, and architecture contract.
- Run spec lifecycle, strict SDK clippy, full gate, independent review, and independent verification before merge.