Field notes / Experiment guide
Is the split between slow and compact growers arbitrary?
The census separates very slow rules from a broad compact-growth peak. Does the headline exponent depend on exactly where we draw the cut?
New to these ants? Start here.
An ant moves on a grid of coloured squares. Each colour tells it to turn left (L) or right (R). It advances that square to the next colour, then steps forward. A rule such as RLR is the list of turns, starting at colour zero. On a blank grid the same rule always makes the same trajectory.
Territory means every cell visited so far. Its boundary consists of visited cells with an unvisited neighbour. A highway is a repeating pattern of motion that carries the ant away. A tether means repeated returns to a small home region.
Growing like the cube root of time means taking eight times as many steps to double a linear size. The rotor walker is a comparison model that follows and rotates arrows stored on cells. A seed makes a random starting pattern reproducible; the ant itself can still move deterministically.
We distinguish c, the chance of discovering a cell per boundary step, from kappa (κ), time at the boundary normalized by perimeter divided by area. Explaining their values is harder than using them to account for growth.
A closer look

The idea under test
If the compact-growth peak is robust, reasonable cut changes should leave its centre nearly unchanged.
What we learned
The central compact-growth estimate moves little across tested cuts, but the strict registered tolerance fails. The density trough is not exactly at the original cut.
What this leaves open
Robustness of a summary does not establish a sharp physical phase transition.
Read the evidence and reproduction recipe ↗
Inside the experiment
Methods, registered predictions, exact commands and saved analysis. These are the working research documents; expand them for the detail behind the introduction.
Methods and original experiment record
alpha-gap: is the log/blob cut at alpha = 0.15 objective?
Registered 2026-10-15 23:32 +13:00, before any code was written (reviewer response, complaint 2).
Question
The paper calls a rule log-growing if its census width exponent alpha < 0.15, "chosen by eye from the gap in the exponent histogram". Is there an objective gap, and does the blob median depend on the cut?
Registered tests and predictions (census.csv, probe_summary.csv only)
- Hartigan dip test on the raw alpha distribution. Prediction: p < 0.05.
- Cut sensitivity at 0.05, 0.10, 0.15, 0.20, 0.25: N, median blob alpha_w, IQR. Prediction: median changes by < 0.001 for any cut in [0.10, 0.25].
- Two-component Gaussian mixture on raw alpha. Prediction: low component mean < 0.12.
- Histogram with the cut marked.
Command
uv run experiments/2026-10-15-alpha-gap/scripts/gap_robustness.py (seed 20261015; adds diptest, scikit-learn to pyproject).
Outputs: results/gap_robustness.json, results/alpha_gap.pdf|png.
Results (appended after the run; predictions above are unchanged)
Population: 3512 census rules; 3208 non-builders (571 log, 2637 blob). Builder alpha is on a different regime and is excluded from the distribution tests (the dip test on all 3512 gives the same answer).
| Prediction | Outcome |
|---|---|
| Dip p < 0.05 | Met, dip = 0.047, p < 0.001 (n = 3208). Weak evidence: it only rejects unimodality, and a long left tail would do that. |
| Median moves < 0.001 for cuts in [0.10, 0.25] | Not met. Medians 0.3312 (cut 0.10), 0.3326 (0.15), 0.3328 (0.20), 0.3329 (0.25): spread 0.0017, max deviation from the 0.15 cut 0.0014 (all from the 0.10 cut). For cuts 0.15–0.25 the spread is 0.0003. At cut 0.05 the median is 0.3293. |
| GMM low mean < 0.12 | Met: components at 0.094 (sd 0.031, weight 0.19) and 0.334 (sd 0.025, weight 0.81). |
Unregistered but important: the histogram does not show an empty gap at 0.15. The log-growers' density falls off across 0.10–0.17 (20, 29, 20, 8 rules per 0.01 bin at 0.12–0.16; 16 rules in [0.145, 0.155)), and the true trough is at 0.17–0.26 (0 to 4 rules per bin), above the cut. So 0.15 sits on the flank of the log-grower peak, not inside a gap; 0.2 would be a more defensible midpoint of the empty region. The conclusion that matters (median 0.333 insensitive to the cut) holds to within 0.0003 for any cut in the trough region.
Analysis notebook: notebook.ipynb
No saved outputs. This render shows the saved narrative and code; cells have not been executed for publication. Download notebook
alpha-gap: is the log/blob cut objective?
Reads only committed results/gap_robustness.json. Question, registered predictions and caveats: see README.md. Provenance: commit and seed are stored in the JSON.
Code
import json, pathlib
r = json.loads((pathlib.Path('results')/'gap_robustness.json').read_text())
print('commit', r['commit'], 'seed', r['seed'], 'n', r['n_nonbuilder'])
print('dip', r['dip_nonbuilder'])
for row in r['cut_sensitivity']: print(row)
print('gmm', r['gmm2_nonbuilder'])
print('trough', r['trough_in_0.05_0.30'])
Shows: blob median 0.331-0.333 for cuts 0.10-0.25 (spread 0.0017; the registered <0.001 prediction failed); GMM low component 0.094; density trough at 0.17-0.26, not at 0.15.
Does not show: that the log/blob boundary is a sharp phase transition; the dip test only rejects unimodality.
Next: none planned.
Read the dated lab log
Lab notebook: alpha-gap
Append-only. Newest entry last. Tags: intent, assumption, observation, interpretation, surprise, decision, dead-end, question, deviation.
2026-10-15 23:32 (+13:00) · 07a0951 · intent
Test whether the log/blob cut at alpha = 0.15 is objective (reviewer complaint 2). Tests and predictions are in README.md, registered before code.
2026-10-15 23:50 (+13:00) · 07a0951 · observation
gap_robustness.py run. Dip p < 0.001; GMM low component 0.094; blob median 0.3312/0.3326/0.3328/0.3329 for cuts 0.10/0.15/0.20/0.25 (0.3293 at 0.05).
Histogram trough is 0.17-0.26, not at 0.15. Details in results/gap_robustness.json.
2026-10-15 23:50 (+13:00) · 07a0951 · surprise
Registered prediction 2 (change < 0.001 for cuts in [0.10, 0.25]) failed: spread 0.0017, driven by the 0.10 cut admitting ~200 slow rules. Predictions 1 and 3 held.
2026-10-15 23:50 (+13:00) · 07a0951 · interpretation
The paper's phrase "chosen by eye from the gap" overstated: there is a density trough, but at 0.17-0.26. The cut should be described as an operational boundary on the flank of the log-grower peak; results are insensitive for cuts >= 0.15. The dip test is weak evidence (rejects unimodality only). Alternative not excluded: alpha for log-growers is itself a poor estimator when growth is logarithmic (fit over 6 octaves), so the left tail's shape is partly estimator noise.
2026-10-15 23:50 (+13:00) · 07a0951 · decision
Report the failed prediction and the trough location in the paper; keep cut 0.15 for continuity with all earlier numbers, and show the sensitivity table.