aboutsummaryrefslogtreecommitdiffstats
path: root/research
diff options
context:
space:
mode:
Diffstat (limited to 'research')
-rw-r--r--research/experiments/033-computing/2026-10-04-bfs-100000-1000000.jsonl16
-rw-r--r--research/experiments/033-computing/2026-10-04-counts.jsonl4
-rw-r--r--research/experiments/033-computing/2026-10-04-load.txt12
-rw-r--r--research/experiments/033-computing/2026-10-04-pi.jsonl46
-rw-r--r--research/experiments/033-computing/2026-10-04-queries-after-1.jsonl4
-rw-r--r--research/experiments/033-computing/2026-10-04-queries-after-2.jsonl4
-rw-r--r--research/experiments/033-computing/2026-10-04-queries-after-3.jsonl4
-rw-r--r--research/experiments/033-computing/2026-10-04-queries-after-4.jsonl4
-rw-r--r--research/experiments/033-computing/2026-10-04-queries-after-5.jsonl4
-rw-r--r--research/experiments/033-computing/2026-10-04-queries-after-6.jsonl4
-rw-r--r--research/experiments/033-computing/2026-10-04-queries-before-1.jsonl4
-rw-r--r--research/experiments/033-computing/2026-10-04-queries-before-2.jsonl4
-rw-r--r--research/experiments/033-computing/2026-10-04-queries-before-3.jsonl4
-rw-r--r--research/experiments/033-computing/2026-10-04-queries-before-4.jsonl4
-rw-r--r--research/experiments/033-computing/2026-10-04-queries-before-5.jsonl4
-rw-r--r--research/experiments/033-computing/2026-10-04-queries-before-6.jsonl4
-rw-r--r--research/experiments/033-computing/2026-10-04-tpcc-after-1.jsonl3
-rw-r--r--research/experiments/033-computing/2026-10-04-tpcc-after-2.jsonl3
-rw-r--r--research/experiments/033-computing/2026-10-04-tpcc-after-3.jsonl3
-rw-r--r--research/experiments/033-computing/2026-10-04-tpcc-after-4.jsonl3
-rw-r--r--research/experiments/033-computing/2026-10-04-tpcc-after-5.jsonl3
-rw-r--r--research/experiments/033-computing/2026-10-04-tpcc-after-6.jsonl3
-rw-r--r--research/experiments/033-computing/2026-10-04-tpcc-before-1.jsonl3
-rw-r--r--research/experiments/033-computing/2026-10-04-tpcc-before-2.jsonl3
-rw-r--r--research/experiments/033-computing/2026-10-04-tpcc-before-3.jsonl3
-rw-r--r--research/experiments/033-computing/2026-10-04-tpcc-before-4.jsonl3
-rw-r--r--research/experiments/033-computing/2026-10-04-tpcc-before-5.jsonl3
-rw-r--r--research/experiments/033-computing/2026-10-04-tpcc-before-6.jsonl3
-rw-r--r--research/experiments/033-computing/bfs.c57
-rwxr-xr-xresearch/experiments/033-computing/bfs.py113
-rw-r--r--research/experiments/033-computing/graph.aup56
-rw-r--r--research/experiments/033-computing/pairs.py45
-rwxr-xr-xresearch/experiments/033-computing/record.py30
-rwxr-xr-xresearch/experiments/033-computing/runs.sh48
34 files changed, 511 insertions, 0 deletions
diff --git a/research/experiments/033-computing/2026-10-04-bfs-100000-1000000.jsonl b/research/experiments/033-computing/2026-10-04-bfs-100000-1000000.jsonl
new file mode 100644
index 0000000..bab1f31
--- /dev/null
+++ b/research/experiments/033-computing/2026-10-04-bfs-100000-1000000.jsonl
@@ -0,0 +1,16 @@
+{"system": "c", "from": 42224, "to": 57393, "hops": 6, "reached": 99996, "us": 8950.1}
+{"system": "c", "from": 5153, "to": 48368, "hops": 6, "reached": 99996, "us": 8925.5}
+{"system": "c", "from": 73314, "to": 58793, "hops": 5, "reached": 99996, "us": 8955.1}
+{"system": "c", "from": 47063, "to": 90963, "hops": 5, "reached": 99996, "us": 8995.4}
+{"system": "c", "from": 67811, "to": 96464, "hops": 5, "reached": 99996, "us": 8978.4}
+{"system": "python", "from": 42224, "to": 57393, "us": 439885.7}
+{"system": "python", "from": 5153, "to": 48368, "us": 441394.4}
+{"system": "python", "from": 73314, "to": 58793, "us": 443791.8}
+{"system": "python", "from": 47063, "to": 90963, "us": 442701.7}
+{"system": "python", "from": 67811, "to": 96464, "us": 438801.5}
+{"system": "pure", "from": 42224, "to": 57393, "hops": 6, "reached": 99996, "us": 396279.4}
+{"system": "pure", "from": 5153, "to": 48368, "hops": 6, "reached": 99996, "us": 396679.3}
+{"system": "pure", "from": 73314, "to": 58793, "hops": 5, "reached": 99996, "us": 396149.2}
+{"system": "pure", "from": 47063, "to": 90963, "hops": 5, "reached": 99996, "us": 394814.1}
+{"system": "pure", "from": 67811, "to": 96464, "hops": 5, "reached": 99996, "us": 395569.6}
+{"nodes": 100000, "edges": 1000000, "median_us": {"c": 8955.1, "python": 441394.4, "pure": 396149.2}, "pure_over_c": 44.2, "pure_over_python": 0.9}
diff --git a/research/experiments/033-computing/2026-10-04-counts.jsonl b/research/experiments/033-computing/2026-10-04-counts.jsonl
new file mode 100644
index 0000000..3ff9d93
--- /dev/null
+++ b/research/experiments/033-computing/2026-10-04-counts.jsonl
@@ -0,0 +1,4 @@
+{"serve": "pure-serve", "per_branch": {"instructions": 27099692, "cycles": 12264835}, "in_credit": {"instructions": 3497593, "cycles": 1661681}, "large": {"instructions": 1438519, "cycles": 654650}, "ranks": {"instructions": 24231990, "cycles": 15085786}, "none": {"instructions": 605682, "cycles": 191852}, "field": {"instructions": 8714370, "cycles": 3148429}, "found": {"instructions": 15629130, "cycles": 12479224}}
+{"serve": "pure-serve", "per_branch": {"instructions": 26823278, "cycles": 12433552}, "in_credit": {"instructions": 3436386, "cycles": 2078947}, "large": {"instructions": 1444893, "cycles": 658971}, "ranks": {"instructions": 24074847, "cycles": 15030905}, "none": {"instructions": 605691, "cycles": 192405}, "field": {"instructions": 8775789, "cycles": 3246498}, "found": {"instructions": 15722167, "cycles": 12713020}}
+{"serve": "pure-serve", "per_branch": {"instructions": 27059438, "cycles": 12132476}, "in_credit": {"instructions": 3488747, "cycles": 1661488}, "large": {"instructions": 1438463, "cycles": 639320}, "ranks": {"instructions": 24210902, "cycles": 15003600}, "none": {"instructions": 605682, "cycles": 199816}, "field": {"instructions": 8714472, "cycles": 3138317}, "found": {"instructions": 15628274, "cycles": 14951793}}
+{"serve": "pure-serve", "per_branch": {"instructions": 27055154, "cycles": 12018884}, "in_credit": {"instructions": 3488201, "cycles": 1715312}, "large": {"instructions": 1444829, "cycles": 666748}, "ranks": {"instructions": 24201442, "cycles": 15136335}, "none": {"instructions": 605699, "cycles": 192404}, "field": {"instructions": 8775797, "cycles": 3201030}, "found": {"instructions": 15721592, "cycles": 12653970}}
diff --git a/research/experiments/033-computing/2026-10-04-load.txt b/research/experiments/033-computing/2026-10-04-load.txt
new file mode 100644
index 0000000..e5986ee
--- /dev/null
+++ b/research/experiments/033-computing/2026-10-04-load.txt
@@ -0,0 +1,12 @@
+1 before 14:00:24 up 10:21, 1 user, load average: 1.08, 1.03, 0.76
+1 after 14:02:11 up 10:23, 1 user, load average: 1.44, 1.33, 0.91
+2 after 14:03:38 up 10:25, 1 user, load average: 1.34, 1.35, 0.96
+2 before 14:05:24 up 10:26, 1 user, load average: 1.36, 1.48, 1.06
+3 before 14:06:51 up 10:28, 1 user, load average: 1.33, 1.51, 1.11
+3 after 14:08:27 up 10:29, 1 user, load average: 1.42, 1.60, 1.19
+4 after 14:09:56 up 10:31, 1 user, load average: 1.30, 1.56, 1.21
+4 before 14:11:23 up 10:32, 1 user, load average: 1.49, 1.60, 1.26
+5 before 14:13:20 up 10:34, 1 user, load average: 1.27, 1.61, 1.31
+5 after 14:14:56 up 10:36, 1 user, load average: 1.31, 1.60, 1.35
+6 after 14:16:23 up 10:37, 1 user, load average: 1.11, 1.46, 1.32
+6 before 14:17:50 up 10:39, 1 user, load average: 1.23, 1.44, 1.33
diff --git a/research/experiments/033-computing/2026-10-04-pi.jsonl b/research/experiments/033-computing/2026-10-04-pi.jsonl
new file mode 100644
index 0000000..d8dd4cb
--- /dev/null
+++ b/research/experiments/033-computing/2026-10-04-pi.jsonl
@@ -0,0 +1,46 @@
+{"module": "3db244824ba7031c8b15e074", "args": "de56dc3eef8a5879b1c0e11a", "input": "6f6f723b5b2b1d073eb31852", "output": "e05288002c2ec7e0a979331d", "errors": "e3b0c44298fc1c149afbf4c8", "exit": 0}
+{"module": "3db244824ba7031c8b15e074", "args": "d8828156ecd65e60e45b9a28", "input": "fbe8479cede4e0169db5bd3c", "output": "a48a5acdc64afac3703801e1", "errors": "e3b0c44298fc1c149afbf4c8", "exit": 1}
+{"module": "3db244824ba7031c8b15e074", "args": "d8828156ecd65e60e45b9a28", "input": "014589aeac0c2073e4109988", "output": "0757b2550090a207b981ff59", "errors": "e3b0c44298fc1c149afbf4c8", "exit": 0}
+{"module": "3db244824ba7031c8b15e074", "args": "663f78393fb6b01805134031", "input": "e90023d1c1a98fe8f29c66f7", "output": "64de5f760484771e029ee2db", "errors": "e3b0c44298fc1c149afbf4c8", "exit": 0}
+{"module": "79473d03be4f37825d643bb4", "args": "663f78393fb6b01805134031", "input": "014589aeac0c2073e4109988", "output": "f0e31911d6426fdd54119699", "errors": "e3b0c44298fc1c149afbf4c8", "exit": 0}
+{"module": "fa638e24673f7cd2e7da3457", "args": "7ca4a61d7a886da987496de4", "input": "c1ecc4ee7ec90bcfb37001e5", "output": "7687c6324ed99800152e62a2", "errors": "e3b0c44298fc1c149afbf4c8", "exit": 0}
+{"module": "fa638e24673f7cd2e7da3457", "args": "7ca4a61d7a886da987496de4", "input": "bc80367cc7d4d60ffc4e05c4", "output": "8cd7eb75796d7a6efd33de89", "errors": "e3b0c44298fc1c149afbf4c8", "exit": 0}
+{"module": "fa638e24673f7cd2e7da3457", "args": "7ca4a61d7a886da987496de4", "input": "d65dcc87d1865446ad58251f", "output": "1acd13840aaab0671bcfff68", "errors": "e3b0c44298fc1c149afbf4c8", "exit": 0}
+{"module": "fa638e24673f7cd2e7da3457", "args": "7ca4a61d7a886da987496de4", "input": "df61ae91b0dbbeec3ed32244", "output": "e306e235e47e00771bd2be19", "errors": "e3b0c44298fc1c149afbf4c8", "exit": 0}
+{"module": "fa638e24673f7cd2e7da3457", "args": "7ca4a61d7a886da987496de4", "input": "dd919ae0468a05b23e0d9a9f", "output": "f6aa1936ffa9c2a9d7f90877", "errors": "e3b0c44298fc1c149afbf4c8", "exit": 0}
+{"module": "fa638e24673f7cd2e7da3457", "args": "7ca4a61d7a886da987496de4", "input": "ea70cf4efe51953ab5587d5d", "output": "90977584e9f5458f75bbf95e", "errors": "e3b0c44298fc1c149afbf4c8", "exit": 0}
+{"module": "fa638e24673f7cd2e7da3457", "args": "7ca4a61d7a886da987496de4", "input": "3aefbeb6b32cde88a4d13a13", "output": "4014b80ae105b7371ab9f86b", "errors": "e3b0c44298fc1c149afbf4c8", "exit": 0}
+{"module": "fa638e24673f7cd2e7da3457", "args": "7ca4a61d7a886da987496de4", "input": "b87783732f62e8a5916f40f9", "output": "f5067bc7953b52aa38c75732", "errors": "e3b0c44298fc1c149afbf4c8", "exit": 0}
+{"module": "fa638e24673f7cd2e7da3457", "args": "7ca4a61d7a886da987496de4", "input": "06048f543c44e9549aed5380", "output": "fc81784c19628326d6009e39", "errors": "e3b0c44298fc1c149afbf4c8", "exit": 0}
+{"module": "fa638e24673f7cd2e7da3457", "args": "7ca4a61d7a886da987496de4", "input": "ea116d584f758ba6643016ae", "output": "79cf55b6f73a47b572fb5a54", "errors": "e3b0c44298fc1c149afbf4c8", "exit": 0}
+{"module": "fa638e24673f7cd2e7da3457", "args": "7ca4a61d7a886da987496de4", "input": "d54f58115e3ef8dcbe085440", "output": "5b098766216c7f95d3a37eb3", "errors": "e3b0c44298fc1c149afbf4c8", "exit": 0}
+{"module": "fa638e24673f7cd2e7da3457", "args": "7ca4a61d7a886da987496de4", "input": "9451d0c2d1168269fcf5f6fc", "output": "c63926a084c13db61b723a6e", "errors": "e3b0c44298fc1c149afbf4c8", "exit": 0}
+{"module": "fa638e24673f7cd2e7da3457", "args": "7ca4a61d7a886da987496de4", "input": "b982935d7df6090f979d91ea", "output": "2ce042ed845daccfd894d9b4", "errors": "e3b0c44298fc1c149afbf4c8", "exit": 0}
+{"module": "fa638e24673f7cd2e7da3457", "args": "7ca4a61d7a886da987496de4", "input": "61f7bf6528b1c1c4e8f113bb", "output": "b11aab75a2b33defc65d460e", "errors": "e3b0c44298fc1c149afbf4c8", "exit": 0}
+{"module": "fa638e24673f7cd2e7da3457", "args": "7ca4a61d7a886da987496de4", "input": "e4dfd4dd17162dd382a60fcb", "output": "5302cb0df0bda944fb238fd7", "errors": "e3b0c44298fc1c149afbf4c8", "exit": 0}
+{"module": "fa638e24673f7cd2e7da3457", "args": "7ca4a61d7a886da987496de4", "input": "8ede060b3e50523fddc7daf5", "output": "8c5352aa150c7e4891168c67", "errors": "e3b0c44298fc1c149afbf4c8", "exit": 0}
+{"module": "fa638e24673f7cd2e7da3457", "args": "7ca4a61d7a886da987496de4", "input": "481c8e83fbf3ebb98b86f070", "output": "31d56b67e741322c29b1d7ec", "errors": "e3b0c44298fc1c149afbf4c8", "exit": 0}
+{"module": "fa638e24673f7cd2e7da3457", "args": "7ca4a61d7a886da987496de4", "input": "de6975a552e9a8cb4036adb5", "output": "3dac9ebfc7d6f70e017aab53", "errors": "e3b0c44298fc1c149afbf4c8", "exit": 0}
+{"module": "fa638e24673f7cd2e7da3457", "args": "7ca4a61d7a886da987496de4", "input": "9fe8659271f0e6fa006c5235", "output": "f5bd5e67a817030412923cd1", "errors": "e3b0c44298fc1c149afbf4c8", "exit": 0}
+{"module": "fa638e24673f7cd2e7da3457", "args": "7ca4a61d7a886da987496de4", "input": "0a25f97536d9e82b5be07462", "output": "d1bbc90911792537138e5c03", "errors": "e3b0c44298fc1c149afbf4c8", "exit": 0}
+{"module": "770a9bded98908db97e56858", "args": "6949bab2263fede197bb7234", "input": "4e046a7ed3cb40cc45d342eb", "output": "58a23d31f2781d2f9bb2efbe", "errors": "e3b0c44298fc1c149afbf4c8", "exit": 0}
+{"module": "770a9bded98908db97e56858", "args": "6949bab2263fede197bb7234", "input": "dafce720362e20839691889a", "output": "ff6c52a25ce9ac14d61a8dd5", "errors": "e3b0c44298fc1c149afbf4c8", "exit": 0}
+{"module": "770a9bded98908db97e56858", "args": "6949bab2263fede197bb7234", "input": "2c9ac77bc25fd11242f090a9", "output": "60ebabf1c5b5ba8963ba4509", "errors": "e3b0c44298fc1c149afbf4c8", "exit": 0}
+{"module": "770a9bded98908db97e56858", "args": "6949bab2263fede197bb7234", "input": "9a02ebff2ce0b0729c073f84", "output": "6ef16fbb1a168b614898a77a", "errors": "e3b0c44298fc1c149afbf4c8", "exit": 0}
+{"module": "770a9bded98908db97e56858", "args": "6949bab2263fede197bb7234", "input": "324e1b1ae84a7c5b7e0596ee", "output": "ad7cacb4845afa5b44060f54", "errors": "e3b0c44298fc1c149afbf4c8", "exit": 0}
+{"module": "770a9bded98908db97e56858", "args": "6949bab2263fede197bb7234", "input": "fb3fdcb9bdeb303155f218c6", "output": "cfcb6cfa6005abf164d2b98c", "errors": "e3b0c44298fc1c149afbf4c8", "exit": 0}
+{"module": "770a9bded98908db97e56858", "args": "6949bab2263fede197bb7234", "input": "260689f601f2ca1dbd7256d0", "output": "4245812252c260663c517479", "errors": "e3b0c44298fc1c149afbf4c8", "exit": 0}
+{"module": "770a9bded98908db97e56858", "args": "6949bab2263fede197bb7234", "input": "f8ff5b14a7522493e3fb4e3b", "output": "20bffe8f65f93892017f36da", "errors": "e3b0c44298fc1c149afbf4c8", "exit": 0}
+{"module": "770a9bded98908db97e56858", "args": "6949bab2263fede197bb7234", "input": "d69318266dc2c0526e05c15c", "output": "81b9ba6fbba20f22b1e8d197", "errors": "e3b0c44298fc1c149afbf4c8", "exit": 0}
+{"module": "770a9bded98908db97e56858", "args": "6949bab2263fede197bb7234", "input": "91e5f193246627baee0a07b7", "output": "7501730ba25d2002ead09501", "errors": "e3b0c44298fc1c149afbf4c8", "exit": 0}
+{"module": "770a9bded98908db97e56858", "args": "6949bab2263fede197bb7234", "input": "528afe05244d3f32c85ef88c", "output": "09bf07fc366c3707a9675b78", "errors": "e3b0c44298fc1c149afbf4c8", "exit": 0}
+{"module": "770a9bded98908db97e56858", "args": "6949bab2263fede197bb7234", "input": "f51c23204014b3fa4d88668b", "output": "7a39d656b909502e91cf6a6d", "errors": "e3b0c44298fc1c149afbf4c8", "exit": 0}
+{"module": "770a9bded98908db97e56858", "args": "6949bab2263fede197bb7234", "input": "cc0eaec10a4008f94cdc9bc3", "output": "69de8aa2e33c37027fd84085", "errors": "e3b0c44298fc1c149afbf4c8", "exit": 0}
+{"module": "770a9bded98908db97e56858", "args": "6949bab2263fede197bb7234", "input": "b92d0ffda49d48f835a04563", "output": "6592523d8473a0d17ca77ec6", "errors": "e3b0c44298fc1c149afbf4c8", "exit": 0}
+{"module": "770a9bded98908db97e56858", "args": "6949bab2263fede197bb7234", "input": "643a678d8d2a6fe9119d9521", "output": "0dd05cba6541524e5499df56", "errors": "e3b0c44298fc1c149afbf4c8", "exit": 0}
+{"module": "770a9bded98908db97e56858", "args": "6949bab2263fede197bb7234", "input": "76d8851c1dab1804580417bd", "output": "d4b4ec037169e878d6e426f7", "errors": "e3b0c44298fc1c149afbf4c8", "exit": 0}
+{"module": "770a9bded98908db97e56858", "args": "6949bab2263fede197bb7234", "input": "995364b7939d20833d5d279a", "output": "eb2ef6f2415e4d96b79623a4", "errors": "e3b0c44298fc1c149afbf4c8", "exit": 0}
+{"module": "770a9bded98908db97e56858", "args": "6949bab2263fede197bb7234", "input": "4829b1e000ae4e2d97943b29", "output": "fdf1755aa176fecd8fbe65c3", "errors": "e3b0c44298fc1c149afbf4c8", "exit": 0}
+{"module": "770a9bded98908db97e56858", "args": "6949bab2263fede197bb7234", "input": "4ef89ebfe266ab1dfb3f38b3", "output": "02f6b9e2bb1bfb6ce3ed8cdd", "errors": "e3b0c44298fc1c149afbf4c8", "exit": 0}
+{"module": "770a9bded98908db97e56858", "args": "6949bab2263fede197bb7234", "input": "172a13c29dabde5000f2995f", "output": "26086a0ff7f1123c758d0938", "errors": "e3b0c44298fc1c149afbf4c8", "exit": 0}
+{"module": "770a9bded98908db97e56858", "args": "6949bab2263fede197bb7234", "input": "88c83ecba368c17afcef40f7", "output": "911c65754a642979d61bb51b", "errors": "e3b0c44298fc1c149afbf4c8", "exit": 0}
diff --git a/research/experiments/033-computing/2026-10-04-queries-after-1.jsonl b/research/experiments/033-computing/2026-10-04-queries-after-1.jsonl
new file mode 100644
index 0000000..fb1ea3a
--- /dev/null
+++ b/research/experiments/033-computing/2026-10-04-queries-after-1.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.24, "sqlite_fastest_ms": 45.15, "sqlite_indexed_median_ms": 14.1, "sqlite_indexed_fastest_ms": 14.05}
+{"query": "in_credit", "rows": 1, "accounts": 100000, "pure_median_ms": 0.85, "pure_fastest_ms": 0.82, "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.42, "pure_fastest_ms": 0.4, "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.84, "pure_fastest_ms": 6.77, "sqlite_median_ms": 2833.31, "sqlite_fastest_ms": 2831.44, "sqlite_indexed_median_ms": 7.54, "sqlite_indexed_fastest_ms": 7.5}
diff --git a/research/experiments/033-computing/2026-10-04-queries-after-2.jsonl b/research/experiments/033-computing/2026-10-04-queries-after-2.jsonl
new file mode 100644
index 0000000..c35d15e
--- /dev/null
+++ b/research/experiments/033-computing/2026-10-04-queries-after-2.jsonl
@@ -0,0 +1,4 @@
+{"query": "per_branch", "rows": 10, "accounts": 100000, "pure_median_ms": 5.26, "pure_fastest_ms": 5.17, "sqlite_median_ms": 44.91, "sqlite_fastest_ms": 44.79, "sqlite_indexed_median_ms": 13.97, "sqlite_indexed_fastest_ms": 13.93}
+{"query": "in_credit", "rows": 1, "accounts": 100000, "pure_median_ms": 0.84, "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.38, "pure_fastest_ms": 0.37, "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.81, "pure_fastest_ms": 6.75, "sqlite_median_ms": 2832.69, "sqlite_fastest_ms": 2830.09, "sqlite_indexed_median_ms": 7.52, "sqlite_indexed_fastest_ms": 7.47}
diff --git a/research/experiments/033-computing/2026-10-04-queries-after-3.jsonl b/research/experiments/033-computing/2026-10-04-queries-after-3.jsonl
new file mode 100644
index 0000000..ad55a8c
--- /dev/null
+++ b/research/experiments/033-computing/2026-10-04-queries-after-3.jsonl
@@ -0,0 +1,4 @@
+{"query": "per_branch", "rows": 10, "accounts": 100000, "pure_median_ms": 5.28, "pure_fastest_ms": 5.19, "sqlite_median_ms": 44.91, "sqlite_fastest_ms": 44.78, "sqlite_indexed_median_ms": 14.09, "sqlite_indexed_fastest_ms": 14.07}
+{"query": "in_credit", "rows": 1, "accounts": 100000, "pure_median_ms": 0.83, "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.39, "pure_fastest_ms": 0.37, "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.9, "pure_fastest_ms": 6.7, "sqlite_median_ms": 2831.02, "sqlite_fastest_ms": 2829.23, "sqlite_indexed_median_ms": 7.52, "sqlite_indexed_fastest_ms": 7.49}
diff --git a/research/experiments/033-computing/2026-10-04-queries-after-4.jsonl b/research/experiments/033-computing/2026-10-04-queries-after-4.jsonl
new file mode 100644
index 0000000..ed1e9ff
--- /dev/null
+++ b/research/experiments/033-computing/2026-10-04-queries-after-4.jsonl
@@ -0,0 +1,4 @@
+{"query": "per_branch", "rows": 10, "accounts": 100000, "pure_median_ms": 5.22, "pure_fastest_ms": 5.16, "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.38, "pure_fastest_ms": 0.37, "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.78, "pure_fastest_ms": 6.73, "sqlite_median_ms": 2835.98, "sqlite_fastest_ms": 2831.48, "sqlite_indexed_median_ms": 7.53, "sqlite_indexed_fastest_ms": 7.5}
diff --git a/research/experiments/033-computing/2026-10-04-queries-after-5.jsonl b/research/experiments/033-computing/2026-10-04-queries-after-5.jsonl
new file mode 100644
index 0000000..62d766b
--- /dev/null
+++ b/research/experiments/033-computing/2026-10-04-queries-after-5.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.36, "sqlite_fastest_ms": 45.16, "sqlite_indexed_median_ms": 14.08, "sqlite_indexed_fastest_ms": 14.03}
+{"query": "in_credit", "rows": 1, "accounts": 100000, "pure_median_ms": 0.93, "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.44, "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.67, "pure_fastest_ms": 6.63, "sqlite_median_ms": 2834.43, "sqlite_fastest_ms": 2831.99, "sqlite_indexed_median_ms": 7.62, "sqlite_indexed_fastest_ms": 7.5}
diff --git a/research/experiments/033-computing/2026-10-04-queries-after-6.jsonl b/research/experiments/033-computing/2026-10-04-queries-after-6.jsonl
new file mode 100644
index 0000000..9b149c3
--- /dev/null
+++ b/research/experiments/033-computing/2026-10-04-queries-after-6.jsonl
@@ -0,0 +1,4 @@
+{"query": "per_branch", "rows": 10, "accounts": 100000, "pure_median_ms": 5.36, "pure_fastest_ms": 5.14, "sqlite_median_ms": 45.28, "sqlite_fastest_ms": 45.13, "sqlite_indexed_median_ms": 14.2, "sqlite_indexed_fastest_ms": 14.11}
+{"query": "in_credit", "rows": 1, "accounts": 100000, "pure_median_ms": 0.89, "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.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.77, "pure_fastest_ms": 6.69, "sqlite_median_ms": 2835.72, "sqlite_fastest_ms": 2832.42, "sqlite_indexed_median_ms": 7.56, "sqlite_indexed_fastest_ms": 7.5}
diff --git a/research/experiments/033-computing/2026-10-04-queries-before-1.jsonl b/research/experiments/033-computing/2026-10-04-queries-before-1.jsonl
new file mode 100644
index 0000000..5c7318d
--- /dev/null
+++ b/research/experiments/033-computing/2026-10-04-queries-before-1.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.28, "sqlite_fastest_ms": 45.09, "sqlite_indexed_median_ms": 14.01, "sqlite_indexed_fastest_ms": 13.99}
+{"query": "in_credit", "rows": 1, "accounts": 100000, "pure_median_ms": 0.86, "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.37, "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": 7.31, "pure_fastest_ms": 6.65, "sqlite_median_ms": 2834.47, "sqlite_fastest_ms": 2830.59, "sqlite_indexed_median_ms": 7.55, "sqlite_indexed_fastest_ms": 7.51}
diff --git a/research/experiments/033-computing/2026-10-04-queries-before-2.jsonl b/research/experiments/033-computing/2026-10-04-queries-before-2.jsonl
new file mode 100644
index 0000000..b82a301
--- /dev/null
+++ b/research/experiments/033-computing/2026-10-04-queries-before-2.jsonl
@@ -0,0 +1,4 @@
+{"query": "per_branch", "rows": 10, "accounts": 100000, "pure_median_ms": 5.26, "pure_fastest_ms": 5.21, "sqlite_median_ms": 45.2, "sqlite_fastest_ms": 45.07, "sqlite_indexed_median_ms": 14.01, "sqlite_indexed_fastest_ms": 13.99}
+{"query": "in_credit", "rows": 1, "accounts": 100000, "pure_median_ms": 0.88, "pure_fastest_ms": 0.81, "sqlite_median_ms": 5.94, "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.73, "pure_fastest_ms": 6.67, "sqlite_median_ms": 2833.21, "sqlite_fastest_ms": 2832.37, "sqlite_indexed_median_ms": 7.59, "sqlite_indexed_fastest_ms": 7.52}
diff --git a/research/experiments/033-computing/2026-10-04-queries-before-3.jsonl b/research/experiments/033-computing/2026-10-04-queries-before-3.jsonl
new file mode 100644
index 0000000..aa78a08
--- /dev/null
+++ b/research/experiments/033-computing/2026-10-04-queries-before-3.jsonl
@@ -0,0 +1,4 @@
+{"query": "per_branch", "rows": 10, "accounts": 100000, "pure_median_ms": 5.22, "pure_fastest_ms": 5.19, "sqlite_median_ms": 44.86, "sqlite_fastest_ms": 44.79, "sqlite_indexed_median_ms": 14.02, "sqlite_indexed_fastest_ms": 13.98}
+{"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.36, "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.67, "sqlite_median_ms": 2833.09, "sqlite_fastest_ms": 2829.5, "sqlite_indexed_median_ms": 7.53, "sqlite_indexed_fastest_ms": 7.49}
diff --git a/research/experiments/033-computing/2026-10-04-queries-before-4.jsonl b/research/experiments/033-computing/2026-10-04-queries-before-4.jsonl
new file mode 100644
index 0000000..434b550
--- /dev/null
+++ b/research/experiments/033-computing/2026-10-04-queries-before-4.jsonl
@@ -0,0 +1,4 @@
+{"query": "per_branch", "rows": 10, "accounts": 100000, "pure_median_ms": 5.24, "pure_fastest_ms": 5.16, "sqlite_median_ms": 44.92, "sqlite_fastest_ms": 44.83, "sqlite_indexed_median_ms": 13.98, "sqlite_indexed_fastest_ms": 13.95}
+{"query": "in_credit", "rows": 1, "accounts": 100000, "pure_median_ms": 0.86, "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.49, "sqlite_indexed_fastest_ms": 1.47}
+{"query": "ranks", "rows": 404, "accounts": 100000, "pure_median_ms": 6.75, "pure_fastest_ms": 6.63, "sqlite_median_ms": 2836.09, "sqlite_fastest_ms": 2830.65, "sqlite_indexed_median_ms": 7.56, "sqlite_indexed_fastest_ms": 7.49}
diff --git a/research/experiments/033-computing/2026-10-04-queries-before-5.jsonl b/research/experiments/033-computing/2026-10-04-queries-before-5.jsonl
new file mode 100644
index 0000000..66096e9
--- /dev/null
+++ b/research/experiments/033-computing/2026-10-04-queries-before-5.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": 46.37, "sqlite_fastest_ms": 46.18, "sqlite_indexed_median_ms": 14.72, "sqlite_indexed_fastest_ms": 14.67}
+{"query": "in_credit", "rows": 1, "accounts": 100000, "pure_median_ms": 0.84, "pure_fastest_ms": 0.81, "sqlite_median_ms": 5.91, "sqlite_fastest_ms": 5.89, "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.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.71, "pure_fastest_ms": 6.68, "sqlite_median_ms": 2855.96, "sqlite_fastest_ms": 2850.03, "sqlite_indexed_median_ms": 7.61, "sqlite_indexed_fastest_ms": 7.54}
diff --git a/research/experiments/033-computing/2026-10-04-queries-before-6.jsonl b/research/experiments/033-computing/2026-10-04-queries-before-6.jsonl
new file mode 100644
index 0000000..74b7077
--- /dev/null
+++ b/research/experiments/033-computing/2026-10-04-queries-before-6.jsonl
@@ -0,0 +1,4 @@
+{"query": "per_branch", "rows": 10, "accounts": 100000, "pure_median_ms": 5.45, "pure_fastest_ms": 5.17, "sqlite_median_ms": 45.28, "sqlite_fastest_ms": 44.74, "sqlite_indexed_median_ms": 14.12, "sqlite_indexed_fastest_ms": 14.1}
+{"query": "in_credit", "rows": 1, "accounts": 100000, "pure_median_ms": 0.89, "pure_fastest_ms": 0.81, "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.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.82, "pure_fastest_ms": 6.69, "sqlite_median_ms": 2837.35, "sqlite_fastest_ms": 2833.45, "sqlite_indexed_median_ms": 7.58, "sqlite_indexed_fastest_ms": 7.49}
diff --git a/research/experiments/033-computing/2026-10-04-tpcc-after-1.jsonl b/research/experiments/033-computing/2026-10-04-tpcc-after-1.jsonl
new file mode 100644
index 0000000..e37727d
--- /dev/null
+++ b/research/experiments/033-computing/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.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": 42566, "new_orders_per_minute": 1138958, "undone_new_orders": 3633, "errors": 0, "new_order": {"done": 383286, "failed": 0, "p50_us": 1536, "p99_us": 3584}, "payment": {"done": 365831, "failed": 0, "p50_us": 1472, "p99_us": 3584}, "order_status": {"done": 34175, "failed": 0, "p50_us": 256, "p99_us": 1152}, "delivery": {"done": 34116, "failed": 0, "p50_us": 1472, "p99_us": 3584}, "stock_level": {"done": 33916, "failed": 0, "p50_us": 288, "p99_us": 1280}, "server_threads": "3", "cpu_us_per_transaction": 44.4, "core_shares": {"pure-owner": 0.9, "pure-checkpoint": 0.01}, "resident_mib": 445.8, "written_bytes_per_transaction": 0.0, "device_bytes_per_transaction": null, "consistency_failures": []}
+{"step": "end", "pure_resident_mib": 445.8, "pure_state_mib": 227.3, "pure_store_mib": 230.7, "sqlite_files_mib": 13.8, "grouped_sqlite_files_mib": 0.0, "pure_counts": {"bursts": 25482, "burst_events": 779680, "checkpoints": 38}}
diff --git a/research/experiments/033-computing/2026-10-04-tpcc-after-2.jsonl b/research/experiments/033-computing/2026-10-04-tpcc-after-2.jsonl
new file mode 100644
index 0000000..98539ef
--- /dev/null
+++ b/research/experiments/033-computing/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.73, "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": 42974, "new_orders_per_minute": 1149738, "undone_new_orders": 3678, "errors": 0, "new_order": {"done": 386927, "failed": 0, "p50_us": 1536, "p99_us": 3200}, "payment": {"done": 369394, "failed": 0, "p50_us": 1472, "p99_us": 3200}, "order_status": {"done": 34484, "failed": 0, "p50_us": 256, "p99_us": 1024}, "delivery": {"done": 34427, "failed": 0, "p50_us": 1472, "p99_us": 3200}, "stock_level": {"done": 34251, "failed": 0, "p50_us": 288, "p99_us": 1088}, "server_threads": "3", "cpu_us_per_transaction": 44.8, "core_shares": {"pure-owner": 0.91, "pure-checkpoint": 0.01}, "resident_mib": 450.7, "written_bytes_per_transaction": 0.0, "device_bytes_per_transaction": null, "consistency_failures": []}
+{"step": "end", "pure_resident_mib": 450.7, "pure_state_mib": 229.2, "pure_store_mib": 238.7, "sqlite_files_mib": 13.8, "grouped_sqlite_files_mib": 0.0, "pure_counts": {"bursts": 25774, "burst_events": 787155, "checkpoints": 38}}
diff --git a/research/experiments/033-computing/2026-10-04-tpcc-after-3.jsonl b/research/experiments/033-computing/2026-10-04-tpcc-after-3.jsonl
new file mode 100644
index 0000000..24d6e6e
--- /dev/null
+++ b/research/experiments/033-computing/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.74, "sqlite_load_s": 1.59, "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": 42788, "new_orders_per_minute": 1144782, "undone_new_orders": 3660, "errors": 0, "new_order": {"done": 385258, "failed": 0, "p50_us": 1536, "p99_us": 3584}, "payment": {"done": 367830, "failed": 0, "p50_us": 1472, "p99_us": 3456}, "order_status": {"done": 34327, "failed": 0, "p50_us": 256, "p99_us": 1152}, "delivery": {"done": 34269, "failed": 0, "p50_us": 1472, "p99_us": 3456}, "stock_level": {"done": 34090, "failed": 0, "p50_us": 288, "p99_us": 1152}, "server_threads": "3", "cpu_us_per_transaction": 44.0, "core_shares": {"pure-owner": 0.91, "pure-checkpoint": 0.01}, "resident_mib": 448.9, "written_bytes_per_transaction": 0.0, "device_bytes_per_transaction": null, "consistency_failures": []}
+{"step": "end", "pure_resident_mib": 448.9, "pure_state_mib": 228.3, "pure_store_mib": 238.7, "sqlite_files_mib": 13.8, "grouped_sqlite_files_mib": 0.0, "pure_counts": {"bursts": 25826, "burst_events": 783755, "checkpoints": 38}}
diff --git a/research/experiments/033-computing/2026-10-04-tpcc-after-4.jsonl b/research/experiments/033-computing/2026-10-04-tpcc-after-4.jsonl
new file mode 100644
index 0000000..1de2fd7
--- /dev/null
+++ b/research/experiments/033-computing/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.61, "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": 42171, "new_orders_per_minute": 1128494, "undone_new_orders": 3606, "errors": 0, "new_order": {"done": 379771, "failed": 0, "p50_us": 1536, "p99_us": 3840}, "payment": {"done": 362393, "failed": 0, "p50_us": 1472, "p99_us": 3840}, "order_status": {"done": 33861, "failed": 0, "p50_us": 256, "p99_us": 1152}, "delivery": {"done": 33794, "failed": 0, "p50_us": 1472, "p99_us": 3840}, "stock_level": {"done": 33596, "failed": 0, "p50_us": 288, "p99_us": 1344}, "server_threads": "3", "cpu_us_per_transaction": 44.9, "core_shares": {"pure-owner": 0.9, "pure-checkpoint": 0.01}, "resident_mib": 443.2, "written_bytes_per_transaction": 0.0, "device_bytes_per_transaction": null, "consistency_failures": []}
+{"step": "end", "pure_resident_mib": 443.2, "pure_state_mib": 225.4, "pure_store_mib": 230.7, "sqlite_files_mib": 13.8, "grouped_sqlite_files_mib": 0.0, "pure_counts": {"bursts": 25588, "burst_events": 772438, "checkpoints": 38}}
diff --git a/research/experiments/033-computing/2026-10-04-tpcc-after-5.jsonl b/research/experiments/033-computing/2026-10-04-tpcc-after-5.jsonl
new file mode 100644
index 0000000..50c0153
--- /dev/null
+++ b/research/experiments/033-computing/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.73, "sqlite_load_s": 1.55, "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": 41855, "new_orders_per_minute": 1120166, "undone_new_orders": 3574, "errors": 0, "new_order": {"done": 377003, "failed": 0, "p50_us": 1536, "p99_us": 3840}, "payment": {"done": 359738, "failed": 0, "p50_us": 1472, "p99_us": 3968}, "order_status": {"done": 33609, "failed": 0, "p50_us": 256, "p99_us": 1344}, "delivery": {"done": 33528, "failed": 0, "p50_us": 1536, "p99_us": 3840}, "stock_level": {"done": 33321, "failed": 0, "p50_us": 288, "p99_us": 1344}, "server_threads": "3", "cpu_us_per_transaction": 45.1, "core_shares": {"pure-owner": 0.9, "pure-checkpoint": 0.01}, "resident_mib": 440.5, "written_bytes_per_transaction": 0.0, "device_bytes_per_transaction": null, "consistency_failures": []}
+{"step": "end", "pure_resident_mib": 440.5, "pure_state_mib": 223.9, "pure_store_mib": 230.7, "sqlite_files_mib": 13.8, "grouped_sqlite_files_mib": 0.0, "pure_counts": {"bursts": 25542, "burst_events": 766718, "checkpoints": 37}}
diff --git a/research/experiments/033-computing/2026-10-04-tpcc-after-6.jsonl b/research/experiments/033-computing/2026-10-04-tpcc-after-6.jsonl
new file mode 100644
index 0000000..690ffd0
--- /dev/null
+++ b/research/experiments/033-computing/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.75, "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": 41800, "new_orders_per_minute": 1118709, "undone_new_orders": 3582, "errors": 0, "new_order": {"done": 376506, "failed": 0, "p50_us": 1536, "p99_us": 3968}, "payment": {"done": 359209, "failed": 0, "p50_us": 1472, "p99_us": 3968}, "order_status": {"done": 33555, "failed": 0, "p50_us": 272, "p99_us": 1344}, "delivery": {"done": 33485, "failed": 0, "p50_us": 1472, "p99_us": 3840}, "stock_level": {"done": 33291, "failed": 0, "p50_us": 304, "p99_us": 1536}, "server_threads": "3", "cpu_us_per_transaction": 45.0, "core_shares": {"pure-owner": 0.9, "pure-checkpoint": 0.01}, "resident_mib": 440.1, "written_bytes_per_transaction": 0.0, "device_bytes_per_transaction": null, "consistency_failures": []}
+{"step": "end", "pure_resident_mib": 440.1, "pure_state_mib": 223.7, "pure_store_mib": 230.7, "sqlite_files_mib": 13.8, "grouped_sqlite_files_mib": 0.0, "pure_counts": {"bursts": 25646, "burst_events": 765702, "checkpoints": 37}}
diff --git a/research/experiments/033-computing/2026-10-04-tpcc-before-1.jsonl b/research/experiments/033-computing/2026-10-04-tpcc-before-1.jsonl
new file mode 100644
index 0000000..6a1e9da
--- /dev/null
+++ b/research/experiments/033-computing/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.75, "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": 43239, "new_orders_per_minute": 1157086, "undone_new_orders": 3694, "errors": 0, "new_order": {"done": 389391, "failed": 0, "p50_us": 1472, "p99_us": 3968}, "payment": {"done": 371590, "failed": 0, "p50_us": 1472, "p99_us": 3968}, "order_status": {"done": 34708, "failed": 0, "p50_us": 272, "p99_us": 1344}, "delivery": {"done": 34629, "failed": 0, "p50_us": 1472, "p99_us": 3840}, "stock_level": {"done": 34465, "failed": 0, "p50_us": 304, "p99_us": 1536}, "server_threads": "3", "cpu_us_per_transaction": 44.2, "core_shares": {"pure-owner": 0.9, "pure-checkpoint": 0.01}, "resident_mib": 453.6, "written_bytes_per_transaction": 0.0, "device_bytes_per_transaction": null, "consistency_failures": []}
+{"step": "end", "pure_resident_mib": 453.6, "pure_state_mib": 230.6, "pure_store_mib": 238.7, "sqlite_files_mib": 13.8, "grouped_sqlite_files_mib": 0.0, "pure_counts": {"bursts": 26588, "burst_events": 792001, "checkpoints": 38}}
diff --git a/research/experiments/033-computing/2026-10-04-tpcc-before-2.jsonl b/research/experiments/033-computing/2026-10-04-tpcc-before-2.jsonl
new file mode 100644
index 0000000..64d5c59
--- /dev/null
+++ b/research/experiments/033-computing/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.72, "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": 42977, "new_orders_per_minute": 1149805, "undone_new_orders": 3682, "errors": 0, "new_order": {"done": 386989, "failed": 0, "p50_us": 1472, "p99_us": 3584}, "payment": {"done": 369458, "failed": 0, "p50_us": 1472, "p99_us": 3584}, "order_status": {"done": 34494, "failed": 0, "p50_us": 256, "p99_us": 1216}, "delivery": {"done": 34448, "failed": 0, "p50_us": 1472, "p99_us": 3456}, "stock_level": {"done": 34242, "failed": 0, "p50_us": 304, "p99_us": 1280}, "server_threads": "3", "cpu_us_per_transaction": 45.0, "core_shares": {"pure-owner": 0.9, "pure-checkpoint": 0.01}, "resident_mib": 450.5, "written_bytes_per_transaction": 0.0, "device_bytes_per_transaction": null, "consistency_failures": []}
+{"step": "end", "pure_resident_mib": 450.5, "pure_state_mib": 229.3, "pure_store_mib": 238.7, "sqlite_files_mib": 13.8, "grouped_sqlite_files_mib": 0.0, "pure_counts": {"bursts": 26174, "burst_events": 787259, "checkpoints": 38}}
diff --git a/research/experiments/033-computing/2026-10-04-tpcc-before-3.jsonl b/research/experiments/033-computing/2026-10-04-tpcc-before-3.jsonl
new file mode 100644
index 0000000..5a24819
--- /dev/null
+++ b/research/experiments/033-computing/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.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": 43325, "new_orders_per_minute": 1159094, "undone_new_orders": 3706, "errors": 0, "new_order": {"done": 390071, "failed": 0, "p50_us": 1472, "p99_us": 3584}, "payment": {"done": 372433, "failed": 0, "p50_us": 1472, "p99_us": 3584}, "order_status": {"done": 34750, "failed": 0, "p50_us": 256, "p99_us": 1152}, "delivery": {"done": 34711, "failed": 0, "p50_us": 1472, "p99_us": 3584}, "stock_level": {"done": 34532, "failed": 0, "p50_us": 288, "p99_us": 1216}, "server_threads": "3", "cpu_us_per_transaction": 44.3, "core_shares": {"pure-owner": 0.9, "pure-checkpoint": 0.01}, "resident_mib": 453.8, "written_bytes_per_transaction": 0.0, "device_bytes_per_transaction": null, "consistency_failures": []}
+{"step": "end", "pure_resident_mib": 453.8, "pure_state_mib": 230.9, "pure_store_mib": 238.7, "sqlite_files_mib": 13.8, "grouped_sqlite_files_mib": 0.0, "pure_counts": {"bursts": 26169, "burst_events": 793593, "checkpoints": 38}}
diff --git a/research/experiments/033-computing/2026-10-04-tpcc-before-4.jsonl b/research/experiments/033-computing/2026-10-04-tpcc-before-4.jsonl
new file mode 100644
index 0000000..0f56786
--- /dev/null
+++ b/research/experiments/033-computing/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.74, "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": 42851, "new_orders_per_minute": 1146425, "undone_new_orders": 3672, "errors": 0, "new_order": {"done": 385815, "failed": 0, "p50_us": 1472, "p99_us": 3840}, "payment": {"done": 368369, "failed": 0, "p50_us": 1472, "p99_us": 3840}, "order_status": {"done": 34372, "failed": 0, "p50_us": 256, "p99_us": 1344}, "delivery": {"done": 34330, "failed": 0, "p50_us": 1472, "p99_us": 3840}, "stock_level": {"done": 34143, "failed": 0, "p50_us": 288, "p99_us": 1472}, "server_threads": "3", "cpu_us_per_transaction": 44.1, "core_shares": {"pure-owner": 0.9, "pure-checkpoint": 0.01}, "resident_mib": 449.3, "written_bytes_per_transaction": 0.0, "device_bytes_per_transaction": null, "consistency_failures": []}
+{"step": "end", "pure_resident_mib": 449.3, "pure_state_mib": 228.7, "pure_store_mib": 238.7, "sqlite_files_mib": 13.8, "grouped_sqlite_files_mib": 0.0, "pure_counts": {"bursts": 26308, "burst_events": 784917, "checkpoints": 38}}
diff --git a/research/experiments/033-computing/2026-10-04-tpcc-before-5.jsonl b/research/experiments/033-computing/2026-10-04-tpcc-before-5.jsonl
new file mode 100644
index 0000000..308896a
--- /dev/null
+++ b/research/experiments/033-computing/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.73, "sqlite_load_s": 1.6, "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": 42807, "new_orders_per_minute": 1145115, "undone_new_orders": 3665, "errors": 0, "new_order": {"done": 385372, "failed": 0, "p50_us": 1472, "p99_us": 3968}, "payment": {"done": 368000, "failed": 0, "p50_us": 1472, "p99_us": 3968}, "order_status": {"done": 34336, "failed": 0, "p50_us": 272, "p99_us": 1344}, "delivery": {"done": 34321, "failed": 0, "p50_us": 1472, "p99_us": 3968}, "stock_level": {"done": 34109, "failed": 0, "p50_us": 304, "p99_us": 1344}, "server_threads": "3", "cpu_us_per_transaction": 44.7, "core_shares": {"pure-owner": 0.9, "pure-checkpoint": 0.01}, "resident_mib": 450.0, "written_bytes_per_transaction": 0.0, "device_bytes_per_transaction": null, "consistency_failures": []}
+{"step": "end", "pure_resident_mib": 450.0, "pure_state_mib": 228.4, "pure_store_mib": 238.7, "sqlite_files_mib": 13.8, "grouped_sqlite_files_mib": 0.0, "pure_counts": {"bursts": 26497, "burst_events": 784111, "checkpoints": 38}}
diff --git a/research/experiments/033-computing/2026-10-04-tpcc-before-6.jsonl b/research/experiments/033-computing/2026-10-04-tpcc-before-6.jsonl
new file mode 100644
index 0000000..a3ad968
--- /dev/null
+++ b/research/experiments/033-computing/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.72, "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": 43579, "new_orders_per_minute": 1166369, "undone_new_orders": 3734, "errors": 0, "new_order": {"done": 392525, "failed": 0, "p50_us": 1472, "p99_us": 3456}, "payment": {"done": 374493, "failed": 0, "p50_us": 1472, "p99_us": 3328}, "order_status": {"done": 34950, "failed": 0, "p50_us": 256, "p99_us": 1088}, "delivery": {"done": 34879, "failed": 0, "p50_us": 1472, "p99_us": 3200}, "stock_level": {"done": 34737, "failed": 0, "p50_us": 288, "p99_us": 1216}, "server_threads": "3", "cpu_us_per_transaction": 44.2, "core_shares": {"pure-owner": 0.91, "pure-checkpoint": 0.01}, "resident_mib": 457.8, "written_bytes_per_transaction": 0.0, "device_bytes_per_transaction": null, "consistency_failures": []}
+{"step": "end", "pure_resident_mib": 457.8, "pure_state_mib": 232.2, "pure_store_mib": 238.7, "sqlite_files_mib": 13.8, "grouped_sqlite_files_mib": 0.0, "pure_counts": {"bursts": 26554, "burst_events": 798222, "checkpoints": 39}}
diff --git a/research/experiments/033-computing/bfs.c b/research/experiments/033-computing/bfs.c
new file mode 100644
index 0000000..0c2c518
--- /dev/null
+++ b/research/experiments/033-computing/bfs.c
@@ -0,0 +1,57 @@
+/* The C baseline of research 118: a breadth first search over the graph
+ * bfs.py writes (u32le nodes, u32le edges, then u32le from and to of each,
+ * sorted), adjacency as offsets into one array, from each start given.
+ * bfs GRAPH FROM TO [FROM TO ...]: per search a JSON line, hops, reached
+ * and the median of ROUNDS runs in microseconds. */
+#define _POSIX_C_SOURCE 200809L
+#include <stdint.h>
+#include <stdio.h>
+#include <stdlib.h>
+#include <time.h>
+
+static double now_us(void) {
+ struct timespec t;
+ clock_gettime(CLOCK_MONOTONIC, &t);
+ return t.tv_sec * 1e6 + t.tv_nsec / 1e3;
+}
+
+static int compare(const void *a, const void *b) {
+ double x = *(const double *)a, y = *(const double *)b;
+ return (x > y) - (x < y);
+}
+
+int main(int argc, char **argv) {
+ FILE *f = fopen(argv[1], "rb");
+ uint32_t n, m;
+ if (!f || fread(&n, 4, 1, f) != 1 || fread(&m, 4, 1, f) != 1) return 1;
+ uint32_t *from = malloc(4ull * m), *to = malloc(4ull * m), *start = calloc(n + 1, 4);
+ for (uint32_t k = 0; k < m; ++k)
+ if (fread(&from[k], 4, 1, f) != 1 || fread(&to[k], 4, 1, f) != 1) return 1;
+ fclose(f);
+ for (uint32_t k = 0; k < m; ++k) ++start[from[k] + 1];
+ for (uint32_t v = 0; v < n; ++v) start[v + 1] += start[v];
+ int32_t *depth = malloc(4ull * n);
+ uint32_t *queue = malloc(4ull * n);
+ for (int a = 2; a + 1 < argc; a += 2) {
+ uint32_t s = (uint32_t)atoi(argv[a]), t = (uint32_t)atoi(argv[a + 1]);
+ double runs[21];
+ uint32_t reached = 0;
+ for (int r = 0; r < 21; ++r) {
+ double began = now_us();
+ for (uint32_t v = 0; v < n; ++v) depth[v] = -1;
+ uint32_t head = 0, tail = 0;
+ queue[tail++] = s;
+ depth[s] = 0;
+ while (head < tail) {
+ uint32_t v = queue[head++];
+ for (uint32_t k = start[v]; k < start[v + 1]; ++k)
+ if (depth[to[k]] < 0) { depth[to[k]] = depth[v] + 1; queue[tail++] = to[k]; }
+ }
+ runs[r] = now_us() - began;
+ reached = tail;
+ }
+ qsort(runs, 21, sizeof(*runs), compare);
+ printf("{\"system\":\"c\",\"from\":%u,\"to\":%u,\"hops\":%d,\"reached\":%u,\"us\":%.1f}\n", s, t, depth[t], reached, runs[10]);
+ }
+ return 0;
+}
diff --git a/research/experiments/033-computing/bfs.py b/research/experiments/033-computing/bfs.py
new file mode 100755
index 0000000..8df19a8
--- /dev/null
+++ b/research/experiments/033-computing/bfs.py
@@ -0,0 +1,113 @@
+#!/usr/bin/env python3
+"""A breadth first search in one event (docs/design/018 stage 2, research
+118). A random graph of NODES nodes and EDGES edges (from and to uniform,
+no loops, each pair once; seed 118) goes into graph.aup on pure-serve
+(store in RAM, cores 0-2) as rows; then SEARCHES searches from random
+nodes, each one event (POST /inputs/route), timed by the client (the
+request on a kept connection; the event is nearly all of it), ROUNDS
+times each. The same searches run in C (bfs.c, adjacency as offsets) and
+in CPython (lists and a deque). All three must find the same hops and
+reach the same nodes.
+
+bfs.py PURE_SERVE AUP NODES EDGES SEARCHES ROUNDS a JSON line per search and system, then medians
+"""
+import collections
+import http.client
+import json
+import random
+import shutil
+import statistics
+import struct
+import subprocess
+import sys
+import tempfile
+import time
+from pathlib import Path
+
+HERE = Path(__file__).resolve().parent
+
+
+def main():
+ serve, aup = Path(sys.argv[1]).resolve(), Path(sys.argv[2]).resolve()
+ nodes, edges_wanted, searches, rounds = (int(a) for a in sys.argv[3:7])
+ rng = random.Random(118)
+ pairs = set()
+ while len(pairs) < edges_wanted:
+ a, b = rng.randrange(nodes), rng.randrange(nodes)
+ if a != b:
+ pairs.add((a, b))
+ edges = sorted(pairs)
+ out = [[] for _ in range(nodes)]
+ for a, b in edges:
+ out[a].append(b)
+ queries = [(rng.randrange(nodes), rng.randrange(nodes)) for _ in range(searches)]
+ work = Path(tempfile.mkdtemp(prefix='pure-033-', dir='/dev/shm'))
+ try:
+ with open(work / 'graph.bin', 'wb') as f:
+ f.write(struct.pack('<II', nodes, len(edges)))
+ for a, b in edges:
+ f.write(struct.pack('<II', a, b))
+ subprocess.run(['cc', '-O2', '-o', str(work / 'bfs'), str(HERE / 'bfs.c')], check=True)
+ c_runs = subprocess.run(['taskset', '-c', '1', str(work / 'bfs'), str(work / 'graph.bin')] +
+ [str(v) for q in queries for v in q], capture_output=True, text=True, check=True).stdout
+ found = {}
+ for line in c_runs.splitlines():
+ r = json.loads(line)
+ found[(r['from'], r['to'])] = (r['hops'], r['reached'])
+ print(json.dumps(r), flush=True)
+ times = {'c': [json.loads(line)['us'] for line in c_runs.splitlines()], 'python': [], 'pure': []}
+ for s, t in queries:
+ runs = []
+ for _ in range(rounds):
+ began = time.perf_counter()
+ depth = {s: 0}
+ queue = collections.deque([s])
+ while queue:
+ v = queue.popleft()
+ for w in out[v]:
+ if w not in depth:
+ depth[w] = depth[v] + 1
+ queue.append(w)
+ runs.append((time.perf_counter() - began) * 1e6)
+ assert (depth.get(t, -1), len(depth)) == found[(s, t)], (s, t)
+ times['python'].append(statistics.median(runs))
+ print(json.dumps({'system': 'python', 'from': s, 'to': t, 'us': round(statistics.median(runs), 1)}), flush=True)
+ subprocess.run([str(aup), 'build', str(HERE / 'graph.aup'), '-o', str(work / 'graph.pmod')], check=True)
+ host = subprocess.Popen(['taskset', '-c', '0-2', str(serve), '--module', str(work / 'graph.pmod'), '--store',
+ str(work / 'store'), '--port', '0'], stdout=subprocess.PIPE, stderr=subprocess.PIPE)
+ port = json.loads(host.stdout.readline())['port']
+ connection = http.client.HTTPConnection('127.0.0.1', port, timeout=600)
+
+ def request(method, path, body=b''):
+ connection.request(method, path, body, {'Content-Length': str(len(body))})
+ answer = connection.getresponse()
+ data = answer.read()
+ assert answer.status == 200, (path, answer.status, answer.getheader('X-Pure-Error'), data[:200])
+ return data
+
+ request('POST', f'/inputs/size?nodes={nodes}')
+ for k in range(0, len(edges), 80000):
+ request('POST', '/inputs/load', b''.join(struct.pack('<dd', a * 1048576 + b, b) for a, b in edges[k:k + 80000]))
+ for s, t in queries:
+ runs = []
+ for _ in range(rounds):
+ began = time.perf_counter()
+ request('POST', f'/inputs/route?from={s}&to={t}')
+ runs.append((time.perf_counter() - began) * 1e6)
+ got = (int(request('GET', '/views/far')), int(request('GET', '/views/found')))
+ assert got == found[(s, t)], (s, t, got, found[(s, t)])
+ times['pure'].append(statistics.median(runs))
+ print(json.dumps({'system': 'pure', 'from': s, 'to': t, 'hops': got[0], 'reached': got[1],
+ 'us': round(statistics.median(runs), 1)}), flush=True)
+ host.terminate()
+ host.communicate(timeout=60)
+ medians = {k: round(statistics.median(v), 1) for k, v in times.items()}
+ print(json.dumps({'nodes': nodes, 'edges': len(edges), 'median_us': medians,
+ 'pure_over_c': round(medians['pure'] / medians['c'], 1),
+ 'pure_over_python': round(medians['pure'] / medians['python'], 2)}), flush=True)
+ finally:
+ shutil.rmtree(work)
+
+
+if __name__ == '__main__':
+ main()
diff --git a/research/experiments/033-computing/graph.aup b/research/experiments/033-computing/graph.aup
new file mode 100644
index 0000000..a19d96d
--- /dev/null
+++ b/research/experiments/033-computing/graph.aup
@@ -0,0 +1,56 @@
+# The graph of research 118 (docs/design/018 stage 2): edges keyed by
+# from * 1048576 + to, loaded in bulk as rows; a breadth first search in
+# one event, its queue and what it has seen the event's own lists.
+record Edge {
+ link = 0
+ to = 0
+}
+record Seen {
+ node = 0
+ depth = 0
+}
+record Step {
+ node = 0
+}
+state edges: list of Edge by link
+state nodes = 0
+state hops = -1
+state reached = 0
+input size = message {
+ nodes: u32
+}
+input load = message {
+ rows: list of Edge
+}
+input route = message {
+ from: u32
+ to: u32
+}
+on size {
+ nodes = size.nodes
+}
+on load {
+ for r in load.rows {
+ edges.add(Edge { ..r })
+ }
+}
+on route {
+ let seen: list of Seen by node
+ let queue: list of Step
+ queue.append(Step { node: route.from })
+ seen.add(Seen { node: route.from })
+ for i in 0 .. nodes {
+ if i >= queue.count { break }
+ let q = queue.first + i
+ for e in edges[q.node * 1048576 .. q.node * 1048576 + 1048576] {
+ if !seen.has(e.to) {
+ seen.add(Seen { node: e.to, depth: seen[q.node].depth + 1 })
+ queue.append(Step { node: e.to })
+ }
+ }
+ }
+ hops = if seen.has(route.to) { seen[route.to].depth } else { -1 }
+ reached = seen.count
+}
+view far = hops
+view found = reached
diff --git a/research/experiments/033-computing/pairs.py b/research/experiments/033-computing/pairs.py
new file mode 100644
index 0000000..edadcec
--- /dev/null
+++ b/research/experiments/033-computing/pairs.py
@@ -0,0 +1,45 @@
+#!/usr/bin/env python3
+"""The pairs of runs.sh pairs as a table (research 118): 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/033-computing/record.py b/research/experiments/033-computing/record.py
new file mode 100755
index 0000000..7450fa6
--- /dev/null
+++ b/research/experiments/033-computing/record.py
@@ -0,0 +1,30 @@
+#!/usr/bin/env python3
+"""The pure-runs of aup's checks of docs/design/018 (transients and
+computing: the examples routes.aup and numbers.aup against their models),
+each recorded by 029's recorded-pure-run, so two machines' records compare
+run by run (029's compare.py).
+
+record.py AUP_ROOT PURE_ROOT OUT.jsonl the checks' report on stdout"""
+import importlib.util
+import json
+import os
+import subprocess
+import sys
+import tempfile
+from pathlib import Path
+
+aup_root, pure_root, out = (Path(a).resolve() for a in sys.argv[1:4])
+subprocess.run(['make', '-s', '-C', str(pure_root), 'build/pure-run'], check=True)
+subprocess.run(['make', '-s', '-C', str(aup_root), 'build/aup'], check=True)
+out.unlink(missing_ok=True)
+os.environ['PURE_RUN'] = str(pure_root / 'build' / 'pure-run')
+os.environ['PURE_RUN_LOG'] = str(out)
+recorded = pure_root / 'research' / 'experiments' / '029-across-machines' / 'recorded-pure-run'
+spec = importlib.util.spec_from_file_location('check', aup_root / 'tests' / 'check.py')
+check = importlib.util.module_from_spec(spec)
+spec.loader.exec_module(check)
+with tempfile.TemporaryDirectory(prefix='aup-check-') as directory:
+ work = Path(directory)
+ report = {'transients': check.transients(aup_root / 'build' / 'aup', recorded, work),
+ 'computing': check.computing(aup_root / 'build' / 'aup', recorded, work)}
+print(json.dumps(report))
diff --git a/research/experiments/033-computing/runs.sh b/research/experiments/033-computing/runs.sh
new file mode 100755
index 0000000..ead9848
--- /dev/null
+++ b/research/experiments/033-computing/runs.sh
@@ -0,0 +1,48 @@
+#!/bin/sh
+# The runs of research 118 (docs/design/018's stage 2), from the repository's
+# root, in steps, each under research/guard.py:
+# runs.sh build NAME COMMIT pure-serve of COMMIT, with its pure-crypto.so,
+# in ~/.cache/pure-033/NAME
+# runs.sh pairs FIRST LAST a host of one app, the builds before (850f783,
+# stage 2's criteria's parent) and after in
+# turns, as 026 ran them: TPC-C in RAM (W=1,
+# 64 terminals, 20 s) and the bank's queries
+# runs.sh counts the bank queries' instructions before and
+# after (025's count.py)
+# runs.sh bfs NODES EDGES SEARCHES ROUNDS bfs.py on the after build
+set -e
+out=research/experiments/033-computing
+builds=$HOME/.cache/pure-033
+day=$(date +%F)
+case "$1" in
+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" ;;
+bfs)
+ until awk '{ exit !($1 < 1.5) }' /proc/loadavg; do sleep 10; done
+ python3 research/guard.py --most 2048 -- python3 $out/bfs.py "$builds/after/pure-serve" ../aup/build/aup "$2" "$3" "$4" "$5" \
+ > "$out/$day-bfs-$2-$3.jsonl" ;;
+*) echo "runs.sh build NAME COMMIT | pairs FIRST LAST | counts | bfs NODES EDGES SEARCHES ROUNDS" >&2
+ exit 2 ;;
+esac