Field notes / Experiment guide
Can return journeys predict boundary occupation?
Can depth-crossing dynamics explain kappa on fresh starts, larger territories and unseen rule families?
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 local field-dependent crossing model may compose into a return law whose amplitudes set occupation and whose scaling predicts drift.
What we learned
Prospective scaffold only: no instrument, pilot or confirmation has been run. Predictions and failure gates are recorded before measurement.
What this leaves open
The reduced model must beat persistence, account for censored deep journeys and distinguish boundary motion from physical crossings. Exact confirmation manifest remains unfrozen.
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
Can depth-crossing dynamics predict kappa?
Created 2026-10-20 21:10 +13:00, base
44ed81f71f4bb1fdccdcdc1cbd586bc1b2eb5613.
Status: prospective scaffold; instrument, pilot and confirmation NOT RUN.
This records hypotheses before measurement. It is not a frozen confirmation
registration: cohort, calibrated estimator and resource manifest remain to be
frozen after feasibility. No simulation is authorized by the scaffold itself.
Question
Can a reduced description of excursions between depth surfaces predict boundary occupation on independent starts and previously unseen rule families? If so, does it explain why occupation stabilizes as territory grows?
Read the mechanism ledger, earlier tail-budget results, and family hold-out. The tail-budget joint T1 criterion failed; its T2 extrapolation passed but lost to persistence. Its truncated-power-law estimator failed calibration. This experiment does not relabel those failures or reuse that fit as validated. The new test is composition of depth-crossing kernels, rather than using the target trajectory's measured mean excursion time to reconstruct occupation.
Theory and falsifiable assumptions
Let D be a boundary episode and T the following interior episode, both counted at departure times. In a stationary renewal-reward approximation,
f_boundary = E[D] / (E[D] + E[T])
kappa_inst = L * f_boundary, L = A/P.
Successive episodes need not be independent for the long-run budget identity. Stable representative means are necessary. A growing finite window is not automatically a stationary ensemble.
Candidate tail, above a separately modelled short-return component:
Pr(T > t | L, rule r) ~ a_r t^(-theta) F(t / (b_r L^z)).
E[T] ~ a_r b_r^(1-theta) L^(z(1-theta)) I_F, 0 < theta < 1.
If E[D] scales as L^delta and long excursions dominate, then
d log(kappa_inst) / d log L = 1 + delta - z(1-theta).
Constant kappa therefore requires z(1-theta) = 1 + delta. The conversational proposal z(1-theta)=1 assumed delta=0; measure that assumption. The candidate (theta,z,delta)=(1/2,2,0) is one possibility, not an ant result. Slowly varying amplitudes, a changing shape F, multiple cutoffs, or a short-return-dominated mean invalidate this simplified exponent prediction.
Physical hypothesis: the written field controls the chance that an ordinary shallow excursion continues into a long journey. A local description should predict these chances from heading, phase and nearby field state. Alternatively, large-scale history may remain indispensable. A uniform-preserving diffusion clock alone cannot change stationary occupation on a fixed domain.
Definitions that the instrument must implement
- Territory includes all visited cells, including the origin. P counts visited cells with an unvisited four-neighbour, including hole boundaries.
- Observe before each departure, after marking its current cell visited. Boundary indicator Z_t uses this evolving territory. Episodes are maximal consecutive runs of Z_t=1 (D) or Z_t=0 (T).
- Depth d_t is shortest four-neighbour distance through visited cells to any boundary cell; boundary depth is zero. Primary depth evolves each step. Record geometry-induced milestone crossings separately: depth can change when the territory changes even without a move across an old contour.
- Milestones: depths 0,1,2,4,8,16,32,64. On hitting one, record first subsequent hit of a different adjacent milestone and elapsed time, retaining revisits to the departure milestone. At depth 64, retain the deep excursion until return to 32; never reflect artificially at 64. If this unresolved deep component dominates the budget, the local closure is uninformative.
- Sensitivity: freeze the depth map at each interior entry, terminate at first contact with that frozen boundary, and record disagreement with evolving episodes. This is a different observable, never silently substituted.
- Sample area bands [A0, A0+A0/16), A0 = 32768, 131072, 524288. Retain entry-conditioned complete lengths AND exact in-band time contributions. Follow entries past band end until return or cap; record left fragments.
- Primary outcome is in-band B/S. Secondary kappa uses exactly the probe's window-mean B/S divided by endpoint P/A. Also record sum_t P_t/A_t so the uniform-window reference is directly computable, without fitting exponents.
Stages, seed roles and cohort
- Calibration: implement the observation-only accountant against a sparse reference. Use planted semi-Markov chains with known hitting times, an unbiased absorbing interval walk, and a hidden-state chain that defeats a memoryless closure. Include heavy tails and cap censoring. Rotor and random walk validate bookkeeping; neither is assumed to obey the candidate ant law.
- Feasibility pilot: at most 8 rules, 4 starts each, selected by a seeded shuffle of distinct six-letter families in the committed census rule list. Freeze the exact input hash and eligible rows before reading new outcomes. Choose without ranking kappa, tail length or success at the target bands. Pilot seeds 202610207001..202610207004; calibration seed 202610207000. Board 8192, cap 2^32, at most 2 CPU workers, subject to profiling. These are proposed resources, not measured runtime estimates.
- Confirmation: target 48 non-pilot rules from at least 12 non-pilot six-letter families, balanced across families, retaining pre-labelled stationary and drifting strata. Selection algorithm, exact list and strata must be committed before simulation. If unavailable, revise publicly before running; do not fill missing cells by selecting favourable outcomes. Per rule: 8 kernel seeds 202610208001..8008 and 8 outcome seeds 202610209001..9008 (full integers: 202610208001 through 202610208008, and 202610209001 through 202610209008). Check all against repository seed manifests before freezing. Folds group complete six-letter families. Split seed roles before jobs launch; retain all attainment/escape outcomes.
- Intervention: not part of this launch. Only design targeted field edits after an independently validated kernel identifies a concrete state variable. Commit a separate protocol with sham edits and response horizons first.
Models and leakage controls
M0: depth and arrival direction (toward/away from boundary). M1: M0 plus heading and current colour phase. M2: M1 plus a radius-2 local colour/visited patch and bounded recent history (last four milestone labels). Exact encoding, pooling of different rule lengths, regularization and treatment of unseen states require calibration and freezing. Do not assume these finite states are Markov.
Fit transition probabilities Q and mean segment times m from kernel-role starts at the two smaller bands. With boundary absorbing, solve u = m + Q u; nonabsorbing communicating classes or divergent means are explicit failures, not rows to drop. Estimate the entry distribution and E[D] from kernel-role data only. Integrate the predicted return budget into predicted B/S. Report how much E[T] comes from the fitted depth-64 return component: measuring nearly the entire return time there would defeat the reduction.
Two different transfer claims: (a) new-start/new-size prediction may use that rule's small-band kernel data; (b) unseen-family prediction cannot use ANY kernel, entry, dwell or outcome data from the held-out family. All these quantities must be predicted by the training families' frozen state model, given rule and initial-condition inputs. If (b) proves infeasible, report it untested; do not call (a) family transfer.
Compare with training-mean, geometry-only, small-band occupation persistence, and small-band empirical E[T] extrapolation baselines. Geometry supplied from target runs makes kappa a geometry-conditional prediction; label it as such. Primary B/S does not divide by outcome area. Fixed-area sampling is a stopping design, not proof of causal control for size; do not interpret associations conditional on area as direct rule effects.
Prospective predictions and decision rules
These thresholds are design choices, not power calculations. Freeze a synthetic power/bias study and any revisions before confirmation.
- P1, scaling: independently estimated delta, theta and z predict the sign and magnitude of held-out large-band kappa drift: median absolute slope error <=0.15 per log L, and lower error than zero-drift persistence. Fit the tail law only if calibration and identifiable cutoff coverage pass. Failure of tail fitting means P1 uninformative, not evidence against every return theory.
- P2, predictive closure: M2 predicts largest-band rule-mean B/S on outcome seeds with median relative error <=20% AND >=10% smaller absolute error than the strongest frozen baseline. The 95% family-bootstrap interval for the paired error improvement must exclude zero (2000 resamples, seed 202610207099).
- P3, physical transfer: unseen-family M2 has pooled out-of-fold R2 >0 and improves R2 over M0 by >=0.10. Bootstrap whole families, never individual excursions. Both criteria required; report uneven family sizes.
- P4, state sufficiency: on validation data, adding radius-4 context to M2 changes predicted E[T] by <10% for >=80% of rules, and observed conditional crossing probabilities are calibrated within the synthetic-derived error tolerance. This is evidence only for the tested scales, not a proof of locality.
P2 alone would establish conditional predictive value, not causal mechanism. P2 passing and P3 failing suggests rule-specific effective kernels. P4 failing suggests missing memory or collective structure. None of the predictions establishes the infinite-time exponent from three finite area bands.
Readiness and stopping gates
See HANDOFF.md for the implementation sequence and SCHEMA.md for the required outputs. Before confirmation: oracle agreement, calibrated estimator bias and coverage, mid-trajectory checkpoints, byte-identical thread/resume tests, frozen hashes, and a measured runtime/memory budget must pass.
Require >=80% of rules to have >=6 starts per role in all bands; report the full denominator. Deepest relevant milestones need >=200 completed segments per rule across kernel seeds, else pool only by the frozen rule or declare insufficient resolution. Require <=5% unresolved in-band time AND return-mean uncertainty small enough to leave the verdict unchanged. A small censored count is not enough: without a justified tail bound, an unresolved duration has no finite upper bound. Increase follow-up under a predeclared cap schedule or mark uninformative. Cap/board failures stay visible.
Scale separation must be checked: compare entry/exit geometry and frozen/evolving depth estimates; >10% disagreement in mean return estimates blocks a quasi-static interpretation. Report remaining predictions only as explicitly finite-band predictions. No ad hoc reflecting walls.
Scaffold use and present results
From WSL, repository root:
export UV_PROJECT_ENVIRONMENT=$HOME/.venvs/turmite UV_LINK_MODE=copy
uv run --frozen experiments/2026-10-20-kappa-first-passage/scripts/preflight.py
This checks the scaffold and prints its provenance; it launches no simulation. The notebook is a planning/readiness document until committed results exist. No new scientific measurements, calibrated estimator, or instrument exist yet.
Analysis notebook: notebook.ipynb
1 saved outputs · 1 code cells. Cells are not executed during publication. Download notebook
Can depth-crossing dynamics predict κ?
Planning notebook, 2026-10-20. No scientific measurements have been run.
The question is whether short depth-crossing kernels compose into a return-time prediction that transfers to new starts, larger territories and unseen rule families. See protocol, output contract, handoff, and lab notebook.
Assumptions and proposed test
For stable episode means, $f_\partial=E[D]/(E[D]+E[T])$. This identity is not a mechanism. Under a tail $S(t)\sim a t^{-\theta}F(t/(bL^z))$ and dwell $E[D]\sim L^\delta$, the tail-dominated prediction is $d\log\kappa/d\log L=1+\delta-z(1-\theta)$. Scale separation, stable amplitudes, identifiable cutoffs and a useful finite-state closure are all untested.
P1 tests this drift prediction; P2 compares independent occupation predictions with persistence; P3 holds out whole families; P4 tests sensitivity to larger local context. The README records thresholds and gates.
Code
from pathlib import Path
import hashlib, subprocess
ROOT = next(p for p in [Path.cwd(), *Path.cwd().parents] if (p / 'AGENTS.md').exists())
EXP = ROOT / 'experiments/2026-10-20-kappa-first-passage'
BASE = '44ed81f71f4bb1fdccdcdc1cbd586bc1b2eb5613'
SEED = 202610207000
INPUTS = [] # Only committed results/ inputs may be added after measurement.
print('Protocol base:', BASE)
print('Checkout:', subprocess.check_output(['git', 'rev-parse', 'HEAD'], cwd=ROOT, text=True).strip())
print('Calibration seed:', SEED)
for relative in INPUTS:
p = EXP / 'results' / relative
subprocess.run(['git', 'ls-files', '--error-unmatch', str(p.relative_to(ROOT))], cwd=ROOT, check=True, capture_output=True)
print(relative, hashlib.sha256(p.read_bytes()).hexdigest())
print('Scientific inputs:', len(INPUTS), '| Instrument, pilot and confirmation: NOT RUN')
Method and provenance
Run uv run --frozen experiments/2026-10-20-kappa-first-passage/scripts/preflight.py from the repository under WSL with the documented uv environment. This validates the scaffold only. No sampler exists yet. Candidate bands are 32768, 131072 and 524288 cells, each of width A/16. The exact rule/fold manifest remains to be frozen; proposed seed roles are in README.
Results
NOT RUN. No model has passed or failed a scientific prediction here. No synthetic plot should be read as ant data.
Caveats and next steps
The earlier tail-budget experiment failed its joint prediction criterion and lost to persistence on size extrapolation. Censoring can hide arbitrarily long excursions; a low censored count alone is not a sufficient gate. Evolving depth can change because the boundary moves. New-family prediction must not use that family's dwell or entry distribution. Implement the independent accountant, synthetic controls, depth oracle and resumable state before profiling a small pilot.
Read the dated lab log
Lab notebook: kappa from depth-crossing dynamics
Append-only; correct earlier entries by adding a dated entry.
2026-10-20 21:10 +13:00 · 44ed81f71f4bb1fdccdcdc1cbd586bc1b2eb5613 · intent
Design a prospective first-passage experiment following the discussion with the user. No ant measurement is planned in this scaffolding session. Distinguish budget reconstruction, independent prediction, and causal intervention.
2026-10-20 21:10 +13:00 · 44ed81f71f4bb1fdccdcdc1cbd586bc1b2eb5613 · observation
Read the current mechanism ledger, family hold-out and complete tail-budget README. The latter already reports T1 failure and T2 losing to persistence; earlier notes omit that completion. Its failed parametric calibration must not be treated as a validated instrument for this proposal.
2026-10-20 21:10 +13:00 · 44ed81f71f4bb1fdccdcdc1cbd586bc1b2eb5613 · assumption
A semi-Markov approximation to depth crossings may transfer across starts and sizes. Untested. A growing boundary, unresolved deep excursions and hidden field history could defeat it. The constant-dwell exponent relation has been generalized to include delta; plateau assumptions must be measured rather than imposed.
2026-10-20 21:10 +13:00 · 44ed81f71f4bb1fdccdcdc1cbd586bc1b2eb5613 · decision
Keep the protocol prospective until estimator calibration and cohort/resource manifests are frozen. No copied old results and no fabricated output files. New-family transfer excludes that family's predictor seeds as well as outcomes.
2026-10-20 21:18 +13:00 · 44ed81f71f4bb1fdccdcdc1cbd586bc1b2eb5613 · observation
Scaffold preflight passed under WSL/uv and the planning notebook executed from
a clean kernel with nbclient. No scientific inputs were read. The full
cargo test --release check is still running at this commit; its log is
scratch/release.log. Concurrent unrelated edits exist in the shared checkout;
only this experiment and its note pointers belong to this change.
2026-10-20 21:24 +13:00 · 2bf8cc97c69b9278ca6bb8be26605c515cb3f756 · observation
Full cargo test --release completed with exit 0 (existing warnings).
The blog renderer initially rejected missing reader-guide coverage; adding this
experiment's guide resolved it. WSL commands: uv run --frozen --only-group blog blog/scripts/experiments.py --baseurl /turmite-autoresearch, then from blog/
JEKYLL_ENV=production bundle exec jekyll build --strict_front_matter --baseurl /turmite-autoresearch and bundle exec ruby scripts/check.rb _site /turmite-autoresearch. Build and links passed. An existing unavailable source
reference end in the rule-space README remains reported by the generator.
WSL has no node executable, so the desktop's bundled browser-automation runtime
was used for the local headless Edge check (scratch/browser-check.cjs).
Plateau, rising/falling examples, reset, mobile overflow, no-JavaScript fallback
and absence of page errors passed. Desktop/mobile screenshots in scratch/ were
visually reviewed; mobile axis type was enlarged afterwards. The interactive
curves are analytic illustrations, not measurements or calibration results.
2026-10-20 21:24 +13:00 · 2bf8cc97c69b9278ca6bb8be26605c515cb3f756 · decision
End scaffolding session with the scientific stages unrun. The accompanying blog post explains the original argument and why the completed tail-budget failures require this stronger crossing-kernel test. Next work starts at HANDOFF step 1, not at confirmation. Cohort/model/resource registration remains outstanding.
2026-10-20 21:26 +13:00 · 2bf8cc97c69b9278ca6bb8be26605c515cb3f756 · observation
Implemented from-scratch BFS depth oracle, evolving depth maintenance, and milestone segment accountant in tests/kappa_first_passage.rs (HANDOFF steps 3-4).
Verified:
- Exact depth matching: boundary cells (unvisited 4-neighbours) have depth 0; interior cells have shortest visited-path distance.
- Property tests (
property_ant_budget_conservation_and_valid_milestones):- B + I = S holds unconditionally for all trajectories.
- All milestone transitions occur strictly between adjacent milestones in [0, 1, 2, 4, 8, 16, 32, 64].
- Completed segment elapsed times plus unresolved segment time exactly equal total trajectory steps.
- Distinguishes geometry-induced reclassification from physical contour crossings.
All 4 test targets in
tests/kappa_first_passage.rspass with--release.