aboutsummaryrefslogtreecommitdiffstats
path: root/research
diff options
context:
space:
mode:
Diffstat (limited to 'research')
-rw-r--r--research/experiments/035-push/2026-10-04-counts.jsonl4
-rw-r--r--research/experiments/035-push/2026-10-04-fresh-1.jsonl6
-rw-r--r--research/experiments/035-push/2026-10-04-fresh-2.jsonl6
-rw-r--r--research/experiments/035-push/2026-10-04-fresh-3.jsonl6
-rw-r--r--research/experiments/035-push/2026-10-04-fresh-first-1.jsonl6
-rw-r--r--research/experiments/035-push/2026-10-04-fresh-first-2.jsonl6
-rw-r--r--research/experiments/035-push/2026-10-04-fresh-first-3.jsonl6
-rw-r--r--research/experiments/035-push/2026-10-04-load.txt12
-rw-r--r--research/experiments/035-push/2026-10-04-many-1.jsonl1
-rw-r--r--research/experiments/035-push/2026-10-04-many-2.jsonl1
-rw-r--r--research/experiments/035-push/2026-10-04-many-3.jsonl1
-rw-r--r--research/experiments/035-push/2026-10-04-queries-after-1.jsonl4
-rw-r--r--research/experiments/035-push/2026-10-04-queries-after-10.jsonl4
-rw-r--r--research/experiments/035-push/2026-10-04-queries-after-11.jsonl4
-rw-r--r--research/experiments/035-push/2026-10-04-queries-after-12.jsonl4
-rw-r--r--research/experiments/035-push/2026-10-04-queries-after-2.jsonl4
-rw-r--r--research/experiments/035-push/2026-10-04-queries-after-3.jsonl4
-rw-r--r--research/experiments/035-push/2026-10-04-queries-after-4.jsonl4
-rw-r--r--research/experiments/035-push/2026-10-04-queries-after-5.jsonl4
-rw-r--r--research/experiments/035-push/2026-10-04-queries-after-6.jsonl4
-rw-r--r--research/experiments/035-push/2026-10-04-queries-after-7.jsonl4
-rw-r--r--research/experiments/035-push/2026-10-04-queries-after-8.jsonl4
-rw-r--r--research/experiments/035-push/2026-10-04-queries-after-9.jsonl4
-rw-r--r--research/experiments/035-push/2026-10-04-queries-before-1.jsonl4
-rw-r--r--research/experiments/035-push/2026-10-04-queries-before-10.jsonl4
-rw-r--r--research/experiments/035-push/2026-10-04-queries-before-11.jsonl4
-rw-r--r--research/experiments/035-push/2026-10-04-queries-before-12.jsonl4
-rw-r--r--research/experiments/035-push/2026-10-04-queries-before-2.jsonl4
-rw-r--r--research/experiments/035-push/2026-10-04-queries-before-3.jsonl4
-rw-r--r--research/experiments/035-push/2026-10-04-queries-before-4.jsonl4
-rw-r--r--research/experiments/035-push/2026-10-04-queries-before-5.jsonl4
-rw-r--r--research/experiments/035-push/2026-10-04-queries-before-6.jsonl4
-rw-r--r--research/experiments/035-push/2026-10-04-queries-before-7.jsonl4
-rw-r--r--research/experiments/035-push/2026-10-04-queries-before-8.jsonl4
-rw-r--r--research/experiments/035-push/2026-10-04-queries-before-9.jsonl4
-rw-r--r--research/experiments/035-push/2026-10-04-tpcc-after-1.jsonl3
-rw-r--r--research/experiments/035-push/2026-10-04-tpcc-after-2.jsonl3
-rw-r--r--research/experiments/035-push/2026-10-04-tpcc-after-3.jsonl3
-rw-r--r--research/experiments/035-push/2026-10-04-tpcc-after-4.jsonl3
-rw-r--r--research/experiments/035-push/2026-10-04-tpcc-after-5.jsonl3
-rw-r--r--research/experiments/035-push/2026-10-04-tpcc-after-6.jsonl3
-rw-r--r--research/experiments/035-push/2026-10-04-tpcc-before-1.jsonl3
-rw-r--r--research/experiments/035-push/2026-10-04-tpcc-before-2.jsonl3
-rw-r--r--research/experiments/035-push/2026-10-04-tpcc-before-3.jsonl3
-rw-r--r--research/experiments/035-push/2026-10-04-tpcc-before-4.jsonl3
-rw-r--r--research/experiments/035-push/2026-10-04-tpcc-before-5.jsonl3
-rw-r--r--research/experiments/035-push/2026-10-04-tpcc-before-6.jsonl3
-rw-r--r--research/experiments/035-push/counter.aup8
-rw-r--r--research/experiments/035-push/pairs.py45
-rwxr-xr-xresearch/experiments/035-push/push.py75
-rwxr-xr-xresearch/experiments/035-push/runs.sh50
51 files changed, 365 insertions, 0 deletions
diff --git a/research/experiments/035-push/2026-10-04-counts.jsonl b/research/experiments/035-push/2026-10-04-counts.jsonl
new file mode 100644
index 0000000..791304f
--- /dev/null
+++ b/research/experiments/035-push/2026-10-04-counts.jsonl
@@ -0,0 +1,4 @@
+{"serve": "pure-serve", "per_branch": {"instructions": 27053801, "cycles": 11959324}, "in_credit": {"instructions": 3488159, "cycles": 1614350}, "large": {"instructions": 1458065, "cycles": 666917}, "ranks": {"instructions": 24211894, "cycles": 14848857}, "none": {"instructions": 606183, "cycles": 195200}, "field": {"instructions": 8927376, "cycles": 3255446}, "found": {"instructions": 15871922, "cycles": 12581393}}
+{"serve": "pure-serve", "per_branch": {"instructions": 27084653, "cycles": 12093923}, "in_credit": {"instructions": 3495057, "cycles": 1682436}, "large": {"instructions": 1458197, "cycles": 663365}, "ranks": {"instructions": 24228166, "cycles": 15833361}, "none": {"instructions": 606307, "cycles": 193316}, "field": {"instructions": 8927500, "cycles": 3260106}, "found": {"instructions": 15872910, "cycles": 12607746}}
+{"serve": "pure-serve", "per_branch": {"instructions": 27084257, "cycles": 12251672}, "in_credit": {"instructions": 3494865, "cycles": 1652308}, "large": {"instructions": 1458113, "cycles": 662572}, "ranks": {"instructions": 24227286, "cycles": 14894044}, "none": {"instructions": 606183, "cycles": 194389}, "field": {"instructions": 8927376, "cycles": 3261248}, "found": {"instructions": 15872386, "cycles": 12991628}}
+{"serve": "pure-serve", "per_branch": {"instructions": 27023643, "cycles": 12061297}, "in_credit": {"instructions": 3481476, "cycles": 1717635}, "large": {"instructions": 1458205, "cycles": 668926}, "ranks": {"instructions": 24194608, "cycles": 15196260}, "none": {"instructions": 606307, "cycles": 194889}, "field": {"instructions": 8927602, "cycles": 3256729}, "found": {"instructions": 15871791, "cycles": 12573182}}
diff --git a/research/experiments/035-push/2026-10-04-fresh-1.jsonl b/research/experiments/035-push/2026-10-04-fresh-1.jsonl
new file mode 100644
index 0000000..a4b2437
--- /dev/null
+++ b/research/experiments/035-push/2026-10-04-fresh-1.jsonl
@@ -0,0 +1,6 @@
+{"clients": 1000, "way": "push", "rate": 1, "writes": 11, "followed_to_end": 1000, "taken": 12000, "measured": 11000, "p50_us": 864, "p90_us": 3200, "p99_us": 4096, "max_us": 4608, "host_cpu_seconds": 0.13, "host_cpu_share": 0.015, "rss_kib_per_client": 2.88, "pushes": 54, "pushed": 12000, "replaced": 0, "requests": 1012}
+{"clients": 1000, "way": "poll:100", "rate": 1, "writes": 11, "followed_to_end": 1000, "taken": 108400, "measured": 11000, "p50_us": 47104, "p90_us": 86016, "p99_us": 98304, "max_us": 98304, "host_cpu_seconds": 1.4, "host_cpu_share": 0.162, "rss_kib_per_client": 6.43, "pushes": 0, "pushed": 0, "replaced": 0, "requests": 108412}
+{"clients": 1000, "way": "push", "rate": 10, "writes": 101, "followed_to_end": 1000, "taken": 102000, "measured": 101000, "p50_us": 960, "p90_us": 3584, "p99_us": 4864, "max_us": 5632, "host_cpu_seconds": 0.62, "host_cpu_share": 0.072, "rss_kib_per_client": 1.47, "pushes": 327, "pushed": 102000, "replaced": 0, "requests": 1102}
+{"clients": 1000, "way": "poll:20", "rate": 10, "writes": 101, "followed_to_end": 1000, "taken": 542739, "measured": 101000, "p50_us": 9728, "p90_us": 17408, "p99_us": 19456, "max_us": 20480, "host_cpu_seconds": 5.19, "host_cpu_share": 0.599, "rss_kib_per_client": 6.56, "pushes": 0, "pushed": 0, "replaced": 0, "requests": 542843}
+{"clients": 1000, "way": "push", "rate": 100, "writes": 1001, "followed_to_end": 1000, "taken": 995676, "measured": 1001000, "p50_us": 5120, "p90_us": 8704, "p99_us": 10752, "max_us": 13312, "host_cpu_seconds": 5.34, "host_cpu_share": 0.618, "rss_kib_per_client": 4.22, "pushes": 3002, "pushed": 995676, "replaced": 0, "requests": 2002}
+{"clients": 1000, "way": "poll:20", "rate": 100, "writes": 1001, "followed_to_end": 1000, "taken": 541902, "measured": 1001000, "p50_us": 9728, "p90_us": 17408, "p99_us": 19456, "max_us": 25600, "host_cpu_seconds": 5.35, "host_cpu_share": 0.619, "rss_kib_per_client": 6.54, "pushes": 0, "pushed": 0, "replaced": 0, "requests": 542906}
diff --git a/research/experiments/035-push/2026-10-04-fresh-2.jsonl b/research/experiments/035-push/2026-10-04-fresh-2.jsonl
new file mode 100644
index 0000000..8764e85
--- /dev/null
+++ b/research/experiments/035-push/2026-10-04-fresh-2.jsonl
@@ -0,0 +1,6 @@
+{"clients": 1000, "way": "poll:20", "rate": 100, "writes": 1001, "followed_to_end": 1000, "taken": 542633, "measured": 1001000, "p50_us": 9728, "p90_us": 17408, "p99_us": 19456, "max_us": 22528, "host_cpu_seconds": 5.36, "host_cpu_share": 0.619, "rss_kib_per_client": 6.66, "pushes": 0, "pushed": 0, "replaced": 0, "requests": 543635}
+{"clients": 1000, "way": "push", "rate": 100, "writes": 1001, "followed_to_end": 1000, "taken": 987352, "measured": 1001000, "p50_us": 6656, "p90_us": 9728, "p99_us": 11264, "max_us": 19456, "host_cpu_seconds": 5.44, "host_cpu_share": 0.63, "rss_kib_per_client": 2.62, "pushes": 2978, "pushed": 987352, "replaced": 0, "requests": 2002}
+{"clients": 1000, "way": "poll:20", "rate": 10, "writes": 101, "followed_to_end": 1000, "taken": 542060, "measured": 101000, "p50_us": 9728, "p90_us": 17408, "p99_us": 19456, "max_us": 28672, "host_cpu_seconds": 5.17, "host_cpu_share": 0.598, "rss_kib_per_client": 6.54, "pushes": 0, "pushed": 0, "replaced": 0, "requests": 542164}
+{"clients": 1000, "way": "push", "rate": 10, "writes": 101, "followed_to_end": 1000, "taken": 102000, "measured": 101000, "p50_us": 1216, "p90_us": 4864, "p99_us": 6656, "max_us": 7424, "host_cpu_seconds": 0.75, "host_cpu_share": 0.087, "rss_kib_per_client": 2.59, "pushes": 322, "pushed": 102000, "replaced": 0, "requests": 1102}
+{"clients": 1000, "way": "poll:100", "rate": 1, "writes": 11, "followed_to_end": 1000, "taken": 108395, "measured": 11000, "p50_us": 47104, "p90_us": 86016, "p99_us": 98304, "max_us": 98304, "host_cpu_seconds": 1.31, "host_cpu_share": 0.151, "rss_kib_per_client": 6.42, "pushes": 0, "pushed": 0, "replaced": 0, "requests": 108407}
+{"clients": 1000, "way": "push", "rate": 1, "writes": 11, "followed_to_end": 1000, "taken": 12000, "measured": 11000, "p50_us": 0, "p90_us": 1984, "p99_us": 4352, "max_us": 4864, "host_cpu_seconds": 0.13, "host_cpu_share": 0.015, "rss_kib_per_client": 2.59, "pushes": 54, "pushed": 12000, "replaced": 0, "requests": 1012}
diff --git a/research/experiments/035-push/2026-10-04-fresh-3.jsonl b/research/experiments/035-push/2026-10-04-fresh-3.jsonl
new file mode 100644
index 0000000..6db2a8a
--- /dev/null
+++ b/research/experiments/035-push/2026-10-04-fresh-3.jsonl
@@ -0,0 +1,6 @@
+{"clients": 1000, "way": "push", "rate": 1, "writes": 11, "followed_to_end": 1000, "taken": 12000, "measured": 11000, "p50_us": 1600, "p90_us": 3200, "p99_us": 5376, "max_us": 6400, "host_cpu_seconds": 0.12, "host_cpu_share": 0.014, "rss_kib_per_client": 2.59, "pushes": 51, "pushed": 12000, "replaced": 0, "requests": 1012}
+{"clients": 1000, "way": "poll:100", "rate": 1, "writes": 11, "followed_to_end": 1000, "taken": 108508, "measured": 11000, "p50_us": 45056, "p90_us": 86016, "p99_us": 98304, "max_us": 98304, "host_cpu_seconds": 1.41, "host_cpu_share": 0.163, "rss_kib_per_client": 6.43, "pushes": 0, "pushed": 0, "replaced": 0, "requests": 108520}
+{"clients": 1000, "way": "push", "rate": 10, "writes": 101, "followed_to_end": 1000, "taken": 102000, "measured": 101000, "p50_us": 1408, "p90_us": 4352, "p99_us": 6144, "max_us": 7680, "host_cpu_seconds": 0.66, "host_cpu_share": 0.076, "rss_kib_per_client": 2.59, "pushes": 324, "pushed": 102000, "replaced": 0, "requests": 1102}
+{"clients": 1000, "way": "poll:20", "rate": 10, "writes": 101, "followed_to_end": 1000, "taken": 542713, "measured": 101000, "p50_us": 9728, "p90_us": 17408, "p99_us": 20480, "max_us": 21504, "host_cpu_seconds": 5.15, "host_cpu_share": 0.594, "rss_kib_per_client": 6.43, "pushes": 0, "pushed": 0, "replaced": 0, "requests": 542817}
+{"clients": 1000, "way": "push", "rate": 100, "writes": 1001, "followed_to_end": 1000, "taken": 998340, "measured": 1001000, "p50_us": 6144, "p90_us": 8704, "p99_us": 10752, "max_us": 13312, "host_cpu_seconds": 5.38, "host_cpu_share": 0.623, "rss_kib_per_client": 3.82, "pushes": 3007, "pushed": 998340, "replaced": 0, "requests": 2002}
+{"clients": 1000, "way": "poll:20", "rate": 100, "writes": 1001, "followed_to_end": 1000, "taken": 541936, "measured": 1001000, "p50_us": 9728, "p90_us": 17408, "p99_us": 19456, "max_us": 40960, "host_cpu_seconds": 5.43, "host_cpu_share": 0.628, "rss_kib_per_client": 6.48, "pushes": 0, "pushed": 0, "replaced": 0, "requests": 542954}
diff --git a/research/experiments/035-push/2026-10-04-fresh-first-1.jsonl b/research/experiments/035-push/2026-10-04-fresh-first-1.jsonl
new file mode 100644
index 0000000..c7276a7
--- /dev/null
+++ b/research/experiments/035-push/2026-10-04-fresh-first-1.jsonl
@@ -0,0 +1,6 @@
+{"clients": 1000, "way": "push", "rate": 1, "writes": 11, "followed_to_end": 1000, "taken": 12000, "measured": 11000, "p50_us": 960, "p90_us": 3712, "p99_us": 7424, "max_us": 8704, "host_cpu_seconds": 0.13, "host_cpu_share": 0.015, "rss_kib_per_client": 3.81, "pushes": 51, "pushed": 12000, "replaced": 0, "requests": 1012}
+{"clients": 1000, "way": "poll:100", "rate": 1, "writes": 11, "followed_to_end": 1000, "taken": 108398, "measured": 11000, "p50_us": 47104, "p90_us": 86016, "p99_us": 98304, "max_us": 98304, "host_cpu_seconds": 1.23, "host_cpu_share": 0.142, "rss_kib_per_client": 6.42, "pushes": 0, "pushed": 0, "replaced": 0, "requests": 108410}
+{"clients": 1000, "way": "push", "rate": 10, "writes": 101, "followed_to_end": 1000, "taken": 102000, "measured": 101000, "p50_us": 2048, "p90_us": 5376, "p99_us": 7168, "max_us": 10752, "host_cpu_seconds": 0.68, "host_cpu_share": 0.079, "rss_kib_per_client": 2.59, "pushes": 327, "pushed": 102000, "replaced": 0, "requests": 1102}
+{"clients": 1000, "way": "poll:20", "rate": 10, "writes": 101, "followed_to_end": 1000, "taken": 542653, "measured": 101000, "p50_us": 9728, "p90_us": 17408, "p99_us": 19456, "max_us": 20480, "host_cpu_seconds": 5.18, "host_cpu_share": 0.598, "rss_kib_per_client": 6.48, "pushes": 0, "pushed": 0, "replaced": 0, "requests": 542757}
+{"clients": 1000, "way": "push", "rate": 100, "writes": 1001, "followed_to_end": 1000, "taken": 988372, "measured": 1001000, "p50_us": 6656, "p90_us": 9728, "p99_us": 11264, "max_us": 14848, "host_cpu_seconds": 5.35, "host_cpu_share": 0.619, "rss_kib_per_client": 3.95, "pushes": 2978, "pushed": 988372, "replaced": 0, "requests": 2002}
+{"clients": 1000, "way": "poll:20", "rate": 100, "writes": 1001, "followed_to_end": 1000, "taken": 541932, "measured": 1001000, "p50_us": 9728, "p90_us": 17408, "p99_us": 20480, "max_us": 22528, "host_cpu_seconds": 5.45, "host_cpu_share": 0.63, "rss_kib_per_client": 6.51, "pushes": 0, "pushed": 0, "replaced": 0, "requests": 542935}
diff --git a/research/experiments/035-push/2026-10-04-fresh-first-2.jsonl b/research/experiments/035-push/2026-10-04-fresh-first-2.jsonl
new file mode 100644
index 0000000..ab5f187
--- /dev/null
+++ b/research/experiments/035-push/2026-10-04-fresh-first-2.jsonl
@@ -0,0 +1,6 @@
+{"clients": 1000, "way": "poll:20", "rate": 100, "writes": 1001, "followed_to_end": 1000, "taken": 542345, "measured": 1001000, "p50_us": 9728, "p90_us": 17408, "p99_us": 19456, "max_us": 23552, "host_cpu_seconds": 5.36, "host_cpu_share": 0.619, "rss_kib_per_client": 6.59, "pushes": 0, "pushed": 0, "replaced": 0, "requests": 543349}
+{"clients": 1000, "way": "push", "rate": 100, "writes": 1001, "followed_to_end": 1000, "taken": 998653, "measured": 1001000, "p50_us": 5888, "p90_us": 8704, "p99_us": 10752, "max_us": 12800, "host_cpu_seconds": 5.36, "host_cpu_share": 0.62, "rss_kib_per_client": 5.06, "pushes": 3005, "pushed": 998653, "replaced": 0, "requests": 2002}
+{"clients": 1000, "way": "poll:20", "rate": 10, "writes": 101, "followed_to_end": 1000, "taken": 541963, "measured": 101000, "p50_us": 9728, "p90_us": 17408, "p99_us": 19456, "max_us": 20480, "host_cpu_seconds": 5.26, "host_cpu_share": 0.608, "rss_kib_per_client": 6.46, "pushes": 0, "pushed": 0, "replaced": 0, "requests": 542067}
+{"clients": 1000, "way": "push", "rate": 10, "writes": 101, "followed_to_end": 1000, "taken": 102000, "measured": 101000, "p50_us": 2048, "p90_us": 5120, "p99_us": 6912, "max_us": 8192, "host_cpu_seconds": 0.67, "host_cpu_share": 0.078, "rss_kib_per_client": 1.55, "pushes": 330, "pushed": 102000, "replaced": 0, "requests": 1102}
+{"clients": 1000, "way": "poll:100", "rate": 1, "writes": 11, "followed_to_end": 1000, "taken": 108395, "measured": 11000, "p50_us": 47104, "p90_us": 86016, "p99_us": 98304, "max_us": 98304, "host_cpu_seconds": 1.26, "host_cpu_share": 0.146, "rss_kib_per_client": 6.43, "pushes": 0, "pushed": 0, "replaced": 0, "requests": 108407}
+{"clients": 1000, "way": "push", "rate": 1, "writes": 11, "followed_to_end": 1000, "taken": 12000, "measured": 11000, "p50_us": 1344, "p90_us": 3840, "p99_us": 4608, "max_us": 5120, "host_cpu_seconds": 0.15, "host_cpu_share": 0.017, "rss_kib_per_client": 3.81, "pushes": 48, "pushed": 12000, "replaced": 0, "requests": 1012}
diff --git a/research/experiments/035-push/2026-10-04-fresh-first-3.jsonl b/research/experiments/035-push/2026-10-04-fresh-first-3.jsonl
new file mode 100644
index 0000000..9b8a1d9
--- /dev/null
+++ b/research/experiments/035-push/2026-10-04-fresh-first-3.jsonl
@@ -0,0 +1,6 @@
+{"clients": 1000, "way": "push", "rate": 1, "writes": 11, "followed_to_end": 1000, "taken": 12000, "measured": 11000, "p50_us": 0, "p90_us": 272, "p99_us": 3968, "max_us": 4864, "host_cpu_seconds": 0.13, "host_cpu_share": 0.015, "rss_kib_per_client": 3.34, "pushes": 53, "pushed": 12000, "replaced": 0, "requests": 1012}
+{"clients": 1000, "way": "poll:100", "rate": 1, "writes": 11, "followed_to_end": 1000, "taken": 108556, "measured": 11000, "p50_us": 45056, "p90_us": 86016, "p99_us": 98304, "max_us": 98304, "host_cpu_seconds": 1.25, "host_cpu_share": 0.144, "rss_kib_per_client": 6.43, "pushes": 0, "pushed": 0, "replaced": 0, "requests": 108570}
+{"clients": 1000, "way": "push", "rate": 10, "writes": 101, "followed_to_end": 1000, "taken": 102000, "measured": 101000, "p50_us": 0, "p90_us": 0, "p99_us": 5120, "max_us": 7680, "host_cpu_seconds": 0.71, "host_cpu_share": 0.082, "rss_kib_per_client": 5.01, "pushes": 315, "pushed": 102000, "replaced": 0, "requests": 1102}
+{"clients": 1000, "way": "poll:20", "rate": 10, "writes": 101, "followed_to_end": 1000, "taken": 542711, "measured": 101000, "p50_us": 9728, "p90_us": 17408, "p99_us": 19456, "max_us": 20480, "host_cpu_seconds": 5.22, "host_cpu_share": 0.602, "rss_kib_per_client": 6.5, "pushes": 0, "pushed": 0, "replaced": 0, "requests": 542813}
+{"clients": 1000, "way": "push", "rate": 100, "writes": 1001, "followed_to_end": 1000, "taken": 997331, "measured": 1001000, "p50_us": 5376, "p90_us": 9216, "p99_us": 10752, "max_us": 15872, "host_cpu_seconds": 5.26, "host_cpu_share": 0.609, "rss_kib_per_client": 2.64, "pushes": 3007, "pushed": 997331, "replaced": 0, "requests": 2002}
+{"clients": 1000, "way": "poll:20", "rate": 100, "writes": 1001, "followed_to_end": 1000, "taken": 541882, "measured": 1001000, "p50_us": 9728, "p90_us": 17408, "p99_us": 19456, "max_us": 25600, "host_cpu_seconds": 5.37, "host_cpu_share": 0.621, "rss_kib_per_client": 6.5, "pushes": 0, "pushed": 0, "replaced": 0, "requests": 542884}
diff --git a/research/experiments/035-push/2026-10-04-load.txt b/research/experiments/035-push/2026-10-04-load.txt
new file mode 100644
index 0000000..ef23532
--- /dev/null
+++ b/research/experiments/035-push/2026-10-04-load.txt
@@ -0,0 +1,12 @@
+1 before 15:37:30 up 11:58, 1 user, load average: 0.63, 0.62, 0.72
+1 after 15:38:57 up 12:00, 1 user, load average: 1.42, 0.93, 0.83
+2 after 15:40:23 up 12:01, 1 user, load average: 1.45, 1.12, 0.91
+2 before 15:41:49 up 12:03, 1 user, load average: 1.24, 1.14, 0.94
+3 before 15:43:16 up 12:04, 1 user, load average: 1.40, 1.27, 1.01
+3 after 15:44:53 up 12:06, 1 user, load average: 1.33, 1.38, 1.08
+4 after 15:46:24 up 12:07, 1 user, load average: 1.43, 1.47, 1.15
+4 before 15:47:50 up 12:09, 1 user, load average: 1.33, 1.46, 1.17
+5 before 15:49:27 up 12:10, 1 user, load average: 1.45, 1.57, 1.25
+5 after 15:51:03 up 12:12, 1 user, load average: 1.43, 1.64, 1.31
+6 after 15:52:40 up 12:14, 1 user, load average: 1.33, 1.63, 1.35
+6 before 15:54:07 up 12:15, 1 user, load average: 1.45, 1.64, 1.38
diff --git a/research/experiments/035-push/2026-10-04-many-1.jsonl b/research/experiments/035-push/2026-10-04-many-1.jsonl
new file mode 100644
index 0000000..0055029
--- /dev/null
+++ b/research/experiments/035-push/2026-10-04-many-1.jsonl
@@ -0,0 +1 @@
+{"clients": 10000, "way": "push", "rate": 1, "writes": 11, "followed_to_end": 10000, "taken": 120000, "measured": 110000, "p50_us": 0, "p90_us": 16384, "p99_us": 36864, "max_us": 45056, "host_cpu_seconds": 1.03, "host_cpu_share": 0.127, "rss_kib_per_client": 0.42, "pushes": 317, "pushed": 120000, "replaced": 0, "requests": 10012}
diff --git a/research/experiments/035-push/2026-10-04-many-2.jsonl b/research/experiments/035-push/2026-10-04-many-2.jsonl
new file mode 100644
index 0000000..8292a8f
--- /dev/null
+++ b/research/experiments/035-push/2026-10-04-many-2.jsonl
@@ -0,0 +1 @@
+{"clients": 10000, "way": "push", "rate": 1, "writes": 11, "followed_to_end": 10000, "taken": 120000, "measured": 110000, "p50_us": 0, "p90_us": 27648, "p99_us": 40960, "max_us": 45056, "host_cpu_seconds": 1.1, "host_cpu_share": 0.135, "rss_kib_per_client": 0.33, "pushes": 314, "pushed": 120000, "replaced": 0, "requests": 10012}
diff --git a/research/experiments/035-push/2026-10-04-many-3.jsonl b/research/experiments/035-push/2026-10-04-many-3.jsonl
new file mode 100644
index 0000000..1f376da
--- /dev/null
+++ b/research/experiments/035-push/2026-10-04-many-3.jsonl
@@ -0,0 +1 @@
+{"clients": 10000, "way": "push", "rate": 1, "writes": 11, "followed_to_end": 10000, "taken": 120000, "measured": 110000, "p50_us": 20480, "p90_us": 38912, "p99_us": 45056, "max_us": 51200, "host_cpu_seconds": 1.13, "host_cpu_share": 0.138, "rss_kib_per_client": 0.29, "pushes": 318, "pushed": 120000, "replaced": 0, "requests": 10012}
diff --git a/research/experiments/035-push/2026-10-04-queries-after-1.jsonl b/research/experiments/035-push/2026-10-04-queries-after-1.jsonl
new file mode 100644
index 0000000..3b19ece
--- /dev/null
+++ b/research/experiments/035-push/2026-10-04-queries-after-1.jsonl
@@ -0,0 +1,4 @@
+{"query": "per_branch", "rows": 10, "accounts": 100000, "pure_median_ms": 5.34, "pure_fastest_ms": 5.21, "sqlite_median_ms": 44.86, "sqlite_fastest_ms": 44.78, "sqlite_indexed_median_ms": 14.1, "sqlite_indexed_fastest_ms": 14.06}
+{"query": "in_credit", "rows": 1, "accounts": 100000, "pure_median_ms": 0.84, "pure_fastest_ms": 0.82, "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.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.76, "pure_fastest_ms": 6.72, "sqlite_median_ms": 2827.0, "sqlite_fastest_ms": 2825.14, "sqlite_indexed_median_ms": 7.54, "sqlite_indexed_fastest_ms": 7.49}
diff --git a/research/experiments/035-push/2026-10-04-queries-after-10.jsonl b/research/experiments/035-push/2026-10-04-queries-after-10.jsonl
new file mode 100644
index 0000000..f79b20a
--- /dev/null
+++ b/research/experiments/035-push/2026-10-04-queries-after-10.jsonl
@@ -0,0 +1,4 @@
+{"query": "per_branch", "rows": 10, "accounts": 100000, "pure_median_ms": 5.25, "pure_fastest_ms": 5.17, "sqlite_median_ms": 45.48, "sqlite_fastest_ms": 45.22, "sqlite_indexed_median_ms": 14.08, "sqlite_indexed_fastest_ms": 14.04}
+{"query": "in_credit", "rows": 1, "accounts": 100000, "pure_median_ms": 0.84, "pure_fastest_ms": 0.81, "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.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.81, "pure_fastest_ms": 6.71, "sqlite_median_ms": 2835.56, "sqlite_fastest_ms": 2832.87, "sqlite_indexed_median_ms": 7.6, "sqlite_indexed_fastest_ms": 7.53}
diff --git a/research/experiments/035-push/2026-10-04-queries-after-11.jsonl b/research/experiments/035-push/2026-10-04-queries-after-11.jsonl
new file mode 100644
index 0000000..810a695
--- /dev/null
+++ b/research/experiments/035-push/2026-10-04-queries-after-11.jsonl
@@ -0,0 +1,4 @@
+{"query": "per_branch", "rows": 10, "accounts": 100000, "pure_median_ms": 5.24, "pure_fastest_ms": 5.11, "sqlite_median_ms": 45.37, "sqlite_fastest_ms": 45.21, "sqlite_indexed_median_ms": 13.97, "sqlite_indexed_fastest_ms": 13.95}
+{"query": "in_credit", "rows": 1, "accounts": 100000, "pure_median_ms": 0.86, "pure_fastest_ms": 0.83, "sqlite_median_ms": 5.91, "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.41, "pure_fastest_ms": 0.38, "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.75, "pure_fastest_ms": 6.7, "sqlite_median_ms": 2840.04, "sqlite_fastest_ms": 2834.32, "sqlite_indexed_median_ms": 7.51, "sqlite_indexed_fastest_ms": 7.49}
diff --git a/research/experiments/035-push/2026-10-04-queries-after-12.jsonl b/research/experiments/035-push/2026-10-04-queries-after-12.jsonl
new file mode 100644
index 0000000..84f72cc
--- /dev/null
+++ b/research/experiments/035-push/2026-10-04-queries-after-12.jsonl
@@ -0,0 +1,4 @@
+{"query": "per_branch", "rows": 10, "accounts": 100000, "pure_median_ms": 5.32, "pure_fastest_ms": 5.2, "sqlite_median_ms": 44.96, "sqlite_fastest_ms": 44.79, "sqlite_indexed_median_ms": 14.08, "sqlite_indexed_fastest_ms": 14.01}
+{"query": "in_credit", "rows": 1, "accounts": 100000, "pure_median_ms": 0.86, "pure_fastest_ms": 0.81, "sqlite_median_ms": 5.9, "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.39, "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.82, "pure_fastest_ms": 6.72, "sqlite_median_ms": 2831.82, "sqlite_fastest_ms": 2827.38, "sqlite_indexed_median_ms": 7.59, "sqlite_indexed_fastest_ms": 7.51}
diff --git a/research/experiments/035-push/2026-10-04-queries-after-2.jsonl b/research/experiments/035-push/2026-10-04-queries-after-2.jsonl
new file mode 100644
index 0000000..6f50ba0
--- /dev/null
+++ b/research/experiments/035-push/2026-10-04-queries-after-2.jsonl
@@ -0,0 +1,4 @@
+{"query": "per_branch", "rows": 10, "accounts": 100000, "pure_median_ms": 5.27, "pure_fastest_ms": 5.18, "sqlite_median_ms": 44.92, "sqlite_fastest_ms": 44.77, "sqlite_indexed_median_ms": 14.09, "sqlite_indexed_fastest_ms": 14.03}
+{"query": "in_credit", "rows": 1, "accounts": 100000, "pure_median_ms": 1.03, "pure_fastest_ms": 0.93, "sqlite_median_ms": 5.87, "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.42, "pure_fastest_ms": 0.38, "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.77, "pure_fastest_ms": 6.72, "sqlite_median_ms": 2832.35, "sqlite_fastest_ms": 2830.51, "sqlite_indexed_median_ms": 7.55, "sqlite_indexed_fastest_ms": 7.49}
diff --git a/research/experiments/035-push/2026-10-04-queries-after-3.jsonl b/research/experiments/035-push/2026-10-04-queries-after-3.jsonl
new file mode 100644
index 0000000..763f261
--- /dev/null
+++ b/research/experiments/035-push/2026-10-04-queries-after-3.jsonl
@@ -0,0 +1,4 @@
+{"query": "per_branch", "rows": 10, "accounts": 100000, "pure_median_ms": 5.27, "pure_fastest_ms": 5.13, "sqlite_median_ms": 44.89, "sqlite_fastest_ms": 44.73, "sqlite_indexed_median_ms": 14.08, "sqlite_indexed_fastest_ms": 14.05}
+{"query": "in_credit", "rows": 1, "accounts": 100000, "pure_median_ms": 0.87, "pure_fastest_ms": 0.82, "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.4, "pure_fastest_ms": 0.38, "sqlite_median_ms": 1.49, "sqlite_fastest_ms": 1.48, "sqlite_indexed_median_ms": 1.49, "sqlite_indexed_fastest_ms": 1.49}
+{"query": "ranks", "rows": 404, "accounts": 100000, "pure_median_ms": 6.72, "pure_fastest_ms": 6.65, "sqlite_median_ms": 2835.52, "sqlite_fastest_ms": 2831.03, "sqlite_indexed_median_ms": 7.55, "sqlite_indexed_fastest_ms": 7.51}
diff --git a/research/experiments/035-push/2026-10-04-queries-after-4.jsonl b/research/experiments/035-push/2026-10-04-queries-after-4.jsonl
new file mode 100644
index 0000000..a5c57b4
--- /dev/null
+++ b/research/experiments/035-push/2026-10-04-queries-after-4.jsonl
@@ -0,0 +1,4 @@
+{"query": "per_branch", "rows": 10, "accounts": 100000, "pure_median_ms": 5.33, "pure_fastest_ms": 5.19, "sqlite_median_ms": 45.39, "sqlite_fastest_ms": 45.24, "sqlite_indexed_median_ms": 14.05, "sqlite_indexed_fastest_ms": 14.01}
+{"query": "in_credit", "rows": 1, "accounts": 100000, "pure_median_ms": 0.87, "pure_fastest_ms": 0.82, "sqlite_median_ms": 5.94, "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.47, "sqlite_indexed_fastest_ms": 1.47}
+{"query": "ranks", "rows": 404, "accounts": 100000, "pure_median_ms": 6.81, "pure_fastest_ms": 6.77, "sqlite_median_ms": 2837.06, "sqlite_fastest_ms": 2834.11, "sqlite_indexed_median_ms": 7.61, "sqlite_indexed_fastest_ms": 7.51}
diff --git a/research/experiments/035-push/2026-10-04-queries-after-5.jsonl b/research/experiments/035-push/2026-10-04-queries-after-5.jsonl
new file mode 100644
index 0000000..0a05a1d
--- /dev/null
+++ b/research/experiments/035-push/2026-10-04-queries-after-5.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": 45.13, "sqlite_fastest_ms": 44.82, "sqlite_indexed_median_ms": 14.02, "sqlite_indexed_fastest_ms": 13.98}
+{"query": "in_credit", "rows": 1, "accounts": 100000, "pure_median_ms": 1.01, "pure_fastest_ms": 0.96, "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.39, "pure_fastest_ms": 0.38, "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.83, "pure_fastest_ms": 6.64, "sqlite_median_ms": 2837.24, "sqlite_fastest_ms": 2833.39, "sqlite_indexed_median_ms": 7.59, "sqlite_indexed_fastest_ms": 7.52}
diff --git a/research/experiments/035-push/2026-10-04-queries-after-6.jsonl b/research/experiments/035-push/2026-10-04-queries-after-6.jsonl
new file mode 100644
index 0000000..e4d140f
--- /dev/null
+++ b/research/experiments/035-push/2026-10-04-queries-after-6.jsonl
@@ -0,0 +1,4 @@
+{"query": "per_branch", "rows": 10, "accounts": 100000, "pure_median_ms": 5.28, "pure_fastest_ms": 5.16, "sqlite_median_ms": 45.27, "sqlite_fastest_ms": 45.15, "sqlite_indexed_median_ms": 14.03, "sqlite_indexed_fastest_ms": 14.0}
+{"query": "in_credit", "rows": 1, "accounts": 100000, "pure_median_ms": 0.82, "pure_fastest_ms": 0.8, "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.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.76, "pure_fastest_ms": 6.67, "sqlite_median_ms": 2836.34, "sqlite_fastest_ms": 2832.81, "sqlite_indexed_median_ms": 7.55, "sqlite_indexed_fastest_ms": 7.5}
diff --git a/research/experiments/035-push/2026-10-04-queries-after-7.jsonl b/research/experiments/035-push/2026-10-04-queries-after-7.jsonl
new file mode 100644
index 0000000..bca43f8
--- /dev/null
+++ b/research/experiments/035-push/2026-10-04-queries-after-7.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": 45.28, "sqlite_fastest_ms": 45.1, "sqlite_indexed_median_ms": 14.21, "sqlite_indexed_fastest_ms": 14.04}
+{"query": "in_credit", "rows": 1, "accounts": 100000, "pure_median_ms": 0.87, "pure_fastest_ms": 0.81, "sqlite_median_ms": 5.89, "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.4, "pure_fastest_ms": 0.38, "sqlite_median_ms": 1.49, "sqlite_fastest_ms": 1.47, "sqlite_indexed_median_ms": 1.57, "sqlite_indexed_fastest_ms": 1.5}
+{"query": "ranks", "rows": 404, "accounts": 100000, "pure_median_ms": 6.81, "pure_fastest_ms": 6.75, "sqlite_median_ms": 2839.37, "sqlite_fastest_ms": 2835.54, "sqlite_indexed_median_ms": 7.65, "sqlite_indexed_fastest_ms": 7.52}
diff --git a/research/experiments/035-push/2026-10-04-queries-after-8.jsonl b/research/experiments/035-push/2026-10-04-queries-after-8.jsonl
new file mode 100644
index 0000000..27980e5
--- /dev/null
+++ b/research/experiments/035-push/2026-10-04-queries-after-8.jsonl
@@ -0,0 +1,4 @@
+{"query": "per_branch", "rows": 10, "accounts": 100000, "pure_median_ms": 6.67, "pure_fastest_ms": 5.23, "sqlite_median_ms": 47.86, "sqlite_fastest_ms": 47.57, "sqlite_indexed_median_ms": 14.23, "sqlite_indexed_fastest_ms": 14.18}
+{"query": "in_credit", "rows": 1, "accounts": 100000, "pure_median_ms": 0.83, "pure_fastest_ms": 0.81, "sqlite_median_ms": 6.83, "sqlite_fastest_ms": 6.74, "sqlite_indexed_median_ms": 0.18, "sqlite_indexed_fastest_ms": 0.18}
+{"query": "large", "rows": 212, "accounts": 100000, "pure_median_ms": 0.39, "pure_fastest_ms": 0.38, "sqlite_median_ms": 1.69, "sqlite_fastest_ms": 1.67, "sqlite_indexed_median_ms": 1.68, "sqlite_indexed_fastest_ms": 1.67}
+{"query": "ranks", "rows": 404, "accounts": 100000, "pure_median_ms": 6.83, "pure_fastest_ms": 6.78, "sqlite_median_ms": 3331.22, "sqlite_fastest_ms": 3327.33, "sqlite_indexed_median_ms": 8.63, "sqlite_indexed_fastest_ms": 8.56}
diff --git a/research/experiments/035-push/2026-10-04-queries-after-9.jsonl b/research/experiments/035-push/2026-10-04-queries-after-9.jsonl
new file mode 100644
index 0000000..ae029a2
--- /dev/null
+++ b/research/experiments/035-push/2026-10-04-queries-after-9.jsonl
@@ -0,0 +1,4 @@
+{"query": "per_branch", "rows": 10, "accounts": 100000, "pure_median_ms": 5.31, "pure_fastest_ms": 5.19, "sqlite_median_ms": 45.85, "sqlite_fastest_ms": 45.15, "sqlite_indexed_median_ms": 13.95, "sqlite_indexed_fastest_ms": 13.92}
+{"query": "in_credit", "rows": 1, "accounts": 100000, "pure_median_ms": 1.14, "pure_fastest_ms": 0.94, "sqlite_median_ms": 5.93, "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.38, "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.84, "pure_fastest_ms": 6.77, "sqlite_median_ms": 2833.07, "sqlite_fastest_ms": 2831.13, "sqlite_indexed_median_ms": 7.54, "sqlite_indexed_fastest_ms": 7.49}
diff --git a/research/experiments/035-push/2026-10-04-queries-before-1.jsonl b/research/experiments/035-push/2026-10-04-queries-before-1.jsonl
new file mode 100644
index 0000000..7aaf883
--- /dev/null
+++ b/research/experiments/035-push/2026-10-04-queries-before-1.jsonl
@@ -0,0 +1,4 @@
+{"query": "per_branch", "rows": 10, "accounts": 100000, "pure_median_ms": 5.26, "pure_fastest_ms": 5.18, "sqlite_median_ms": 45.08, "sqlite_fastest_ms": 44.79, "sqlite_indexed_median_ms": 14.05, "sqlite_indexed_fastest_ms": 14.02}
+{"query": "in_credit", "rows": 1, "accounts": 100000, "pure_median_ms": 0.85, "pure_fastest_ms": 0.82, "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.5, "sqlite_fastest_ms": 1.49, "sqlite_indexed_median_ms": 1.5, "sqlite_indexed_fastest_ms": 1.49}
+{"query": "ranks", "rows": 404, "accounts": 100000, "pure_median_ms": 6.78, "pure_fastest_ms": 6.71, "sqlite_median_ms": 2834.27, "sqlite_fastest_ms": 2829.64, "sqlite_indexed_median_ms": 7.56, "sqlite_indexed_fastest_ms": 7.51}
diff --git a/research/experiments/035-push/2026-10-04-queries-before-10.jsonl b/research/experiments/035-push/2026-10-04-queries-before-10.jsonl
new file mode 100644
index 0000000..131f8df
--- /dev/null
+++ b/research/experiments/035-push/2026-10-04-queries-before-10.jsonl
@@ -0,0 +1,4 @@
+{"query": "per_branch", "rows": 10, "accounts": 100000, "pure_median_ms": 5.28, "pure_fastest_ms": 5.18, "sqlite_median_ms": 45.29, "sqlite_fastest_ms": 45.14, "sqlite_indexed_median_ms": 14.08, "sqlite_indexed_fastest_ms": 14.04}
+{"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.87, "sqlite_indexed_median_ms": 0.16, "sqlite_indexed_fastest_ms": 0.16}
+{"query": "large", "rows": 212, "accounts": 100000, "pure_median_ms": 0.4, "pure_fastest_ms": 0.38, "sqlite_median_ms": 1.47, "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.74, "pure_fastest_ms": 6.67, "sqlite_median_ms": 2837.48, "sqlite_fastest_ms": 2827.98, "sqlite_indexed_median_ms": 7.57, "sqlite_indexed_fastest_ms": 7.5}
diff --git a/research/experiments/035-push/2026-10-04-queries-before-11.jsonl b/research/experiments/035-push/2026-10-04-queries-before-11.jsonl
new file mode 100644
index 0000000..4346850
--- /dev/null
+++ b/research/experiments/035-push/2026-10-04-queries-before-11.jsonl
@@ -0,0 +1,4 @@
+{"query": "per_branch", "rows": 10, "accounts": 100000, "pure_median_ms": 5.27, "pure_fastest_ms": 5.2, "sqlite_median_ms": 45.42, "sqlite_fastest_ms": 45.27, "sqlite_indexed_median_ms": 14.04, "sqlite_indexed_fastest_ms": 14.03}
+{"query": "in_credit", "rows": 1, "accounts": 100000, "pure_median_ms": 0.84, "pure_fastest_ms": 0.81, "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.39, "pure_fastest_ms": 0.38, "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.73, "pure_fastest_ms": 6.65, "sqlite_median_ms": 2836.02, "sqlite_fastest_ms": 2834.36, "sqlite_indexed_median_ms": 7.58, "sqlite_indexed_fastest_ms": 7.53}
diff --git a/research/experiments/035-push/2026-10-04-queries-before-12.jsonl b/research/experiments/035-push/2026-10-04-queries-before-12.jsonl
new file mode 100644
index 0000000..95e5512
--- /dev/null
+++ b/research/experiments/035-push/2026-10-04-queries-before-12.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.22, "sqlite_fastest_ms": 45.14, "sqlite_indexed_median_ms": 14.08, "sqlite_indexed_fastest_ms": 14.04}
+{"query": "in_credit", "rows": 1, "accounts": 100000, "pure_median_ms": 0.83, "pure_fastest_ms": 0.81, "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.39, "pure_fastest_ms": 0.38, "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.79, "pure_fastest_ms": 6.74, "sqlite_median_ms": 2834.98, "sqlite_fastest_ms": 2833.31, "sqlite_indexed_median_ms": 7.57, "sqlite_indexed_fastest_ms": 7.51}
diff --git a/research/experiments/035-push/2026-10-04-queries-before-2.jsonl b/research/experiments/035-push/2026-10-04-queries-before-2.jsonl
new file mode 100644
index 0000000..8594244
--- /dev/null
+++ b/research/experiments/035-push/2026-10-04-queries-before-2.jsonl
@@ -0,0 +1,4 @@
+{"query": "per_branch", "rows": 10, "accounts": 100000, "pure_median_ms": 5.23, "pure_fastest_ms": 5.18, "sqlite_median_ms": 45.25, "sqlite_fastest_ms": 45.13, "sqlite_indexed_median_ms": 14.04, "sqlite_indexed_fastest_ms": 14.02}
+{"query": "in_credit", "rows": 1, "accounts": 100000, "pure_median_ms": 0.83, "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.39, "pure_fastest_ms": 0.37, "sqlite_median_ms": 1.51, "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": 8.39, "pure_fastest_ms": 7.48, "sqlite_median_ms": 2831.03, "sqlite_fastest_ms": 2824.67, "sqlite_indexed_median_ms": 7.55, "sqlite_indexed_fastest_ms": 7.52}
diff --git a/research/experiments/035-push/2026-10-04-queries-before-3.jsonl b/research/experiments/035-push/2026-10-04-queries-before-3.jsonl
new file mode 100644
index 0000000..4af6cae
--- /dev/null
+++ b/research/experiments/035-push/2026-10-04-queries-before-3.jsonl
@@ -0,0 +1,4 @@
+{"query": "per_branch", "rows": 10, "accounts": 100000, "pure_median_ms": 5.2, "pure_fastest_ms": 5.15, "sqlite_median_ms": 45.28, "sqlite_fastest_ms": 45.11, "sqlite_indexed_median_ms": 14.06, "sqlite_indexed_fastest_ms": 14.03}
+{"query": "in_credit", "rows": 1, "accounts": 100000, "pure_median_ms": 0.85, "pure_fastest_ms": 0.81, "sqlite_median_ms": 5.87, "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.49, "sqlite_indexed_fastest_ms": 1.47}
+{"query": "ranks", "rows": 404, "accounts": 100000, "pure_median_ms": 6.73, "pure_fastest_ms": 6.68, "sqlite_median_ms": 2837.24, "sqlite_fastest_ms": 2832.97, "sqlite_indexed_median_ms": 7.54, "sqlite_indexed_fastest_ms": 7.51}
diff --git a/research/experiments/035-push/2026-10-04-queries-before-4.jsonl b/research/experiments/035-push/2026-10-04-queries-before-4.jsonl
new file mode 100644
index 0000000..3aa9c7f
--- /dev/null
+++ b/research/experiments/035-push/2026-10-04-queries-before-4.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": 45.38, "sqlite_fastest_ms": 45.2, "sqlite_indexed_median_ms": 14.02, "sqlite_indexed_fastest_ms": 13.97}
+{"query": "in_credit", "rows": 1, "accounts": 100000, "pure_median_ms": 0.82, "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.37, "pure_fastest_ms": 0.37, "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.74, "pure_fastest_ms": 6.7, "sqlite_median_ms": 2838.94, "sqlite_fastest_ms": 2834.99, "sqlite_indexed_median_ms": 7.55, "sqlite_indexed_fastest_ms": 7.49}
diff --git a/research/experiments/035-push/2026-10-04-queries-before-5.jsonl b/research/experiments/035-push/2026-10-04-queries-before-5.jsonl
new file mode 100644
index 0000000..b6c6f55
--- /dev/null
+++ b/research/experiments/035-push/2026-10-04-queries-before-5.jsonl
@@ -0,0 +1,4 @@
+{"query": "per_branch", "rows": 10, "accounts": 100000, "pure_median_ms": 5.27, "pure_fastest_ms": 5.17, "sqlite_median_ms": 44.88, "sqlite_fastest_ms": 44.76, "sqlite_indexed_median_ms": 14.09, "sqlite_indexed_fastest_ms": 14.03}
+{"query": "in_credit", "rows": 1, "accounts": 100000, "pure_median_ms": 0.8, "pure_fastest_ms": 0.79, "sqlite_median_ms": 5.91, "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.38, "sqlite_median_ms": 1.47, "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.73, "pure_fastest_ms": 6.7, "sqlite_median_ms": 2835.89, "sqlite_fastest_ms": 2832.44, "sqlite_indexed_median_ms": 7.56, "sqlite_indexed_fastest_ms": 7.49}
diff --git a/research/experiments/035-push/2026-10-04-queries-before-6.jsonl b/research/experiments/035-push/2026-10-04-queries-before-6.jsonl
new file mode 100644
index 0000000..84b7260
--- /dev/null
+++ b/research/experiments/035-push/2026-10-04-queries-before-6.jsonl
@@ -0,0 +1,4 @@
+{"query": "per_branch", "rows": 10, "accounts": 100000, "pure_median_ms": 5.36, "pure_fastest_ms": 5.24, "sqlite_median_ms": 45.22, "sqlite_fastest_ms": 45.06, "sqlite_indexed_median_ms": 13.98, "sqlite_indexed_fastest_ms": 13.92}
+{"query": "in_credit", "rows": 1, "accounts": 100000, "pure_median_ms": 0.84, "pure_fastest_ms": 0.8, "sqlite_median_ms": 5.93, "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.38, "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.72, "pure_fastest_ms": 6.66, "sqlite_median_ms": 2835.45, "sqlite_fastest_ms": 2832.11, "sqlite_indexed_median_ms": 7.54, "sqlite_indexed_fastest_ms": 7.5}
diff --git a/research/experiments/035-push/2026-10-04-queries-before-7.jsonl b/research/experiments/035-push/2026-10-04-queries-before-7.jsonl
new file mode 100644
index 0000000..2a27a4e
--- /dev/null
+++ b/research/experiments/035-push/2026-10-04-queries-before-7.jsonl
@@ -0,0 +1,4 @@
+{"query": "per_branch", "rows": 10, "accounts": 100000, "pure_median_ms": 5.24, "pure_fastest_ms": 5.15, "sqlite_median_ms": 44.99, "sqlite_fastest_ms": 44.85, "sqlite_indexed_median_ms": 14.02, "sqlite_indexed_fastest_ms": 14.0}
+{"query": "in_credit", "rows": 1, "accounts": 100000, "pure_median_ms": 0.87, "pure_fastest_ms": 0.82, "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.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.67, "pure_fastest_ms": 6.56, "sqlite_median_ms": 2832.83, "sqlite_fastest_ms": 2825.13, "sqlite_indexed_median_ms": 7.61, "sqlite_indexed_fastest_ms": 7.52}
diff --git a/research/experiments/035-push/2026-10-04-queries-before-8.jsonl b/research/experiments/035-push/2026-10-04-queries-before-8.jsonl
new file mode 100644
index 0000000..15752fe
--- /dev/null
+++ b/research/experiments/035-push/2026-10-04-queries-before-8.jsonl
@@ -0,0 +1,4 @@
+{"query": "per_branch", "rows": 10, "accounts": 100000, "pure_median_ms": 5.25, "pure_fastest_ms": 5.17, "sqlite_median_ms": 45.03, "sqlite_fastest_ms": 44.86, "sqlite_indexed_median_ms": 14.02, "sqlite_indexed_fastest_ms": 13.97}
+{"query": "in_credit", "rows": 1, "accounts": 100000, "pure_median_ms": 0.8, "pure_fastest_ms": 0.78, "sqlite_median_ms": 5.87, "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.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.73, "pure_fastest_ms": 6.67, "sqlite_median_ms": 2835.51, "sqlite_fastest_ms": 2831.42, "sqlite_indexed_median_ms": 7.56, "sqlite_indexed_fastest_ms": 7.49}
diff --git a/research/experiments/035-push/2026-10-04-queries-before-9.jsonl b/research/experiments/035-push/2026-10-04-queries-before-9.jsonl
new file mode 100644
index 0000000..366c7a3
--- /dev/null
+++ b/research/experiments/035-push/2026-10-04-queries-before-9.jsonl
@@ -0,0 +1,4 @@
+{"query": "per_branch", "rows": 10, "accounts": 100000, "pure_median_ms": 5.27, "pure_fastest_ms": 5.2, "sqlite_median_ms": 45.33, "sqlite_fastest_ms": 45.16, "sqlite_indexed_median_ms": 14.08, "sqlite_indexed_fastest_ms": 14.01}
+{"query": "in_credit", "rows": 1, "accounts": 100000, "pure_median_ms": 0.84, "pure_fastest_ms": 0.81, "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.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.71, "pure_fastest_ms": 6.65, "sqlite_median_ms": 2836.44, "sqlite_fastest_ms": 2834.17, "sqlite_indexed_median_ms": 7.56, "sqlite_indexed_fastest_ms": 7.51}
diff --git a/research/experiments/035-push/2026-10-04-tpcc-after-1.jsonl b/research/experiments/035-push/2026-10-04-tpcc-after-1.jsonl
new file mode 100644
index 0000000..5899ff0
--- /dev/null
+++ b/research/experiments/035-push/2026-10-04-tpcc-after-1.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.56, "sqlite_page_size": 4096, "pure_resident_mib": 38.4, "sqlite_file_mib": 13.8}
+{"step": "run", "system": "pure", "warehouses": 1, "terminals": 64, "transactions_per_second": 43328, "new_orders_per_minute": 1159284, "undone_new_orders": 3697, "errors": 0, "new_order": {"done": 390128, "failed": 0, "p50_us": 1472, "p99_us": 3456}, "payment": {"done": 372418, "failed": 0, "p50_us": 1472, "p99_us": 3328}, "order_status": {"done": 34753, "failed": 0, "p50_us": 256, "p99_us": 1088}, "delivery": {"done": 34741, "failed": 0, "p50_us": 1472, "p99_us": 3328}, "stock_level": {"done": 34517, "failed": 0, "p50_us": 288, "p99_us": 1152}, "server_threads": "3", "cpu_us_per_transaction": 43.7, "core_shares": {"pure-owner": 0.91, "pure-checkpoint": 0.01}, "resident_mib": 453.2, "written_bytes_per_transaction": 0.0, "device_bytes_per_transaction": null, "consistency_failures": []}
+{"step": "end", "pure_resident_mib": 453.2, "pure_state_mib": 231.0, "pure_store_mib": 238.7, "sqlite_files_mib": 13.8, "grouped_sqlite_files_mib": 0.0, "pure_counts": {"bursts": 26156, "burst_events": 793675, "checkpoints": 38}}
diff --git a/research/experiments/035-push/2026-10-04-tpcc-after-2.jsonl b/research/experiments/035-push/2026-10-04-tpcc-after-2.jsonl
new file mode 100644
index 0000000..2ee652d
--- /dev/null
+++ b/research/experiments/035-push/2026-10-04-tpcc-after-2.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": 38.3, "sqlite_file_mib": 13.8}
+{"step": "run", "system": "pure", "warehouses": 1, "terminals": 64, "transactions_per_second": 42684, "new_orders_per_minute": 1141854, "undone_new_orders": 3643, "errors": 0, "new_order": {"done": 384292, "failed": 0, "p50_us": 1536, "p99_us": 3584}, "payment": {"done": 367011, "failed": 0, "p50_us": 1472, "p99_us": 3584}, "order_status": {"done": 34267, "failed": 0, "p50_us": 256, "p99_us": 1088}, "delivery": {"done": 34181, "failed": 0, "p50_us": 1472, "p99_us": 3584}, "stock_level": {"done": 34005, "failed": 0, "p50_us": 288, "p99_us": 1152}, "server_threads": "3", "cpu_us_per_transaction": 44.5, "core_shares": {"pure-owner": 0.9, "pure-checkpoint": 0.01}, "resident_mib": 447.5, "written_bytes_per_transaction": 0.0, "device_bytes_per_transaction": null, "consistency_failures": []}
+{"step": "end", "pure_resident_mib": 447.5, "pure_state_mib": 227.9, "pure_store_mib": 238.7, "sqlite_files_mib": 13.8, "grouped_sqlite_files_mib": 0.0, "pure_counts": {"bursts": 25541, "burst_events": 781926, "checkpoints": 38}}
diff --git a/research/experiments/035-push/2026-10-04-tpcc-after-3.jsonl b/research/experiments/035-push/2026-10-04-tpcc-after-3.jsonl
new file mode 100644
index 0000000..b194c7e
--- /dev/null
+++ b/research/experiments/035-push/2026-10-04-tpcc-after-3.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.4, "sqlite_file_mib": 13.8}
+{"step": "run", "system": "pure", "warehouses": 1, "terminals": 64, "transactions_per_second": 42674, "new_orders_per_minute": 1141634, "undone_new_orders": 3646, "errors": 0, "new_order": {"done": 384192, "failed": 0, "p50_us": 1536, "p99_us": 3584}, "payment": {"done": 366824, "failed": 0, "p50_us": 1472, "p99_us": 3584}, "order_status": {"done": 34237, "failed": 0, "p50_us": 256, "p99_us": 1216}, "delivery": {"done": 34210, "failed": 0, "p50_us": 1472, "p99_us": 3584}, "stock_level": {"done": 34017, "failed": 0, "p50_us": 288, "p99_us": 1344}, "server_threads": "3", "cpu_us_per_transaction": 44.8, "core_shares": {"pure-owner": 0.91, "pure-checkpoint": 0.01}, "resident_mib": 447.1, "written_bytes_per_transaction": 0.0, "device_bytes_per_transaction": null, "consistency_failures": []}
+{"step": "end", "pure_resident_mib": 447.1, "pure_state_mib": 227.8, "pure_store_mib": 230.7, "sqlite_files_mib": 13.8, "grouped_sqlite_files_mib": 0.0, "pure_counts": {"bursts": 25781, "burst_events": 781665, "checkpoints": 38}}
diff --git a/research/experiments/035-push/2026-10-04-tpcc-after-4.jsonl b/research/experiments/035-push/2026-10-04-tpcc-after-4.jsonl
new file mode 100644
index 0000000..51b96d5
--- /dev/null
+++ b/research/experiments/035-push/2026-10-04-tpcc-after-4.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.56, "sqlite_page_size": 4096, "pure_resident_mib": 38.3, "sqlite_file_mib": 13.8}
+{"step": "run", "system": "pure", "warehouses": 1, "terminals": 64, "transactions_per_second": 42146, "new_orders_per_minute": 1127708, "undone_new_orders": 3594, "errors": 0, "new_order": {"done": 379497, "failed": 0, "p50_us": 1536, "p99_us": 3840}, "payment": {"done": 362238, "failed": 0, "p50_us": 1472, "p99_us": 3840}, "order_status": {"done": 33860, "failed": 0, "p50_us": 256, "p99_us": 1216}, "delivery": {"done": 33756, "failed": 0, "p50_us": 1472, "p99_us": 3840}, "stock_level": {"done": 33565, "failed": 0, "p50_us": 288, "p99_us": 1280}, "server_threads": "3", "cpu_us_per_transaction": 44.5, "core_shares": {"pure-owner": 0.9, "pure-checkpoint": 0.01}, "resident_mib": 443.4, "written_bytes_per_transaction": 0.0, "device_bytes_per_transaction": null, "consistency_failures": []}
+{"step": "end", "pure_resident_mib": 443.4, "pure_state_mib": 225.3, "pure_store_mib": 230.7, "sqlite_files_mib": 13.8, "grouped_sqlite_files_mib": 0.0, "pure_counts": {"bursts": 25353, "burst_events": 771983, "checkpoints": 38}}
diff --git a/research/experiments/035-push/2026-10-04-tpcc-after-5.jsonl b/research/experiments/035-push/2026-10-04-tpcc-after-5.jsonl
new file mode 100644
index 0000000..20de47f
--- /dev/null
+++ b/research/experiments/035-push/2026-10-04-tpcc-after-5.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.59, "sqlite_page_size": 4096, "pure_resident_mib": 38.3, "sqlite_file_mib": 13.8}
+{"step": "run", "system": "pure", "warehouses": 1, "terminals": 64, "transactions_per_second": 42707, "new_orders_per_minute": 1142603, "undone_new_orders": 3645, "errors": 0, "new_order": {"done": 384513, "failed": 0, "p50_us": 1536, "p99_us": 3456}, "payment": {"done": 367089, "failed": 0, "p50_us": 1472, "p99_us": 3328}, "order_status": {"done": 34264, "failed": 0, "p50_us": 256, "p99_us": 1152}, "delivery": {"done": 34237, "failed": 0, "p50_us": 1472, "p99_us": 3328}, "stock_level": {"done": 34031, "failed": 0, "p50_us": 288, "p99_us": 1216}, "server_threads": "3", "cpu_us_per_transaction": 44.8, "core_shares": {"pure-owner": 0.9, "pure-checkpoint": 0.01}, "resident_mib": 447.9, "written_bytes_per_transaction": 0.0, "device_bytes_per_transaction": null, "consistency_failures": []}
+{"step": "end", "pure_resident_mib": 447.9, "pure_state_mib": 228.0, "pure_store_mib": 238.7, "sqlite_files_mib": 13.8, "grouped_sqlite_files_mib": 0.0, "pure_counts": {"bursts": 25847, "burst_events": 782278, "checkpoints": 38}}
diff --git a/research/experiments/035-push/2026-10-04-tpcc-after-6.jsonl b/research/experiments/035-push/2026-10-04-tpcc-after-6.jsonl
new file mode 100644
index 0000000..682b35f
--- /dev/null
+++ b/research/experiments/035-push/2026-10-04-tpcc-after-6.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.55, "sqlite_page_size": 4096, "pure_resident_mib": 39.1, "sqlite_file_mib": 13.8}
+{"step": "run", "system": "pure", "warehouses": 1, "terminals": 64, "transactions_per_second": 42303, "new_orders_per_minute": 1131722, "undone_new_orders": 3607, "errors": 0, "new_order": {"done": 380849, "failed": 0, "p50_us": 1536, "p99_us": 3712}, "payment": {"done": 363657, "failed": 0, "p50_us": 1472, "p99_us": 3712}, "order_status": {"done": 33979, "failed": 0, "p50_us": 256, "p99_us": 1216}, "delivery": {"done": 33883, "failed": 0, "p50_us": 1472, "p99_us": 3840}, "stock_level": {"done": 33692, "failed": 0, "p50_us": 288, "p99_us": 1344}, "server_threads": "3", "cpu_us_per_transaction": 44.5, "core_shares": {"pure-owner": 0.9, "pure-checkpoint": 0.01}, "resident_mib": 444.8, "written_bytes_per_transaction": 0.0, "device_bytes_per_transaction": null, "consistency_failures": []}
+{"step": "end", "pure_resident_mib": 444.8, "pure_state_mib": 226.0, "pure_store_mib": 230.7, "sqlite_files_mib": 13.8, "grouped_sqlite_files_mib": 0.0, "pure_counts": {"bursts": 25762, "burst_events": 774860, "checkpoints": 38}}
diff --git a/research/experiments/035-push/2026-10-04-tpcc-before-1.jsonl b/research/experiments/035-push/2026-10-04-tpcc-before-1.jsonl
new file mode 100644
index 0000000..f7035b7
--- /dev/null
+++ b/research/experiments/035-push/2026-10-04-tpcc-before-1.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.56, "sqlite_page_size": 4096, "pure_resident_mib": 38.3, "sqlite_file_mib": 13.8}
+{"step": "run", "system": "pure", "warehouses": 1, "terminals": 64, "transactions_per_second": 42852, "new_orders_per_minute": 1146481, "undone_new_orders": 3659, "errors": 0, "new_order": {"done": 385820, "failed": 0, "p50_us": 1536, "p99_us": 3456}, "payment": {"done": 368350, "failed": 0, "p50_us": 1472, "p99_us": 3456}, "order_status": {"done": 34393, "failed": 0, "p50_us": 256, "p99_us": 1088}, "delivery": {"done": 34322, "failed": 0, "p50_us": 1472, "p99_us": 3328}, "stock_level": {"done": 34150, "failed": 0, "p50_us": 288, "p99_us": 1216}, "server_threads": "3", "cpu_us_per_transaction": 43.8, "core_shares": {"pure-owner": 0.91, "pure-checkpoint": 0.01}, "resident_mib": 449.2, "written_bytes_per_transaction": 0.0, "device_bytes_per_transaction": null, "consistency_failures": []}
+{"step": "end", "pure_resident_mib": 449.2, "pure_state_mib": 228.7, "pure_store_mib": 238.7, "sqlite_files_mib": 13.8, "grouped_sqlite_files_mib": 0.0, "pure_counts": {"bursts": 25811, "burst_events": 784920, "checkpoints": 38}}
diff --git a/research/experiments/035-push/2026-10-04-tpcc-before-2.jsonl b/research/experiments/035-push/2026-10-04-tpcc-before-2.jsonl
new file mode 100644
index 0000000..708403a
--- /dev/null
+++ b/research/experiments/035-push/2026-10-04-tpcc-before-2.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.59, "sqlite_page_size": 4096, "pure_resident_mib": 38.3, "sqlite_file_mib": 13.8}
+{"step": "run", "system": "pure", "warehouses": 1, "terminals": 64, "transactions_per_second": 42502, "new_orders_per_minute": 1136994, "undone_new_orders": 3626, "errors": 0, "new_order": {"done": 382624, "failed": 0, "p50_us": 1536, "p99_us": 3456}, "payment": {"done": 365345, "failed": 0, "p50_us": 1472, "p99_us": 3456}, "order_status": {"done": 34136, "failed": 0, "p50_us": 256, "p99_us": 1216}, "delivery": {"done": 34060, "failed": 0, "p50_us": 1472, "p99_us": 3456}, "stock_level": {"done": 33868, "failed": 0, "p50_us": 288, "p99_us": 1216}, "server_threads": "3", "cpu_us_per_transaction": 44.9, "core_shares": {"pure-owner": 0.9, "pure-checkpoint": 0.01}, "resident_mib": 446.2, "written_bytes_per_transaction": 0.0, "device_bytes_per_transaction": null, "consistency_failures": []}
+{"step": "end", "pure_resident_mib": 446.2, "pure_state_mib": 227.0, "pure_store_mib": 230.7, "sqlite_files_mib": 13.8, "grouped_sqlite_files_mib": 0.0, "pure_counts": {"bursts": 25478, "burst_events": 778489, "checkpoints": 38}}
diff --git a/research/experiments/035-push/2026-10-04-tpcc-before-3.jsonl b/research/experiments/035-push/2026-10-04-tpcc-before-3.jsonl
new file mode 100644
index 0000000..cb0a745
--- /dev/null
+++ b/research/experiments/035-push/2026-10-04-tpcc-before-3.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.56, "sqlite_page_size": 4096, "pure_resident_mib": 38.3, "sqlite_file_mib": 13.8}
+{"step": "run", "system": "pure", "warehouses": 1, "terminals": 64, "transactions_per_second": 42898, "new_orders_per_minute": 1147897, "undone_new_orders": 3652, "errors": 0, "new_order": {"done": 386285, "failed": 0, "p50_us": 1536, "p99_us": 3456}, "payment": {"done": 368716, "failed": 0, "p50_us": 1472, "p99_us": 3456}, "order_status": {"done": 34422, "failed": 0, "p50_us": 256, "p99_us": 1088}, "delivery": {"done": 34365, "failed": 0, "p50_us": 1472, "p99_us": 3456}, "stock_level": {"done": 34182, "failed": 0, "p50_us": 288, "p99_us": 1216}, "server_threads": "3", "cpu_us_per_transaction": 44.8, "core_shares": {"pure-owner": 0.91, "pure-checkpoint": 0.01}, "resident_mib": 449.4, "written_bytes_per_transaction": 0.0, "device_bytes_per_transaction": null, "consistency_failures": []}
+{"step": "end", "pure_resident_mib": 449.4, "pure_state_mib": 228.9, "pure_store_mib": 238.7, "sqlite_files_mib": 13.8, "grouped_sqlite_files_mib": 0.0, "pure_counts": {"bursts": 25989, "burst_events": 785795, "checkpoints": 38}}
diff --git a/research/experiments/035-push/2026-10-04-tpcc-before-4.jsonl b/research/experiments/035-push/2026-10-04-tpcc-before-4.jsonl
new file mode 100644
index 0000000..cab419c
--- /dev/null
+++ b/research/experiments/035-push/2026-10-04-tpcc-before-4.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.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": 42219, "new_orders_per_minute": 1129676, "undone_new_orders": 3602, "errors": 0, "new_order": {"done": 380164, "failed": 0, "p50_us": 1536, "p99_us": 3712}, "payment": {"done": 362870, "failed": 0, "p50_us": 1472, "p99_us": 3584}, "order_status": {"done": 33910, "failed": 0, "p50_us": 256, "p99_us": 1216}, "delivery": {"done": 33814, "failed": 0, "p50_us": 1472, "p99_us": 3584}, "stock_level": {"done": 33638, "failed": 0, "p50_us": 288, "p99_us": 1344}, "server_threads": "3", "cpu_us_per_transaction": 45.2, "core_shares": {"pure-owner": 0.9, "pure-checkpoint": 0.01}, "resident_mib": 444.7, "written_bytes_per_transaction": 0.0, "device_bytes_per_transaction": null, "consistency_failures": []}
+{"step": "end", "pure_resident_mib": 444.7, "pure_state_mib": 225.6, "pure_store_mib": 230.7, "sqlite_files_mib": 13.8, "grouped_sqlite_files_mib": 0.0, "pure_counts": {"bursts": 25716, "burst_events": 773330, "checkpoints": 38}}
diff --git a/research/experiments/035-push/2026-10-04-tpcc-before-5.jsonl b/research/experiments/035-push/2026-10-04-tpcc-before-5.jsonl
new file mode 100644
index 0000000..8f7bb33
--- /dev/null
+++ b/research/experiments/035-push/2026-10-04-tpcc-before-5.jsonl
@@ -0,0 +1,3 @@
+{"step": "load", "directory": "/dev/shm", "warehouses": 1, "rows": 568758, "generate_s": 0.56, "pure_load_s": 0.75, "sqlite_load_s": 1.59, "sqlite_page_size": 4096, "pure_resident_mib": 38.3, "sqlite_file_mib": 13.8}
+{"step": "run", "system": "pure", "warehouses": 1, "terminals": 64, "transactions_per_second": 42339, "new_orders_per_minute": 1132819, "undone_new_orders": 3605, "errors": 0, "new_order": {"done": 381212, "failed": 0, "p50_us": 1536, "p99_us": 3712}, "payment": {"done": 363969, "failed": 0, "p50_us": 1472, "p99_us": 3584}, "order_status": {"done": 33992, "failed": 0, "p50_us": 256, "p99_us": 1216}, "delivery": {"done": 33915, "failed": 0, "p50_us": 1472, "p99_us": 3712}, "stock_level": {"done": 33699, "failed": 0, "p50_us": 288, "p99_us": 1280}, "server_threads": "3", "cpu_us_per_transaction": 44.9, "core_shares": {"pure-owner": 0.9, "pure-checkpoint": 0.01}, "resident_mib": 444.8, "written_bytes_per_transaction": 0.0, "device_bytes_per_transaction": null, "consistency_failures": []}
+{"step": "end", "pure_resident_mib": 444.8, "pure_state_mib": 226.2, "pure_store_mib": 230.7, "sqlite_files_mib": 13.8, "grouped_sqlite_files_mib": 0.0, "pure_counts": {"bursts": 25586, "burst_events": 775558, "checkpoints": 38}}
diff --git a/research/experiments/035-push/2026-10-04-tpcc-before-6.jsonl b/research/experiments/035-push/2026-10-04-tpcc-before-6.jsonl
new file mode 100644
index 0000000..ca2bd1a
--- /dev/null
+++ b/research/experiments/035-push/2026-10-04-tpcc-before-6.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.3, "sqlite_file_mib": 13.8}
+{"step": "run", "system": "pure", "warehouses": 1, "terminals": 64, "transactions_per_second": 42581, "new_orders_per_minute": 1139418, "undone_new_orders": 3638, "errors": 0, "new_order": {"done": 383447, "failed": 0, "p50_us": 1536, "p99_us": 3456}, "payment": {"done": 366000, "failed": 0, "p50_us": 1472, "p99_us": 3456}, "order_status": {"done": 34179, "failed": 0, "p50_us": 256, "p99_us": 1216}, "delivery": {"done": 34115, "failed": 0, "p50_us": 1472, "p99_us": 3456}, "stock_level": {"done": 33885, "failed": 0, "p50_us": 288, "p99_us": 1280}, "server_threads": "3", "cpu_us_per_transaction": 44.7, "core_shares": {"pure-owner": 0.91, "pure-checkpoint": 0.01}, "resident_mib": 446.8, "written_bytes_per_transaction": 0.0, "device_bytes_per_transaction": null, "consistency_failures": []}
+{"step": "end", "pure_resident_mib": 446.8, "pure_state_mib": 227.4, "pure_store_mib": 230.7, "sqlite_files_mib": 13.8, "grouped_sqlite_files_mib": 0.0, "pure_counts": {"bursts": 25845, "burst_events": 780009, "checkpoints": 38}}
diff --git a/research/experiments/035-push/counter.aup b/research/experiments/035-push/counter.aup
new file mode 100644
index 0000000..8f70af9
--- /dev/null
+++ b/research/experiments/035-push/counter.aup
@@ -0,0 +1,8 @@
+# The counter of research 120 (docs/design/019): a view many clients follow,
+# moved by one writer.
+state count = 0
+input tap = text
+on tap {
+ count = count + 1
+}
+view total = count
diff --git a/research/experiments/035-push/pairs.py b/research/experiments/035-push/pairs.py
new file mode 100644
index 0000000..cc49772
--- /dev/null
+++ b/research/experiments/035-push/pairs.py
@@ -0,0 +1,45 @@
+#!/usr/bin/env python3
+"""The pairs of runs.sh pairs as a table (research 120): each round's TPC-C
+(transactions a second, CPU a transaction, the owner's core share) before
+and after, the medians and the bank queries' median times.
+
+pairs.py DATE from DATE-tpcc-*.jsonl and DATE-queries-*.jsonl beside it
+"""
+import json
+import statistics
+import sys
+from pathlib import Path
+
+HERE = Path(__file__).resolve().parent
+day = sys.argv[1]
+
+
+def tpcc(version, round_):
+ for line in (HERE / f'{day}-tpcc-{version}-{round_}.jsonl').read_text().splitlines():
+ r = json.loads(line)
+ if r.get('step') == 'run' and r.get('system') == 'pure':
+ owner = max((share for name, share in r['core_shares'].items() if 'owner' in name), default=None) \
+ if isinstance(r['core_shares'], dict) else None
+ return r['transactions_per_second'], r['cpu_us_per_transaction'], owner
+
+
+def queries(version, round_):
+ return {r['query']: r['pure_median_ms'] for r in map(json.loads, (HERE / f'{day}-queries-{version}-{round_}.jsonl')
+ .read_text().splitlines()) if 'query' in r}
+
+
+rounds = sorted({int(p.stem.rsplit('-', 1)[1]) for p in HERE.glob(f'{day}-tpcc-before-*.jsonl')})
+rows = {'before': [], 'after': []}
+for round_ in rounds:
+ b, a = tpcc('before', round_), tpcc('after', round_)
+ rows['before'].append(b), rows['after'].append(a)
+ print(json.dumps({'round': round_, 'tps': [b[0], a[0]], 'change': round((a[0] / b[0] - 1) * 100, 1),
+ 'cpu_us': [b[1], a[1]], 'owner_share': [b[2], a[2]]}))
+med = {v: statistics.median(t for t, _, _ in rows[v]) for v in rows}
+cpu = {v: statistics.median(c for _, c, _ in rows[v]) for v in rows}
+names = queries('before', rounds[0]).keys()
+q = {v: {n: statistics.median(queries(v, r)[n] for r in rounds) for n in names} for v in rows}
+print(json.dumps({'tps_median': [med['before'], med['after']], 'change': round((med['after'] / med['before'] - 1) * 100, 1),
+ 'cpu_us_median': [cpu['before'], cpu['after']],
+ 'queries_median_ms': {n: [q['before'][n], q['after'][n],
+ round((q['after'][n] / q['before'][n] - 1) * 100, 1)] for n in names}}))
diff --git a/research/experiments/035-push/push.py b/research/experiments/035-push/push.py
new file mode 100755
index 0000000..28334dd
--- /dev/null
+++ b/research/experiments/035-push/push.py
@@ -0,0 +1,75 @@
+#!/usr/bin/env python3
+"""Pushing a view against polling it (docs/design/019, research 120).
+pure-serve (connection threads THREADS, store in RAM, cores 0-2) holds
+counter.aup; benchmarks/http/watch (core 3) has CLIENTS clients follow its
+total view, by push (SSE) or by polling every MS, while one writer moves it
+RATE times a second for SECONDS. Each run says the freshness (from the
+writer's answer to a client seeing that value or a newer one), what the
+host's process used of the CPU meanwhile (/proc/PID/stat), and its RSS
+with the clients on less without them.
+
+push.py PURE_SERVE AUP THREADS SECONDS RUNS... RUNS: CLIENTS:RATE:push or CLIENTS:RATE:poll:MS, in turn ROUNDS times
+"""
+import json
+import os
+import shutil
+import statistics
+import subprocess
+import sys
+import tempfile
+import time
+from pathlib import Path
+
+HERE = Path(__file__).resolve().parent
+WATCH = HERE.parents[2] / 'benchmarks' / 'http' / 'watch'
+TICK = os.sysconf('SC_CLK_TCK')
+
+
+def cpu(pid):
+ fields = Path(f'/proc/{pid}/stat').read_text().rsplit(')', 1)[1].split()
+ return (int(fields[11]) + int(fields[12])) / TICK # utime, stime
+
+
+def rss(pid):
+ return next(int(line.split()[1]) for line in Path(f'/proc/{pid}/status').read_text().splitlines()
+ if line.startswith('VmRSS'))
+
+
+def main():
+ serve, aup, threads, seconds = Path(sys.argv[1]).resolve(), Path(sys.argv[2]).resolve(), sys.argv[3], sys.argv[4]
+ runs = sys.argv[5:]
+ work = Path(tempfile.mkdtemp(prefix='pure-035-', dir='/dev/shm'))
+ try:
+ subprocess.run([str(aup), 'build', str(HERE / 'counter.aup'), '-o', str(work / 'counter.pmod')], check=True)
+ for run in runs:
+ clients, rate, way = run.split(':', 2)
+ host = subprocess.Popen(['taskset', '-c', '0-2', str(serve), '--module', str(work / 'counter.pmod'), '--store',
+ str(work / f'store-{run.replace(":", "-")}'), '--port', '0', '--threads', threads,
+ '--connections', '32768', '--subscribers', '65536'],
+ stdout=subprocess.PIPE, stderr=subprocess.PIPE)
+ port = json.loads(host.stdout.readline())['port']
+ time.sleep(0.3)
+ idle = rss(host.pid)
+ watcher = subprocess.Popen(['taskset', '-c', '3', str(WATCH), str(port), clients, seconds, rate, way,
+ '/views/total', '/inputs/tap'], stdout=subprocess.PIPE, text=True)
+ time.sleep(2.0 + int(clients) / 5000) # every client on, its first value had
+ followed_rss, began = rss(host.pid), cpu(host.pid)
+ started = time.monotonic()
+ out, _ = watcher.communicate(timeout=600)
+ used = cpu(host.pid) - began
+ took = time.monotonic() - started
+ host.terminate()
+ _, err = host.communicate(timeout=60)
+ stats = json.loads(err.decode().strip().splitlines()[-1])
+ result = json.loads(out)
+ result.update({'host_cpu_seconds': round(used, 2), 'host_cpu_share': round(used / took, 3),
+ 'rss_kib_per_client': round((followed_rss - idle) / int(clients), 2),
+ 'pushes': stats['pushes'], 'pushed': stats['pushed'], 'replaced': stats['push_replaced'],
+ 'requests': stats['requests']})
+ print(json.dumps(result), flush=True)
+ finally:
+ shutil.rmtree(work)
+
+
+if __name__ == '__main__':
+ main()
diff --git a/research/experiments/035-push/runs.sh b/research/experiments/035-push/runs.sh
new file mode 100755
index 0000000..11993a5
--- /dev/null
+++ b/research/experiments/035-push/runs.sh
@@ -0,0 +1,50 @@
+#!/bin/sh
+# The runs of research 120 (docs/design/019), from the repository's root,
+# in steps, each under research/guard.py:
+# runs.sh fresh ROUND 1,000 clients follow the counter by push and by
+# polling, at 1, 10 and 100 writes a second (the
+# order turned in even rounds), 10 s each
+# runs.sh many ROUND 10,000 subscribers, a write a second
+# runs.sh build NAME COMMIT, pairs FIRST LAST, counts as 033's: the
+# host before (84483fe) and after (a7de450)
+set -e
+out=research/experiments/035-push
+builds=$HOME/.cache/pure-035
+day=$(date +%F)
+case "$1" in
+fresh)
+ runs="1000:1:push 1000:1:poll:100 1000:10:push 1000:10:poll:20 1000:100:push 1000:100:poll:20"
+ if [ $(($2 % 2)) = 0 ]; then runs=$(echo $runs | tr ' ' '\n' | tac | tr '\n' ' '); fi
+ until awk '{ exit !($1 < 1.5) }' /proc/loadavg; do sleep 10; done
+ python3 research/guard.py --most 2048 -- python3 $out/push.py build/pure-serve ../aup/build/aup 3 10 $runs \
+ > "$out/$day-fresh-$2.jsonl" ;;
+many)
+ until awk '{ exit !($1 < 1.5) }' /proc/loadavg; do sleep 10; done
+ python3 research/guard.py --most 3072 -- python3 $out/push.py build/pure-serve ../aup/build/aup 3 10 10000:1:push \
+ > "$out/$day-many-$2.jsonl" ;;
+build)
+ rm -rf "$builds/src-$2"
+ git worktree add -f -q --detach "$builds/src-$2" "$3"
+ make -s -C "$builds/src-$2" build/pure-serve build/pure-crypto.so
+ mkdir -p "$builds/$2"
+ cp "$builds/src-$2/build/pure-serve" "$builds/src-$2/build/pure-crypto.so" "$builds/$2/"
+ git worktree remove --force "$builds/src-$2" ;;
+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
+ until awk '{ exit !($1 < 1.5) }' /proc/loadavg; do sleep 10; done
+ echo "$round $version $(uptime)" >> "$out/$day-load.txt"
+ python3 research/guard.py -- python3 benchmarks/tpcc/run.py --serve "$builds/$version/pure-serve" --warehouses 1 \
+ --check 0 --terminals 64 --sqlite-threads '' --sqlite-group '' --seconds 20 \
+ > "$out/$day-tpcc-$version-$round.jsonl"
+ python3 research/guard.py -- python3 benchmarks/bank/queries.py --serve "$builds/$version/pure-serve" \
+ > "$out/$day-queries-$version-$round.jsonl"
+ done
+ done ;;
+counts)
+ python3 research/guard.py -- python3 research/experiments/025-i64-cost/count.py "$builds/before/pure-serve" \
+ "$builds/after/pure-serve" "$builds/before/pure-serve" "$builds/after/pure-serve" > "$out/$day-counts.jsonl" ;;
+*) echo "runs.sh fresh ROUND | many ROUND | build NAME COMMIT | pairs FIRST LAST | counts" >&2; exit 2 ;;
+esac