aboutsummaryrefslogtreecommitdiffstats
path: root/research
diff options
context:
space:
mode:
authoreunhhu <[email protected]>2026-10-01 06:25:21 +0100
committereunhhu <[email protected]>2026-10-01 06:25:21 +0100
commitddcc1202daa7de84f13ff712fdb5ad12159facc1 (patch)
tree47deddd3c047df16c3c94d8a2ea9f4724a852083 /research
parentbe297ead16b41938e84bcc3f1be628bc8725f2f4 (diff)
downloadpure-ddcc1202daa7de84f13ff712fdb5ad12159facc1.tar.gz
pure-ddcc1202daa7de84f13ff712fdb5ad12159facc1.zip
Measure one host of many apps against a process each (111)
017's first stage met its four criteria on the Pi (RAM stores, five rounds, the order of the ways turned): app B's 99th percentile while app A is flooded by 64 connections is 168 us, half of two processes' 336 us; the two apps busy together write 146.1k a second against 146.2k, with the same 1.4 ms tail; an app costs a host 120 KiB of its own memory (a process: 1,311 KiB PSS) and 100 apps still run on three threads; a host of one app keeps its speed (TPC-C +1.2% at the median of six pairs, two of them interfered and kept; the bank's queries within 2.6%) and its instructions (+0.94% at most). On the way: apps hopped between workers each turn (fixed in db4ee9c), connections of one app spread over all connection threads made the host a third more expensive a request and its tail a kernel tick (fixed by home threads, d24881d), and the work budget's counting cost every table row 26 instructions (fixed in be297ea). The earlier runs are kept apart (db4ee9c's isolation, d24881d's pairs and counts, the interrupted first try).
Diffstat (limited to 'research')
-rw-r--r--research/experiments/026-apps-on-one-host/2026-10-01-counts-linux-aarch64.jsonl4
-rw-r--r--research/experiments/026-apps-on-one-host/2026-10-01-isolation-d95740e-linux-aarch64.jsonl45
-rw-r--r--research/experiments/026-apps-on-one-host/2026-10-01-isolation-linux-aarch64.jsonl45
-rw-r--r--research/experiments/026-apps-on-one-host/2026-10-01-load.txt26
-rw-r--r--research/experiments/026-apps-on-one-host/2026-10-01-memory-linux-aarch64.jsonl4
-rw-r--r--research/experiments/026-apps-on-one-host/2026-10-01-queries-after-1-linux-aarch64.jsonl4
-rw-r--r--research/experiments/026-apps-on-one-host/2026-10-01-queries-after-2-linux-aarch64.jsonl4
-rw-r--r--research/experiments/026-apps-on-one-host/2026-10-01-queries-after-3-linux-aarch64.jsonl4
-rw-r--r--research/experiments/026-apps-on-one-host/2026-10-01-queries-after-4-linux-aarch64.jsonl4
-rw-r--r--research/experiments/026-apps-on-one-host/2026-10-01-queries-after-5-linux-aarch64.jsonl4
-rw-r--r--research/experiments/026-apps-on-one-host/2026-10-01-queries-after-6-linux-aarch64.jsonl4
-rw-r--r--research/experiments/026-apps-on-one-host/2026-10-01-queries-before-1-linux-aarch64.jsonl4
-rw-r--r--research/experiments/026-apps-on-one-host/2026-10-01-queries-before-2-linux-aarch64.jsonl4
-rw-r--r--research/experiments/026-apps-on-one-host/2026-10-01-queries-before-3-linux-aarch64.jsonl4
-rw-r--r--research/experiments/026-apps-on-one-host/2026-10-01-queries-before-4-linux-aarch64.jsonl4
-rw-r--r--research/experiments/026-apps-on-one-host/2026-10-01-queries-before-5-linux-aarch64.jsonl4
-rw-r--r--research/experiments/026-apps-on-one-host/2026-10-01-queries-before-6-linux-aarch64.jsonl4
-rw-r--r--research/experiments/026-apps-on-one-host/2026-10-01-tpcc-after-1-linux-aarch64.jsonl3
-rw-r--r--research/experiments/026-apps-on-one-host/2026-10-01-tpcc-after-2-linux-aarch64.jsonl3
-rw-r--r--research/experiments/026-apps-on-one-host/2026-10-01-tpcc-after-3-linux-aarch64.jsonl3
-rw-r--r--research/experiments/026-apps-on-one-host/2026-10-01-tpcc-after-4-linux-aarch64.jsonl3
-rw-r--r--research/experiments/026-apps-on-one-host/2026-10-01-tpcc-after-5-linux-aarch64.jsonl3
-rw-r--r--research/experiments/026-apps-on-one-host/2026-10-01-tpcc-after-6-linux-aarch64.jsonl3
-rw-r--r--research/experiments/026-apps-on-one-host/2026-10-01-tpcc-before-1-linux-aarch64.jsonl3
-rw-r--r--research/experiments/026-apps-on-one-host/2026-10-01-tpcc-before-2-linux-aarch64.jsonl3
-rw-r--r--research/experiments/026-apps-on-one-host/2026-10-01-tpcc-before-3-linux-aarch64.jsonl3
-rw-r--r--research/experiments/026-apps-on-one-host/2026-10-01-tpcc-before-4-linux-aarch64.jsonl3
-rw-r--r--research/experiments/026-apps-on-one-host/2026-10-01-tpcc-before-5-linux-aarch64.jsonl3
-rw-r--r--research/experiments/026-apps-on-one-host/2026-10-01-tpcc-before-6-linux-aarch64.jsonl3
-rw-r--r--research/experiments/026-apps-on-one-host/2026-10-01-tpcc-by-commit-linux-aarch64.txt12
-rw-r--r--research/experiments/026-apps-on-one-host/41502b9/2026-10-01-counts-linux-aarch64.jsonl4
-rw-r--r--research/experiments/026-apps-on-one-host/41502b9/2026-10-01-queries-after-1-linux-aarch64.jsonl4
-rw-r--r--research/experiments/026-apps-on-one-host/41502b9/2026-10-01-queries-after-2-linux-aarch64.jsonl4
-rw-r--r--research/experiments/026-apps-on-one-host/41502b9/2026-10-01-queries-after-3-linux-aarch64.jsonl4
-rw-r--r--research/experiments/026-apps-on-one-host/41502b9/2026-10-01-queries-after-4-linux-aarch64.jsonl4
-rw-r--r--research/experiments/026-apps-on-one-host/41502b9/2026-10-01-queries-before-1-linux-aarch64.jsonl4
-rw-r--r--research/experiments/026-apps-on-one-host/41502b9/2026-10-01-queries-before-2-linux-aarch64.jsonl4
-rw-r--r--research/experiments/026-apps-on-one-host/41502b9/2026-10-01-queries-before-3-linux-aarch64.jsonl4
-rw-r--r--research/experiments/026-apps-on-one-host/41502b9/2026-10-01-queries-before-4-linux-aarch64.jsonl4
-rw-r--r--research/experiments/026-apps-on-one-host/41502b9/2026-10-01-tpcc-after-1-linux-aarch64.jsonl3
-rw-r--r--research/experiments/026-apps-on-one-host/41502b9/2026-10-01-tpcc-after-2-linux-aarch64.jsonl3
-rw-r--r--research/experiments/026-apps-on-one-host/41502b9/2026-10-01-tpcc-after-3-linux-aarch64.jsonl3
-rw-r--r--research/experiments/026-apps-on-one-host/41502b9/2026-10-01-tpcc-after-4-linux-aarch64.jsonl3
-rw-r--r--research/experiments/026-apps-on-one-host/41502b9/2026-10-01-tpcc-before-1-linux-aarch64.jsonl3
-rw-r--r--research/experiments/026-apps-on-one-host/41502b9/2026-10-01-tpcc-before-2-linux-aarch64.jsonl3
-rw-r--r--research/experiments/026-apps-on-one-host/41502b9/2026-10-01-tpcc-before-3-linux-aarch64.jsonl3
-rw-r--r--research/experiments/026-apps-on-one-host/41502b9/2026-10-01-tpcc-before-4-linux-aarch64.jsonl3
-rw-r--r--research/experiments/026-apps-on-one-host/interrupted/2026-10-01-queries-after-1-linux-aarch64.jsonl4
-rw-r--r--research/experiments/026-apps-on-one-host/interrupted/2026-10-01-queries-after-2-linux-aarch64.jsonl4
-rw-r--r--research/experiments/026-apps-on-one-host/interrupted/2026-10-01-queries-before-1-linux-aarch64.jsonl4
-rw-r--r--research/experiments/026-apps-on-one-host/interrupted/2026-10-01-queries-before-2-linux-aarch64.jsonl0
-rw-r--r--research/experiments/026-apps-on-one-host/interrupted/2026-10-01-tpcc-after-1-linux-aarch64.jsonl3
-rw-r--r--research/experiments/026-apps-on-one-host/interrupted/2026-10-01-tpcc-after-2-linux-aarch64.jsonl3
-rw-r--r--research/experiments/026-apps-on-one-host/interrupted/2026-10-01-tpcc-before-1-linux-aarch64.jsonl3
-rw-r--r--research/experiments/026-apps-on-one-host/interrupted/2026-10-01-tpcc-before-2-linux-aarch64.jsonl3
-rw-r--r--research/experiments/026-apps-on-one-host/isolation.py114
-rw-r--r--research/experiments/026-apps-on-one-host/memory.py76
-rwxr-xr-xresearch/experiments/026-apps-on-one-host/runs.sh52
58 files changed, 546 insertions, 0 deletions
diff --git a/research/experiments/026-apps-on-one-host/2026-10-01-counts-linux-aarch64.jsonl b/research/experiments/026-apps-on-one-host/2026-10-01-counts-linux-aarch64.jsonl
new file mode 100644
index 0000000..1af3fbc
--- /dev/null
+++ b/research/experiments/026-apps-on-one-host/2026-10-01-counts-linux-aarch64.jsonl
@@ -0,0 +1,4 @@
+{"serve": "pure-serve-before", "per_branch": {"instructions": 26859547, "cycles": 11867170}, "in_credit": {"instructions": 3443924, "cycles": 1579085}, "large": {"instructions": 1438503, "cycles": 649704}, "ranks": {"instructions": 24092075, "cycles": 14828566}, "none": {"instructions": 606073, "cycles": 194113}, "field": {"instructions": 8694610, "cycles": 3126191}, "found": {"instructions": 15639640, "cycles": 12618787}}
+{"serve": "pure-serve-after", "per_branch": {"instructions": 26783556, "cycles": 12126938}, "in_credit": {"instructions": 3427136, "cycles": 1570048}, "large": {"instructions": 1444860, "cycles": 652963}, "ranks": {"instructions": 24063602, "cycles": 14716504}, "none": {"instructions": 606876, "cycles": 190004}, "field": {"instructions": 8776041, "cycles": 3151811}, "found": {"instructions": 15692481, "cycles": 12800466}}
+{"serve": "pure-serve-before", "per_branch": {"instructions": 27282684, "cycles": 14480028}, "in_credit": {"instructions": 3538446, "cycles": 2102038}, "large": {"instructions": 1438375, "cycles": 787335}, "ranks": {"instructions": 24321113, "cycles": 15114898}, "none": {"instructions": 606073, "cycles": 189096}, "field": {"instructions": 8694610, "cycles": 3136411}, "found": {"instructions": 15635360, "cycles": 12414260}}
+{"serve": "pure-serve-after", "per_branch": {"instructions": 26754728, "cycles": 11964483}, "in_credit": {"instructions": 3420610, "cycles": 1535264}, "large": {"instructions": 1444780, "cycles": 670966}, "ranks": {"instructions": 24047506, "cycles": 14803180}, "none": {"instructions": 606876, "cycles": 190148}, "field": {"instructions": 8776041, "cycles": 3152577}, "found": {"instructions": 15692544, "cycles": 12726014}}
diff --git a/research/experiments/026-apps-on-one-host/2026-10-01-isolation-d95740e-linux-aarch64.jsonl b/research/experiments/026-apps-on-one-host/2026-10-01-isolation-d95740e-linux-aarch64.jsonl
new file mode 100644
index 0000000..b4f74a0
--- /dev/null
+++ b/research/experiments/026-apps-on-one-host/2026-10-01-isolation-d95740e-linux-aarch64.jsonl
@@ -0,0 +1,45 @@
+{"round": 1, "way": "processes", "kind": "alone", "b_p50_us": 80, "b_p99_us": 152, "b_per_second": 11290, "b_5xx": 0}
+{"round": 1, "way": "host", "kind": "alone", "b_p50_us": 80, "b_p99_us": 120, "b_per_second": 11415, "b_5xx": 0}
+{"round": 1, "way": "host1", "kind": "alone", "b_p50_us": 80, "b_p99_us": 112, "b_per_second": 11123, "b_5xx": 0}
+{"round": 1, "way": "processes", "kind": "flood", "b_p50_us": 108, "b_p99_us": 320, "b_per_second": 8301, "b_5xx": 0, "a_per_second": 110704, "a_p99_us": 864, "a_5xx": 0}
+{"round": 1, "way": "host", "kind": "flood", "b_p50_us": 104, "b_p99_us": 232, "b_per_second": 8804, "b_5xx": 0, "a_per_second": 108163, "a_p99_us": 960, "a_5xx": 0}
+{"round": 1, "way": "host1", "kind": "flood", "b_p50_us": 320, "b_p99_us": 496, "b_per_second": 3230, "b_5xx": 0, "a_per_second": 134864, "a_p99_us": 704, "a_5xx": 0}
+{"round": 1, "way": "processes", "kind": "both", "b_p50_us": 232, "b_p99_us": 1472, "b_per_second": 73211, "b_5xx": 0, "a_per_second": 73181, "a_p99_us": 1472, "a_5xx": 0}
+{"round": 1, "way": "host", "kind": "both", "b_p50_us": 208, "b_p99_us": 4096, "b_per_second": 73048, "b_5xx": 0, "a_per_second": 72866, "a_p99_us": 4096, "a_5xx": 0}
+{"round": 1, "way": "host1", "kind": "both", "b_p50_us": 368, "b_p99_us": 1152, "b_per_second": 69754, "b_5xx": 0, "a_per_second": 69774, "a_p99_us": 1152, "a_5xx": 0}
+{"round": 2, "way": "host1", "kind": "alone", "b_p50_us": 92, "b_p99_us": 116, "b_per_second": 10558, "b_5xx": 0}
+{"round": 2, "way": "host", "kind": "alone", "b_p50_us": 92, "b_p99_us": 112, "b_per_second": 10974, "b_5xx": 0}
+{"round": 2, "way": "processes", "kind": "alone", "b_p50_us": 80, "b_p99_us": 108, "b_per_second": 11450, "b_5xx": 0}
+{"round": 2, "way": "host1", "kind": "flood", "b_p50_us": 336, "b_p99_us": 608, "b_per_second": 2899, "b_5xx": 0, "a_per_second": 134801, "a_p99_us": 672, "a_5xx": 0}
+{"round": 2, "way": "host", "kind": "flood", "b_p50_us": 104, "b_p99_us": 224, "b_per_second": 8749, "b_5xx": 0, "a_per_second": 108619, "a_p99_us": 960, "a_5xx": 0}
+{"round": 2, "way": "processes", "kind": "flood", "b_p50_us": 108, "b_p99_us": 336, "b_per_second": 8250, "b_5xx": 0, "a_per_second": 112004, "a_p99_us": 864, "a_5xx": 0}
+{"round": 2, "way": "host1", "kind": "both", "b_p50_us": 368, "b_p99_us": 1152, "b_per_second": 69816, "b_5xx": 0, "a_per_second": 70023, "a_p99_us": 1152, "a_5xx": 0}
+{"round": 2, "way": "host", "kind": "both", "b_p50_us": 216, "b_p99_us": 4096, "b_per_second": 72767, "b_5xx": 0, "a_per_second": 72859, "a_p99_us": 4096, "a_5xx": 0}
+{"round": 2, "way": "processes", "kind": "both", "b_p50_us": 232, "b_p99_us": 1472, "b_per_second": 73558, "b_5xx": 0, "a_per_second": 73531, "a_p99_us": 1472, "a_5xx": 0}
+{"round": 3, "way": "processes", "kind": "alone", "b_p50_us": 80, "b_p99_us": 104, "b_per_second": 11693, "b_5xx": 0}
+{"round": 3, "way": "host", "kind": "alone", "b_p50_us": 84, "b_p99_us": 112, "b_per_second": 11076, "b_5xx": 0}
+{"round": 3, "way": "host1", "kind": "alone", "b_p50_us": 80, "b_p99_us": 112, "b_per_second": 11385, "b_5xx": 0}
+{"round": 3, "way": "processes", "kind": "flood", "b_p50_us": 108, "b_p99_us": 320, "b_per_second": 8293, "b_5xx": 0, "a_per_second": 113081, "a_p99_us": 832, "a_5xx": 0}
+{"round": 3, "way": "host", "kind": "flood", "b_p50_us": 104, "b_p99_us": 248, "b_per_second": 8746, "b_5xx": 0, "a_per_second": 108231, "a_p99_us": 960, "a_5xx": 0}
+{"round": 3, "way": "host1", "kind": "flood", "b_p50_us": 352, "b_p99_us": 576, "b_per_second": 2776, "b_5xx": 0, "a_per_second": 136385, "a_p99_us": 640, "a_5xx": 0}
+{"round": 3, "way": "processes", "kind": "both", "b_p50_us": 232, "b_p99_us": 1472, "b_per_second": 73490, "b_5xx": 0, "a_per_second": 73622, "a_p99_us": 1472, "a_5xx": 0}
+{"round": 3, "way": "host", "kind": "both", "b_p50_us": 216, "b_p99_us": 4096, "b_per_second": 72839, "b_5xx": 0, "a_per_second": 72753, "a_p99_us": 4096, "a_5xx": 0}
+{"round": 3, "way": "host1", "kind": "both", "b_p50_us": 368, "b_p99_us": 1152, "b_per_second": 69976, "b_5xx": 0, "a_per_second": 70232, "a_p99_us": 1152, "a_5xx": 0}
+{"round": 4, "way": "host1", "kind": "alone", "b_p50_us": 80, "b_p99_us": 104, "b_per_second": 11557, "b_5xx": 0}
+{"round": 4, "way": "host", "kind": "alone", "b_p50_us": 92, "b_p99_us": 112, "b_per_second": 10813, "b_5xx": 0}
+{"round": 4, "way": "processes", "kind": "alone", "b_p50_us": 80, "b_p99_us": 112, "b_per_second": 11210, "b_5xx": 0}
+{"round": 4, "way": "host1", "kind": "flood", "b_p50_us": 336, "b_p99_us": 512, "b_per_second": 2875, "b_5xx": 0, "a_per_second": 136148, "a_p99_us": 608, "a_5xx": 0}
+{"round": 4, "way": "host", "kind": "flood", "b_p50_us": 104, "b_p99_us": 232, "b_per_second": 8697, "b_5xx": 0, "a_per_second": 109015, "a_p99_us": 960, "a_5xx": 0}
+{"round": 4, "way": "processes", "kind": "flood", "b_p50_us": 104, "b_p99_us": 352, "b_per_second": 8343, "b_5xx": 0, "a_per_second": 116421, "a_p99_us": 800, "a_5xx": 0}
+{"round": 4, "way": "host1", "kind": "both", "b_p50_us": 352, "b_p99_us": 1152, "b_per_second": 69979, "b_5xx": 0, "a_per_second": 70046, "a_p99_us": 1216, "a_5xx": 0}
+{"round": 4, "way": "host", "kind": "both", "b_p50_us": 224, "b_p99_us": 4096, "b_per_second": 72204, "b_5xx": 0, "a_per_second": 72485, "a_p99_us": 4096, "a_5xx": 0}
+{"round": 4, "way": "processes", "kind": "both", "b_p50_us": 232, "b_p99_us": 1472, "b_per_second": 73074, "b_5xx": 0, "a_per_second": 73184, "a_p99_us": 1472, "a_5xx": 0}
+{"round": 5, "way": "processes", "kind": "alone", "b_p50_us": 80, "b_p99_us": 108, "b_per_second": 11177, "b_5xx": 0}
+{"round": 5, "way": "host", "kind": "alone", "b_p50_us": 80, "b_p99_us": 112, "b_per_second": 11106, "b_5xx": 0}
+{"round": 5, "way": "host1", "kind": "alone", "b_p50_us": 80, "b_p99_us": 112, "b_per_second": 11291, "b_5xx": 0}
+{"round": 5, "way": "processes", "kind": "flood", "b_p50_us": 108, "b_p99_us": 336, "b_per_second": 8316, "b_5xx": 0, "a_per_second": 114338, "a_p99_us": 800, "a_5xx": 0}
+{"round": 5, "way": "host", "kind": "flood", "b_p50_us": 104, "b_p99_us": 232, "b_per_second": 8772, "b_5xx": 0, "a_per_second": 108196, "a_p99_us": 960, "a_5xx": 0}
+{"round": 5, "way": "host1", "kind": "flood", "b_p50_us": 352, "b_p99_us": 512, "b_per_second": 2768, "b_5xx": 0, "a_per_second": 136786, "a_p99_us": 576, "a_5xx": 0}
+{"round": 5, "way": "processes", "kind": "both", "b_p50_us": 232, "b_p99_us": 1536, "b_per_second": 72868, "b_5xx": 0, "a_per_second": 72906, "a_p99_us": 1472, "a_5xx": 0}
+{"round": 5, "way": "host", "kind": "both", "b_p50_us": 208, "b_p99_us": 4096, "b_per_second": 73391, "b_5xx": 0, "a_per_second": 73201, "a_p99_us": 4096, "a_5xx": 0}
+{"round": 5, "way": "host1", "kind": "both", "b_p50_us": 368, "b_p99_us": 1088, "b_per_second": 69988, "b_5xx": 0, "a_per_second": 69996, "a_p99_us": 1152, "a_5xx": 0}
diff --git a/research/experiments/026-apps-on-one-host/2026-10-01-isolation-linux-aarch64.jsonl b/research/experiments/026-apps-on-one-host/2026-10-01-isolation-linux-aarch64.jsonl
new file mode 100644
index 0000000..a0fe46f
--- /dev/null
+++ b/research/experiments/026-apps-on-one-host/2026-10-01-isolation-linux-aarch64.jsonl
@@ -0,0 +1,45 @@
+{"round": 1, "way": "processes", "kind": "alone", "b_p50_us": 80, "b_p99_us": 112, "b_per_second": 11524, "b_5xx": 0}
+{"round": 1, "way": "host", "kind": "alone", "b_p50_us": 84, "b_p99_us": 116, "b_per_second": 11001, "b_5xx": 0}
+{"round": 1, "way": "host1", "kind": "alone", "b_p50_us": 84, "b_p99_us": 112, "b_per_second": 11100, "b_5xx": 0}
+{"round": 1, "way": "processes", "kind": "flood", "b_p50_us": 108, "b_p99_us": 352, "b_per_second": 8191, "b_5xx": 0, "a_per_second": 111849, "a_p99_us": 864, "a_5xx": 0}
+{"round": 1, "way": "host", "kind": "flood", "b_p50_us": 96, "b_p99_us": 168, "b_per_second": 9846, "b_5xx": 0, "a_per_second": 106669, "a_p99_us": 928, "a_5xx": 0}
+{"round": 1, "way": "host1", "kind": "flood", "b_p50_us": 368, "b_p99_us": 576, "b_per_second": 2743, "b_5xx": 0, "a_per_second": 135345, "a_p99_us": 640, "a_5xx": 0}
+{"round": 1, "way": "processes", "kind": "both", "b_p50_us": 232, "b_p99_us": 1408, "b_per_second": 73148, "b_5xx": 0, "a_per_second": 73455, "a_p99_us": 1408, "a_5xx": 0}
+{"round": 1, "way": "host", "kind": "both", "b_p50_us": 232, "b_p99_us": 1408, "b_per_second": 72715, "b_5xx": 0, "a_per_second": 72881, "a_p99_us": 1472, "a_5xx": 0}
+{"round": 1, "way": "host1", "kind": "both", "b_p50_us": 368, "b_p99_us": 1088, "b_per_second": 69843, "b_5xx": 0, "a_per_second": 69850, "a_p99_us": 1088, "a_5xx": 0}
+{"round": 2, "way": "host1", "kind": "alone", "b_p50_us": 80, "b_p99_us": 108, "b_per_second": 11401, "b_5xx": 0}
+{"round": 2, "way": "host", "kind": "alone", "b_p50_us": 80, "b_p99_us": 108, "b_per_second": 11354, "b_5xx": 0}
+{"round": 2, "way": "processes", "kind": "alone", "b_p50_us": 80, "b_p99_us": 112, "b_per_second": 11379, "b_5xx": 0}
+{"round": 2, "way": "host1", "kind": "flood", "b_p50_us": 368, "b_p99_us": 544, "b_per_second": 2639, "b_5xx": 0, "a_per_second": 136230, "a_p99_us": 608, "a_5xx": 0}
+{"round": 2, "way": "host", "kind": "flood", "b_p50_us": 96, "b_p99_us": 168, "b_per_second": 9796, "b_5xx": 0, "a_per_second": 105159, "a_p99_us": 928, "a_5xx": 0}
+{"round": 2, "way": "processes", "kind": "flood", "b_p50_us": 108, "b_p99_us": 336, "b_per_second": 8245, "b_5xx": 0, "a_per_second": 111460, "a_p99_us": 832, "a_5xx": 0}
+{"round": 2, "way": "host1", "kind": "both", "b_p50_us": 384, "b_p99_us": 1088, "b_per_second": 69703, "b_5xx": 0, "a_per_second": 69832, "a_p99_us": 1088, "a_5xx": 0}
+{"round": 2, "way": "host", "kind": "both", "b_p50_us": 232, "b_p99_us": 1408, "b_per_second": 72878, "b_5xx": 0, "a_per_second": 72964, "a_p99_us": 1408, "a_5xx": 0}
+{"round": 2, "way": "processes", "kind": "both", "b_p50_us": 232, "b_p99_us": 1408, "b_per_second": 73014, "b_5xx": 0, "a_per_second": 73166, "a_p99_us": 1472, "a_5xx": 0}
+{"round": 3, "way": "processes", "kind": "alone", "b_p50_us": 80, "b_p99_us": 108, "b_per_second": 11355, "b_5xx": 0}
+{"round": 3, "way": "host", "kind": "alone", "b_p50_us": 92, "b_p99_us": 116, "b_per_second": 10709, "b_5xx": 0}
+{"round": 3, "way": "host1", "kind": "alone", "b_p50_us": 88, "b_p99_us": 112, "b_per_second": 10968, "b_5xx": 0}
+{"round": 3, "way": "processes", "kind": "flood", "b_p50_us": 108, "b_p99_us": 336, "b_per_second": 8254, "b_5xx": 0, "a_per_second": 111085, "a_p99_us": 864, "a_5xx": 0}
+{"round": 3, "way": "host", "kind": "flood", "b_p50_us": 96, "b_p99_us": 168, "b_per_second": 9740, "b_5xx": 0, "a_per_second": 103766, "a_p99_us": 960, "a_5xx": 0}
+{"round": 3, "way": "host1", "kind": "flood", "b_p50_us": 384, "b_p99_us": 512, "b_per_second": 2613, "b_5xx": 0, "a_per_second": 136063, "a_p99_us": 576, "a_5xx": 0}
+{"round": 3, "way": "processes", "kind": "both", "b_p50_us": 232, "b_p99_us": 1472, "b_per_second": 72441, "b_5xx": 0, "a_per_second": 72495, "a_p99_us": 1408, "a_5xx": 0}
+{"round": 3, "way": "host", "kind": "both", "b_p50_us": 224, "b_p99_us": 1536, "b_per_second": 73284, "b_5xx": 0, "a_per_second": 73680, "a_p99_us": 1472, "a_5xx": 0}
+{"round": 3, "way": "host1", "kind": "both", "b_p50_us": 384, "b_p99_us": 1088, "b_per_second": 69499, "b_5xx": 0, "a_per_second": 69671, "a_p99_us": 1088, "a_5xx": 0}
+{"round": 4, "way": "host1", "kind": "alone", "b_p50_us": 80, "b_p99_us": 108, "b_per_second": 11339, "b_5xx": 0}
+{"round": 4, "way": "host", "kind": "alone", "b_p50_us": 80, "b_p99_us": 112, "b_per_second": 11212, "b_5xx": 0}
+{"round": 4, "way": "processes", "kind": "alone", "b_p50_us": 80, "b_p99_us": 108, "b_per_second": 11273, "b_5xx": 0}
+{"round": 4, "way": "host1", "kind": "flood", "b_p50_us": 352, "b_p99_us": 544, "b_per_second": 2764, "b_5xx": 0, "a_per_second": 136121, "a_p99_us": 608, "a_5xx": 0}
+{"round": 4, "way": "host", "kind": "flood", "b_p50_us": 96, "b_p99_us": 168, "b_per_second": 9856, "b_5xx": 0, "a_per_second": 104503, "a_p99_us": 960, "a_5xx": 0}
+{"round": 4, "way": "processes", "kind": "flood", "b_p50_us": 108, "b_p99_us": 336, "b_per_second": 8236, "b_5xx": 0, "a_per_second": 110230, "a_p99_us": 864, "a_5xx": 0}
+{"round": 4, "way": "host1", "kind": "both", "b_p50_us": 368, "b_p99_us": 1088, "b_per_second": 69493, "b_5xx": 0, "a_per_second": 69639, "a_p99_us": 1088, "a_5xx": 0}
+{"round": 4, "way": "host", "kind": "both", "b_p50_us": 232, "b_p99_us": 1408, "b_per_second": 73333, "b_5xx": 0, "a_per_second": 73619, "a_p99_us": 1408, "a_5xx": 0}
+{"round": 4, "way": "processes", "kind": "both", "b_p50_us": 272, "b_p99_us": 1408, "b_per_second": 68374, "b_5xx": 0, "a_per_second": 68394, "a_p99_us": 1408, "a_5xx": 0}
+{"round": 5, "way": "processes", "kind": "alone", "b_p50_us": 80, "b_p99_us": 108, "b_per_second": 11207, "b_5xx": 0}
+{"round": 5, "way": "host", "kind": "alone", "b_p50_us": 80, "b_p99_us": 112, "b_per_second": 11127, "b_5xx": 0}
+{"round": 5, "way": "host1", "kind": "alone", "b_p50_us": 80, "b_p99_us": 112, "b_per_second": 11226, "b_5xx": 0}
+{"round": 5, "way": "processes", "kind": "flood", "b_p50_us": 108, "b_p99_us": 352, "b_per_second": 8154, "b_5xx": 0, "a_per_second": 109753, "a_p99_us": 928, "a_5xx": 0}
+{"round": 5, "way": "host", "kind": "flood", "b_p50_us": 96, "b_p99_us": 160, "b_per_second": 9749, "b_5xx": 0, "a_per_second": 104439, "a_p99_us": 960, "a_5xx": 0}
+{"round": 5, "way": "host1", "kind": "flood", "b_p50_us": 352, "b_p99_us": 544, "b_per_second": 2783, "b_5xx": 0, "a_per_second": 136101, "a_p99_us": 576, "a_5xx": 0}
+{"round": 5, "way": "processes", "kind": "both", "b_p50_us": 232, "b_p99_us": 1472, "b_per_second": 73178, "b_5xx": 0, "a_per_second": 73290, "a_p99_us": 1408, "a_5xx": 0}
+{"round": 5, "way": "host", "kind": "both", "b_p50_us": 232, "b_p99_us": 1408, "b_per_second": 73002, "b_5xx": 0, "a_per_second": 73119, "a_p99_us": 1408, "a_5xx": 0}
+{"round": 5, "way": "host1", "kind": "both", "b_p50_us": 384, "b_p99_us": 1088, "b_per_second": 69756, "b_5xx": 0, "a_per_second": 70013, "a_p99_us": 1088, "a_5xx": 0}
diff --git a/research/experiments/026-apps-on-one-host/2026-10-01-load.txt b/research/experiments/026-apps-on-one-host/2026-10-01-load.txt
new file mode 100644
index 0000000..8bdf107
--- /dev/null
+++ b/research/experiments/026-apps-on-one-host/2026-10-01-load.txt
@@ -0,0 +1,26 @@
+isolation 03:56:18 up 1:08, 2 users, load average: 0.34, 1.39, 3.50
+isolation 04:17:12 up 1:29, 2 users, load average: 0.43, 1.29, 2.23
+1 before 04:31:43 up 1:44, 1 user, load average: 0.35, 1.48, 1.96
+1 after 04:33:29 up 1:45, 1 user, load average: 0.91, 1.43, 1.90
+2 after 04:57:21 up 2:09, 1 user, load average: 0.01, 1.42, 2.44
+2 before 04:58:47 up 2:11, 1 user, load average: 1.01, 1.43, 2.35
+1 before 05:05:52 up 2:18, 1 user, load average: 1.27, 1.54, 2.06
+1 after 05:07:19 up 2:19, 1 user, load average: 1.16, 1.44, 1.97
+2 after 05:08:45 up 2:21, 1 user, load average: 1.36, 1.49, 1.95
+2 before 05:10:31 up 2:22, 1 user, load average: 1.27, 1.53, 1.92
+3 before 05:12:03 up 2:24, 1 user, load average: 1.19, 1.48, 1.87
+3 after 05:13:30 up 2:25, 1 user, load average: 1.31, 1.48, 1.84
+4 after 05:14:57 up 2:27, 1 user, load average: 1.36, 1.51, 1.81
+4 before 05:16:34 up 2:28, 1 user, load average: 1.31, 1.53, 1.79
+1 before 05:47:20 up 2:59, 3 users, load average: 1.30, 3.61, 4.08
+1 after 05:48:46 up 3:01, 3 users, load average: 1.32, 3.09, 3.86
+2 after 05:50:20 up 3:02, 3 users, load average: 1.35, 2.66, 3.63
+2 before 05:51:56 up 3:04, 3 users, load average: 1.29, 2.33, 3.42
+3 before 05:53:31 up 3:05, 3 users, load average: 1.23, 2.12, 3.24
+3 after 05:55:07 up 3:07, 3 users, load average: 1.38, 2.05, 3.12
+4 after 05:56:33 up 3:08, 3 users, load average: 1.37, 1.91, 2.97
+4 before 05:58:09 up 3:10, 3 users, load average: 1.42, 1.89, 2.87
+5 before 06:01:18 up 3:13, 3 users, load average: 1.31, 2.11, 2.80
+5 after 06:03:15 up 3:15, 3 users, load average: 1.40, 2.02, 2.70
+6 after 06:04:53 up 3:17, 3 users, load average: 1.36, 1.93, 2.60
+6 before 06:20:04 up 3:32, 3 users, load average: 1.30, 3.78, 3.64
diff --git a/research/experiments/026-apps-on-one-host/2026-10-01-memory-linux-aarch64.jsonl b/research/experiments/026-apps-on-one-host/2026-10-01-memory-linux-aarch64.jsonl
new file mode 100644
index 0000000..d739fa2
--- /dev/null
+++ b/research/experiments/026-apps-on-one-host/2026-10-01-memory-linux-aarch64.jsonl
@@ -0,0 +1,4 @@
+{"way": "process", "apps": 1, "private_dirty_kib": 1296, "rss_kib": 2752, "pss_kib": 1311, "threads": 2}
+{"way": "host", "apps": 1, "private_dirty_kib": 1328, "rss_kib": 2784, "pss_kib": 1343, "threads": 3}
+{"way": "host", "apps": 10, "private_dirty_kib": 2384, "rss_kib": 3840, "pss_kib": 2399, "threads": 3}
+{"way": "host", "apps": 100, "private_dirty_kib": 13232, "rss_kib": 14688, "pss_kib": 13247, "threads": 3}
diff --git a/research/experiments/026-apps-on-one-host/2026-10-01-queries-after-1-linux-aarch64.jsonl b/research/experiments/026-apps-on-one-host/2026-10-01-queries-after-1-linux-aarch64.jsonl
new file mode 100644
index 0000000..5b3858c
--- /dev/null
+++ b/research/experiments/026-apps-on-one-host/2026-10-01-queries-after-1-linux-aarch64.jsonl
@@ -0,0 +1,4 @@
+{"query": "per_branch", "rows": 10, "accounts": 100000, "pure_median_ms": 5.24, "pure_fastest_ms": 5.17, "sqlite_median_ms": 48.09, "sqlite_fastest_ms": 48.0, "sqlite_indexed_median_ms": 14.44, "sqlite_indexed_fastest_ms": 14.43}
+{"query": "in_credit", "rows": 1, "accounts": 100000, "pure_median_ms": 0.81, "pure_fastest_ms": 0.78, "sqlite_median_ms": 6.82, "sqlite_fastest_ms": 6.77, "sqlite_indexed_median_ms": 0.2, "sqlite_indexed_fastest_ms": 0.2}
+{"query": "large", "rows": 212, "accounts": 100000, "pure_median_ms": 0.38, "pure_fastest_ms": 0.37, "sqlite_median_ms": 1.68, "sqlite_fastest_ms": 1.67, "sqlite_indexed_median_ms": 1.68, "sqlite_indexed_fastest_ms": 1.66}
+{"query": "ranks", "rows": 404, "accounts": 100000, "pure_median_ms": 6.6, "pure_fastest_ms": 6.53, "sqlite_median_ms": 3323.33, "sqlite_fastest_ms": 3319.8, "sqlite_indexed_median_ms": 8.8, "sqlite_indexed_fastest_ms": 8.72}
diff --git a/research/experiments/026-apps-on-one-host/2026-10-01-queries-after-2-linux-aarch64.jsonl b/research/experiments/026-apps-on-one-host/2026-10-01-queries-after-2-linux-aarch64.jsonl
new file mode 100644
index 0000000..56318e0
--- /dev/null
+++ b/research/experiments/026-apps-on-one-host/2026-10-01-queries-after-2-linux-aarch64.jsonl
@@ -0,0 +1,4 @@
+{"query": "per_branch", "rows": 10, "accounts": 100000, "pure_median_ms": 5.19, "pure_fastest_ms": 5.09, "sqlite_median_ms": 45.3, "sqlite_fastest_ms": 45.18, "sqlite_indexed_median_ms": 14.18, "sqlite_indexed_fastest_ms": 14.13}
+{"query": "in_credit", "rows": 1, "accounts": 100000, "pure_median_ms": 0.79, "pure_fastest_ms": 0.76, "sqlite_median_ms": 5.91, "sqlite_fastest_ms": 5.91, "sqlite_indexed_median_ms": 0.16, "sqlite_indexed_fastest_ms": 0.16}
+{"query": "large", "rows": 212, "accounts": 100000, "pure_median_ms": 0.38, "pure_fastest_ms": 0.37, "sqlite_median_ms": 1.47, "sqlite_fastest_ms": 1.46, "sqlite_indexed_median_ms": 1.48, "sqlite_indexed_fastest_ms": 1.47}
+{"query": "ranks", "rows": 404, "accounts": 100000, "pure_median_ms": 6.62, "pure_fastest_ms": 6.56, "sqlite_median_ms": 2832.72, "sqlite_fastest_ms": 2828.29, "sqlite_indexed_median_ms": 7.8, "sqlite_indexed_fastest_ms": 7.72}
diff --git a/research/experiments/026-apps-on-one-host/2026-10-01-queries-after-3-linux-aarch64.jsonl b/research/experiments/026-apps-on-one-host/2026-10-01-queries-after-3-linux-aarch64.jsonl
new file mode 100644
index 0000000..34ada20
--- /dev/null
+++ b/research/experiments/026-apps-on-one-host/2026-10-01-queries-after-3-linux-aarch64.jsonl
@@ -0,0 +1,4 @@
+{"query": "per_branch", "rows": 10, "accounts": 100000, "pure_median_ms": 5.23, "pure_fastest_ms": 5.17, "sqlite_median_ms": 44.94, "sqlite_fastest_ms": 44.81, "sqlite_indexed_median_ms": 14.11, "sqlite_indexed_fastest_ms": 14.0}
+{"query": "in_credit", "rows": 1, "accounts": 100000, "pure_median_ms": 0.78, "pure_fastest_ms": 0.76, "sqlite_median_ms": 5.92, "sqlite_fastest_ms": 5.9, "sqlite_indexed_median_ms": 0.16, "sqlite_indexed_fastest_ms": 0.16}
+{"query": "large", "rows": 212, "accounts": 100000, "pure_median_ms": 0.38, "pure_fastest_ms": 0.36, "sqlite_median_ms": 1.48, "sqlite_fastest_ms": 1.47, "sqlite_indexed_median_ms": 1.48, "sqlite_indexed_fastest_ms": 1.47}
+{"query": "ranks", "rows": 404, "accounts": 100000, "pure_median_ms": 6.61, "pure_fastest_ms": 6.56, "sqlite_median_ms": 2831.48, "sqlite_fastest_ms": 2828.52, "sqlite_indexed_median_ms": 7.49, "sqlite_indexed_fastest_ms": 7.48}
diff --git a/research/experiments/026-apps-on-one-host/2026-10-01-queries-after-4-linux-aarch64.jsonl b/research/experiments/026-apps-on-one-host/2026-10-01-queries-after-4-linux-aarch64.jsonl
new file mode 100644
index 0000000..28a6eec
--- /dev/null
+++ b/research/experiments/026-apps-on-one-host/2026-10-01-queries-after-4-linux-aarch64.jsonl
@@ -0,0 +1,4 @@
+{"query": "per_branch", "rows": 10, "accounts": 100000, "pure_median_ms": 5.33, "pure_fastest_ms": 5.2, "sqlite_median_ms": 45.38, "sqlite_fastest_ms": 45.28, "sqlite_indexed_median_ms": 14.06, "sqlite_indexed_fastest_ms": 14.04}
+{"query": "in_credit", "rows": 1, "accounts": 100000, "pure_median_ms": 1.07, "pure_fastest_ms": 0.88, "sqlite_median_ms": 6.08, "sqlite_fastest_ms": 6.04, "sqlite_indexed_median_ms": 0.16, "sqlite_indexed_fastest_ms": 0.16}
+{"query": "large", "rows": 212, "accounts": 100000, "pure_median_ms": 0.61, "pure_fastest_ms": 0.51, "sqlite_median_ms": 1.67, "sqlite_fastest_ms": 1.56, "sqlite_indexed_median_ms": 1.48, "sqlite_indexed_fastest_ms": 1.47}
+{"query": "ranks", "rows": 404, "accounts": 100000, "pure_median_ms": 7.4, "pure_fastest_ms": 6.96, "sqlite_median_ms": 2831.77, "sqlite_fastest_ms": 2827.71, "sqlite_indexed_median_ms": 7.57, "sqlite_indexed_fastest_ms": 7.5}
diff --git a/research/experiments/026-apps-on-one-host/2026-10-01-queries-after-5-linux-aarch64.jsonl b/research/experiments/026-apps-on-one-host/2026-10-01-queries-after-5-linux-aarch64.jsonl
new file mode 100644
index 0000000..ffb80c2
--- /dev/null
+++ b/research/experiments/026-apps-on-one-host/2026-10-01-queries-after-5-linux-aarch64.jsonl
@@ -0,0 +1,4 @@
+{"query": "per_branch", "rows": 10, "accounts": 100000, "pure_median_ms": 5.38, "pure_fastest_ms": 5.24, "sqlite_median_ms": 45.1, "sqlite_fastest_ms": 44.9, "sqlite_indexed_median_ms": 14.11, "sqlite_indexed_fastest_ms": 14.03}
+{"query": "in_credit", "rows": 1, "accounts": 100000, "pure_median_ms": 0.8, "pure_fastest_ms": 0.77, "sqlite_median_ms": 5.9, "sqlite_fastest_ms": 5.87, "sqlite_indexed_median_ms": 0.16, "sqlite_indexed_fastest_ms": 0.16}
+{"query": "large", "rows": 212, "accounts": 100000, "pure_median_ms": 0.38, "pure_fastest_ms": 0.36, "sqlite_median_ms": 1.48, "sqlite_fastest_ms": 1.47, "sqlite_indexed_median_ms": 1.48, "sqlite_indexed_fastest_ms": 1.47}
+{"query": "ranks", "rows": 404, "accounts": 100000, "pure_median_ms": 6.66, "pure_fastest_ms": 6.58, "sqlite_median_ms": 2846.46, "sqlite_fastest_ms": 2837.61, "sqlite_indexed_median_ms": 7.62, "sqlite_indexed_fastest_ms": 7.52}
diff --git a/research/experiments/026-apps-on-one-host/2026-10-01-queries-after-6-linux-aarch64.jsonl b/research/experiments/026-apps-on-one-host/2026-10-01-queries-after-6-linux-aarch64.jsonl
new file mode 100644
index 0000000..2410d9a
--- /dev/null
+++ b/research/experiments/026-apps-on-one-host/2026-10-01-queries-after-6-linux-aarch64.jsonl
@@ -0,0 +1,4 @@
+{"query": "per_branch", "rows": 10, "accounts": 100000, "pure_median_ms": 5.41, "pure_fastest_ms": 5.23, "sqlite_median_ms": 45.15, "sqlite_fastest_ms": 44.9, "sqlite_indexed_median_ms": 14.06, "sqlite_indexed_fastest_ms": 14.02}
+{"query": "in_credit", "rows": 1, "accounts": 100000, "pure_median_ms": 0.83, "pure_fastest_ms": 0.79, "sqlite_median_ms": 6.03, "sqlite_fastest_ms": 5.88, "sqlite_indexed_median_ms": 0.16, "sqlite_indexed_fastest_ms": 0.16}
+{"query": "large", "rows": 212, "accounts": 100000, "pure_median_ms": 0.49, "pure_fastest_ms": 0.42, "sqlite_median_ms": 1.53, "sqlite_fastest_ms": 1.48, "sqlite_indexed_median_ms": 1.48, "sqlite_indexed_fastest_ms": 1.47}
+{"query": "ranks", "rows": 404, "accounts": 100000, "pure_median_ms": 6.89, "pure_fastest_ms": 6.71, "sqlite_median_ms": 2853.6, "sqlite_fastest_ms": 2838.7, "sqlite_indexed_median_ms": 7.67, "sqlite_indexed_fastest_ms": 7.5}
diff --git a/research/experiments/026-apps-on-one-host/2026-10-01-queries-before-1-linux-aarch64.jsonl b/research/experiments/026-apps-on-one-host/2026-10-01-queries-before-1-linux-aarch64.jsonl
new file mode 100644
index 0000000..2e6a9f4
--- /dev/null
+++ b/research/experiments/026-apps-on-one-host/2026-10-01-queries-before-1-linux-aarch64.jsonl
@@ -0,0 +1,4 @@
+{"query": "per_branch", "rows": 10, "accounts": 100000, "pure_median_ms": 5.22, "pure_fastest_ms": 5.12, "sqlite_median_ms": 45.5, "sqlite_fastest_ms": 45.39, "sqlite_indexed_median_ms": 14.12, "sqlite_indexed_fastest_ms": 14.07}
+{"query": "in_credit", "rows": 1, "accounts": 100000, "pure_median_ms": 0.83, "pure_fastest_ms": 0.8, "sqlite_median_ms": 5.92, "sqlite_fastest_ms": 5.9, "sqlite_indexed_median_ms": 0.16, "sqlite_indexed_fastest_ms": 0.16}
+{"query": "large", "rows": 212, "accounts": 100000, "pure_median_ms": 0.38, "pure_fastest_ms": 0.36, "sqlite_median_ms": 1.48, "sqlite_fastest_ms": 1.47, "sqlite_indexed_median_ms": 1.5, "sqlite_indexed_fastest_ms": 1.49}
+{"query": "ranks", "rows": 404, "accounts": 100000, "pure_median_ms": 6.68, "pure_fastest_ms": 6.64, "sqlite_median_ms": 2834.76, "sqlite_fastest_ms": 2831.3, "sqlite_indexed_median_ms": 7.56, "sqlite_indexed_fastest_ms": 7.52}
diff --git a/research/experiments/026-apps-on-one-host/2026-10-01-queries-before-2-linux-aarch64.jsonl b/research/experiments/026-apps-on-one-host/2026-10-01-queries-before-2-linux-aarch64.jsonl
new file mode 100644
index 0000000..5c222f0
--- /dev/null
+++ b/research/experiments/026-apps-on-one-host/2026-10-01-queries-before-2-linux-aarch64.jsonl
@@ -0,0 +1,4 @@
+{"query": "per_branch", "rows": 10, "accounts": 100000, "pure_median_ms": 5.17, "pure_fastest_ms": 5.1, "sqlite_median_ms": 45.31, "sqlite_fastest_ms": 45.15, "sqlite_indexed_median_ms": 14.17, "sqlite_indexed_fastest_ms": 14.13}
+{"query": "in_credit", "rows": 1, "accounts": 100000, "pure_median_ms": 0.8, "pure_fastest_ms": 0.77, "sqlite_median_ms": 5.86, "sqlite_fastest_ms": 5.85, "sqlite_indexed_median_ms": 0.16, "sqlite_indexed_fastest_ms": 0.16}
+{"query": "large", "rows": 212, "accounts": 100000, "pure_median_ms": 0.39, "pure_fastest_ms": 0.37, "sqlite_median_ms": 1.49, "sqlite_fastest_ms": 1.47, "sqlite_indexed_median_ms": 1.48, "sqlite_indexed_fastest_ms": 1.47}
+{"query": "ranks", "rows": 404, "accounts": 100000, "pure_median_ms": 6.65, "pure_fastest_ms": 6.6, "sqlite_median_ms": 2833.45, "sqlite_fastest_ms": 2828.57, "sqlite_indexed_median_ms": 7.55, "sqlite_indexed_fastest_ms": 7.5}
diff --git a/research/experiments/026-apps-on-one-host/2026-10-01-queries-before-3-linux-aarch64.jsonl b/research/experiments/026-apps-on-one-host/2026-10-01-queries-before-3-linux-aarch64.jsonl
new file mode 100644
index 0000000..a7d8c4d
--- /dev/null
+++ b/research/experiments/026-apps-on-one-host/2026-10-01-queries-before-3-linux-aarch64.jsonl
@@ -0,0 +1,4 @@
+{"query": "per_branch", "rows": 10, "accounts": 100000, "pure_median_ms": 5.2, "pure_fastest_ms": 5.11, "sqlite_median_ms": 45.38, "sqlite_fastest_ms": 45.07, "sqlite_indexed_median_ms": 14.09, "sqlite_indexed_fastest_ms": 14.07}
+{"query": "in_credit", "rows": 1, "accounts": 100000, "pure_median_ms": 0.8, "pure_fastest_ms": 0.77, "sqlite_median_ms": 5.89, "sqlite_fastest_ms": 5.86, "sqlite_indexed_median_ms": 0.16, "sqlite_indexed_fastest_ms": 0.16}
+{"query": "large", "rows": 212, "accounts": 100000, "pure_median_ms": 0.39, "pure_fastest_ms": 0.37, "sqlite_median_ms": 1.48, "sqlite_fastest_ms": 1.47, "sqlite_indexed_median_ms": 1.48, "sqlite_indexed_fastest_ms": 1.47}
+{"query": "ranks", "rows": 404, "accounts": 100000, "pure_median_ms": 6.62, "pure_fastest_ms": 6.57, "sqlite_median_ms": 2830.53, "sqlite_fastest_ms": 2824.34, "sqlite_indexed_median_ms": 7.55, "sqlite_indexed_fastest_ms": 7.52}
diff --git a/research/experiments/026-apps-on-one-host/2026-10-01-queries-before-4-linux-aarch64.jsonl b/research/experiments/026-apps-on-one-host/2026-10-01-queries-before-4-linux-aarch64.jsonl
new file mode 100644
index 0000000..2b41778
--- /dev/null
+++ b/research/experiments/026-apps-on-one-host/2026-10-01-queries-before-4-linux-aarch64.jsonl
@@ -0,0 +1,4 @@
+{"query": "per_branch", "rows": 10, "accounts": 100000, "pure_median_ms": 6.26, "pure_fastest_ms": 6.2, "sqlite_median_ms": 47.65, "sqlite_fastest_ms": 46.83, "sqlite_indexed_median_ms": 14.45, "sqlite_indexed_fastest_ms": 14.36}
+{"query": "in_credit", "rows": 1, "accounts": 100000, "pure_median_ms": 1.47, "pure_fastest_ms": 1.1, "sqlite_median_ms": 6.28, "sqlite_fastest_ms": 6.11, "sqlite_indexed_median_ms": 0.18, "sqlite_indexed_fastest_ms": 0.17}
+{"query": "large", "rows": 212, "accounts": 100000, "pure_median_ms": 0.49, "pure_fastest_ms": 0.45, "sqlite_median_ms": 1.71, "sqlite_fastest_ms": 1.57, "sqlite_indexed_median_ms": 1.9, "sqlite_indexed_fastest_ms": 1.81}
+{"query": "ranks", "rows": 404, "accounts": 100000, "pure_median_ms": 6.88, "pure_fastest_ms": 6.79, "sqlite_median_ms": 3004.17, "sqlite_fastest_ms": 2904.76, "sqlite_indexed_median_ms": 8.28, "sqlite_indexed_fastest_ms": 8.23}
diff --git a/research/experiments/026-apps-on-one-host/2026-10-01-queries-before-5-linux-aarch64.jsonl b/research/experiments/026-apps-on-one-host/2026-10-01-queries-before-5-linux-aarch64.jsonl
new file mode 100644
index 0000000..50f44a4
--- /dev/null
+++ b/research/experiments/026-apps-on-one-host/2026-10-01-queries-before-5-linux-aarch64.jsonl
@@ -0,0 +1,4 @@
+{"query": "per_branch", "rows": 10, "accounts": 100000, "pure_median_ms": 5.16, "pure_fastest_ms": 5.09, "sqlite_median_ms": 44.93, "sqlite_fastest_ms": 44.85, "sqlite_indexed_median_ms": 14.16, "sqlite_indexed_fastest_ms": 14.11}
+{"query": "in_credit", "rows": 1, "accounts": 100000, "pure_median_ms": 0.81, "pure_fastest_ms": 0.77, "sqlite_median_ms": 5.95, "sqlite_fastest_ms": 5.88, "sqlite_indexed_median_ms": 0.16, "sqlite_indexed_fastest_ms": 0.16}
+{"query": "large", "rows": 212, "accounts": 100000, "pure_median_ms": 0.41, "pure_fastest_ms": 0.37, "sqlite_median_ms": 1.48, "sqlite_fastest_ms": 1.47, "sqlite_indexed_median_ms": 1.48, "sqlite_indexed_fastest_ms": 1.47}
+{"query": "ranks", "rows": 404, "accounts": 100000, "pure_median_ms": 6.7, "pure_fastest_ms": 6.65, "sqlite_median_ms": 2844.18, "sqlite_fastest_ms": 2837.81, "sqlite_indexed_median_ms": 7.67, "sqlite_indexed_fastest_ms": 7.54}
diff --git a/research/experiments/026-apps-on-one-host/2026-10-01-queries-before-6-linux-aarch64.jsonl b/research/experiments/026-apps-on-one-host/2026-10-01-queries-before-6-linux-aarch64.jsonl
new file mode 100644
index 0000000..75c3a81
--- /dev/null
+++ b/research/experiments/026-apps-on-one-host/2026-10-01-queries-before-6-linux-aarch64.jsonl
@@ -0,0 +1,4 @@
+{"query": "per_branch", "rows": 10, "accounts": 100000, "pure_median_ms": 5.19, "pure_fastest_ms": 5.11, "sqlite_median_ms": 44.94, "sqlite_fastest_ms": 44.81, "sqlite_indexed_median_ms": 14.15, "sqlite_indexed_fastest_ms": 14.1}
+{"query": "in_credit", "rows": 1, "accounts": 100000, "pure_median_ms": 0.85, "pure_fastest_ms": 0.77, "sqlite_median_ms": 5.93, "sqlite_fastest_ms": 5.87, "sqlite_indexed_median_ms": 0.16, "sqlite_indexed_fastest_ms": 0.16}
+{"query": "large", "rows": 212, "accounts": 100000, "pure_median_ms": 0.38, "pure_fastest_ms": 0.36, "sqlite_median_ms": 1.48, "sqlite_fastest_ms": 1.47, "sqlite_indexed_median_ms": 1.47, "sqlite_indexed_fastest_ms": 1.47}
+{"query": "ranks", "rows": 404, "accounts": 100000, "pure_median_ms": 6.65, "pure_fastest_ms": 6.55, "sqlite_median_ms": 2840.06, "sqlite_fastest_ms": 2837.01, "sqlite_indexed_median_ms": 7.58, "sqlite_indexed_fastest_ms": 7.54}
diff --git a/research/experiments/026-apps-on-one-host/2026-10-01-tpcc-after-1-linux-aarch64.jsonl b/research/experiments/026-apps-on-one-host/2026-10-01-tpcc-after-1-linux-aarch64.jsonl
new file mode 100644
index 0000000..8a99f0e
--- /dev/null
+++ b/research/experiments/026-apps-on-one-host/2026-10-01-tpcc-after-1-linux-aarch64.jsonl
@@ -0,0 +1,3 @@
+{"step": "load", "directory": "/dev/shm", "warehouses": 1, "rows": 568758, "generate_s": 0.56, "pure_load_s": 0.72, "sqlite_load_s": 1.55, "sqlite_page_size": 4096, "pure_resident_mib": 38.2, "sqlite_file_mib": 13.8}
+{"step": "run", "system": "pure", "warehouses": 1, "terminals": 64, "transactions_per_second": 45754, "new_orders_per_minute": 1223943, "undone_new_orders": 3934, "errors": 0, "new_order": {"done": 411938, "failed": 0, "p50_us": 1408, "p99_us": 2816}, "payment": {"done": 393383, "failed": 0, "p50_us": 1408, "p99_us": 2816}, "order_status": {"done": 36713, "failed": 0, "p50_us": 240, "p99_us": 1024}, "delivery": {"done": 36661, "failed": 0, "p50_us": 1408, "p99_us": 2816}, "stock_level": {"done": 36436, "failed": 0, "p50_us": 272, "p99_us": 1088}, "server_threads": "3", "cpu_us_per_transaction": 41.8, "core_shares": {"pure-owner": 0.91, "pure-checkpoint": 0.01}, "resident_mib": 476.0, "written_bytes_per_transaction": 0.0, "device_bytes_per_transaction": null, "consistency_failures": []}
+{"step": "end", "pure_resident_mib": 476.0, "pure_state_mib": 242.6, "pure_store_mib": 246.7, "sqlite_files_mib": 13.8, "grouped_sqlite_files_mib": 0.0, "pure_counts": {"bursts": 27401, "burst_events": 838133, "checkpoints": 41}}
diff --git a/research/experiments/026-apps-on-one-host/2026-10-01-tpcc-after-2-linux-aarch64.jsonl b/research/experiments/026-apps-on-one-host/2026-10-01-tpcc-after-2-linux-aarch64.jsonl
new file mode 100644
index 0000000..261d8c4
--- /dev/null
+++ b/research/experiments/026-apps-on-one-host/2026-10-01-tpcc-after-2-linux-aarch64.jsonl
@@ -0,0 +1,3 @@
+{"step": "load", "directory": "/dev/shm", "warehouses": 1, "rows": 568758, "generate_s": 0.56, "pure_load_s": 0.71, "sqlite_load_s": 1.56, "sqlite_page_size": 4096, "pure_resident_mib": 38.2, "sqlite_file_mib": 13.8}
+{"step": "run", "system": "pure", "warehouses": 1, "terminals": 64, "transactions_per_second": 45762, "new_orders_per_minute": 1224115, "undone_new_orders": 3937, "errors": 0, "new_order": {"done": 411978, "failed": 0, "p50_us": 1408, "p99_us": 2816}, "payment": {"done": 393418, "failed": 0, "p50_us": 1408, "p99_us": 2688}, "order_status": {"done": 36696, "failed": 0, "p50_us": 248, "p99_us": 1024}, "delivery": {"done": 36652, "failed": 0, "p50_us": 1408, "p99_us": 2688}, "stock_level": {"done": 36497, "failed": 0, "p50_us": 272, "p99_us": 1088}, "server_threads": "3", "cpu_us_per_transaction": 42.0, "core_shares": {"pure-owner": 0.91, "pure-checkpoint": 0.01}, "resident_mib": 476.0, "written_bytes_per_transaction": 0.0, "device_bytes_per_transaction": null, "consistency_failures": []}
+{"step": "end", "pure_resident_mib": 476.0, "pure_state_mib": 242.6, "pure_store_mib": 246.7, "sqlite_files_mib": 13.8, "grouped_sqlite_files_mib": 0.0, "pure_counts": {"bursts": 27592, "burst_events": 838197, "checkpoints": 41}}
diff --git a/research/experiments/026-apps-on-one-host/2026-10-01-tpcc-after-3-linux-aarch64.jsonl b/research/experiments/026-apps-on-one-host/2026-10-01-tpcc-after-3-linux-aarch64.jsonl
new file mode 100644
index 0000000..8946abe
--- /dev/null
+++ b/research/experiments/026-apps-on-one-host/2026-10-01-tpcc-after-3-linux-aarch64.jsonl
@@ -0,0 +1,3 @@
+{"step": "load", "directory": "/dev/shm", "warehouses": 1, "rows": 568758, "generate_s": 0.56, "pure_load_s": 0.71, "sqlite_load_s": 1.56, "sqlite_page_size": 4096, "pure_resident_mib": 38.2, "sqlite_file_mib": 13.8}
+{"step": "run", "system": "pure", "warehouses": 1, "terminals": 64, "transactions_per_second": 44905, "new_orders_per_minute": 1201258, "undone_new_orders": 3859, "errors": 0, "new_order": {"done": 404279, "failed": 0, "p50_us": 1408, "p99_us": 3072}, "payment": {"done": 386044, "failed": 0, "p50_us": 1408, "p99_us": 3072}, "order_status": {"done": 36011, "failed": 0, "p50_us": 248, "p99_us": 1152}, "delivery": {"done": 35965, "failed": 0, "p50_us": 1408, "p99_us": 3072}, "stock_level": {"done": 35808, "failed": 0, "p50_us": 272, "p99_us": 1216}, "server_threads": "3", "cpu_us_per_transaction": 42.5, "core_shares": {"pure-owner": 0.9, "pure-checkpoint": 0.01}, "resident_mib": 468.8, "written_bytes_per_transaction": 0.0, "device_bytes_per_transaction": null, "consistency_failures": []}
+{"step": "end", "pure_resident_mib": 468.8, "pure_state_mib": 238.5, "pure_store_mib": 246.7, "sqlite_files_mib": 13.8, "grouped_sqlite_files_mib": 0.0, "pure_counts": {"bursts": 27026, "burst_events": 822515, "checkpoints": 40}}
diff --git a/research/experiments/026-apps-on-one-host/2026-10-01-tpcc-after-4-linux-aarch64.jsonl b/research/experiments/026-apps-on-one-host/2026-10-01-tpcc-after-4-linux-aarch64.jsonl
new file mode 100644
index 0000000..e44f2cc
--- /dev/null
+++ b/research/experiments/026-apps-on-one-host/2026-10-01-tpcc-after-4-linux-aarch64.jsonl
@@ -0,0 +1,3 @@
+{"step": "load", "directory": "/dev/shm", "warehouses": 1, "rows": 568758, "generate_s": 0.56, "pure_load_s": 0.71, "sqlite_load_s": 1.56, "sqlite_page_size": 4096, "pure_resident_mib": 38.2, "sqlite_file_mib": 13.8}
+{"step": "run", "system": "pure", "warehouses": 1, "terminals": 64, "transactions_per_second": 45181, "new_orders_per_minute": 1208471, "undone_new_orders": 3887, "errors": 0, "new_order": {"done": 406711, "failed": 0, "p50_us": 1408, "p99_us": 3072}, "payment": {"done": 388437, "failed": 0, "p50_us": 1408, "p99_us": 3072}, "order_status": {"done": 36244, "failed": 0, "p50_us": 248, "p99_us": 1024}, "delivery": {"done": 36218, "failed": 0, "p50_us": 1408, "p99_us": 3072}, "stock_level": {"done": 36015, "failed": 0, "p50_us": 272, "p99_us": 1088}, "server_threads": "3", "cpu_us_per_transaction": 42.4, "core_shares": {"pure-owner": 0.9, "pure-checkpoint": 0.01}, "resident_mib": 470.8, "written_bytes_per_transaction": 0.0, "device_bytes_per_transaction": null, "consistency_failures": []}
+{"step": "end", "pure_resident_mib": 470.8, "pure_state_mib": 239.8, "pure_store_mib": 246.7, "sqlite_files_mib": 13.8, "grouped_sqlite_files_mib": 0.0, "pure_counts": {"bursts": 27060, "burst_events": 827562, "checkpoints": 40}}
diff --git a/research/experiments/026-apps-on-one-host/2026-10-01-tpcc-after-5-linux-aarch64.jsonl b/research/experiments/026-apps-on-one-host/2026-10-01-tpcc-after-5-linux-aarch64.jsonl
new file mode 100644
index 0000000..01964c8
--- /dev/null
+++ b/research/experiments/026-apps-on-one-host/2026-10-01-tpcc-after-5-linux-aarch64.jsonl
@@ -0,0 +1,3 @@
+{"step": "load", "directory": "/dev/shm", "warehouses": 1, "rows": 568758, "generate_s": 0.58, "pure_load_s": 0.77, "sqlite_load_s": 1.59, "sqlite_page_size": 4096, "pure_resident_mib": 38.2, "sqlite_file_mib": 13.8}
+{"step": "run", "system": "pure", "warehouses": 1, "terminals": 64, "transactions_per_second": 40751, "new_orders_per_minute": 1090358, "undone_new_orders": 3493, "errors": 0, "new_order": {"done": 366947, "failed": 0, "p50_us": 1472, "p99_us": 4608}, "payment": {"done": 350223, "failed": 0, "p50_us": 1472, "p99_us": 4608}, "order_status": {"done": 32741, "failed": 0, "p50_us": 256, "p99_us": 1920}, "delivery": {"done": 32658, "failed": 0, "p50_us": 1472, "p99_us": 4608}, "stock_level": {"done": 32453, "failed": 0, "p50_us": 288, "p99_us": 2048}, "server_threads": "3", "cpu_us_per_transaction": 44.1, "core_shares": {"pure-owner": 0.85, "pure-checkpoint": 0.01}, "resident_mib": 431.6, "written_bytes_per_transaction": 0.0, "device_bytes_per_transaction": null, "consistency_failures": []}
+{"step": "end", "pure_resident_mib": 431.7, "pure_state_mib": 218.6, "pure_store_mib": 222.7, "sqlite_files_mib": 13.8, "grouped_sqlite_files_mib": 0.0, "pure_counts": {"bursts": 25236, "burst_events": 746420, "checkpoints": 37}}
diff --git a/research/experiments/026-apps-on-one-host/2026-10-01-tpcc-after-6-linux-aarch64.jsonl b/research/experiments/026-apps-on-one-host/2026-10-01-tpcc-after-6-linux-aarch64.jsonl
new file mode 100644
index 0000000..9b784ff
--- /dev/null
+++ b/research/experiments/026-apps-on-one-host/2026-10-01-tpcc-after-6-linux-aarch64.jsonl
@@ -0,0 +1,3 @@
+{"step": "load", "directory": "/dev/shm", "warehouses": 1, "rows": 568758, "generate_s": 0.56, "pure_load_s": 0.72, "sqlite_load_s": 1.57, "sqlite_page_size": 4096, "pure_resident_mib": 38.2, "sqlite_file_mib": 13.8}
+{"step": "run", "system": "pure", "warehouses": 1, "terminals": 64, "transactions_per_second": 37280, "new_orders_per_minute": 996753, "undone_new_orders": 3200, "errors": 0, "new_order": {"done": 335464, "failed": 0, "p50_us": 1536, "p99_us": 5376}, "payment": {"done": 320661, "failed": 0, "p50_us": 1472, "p99_us": 5376}, "order_status": {"done": 29935, "failed": 0, "p50_us": 288, "p99_us": 2304}, "delivery": {"done": 29887, "failed": 0, "p50_us": 1536, "p99_us": 5376}, "stock_level": {"done": 29674, "failed": 0, "p50_us": 320, "p99_us": 2688}, "server_threads": "3", "cpu_us_per_transaction": 45.3, "core_shares": {"pure-owner": 0.81, "pure-checkpoint": 0.01}, "resident_mib": 399.4, "written_bytes_per_transaction": 0.0, "device_bytes_per_transaction": null, "consistency_failures": []}
+{"step": "end", "pure_resident_mib": 399.4, "pure_state_mib": 201.7, "pure_store_mib": 206.7, "sqlite_files_mib": 13.8, "grouped_sqlite_files_mib": 0.0, "pure_counts": {"bursts": 23113, "burst_events": 682894, "checkpoints": 32}}
diff --git a/research/experiments/026-apps-on-one-host/2026-10-01-tpcc-before-1-linux-aarch64.jsonl b/research/experiments/026-apps-on-one-host/2026-10-01-tpcc-before-1-linux-aarch64.jsonl
new file mode 100644
index 0000000..66efea0
--- /dev/null
+++ b/research/experiments/026-apps-on-one-host/2026-10-01-tpcc-before-1-linux-aarch64.jsonl
@@ -0,0 +1,3 @@
+{"step": "load", "directory": "/dev/shm", "warehouses": 1, "rows": 568758, "generate_s": 0.56, "pure_load_s": 0.71, "sqlite_load_s": 1.62, "sqlite_page_size": 4096, "pure_resident_mib": 38.9, "sqlite_file_mib": 13.8}
+{"step": "run", "system": "pure", "warehouses": 1, "terminals": 64, "transactions_per_second": 46682, "new_orders_per_minute": 1248535, "undone_new_orders": 4015, "errors": 0, "new_order": {"done": 420195, "failed": 0, "p50_us": 1408, "p99_us": 2560}, "payment": {"done": 401410, "failed": 0, "p50_us": 1408, "p99_us": 2560}, "order_status": {"done": 37473, "failed": 0, "p50_us": 240, "p99_us": 928}, "delivery": {"done": 37376, "failed": 0, "p50_us": 1408, "p99_us": 2560}, "stock_level": {"done": 37182, "failed": 0, "p50_us": 272, "p99_us": 992}, "server_threads": "3", "cpu_us_per_transaction": 41.0, "core_shares": {"pure-owner": 0.92, "pure-checkpoint": 0.01}, "resident_mib": 485.8, "written_bytes_per_transaction": 0.0, "device_bytes_per_transaction": null, "consistency_failures": []}
+{"step": "end", "pure_resident_mib": 485.8, "pure_state_mib": 247.0, "pure_store_mib": 254.7, "sqlite_files_mib": 13.8, "grouped_sqlite_files_mib": 0.0, "pure_counts": {"bursts": 27834, "burst_events": 855040, "checkpoints": 42}}
diff --git a/research/experiments/026-apps-on-one-host/2026-10-01-tpcc-before-2-linux-aarch64.jsonl b/research/experiments/026-apps-on-one-host/2026-10-01-tpcc-before-2-linux-aarch64.jsonl
new file mode 100644
index 0000000..0a7f987
--- /dev/null
+++ b/research/experiments/026-apps-on-one-host/2026-10-01-tpcc-before-2-linux-aarch64.jsonl
@@ -0,0 +1,3 @@
+{"step": "load", "directory": "/dev/shm", "warehouses": 1, "rows": 568758, "generate_s": 0.55, "pure_load_s": 0.71, "sqlite_load_s": 1.56, "sqlite_page_size": 4096, "pure_resident_mib": 38.2, "sqlite_file_mib": 13.8}
+{"step": "run", "system": "pure", "warehouses": 1, "terminals": 64, "transactions_per_second": 45195, "new_orders_per_minute": 1208889, "undone_new_orders": 3885, "errors": 0, "new_order": {"done": 406848, "failed": 0, "p50_us": 1408, "p99_us": 3200}, "payment": {"done": 388558, "failed": 0, "p50_us": 1408, "p99_us": 3072}, "order_status": {"done": 36249, "failed": 0, "p50_us": 248, "p99_us": 1216}, "delivery": {"done": 36204, "failed": 0, "p50_us": 1408, "p99_us": 3072}, "stock_level": {"done": 36040, "failed": 0, "p50_us": 272, "p99_us": 1344}, "server_threads": "3", "cpu_us_per_transaction": 42.3, "core_shares": {"pure-owner": 0.9, "pure-checkpoint": 0.01}, "resident_mib": 471.5, "written_bytes_per_transaction": 0.0, "device_bytes_per_transaction": null, "consistency_failures": []}
+{"step": "end", "pure_resident_mib": 471.5, "pure_state_mib": 239.9, "pure_store_mib": 246.7, "sqlite_files_mib": 13.8, "grouped_sqlite_files_mib": 0.0, "pure_counts": {"bursts": 27445, "burst_events": 827807, "checkpoints": 40}}
diff --git a/research/experiments/026-apps-on-one-host/2026-10-01-tpcc-before-3-linux-aarch64.jsonl b/research/experiments/026-apps-on-one-host/2026-10-01-tpcc-before-3-linux-aarch64.jsonl
new file mode 100644
index 0000000..4885303
--- /dev/null
+++ b/research/experiments/026-apps-on-one-host/2026-10-01-tpcc-before-3-linux-aarch64.jsonl
@@ -0,0 +1,3 @@
+{"step": "load", "directory": "/dev/shm", "warehouses": 1, "rows": 568758, "generate_s": 0.59, "pure_load_s": 0.72, "sqlite_load_s": 1.57, "sqlite_page_size": 4096, "pure_resident_mib": 38.9, "sqlite_file_mib": 13.8}
+{"step": "run", "system": "pure", "warehouses": 1, "terminals": 64, "transactions_per_second": 44967, "new_orders_per_minute": 1202893, "undone_new_orders": 3864, "errors": 0, "new_order": {"done": 404831, "failed": 0, "p50_us": 1408, "p99_us": 3072}, "payment": {"done": 386565, "failed": 0, "p50_us": 1408, "p99_us": 3072}, "order_status": {"done": 36064, "failed": 0, "p50_us": 248, "p99_us": 1152}, "delivery": {"done": 36014, "failed": 0, "p50_us": 1408, "p99_us": 3072}, "stock_level": {"done": 35871, "failed": 0, "p50_us": 272, "p99_us": 1152}, "server_threads": "3", "cpu_us_per_transaction": 42.5, "core_shares": {"pure-owner": 0.9, "pure-checkpoint": 0.01}, "resident_mib": 469.6, "written_bytes_per_transaction": 0.0, "device_bytes_per_transaction": null, "consistency_failures": []}
+{"step": "end", "pure_resident_mib": 469.6, "pure_state_mib": 238.8, "pure_store_mib": 246.7, "sqlite_files_mib": 13.8, "grouped_sqlite_files_mib": 0.0, "pure_counts": {"bursts": 26924, "burst_events": 823631, "checkpoints": 40}}
diff --git a/research/experiments/026-apps-on-one-host/2026-10-01-tpcc-before-4-linux-aarch64.jsonl b/research/experiments/026-apps-on-one-host/2026-10-01-tpcc-before-4-linux-aarch64.jsonl
new file mode 100644
index 0000000..fb20f20
--- /dev/null
+++ b/research/experiments/026-apps-on-one-host/2026-10-01-tpcc-before-4-linux-aarch64.jsonl
@@ -0,0 +1,3 @@
+{"step": "load", "directory": "/dev/shm", "warehouses": 1, "rows": 568758, "generate_s": 0.56, "pure_load_s": 0.71, "sqlite_load_s": 1.56, "sqlite_page_size": 4096, "pure_resident_mib": 38.2, "sqlite_file_mib": 13.8}
+{"step": "run", "system": "pure", "warehouses": 1, "terminals": 64, "transactions_per_second": 44086, "new_orders_per_minute": 1179655, "undone_new_orders": 3780, "errors": 0, "new_order": {"done": 397002, "failed": 0, "p50_us": 1472, "p99_us": 3456}, "payment": {"done": 378941, "failed": 0, "p50_us": 1408, "p99_us": 3456}, "order_status": {"done": 35345, "failed": 0, "p50_us": 248, "p99_us": 1280}, "delivery": {"done": 35291, "failed": 0, "p50_us": 1408, "p99_us": 3456}, "stock_level": {"done": 35157, "failed": 0, "p50_us": 272, "p99_us": 1472}, "server_threads": "3", "cpu_us_per_transaction": 42.7, "core_shares": {"pure-owner": 0.89, "pure-checkpoint": 0.01}, "resident_mib": 461.9, "written_bytes_per_transaction": 0.0, "device_bytes_per_transaction": null, "consistency_failures": []}
+{"step": "end", "pure_resident_mib": 461.9, "pure_state_mib": 234.6, "pure_store_mib": 238.7, "sqlite_files_mib": 13.8, "grouped_sqlite_files_mib": 0.0, "pure_counts": {"bursts": 26903, "burst_events": 807539, "checkpoints": 39}}
diff --git a/research/experiments/026-apps-on-one-host/2026-10-01-tpcc-before-5-linux-aarch64.jsonl b/research/experiments/026-apps-on-one-host/2026-10-01-tpcc-before-5-linux-aarch64.jsonl
new file mode 100644
index 0000000..8c7db06
--- /dev/null
+++ b/research/experiments/026-apps-on-one-host/2026-10-01-tpcc-before-5-linux-aarch64.jsonl
@@ -0,0 +1,3 @@
+{"step": "load", "directory": "/dev/shm", "warehouses": 1, "rows": 568758, "generate_s": 0.56, "pure_load_s": 0.84, "sqlite_load_s": 1.61, "sqlite_page_size": 4096, "pure_resident_mib": 38.2, "sqlite_file_mib": 13.8}
+{"step": "run", "system": "pure", "warehouses": 1, "terminals": 64, "transactions_per_second": 42992, "new_orders_per_minute": 1150334, "undone_new_orders": 3662, "errors": 0, "new_order": {"done": 387110, "failed": 0, "p50_us": 1472, "p99_us": 4096}, "payment": {"done": 369529, "failed": 0, "p50_us": 1408, "p99_us": 4096}, "order_status": {"done": 34513, "failed": 0, "p50_us": 256, "p99_us": 1728}, "delivery": {"done": 34438, "failed": 0, "p50_us": 1408, "p99_us": 4096}, "stock_level": {"done": 34249, "failed": 0, "p50_us": 288, "p99_us": 1984}, "server_threads": "3", "cpu_us_per_transaction": 42.9, "core_shares": {"pure-owner": 0.88, "pure-checkpoint": 0.01}, "resident_mib": 451.8, "written_bytes_per_transaction": 0.0, "device_bytes_per_transaction": null, "consistency_failures": []}
+{"step": "end", "pure_resident_mib": 451.8, "pure_state_mib": 229.3, "pure_store_mib": 238.7, "sqlite_files_mib": 13.8, "grouped_sqlite_files_mib": 0.0, "pure_counts": {"bursts": 26701, "burst_events": 787500, "checkpoints": 38}}
diff --git a/research/experiments/026-apps-on-one-host/2026-10-01-tpcc-before-6-linux-aarch64.jsonl b/research/experiments/026-apps-on-one-host/2026-10-01-tpcc-before-6-linux-aarch64.jsonl
new file mode 100644
index 0000000..e1336d1
--- /dev/null
+++ b/research/experiments/026-apps-on-one-host/2026-10-01-tpcc-before-6-linux-aarch64.jsonl
@@ -0,0 +1,3 @@
+{"step": "load", "directory": "/dev/shm", "warehouses": 1, "rows": 568758, "generate_s": 0.56, "pure_load_s": 0.71, "sqlite_load_s": 1.56, "sqlite_page_size": 4096, "pure_resident_mib": 38.9, "sqlite_file_mib": 13.8}
+{"step": "run", "system": "pure", "warehouses": 1, "terminals": 64, "transactions_per_second": 43066, "new_orders_per_minute": 1152262, "undone_new_orders": 3678, "errors": 0, "new_order": {"done": 387767, "failed": 0, "p50_us": 1472, "p99_us": 4352}, "payment": {"done": 370185, "failed": 0, "p50_us": 1408, "p99_us": 4352}, "order_status": {"done": 34552, "failed": 0, "p50_us": 256, "p99_us": 1536}, "delivery": {"done": 34502, "failed": 0, "p50_us": 1408, "p99_us": 4096}, "stock_level": {"done": 34322, "failed": 0, "p50_us": 288, "p99_us": 1664}, "server_threads": "3", "cpu_us_per_transaction": 43.0, "core_shares": {"pure-owner": 0.87, "pure-checkpoint": 0.01}, "resident_mib": 452.8, "written_bytes_per_transaction": 0.0, "device_bytes_per_transaction": null, "consistency_failures": []}
+{"step": "end", "pure_resident_mib": 452.8, "pure_state_mib": 229.7, "pure_store_mib": 238.7, "sqlite_files_mib": 13.8, "grouped_sqlite_files_mib": 0.0, "pure_counts": {"bursts": 26438, "burst_events": 788846, "checkpoints": 38}}
diff --git a/research/experiments/026-apps-on-one-host/2026-10-01-tpcc-by-commit-linux-aarch64.txt b/research/experiments/026-apps-on-one-host/2026-10-01-tpcc-by-commit-linux-aarch64.txt
new file mode 100644
index 0000000..47bc69c
--- /dev/null
+++ b/research/experiments/026-apps-on-one-host/2026-10-01-tpcc-by-commit-linux-aarch64.txt
@@ -0,0 +1,12 @@
+1 0b5fa1d 44097 42.0 0.88 1.19
+1 cac499d 46273 41.4 0.91 1.77
+1 38fde9d 45395 41.7 0.89 2.22
+1 d8fcd53 46009 41.6 0.9 2.06
+1 d95740e 46774 41.2 0.92 2.02
+1 41502b9 45546 41.6 0.9 2.03
+2 41502b9 45328 41.9 0.9 2.06
+2 d95740e 46385 41.3 0.91 1.94
+2 d8fcd53 45520 41.7 0.9 1.88
+2 38fde9d 45666 41.6 0.9 2.05
+2 cac499d 46716 41.3 0.91 1.92
+2 0b5fa1d 46413 41.5 0.9 1.93
diff --git a/research/experiments/026-apps-on-one-host/41502b9/2026-10-01-counts-linux-aarch64.jsonl b/research/experiments/026-apps-on-one-host/41502b9/2026-10-01-counts-linux-aarch64.jsonl
new file mode 100644
index 0000000..f7bf178
--- /dev/null
+++ b/research/experiments/026-apps-on-one-host/41502b9/2026-10-01-counts-linux-aarch64.jsonl
@@ -0,0 +1,4 @@
+{"serve": "pure-serve-before", "per_branch": {"instructions": 27109423, "cycles": 12757041}, "in_credit": {"instructions": 3499810, "cycles": 2146697}, "large": {"instructions": 1438407, "cycles": 850712}, "ranks": {"instructions": 24227804, "cycles": 15945967}, "none": {"instructions": 606073, "cycles": 194426}, "field": {"instructions": 8694610, "cycles": 3145065}, "found": {"instructions": 15638649, "cycles": 13033209}}
+{"serve": "pure-serve-after", "per_branch": {"instructions": 26996283, "cycles": 13168408}, "in_credit": {"instructions": 3477936, "cycles": 1655777}, "large": {"instructions": 1459696, "cycles": 651809}, "ranks": {"instructions": 24206932, "cycles": 14923305}, "none": {"instructions": 606880, "cycles": 187469}, "field": {"instructions": 8957359, "cycles": 3247129}, "found": {"instructions": 15861958, "cycles": 12598700}}
+{"serve": "pure-serve-before", "per_branch": {"instructions": 27095339, "cycles": 14076035}, "in_credit": {"instructions": 3496516, "cycles": 2165470}, "large": {"instructions": 1438463, "cycles": 743626}, "ranks": {"instructions": 24218824, "cycles": 15054854}, "none": {"instructions": 606073, "cycles": 189148}, "field": {"instructions": 8694610, "cycles": 3118100}, "found": {"instructions": 15639737, "cycles": 12589382}}
+{"serve": "pure-serve-after", "per_branch": {"instructions": 27007923, "cycles": 12183472}, "in_credit": {"instructions": 3480622, "cycles": 1618130}, "large": {"instructions": 1459624, "cycles": 664277}, "ranks": {"instructions": 24213384, "cycles": 14884807}, "none": {"instructions": 606880, "cycles": 191854}, "field": {"instructions": 8957359, "cycles": 3276233}, "found": {"instructions": 15861974, "cycles": 14008038}}
diff --git a/research/experiments/026-apps-on-one-host/41502b9/2026-10-01-queries-after-1-linux-aarch64.jsonl b/research/experiments/026-apps-on-one-host/41502b9/2026-10-01-queries-after-1-linux-aarch64.jsonl
new file mode 100644
index 0000000..1a805d7
--- /dev/null
+++ b/research/experiments/026-apps-on-one-host/41502b9/2026-10-01-queries-after-1-linux-aarch64.jsonl
@@ -0,0 +1,4 @@
+{"query": "per_branch", "rows": 10, "accounts": 100000, "pure_median_ms": 5.2, "pure_fastest_ms": 5.14, "sqlite_median_ms": 45.15, "sqlite_fastest_ms": 45.07, "sqlite_indexed_median_ms": 14.13, "sqlite_indexed_fastest_ms": 14.09}
+{"query": "in_credit", "rows": 1, "accounts": 100000, "pure_median_ms": 0.84, "pure_fastest_ms": 0.79, "sqlite_median_ms": 5.87, "sqlite_fastest_ms": 5.85, "sqlite_indexed_median_ms": 0.16, "sqlite_indexed_fastest_ms": 0.16}
+{"query": "large", "rows": 212, "accounts": 100000, "pure_median_ms": 0.38, "pure_fastest_ms": 0.37, "sqlite_median_ms": 1.48, "sqlite_fastest_ms": 1.47, "sqlite_indexed_median_ms": 1.48, "sqlite_indexed_fastest_ms": 1.47}
+{"query": "ranks", "rows": 404, "accounts": 100000, "pure_median_ms": 6.65, "pure_fastest_ms": 6.58, "sqlite_median_ms": 2831.82, "sqlite_fastest_ms": 2829.74, "sqlite_indexed_median_ms": 7.56, "sqlite_indexed_fastest_ms": 7.5}
diff --git a/research/experiments/026-apps-on-one-host/41502b9/2026-10-01-queries-after-2-linux-aarch64.jsonl b/research/experiments/026-apps-on-one-host/41502b9/2026-10-01-queries-after-2-linux-aarch64.jsonl
new file mode 100644
index 0000000..cfd7cc0
--- /dev/null
+++ b/research/experiments/026-apps-on-one-host/41502b9/2026-10-01-queries-after-2-linux-aarch64.jsonl
@@ -0,0 +1,4 @@
+{"query": "per_branch", "rows": 10, "accounts": 100000, "pure_median_ms": 5.29, "pure_fastest_ms": 5.22, "sqlite_median_ms": 45.0, "sqlite_fastest_ms": 44.91, "sqlite_indexed_median_ms": 13.98, "sqlite_indexed_fastest_ms": 13.97}
+{"query": "in_credit", "rows": 1, "accounts": 100000, "pure_median_ms": 0.83, "pure_fastest_ms": 0.79, "sqlite_median_ms": 5.88, "sqlite_fastest_ms": 5.87, "sqlite_indexed_median_ms": 0.16, "sqlite_indexed_fastest_ms": 0.16}
+{"query": "large", "rows": 212, "accounts": 100000, "pure_median_ms": 0.39, "pure_fastest_ms": 0.36, "sqlite_median_ms": 1.49, "sqlite_fastest_ms": 1.48, "sqlite_indexed_median_ms": 1.49, "sqlite_indexed_fastest_ms": 1.48}
+{"query": "ranks", "rows": 404, "accounts": 100000, "pure_median_ms": 6.73, "pure_fastest_ms": 6.63, "sqlite_median_ms": 2842.66, "sqlite_fastest_ms": 2830.25, "sqlite_indexed_median_ms": 7.62, "sqlite_indexed_fastest_ms": 7.53}
diff --git a/research/experiments/026-apps-on-one-host/41502b9/2026-10-01-queries-after-3-linux-aarch64.jsonl b/research/experiments/026-apps-on-one-host/41502b9/2026-10-01-queries-after-3-linux-aarch64.jsonl
new file mode 100644
index 0000000..de1abb1
--- /dev/null
+++ b/research/experiments/026-apps-on-one-host/41502b9/2026-10-01-queries-after-3-linux-aarch64.jsonl
@@ -0,0 +1,4 @@
+{"query": "per_branch", "rows": 10, "accounts": 100000, "pure_median_ms": 5.26, "pure_fastest_ms": 5.2, "sqlite_median_ms": 45.06, "sqlite_fastest_ms": 44.85, "sqlite_indexed_median_ms": 14.16, "sqlite_indexed_fastest_ms": 14.07}
+{"query": "in_credit", "rows": 1, "accounts": 100000, "pure_median_ms": 0.87, "pure_fastest_ms": 0.81, "sqlite_median_ms": 5.88, "sqlite_fastest_ms": 5.86, "sqlite_indexed_median_ms": 0.16, "sqlite_indexed_fastest_ms": 0.16}
+{"query": "large", "rows": 212, "accounts": 100000, "pure_median_ms": 0.39, "pure_fastest_ms": 0.37, "sqlite_median_ms": 1.47, "sqlite_fastest_ms": 1.47, "sqlite_indexed_median_ms": 1.63, "sqlite_indexed_fastest_ms": 1.6}
+{"query": "ranks", "rows": 404, "accounts": 100000, "pure_median_ms": 6.73, "pure_fastest_ms": 6.62, "sqlite_median_ms": 2836.71, "sqlite_fastest_ms": 2832.09, "sqlite_indexed_median_ms": 7.83, "sqlite_indexed_fastest_ms": 7.75}
diff --git a/research/experiments/026-apps-on-one-host/41502b9/2026-10-01-queries-after-4-linux-aarch64.jsonl b/research/experiments/026-apps-on-one-host/41502b9/2026-10-01-queries-after-4-linux-aarch64.jsonl
new file mode 100644
index 0000000..040db79
--- /dev/null
+++ b/research/experiments/026-apps-on-one-host/41502b9/2026-10-01-queries-after-4-linux-aarch64.jsonl
@@ -0,0 +1,4 @@
+{"query": "per_branch", "rows": 10, "accounts": 100000, "pure_median_ms": 5.37, "pure_fastest_ms": 5.24, "sqlite_median_ms": 45.35, "sqlite_fastest_ms": 45.24, "sqlite_indexed_median_ms": 14.1, "sqlite_indexed_fastest_ms": 14.07}
+{"query": "in_credit", "rows": 1, "accounts": 100000, "pure_median_ms": 0.89, "pure_fastest_ms": 0.79, "sqlite_median_ms": 5.88, "sqlite_fastest_ms": 5.86, "sqlite_indexed_median_ms": 0.16, "sqlite_indexed_fastest_ms": 0.16}
+{"query": "large", "rows": 212, "accounts": 100000, "pure_median_ms": 0.39, "pure_fastest_ms": 0.36, "sqlite_median_ms": 1.49, "sqlite_fastest_ms": 1.47, "sqlite_indexed_median_ms": 1.47, "sqlite_indexed_fastest_ms": 1.47}
+{"query": "ranks", "rows": 404, "accounts": 100000, "pure_median_ms": 7.69, "pure_fastest_ms": 6.95, "sqlite_median_ms": 2837.18, "sqlite_fastest_ms": 2833.15, "sqlite_indexed_median_ms": 7.57, "sqlite_indexed_fastest_ms": 7.5}
diff --git a/research/experiments/026-apps-on-one-host/41502b9/2026-10-01-queries-before-1-linux-aarch64.jsonl b/research/experiments/026-apps-on-one-host/41502b9/2026-10-01-queries-before-1-linux-aarch64.jsonl
new file mode 100644
index 0000000..8056b77
--- /dev/null
+++ b/research/experiments/026-apps-on-one-host/41502b9/2026-10-01-queries-before-1-linux-aarch64.jsonl
@@ -0,0 +1,4 @@
+{"query": "per_branch", "rows": 10, "accounts": 100000, "pure_median_ms": 5.14, "pure_fastest_ms": 5.04, "sqlite_median_ms": 45.25, "sqlite_fastest_ms": 45.12, "sqlite_indexed_median_ms": 14.11, "sqlite_indexed_fastest_ms": 14.07}
+{"query": "in_credit", "rows": 1, "accounts": 100000, "pure_median_ms": 0.79, "pure_fastest_ms": 0.76, "sqlite_median_ms": 5.88, "sqlite_fastest_ms": 5.87, "sqlite_indexed_median_ms": 0.16, "sqlite_indexed_fastest_ms": 0.16}
+{"query": "large", "rows": 212, "accounts": 100000, "pure_median_ms": 0.38, "pure_fastest_ms": 0.36, "sqlite_median_ms": 1.47, "sqlite_fastest_ms": 1.47, "sqlite_indexed_median_ms": 1.48, "sqlite_indexed_fastest_ms": 1.47}
+{"query": "ranks", "rows": 404, "accounts": 100000, "pure_median_ms": 6.64, "pure_fastest_ms": 6.53, "sqlite_median_ms": 2832.44, "sqlite_fastest_ms": 2830.87, "sqlite_indexed_median_ms": 7.57, "sqlite_indexed_fastest_ms": 7.49}
diff --git a/research/experiments/026-apps-on-one-host/41502b9/2026-10-01-queries-before-2-linux-aarch64.jsonl b/research/experiments/026-apps-on-one-host/41502b9/2026-10-01-queries-before-2-linux-aarch64.jsonl
new file mode 100644
index 0000000..684f23f
--- /dev/null
+++ b/research/experiments/026-apps-on-one-host/41502b9/2026-10-01-queries-before-2-linux-aarch64.jsonl
@@ -0,0 +1,4 @@
+{"query": "per_branch", "rows": 10, "accounts": 100000, "pure_median_ms": 5.12, "pure_fastest_ms": 5.08, "sqlite_median_ms": 45.31, "sqlite_fastest_ms": 45.21, "sqlite_indexed_median_ms": 14.08, "sqlite_indexed_fastest_ms": 14.05}
+{"query": "in_credit", "rows": 1, "accounts": 100000, "pure_median_ms": 0.8, "pure_fastest_ms": 0.77, "sqlite_median_ms": 5.86, "sqlite_fastest_ms": 5.85, "sqlite_indexed_median_ms": 0.16, "sqlite_indexed_fastest_ms": 0.16}
+{"query": "large", "rows": 212, "accounts": 100000, "pure_median_ms": 0.39, "pure_fastest_ms": 0.36, "sqlite_median_ms": 1.48, "sqlite_fastest_ms": 1.47, "sqlite_indexed_median_ms": 1.48, "sqlite_indexed_fastest_ms": 1.46}
+{"query": "ranks", "rows": 404, "accounts": 100000, "pure_median_ms": 6.62, "pure_fastest_ms": 6.57, "sqlite_median_ms": 2831.21, "sqlite_fastest_ms": 2828.9, "sqlite_indexed_median_ms": 7.59, "sqlite_indexed_fastest_ms": 7.53}
diff --git a/research/experiments/026-apps-on-one-host/41502b9/2026-10-01-queries-before-3-linux-aarch64.jsonl b/research/experiments/026-apps-on-one-host/41502b9/2026-10-01-queries-before-3-linux-aarch64.jsonl
new file mode 100644
index 0000000..d9a4f14
--- /dev/null
+++ b/research/experiments/026-apps-on-one-host/41502b9/2026-10-01-queries-before-3-linux-aarch64.jsonl
@@ -0,0 +1,4 @@
+{"query": "per_branch", "rows": 10, "accounts": 100000, "pure_median_ms": 5.01, "pure_fastest_ms": 4.91, "sqlite_median_ms": 45.4, "sqlite_fastest_ms": 45.19, "sqlite_indexed_median_ms": 14.18, "sqlite_indexed_fastest_ms": 14.1}
+{"query": "in_credit", "rows": 1, "accounts": 100000, "pure_median_ms": 0.81, "pure_fastest_ms": 0.78, "sqlite_median_ms": 5.88, "sqlite_fastest_ms": 5.87, "sqlite_indexed_median_ms": 0.16, "sqlite_indexed_fastest_ms": 0.16}
+{"query": "large", "rows": 212, "accounts": 100000, "pure_median_ms": 0.38, "pure_fastest_ms": 0.36, "sqlite_median_ms": 1.47, "sqlite_fastest_ms": 1.47, "sqlite_indexed_median_ms": 1.48, "sqlite_indexed_fastest_ms": 1.47}
+{"query": "ranks", "rows": 404, "accounts": 100000, "pure_median_ms": 6.65, "pure_fastest_ms": 6.6, "sqlite_median_ms": 2834.53, "sqlite_fastest_ms": 2828.33, "sqlite_indexed_median_ms": 7.57, "sqlite_indexed_fastest_ms": 7.53}
diff --git a/research/experiments/026-apps-on-one-host/41502b9/2026-10-01-queries-before-4-linux-aarch64.jsonl b/research/experiments/026-apps-on-one-host/41502b9/2026-10-01-queries-before-4-linux-aarch64.jsonl
new file mode 100644
index 0000000..9d8a715
--- /dev/null
+++ b/research/experiments/026-apps-on-one-host/41502b9/2026-10-01-queries-before-4-linux-aarch64.jsonl
@@ -0,0 +1,4 @@
+{"query": "per_branch", "rows": 10, "accounts": 100000, "pure_median_ms": 5.1, "pure_fastest_ms": 5.04, "sqlite_median_ms": 45.36, "sqlite_fastest_ms": 45.19, "sqlite_indexed_median_ms": 14.14, "sqlite_indexed_fastest_ms": 14.07}
+{"query": "in_credit", "rows": 1, "accounts": 100000, "pure_median_ms": 0.87, "pure_fastest_ms": 0.8, "sqlite_median_ms": 5.97, "sqlite_fastest_ms": 5.91, "sqlite_indexed_median_ms": 0.16, "sqlite_indexed_fastest_ms": 0.16}
+{"query": "large", "rows": 212, "accounts": 100000, "pure_median_ms": 0.39, "pure_fastest_ms": 0.37, "sqlite_median_ms": 1.48, "sqlite_fastest_ms": 1.47, "sqlite_indexed_median_ms": 1.49, "sqlite_indexed_fastest_ms": 1.47}
+{"query": "ranks", "rows": 404, "accounts": 100000, "pure_median_ms": 6.64, "pure_fastest_ms": 6.56, "sqlite_median_ms": 2840.1, "sqlite_fastest_ms": 2835.52, "sqlite_indexed_median_ms": 7.6, "sqlite_indexed_fastest_ms": 7.5}
diff --git a/research/experiments/026-apps-on-one-host/41502b9/2026-10-01-tpcc-after-1-linux-aarch64.jsonl b/research/experiments/026-apps-on-one-host/41502b9/2026-10-01-tpcc-after-1-linux-aarch64.jsonl
new file mode 100644
index 0000000..b86020a
--- /dev/null
+++ b/research/experiments/026-apps-on-one-host/41502b9/2026-10-01-tpcc-after-1-linux-aarch64.jsonl
@@ -0,0 +1,3 @@
+{"step": "load", "directory": "/dev/shm", "warehouses": 1, "rows": 568758, "generate_s": 0.56, "pure_load_s": 0.71, "sqlite_load_s": 1.54, "sqlite_page_size": 4096, "pure_resident_mib": 38.2, "sqlite_file_mib": 13.8}
+{"step": "run", "system": "pure", "warehouses": 1, "terminals": 64, "transactions_per_second": 45418, "new_orders_per_minute": 1214970, "undone_new_orders": 3903, "errors": 0, "new_order": {"done": 408893, "failed": 0, "p50_us": 1408, "p99_us": 2816}, "payment": {"done": 390468, "failed": 0, "p50_us": 1408, "p99_us": 2816}, "order_status": {"done": 36403, "failed": 0, "p50_us": 248, "p99_us": 1088}, "delivery": {"done": 36383, "failed": 0, "p50_us": 1408, "p99_us": 2816}, "stock_level": {"done": 36206, "failed": 0, "p50_us": 272, "p99_us": 1152}, "server_threads": "3", "cpu_us_per_transaction": 42.5, "core_shares": {"pure-owner": 0.92, "pure-checkpoint": 0.01}, "resident_mib": 473.0, "written_bytes_per_transaction": 0.0, "device_bytes_per_transaction": null, "consistency_failures": []}
+{"step": "end", "pure_resident_mib": 473.0, "pure_state_mib": 241.0, "pure_store_mib": 246.7, "sqlite_files_mib": 13.8, "grouped_sqlite_files_mib": 0.0, "pure_counts": {"bursts": 27563, "burst_events": 831923, "checkpoints": 40}}
diff --git a/research/experiments/026-apps-on-one-host/41502b9/2026-10-01-tpcc-after-2-linux-aarch64.jsonl b/research/experiments/026-apps-on-one-host/41502b9/2026-10-01-tpcc-after-2-linux-aarch64.jsonl
new file mode 100644
index 0000000..afd2e64
--- /dev/null
+++ b/research/experiments/026-apps-on-one-host/41502b9/2026-10-01-tpcc-after-2-linux-aarch64.jsonl
@@ -0,0 +1,3 @@
+{"step": "load", "directory": "/dev/shm", "warehouses": 1, "rows": 568758, "generate_s": 0.56, "pure_load_s": 0.71, "sqlite_load_s": 1.57, "sqlite_page_size": 4096, "pure_resident_mib": 39.0, "sqlite_file_mib": 13.8}
+{"step": "run", "system": "pure", "warehouses": 1, "terminals": 64, "transactions_per_second": 44696, "new_orders_per_minute": 1195823, "undone_new_orders": 3839, "errors": 0, "new_order": {"done": 402447, "failed": 0, "p50_us": 1472, "p99_us": 3328}, "payment": {"done": 384199, "failed": 0, "p50_us": 1408, "p99_us": 3328}, "order_status": {"done": 35824, "failed": 0, "p50_us": 248, "p99_us": 1152}, "delivery": {"done": 35800, "failed": 0, "p50_us": 1408, "p99_us": 3328}, "stock_level": {"done": 35643, "failed": 0, "p50_us": 272, "p99_us": 1152}, "server_threads": "3", "cpu_us_per_transaction": 42.6, "core_shares": {"pure-owner": 0.9, "pure-checkpoint": 0.01}, "resident_mib": 467.7, "written_bytes_per_transaction": 0.0, "device_bytes_per_transaction": null, "consistency_failures": []}
+{"step": "end", "pure_resident_mib": 467.7, "pure_state_mib": 237.5, "pure_store_mib": 246.7, "sqlite_files_mib": 13.8, "grouped_sqlite_files_mib": 0.0, "pure_counts": {"bursts": 26689, "burst_events": 818687, "checkpoints": 40}}
diff --git a/research/experiments/026-apps-on-one-host/41502b9/2026-10-01-tpcc-after-3-linux-aarch64.jsonl b/research/experiments/026-apps-on-one-host/41502b9/2026-10-01-tpcc-after-3-linux-aarch64.jsonl
new file mode 100644
index 0000000..70753d1
--- /dev/null
+++ b/research/experiments/026-apps-on-one-host/41502b9/2026-10-01-tpcc-after-3-linux-aarch64.jsonl
@@ -0,0 +1,3 @@
+{"step": "load", "directory": "/dev/shm", "warehouses": 1, "rows": 568758, "generate_s": 0.56, "pure_load_s": 0.71, "sqlite_load_s": 1.56, "sqlite_page_size": 4096, "pure_resident_mib": 38.2, "sqlite_file_mib": 13.8}
+{"step": "run", "system": "pure", "warehouses": 1, "terminals": 64, "transactions_per_second": 44008, "new_orders_per_minute": 1177625, "undone_new_orders": 3772, "errors": 0, "new_order": {"done": 396314, "failed": 0, "p50_us": 1472, "p99_us": 3456}, "payment": {"done": 378248, "failed": 0, "p50_us": 1408, "p99_us": 3456}, "order_status": {"done": 35282, "failed": 0, "p50_us": 248, "p99_us": 1280}, "delivery": {"done": 35232, "failed": 0, "p50_us": 1408, "p99_us": 3456}, "stock_level": {"done": 35084, "failed": 0, "p50_us": 272, "p99_us": 1280}, "server_threads": "3", "cpu_us_per_transaction": 42.9, "core_shares": {"pure-owner": 0.89, "pure-checkpoint": 0.01}, "resident_mib": 461.0, "written_bytes_per_transaction": 0.0, "device_bytes_per_transaction": null, "consistency_failures": []}
+{"step": "end", "pure_resident_mib": 461.0, "pure_state_mib": 234.3, "pure_store_mib": 238.7, "sqlite_files_mib": 13.8, "grouped_sqlite_files_mib": 0.0, "pure_counts": {"bursts": 26570, "burst_events": 806106, "checkpoints": 39}}
diff --git a/research/experiments/026-apps-on-one-host/41502b9/2026-10-01-tpcc-after-4-linux-aarch64.jsonl b/research/experiments/026-apps-on-one-host/41502b9/2026-10-01-tpcc-after-4-linux-aarch64.jsonl
new file mode 100644
index 0000000..ad39c5f
--- /dev/null
+++ b/research/experiments/026-apps-on-one-host/41502b9/2026-10-01-tpcc-after-4-linux-aarch64.jsonl
@@ -0,0 +1,3 @@
+{"step": "load", "directory": "/dev/shm", "warehouses": 1, "rows": 568758, "generate_s": 0.57, "pure_load_s": 0.72, "sqlite_load_s": 1.55, "sqlite_page_size": 4096, "pure_resident_mib": 38.2, "sqlite_file_mib": 13.8}
+{"step": "run", "system": "pure", "warehouses": 1, "terminals": 64, "transactions_per_second": 44435, "new_orders_per_minute": 1188830, "undone_new_orders": 3810, "errors": 0, "new_order": {"done": 400088, "failed": 0, "p50_us": 1472, "p99_us": 3456}, "payment": {"done": 382016, "failed": 0, "p50_us": 1408, "p99_us": 3328}, "order_status": {"done": 35618, "failed": 0, "p50_us": 248, "p99_us": 1216}, "delivery": {"done": 35570, "failed": 0, "p50_us": 1408, "p99_us": 3328}, "stock_level": {"done": 35406, "failed": 0, "p50_us": 272, "p99_us": 1280}, "server_threads": "3", "cpu_us_per_transaction": 42.3, "core_shares": {"pure-owner": 0.9, "pure-checkpoint": 0.01}, "resident_mib": 464.5, "written_bytes_per_transaction": 0.0, "device_bytes_per_transaction": null, "consistency_failures": []}
+{"step": "end", "pure_resident_mib": 464.5, "pure_state_mib": 236.3, "pure_store_mib": 246.7, "sqlite_files_mib": 13.8, "grouped_sqlite_files_mib": 0.0, "pure_counts": {"bursts": 26850, "burst_events": 813948, "checkpoints": 40}}
diff --git a/research/experiments/026-apps-on-one-host/41502b9/2026-10-01-tpcc-before-1-linux-aarch64.jsonl b/research/experiments/026-apps-on-one-host/41502b9/2026-10-01-tpcc-before-1-linux-aarch64.jsonl
new file mode 100644
index 0000000..d55c812
--- /dev/null
+++ b/research/experiments/026-apps-on-one-host/41502b9/2026-10-01-tpcc-before-1-linux-aarch64.jsonl
@@ -0,0 +1,3 @@
+{"step": "load", "directory": "/dev/shm", "warehouses": 1, "rows": 568758, "generate_s": 0.56, "pure_load_s": 0.73, "sqlite_load_s": 1.57, "sqlite_page_size": 4096, "pure_resident_mib": 38.2, "sqlite_file_mib": 13.8}
+{"step": "run", "system": "pure", "warehouses": 1, "terminals": 64, "transactions_per_second": 46010, "new_orders_per_minute": 1230854, "undone_new_orders": 3952, "errors": 0, "new_order": {"done": 414237, "failed": 0, "p50_us": 1408, "p99_us": 2688}, "payment": {"done": 395530, "failed": 0, "p50_us": 1408, "p99_us": 2688}, "order_status": {"done": 36927, "failed": 0, "p50_us": 240, "p99_us": 960}, "delivery": {"done": 36850, "failed": 0, "p50_us": 1408, "p99_us": 2688}, "stock_level": {"done": 36663, "failed": 0, "p50_us": 272, "p99_us": 1024}, "server_threads": "3", "cpu_us_per_transaction": 41.7, "core_shares": {"pure-owner": 0.91, "pure-checkpoint": 0.01}, "resident_mib": 478.5, "written_bytes_per_transaction": 0.0, "device_bytes_per_transaction": null, "consistency_failures": []}
+{"step": "end", "pure_resident_mib": 478.5, "pure_state_mib": 243.8, "pure_store_mib": 254.7, "sqlite_files_mib": 13.8, "grouped_sqlite_files_mib": 0.0, "pure_counts": {"bursts": 27357, "burst_events": 842750, "checkpoints": 41}}
diff --git a/research/experiments/026-apps-on-one-host/41502b9/2026-10-01-tpcc-before-2-linux-aarch64.jsonl b/research/experiments/026-apps-on-one-host/41502b9/2026-10-01-tpcc-before-2-linux-aarch64.jsonl
new file mode 100644
index 0000000..913f138
--- /dev/null
+++ b/research/experiments/026-apps-on-one-host/41502b9/2026-10-01-tpcc-before-2-linux-aarch64.jsonl
@@ -0,0 +1,3 @@
+{"step": "load", "directory": "/dev/shm", "warehouses": 1, "rows": 568758, "generate_s": 0.56, "pure_load_s": 0.71, "sqlite_load_s": 1.56, "sqlite_page_size": 4096, "pure_resident_mib": 38.9, "sqlite_file_mib": 13.8}
+{"step": "run", "system": "pure", "warehouses": 1, "terminals": 64, "transactions_per_second": 43437, "new_orders_per_minute": 1162146, "undone_new_orders": 3712, "errors": 0, "new_order": {"done": 391094, "failed": 0, "p50_us": 1472, "p99_us": 3712}, "payment": {"done": 373444, "failed": 0, "p50_us": 1408, "p99_us": 3712}, "order_status": {"done": 34810, "failed": 0, "p50_us": 256, "p99_us": 1600}, "delivery": {"done": 34796, "failed": 0, "p50_us": 1408, "p99_us": 3712}, "stock_level": {"done": 34602, "failed": 0, "p50_us": 288, "p99_us": 1728}, "server_threads": "3", "cpu_us_per_transaction": 43.5, "core_shares": {"pure-owner": 0.89, "pure-checkpoint": 0.01}, "resident_mib": 456.2, "written_bytes_per_transaction": 0.0, "device_bytes_per_transaction": null, "consistency_failures": []}
+{"step": "end", "pure_resident_mib": 456.2, "pure_state_mib": 231.5, "pure_store_mib": 238.7, "sqlite_files_mib": 13.8, "grouped_sqlite_files_mib": 0.0, "pure_counts": {"bursts": 27180, "burst_events": 795704, "checkpoints": 39}}
diff --git a/research/experiments/026-apps-on-one-host/41502b9/2026-10-01-tpcc-before-3-linux-aarch64.jsonl b/research/experiments/026-apps-on-one-host/41502b9/2026-10-01-tpcc-before-3-linux-aarch64.jsonl
new file mode 100644
index 0000000..8f7e189
--- /dev/null
+++ b/research/experiments/026-apps-on-one-host/41502b9/2026-10-01-tpcc-before-3-linux-aarch64.jsonl
@@ -0,0 +1,3 @@
+{"step": "load", "directory": "/dev/shm", "warehouses": 1, "rows": 568758, "generate_s": 0.57, "pure_load_s": 0.71, "sqlite_load_s": 1.67, "sqlite_page_size": 4096, "pure_resident_mib": 38.2, "sqlite_file_mib": 13.8}
+{"step": "run", "system": "pure", "warehouses": 1, "terminals": 64, "transactions_per_second": 43382, "new_orders_per_minute": 1160820, "undone_new_orders": 3704, "errors": 0, "new_order": {"done": 390644, "failed": 0, "p50_us": 1408, "p99_us": 4096}, "payment": {"done": 372875, "failed": 0, "p50_us": 1408, "p99_us": 4096}, "order_status": {"done": 34808, "failed": 0, "p50_us": 256, "p99_us": 1536}, "delivery": {"done": 34745, "failed": 0, "p50_us": 1408, "p99_us": 4096}, "stock_level": {"done": 34574, "failed": 0, "p50_us": 272, "p99_us": 1856}, "server_threads": "3", "cpu_us_per_transaction": 42.6, "core_shares": {"pure-owner": 0.88, "pure-checkpoint": 0.01}, "resident_mib": 454.7, "written_bytes_per_transaction": 0.0, "device_bytes_per_transaction": null, "consistency_failures": []}
+{"step": "end", "pure_resident_mib": 454.7, "pure_state_mib": 231.2, "pure_store_mib": 238.7, "sqlite_files_mib": 13.8, "grouped_sqlite_files_mib": 0.0, "pure_counts": {"bursts": 26395, "burst_events": 794640, "checkpoints": 38}}
diff --git a/research/experiments/026-apps-on-one-host/41502b9/2026-10-01-tpcc-before-4-linux-aarch64.jsonl b/research/experiments/026-apps-on-one-host/41502b9/2026-10-01-tpcc-before-4-linux-aarch64.jsonl
new file mode 100644
index 0000000..a155378
--- /dev/null
+++ b/research/experiments/026-apps-on-one-host/41502b9/2026-10-01-tpcc-before-4-linux-aarch64.jsonl
@@ -0,0 +1,3 @@
+{"step": "load", "directory": "/dev/shm", "warehouses": 1, "rows": 568758, "generate_s": 0.57, "pure_load_s": 0.71, "sqlite_load_s": 1.55, "sqlite_page_size": 4096, "pure_resident_mib": 38.2, "sqlite_file_mib": 13.8}
+{"step": "run", "system": "pure", "warehouses": 1, "terminals": 64, "transactions_per_second": 44310, "new_orders_per_minute": 1185677, "undone_new_orders": 3802, "errors": 0, "new_order": {"done": 399031, "failed": 0, "p50_us": 1408, "p99_us": 3584}, "payment": {"done": 380835, "failed": 0, "p50_us": 1408, "p99_us": 3584}, "order_status": {"done": 35528, "failed": 0, "p50_us": 256, "p99_us": 1280}, "delivery": {"done": 35481, "failed": 0, "p50_us": 1408, "p99_us": 3712}, "stock_level": {"done": 35336, "failed": 0, "p50_us": 288, "p99_us": 1472}, "server_threads": "3", "cpu_us_per_transaction": 42.7, "core_shares": {"pure-owner": 0.9, "pure-checkpoint": 0.01}, "resident_mib": 463.8, "written_bytes_per_transaction": 0.0, "device_bytes_per_transaction": null, "consistency_failures": []}
+{"step": "end", "pure_resident_mib": 463.8, "pure_state_mib": 235.7, "pure_store_mib": 246.7, "sqlite_files_mib": 13.8, "grouped_sqlite_files_mib": 0.0, "pure_counts": {"bursts": 27382, "burst_events": 811631, "checkpoints": 40}}
diff --git a/research/experiments/026-apps-on-one-host/interrupted/2026-10-01-queries-after-1-linux-aarch64.jsonl b/research/experiments/026-apps-on-one-host/interrupted/2026-10-01-queries-after-1-linux-aarch64.jsonl
new file mode 100644
index 0000000..093ecc5
--- /dev/null
+++ b/research/experiments/026-apps-on-one-host/interrupted/2026-10-01-queries-after-1-linux-aarch64.jsonl
@@ -0,0 +1,4 @@
+{"query": "per_branch", "rows": 10, "accounts": 100000, "pure_median_ms": 5.27, "pure_fastest_ms": 5.19, "sqlite_median_ms": 44.92, "sqlite_fastest_ms": 44.75, "sqlite_indexed_median_ms": 14.22, "sqlite_indexed_fastest_ms": 14.18}
+{"query": "in_credit", "rows": 1, "accounts": 100000, "pure_median_ms": 0.82, "pure_fastest_ms": 0.8, "sqlite_median_ms": 5.89, "sqlite_fastest_ms": 5.86, "sqlite_indexed_median_ms": 0.16, "sqlite_indexed_fastest_ms": 0.16}
+{"query": "large", "rows": 212, "accounts": 100000, "pure_median_ms": 0.38, "pure_fastest_ms": 0.37, "sqlite_median_ms": 1.47, "sqlite_fastest_ms": 1.47, "sqlite_indexed_median_ms": 1.57, "sqlite_indexed_fastest_ms": 1.53}
+{"query": "ranks", "rows": 404, "accounts": 100000, "pure_median_ms": 6.68, "pure_fastest_ms": 6.62, "sqlite_median_ms": 2840.32, "sqlite_fastest_ms": 2836.13, "sqlite_indexed_median_ms": 7.81, "sqlite_indexed_fastest_ms": 7.79}
diff --git a/research/experiments/026-apps-on-one-host/interrupted/2026-10-01-queries-after-2-linux-aarch64.jsonl b/research/experiments/026-apps-on-one-host/interrupted/2026-10-01-queries-after-2-linux-aarch64.jsonl
new file mode 100644
index 0000000..332318b
--- /dev/null
+++ b/research/experiments/026-apps-on-one-host/interrupted/2026-10-01-queries-after-2-linux-aarch64.jsonl
@@ -0,0 +1,4 @@
+{"query": "per_branch", "rows": 10, "accounts": 100000, "pure_median_ms": 5.26, "pure_fastest_ms": 5.15, "sqlite_median_ms": 46.22, "sqlite_fastest_ms": 46.11, "sqlite_indexed_median_ms": 14.66, "sqlite_indexed_fastest_ms": 14.6}
+{"query": "in_credit", "rows": 1, "accounts": 100000, "pure_median_ms": 0.82, "pure_fastest_ms": 0.79, "sqlite_median_ms": 5.92, "sqlite_fastest_ms": 5.9, "sqlite_indexed_median_ms": 0.16, "sqlite_indexed_fastest_ms": 0.16}
+{"query": "large", "rows": 212, "accounts": 100000, "pure_median_ms": 0.41, "pure_fastest_ms": 0.37, "sqlite_median_ms": 1.49, "sqlite_fastest_ms": 1.48, "sqlite_indexed_median_ms": 1.49, "sqlite_indexed_fastest_ms": 1.48}
+{"query": "ranks", "rows": 404, "accounts": 100000, "pure_median_ms": 6.7, "pure_fastest_ms": 6.63, "sqlite_median_ms": 2848.3, "sqlite_fastest_ms": 2846.82, "sqlite_indexed_median_ms": 7.59, "sqlite_indexed_fastest_ms": 7.55}
diff --git a/research/experiments/026-apps-on-one-host/interrupted/2026-10-01-queries-before-1-linux-aarch64.jsonl b/research/experiments/026-apps-on-one-host/interrupted/2026-10-01-queries-before-1-linux-aarch64.jsonl
new file mode 100644
index 0000000..9dce2a3
--- /dev/null
+++ b/research/experiments/026-apps-on-one-host/interrupted/2026-10-01-queries-before-1-linux-aarch64.jsonl
@@ -0,0 +1,4 @@
+{"query": "per_branch", "rows": 10, "accounts": 100000, "pure_median_ms": 5.15, "pure_fastest_ms": 5.1, "sqlite_median_ms": 45.32, "sqlite_fastest_ms": 45.18, "sqlite_indexed_median_ms": 14.08, "sqlite_indexed_fastest_ms": 14.07}
+{"query": "in_credit", "rows": 1, "accounts": 100000, "pure_median_ms": 0.81, "pure_fastest_ms": 0.76, "sqlite_median_ms": 5.87, "sqlite_fastest_ms": 5.85, "sqlite_indexed_median_ms": 0.16, "sqlite_indexed_fastest_ms": 0.16}
+{"query": "large", "rows": 212, "accounts": 100000, "pure_median_ms": 0.38, "pure_fastest_ms": 0.37, "sqlite_median_ms": 1.47, "sqlite_fastest_ms": 1.47, "sqlite_indexed_median_ms": 1.49, "sqlite_indexed_fastest_ms": 1.47}
+{"query": "ranks", "rows": 404, "accounts": 100000, "pure_median_ms": 6.64, "pure_fastest_ms": 6.56, "sqlite_median_ms": 2833.28, "sqlite_fastest_ms": 2826.65, "sqlite_indexed_median_ms": 7.51, "sqlite_indexed_fastest_ms": 7.48}
diff --git a/research/experiments/026-apps-on-one-host/interrupted/2026-10-01-queries-before-2-linux-aarch64.jsonl b/research/experiments/026-apps-on-one-host/interrupted/2026-10-01-queries-before-2-linux-aarch64.jsonl
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/research/experiments/026-apps-on-one-host/interrupted/2026-10-01-queries-before-2-linux-aarch64.jsonl
diff --git a/research/experiments/026-apps-on-one-host/interrupted/2026-10-01-tpcc-after-1-linux-aarch64.jsonl b/research/experiments/026-apps-on-one-host/interrupted/2026-10-01-tpcc-after-1-linux-aarch64.jsonl
new file mode 100644
index 0000000..6e4f1bc
--- /dev/null
+++ b/research/experiments/026-apps-on-one-host/interrupted/2026-10-01-tpcc-after-1-linux-aarch64.jsonl
@@ -0,0 +1,3 @@
+{"step": "load", "directory": "/dev/shm", "warehouses": 1, "rows": 568758, "generate_s": 0.56, "pure_load_s": 0.74, "sqlite_load_s": 1.54, "sqlite_page_size": 4096, "pure_resident_mib": 38.2, "sqlite_file_mib": 13.8}
+{"step": "run", "system": "pure", "warehouses": 1, "terminals": 64, "transactions_per_second": 41435, "new_orders_per_minute": 1108733, "undone_new_orders": 3539, "errors": 0, "new_order": {"done": 373117, "failed": 0, "p50_us": 1472, "p99_us": 4352}, "payment": {"done": 356100, "failed": 0, "p50_us": 1472, "p99_us": 4352}, "order_status": {"done": 33305, "failed": 0, "p50_us": 256, "p99_us": 1792}, "delivery": {"done": 33190, "failed": 0, "p50_us": 1472, "p99_us": 4352}, "stock_level": {"done": 32997, "failed": 0, "p50_us": 288, "p99_us": 2048}, "server_threads": "3", "cpu_us_per_transaction": 44.0, "core_shares": {"pure-owner": 0.86, "pure-checkpoint": 0.01}, "resident_mib": 437.1, "written_bytes_per_transaction": 0.0, "device_bytes_per_transaction": null, "consistency_failures": []}
+{"step": "end", "pure_resident_mib": 437.1, "pure_state_mib": 221.9, "pure_store_mib": 230.7, "sqlite_files_mib": 13.8, "grouped_sqlite_files_mib": 0.0, "pure_counts": {"bursts": 25362, "burst_events": 758954, "checkpoints": 37}}
diff --git a/research/experiments/026-apps-on-one-host/interrupted/2026-10-01-tpcc-after-2-linux-aarch64.jsonl b/research/experiments/026-apps-on-one-host/interrupted/2026-10-01-tpcc-after-2-linux-aarch64.jsonl
new file mode 100644
index 0000000..ef16f60
--- /dev/null
+++ b/research/experiments/026-apps-on-one-host/interrupted/2026-10-01-tpcc-after-2-linux-aarch64.jsonl
@@ -0,0 +1,3 @@
+{"step": "load", "directory": "/dev/shm", "warehouses": 1, "rows": 568758, "generate_s": 0.56, "pure_load_s": 0.74, "sqlite_load_s": 1.58, "sqlite_page_size": 4096, "pure_resident_mib": 39.0, "sqlite_file_mib": 13.8}
+{"step": "run", "system": "pure", "warehouses": 1, "terminals": 64, "transactions_per_second": 43693, "new_orders_per_minute": 1169120, "undone_new_orders": 3733, "errors": 0, "new_order": {"done": 393443, "failed": 0, "p50_us": 1472, "p99_us": 3456}, "payment": {"done": 375506, "failed": 0, "p50_us": 1408, "p99_us": 3456}, "order_status": {"done": 35046, "failed": 0, "p50_us": 256, "p99_us": 1408}, "delivery": {"done": 35007, "failed": 0, "p50_us": 1408, "p99_us": 3456}, "stock_level": {"done": 34856, "failed": 0, "p50_us": 272, "p99_us": 1472}, "server_threads": "3", "cpu_us_per_transaction": 42.8, "core_shares": {"pure-owner": 0.89, "pure-checkpoint": 0.01}, "resident_mib": 458.9, "written_bytes_per_transaction": 0.0, "device_bytes_per_transaction": null, "consistency_failures": []}
+{"step": "end", "pure_resident_mib": 458.9, "pure_state_mib": 232.7, "pure_store_mib": 238.7, "sqlite_files_mib": 13.8, "grouped_sqlite_files_mib": 0.0, "pure_counts": {"bursts": 26513, "burst_events": 800308, "checkpoints": 39}}
diff --git a/research/experiments/026-apps-on-one-host/interrupted/2026-10-01-tpcc-before-1-linux-aarch64.jsonl b/research/experiments/026-apps-on-one-host/interrupted/2026-10-01-tpcc-before-1-linux-aarch64.jsonl
new file mode 100644
index 0000000..e572929
--- /dev/null
+++ b/research/experiments/026-apps-on-one-host/interrupted/2026-10-01-tpcc-before-1-linux-aarch64.jsonl
@@ -0,0 +1,3 @@
+{"step": "load", "directory": "/dev/shm", "warehouses": 1, "rows": 568758, "generate_s": 0.56, "pure_load_s": 0.71, "sqlite_load_s": 1.57, "sqlite_page_size": 4096, "pure_resident_mib": 38.2, "sqlite_file_mib": 13.8}
+{"step": "run", "system": "pure", "warehouses": 1, "terminals": 64, "transactions_per_second": 45926, "new_orders_per_minute": 1228702, "undone_new_orders": 3946, "errors": 0, "new_order": {"done": 413531, "failed": 0, "p50_us": 1408, "p99_us": 2688}, "payment": {"done": 394794, "failed": 0, "p50_us": 1408, "p99_us": 2688}, "order_status": {"done": 36841, "failed": 0, "p50_us": 248, "p99_us": 992}, "delivery": {"done": 36797, "failed": 0, "p50_us": 1408, "p99_us": 2688}, "stock_level": {"done": 36601, "failed": 0, "p50_us": 272, "p99_us": 1024}, "server_threads": "3", "cpu_us_per_transaction": 42.3, "core_shares": {"pure-owner": 0.91, "pure-checkpoint": 0.01}, "resident_mib": 477.9, "written_bytes_per_transaction": 0.0, "device_bytes_per_transaction": null, "consistency_failures": []}
+{"step": "end", "pure_resident_mib": 477.9, "pure_state_mib": 243.5, "pure_store_mib": 254.7, "sqlite_files_mib": 13.8, "grouped_sqlite_files_mib": 0.0, "pure_counts": {"bursts": 27570, "burst_events": 841261, "checkpoints": 41}}
diff --git a/research/experiments/026-apps-on-one-host/interrupted/2026-10-01-tpcc-before-2-linux-aarch64.jsonl b/research/experiments/026-apps-on-one-host/interrupted/2026-10-01-tpcc-before-2-linux-aarch64.jsonl
new file mode 100644
index 0000000..1dde7ae
--- /dev/null
+++ b/research/experiments/026-apps-on-one-host/interrupted/2026-10-01-tpcc-before-2-linux-aarch64.jsonl
@@ -0,0 +1,3 @@
+{"step": "load", "directory": "/dev/shm", "warehouses": 1, "rows": 568758, "generate_s": 0.56, "pure_load_s": 0.71, "sqlite_load_s": 1.54, "sqlite_page_size": 4096, "pure_resident_mib": 38.2, "sqlite_file_mib": 13.8}
+{"step": "run", "system": "pure", "warehouses": 1, "terminals": 64, "transactions_per_second": 45614, "new_orders_per_minute": 1220241, "undone_new_orders": 3920, "errors": 0, "new_order": {"done": 410667, "failed": 0, "p50_us": 1408, "p99_us": 2944}, "payment": {"done": 392131, "failed": 0, "p50_us": 1408, "p99_us": 2944}, "order_status": {"done": 36576, "failed": 0, "p50_us": 248, "p99_us": 1088}, "delivery": {"done": 36545, "failed": 0, "p50_us": 1408, "p99_us": 2944}, "stock_level": {"done": 36364, "failed": 0, "p50_us": 272, "p99_us": 1152}, "server_threads": "3", "cpu_us_per_transaction": 42.0, "core_shares": {"pure-owner": 0.91, "pure-checkpoint": 0.01}, "resident_mib": 474.5, "written_bytes_per_transaction": 0.0, "device_bytes_per_transaction": null, "consistency_failures": []}
+{"step": "end", "pure_resident_mib": 474.5, "pure_state_mib": 241.9, "pure_store_mib": 246.7, "sqlite_files_mib": 13.8, "grouped_sqlite_files_mib": 0.0, "pure_counts": {"bursts": 27453, "burst_events": 835507, "checkpoints": 40}}
diff --git a/research/experiments/026-apps-on-one-host/isolation.py b/research/experiments/026-apps-on-one-host/isolation.py
new file mode 100644
index 0000000..9ef7ad4
--- /dev/null
+++ b/research/experiments/026-apps-on-one-host/isolation.py
@@ -0,0 +1,114 @@
+#!/usr/bin/env python3
+"""Two apps, A and B (benchmarks/http/scores.aup, the scoreboard), as two
+pure-serve processes or as one host of two apps (docs/design/017), in RAM
+(/dev/shm), on cores 0-2; the load (benchmarks/http/load) on core 3. The
+two ways have four threads for the apps: two processes of one connection
+thread and an owner each, or one host of two connection threads and two
+workers. A third, host1, is a host of one connection thread and two
+workers (three threads).
+
+Each round, both ways in turns (the order flipped every other round):
+ alone: B's writes, one connection, nothing else;
+ flood: A's writes from 64 connections, and B's from one, at once;
+ both: A's and B's writes from 32 connections each.
+Prints a JSON line per run: B's p50 and p99, each app's writes a second.
+
+isolation.py SERVE ROUNDS [SECONDS]
+"""
+import json
+import select
+import shutil
+import subprocess
+import sys
+import tempfile
+import time
+from pathlib import Path
+
+HERE = Path(__file__).resolve().parent
+ROOT = HERE.parents[2]
+LOAD = ROOT / 'benchmarks' / 'http' / 'load'
+AUP = ROOT.parent / 'aup' / 'build' / 'aup'
+
+
+def started(args):
+ process = subprocess.Popen(['taskset', '-c', '0-2', *map(str, args), '--port', '0'], stdout=subprocess.PIPE,
+ stderr=subprocess.PIPE)
+ ready, _, _ = select.select([process.stdout], [], [], 10)
+ assert ready, process.stderr.read()
+ return process, json.loads(process.stdout.readline())
+
+
+def stopped(process):
+ process.terminate()
+ _, error = process.communicate(timeout=60)
+ assert process.returncode == 0, error[-500:]
+
+
+def load(port, connections, seconds, prefix):
+ return subprocess.Popen(['taskset', '-c', '3', str(LOAD), str(port), str(connections), str(seconds), 'score',
+ str(connections), 'keep-alive', '16', prefix], stdout=subprocess.PIPE, text=True)
+
+
+def result(process):
+ out, _ = process.communicate()
+ return json.loads(out)
+
+
+def servers(way, work, serve, module):
+ """Where A and B are: ([processes], {app: (port, prefix)})."""
+ if way == 'processes':
+ a, info_a = started([serve, '--module', module, '--store', work / 'a', '--threads', 1])
+ b, info_b = started([serve, '--module', module, '--store', work / 'b', '--threads', 1])
+ return [a, b], {'A': (info_a['port'], ''), 'B': (info_b['port'], '')}
+ (work / 'apps.conf').write_text(f'a {module} {work / "a"}\nb {module} {work / "b"}\n')
+ host, info = started([serve, '--apps', work / 'apps.conf', '--threads', 1 if way == 'host1' else 2, '--workers', 2])
+ return [host], {'A': (info['port'], '/a'), 'B': (info['port'], '/b')}
+
+
+def run(way, kind, seconds, serve, module, round_):
+ work = Path(tempfile.mkdtemp(prefix='pure-apps-', dir='/dev/shm'))
+ try:
+ processes, where = servers(way, work, serve, module)
+ try:
+ if kind == 'alone':
+ b = result(load(where['B'][0], 1, seconds, where['B'][1]))
+ a = None
+ elif kind == 'flood':
+ flood = load(where['A'][0], 64, seconds + 2, where['A'][1])
+ time.sleep(1)
+ b = result(load(where['B'][0], 1, seconds, where['B'][1]))
+ a = result(flood)
+ else:
+ both_a = load(where['A'][0], 32, seconds, where['A'][1])
+ both_b = load(where['B'][0], 32, seconds, where['B'][1])
+ a, b = result(both_a), result(both_b)
+ finally:
+ for process in processes:
+ stopped(process)
+ finally:
+ shutil.rmtree(work)
+ row = {'round': round_, 'way': way, 'kind': kind, 'b_p50_us': b['p50_us'], 'b_p99_us': b['p99_us'],
+ 'b_per_second': b['requests_per_second'], 'b_5xx': b['5xx']}
+ if a:
+ row.update({'a_per_second': a['requests_per_second'], 'a_p99_us': a['p99_us'], 'a_5xx': a['5xx']})
+ return row
+
+
+def main():
+ serve, rounds = Path(sys.argv[1]).resolve(), int(sys.argv[2])
+ seconds = float(sys.argv[3]) if len(sys.argv) > 3 else 15
+ work = Path(tempfile.mkdtemp(prefix='pure-apps-module-'))
+ try:
+ module = work / 'scores.pmod'
+ subprocess.run([str(AUP), 'build', str(ROOT / 'benchmarks' / 'http' / 'scores.aup'), '-o', str(module)], check=True)
+ for round_ in range(1, rounds + 1):
+ ways = ['processes', 'host', 'host1'] if round_ % 2 else ['host1', 'host', 'processes']
+ for kind in ('alone', 'flood', 'both'):
+ for way in ways:
+ print(json.dumps(run(way, kind, seconds, serve, module, round_)), flush=True)
+ finally:
+ shutil.rmtree(work)
+
+
+if __name__ == '__main__':
+ main()
diff --git a/research/experiments/026-apps-on-one-host/memory.py b/research/experiments/026-apps-on-one-host/memory.py
new file mode 100644
index 0000000..05c93c5
--- /dev/null
+++ b/research/experiments/026-apps-on-one-host/memory.py
@@ -0,0 +1,76 @@
+#!/usr/bin/env python3
+"""What an app costs a host (docs/design/017): pure-serve with N apps of the
+scoreboard (benchmarks/http/scores.aup), each written once and read once
+(its store opened, its snapshot published, a reader of it used), in RAM;
+then the host's own memory (smaps_rollup's Private_Dirty, RSS, PSS) and
+threads. Beside it, one pure-serve of one app (--module) the same way: the
+process an app costs when each app is a process.
+
+memory.py SERVE [N ...]
+"""
+import http.client
+import json
+import select
+import shutil
+import subprocess
+import sys
+import tempfile
+from pathlib import Path
+
+HERE = Path(__file__).resolve().parent
+ROOT = HERE.parents[2]
+AUP = ROOT.parent / 'aup' / 'build' / 'aup'
+
+
+def used(pid):
+ fields = {}
+ for line in Path(f'/proc/{pid}/smaps_rollup').read_text().splitlines()[1:]:
+ name, value = line.split(':')
+ fields[name] = int(value.split()[0])
+ threads = int(Path(f'/proc/{pid}/status').read_text().split('Threads:')[1].split()[0])
+ return {'private_dirty_kib': fields['Private_Dirty'], 'rss_kib': fields['Rss'], 'pss_kib': fields['Pss'],
+ 'threads': threads}
+
+
+def touched(port, prefixes):
+ connection = http.client.HTTPConnection('127.0.0.1', port, timeout=30)
+ for prefix in prefixes:
+ for method, path, body in (('POST', f'{prefix}/inputs/score?points=1', b'k'), ('GET', f'{prefix}/views/total', None)):
+ connection.request(method, path, body, {'Content-Length': str(len(body))} if body else {})
+ answer = connection.getresponse()
+ answer.read()
+ assert answer.status == 200, (path, answer.status)
+ connection.close()
+
+
+def measured(args, prefixes):
+ process = subprocess.Popen([*map(str, args), '--port', '0'], stdout=subprocess.PIPE, stderr=subprocess.PIPE)
+ select.select([process.stdout], [], [], 30)
+ info = json.loads(process.stdout.readline())
+ touched(info['port'], prefixes)
+ result = used(process.pid)
+ process.terminate()
+ process.communicate(timeout=60)
+ return result
+
+
+def main():
+ serve = Path(sys.argv[1]).resolve()
+ counts = [int(n) for n in sys.argv[2:]] or [1, 10, 100]
+ work = Path(tempfile.mkdtemp(prefix='pure-apps-memory-', dir='/dev/shm'))
+ try:
+ module = work / 'scores.pmod'
+ subprocess.run([str(AUP), 'build', str(ROOT / 'benchmarks' / 'http' / 'scores.aup'), '-o', str(module)], check=True)
+ one = measured([serve, '--module', module, '--store', work / 'one', '--threads', 1], [''])
+ print(json.dumps({'way': 'process', 'apps': 1, **one}), flush=True)
+ for n in counts:
+ manifest = work / f'apps-{n}.conf'
+ manifest.write_text(''.join(f'app{i} {module} {work / f"store-{n}-{i}"}\n' for i in range(n)))
+ host = measured([serve, '--apps', manifest, '--threads', 1, '--workers', 2], [f'/app{i}' for i in range(n)])
+ print(json.dumps({'way': 'host', 'apps': n, **host}), flush=True)
+ finally:
+ shutil.rmtree(work)
+
+
+if __name__ == '__main__':
+ main()
diff --git a/research/experiments/026-apps-on-one-host/runs.sh b/research/experiments/026-apps-on-one-host/runs.sh
new file mode 100755
index 0000000..f2ddf19
--- /dev/null
+++ b/research/experiments/026-apps-on-one-host/runs.sh
@@ -0,0 +1,52 @@
+#!/bin/sh
+# The runs of docs/design/017's first stage, from the repository's root, in
+# steps (each fits a session's background limit), the binaries kept in
+# $WORK (default /tmp/pure-026) between them:
+# runs.sh build pure-serve before 017 (0b5fa1d, in a scratch worktree) and after
+# runs.sh memory what an app costs a host (memory.py)
+# runs.sh isolation two apps as two processes or one host (isolation.py, five rounds of 15 s)
+# runs.sh pairs A B a host of one app before and after, rounds A to B in turns as 025 ran them:
+# TPC-C in RAM (W=1, 64 terminals) and the bank's queries
+# runs.sh counts the bank queries' instructions before and after (025's count.py)
+# Each timed step waits until the Pi has been quiet (the last minute's load below 1.5).
+set -e
+out=research/experiments/026-apps-on-one-host
+work=${WORK:-/tmp/pure-026}
+quiet() { until awk '{ exit !($1 < 1.5) }' /proc/loadavg; do sleep 10; done; }
+case $1 in
+build)
+ mkdir -p $work
+ git worktree add -q --detach $work/tree 0b5fa1d
+ make -C $work/tree -s build/pure-serve
+ cp $work/tree/build/pure-serve $work/pure-serve-before
+ git worktree remove --force $work/tree
+ make -s build/pure-serve
+ cp build/pure-serve $work/pure-serve-after
+ (cd benchmarks/http && cc -O2 -std=c17 -o load load.c) ;;
+memory)
+ quiet
+ python3 $out/memory.py $work/pure-serve-after 1 10 100 > $out/2026-10-01-memory-linux-aarch64.jsonl ;;
+isolation)
+ quiet
+ echo "isolation $(uptime)" >> $out/2026-10-01-load.txt
+ python3 $out/isolation.py $work/pure-serve-after 5 15 > $out/2026-10-01-isolation-linux-aarch64.jsonl ;;
+pairs)
+ for round in $(seq $2 $3); do
+ first=before second=after
+ if [ $((round % 2)) = 0 ]; then first=after second=before; fi
+ for version in $first $second; do
+ quiet
+ echo "$round $version $(uptime)" >> $out/2026-10-01-load.txt
+ python3 benchmarks/tpcc/run.py --serve $work/pure-serve-$version --warehouses 1 --check 0 --terminals 64 \
+ --sqlite-threads '' --sqlite-group '' --seconds 20 > $out/2026-10-01-tpcc-$version-$round-linux-aarch64.jsonl
+ python3 benchmarks/bank/queries.py --serve $work/pure-serve-$version \
+ > $out/2026-10-01-queries-$version-$round-linux-aarch64.jsonl
+ done
+ done ;;
+counts)
+ python3 research/experiments/025-i64-cost/count.py $work/pure-serve-before $work/pure-serve-after \
+ $work/pure-serve-before $work/pure-serve-after > $out/2026-10-01-counts-linux-aarch64.jsonl ;;
+*)
+ echo "runs.sh build|memory|isolation|pairs FIRST LAST|counts" >&2
+ exit 2 ;;
+esac