H7: The TraceβActor Crossing Hypothesis β Refinement Log
Fourteen refinements across four simulations. Session 22 completed the 2Γ2. Session 23 falsified the Ο_sat predictor. Session 24 implemented the spatially-targeted recovery metric (queued-topic #60) with a mirror-patch control arm. The grid-wide recovery metric (Session 17-18) conflated scar repair with volume restoration β the baseline's 47Γ 'recovery' was unbounded accumulation, not targeted repair. The patch metric isolates the scar, and the mirror control (an undamaged same-size region) isolates the growth baseline. Result: NEITHER channel shows targeted scar repair (positive targeted_repair = patch - mirror). Both show the scar growing slower than the undamaged mirror (targeted_repair negative in all conditions). The curvature channel's crossing fires (stability, roughness, mass-plateau) but the structure does not preferentially repair the damage site. The 'self-repair' claim from Session 17 was an artifact of the grid-wide metric. Determinism verified.
Topic: the traceβactor crossing β when stigmergic traces become autopoietic actors
Refinement (Session 4)
This IS Smith & Bedau's 8th CAS property. Stigmergy provides the mechanism for "creating boundaries" (traces that accumulate). Autopoiesis provides the mechanism for "flexibly maintaining boundaries" (self-production). The crossing from trace to actor is the phase transition they identified but never implemented.
Refinement (Session 8 β sim06 null result; REWRITTEN 2026-07-27 after code review)
sim06 implemented the traceβactor feedback loop (the structure re-emits the pheromone that recruits builders) and found it amplifies building β 66% more structure, 1876 vs 1131 cells, retention 0.98 vs 0.96 β but does not cross.
The original Session 8 refinement is retracted, and this paragraph replaces it rather than being appended, because it stated false measurements rather than a superseded interpretation. The crossing detector as it then stood could not fire at all: criterion 2 required the deposit rate to fall below its early-run average, which GrassΓ© positive feedback makes impossible once structure exists (deposit probability rises from deposit_base=0.02 on bare ground to ~0.87 on structure). It was satisfied only at samples 0β5, before any structure had formed. The Session 8 null therefore carried no evidential weight, and the parameter sweep run against it establishes nothing. The figures previously reported here β "~230 scattered micro-pillars", stability ~0.55, constraint 0.33, compactness 0.08 β were wrong against sim06's own results.json.
With criterion 2 replaced by mass saturation (pheromone over structure β₯0.5 and |material_growth_rate| < 0.01), it now passes 130/160 samples (135/160 for self-maintenance). The crossing still does not fire, but the binding constraint is now criterion 1: stability 0.849β0.893 (baseline), 0.746β0.802 (self-maintenance) against a 0.90 threshold β a miss of β€0.05. Criterion 3 passes 154/160 for baseline (deposit_on_structure 0.70β0.79). Baseline morphology is 66β109 connected components at compactness 0.109β0.120 β not a diffuse scatter.
One finding runs opposite to the hypothesis: the self-maintenance condition is more fragmented than baseline (219β297 components) and less selective (0.43β0.53, criterion 3 failing 0/160), because maintain_gain=0.3 saturates the deposit response flat at ~0.87 everywhere and destroys the spatial contrast stigmergy depends on. More positive feedback actively worked against consolidation.
The inference that the crossing needs a new dynamical degree of freedom absent at the deposit level β environmental transport (Mahadevan), saturation/inhibition, competition, or a substrate state transition (Vance's termite-mound principle) β may still be correct, but it must now rest on the near-miss and on the self-maintenance reversal, not on the "diffuse scatter" characterization that motivated it. See [[concepts/stigmergic-consolidation]] and ../../simulations/REVIEW.md Β§1. Status: H7 not refuted, and not strongly tested either β sim06 leaves the crossing an open question rather than a demonstrated failure.
Refinement (Session 9 β the specific mechanism identified)
The "new dynamical degree of freedom" is now specified: environmental physics coupling β the accumulated structure must introduce a transport dynamics that redistributes the cue (pheromone) field away from saturated regions and toward gaps. The Mahadevan group's termite mound model (King/Ocko/Mahadevan, PNAS 2015; Ocko/Heyde/Mahadevan, PNAS 2019) shows real mounds are ventilation organs whose own physics (diurnal thermal convection) channels the very pheromone cues that guide building β the structure IS the feedback path. A 20-year stigmergic-construction modeling lineage (Deneubourg 1977 β Bonabeau 1997 β Ladley & Bullock 2004) all share sim06's exact limitation (deposited material has no influence on agent movement; pheromone diffusion decoupled from structure). (Corrected 2026-07-27: this refinement originally added that "sim06's null result is confirmation of a known field-wide gap, not a failure of our model." That does not hold β sim06's null was in part a failure of our own detector, which could not fire. The literature argument about the lineage is independent and stands on its own; the sim06 leg of it does not.) The minimal lumped prescription: a structure-sourced transport field with a mass threshold M_c (inert β active state transition, Vance's principle) β below M_c, the sim06 regime; above, consolidated actor. The crossing is predicted to be a phase transition in M_c. See [[concepts/environmental-physics-coupling]]. Status: H7 further refined, testable β sim07 implements the transport field and tests the M_c phase transition.
Refinement (Session 10 β sim07 null result)
A structure-sourced scalar transport field with a mass threshold M_c is not sufficient for the crossing. sim07 implemented exactly the minimal lumped prescription above (T sourced above M_c, diffuses, vents pheromone from saturated to gap regions) and swept M_c from inert to fully active. Result: no phase transition. Stability decreases monotonically as M_c drops (0.876 β 0.739); pillars fragment (57 β 128); the crossing detector never fires for any M_c or transport_coupling; and the perturbation/self-repair test shows repair tracks the deposit rule, NOT T (the circularity safeguard fails β T is not the causal layer). Diagnosis: the negative feedback is real but its effect has the wrong sign for consolidation β venting pheromone away from saturated pillars disperses the very cue that recruits deposits, fragmenting rather than consolidating. A lumped linear advection of a scalar cue does not reproduce the Mahadevan mechanism, where directed flow carries the cue along channels to where building should continue. Two candidates remain: (1) directed transport (channel geometry that carries cue to building fronts, not away from them β the directionality lost in the lumped scalar), or (2) an external multi-rate driver (the diurnal oscillation, H4) the structure rectifies into directed flow β the Mahadevan energy source sim07 omits (candidate sim08). Status: H7 refined again, not refuted β the null specifies that the transport must be directed (not a venting scalar) and/or externally driven (H4), not merely structure-sourced. See [[concepts/environmental-physics-coupling]].
Refinement (2026-07-27, post code review β the prescription sharpens: saturation, not absence of feedback)
Correcting sim06's detector removed H7's original evidence but surfaced better evidence in its place, pointing at a more specific mechanism.
Two independent attempts to add the "missing" negative feedback both made consolidation worse, monotonically:
| attempt | mechanism | components | stability |
|---|---|---|---|
| sim06 self-maintenance | structure re-emits pheromone (maintain_gain=0.3) | 66β109 β 219β297 | 0.849β0.893 β 0.746β0.802 |
| sim07 transport field | structure sources T, vents pheromone to gaps | 57 β 128 as M_c falls | 0.876 β 0.739 |
Both act through the pheromone field, and the deposit response saturates: p = base + gainΒ·Ο/(1+Ο) is flat above Οβ1, so once the field is driven high anywhere, deposit probability sits at ~0.87 everywhere and the spatial contrast stigmergy depends on is destroyed. Pushing more signal through a saturating channel does not create selectivity β it removes it.
This finding is now stated formally as H11 (The Saturating Channel Hypothesis). So the Session 8/9 prescription ("the crossing needs negative feedback / a new dynamical degree of freedom") is too coarse. It has now been tried twice and fragmented twice. The refined claim: the crossing needs negative feedback through a channel that does not saturate β acting on deposit probability or on geometry directly (a density cap, a refractory period, directional bias along existing walls), rather than by manipulating the cue field the agents read. This is sharper and more falsifiable than the original, and it is testable more cheaply than directed transport.
Note what this does to the evidential picture: H7's mechanism claim is now supported by a positive, replicated, directional result (two mechanisms, same failure direction, same explanation) rather than by the "diffuse scatter" characterization it replaces β which was never observed. Status: H7 not refuted, not strongly tested, and better specified than before.
Refinement (Session 13, 2026-07-28 β sim08 tests (a); non-saturating inhibition necessary but not sufficient)
sim08 added a non-saturating density cap (a hard gate on the deposit action, not a graded cue function) to sim06's GrassΓ© model. The cap consolidates morphology β pillars fall 101 β 52 as the cap tightens, and the pheromone field is de-saturated (max 8.01 β 2.50) β confirming the direction of H11's prescription: a non-saturating action-channel prunes nucleation where the saturating cue-channel could not. But the crossing does not fire for any cap strength; stability does not rise (0.874 β 0.775 at the tightest cap). The cap limits growth without recruiting maintenance, so it corrects the fragmentation symptom (pillars) but not the persistence symptom (stability). The crossing therefore needs a non-saturating channel that recruits as well as limits β the curvature channel real termites use (Calovi 2019: concavity β fill, each deposit extends the concavity) does both; the density cap only limits. The boundary narrows again: (sim06) positive feedback alone insufficient β (sim07) scalar cue-transport insufficient β (sim08) non-saturating limitation insufficient β the crossing needs a non-saturating channel that also feeds back positively into its own maintenance. Candidate next: a curvature/deposition-edge rule. See concepts/non-saturating-channels.md.
Refinement (Session 14, 2026-07-29 β the curvature channel gets a published model)
The "non-saturating channel that recruits as well as limits" is no longer a hypothetical β it has a published model. Facchini, Lazarescu, Perna & Douady (2020, J R Soc Interface 17:20200093) built a curvature-only phase-field growth model for Nasutitermes nests with no pheromone field at all: βf/βt = f(1βf)Β·[(1/2)Β·Ξf + dΒ·ΞΒ²f]. The growth term (mean curvature Ξf) is the RECRUIT mechanism (deposition at convex tips extends the structure); the smoothing term (dΒ·ΞΒ²f) is the LIMIT mechanism (caps feature size); the prefactor f(1βf) restricts growth to the structure surface (spatial selectivity without a saturating cue). For large d the equation is linearly unstable β walls expand, branch, merge, and invade space, the consolidation morphology sim06 never reached. Facchini et al. 2024 (eLife) then showed why curvature works: evaporation flux β surface curvature (Langmuir 1918), so the curvature and humidity channels are ONE physical quantity, and explicitly state "experiments do not support a role for a putative cement pheromone" β two independent groups now. H11's flag on the saturating channel is corroborated at the level of sufficiency (biology doesn't need the pheromone), not just absence.
The convex (Facchini: deposit at tips) / concave (Calovi: activity at pits) contradiction is resolved: the two measured different action components (deposition vs aggregate activity). Deposition is at convex tips; excavation is at concave pits. sim09 must separate these actions β conflating them would invert the rule's sign.
What this means for sim09 (candidate next). Replace sim06's saturating pheromone-deposit rule with the Facchini curvature growth rule (adapted to 2D: deposit probability β local mean curvature of the material height field, restricted to the structure surface, with a smoothing term). Test whether the d instability is the phase transition the crossing needs: below it, diffuse growth (sim06 regime); above it, consolidated morphology AND the crossing. The d parameter is to sim09 what M_c was to sim07 β but with a mechanism that recruits (curvature extends tips) where the scalar transport only dispersed, and a non-saturating channel (geometry) where the density cap only limited. If the crossing fires only above the d instability and not below it, sim09 unifies the directed-transport and non-saturating-inhibition candidates into one mechanism (queued-topic 58). Risk: Facchini's model reproduces morphology but not self-maintenance β sim09 must layer H7's three criteria and the perturbation/repair test on top, and the roughness feedback (deposits roughen the surface, focusing further deposition) is the candidate maintenance mechanism that must be tested, not assumed. Public finite-difference code exists (github.com/oiluigioi/JRSI_2020_termite_nest). Status: H7 refined Γ5; the candidate mechanism now has a published substrate and a phase parameter (d). See concepts/non-saturating-channels.md Β§4β5.
Refinement (Session 17, 2026-08-02 β sim09 fully implemented; the curvature channel runs end-to-end, the crossing is a parameter-regime question, not a mechanism question)
sim09 is now complete (all 9 DESIGN.md Parts [x]). The Facchini growth equation βf/βt β f(1βf)Β·[(1/2)Β·Ξf + dΒ·ΞΒ²f] runs as code: loaded termites deposit at convex tips via a linear, non-saturating p = base + gainΒ·curvature; unloaded termites excavate at concavities (the Facchini/Calovi action-component split); the d-gated biharmonic smoothing is the phase-transition knob; the f(1βf) prefactor is a dilation mask; roughness is the recruit-proxy crossing criterion 2. The detector carries a synthetic-history regression guard encoding the sim06 detector-bug lesson.
At default parameters (d=1.0, deposit_prob_base=0.10) the crossing does NOT fire for either the curvature channel or the baseline-pheromone control. The curvature channel grid-saturates (10000/10000 cells, retention 1.0) because the nucleation base (0.10) floods the 10k-cell grid before curvature routing can create spatial selectivity β so mass never plateaus, and crossing criterion 2 (roughness sustained while mass saturates, i.e. |growth_rate| < 0.01) cannot fire. The d-sweep [0β¦8] at default params finds no phase transition (pillars=1, retention=1.0 at every d). Tuned probes (deposit_prob_base=0.01, material_decay=0.002) show the predicted consolidation direction (pillars 25β2 as d rises 0β4, plus a roughness spike at the biharmonic instability) β the mechanism's sign is right β but the mass-saturation gate still fails because mass keeps accreting.
Perturbation (Part 8, the H7 acid test): at default params the curvature channel recovers to 1.13Γ pre-damage total (it refills the 25% damage hole) while the baseline reaches 47.34Γ. The baseline number is an artifact of unbounded material accumulation (the saturating rule piles material without an erosion balance, so total_material grows ~47Γ from the early pre-damage sample), not targeted repair. In the tuned probe the curvature channel refills the hole to 1.01Γ (repair-like) while the baseline grows to 4.55Γ (volume, not repair) β the direction of the H7 separation is right, but the grid-wide recovery metric cannot distinguish "repair at the scar" from "continued growth elsewhere," so the acid test is not yet decisive.
What this establishes for H7. The crossing has now been attempted with four distinct mechanisms β sim06 saturating cue, sim07 scalar transport, sim08 non-saturating density cap, sim09 non-saturating recruit+limit curvature channel β each narrowing the hypothesis and each confirming H11's direction (the non-saturating channels consolidate where the saturating channels fragmented: sim09's tuned probe consolidates pillars 25β2 as d rises, the opposite of sim06's 219β297 and sim07's 57β128). The curvature channel has both halves H7's Session-13 refinement required (recruit via tip extension + limit via smoothing), so if the crossing fires at all it should fire here. The remaining blocker is parameter-regime, not mechanism: find the regime where mass saturates before the grid fills (lower nucleation + higher erosion), and a spatially-targeted recovery metric that distinguishes scar repair from volume restoration. The next session's priority is a broad deposit_prob_base Γ material_decay Γ d sweep in that regime to locate d*. Status: H7 refined Γ7; the mechanism is now fully specified and running; the crossing is a parameter-tuning question, not an open-mechanism question. See concepts/non-saturating-channels.md and sim09.
Test narrative (superseded by the one-line "Next test" in hypotheses.md)
Build a simulation where agents leave persistent traces, and observe whether traces cross from coordination to self-maintenance. Measure: does the trace structure develop its own dynamics? Does it resist perturbation (self-repair)? Does it constrain agent behavior in ways not derivable from individual traces? sim07 added a structure-sourced scalar transport field with threshold M_c and tested whether the crossing fires as a phase transition in M_c β it did not. sim08 tested non-saturating inhibition (a) β consolidates morphology but doesn't fire the crossing (necessary-not-sufficient). sim09 tests the curvature channel, which unifies (a) and (b): curvature is non-saturating inhibition (the smoothing term) AND directed geometry (deposition at convex tips routes building along edges), with a published growth model and a phase parameter d. sim09 is now fully implemented; at default params the crossing does not fire (grid saturation), but tuned probes confirm the mechanism's sign. The next step is the parameter sweep to locate d*.
Refinement (Session 19, 2026-08-03 β the mass-saturation gate was unfalsifiable; corrected, the crossing fires with a control arm)
The d* sweep ran (100 combos: deposit_prob_base Γ material_decay Γ d). 0/100 crossed. The per-criterion diagnosis was unambiguous: criterion 2's mass-saturation gate (|material_growth_rate| < 0.01) passed in 0/100 combos β mean_late_mgr was 0.4β3.7, never near 0.01. Criteria 1, 2r (roughness), and 3 all passed at the low-decay corner. The gate was the single universal blocker.
This was a metric ceiling problem β the sim06 detector-bug lesson repeating in a new form. The mass-saturation gate used the per-sample-window |Ξtotal_material|/sample_every < 0.01. For a 150-termite stochastic deposit process that quantity has a Poisson noise floor of ~0.5β1.0 (the centered window-sum's std / window), ~100Γ above the 0.01 threshold. No finite-population run can ever pass it. The gate was unfalsifiable: the detector could not fire regardless of the mechanism, exactly as sim06's deposit-rate gate could not fire because GrassΓ© positive feedback makes deposit probability rise. The Session 17 conclusion ("the crossing is a parameter-regime question, not a mechanism question") was itself suspect β the regime where mass "saturates" below 0.01 does not exist for any finite N.
Correction: replaced the per-window absolute-growth gate with a relative-slope plateau: |slope(total_material over last K=16 samples)| / mean(total_material) < 0.001. The regression slope averages over 400 steps, suppressing the Poisson window noise; the relative (scale-invariant) form sits above the noise floor (it fires ~98β100% in the late equilibrium of a plateauing run, while the absolute gate fired 0%). The selftest regression guard was updated to negate the plateau explicitly (a ramp instead of a flat trajectory withholds the crossing).
Result β the crossing fires with a control arm. In the tuned probe (dpb=0.01, decay=0.002, 80Γ80 grid, 2000 steps β non-saturating, cells 3123β5754/6400):
- Curvature channel crosses at every d β [0, 4]; crossing_step decreases monotonically 1550 β 900 as d rises (d speeds consolidation); n_pillars falls 12 β 1 (consolidation, H11's direction); roughness rises 0.44 β 0.77 (sharper features).
- Baseline-pheromone control (same detector) crosses in 0/3 β criterion 2's pheromone-elevation gate fails (mean_pheromone 0.25 < 0.50 threshold; the saturating rule never elevates the cue enough). This is the first time the H7 crossing has fired with a control arm that does not.
At default params (dpb=0.10, decay=0.0005) the corrected detector also fires for the curvature channel (step=1125) but not the baseline β but here the grid saturates (10000/10000 cells), so the plateau is a physical ceiling (nowhere left to deposit), not a dynamic equilibrium. The tuned-probe result is the honest one: the crossing fires in a non-saturating regime where mass plateaus by deposition/erosion balance, not by grid exhaustion. Determinism verified (two identical runs produce identical histories, 0/80 diffs).
Honest limitation β the recruit half drives the crossing, not the limit half. The crossing fires at d=0 (no biharmonic smoothing β the curvature channel's LIMIT half is off), so the detector is catching the recruit half (curvature routing + mass plateau), not the recruit+limit combination the Session-13 refinement specified. The d-smoothing controls morphology (pillars 12β1) and crossing speed (1550β900) but is not necessary for the crossing verdict. The honest claim narrows: the curvature channel's non-saturating recruit half is sufficient for the crossing; the limit half consolidates the morphology. This is still a real result β the baseline control (saturating cue, no curvature routing) does not cross β but it is a weaker claim than "recruit+limit both required." A cleaner test would include a recruit-only condition (curvature routing, no smoothing, d=0) vs a limit-only condition (smoothing, no curvature routing) to isolate the halves. Status: H7 refined Γ8; the mass-saturation gate is corrected and the crossing fires with a control arm, but the recruit-vs-limit isolation is unfinished. See dstar_sweep.py and this session's daily report.
Refinement (Session 20, 2026-08-04 β recruit-vs-limit isolation: the recruit half is load-bearing AND almost-sufficient; the limit half is a stability amplifier, not morphology-only)
The recruit-vs-limit isolation ran as a 2Γ2 factorial over the curvature channel, sweeping d β {0, 0.5, 1, 2, 4} with the recruit half ON (curvature routing: curve_follow=0.6, deposit_prob_gain=0.85, excavate_prob_gain=0.60) and OFF (curve_follow=0, deposit_prob_gain=0, excavate_prob_gain=0 β agents random-walk and deposit/excavate at base rates only; the field's curvature has no influence on agent action). The limit half is ON when d>0 (biharmonic smoothing in field_step) and OFF when d=0. The four cells: recruit-only (d=0), recruit+limit (d>0, the as-built channel), limit-only (d>0, no recruit), neither (d=0, no recruit). A seed-robustness pass ran the four corners across seeds {42, 7, 123, 256}.
A new stable-crossed metric separates stable from transient crossings: late_hold_rate = fraction of the last 1/4 of records where all three crossing criteria hold simultaneously. A stable crossing holds ~1.00; a transient crossing (criteria flicker on and off) holds <~0.55. stable_crossed = crossed AND late_hold_rate >= 0.90.
Result (seed=42, tuned probe dpb=0.01, decay=0.002, 80Β², 150 termites, 2000 steps):
| condition | d | crossed | stable | hold | pillars | cells |
|---|---|---|---|---|---|---|
| recruit-only | 0 | 1 | 1 | 1.00 | 12 | 3123 |
| recruit+limit | 1 | 1 | 1 | 1.00 | 13 | 4683 |
| limit-only | 0.5 | 1 | 0 | 0.45 | 174 | 202 |
| limit-only | 1 | 0 | 0 | 0.55 | 217 | 1685 |
| neither | 0 | 0 | 0 | 0.15 | 49 | 53 |
Seed robustness (stable_crossed / total across 4 seeds):
- recruit-only (d=0): 3/4 stable (hold [1.0, 1.0, 0.65, 1.0] β seed 123 is borderline, hold 0.65, still crosses)
- recruit+limit (d=1): 4/4 stable (hold 1.0 across all four seeds)
- limit-only (d=1): 0/4 stable (crossed in 2/4 but transient; hold [0.55, 0.50, 0.55, 0.40])
- neither (d=0): 0/4 stable (crossed 0/4; hold β€0.15)
The recruit half is necessary AND almost-sufficient. Neither condition (no recruit, no limit) crosses in any seed. Limit-only (no recruit) is never stable β the biharmonic smoothing alone produces at best a transient flicker (criteria 3, deposits_on_convex_fraction, oscillates around the 0.60 threshold without the curvature routing that would concentrate deposits at convex tips). The recruit half alone crosses in 4/4 seeds and is stable in 3/4.
The limit half is a stability amplifier, not morphology-only. The recruit+limit condition is stable in 4/4 seeds where recruit-only is stable in 3/4 β the one borderline seed (123, hold 0.65) becomes fully stable (hold 1.0) when d>0 is added. So the limit half is not strictly necessary for the crossing (the recruit half crosses without it), but it stabilizes the crossing against seed variance. It also consolidates morphology (pillars 12β1 as d rises, crossing_step 1550β900). The honest characterization: the recruit half is load-bearing and almost-sufficient; the limit half is a stability amplifier + morphology optimizer. This is stronger than the Session-19 "half-supported" reading: the limit half has a causal role (stability), not merely an aesthetic one (morphology).
The limit-only transient flicker is itself informative. Limit-only's criteria 1 (stability) and 2 (roughness + plateau) mostly pass (the biharmonic does build roughness and mass does plateau), but criterion 3 (deposits_on_convex_fraction β₯ 0.60) flickers because without curvature routing, deposits land on convex cells only at the base rate β the smoothing creates convex features but nothing routes agents to them. The biharmonic alone builds the geometry the recruit channel would act on, but without the recruit half the geometry is unattended. This is the clean separation: the recruit half routes agent action to the geometry; the limit half shapes the geometry. Neither alone (no geometry shaping) produces nothing; limit alone shapes geometry that no agent is routed to.
The decisive contrast is recruit ON vs OFF at d=0. Same detector, same regime, only the recruit flag differs: recruit-only (d=0) crosses stably (3/4); neither (d=0) does not (0/4). The limit half is off in both. This isolates the recruit half as the load-bearing variable.
Status: H7 refined Γ9; the recruit half is load-bearing and almost-sufficient for the stable crossing; the limit half is a stability amplifier that makes the crossing robust to seed variance. The "recruit as well as limit" prescription (Session 13) is now: recruit = necessary and almost-sufficient; limit = stabilizer + morphology optimizer (not strictly necessary, but causally contributes to robustness). See recruit_limit_sweep.py and this session's daily report.
Refinement (Session 21, 2026-08-05 β the saturating-action control: action-based is primary, non-saturating is secondary)
Session 20 isolated the recruit and limit halves, but the recruit half is action-based (curvature routes deposit/excavate selection) AND non-saturating (linear gain) simultaneously β the two properties H11 says matter are confounded. Session 21 disentangles them with a saturating-action control: the same curvature routing, but a saturating response curve p = base + gainΒ·c/(1+|c|) instead of the linear p = base + gainΒ·c. Both forms are action-based; only the linear form is non-saturating. Curvature in the running sim ranges Β±1.5 (90th-percentile |c| β 1.1β1.5), so the saturating form genuinely compresses: at c=1.0 it gives 0.425 vs linear 0.850 (50%); at c=1.5 it gives 0.51 vs linear clamped to 1.0.
The 2Γ2Γ2 factorial (response {linear, saturating} Γ recruit {ON, OFF} Γ d {0, 1}) with a 4-seed robustness pass on the key conditions (seeds {42, 7, 123, 256}):
| condition | response | d | crossed | stable | hold (seed 42) | mean hold (4 seeds) | stable (4 seeds) |
|---|---|---|---|---|---|---|---|
| recruit ON | linear | 0 | 1 | 1 | 1.00 | 0.912 | 3/4 |
| recruit ON | saturating | 0 | 1 | 0 | 0.85 | 0.862 | 2/4 |
| recruit ON | linear | 1 | 1 | 1 | 1.00 | 1.000 | 4/4 |
| recruit ON | saturating | 1 | 1 | 1 | 1.00 | 1.000 | 4/4 |
| recruit OFF | linear | 0 | 0 | 0 | 0.15 | β | 0/4 |
| recruit OFF | saturating | 0 | 0 | 0 | 0.15 | β | 0/4 |
| recruit OFF | linear | 1 | 0 | 0 | 0.55 | β | 0/4 |
| recruit OFF | saturating | 1 | 0 | 0 | 0.55 | β | 0/4 |
The verdict: action-based is the primary load-bearing property; non-saturating is a secondary stability contributor. The saturating action still crosses in all 8 recruit-ON seeds (8/8 crossed, 6/8 stable); the linear action crosses in all 8 (8/8, 7/8 stable). The saturation costs ~0.05 in mean hold rate at d=0 (0.91β0.86) and flips one borderline seed from stable to unstable β but it does not collapse the crossing the way turning off the recruit half does (0/8 crossed). The limit half (d=1) fully rescues the saturating form to 4/4 stable, identical to the linear form.
What degrades is the mass-plateau gate (criterion 2p), not the routing (criterion 3). The saturating form's criterion 3 (deposits_on_convex_fraction) passes 1.00 in all seeds β curvature routing still sends deposits to convex tips even with the compressed response. What flickers is criterion 2's mass-plateau gate: the saturating form takes longer to plateau (the compressed deposit probabilities create more stochastic scatter in the mass trajectory), so |slope(M)|/mean(M) stays above the 0.001 threshold more often. The degradation is in the dynamics of mass equilibration, not in the spatial selectivity of the routing.
This partially weakens H11's strict "non-saturating" claim. H11 says feedback through a saturating channel is self-defeating because it destroys spatial contrast. The saturating action-based channel does not destroy spatial contrast (criterion 3 holds 1.00) β it only slows mass equilibration. The non-saturating property matters for stability, but it is not the causal variable separating crossing from non-crossing (that is action-based routing, per Session 20). H11's distinction should be refined: the critical property is action-based routing (curvature routes what the agent does, not how strongly it reads a cue); the non-saturating property is a stability amplifier, analogous to the limit half's role.
Honest limitations. (1) The saturating form c/(1+|c|) still routes β it does not stop routing at high curvature, it only compresses the routing gain. A truly cue-like saturating channel (e.g. a pheromone field whose deposit response flattens) would still fail the way sim06/sim07 did; the test isolates action-based from non-saturating within the action-based family, not against the cue-based family. (2) The 4-seed pass is small β 2/4 vs 3/4 is one seed's difference (seed 42 and 256 are borderline for saturating; seed 123 is borderline for linear). A 16-seed pass would tighten the estimate. (3) The borderline seeds differ between forms β different nucleation trajectories are fragile to different response curves. (4) The result is confirmatory (I expected action-based to be primary), but the secondary non-saturating effect is the genuinely new finding β it was not predicted by H11's strict reading.
Status: H7 refined Γ10; the action-based property is the primary load-bearing variable for the crossing; non-saturating is a secondary stability contributor. H11's confound is resolved: action-based dominates, non-saturating amplifies. See saturating_action_sweep.py.
Refinement (Session 22, 2026-08-06 β the cue-based non-saturating control: the 2Γ2 completes, and the non-saturating property reverses sign across families)
Session 21 tested within the action family (linear vs saturating action routing); the remaining cell of the 2Γ2 β a non-saturating cue channel β was untested (queued-topic #67). sim06's as-built deposit rule is the saturating cue p = base + gainΒ·Ο/(1+Ο) (flat above Οβ1); the non-saturating cue is p = base + gainΒ·Ο (clamped to 1.0). Both are cue-based: the pheromone field is the cue the agent reads; only the response curve differs. A deposit_response parameter ("saturating" | "linear") was added to sim06.py with a selftest Part 5d guard (the linear form must exceed the saturating form at moderate Ο, the cue-family analog of sim09's Part 5c).
The 2Γ2Γ2 sweep (response Γ self_maintenance Γ deposit_base Γ phero_follow, seed-42 factorial of 64 conditions + determinism + 4-seed robustness on 8 key conditions):
| family | response | no-SM crossed | no-SM stable | no-SM mean hold | SM crossed | SM stable |
|---|---|---|---|---|---|---|
| cue (sim06) | saturating (as-built) | 16/16 | 16/16 | 1.000 | 16/16 | 16/16 |
| cue (sim06) | linear (non-saturating) | 3/16 | 0/16 | 0.053 | 16/16 | 16/16 |
Seed robustness (4 seeds): saturating cue no-SM 4/4 stable (hold 1.000 all seeds); linear cue no-SM 0β1/4 stable (hold 0.013β0.237). With self-maintenance, both are 4/4 stable (hold 1.000).
The non-saturating cue crosses LESS, not more β the opposite of H11's strict prediction and opposite to the action family. In the action family (sim09 Session 21), the non-saturating (linear) form was slightly better (7/8 vs 6/8 stable). In the cue family (sim06), the non-saturating (linear) form is dramatically worse (0/16 vs 16/16 stable without SM). The non-saturating property reverses sign across families: it helps in the action family and hurts in the cue family.
The mechanism: the linear cue flattens the gradient faster. p = base + gainΒ·Ο clamps to 1.0 at Οβ1.15, so every high-pheromone cell deposits at 100%. This drives faster, more uniform growth (linear builds 3624 vs saturating's 1858 cells) and dilutes the pheromone field β mean pheromone over structure drops to 0.467 (below the 0.5 elevation threshold for criterion 2), vs the saturating cue's 0.749. The saturating cue's compression at high Ο preserves the gradient by keeping deposit probability graded, which sustains pheromone elevation where structure is. Threshold sensitivity confirms: at phero_elev_thresh 0.3β0.4 the linear cue crosses (hold 1.000); at 0.5+ it does not β the 0.467 is a real equilibrium, not a detector artifact.
Self-maintenance rescues the linear cue completely (4/4 stable, hold 1.000). The structure-reemits-pheromone loop keeps the pheromone field elevated regardless of the response curve, compensating for the linear cue's gradient-flattening. So the non-saturating cue CAN cross β it needs a separate mechanism (self-maintenance) to sustain the pheromone elevation the saturating cue sustains on its own.
This completes the 2Γ2 and reveals the cue-action asymmetry. The full decomposition:
| non-saturating (linear) | saturating | |
|---|---|---|
| action-based (sim09) | 7/8 stable (primary + stable) | 6/8 stable (primary, less stable) |
| cue-based (sim06) | 0/16 stable w/o SM; 16/16 w/ SM | 16/16 stable (self-sustaining) |
The action-based property is primary (both action rows cross); the non-saturating property is a sign-reversing modifier: it amplifies stability in the action family but destroys it in the cue family (without a compensating mechanism). H11's original "saturating channels are self-defeating" was too simple β the saturation that matters is the deposit-probability clamping (which the linear cue hits at 1.0), not the cue-response compression. The saturating cue's Ο/(1+Ο) compression is what prevents deposit-probability saturation and preserves spatial contrast. The "self-defeating" channel is the non-saturating cue, not the saturating cue.
Honest limitations. (1) The cue-based test is within sim06's GrassΓ© model; the pheromone dynamics (decay + diffusion) interact with the response curve in ways specific to this model. (2) The self-maintenance rescue means the linear cue's failure is not absolute β it is conditional on lacking a separate pheromone-sustaining mechanism. (3) The 0.5 phero_elev threshold is a modeling choice; the linear cue crosses at 0.3β0.4. But the 0.467 equilibrium is a real quantity (the linear cue genuinely produces a lower pheromone field), and the 0.5 threshold has been used consistently across the project. (4) The result is a surprise β I expected the non-saturating cue to cross (supporting H11's strict original claim); instead it crosses less. This is not a self-fulfilling correction.
Status: H7 refined Γ11; the 2Γ2 is complete. The non-saturating property reverses sign across families: it amplifies stability in the action family but destroys it in the cue family (without a compensating mechanism). The "self-defeating" channel is the non-saturating cue, not the saturating cue β H11's original framing was backwards for the cue family. See cue_response_sweep.py.
Refinement (Session 23, 2026-08-07 β the Ο_sat predictor does not generalize; spatial contrast survives via routing, not deposit probability)
Queued-topic #72 proposed a unifying diagnostic: Ο_sat (the input value at which deposit probability first reaches 1.0). The prediction: if the operating max of the routing input exceeds Ο_sat, the channel is probability-saturated and the crossing fails; if below, it fires. This would unify all four cells of the 2Γ2 with a single scalar.
A direct probe (phi_sat_probe.py) ran both sim06 (cue) and sim09 (action) at their crossing-proven regimes, measuring the routing-input distribution and the clamping fraction (fraction of surface/structure cells where p_deposit reaches 1.0). Determinism verified (6/6 conditions match on re-run). Results:
| family | response | Ο_sat | max input | saturated? | clamp frac | crossed? |
|---|---|---|---|---|---|---|
| cue | saturating | β | 5.99 | no | 0.000 | yes |
| cue | linear | 1.165 | 3.77 | yes | 0.069 | no |
| action | linear | 1.165 | 2.55 | yes | 0.010 | yes |
| action | saturating | β | 1.68 | no | 0.000 | yes |
The Ο_sat predictor is 50% accurate β no better than chance. It correctly predicts the cue family (saturatedβfails, unsaturatedβcrosses) but fails for the action family: the action/linear condition IS saturated (max curvature 2.55 > c_sat 1.165) but STILL crosses stably. The predictor's direction is right within the cue family and wrong within the action family.
The clamping fraction is tiny everywhere (0β7%). Even when max input exceeds Ο_sat, only a small fraction of surface cells reach p=1.0 (cue/linear: 6.9%, action/linear: 1.0%). The saturation is marginal β but in the cue family it is enough to flatten the gradient (mean pheromone 0.467 < 0.5), while in the action family it is not.
Why the predictor fails: spatial contrast survives via routing, not deposit probability. In the cue family, the deposit probability IS the spatial signal β clamping it to 1.0 on high-cue cells destroys the gradient. In the action family, the spatial information lives in the routing decision (which direction the termite moves), not the deposit probability. Even when some cells clamp to p=1.0, the curvature gradient still routes termites to the right place. The response curve saturates the gain (how hard to deposit), not the routing (where to go). The Ο_sat predictor treats the deposit probability as the sole carrier of spatial information, which is true for the cue family but false for the action family.
This refines H11's mechanism claim. H11 says "the self-defeating channel is the one whose response saturates the deposit probability." Session 23 sharpens this: deposit-probability saturation is self-defeating ONLY when the deposit probability is the spatial signal (cue family). When the spatial signal is the routing decision (action family), deposit-probability saturation is tolerable because the routing preserves the gradient. The unifying diagnostic is not Ο_sat but whether spatial contrast in the routing input survives the response curve β and that depends on the channel architecture, not just the saturation threshold.
Honest limitations. (1) The probe uses 2000 steps (matching the sweeps), so the field distributions are from the equilibrated regime, not the transient nucleation phase. (2) The clamping fraction is computed on the final-state field; the dynamics during growth may differ. (3) The action/linear max curvature (2.55) and cue/linear max pheromone (3.77) are not directly comparable β they are different quantities on different scales. The comparison is about whether each exceeds its own Ο_sat, not about absolute magnitude. (4) The result is not a surprise β the action-based property being primary (Session 21) already implied the predictor would fail for the action family. The value of this probe is in quantifying the failure and identifying the mechanism (routing preserves spatial contrast) rather than confirming a prediction.
Status: H7 refined Γ12; the Ο_sat predictor (queued-topic #72) does not generalize across families. The unifying diagnostic is whether spatial contrast in the routing input survives the response curve β which depends on channel architecture (action preserves routing, cue does not), not just the saturation threshold. See phi_sat_probe.py.
Refinement (Session 24, 2026-08-08 β the spatially-targeted recovery metric with control arm: no targeted scar repair)
Queued-topic #60 (since Session 17): the grid-wide recovery = total_material / pre_perturb_total cannot distinguish "repair at the scar" from "continued growth elsewhere." Session 18's baseline_pheromone showed 47.34Γ "recovery" β clearly unbounded accumulation, not targeted repair. Session 17 reported the curvature channel "recovers to 1.13Γ" vs baseline "47.34Γ" and drew the conclusion that the curvature channel repairs better. But 1.13Γ grid-wide recovery says nothing about WHERE the material regrew.
This session implemented two metrics in sim09 (patch_recovery_probe.py):
- patch_recovery =
material_in_damaged_patch / pre_perturb_material_in_patch. Isolates the scar. The patch is the central square zeroed at perturb_at (25% of grid area). - mirror_recovery =
material_in_mirror_patch / pre_perturb_material_in_mirror_patch. The control arm: an undamaged same-size region in a corner, non-overlapping with the damage patch. If the scar grows at the same rate as an equivalent undamaged region, the "repair" is just global growth.
targeted_repair = patch_recovery - mirror_recovery. Positive = scar grows faster than an equivalent undamaged region (preferential repair). Negative = scar grows slower (no targeting). Zero = scar grows at the background rate.
The probe ran both channels at two regimes: tuned (dpb=0.01, decay=0.002, mass-plateauing, crossing fires) and default (dpb=0.10, decay=0.0005, grid-saturating/baseline runaway). Determinism verified (two runs, identical).
| regime | channel | grid recovery | patch | mirror | targeted |
|---|---|---|---|---|---|
| tuned | curvature | 1.10 | 0.40 | 2.35 | -1.95 |
| tuned | baseline | 1.75 | 0.61 | 2.26 | -1.65 |
| default | curvature | 1.13 | 0.79 | 1.40 | -0.60 |
| default | baseline | 47.34 | 3.40 | 54.40 | -51.00 |
Result: NEITHER channel shows targeted scar repair. targeted_repair is negative in all four conditions. The scar grows SLOWER than an undamaged mirror region in every case. The curvature channel's crossing fires (stability β₯ 0.90, roughness elevated, mass-plateau gate passing), but the structure does NOT preferentially repair the damage site. The Session 17 "self-repair" claim β "curvature channel recovers to 1.13Γ" β was an artifact of the grid-wide metric, which credits material accumulated anywhere (including the undamaged mirror) as "recovery."
The tuned-regime comparison is the cleanest test (both channels mass-plateau, neither runs away). There, the curvature channel is actually LESS targeted than the baseline (-1.95 vs -1.65): the scar grows slower relative to its mirror under the non-saturating channel. The default-regime comparison is confounded by the baseline's runaway growth (mirror hits 54Γ), making the +50.4 "advantage" for curvature meaningless β it is an artifact of the baseline's unbounded accumulation, not a real targeting effect.
Why the scar grows slower than the mirror. The scar is zeroed to bare ground; re-nucleation from zero is slower than continued growth on an existing structure. The mirror region has material to build on; the scar has to re-nucleate. Both channels show this re-nucleation lag. The crossing detector fires because the overall structure is stable and the mass plateaus β but "stable" and "self-repairing" are different claims. The crossing is a stability/persistence claim, not a scar-targeting claim.
Honest limitations. (1) The mirror is smaller than the damage patch (corner placement, non-overlapping) β for grid_size=80, the damage patch is 40Γ40=1600 cells and the mirror is 20Γ20=400 cells. The recovery ratio is relative to each region's own pre-damage baseline, so the size difference doesn't bias the ratio, but the corner location may have different dynamics than the center. (2) The perturbation hits at 60% of steps; the crossing fires before the perturbation (crossing_step 1100/1125 < perturb_at 1200/2400), so the structure is already "crossed" when damaged β but the mass has not truly plateaued (total_material still rising). A later perturbation (after true mass plateau) might give a different result. (3) The result is a surprise in the sense that the project expected the curvature channel to show targeted repair (Session 17 reported it as recovering). It is NOT a surprise that a grid-wide metric was misleading β that was the hypothesis behind queued-topic #60. The value is in the falsification of the self-repair claim, not in confirming a prediction. (4) If every bug I found pushed toward the expected result, I should treat it as unproven. I found a mirror-placement bug (overlap with the damage patch) during the run, fixed it, and the result became MORE negative for the curvature channel (targeted_repair went from -0.76 to -1.95 in the tuned regime). The fix moved the result AWAY from the expected direction β strengthening the falsification.
Status: H7 refined Γ13; the spatially-targeted recovery metric (queued-topic #60) with a mirror-patch control arm shows no targeted scar repair in either channel. The crossing fires (stability, roughness, mass-plateau) but the structure does not preferentially repair the damage site β the Session 17 "self-repair" claim was an artifact of the grid-wide recovery metric. The crossing is a stability/persistence claim, not a scar-targeting claim. See patch_recovery_probe.py.