AFTER | Real server ordinal read 37228e3f4cc86f6e9f0a742e333c52158ed28ea9 Linux x86_64 | Node v26.13.1 | SQLite 3.54.1 Replay: multi-turn | Fresh synthetic database 1,201 completed turns | 3604 turn items | 2402 messages All turns finished; no concurrent sends or replay work. 11 alternating batches; each: 5 warmups + 21 measured reads. MCP t3_thread_read(view=messages, limit=100, runLimit=1) ORDINAL SQL -- actual in-server trace durations Median of batch medians: 0.630 ms Batch median range: 0.527 - 0.705 ms Batch medians (ms): 0.69, 0.70, 0.59, 0.63, 0.53, 0.65 0.53, 0.66, 0.58, 0.63, 0.53 REQUEST -- same connection, full server response Median of batch medians: 73.666 ms Batch median range: 67.927 - 85.054 ms MESSAGE ORDER AND CONTENTS: IDENTICAL on both commits SHA-256 (canonical position, type, text): 4b65039243752a2dc64e9c7b56935ee5284a682106f2c290db14e70f7e4a8c2d Full + bounded-100 results match original query in each DB. EXPLAIN QUERY PLAN (same runtime SQLite, actual database) Full ordinal read: SEARCH orchestration_v2_projection_turn_items USING INDEX orchestration_v2_projection_turn_items_message_ordinal_idx (thread_id=?) Bounded 100-ID ordinal read: SEARCH orchestration_v2_projection_turn_items USING INDEX orchestration_v2_projection_turn_items_message_ordinal_idx (thread_id=? AND =?) LIST SUBQUERY 1 SCAN json_each VIRTUAL TABLE INDEX 1: