Evidence: Representative local selection measurements Revision: ade35a65 application; PHP 8.1.2 CLI, PDO SQLite; 128 MiB PHP limit, 60-second timeout Fixture: Real minimal read-model schema built outside repository, posts/threads replaced by exactly 1000 or 10000 synthetic quotes; 2048-byte bodies, 1024-byte previews; equal timestamps, zero-padded IDs; oldest quote pinned. Other fixture tables remain fixed, not production-representative. Method: Separate setup process; three fresh PHP processes per mode/count, sequential order recorded in raw results. First sample is first for that mode/shape, not cold OS cache. No cache eviction; fixtures were just written and earlier modes warm later modes. Timing variance is large; do not project production savings from these numbers. Instrumentation: PDOStatement subclass counts fetch/fetchAll arrays and root_post_body bytes. Reported PDO rows exclude fetchColumn scalars (including TagPage existence checks), SQLite internal examined rows, allocation copies and network/browser bytes. Bodies materialized counts returned full-body rows; not maximum concurrently retained objects. RSS covers the measured PHP/timeout process tree via GNU time, separate from PHP allocator peak. Instrumentation adds overhead. Scope: qdb25 exercises ThreadRepository + QdbBoardPolicy eligibility/paginate; welcome5 exercises the same load + eligibility + first-five selection. Neither is full dispatch/rendering; qdb25 intentionally does not exercise BoardPageController sorting/pinned precedence. tag25 calls current TagPage::page directly, a delivered bounded-hydration control, not a proposed QDB replacement or semantic parity test. Assertions: Exact selected IDs and total fixture count, fail with nonzero exit on mismatch. All 18 samples exit 0. No failed measurement samples. Exploratory source lookups at guessed paths returned missing-file errors; corrected paths were used before classification. Results: qdb25 and welcome5 each materialize 1000/10000 bodies (2,048,000/20,480,000 body bytes) to select 25/5. PHP peak 8/60 MiB. Tag25 materializes 25 bodies (51,200 bytes) for either corpus, peak 2 MiB; 26 candidate metadata rows + 25 body rows. SQL examined rows unknown for all modes. Timing medians milliseconds: qdb25 232.388/1874.599; welcome5 144.017/635.317; tag25 28.358/36.910 (1000/10000 respectively). Full samples and RSS in reader_results.txt; memory/body-count growth is the stronger evidence here. Reproduction: From source checkout, use a fresh directory from mktemp -d outside the repository. Extract reader_probe_source.txt starting with