Field notes / Experiment guide
A loop intervention that was deliberately not run
If short square loops keep an ant near the edge, would suppressing those loops change its 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.
A closer look

The idea under test
Targeted loop suppression should have a larger effect than matched-rate noise, but only after the parent loop experiment passes its gate.
What we learned
The parent’s required mediation test fails, so this follow-up closes without running. The folder is a plan, with no intervention data.
What this leaves open
There is no experimental result for loop surgery. Keeping the unrun test visible prevents a proposed mechanism from looking like established evidence.
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
Loop surgery: does breaking 2x2 loops lower kappa? (causal test of H-loop)
Status: CLOSED without running (2026-10-19). Gate failed: the parent's P2 failed (H-loop dead at this scale). Nothing was implemented, frozen or measured. The text below is the original draft plan, kept unedited for the record; its S1-S4 were never registered and make no claim.
Depends on ../2026-10-16-kappa-square-loop/ (H-loop, operational definitions of "loop step", P1-P4 and the decision table). Do not run
this before that folder's P2 holds; if P2 fails the hypothesis is dead and this folder should be marked closed without running.
Question
Observation cannot separate "loops carry the lead effect" from "high boundary occupancy creates more loops". An intervention can: suppress loop completions in high-lead rules and see whether kappa falls toward the low-lead level, against a control that perturbs the same number of steps without targeting loops.
Intervention (new walker, to be written: src/walkers.rs LoopBreakAnt, tested against a reference)
Ant with the unchanged rule, except: when the next step would be a loop step (the last three turns were the same letter and the
current cell would make the fourth equal turn close on the cell entered 4 steps ago), with probability q flip this turn. Flipping a turn
is a deterministic function of (state, hash(seed, t)), so runs stay reproducible and rayon-order independent.
Arms, all with the same rule set, seeds and probe 27 8192 pipeline as the parent:
- S (surgery):
LoopBreakAntatqin {0.25, 0.5, 1.0} [choose after the instrument pilot]. - N (noise control): flip one turn at random times at the same mean per-step rate as arm S measured in the pilot, not tied to loops. Matched on rate per rule, not globally.
- M (mirror control): flip turns that would close a non-loop shape: any turn ending an alternating (L,R,L,R) four-step path closing on its start. Same rate matched; tests that the shape, not the closure geometry, matters.
- 0 (baseline): the unmodified ant (already in the parent's data for these rules).
Cohort: [choose] 8 rules per lead 1..6 from the 176 fresh stationary rules, chosen by a seeded draw stratified on lead and ln A22 tertile (seed 20261016),
8 background seeds 601..608. Drawn before any surgery run, list committed in results/cohort.txt.
Draft predictions (to be frozen as decision entries in NOTEBOOK.md before any run)
Let d_S(r) = mean over seeds of ln kappa under S minus under 0, per rule, similarly d_N, d_M.
- S1 d_S - d_N is negative for lead >= 4 rules (mean of per-rule differences, 95% CI upper bound < 0). Loop suppression reduces kappa beyond what generic noise does. ~45%.
- S2 dose-response: (d_S - d_N) grows more negative with lead (slope of per-rule difference on lead, CI upper bound < 0) and with q. ~40%.
- S3 specificity: (d_S - d_M) < 0 with the same sign test. ~40%.
- S4 the share of the lead effect removed: [mean ln kappa of lead 5-6 rules under S] - [mean of lead 1-2 rules under 0] over the unsurgered lead gap (use parent residuals for the gap, 0.15 per step, concave) is >= 0.5 at q = 1. ~25%.
- Known issue: any perturbation changes growth regime (noisy-rotor kappa rose during crossover;
notes/kappa-experiment-design.md). Perturbed rules may leave the stationary core band; retention by arm is reported (M4-style) and a dropped rule is not imputed. If retention differs strongly between S and N, S1-S3 are uninformative, not null.
Interpretation table (draft)
| S1 | S3 | Reading |
|---|---|---|
| holds | holds | loops causally carry (part of) the lead effect |
| holds | fails | any trap-geometry breaking lowers kappa; loops not special |
| fails | any | loops are not the carrier at this resolution, or the intervention cannot separate them from noise; say which using the retention table |
Commands
None yet. Needs: LoopBreakAnt, its test against a reference, a probe front-end spec syntax (for example lbreak:RULE:SEED:Q), then run.sh and scripts/analyse_surgery.py. See PLAN.md.
Analysis notebook: notebook.ipynb
1 saved outputs · 1 code cells. Cells are not executed during publication. Download notebook
Loop surgery: causal test of H-loop
Question and why it matters
Does suppressing 2x2 loop completions lower kappa in high-lead rules more than matched-rate noise does? Links: README.md, PLAN.md, NOTEBOOK.md, ../2026-10-16-kappa-square-loop/README.md.
Assumptions and definitions
CLOSED 2026-10-19 without running: the parent square-loop experiment's P2 failed, so the gate was not met. Skeleton only, no code and no data. Assumptions are in NOTEBOOK.md (turn flips perturb more than loops; rate matching is not full matching).
Provenance
Prints the git commit, date, seed and a SHA-256 for every input file.
Code
import hashlib, subprocess, datetime
from pathlib import Path
import numpy as np
SEED = 20261016 # change per experiment; record it in the README
np.random.seed(SEED)
# notebooks have no __file__: search upward for the repo root
ROOT = next(p for p in [Path.cwd(), *Path.cwd().parents] if (p / "AGENTS.md").exists())
EXP = next(p for p in [Path.cwd(), *Path.cwd().parents] if (p / "NOTEBOOK.md").exists())
INPUTS = [ # committed inputs only: results/ and committed data/. Never dumps/ or scratch/
# no committed inputs yet
]
missing = [p for p in INPUTS if not p.exists()]
assert not missing, f"missing inputs: {missing}"
sha = subprocess.run(["git", "rev-parse", "--short", "HEAD"], cwd=ROOT, capture_output=True, text=True).stdout.strip()
print("git", sha, "| run", datetime.datetime.now().isoformat(timespec="minutes"), "| seed", SEED)
for p in INPUTS:
print(hashlib.sha256(p.read_bytes()).hexdigest()[:16], p.relative_to(ROOT))
Data and method
Not started. See PLAN.md.
Results
TODO. Gate: only meaningful if the square-loop experiment's P2 holds.
Caveats and controls
Planned: matched-rate noise arm, non-loop shape arm, retention table by arm, comparison of growth exponents across arms.
What this changes, next steps, open questions
Next: HANDOFF.md.
Read the dated lab log
Lab notebook: loop surgery (causal test of H-loop)
Append-only. Newest entry last. Never edit an old entry; correct it with a new one
(corrects: <timestamp>). Tags: intent, assumption, observation, interpretation,
surprise, decision, dead-end, question, deviation. See experiments/README.md.
2026-10-16 21:00 (+13:00) · 9dce376 · intent
Scaffolded as the interventional follow-up to ../2026-10-16-kappa-square-loop/, at the user's request for directories that let later researchers evaluate the predictions. Draft only: nothing is frozen or run. Purpose: observational P3 cannot rule out reverse causation (high boundary occupancy producing more loops), so suppress loops directly and compare to matched-rate noise and a non-loop shape control.
2026-10-16 21:01 (+13:00) · 9dce376 · assumption
(a) A loop-completing turn can be flipped without changing the ant's local environment in other ways that matter to kappa; this is false in general (the flipped step writes a different next heading and the cell colour still increments), so arm N and M controls matter more than arm S alone. (b) Matching arms on flip rate is enough to match "amount of perturbation"; it is not: flips at loop closures happen in a correlated, state-dependent way. Compare realised dynamics (new-cell rate, area growth exponent) across arms as well as kappa. Both untested.
2026-10-16 21:02 (+13:00) · 9dce376 · question
Is there a cleaner intervention than flipping turns, for example a rule-level edit that removes loops while holding the lead and area fixed? None found; a lead-k rule always loops on fresh cells by construction (P1), so lead and loop duration cannot be separated by rule edits alone. This is why the intervention acts on trajectories, not rules.
2026-10-16 20:56 (+13:00) · 9dce376 · deviation (corrects: timestamps of entries above)
The entries above carry times 20:55-21:02, written while the wall clock was at about 20:50-20:54, so some are stamped slightly in the future. Order is correct; treat the stamps as approximate. Also: the parent mutant probe run finished 20:53 (../2026-10-16-kappa-leadrun-fresh/dumps/mutants.done exists); analyse_mutants.py had not been run when this was written.
2026-10-19 21:35 (+13:00) · 51c3f83 · decision (closure; corrects nothing above)
Closed without running. The gate in README and HANDOFF was "run only if the parent's P2 holds". ../2026-10-16-kappa-square-loop/ ran its single analysis on 2026-10-16 (results/analysis.txt) and P2 FAILED (loop-step fraction by lead 1..6: 0.159, 0.184, 0.166, 0.179, 0.202, 0.257, not monotone; lead-colour 2x2 laps at most 1.6% of steps at lead 6). P3, P4, C1, C2, C3 failed too, and the parent's registered kill logic declares H-loop dead at this scale. So there is no loop-carried effect for surgery to remove: LoopBreakAnt was never written, the cohort was never drawn, S1-S4 were never frozen, and no data exist. The S1-S4 probabilities in the README are untested drafts, not predictions that failed. Not shown by the parent, and so not tested here: that loops of other shapes (period 6/8, mixed turns) or earlier loops are irrelevant; if a later experiment finds a loop-like mediator that survives its own observational tests, this design (surgery vs rate-matched noise vs non-loop-shape mirror) could be reopened in a new folder with fresh registration. Also kept from the 21:00 assumption entry: turn flips perturb more than loops, so any revival needs the N and M controls and a realised-dynamics comparison. No code, results or other folders were touched.
2026-10-19 (+13:00) · 8f4b978 · interpretation
Co-reading note appended at the 2026-10-19 merge (the entry corrects nothing above). ../2026-10-19-c-law-mechanism/ Stage 4 (registered before computation; Q1-Q4, P-1 held; re-run of 4a/4b at merge reproduced the numbers) shows the fixed-area lead-on-ln-kappa slope (+0.15) is reproduced by conditioning on the collider ln A22 = f(ln c, ln kappa) with no direct effect (null +0.145 [0.137, 0.153]; adding ln c gives +0.014 [-0.045, +0.062]). Read the interpretation and any 'causal at fixed area' wording above as superseded in part: association conditional on area, not evidence of a direct lead effect. Unexplained and still open: the S-arm drop (-0.198) and its confounding with flip direction. See notes/open-questions-hypotheses.md, Reconciliation 2026-10-19.