Field notes / Experiment guide
What do the longest trips away from the boundary tell us?
When an ant leaves the edge, how do its longest interior excursions relate to its eventual boundary occupation?
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.
The idea under test
A larger extreme-excursion cutoff relative to territory radius should accompany lower boundary occupation.
What we learned
The descriptive negative association persists across the tested windows, but the controls do not support treating it as calibrated mechanistic evidence.
What this leaves open
Excursion durations are not spatial chord lengths. Coarse quantile bins, unfinished excursions and selected rules limit interpretation.
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
t1-excursion-tomography
Status (added 2026-10-15): closed. T1/T1b analysis, README, cross-cutting note and executed notebook.ipynb agree (see NOTEBOOK.md, last entries). Its "next work" (matched-area comparison) was done in experiments/2026-10-14-kappa-matched-area: unresolved-to-weak, no T2 on that pair set. An intervention (T2) remains undesigned.
Migrated legacy investigation (2026-10-14). Its files used to sit in the flat data/ directory (and calib/, occ/, snaps/, dumps*, knock* where listed) with the label prefix below; experiments/_migration/map.tsv gives the exact old -> new path of every file. This stub was generated from file names and script docstrings. It is not the original write-up: the question, timestamped hypotheses, commands and results are in notes/ (mainly notes/frontier-results.md, notes/frontier-status.md, notes/research-frontier*.md; search for the label), and the producing command is usually in the script docstring or a run_*.sh here.
Old labels / prefixes: t1, t1b
Continuation registered 2026-10-14 22:00 NZDT
Base commit: 797704a2988ea8d958df39ac96e3ece27bec0980 (dirty workspace).
Question: does the exploratory extreme-excursion cutoff relative to radius
retain its negative association with kappa across patched seeds?
Before measurement: expect Spearman correlation between rule-mean
ln(L_99.9/R_eq) and rule-mean ln(kappa) to be negative at both k=22 and
k=25. This is a descriptive consistency check on previously seen data,
not an independent confirmation or causal test. No significance threshold.
Use the existing T1b log-linear binned quantile, additionally report its
containing-octave bounds, between-seed sample sd (ddof=1), and open-time
shares. Keep all seeds; separately describe seeds with open share <=0.10
as a censoring sensitivity, which cannot remove censoring bias.
No fit or instrument change: no new calibration is required; report existing
rotor/random-walk conservation and kappa controls on these same inputs.
Script: uv run experiments/2026-10-14-t1-excursion-tomography/scripts/t1b_cutoff.py.
Analysis seed 20261014 (no random operations); simulation seed IDs are read
from specs. Notebook reads tracked source inputs and the new generated
summary once committed; no commit is made without user instruction.
Continuation results (2026-10-14)
results/t1b_cutoff.json records the command, commit, script and input hashes;
t1b_cutoff_seeds.csv and t1b_cutoff_rules.csv retain quantile bounds and
between-seed sample sd. At k=22 and 25, respectively, 44 rules have 6–8 and
7–8 available seed records. Ten escaped windows were excluded; some specs
also lack completed-excursion bin records. Spearman correlations of rule-mean
ln cutoff/radius with rule-mean ln kappa are -0.835 and -0.918. The registered
descriptive direction holds. Median between-seed sd of ln cutoff/radius is
0.129 and 0.128; median geometric-mean ratios are 156.1 and 147.1 steps/cell.
Keeping only seed windows with open-time share <=0.10 gives correlations
-0.830 and -0.921 across all 44 rules (325 and 334 seed windows).
This remains a size-contaminated descriptive association, not a causal explanation. The binned quantile spans an octave; excursion duration divided by radius has units steps/cell and is not a chord displacement. All input conservation flags pass. Final-window rotor kappa is 1.971 +/- 0.040 sample sd (four seeds), outside the original mean tolerance 2.00 +/- 0.01; no random walk records reach k=25. Report these failed/unavailable controls rather than claiming calibration success. No estimator fit was changed.
Validation: cargo test --release passed in the current dirty workspace
(results/t1b_cutoff_tests.log). The shareable notebook executed top to
bottom under uv run --with nbconvert --with ipykernel --with nbformat jupyter nbconvert --to notebook --execute --inplace experiments/2026-10-14-t1-excursion-tomography/notebook.ipynb
(results/t1b_cutoff_notebook.log). New outputs remain uncommitted as requested
by repository policy. Next work: matched-area comparison or intervention,
with exact quantiles and explicit censoring treatment.
Scripts
scripts/t1_audit.py: T1 audit: is D_med/R vs kappa a normalisation artefact (D in cells ~ 1)?scripts/t1_depth_analysis.pyscripts/t1_excursions.py: Analysis of T1 excursion tomography data (experiments/2026-10-14-t1-excursion-tomography/results/t1_excursions.csv).scripts/t1_pair_disp.pyscripts/t1_specs.py: Patched starts seeds 0..7scripts/t1b_analysis.py: T1b analysis (notes/excursion-tomography-2026-10-13.md section 7).
Results
12 entries in results/ (2 are .log/.done markers); csv/json/txt outputs, *_stats.txt hold the summaries quoted in the notes.
Analysis notebook: notebook.ipynb
1 saved outputs · 1 code cells. Cells are not executed during publication. Download notebook
Question and why it matters
Continue T1b: describe the extreme completed-excursion cutoff relative to radius. See README.md and ../../notes/excursion-tomography-2026-10-13.md. This is reuse of observational data, not independent confirmation.
Assumptions and definitions
L999 uses log-linear interpolation in its containing log2 bin. Bounds span one octave. Escaped windows are excluded; unavailable bin records reduce seed counts. Open-time filtering cannot correct censoring. Patched seeds are replicates within rules.
Provenance, data and method
Run scripts/t1b_cutoff.py under uv. Heavy simulation is historical; this notebook only reads results. New outputs await user-authorized commit. Input hashes are checked below.
Code
from pathlib import Path
import hashlib, json, subprocess
import polars as pl
SEED = 20261014
root = next(p for p in [Path.cwd(), *Path.cwd().parents] if (p / 'Cargo.toml').exists())
exp = root / 'experiments/2026-10-14-t1-excursion-tomography'
summary = json.loads((exp / 'results/t1b_cutoff.json').read_text())
print('Analysis commit:', summary['commit'], 'seed:', SEED)
print('Reading date:', subprocess.check_output(['date', '-I'], text=True).strip())
for relative, expected in summary['inputs'].items():
actual = hashlib.sha256((root / relative).read_bytes()).hexdigest()
assert actual == expected
print(relative, actual)
for name in ['t1b_cutoff.json', 't1b_cutoff_rules.csv', 't1b_cutoff_seeds.csv']:
print(name, hashlib.sha256((exp / 'results' / name).read_bytes()).hexdigest())
print(json.dumps(summary['windows'], indent=2))
print('Controls:', summary['controls'])
rules = pl.read_csv(exp / 'results/t1b_cutoff_rules.csv')
print(rules.filter(pl.col('k') == 25).select('rule', 'n_seeds', 'ln_ratio_mean', 'ln_ratio_sd').head(8))
Results
Negative association at both windows matches the descriptive prediction. This does not establish a mechanism; radius remains in the denominator.
Caveats and controls
Between-seed sample sd is reported, not fit error. The quantile has octave resolution. Rotor baseline misses the registered 2.00 +/- 0.01 band; random-walk controls are unavailable at k=25. These controls prevent treating this analysis as calibrated mechanistic evidence.
What this changes / next steps
The descriptive ratio association persists. Next: matched-area or intervention study, exact quantile resolution and censoring treatment. Do not infer that excursion duration is a spatial chord length.
Read the dated lab log
Excursion tomography lab notebook
2026-10-14 22:00 (+13:00) · 797704a · intent
User requested continuation of an experiment and explicitly reminded me to follow AGENTS.md. Continue the unresolved T1b cutoff analysis using existing committed bin/window inputs; preserve legacy files and all unrelated working changes. Register the descriptive follow-up in README before measurement. Add seed dispersion and an honest treatment of quantile resolution. No new simulation or tail fit is planned.
2026-10-14 22:00 (+13:00) · 797704a · assumption
The log-linear within-bin 99.9th percentile used by T1b is an approximation, not an observed exact quantile. Its containing octave gives rigorous bounds for the completed-excursion sample. Window-crossing excursions remain censored; open-time share diagnoses but does not correct this bias. Seed replicates are patched starts, not independent rules. Input provenance is historical commit dd0e234 plus work then uncommitted, as recorded by t1b.commit; hashes will identify current input bytes.
2026-10-14 22:07 (+13:00) · 797704a · deviation
First analysis invocation failed its no-escape input assertion. Inspection of t1b_windows.csv found escaped windows; conservation remained true. Exclude escaped windows before any summary rather than treating board-truncated runs as complete. Report available seed counts instead of assuming eight. Command: the README analysis command. Initial sandbox WSL access failed; escalated execution succeeded in reaching the script. No result files were written by the failed analysis.
2026-10-14 22:15 (+13:00) · 797704a · observation
README analysis command produced results/t1b_cutoff.json and seed/rule CSVs. Across 44 rules, correlations at k=22/25 are -0.835/-0.918; median between-seed ln-ratio sample sd is 0.129/0.128. Ten escaped windows were excluded; available bin records give 6–8/7–8 seeds per rule. Rotor final-window kappa is 1.971 +/- 0.040 (four seeds); no random-walk final-window records exist. Conservation passes. See JSON input hashes and README for sample counts and sensitivity results.
2026-10-14 22:15 (+13:00) · 797704a · interpretation
The descriptive direction holds but radius remains a confound; this is no mechanistic advance. Quantile octave bounds and missing/truncated records limit inference. Duration/radius is not a chord length. Rotor mean misses its registered tolerance and the random-walk final-window control cannot be assessed.
2026-10-14 22:16 (+13:00) · 797704a · decision
Session closes with analysis, README, cross-cutting note and executed shareable notebook agreeing. Release suite passed (results/t1b_cutoff_tests.log), clean-kernel notebook execution passed (results/t1b_cutoff_notebook.log), and rerunning the analysis reproduced all three output hashes. No commits or dependency changes. New outputs await a requested commit; notebook inputs are tracked historical results plus these new summaries. Next: matched-area/intervention design and exact quantile/censoring treatment rather than interpreting this ratio causally.
2026-10-14 22:30 (+13:00) · 797704a · decision
User requested the proposed manuscript change. Added a qualitative negative-result paragraph to the cube-root paper's kappa discussion and qualified the conclusion's claim that the hitting-problem candidate was untested. Included size, quantile, censoring and control limitations; no new headline claim or numerical result. Rebuilt main.pdf with typst compile --root . research-outputs/cube-root-growth-paper/main.typ research-outputs/cube-root-growth-paper/main.pdf. Existing figure and number assets were preserved. Text extraction confirmed the two changed passages on pages 10 and 22; rendered those pages for visual review. Poppler was unavailable, so used uv with pypdf for text and Typst for PNG rendering. No dependency-file changes or commits.