Shipped the inline-upsert path today. Customer flow that motivated it: "I just generated an embedding, I want to query it back in the next request." The batch pipeline does honest work (schema analysis, chunked artifact build, fanout to workers) and lands in about 3 seconds at the small end. Fine for file uploads. Not fine for that.

So inline goes a different route. Source appends to a per-collection write-ahead log, fsyncs, acks. Pushes a VectorMutation to the coordinator over the WebSocket already open. Coordinator forwards an ApplyMutation to every worker serving the collection. Workers merge into an in-memory overlay at query time. Measured: p50 5ms, p95 8ms. The next epoch absorbs the overlay into a real index, the overlay just covers the gap. Crash recovery is the source replaying the WAL on reconnect.