BEFORE | Real server ordinal read f7b0b3c4d730fbf40b87465523631a7d3ac33472 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: 6.237 ms Batch median range: 5.408 - 6.535 ms Batch medians (ms): 6.46, 6.24, 6.53, 5.41, 6.06, 6.41 6.28, 6.24, 5.78, 5.78, 6.09 REQUEST -- same connection, full server response Median of batch medians: 83.396 ms Batch median range: 74.755 - 90.665 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_thread_type_idx (thread_id=? AND type=?) USE TEMP B-TREE FOR GROUP BY Bounded 100-ID ordinal read: SEARCH orchestration_v2_projection_turn_items USING INDEX orchestration_v2_projection_turn_items_thread_type_idx (thread_id=? AND type=?) LIST SUBQUERY 1 SCAN json_each VIRTUAL TABLE INDEX 1: CREATE BLOOM FILTER USE TEMP B-TREE FOR GROUP BY