← All experiments

Field notes / Experiment guide

Is the broad edge rough coastline or internal holes?

Surface cells include the rims of holes inside the territory. Could those holes explain the ant’s broader boundary compared with the rotor?

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

An ant territory and an enlarged patch with visited boundary cells outlined in black.
The boundary is the set of visited cells next to unvisited ground, including hole rims. The zoom makes the measurement concrete: time spent on those cells and the chance of discovering a neighbour are different parts of growth. Figure source and recipe ↗

The idea under test

Removing internal-hole rims should remove the excess width if porosity, rather than the outer coastline, causes it.

What we learned

The excess remains on the outer interface. The hole explanation fails; the ant’s outer boundary itself carries the broader fluctuations.

What this leaves open

The outermost-radius estimator misses overhangs, and the connectivity convention matters. This still mixes persistent shape with local roughness.

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

hull-width: is the ants' wide edge coastline roughness or porosity?

Registered 2026-10-14 22:15 NZDT, base commit 797704a (dirty tree), before any hull_width run (only its oracle unit test, cargo test --release --example hull_width, was run: a synthetic square with two holes, expected counts hand-derived).

Question

W_surf (sd of the radius of surface cells, Kapri-Dhar definition) grows as ~t^0.22-0.25 for ants against ~t^0.10-0.13 for the rotor (2026-10-13-a4-boundary-width). The surface set is every visited cell with an unvisited 4-neighbour, so it includes the rims of interior holes (notes/frontier-results.md, P7: "not separated"). Territory fill is 0.76-0.98. Two readings:

  • H-hole (porosity). The ants' extra width is lake/pocket rims scattered through the bulk; the outer coastline grows like the rotor's.
  • H-rough (interface). The outer coastline itself roughens about twice as fast.

Design

Instrument examples/hull_width.rs: exterior = unvisited cells 4-connected to the grid border; outer surface cells touch the exterior, hole surface cells touch only enclosed unvisited cells. Per checkpoint k = 16, 18, ..., 30 it reports A, P_all/P_outer/P_hole, number and area of holes, W_all, W_out, the roughness of the angular profile r(theta) (512 bins, Fourier modes m <= 2 removed) with its band-summed spectrum (bands 3-4 ... 129-256, in units of rbar^2), and box counts of the outer cells at box sizes 1..64.

Cohort: the six A4 rules (RLR, RLRLRRRLLR, RLLLRLLRRLR, RLRLLRRLL, RLRLRRRRLR, RLLRLLRLRRRL), fresh patched-start seeds 221-224 (24 runs, RULE@SEED), and rotor seeds 221-228 (8 runs), 8192^2 grid, MAX_LOG2 = 30. Runs that leave the grid end early and are listed, not dropped silently. Calibration: the rotor is the reference walker; the synthetic-oracle test checks the hull split.

Estimators (fixed now): local exponent = least-squares log-log slope over k = 22, 24, 26, 28, 30 (per run); medians over runs, with between-run sd and a rule-level bootstrap (seed 20261014) for ants. Spectrum exponent: slope of log2(band power) on band index over bands 5-8 ... 65-128 (five bands), equal to -2 zeta_loc for a self-affine profile; hull dimension D_h: slope of log N against log(1/s) over s = 2 ... 32. All at the median over runs at k = 28 and 30. The outermost-cell-per-bin profile is an extremal statistic and biased for small R; that bias is the same for both walkers and is read off the rotor.

Predictions (fixed now; not to be edited after the run)

Prior: I lean H-rough (about 60%) because the same ratio ~2 appears in the temporal and in the radius-based fits, and holes are a small share of area (fill 0.76-0.98 is the loosest bound).

  1. Calibration. Rotor W_out exponent lies in [0.08, 0.14]. If not, the instrument or the window is suspect and nothing below is interpreted.
  2. Holes are ants' business. Median P_hole/P_all at k = 28: ants >= 3x the rotor's, and ants

    = 0.10.

  3. Decisive. Ants' median W_out exponent (k >= 22): >= 0.18 supports H-rough; <= 0.15 supports H-hole (gap mostly porosity); in between is reported as mixed. The ratio (ants W_out exponent)/(rotor's) must be reported either way.
  4. Spectrum. Ants' spectrum exponent zeta_loc exceeds the rotor's by >= 0.10 at k = 28 and 30 (H-rough); under H-hole the two differ by < 0.10.
  5. Hull dimension. Both D_h lie in [1.0, 1.4]; ants' exceeds the rotor's by >= 0.05.
  6. Decomposition check. beta_out (log P_outer on log A, k >= 22) is within 0.03 of beta_all for both walkers (holes a roughly constant share of the edge). Not met means holes are a changing share, which would add a drifting factor to the edge in the three-factor decomposition.

Decision rules

  • 1 fails: stop, debug the instrument (compare W_all with shape's Wsurf on the same specs; they must agree to 4 digits).
  • 3 and 4 both H-rough: the wider edge is a property of the outer interface; next step is equal-time height correlations on the hull (KPZ-type exponents), not more windows.
  • 3 and 4 both H-hole: revise the paper's edge claims to "porosity"; investigate hole statistics.
  • 3 and 4 disagree, or 3 mixed: report as unresolved; do not summarise as either.

Commands (WSL, from /mnt/f/Code/turmite)

export CARGO_TARGET_DIR=~/turmite-target
cargo test --release --example hull_width
cargo build --release --example hull_width
bash experiments/2026-10-14-hull-width/scripts/run_hull.sh
uv run experiments/2026-10-14-hull-width/scripts/hull_stats.py

Status

Run and analysed 2026-10-14; band-power follow-up (README, bottom) run and corrected 2026-10-15. OPEN, not run: real-space S(dtheta) and band power vs k (needs a rerun with r(theta) dumps), larger census-sampled rule set.

Results (2026-10-14 22:55 NZDT; predictions above unchanged)

Run: scripts/run_hull.sh (commit 797704a, dirty tree; 24 ant runs, 8 rotor runs, no escapes, k = 16..30), then scripts/hull_stats.py -> results/hull_stats.txt. Decision rule 1 cross-check: W_all equals shape's Wsurf on 160 matched (spec, k) rows to 4 digits (max diff 0.0000).

prediction outcome
1 calibration: rotor W_out exponent in [0.08, 0.14] held, 0.135 (sd 0.062 over 8 seeds; edge of the band)
2 holes: ants P_hole/P_all >= 0.10 and >= 3x rotor FAILED, direction reversed: ants 0.038, rotor 0.252 (k=28)
3 ants W_out exponent (k>=22) >= 0.18 -> H-rough held: 0.239 (sd 0.049, rule-bootstrap [0.220, 0.247]); rotor 0.135; ratio 1.77. W_all exponents: ants 0.239, rotor 0.130
4 spectrum zeta_loc, ants - rotor >= 0.10 met numerically (+0.183 at k=28, +0.200 at k=30; ants 0.63/0.60, rotor 0.44/0.40), but see below: the direction of my reasoning was wrong
5 hull dimension: ants >= rotor + 0.05, both in [1.0, 1.4] FAILED, reversed: ants 1.07/1.06, rotor 1.16/1.17
6 beta_out within 0.03 of beta_all held: max difference 0.017 (ants), 0.016 (rotor)

Reading (interpretation). The ants' wide edge is not porosity: removing hole rims leaves its exponent unchanged (0.239 -> 0.239), and ants have few hole-rim cells (4%). The rotor is the holey one (25% of its surface cells are hole rims), yet its W_out and W_all exponents also agree (0.135, 0.130), so the surface-width comparison in the paper was not biased by holes in either walker. H-hole is rejected; H-rough, as defined by prediction 3, holds. Prediction 4 was badly specified: a larger spectral exponent means a smoother profile at small scale, not a rougher one, and box counting agrees (ants' hull dimension is lower). Together they say the ants' outer hull has fewer small-scale kinks than the rotor's yet a larger overall width, i.e. the extra width sits at long wavelengths (lobes, notches), not in fine roughness. I did not register that reading, so it is a hypothesis, not a result. Caveats: 6 rules x 4 seeds (the A4 rules, chosen earlier and not sampled from the census); the r(theta) profile is the outermost cell per bin (extremal, misses overhangs; zeta_loc over bins 5-8..65-128 uses only 5 bands, rotor sd 0.08-0.11); the exterior is 4-connected (diagonal channels count as closed, unchecked per the notebook assumption); all exponents are finite-window (k >= 22); D_h over s = 2..32 is a short range. Next: equal-time height correlations/structure function of r(theta) at fixed k (registered first), and a larger rule sample from the census.

Band-power ratio: long-wavelength excess (registered 2026-10-15 20:56 +13:00, base commit da88e61, before scripts/hull_bands.py was written or any spec_bands value was inspected)

Scope note. The registered "next step" above (equal-time height correlations) cannot be run on the stored data: hull_width saved only the band-summed spectrum spec_bands (7 dyadic bands of the m-bin Fourier power of r(theta), modes m <= 2 removed, in units of rbar^2), not r(theta) itself. The band power is the Fourier-space form of the structure function, so this is the same question asked of existing results; a real-space S(dtheta) would need a rerun with profile dumps and is not done here. No new simulation. Data: results/hull_ants.csv, results/hull_rotor.csv (24 ant runs = 6 rules x 4 seeds; 8 rotor runs), k = 28 and 30 (k >= 28 so the bands have values). The only thing I have seen of the spectrum is its fitted slope over bands 5-8..65-128 (ants steeper by +0.18 / +0.20); the per-band values have not been looked at.

Hypothesis (H-lobe, from the unregistered reading above). The ants' extra width relative to the rotor sits at long wavelengths. Let R_b = (median over runs of band power b, ants) / (same, rotor) at a given k. Unit of inference for ants = rule (median over its 4 seeds first), rotor = its 8 runs.

Predictions.

  1. R_b > 1 for the two lowest bands (3-4 and 5-8) at both k = 28 and 30, in at least 5 of the 6 rules individually (rule median vs rotor median).
  2. R_b < 1 for the 65-128 band at both k, in at least 5 of 6 rules. (A steeper ants' slope forces some crossing; this checks that it happens at high, not low, wavenumber.)
  3. log R_b decreases with band index: Spearman rho(band index, log R_b) <= -0.8 on the 7 bands at both k (NaN bands dropped; need >= 5).
  4. The crossover band b* (first band with R_b < 1) is the same, to within one band, at k = 28 and 30.
  5. Control: the rotor's own spectrum between k = 28 and 30 changes by a factor in [0.7, 1.4] per band (checks that comparing windows at k = 28/30 is stable, so a ratio of order 2 is not window noise). Rotor run-to-run sd of log band power is reported as the noise floor; any ratio claimed as "> 1" must exceed 2 sd of the log rotor median (bootstrap over its 8 runs, seed 20261014).

Decision.

  • 1-3 all hold: the extra width is long-wavelength (lobes/notches); the follow-up is a profile-dump rerun to measure S(dtheta) and the lobe size in real space. Still observational.
  • 1 fails (R_b <= 1 in a low band): the ants' extra W is not carried by the lowest wavelengths; the H-lobe reading is dropped and the discrepancy goes into notes/open-questions-hypotheses.md.
  • 1 holds, 2 or 3 fails: report as mixed; no summary as either.
  • Confounds to state with the result: the profile is the outermost cell per bin (extremal, misses overhangs); 6 rules chosen earlier, not census-sampled; finite window; band power is normalised by rbar^2 so a bigger R_b means relatively rougher, not larger in cells.

Band-power ratio: result (2026-10-15 20:58 +13:00, commit da88e61; predictions above unchanged)

uv run experiments/2026-10-14-hull-width/scripts/hull_bands.py -> results/hull_bands.txt (no simulation; 6 ant rules x 4 seeds, 8 rotor runs; bootstrap seed 20261014).

Prediction Outcome
1 low bands R_b > 1 at both k in >= 5/6 rules HELD: R(3-4) = 4.09 / 5.99 and R(5-8) = 2.12 / 3.08 at k = 28 / 30; 5/6 and 6/6 rules; both bands exceed 2 sd of the rotor's bootstrap median
2 band 65-128 R_b < 1 at both k in >= 5/6 rules FAILED: k=28 R = 0.72 (5/6 rules), k=30 R = 0.97 (3/6 rules)
3 Spearman(band, log R_b) <= -0.8 at both k HELD: -1.00 and -0.96
4 crossover band within one band across k HELD (33-64 at k=28, 65-128 at k=30), but it moves to higher wavenumber with k
5 rotor band power k=30/k=28 within [0.7, 1.4] FAILED: 0.63, 0.46, 0.65, 0.56, 0.59, 0.62, 0.62

Decision rule: 1 and 3 hold, 2 fails -> mixed, not summarised as H-lobe. What the data do show: relative to the rotor the ants carry 2-6x the long-wavelength power (bands 3-4 to 17-32; exceeds the rotor noise floor by more than 2 sd of its log median), the excess decreases monotonically with wavenumber, and the high-wavenumber deficit seen at k = 28 is gone by k = 30 (R(129-256) is still 0.62 / 0.75). Prediction 5 failed, so the comparison is not stable across windows: the rotor's normalised band power drops by a factor of about 0.6 in every band from k = 28 to 30 while the ants' lowest band is nearly unchanged (1.34e-3 -> 1.23e-3; rotor 3.3e-4 -> 2.1e-4). That is an unregistered observation: it makes R_b at low wavenumber grow with k (4.1 -> 6.0), i.e. the ants' long-wavelength roughness does not decay as the rotor's does. It is consistent with the larger W exponent of the ants but is a post hoc reading from two checkpoints, so it is a lead, not a result. Caveats: single checkpoint pair; the rotor control noise at 3-4 is large (run sd of log 0.8-1.1); the profile is the outermost cell per bin; band power is in units of rbar^2 and rbar grows; 6 rules not census-sampled; real-space S(dtheta) not computed (no profile dumps). Next (unregistered): rerun with profile dumps at k = 24..30 to get the band power as a function of k per walker and the lobe size in real space.

Band-power ratio: correction after review (21:24 +13:00, commit da88e61)

hull_width.rs divides the profile spectrum by rbar^2 (line 166), so band power scales as (W/R)^2. The rotor's drop of about 0.6 per band between k = 28 and 30 (factor 4 in t) is then what the measured W exponents already imply: 4^(2(0.135 - 1/3)) = 0.58 for the rotor, and 4^(2(0.239 - 1/3)) = 0.77 for the ants (observed ants' lowest-band ratio 0.92 and median about 0.75). So prediction 5 was mis-specified (a size-free band power is not stable across windows because W/R itself decays); it still failed as registered and the verdict is not changed. The "lead" above (ants' long-wavelength power not decaying as the rotor's does, R_b growing with k) only restates the W-exponent gap between the walkers that was measured earlier; it is not an independent finding. The independent content of the band analysis is the within-k shape: R_b decreasing monotonically with wavenumber at both k (predictions 1 and 3).

Analysis notebook: notebook.ipynb

3 saved outputs · 3 code cells. Cells are not executed during publication. Download notebook

Hull width: is the ants' wide edge coastline roughness or porosity?

Experiment 2026-10-14-hull-width. Written for a reader who has not seen the work. Links: README.md, NOTEBOOK.md, notes/frontier-results.md (P7).

Question. The surface-width W_surf of ants grows as ~t^0.22-0.25 against ~t^0.10-0.13 for the rotor walker. Surface cells include the rims of interior holes. Is the extra width (H-hole) porosity or (H-rough) the outer coastline itself?

Assumptions. Exterior = unvisited cells 4-connected to the grid border (diagonal channels count as closed; not checked). The angular profile r(theta) is the outermost cell per bin (extremal, misses overhangs). Cohort: six A4 rules x 4 seeds (221-224) and 8 rotor seeds, MAX_LOG2 = 30, 8192^2 grid. All exponents are finite-window (k >= 22). Everything here was registered in the README before it was run; this notebook reads only committed results/.

Code
In [1]:
import hashlib, pathlib, subprocess
res = pathlib.Path('results')
if not res.exists(): res = pathlib.Path('experiments/2026-10-14-hull-width/results')
print('git HEAD (notebook run):', subprocess.run(['git','rev-parse','--short','HEAD'],capture_output=True,text=True).stdout.strip())
for f in ['hull_ants.csv','hull_rotor.csv','shape_check.csv','hull_stats.txt','hull_bands.txt','hull.commit']:
    print(f'{f:18s}', hashlib.sha256((res/f).read_bytes()).hexdigest()[:16])
print('producing commit of the run:', (res/'hull.commit').read_text().strip()[:8])
git HEAD (notebook run): da88e61
hull_ants.csv      0276430717ebe8da
hull_rotor.csv     9659d533160fb930
shape_check.csv    1d165d3c002519c8
hull_stats.txt     cbbd2d457d7e1307
hull_bands.txt     66e6d6d8490a36d5
hull.commit        0a89355a1fb6ea66
producing commit of the run: 797704a2

Registered analysis (hull_stats.txt)

Code
In [2]:
print((res/'hull_stats.txt').read_text())
# hull-width stats; commit 797704a2988ea8d958df39ac96e3ece27bec0980

== rotor (8 runs)
e_Wall      median 0.130  sd 0.061  n=8  rule-boot95 [0.089, 0.202]
e_Wout      median 0.135  sd 0.062  n=8  rule-boot95 [0.081, 0.206]
beta_all    median 0.514  sd 0.016  n=8  rule-boot95 [0.501, 0.529]
beta_out    median 0.513  sd 0.015  n=8  rule-boot95 [0.492, 0.523]
holefrac28  median 0.252  sd 0.011  n=8  rule-boot95 [0.249, 0.264]
holefrac30  median 0.256  sd 0.017  n=8  rule-boot95 [0.238, 0.261]
zeta28      median 0.443  sd 0.077  n=8  rule-boot95 [0.380, 0.480]
zeta30      median 0.403  sd 0.110  n=8  rule-boot95 [0.293, 0.473]
Dh28        median 1.159  sd 0.007  n=8  rule-boot95 [1.152, 1.164]
Dh30        median 1.165  sd 0.008  n=8  rule-boot95 [1.160, 1.170]

== ants (24 runs)
e_Wall      median 0.239  sd 0.049  n=24  rule-boot95 [0.214, 0.247]
e_Wout      median 0.239  sd 0.049  n=24  rule-boot95 [0.220, 0.247]
beta_all    median 0.525  sd 0.024  n=24  rule-boot95 [0.521, 0.533]
beta_out    median 0.524  sd 0.022  n=24  rule-boot95 [0.519, 0.543]
holefrac28  median 0.038  sd 0.027  n=24  rule-boot95 [0.015, 0.072]
holefrac30  median 0.035  sd 0.027  n=24  rule-boot95 [0.017, 0.066]
zeta28      median 0.626  sd 0.100  n=24  rule-boot95 [0.530, 0.663]
zeta30      median 0.603  sd 0.071  n=24  rule-boot95 [0.575, 0.627]
Dh28        median 1.071  sd 0.029  n=24  rule-boot95 [1.029, 1.098]
Dh30        median 1.064  sd 0.029  n=24  rule-boot95 [1.034, 1.096]

== registered checks
1 calibration: rotor W_out exponent 0.135 in [0.08,0.14]: True
2 hole share k=28: ants 0.038 rotor 0.252; ants>=0.10 and >=3x rotor: False
3 ants W_out exponent 0.239 -> H-rough; ratio to rotor 1.77; W_all ants 0.239 rotor 0.130
4 spectrum zeta k=28: ants-rotor +0.183 (H-rough if >= 0.10)
5 hull D k=28: ants 1.071 rotor 1.159 diff -0.088 (>=0.05; both in [1.0,1.4])
4 spectrum zeta k=30: ants-rotor +0.200 (H-rough if >= 0.10)
5 hull D k=30: ants 1.064 rotor 1.165 diff -0.101 (>=0.05; both in [1.0,1.4])
6 rotor: max |beta_out - beta_all| = 0.016 (<= 0.03: True)
6 ants: max |beta_out - beta_all| = 0.017 (<= 0.03: True)

rule-1 cross-check vs shape: 160 matched rows, max |Wall - Wsurf| = 0.0000

Shows. Calibration held (rotor W_out exponent 0.135 in [0.08, 0.14]; W_all agrees with shape Wsurf to 4 digits on 160 rows). Ants' W_out exponent 0.239, 1.77x the rotor's, so the extra width is on the outer interface: H-rough, H-hole rejected (ants' hole share of the edge is only ~4% vs 25% for the rotor, so the registered prediction 2 failed in the direction opposite to my guess). Spectrum and box-count dimension agree on direction, but a larger spectral exponent means a smoother profile at small scale, so prediction 4 was met numerically with the wrong sign convention in my own wording. Does not show. Where on the profile the extra width sits; that was an unregistered reading, tested below.

Follow-up: ants/rotor band-power ratio (hull_bands.txt, registered 2026-10-15 before the script existed)

Code
In [3]:
print((res/'hull_bands.txt').read_text())
# hull band ratios; commit da88e61b690507526ba4e2a2c017d9c7941beb91

## k=28: ant rules with finite bands 6 (runs 24), rotor runs 8
  band           3-4       5-8      9-16     17-32     33-64    65-128   129-256
  rotor med 3.29e-04  3.64e-04  2.25e-04  1.20e-04  7.23e-05  3.28e-05  1.69e-05
  ants med  1.34e-03  7.71e-04  4.46e-04  1.93e-04  7.15e-05  2.36e-05  1.04e-05
  ratio R_b    4.085     2.117     1.981     1.610     0.988     0.719     0.616
  rotor sd(log med)  0.602   0.200   0.103   0.127   0.055   0.087   0.057
  rotor run sd(log)  1.111   0.462   0.309   0.315   0.149   0.194   0.144
  rules with R>1 in bands 3-4 and 5-8: 5/6; rules with R<1 in 65-128: 5/6
  Spearman(band index, log R_b) = -1.000; crossover band (first R_b<1): 33-64
  bands where log R_b > 2 sd(rotor log median): ['3-4', '5-8', '9-16', '17-32']

## k=30: ant rules with finite bands 6 (runs 24), rotor runs 8
  band           3-4       5-8      9-16     17-32     33-64    65-128   129-256
  rotor med 2.06e-04  1.67e-04  1.46e-04  6.70e-05  4.26e-05  2.03e-05  1.05e-05
  ants med  1.23e-03  5.15e-04  2.72e-04  1.42e-04  5.42e-05  1.97e-05  7.89e-06
  ratio R_b    5.990     3.078     1.860     2.123     1.273     0.974     0.752
  rotor sd(log med)  0.405   0.188   0.090   0.124   0.047   0.107   0.054
  rotor run sd(log)  0.805   0.572   0.200   0.324   0.207   0.221   0.117
  rules with R>1 in bands 3-4 and 5-8: 6/6; rules with R<1 in 65-128: 3/6
  Spearman(band index, log R_b) = -0.964; crossover band (first R_b<1): 65-128
  bands where log R_b > 2 sd(rotor log median): ['3-4', '5-8', '9-16', '17-32', '33-64']

## rotor median band power k=30 / k=28: 0.626  0.459  0.650  0.559  0.589  0.617  0.622

== registered verdicts ==
1 low bands R>1 at both k, >=5/6 rules: True
2 band 65-128 R<1 at both k, >=5/6 rules: False
3 Spearman <= -0.8 at both k: True
4 crossover within one band across k: True
5 rotor k=30/28 band ratio in [0.7,1.4]: False

Shows. Relative to the rotor, the ants carry 2-6x the long-wavelength power (bands 3-4 to 17-32), decreasing monotonically with wavenumber (Spearman -1.00 / -0.96). Predictions 1, 3, 4 held; prediction 2 (deficit at 65-128 in >= 5/6 rules at both k) failed (R = 0.72 then 0.97; 5/6 then 3/6 rules); prediction 5 (rotor band power stable between k = 28 and 30) failed (x0.46-0.65 per band) but was mis-specified: the spectrum is divided by rbar^2, so it scales as (W/R)^2, which predicts x0.58 for the rotor and x0.77 for the ants from the measured W exponents (observed ~0.75 for the ants). The apparent 'ants do not decay like the rotor' lead only restates the W-exponent gap. Registered rule: mixed. Does not show. A real-space structure function or lobe size (profiles were not saved); anything beyond the W-exponent gap about how band power changes with k (two checkpoints only).

Caveats

6 rules chosen earlier, not census-sampled; 4 seeds per rule; rotor noise at the lowest band is large (run sd of log ~ 0.8-1.1); band power is in units of rbar^2 and rbar grows; hull dimension is over a short range s = 2..32; extremal profile.

Next steps (not run)

Rerun hull_width with profile dumps at k = 24..30 for S(dtheta) and band power versus k per walker; a larger rule sample from the census.

Read the dated lab log

Hull-width lab notebook

Append-only. Tags: intent, assumption, observation, interpretation, surprise, decision, dead-end, question, deviation.

2026-10-14 22:15 (+13:00) · 797704a · intent

Referee-style feedback on the cube-root paper asked whether the ants' faster W_surf growth is outer-interface roughening or hole rims. The notes (frontier-results.md P7) already said holes were never separated. Build an instrument that splits them and register predictions before running it. Informs the paper's edge claims (Sec. 7, limitations).

2026-10-14 22:15 (+13:00) · 797704a · assumption

Hole rims are the only difference between "all surface" and "outer surface" under 4-connectivity of the exterior. Diagonal-only channels to the border count as closed, so some pockets that are 8-connected to the outside are classed as holes. Check: rerun the split with 8-connected exterior on a few runs and compare P_hole. Untested.

2026-10-14 22:15 (+13:00) · 797704a · assumption

The outermost-cell-per-angular-bin profile is a fair proxy for the hull; it ignores overhangs and is an extremal statistic. Same bias for both walkers, but not shown to cancel in the spectrum exponent. Check by using the rotor as reference and by comparing with the outer-cell radial sd.

2026-10-14 22:15 (+13:00) · 797704a · observation

Oracle test cargo test --release --example hull_width passes (400-cell square, 3x3 and 1-cell holes: A=390, outer 76, hole rim 16, 2 holes, hole area 10).

2026-10-14 22:55 (+13:00) · 797704a · observation

run_hull.sh then hull_stats.py. No escapes. Ants W_out exponent 0.239, W_all 0.239; rotor W_out 0.135, W_all 0.130. Hole-rim share of surface cells: ants 0.038, rotor 0.252 at k=28. zeta_loc ants 0.63/0.60 vs rotor 0.44/0.40 (k=28/30); D_h ants 1.07 vs rotor 1.16. W_all matches shape's Wsurf exactly on 160 rows.

2026-10-14 22:55 (+13:00) · 797704a · surprise

Holes: the rotor has six times the hole-rim share of the ants; I had expected the reverse (prediction 2 failed). Hull dimension also came out lower for ants (prediction 5 failed). The ants' hull is smoother at small scale but wider overall.

2026-10-14 22:55 (+13:00) · 797704a · deviation

Prediction 4 was met numerically but I had the sign of "rougher" wrong (larger zeta_loc = smoother). Not counted as support for H-rough beyond prediction 3. First hull_stats.py run was killed for slowness (polars filtering inside the bootstrap loop) and the loop vectorised; estimators unchanged.

2026-10-14 22:55 (+13:00) · 797704a · interpretation

Porosity does not explain the wider ant edge (H-hole rejected, consistent across W_all/W_out). Remaining candidate: long-wavelength lobes/notches. Confidence moderate; 6 rules, finite window, extremal profile. Alternatives: the outermost-per-bin profile hides overhang structure; D_h range too short.

2026-10-15 20:55 (+13:00) · da88e61 · deviation

README Status still read "Registered; run pending" although the run and analysis are done (hull.done, hull_stats.txt, entries above). Corrected the status line only; no results or predictions changed. Next step (height correlations of r(theta)) remains unregistered and unrun.

2026-10-15 20:58 (+13:00) · da88e61 · intent

Run the registered-then-scoped follow-up: ants/rotor band-power ratio from stored spec_bands (profiles were not saved, so real-space S(dtheta) is impossible without a rerun). Registered in README before hull_bands.py existed or any band value was seen.

2026-10-15 20:58 (+13:00) · da88e61 · observation

hull_bands.py -> results/hull_bands.txt. R(3-4) 4.09/5.99, R(5-8) 2.12/3.08 (k=28/30); Spearman -1.00/-0.96; crossover 33-64 -> 65-128. P1, P3, P4 held; P2 failed (R(65-128) 0.72, 0.97; 5/6 then 3/6 rules); P5 (rotor stability) failed: rotor band power x0.46-0.65 between k=28 and 30.

2026-10-15 20:58 (+13:00) · da88e61 · surprise

The rotor's normalised spectrum drops about 40% in every band over two checkpoints while the ants' lowest band barely moves. I registered P5 as a stability check expecting [0.7, 1.4]; the failure is informative (windows differ), not just a failed control.

2026-10-15 20:58 (+13:00) · da88e61 · interpretation

Mixed per the registered rule. Long-wavelength excess in the ants is robust at both k; the high-wavenumber deficit is not. Whether ants' low-band power fails to decay with k (vs rotor decaying) needs more checkpoints; two points cannot distinguish a trend from window noise. Confidence low-moderate.

2026-10-15 20:58 (+13:00) · da88e61 · decision

No rerun yet. Notebook.ipynb for this experiment not yet extended with this section.

2026-10-15 20:59 (+13:00) · da88e61 · deviation

Correction to my own earlier session summary: I said hull-width had an executed notebook. notebook.ipynb was still the unfilled template. It is now written and executed (clean kernel, nbconvert under uv --with) and covers the registered analysis and the band-power follow-up.

2026-10-15 21:24 (+13:00) · da88e61 · deviation

Review correction: P5 (rotor band power stable between k=28 and 30) was mis-specified because the spectrum is divided by rbar^2, so it scales as (W/R)^2: predicted rotor factor 0.58, observed 0.46-0.65; ants predicted 0.77, observed ~0.75. The "surprise" entry above and the README "lead" (R_b growing with k) restate the already-measured W-exponent gap; they are not new. P5 verdict (FAILED as registered) unchanged. Status line updated: band follow-up done, real-space S(dtheta) still open.

2026-10-14-hull-width · Source revision ba38590b33e3

Original source ↗ · Input hashes

Introductions summarize the evidence; the expandable record preserves the original predictions, methods and caveats. Figures and notebooks are published as saved. Publication runs no simulations or notebook cells.