# The scattering side: narrowing the spread against raising the pull

**Revision 1, October 14, 2026, for Colson's review.** It replaces draft 1 as the plan under review; plan-draft-1.md
stays word for word. No simulation, check or calibration has run for it. The only thing computed is the theory's
expected response, worked out from the equations for this model's natural rates (theory_numbers.py, with its output in
theory_numbers.txt). That's arithmetic: no oscillators were simulated and no saved data were read. Nothing runs without
his go.

His words. The request: "The central question is whether temporarily narrowing the natural-frequency spread produces a
different pattern of coherence formation, distribution, persistence, and later perturbation growth from temporarily
increasing the coupling strength… compare the two routes at matched achieved coherence, while keeping their distinct
effects on the underlying dynamics visible." And on draft 1: "let's include both the uniform-narrowing and faster-half
compatibility arms in the scattering-side draft. I agree that uniform narrowing is primarily a check of the mathematical
equivalence between natural-frequency spread and coupling strength. The faster-half arm is particularly interesting
because it changes the shape of the frequency distribution and targets oscillators that contributed relatively little
to the medium-induced coherence. Before locking, please specify the expected response for the faster-half arm, its
uncertainty or meaningful-effect margin, and what observation would contradict that expectation. Keep the two
comparisons distinct, preserve all earlier frozen results, and run nothing until I separately approve the checks."

## What changed from draft 1

- **Both arms are in, as two separate comparisons.** Comparison A: uniform narrowing against the raised pull, at
  matched coherence. Comparison B: the faster half moved toward the edge, against untouched, with the raised pull's
  gain as the yardstick. They're never pooled or combined into one verdict.
- **The faster-half arm has a fixed size, c_f = 0.6, chosen from the theory before anything runs.** Draft 1 searched
  for a match down to c_f = 0.5. By the theory, no size in that range is expected to reach the raised pull's coherence
  within the window, so the search would most likely have ended at its limit.
- **A correction to draft 1.** Draft 1 said that even halving the faster half's distance from the edge leaves all of it
  far outside the rhythm's reach. That holds for the central rhythm. But moving the faster half inward also crowds the
  rates just outside the edge, and at about halving (c_f ≈ 0.515) that crowding becomes enough for a different kind of
  order to start there: fast oscillators locking together and turning at about 0.96, forward and backward, relative to
  the centre. Draft 1's search limit sat right at that threshold. At 0.6 the arm stays well clear of it.
- **Each comparison now has its expected response, margin and contradicting observation**, fixed before anything runs.
- **An optional second faster-half level, c_f = 0.4,** where the theory expects that edge order to form. It's Colson's
  choice and isn't included unless he chooses it.

## Ground rules

- **The records stand.** The Cause Test's FAIL stands as registered. The medium pilot, its checks and the Fluidity
  Replication stay exactly as recorded. Their code is only imported, never edited, and their own commands aren't run.
  Draft 1 stays as written.
- **Nothing new in the model.** The same equations, code and settings. Only the natural rates change during a window, as
  K did in the medium pilot.
- **Tests 2 and 3 stay separate, unapproved directions** (a medium that remembers; spread by descent).
- **A toy model.** It shows structure inside the model, not evidence about cells. Histories, not memory.
- **Nothing leaves this folder.** No change to the Spiral Staircase website or the future-hypotheses backlog, and no
  publication.

## What the equations say

Each pulled oscillator follows dθⱼ/dt = ωⱼ + Im(H e^(−iθⱼ)), where H = K z_A + ε z_B in group A (K z_B + ε z_A in
group B). Each free turner follows dθⱼ/dt = ωⱼ.

- **The identity (exact).** Narrowing every natural rate by a factor c for 200 time units is the same as strengthening
  both pulls, K and the faint link ε, by 1 / c for 200 c time units. So a uniform narrowing is the medium route seen from
  the other side, apart from two things: the faint link strengthens with it, and the narrowed run's clock runs about
  0.5% slower (about one time unit behind at R).
- **The central rhythm (standard large-group theory).** Its threshold depends only on how crowded the natural rates are
  at the centre: K + ε = 2 / (π g(0)), which is 2Δ for this spread. It can hold an oscillator only if that oscillator's
  natural rate lies within about pull × coherence of the centre: about 0.1 at these coherences.
- **Order away from the centre (the same theory, worked out here for this model's rates).** A pattern turning at some
  rate can grow when the natural rates near that rate are crowded enough and the pull is strong enough, with A and B
  together (K + ε = 2.0) or opposite (K − ε = 1.8). In the untouched spread nothing like this can happen, because the
  rates are most crowded at the centre. Moving the faster half toward the edge changes that, as shown below.

## The two arms

### Arm U: uniform narrowing (for comparison A)

- For the 200-unit window from T, the step is made with every natural rate multiplied by c, in both groups, free
  turners included (the identity needs them). At R the run goes back to the original step, made from the stored
  original rates. Nothing is divided by c to undo the change.
- Phases aren't touched. Which oscillators are pulled stays exactly as it was, oscillator by oscillator. The set stays
  symmetric about 0, every oscillator keeps its rank and sign, and A and B keep the same set.
- At each moment, c is found by a short search starting from the theory's estimate, c = 0.99527 (narrowing by 0.47%),
  so that C at R (the average of the two groups) matches the raised-pull arm's within a relative 1%. Each search step
  reruns only the window, with one copy and no gap. One c serves both groups; each group's own mismatch is reported.
- The search may narrow by up to 5%. A moment where nothing within that matches is listed as unmatched, with its reason.
  Nothing is retried or loosened. If more than 1 moment in 10 is unmatched, comparison A's readings are inconclusive
  (the pilot's rule).

### Arm F: the faster half moved toward the edge (for comparison B)

- In each group, the faster half's 1,936 pulled oscillators move toward the slower half's edge, b = 0.95021 (the
  slower half's largest natural rate). Each keeps its sign, and |ω| becomes b + 0.6 (|ω| − b): its distance from the
  edge shrinks by 40%.
- The slower half and the free turners stay as they are. The set stays symmetric, every rank is kept and the same
  oscillators stay pulled. Only the spread's shape changes.
- How far the rates move: the faster half's median natural rate goes from 2.18 to 1.69, and its largest from 19.72 to
  12.21.
- No search and no matching. By the theory it isn't expected to reach the raised pull's coherence. The window, the
  return at R and the 500 units followed after R are the same as for the other arms.

**Why 0.6.** From theory_numbers.txt, where c_f is the fraction of each distance kept:

| c_f | Crowding just outside the edge, relative to the centre | Pull with A and B together that the edge order would need (the model has 2.0) | The edge order at the model's pulls |
| --- | --- | --- | --- |
| 1 (untouched) | 0.53 | at least 3.8 | doesn't grow |
| 0.6 | 0.88 | 2.38 | doesn't grow |
| 0.55 | 0.95 | 2.14 | doesn't grow |
| 0.5 | 1.05 | 1.94 | grows, e-folding about 730 units |
| 0.45 | 1.17 | 1.76 | grows, e-folding about 150 units |
| 0.4 | 1.31 | 1.59 | grows, e-folding about 67 units (A and B together; about 117 with A and B opposite) |

The e-folding time is how long a pattern takes to grow by a factor of about 2.7.

- At every level the centre's crowding is unchanged, so the central rhythm's threshold doesn't move. None of the faster
  half comes within the rhythm's reach (about 0.1 from the centre; the edge is at 0.95).
- The edge order starts at about c_f = 0.515. Just past that it grows slowly: at 0.5 its e-folding time is about 730
  units. In the same theory the raised pull's central rhythm grows with an e-folding time of about 210 units, and the
  window is 200 units.
- At 0.6 the edge order would need the pulls about 19% stronger than they are. Nothing new is expected to grow.
- One thing about the central rhythm does change: how quickly it responds (J in theory_numbers.txt, about 5% quicker at
  0.6). The threshold doesn't depend on it. My judgment, not a calculation: its effect on coherence at R should be well
  inside the margin below.
- The model's own 4,000 rates give the same numbers as the large-group stand-in, to within the spacing of its rates.

### Optional: a second level, c_f = 0.4 (Colson's choice; not included unless he chooses it)

- The same arm, with |ω| becoming b + 0.4 (|ω| − b). The faster half's median rate goes from 2.18 to 1.44, and its
  largest to 8.46.
- Here the theory expects the edge order to form within the window: an e-folding time of about 67 units with A and B
  together, so the window spans about three.
- It tests the other side of the same theory. At 0.6 nothing should grow; at 0.4 a kind of order that no change of
  pull produces should. It's read as its own comparison, B′, and never pooled with B.
- It adds about 5 minutes of computing to the pilot.

## What's reused

| | |
| --- | --- |
| The model | nudge_test.py, unchanged: two groups of 4,000, K = 1.9, ε = 0.1, Δ = 1, steps of 0.025, settle 300, runs of 6,000 |
| The untouched arm | The base run with the carried gap (10⁻⁷, put back every 5 units) |
| The raised-pull arm | K raised by 0.5% (the pilot's frozen size) for 200 units from T, back to 1.9 at R, followed 500 units; rerun on the new starts by the pilot's own functions |
| Moments | The pilot's rule and draws: 10 per start, 330 units apart from t = 2,000 plus a seed-drawn offset, R = T + 200 |
| Matching rules (arm U) | The push's: nothing retried or loosened, every unmatched moment listed with its reason, any selection made visible |
| Measures | Each half's exact contribution (Fluidity Replication); each half's own coherence and the A–B timing and \|z₂\| to \|z₄\| (pilot); the share of the extra left over (R + 200, R + 500] (pilot); later growth against untouched, with the 0.1602 benchmark (Cause Test) |
| Error bars | Starts are the units; the larger of the resampled bar (400 resamples, seed 20261016) and SD/√n; shares take the resampled bar |
| Safeguards | The pilot's freeze: settings fixed and code checked first, the check's results frozen, old-start data never pooled with fresh starts |

Left out: the matched push and its sham, and the lowered and widened arms (the push, the state route, has its own
record); and the rms phase distance between routes at R, since the narrowed run's slower clock alone moves every
drifting oscillator.

## Comparison A: uniform narrowing against the raised pull, at matched coherence

Each measure is read as narrowing minus raised pull, at the matched moments, with every start counted equally.

| Pattern | Measure | Margin |
| --- | --- | --- |
| Formation | The average gain over (T, T + 100] as a share of the gain at R (gain: arm minus untouched coherence) | 0.10 |
| Distribution | The slower half's share of the extra coherence at R, from the exact contributions (each half's own coherence beside it) | 0.10 |
| Persistence | The share of the extra coherence at R still there over (R + 200, R + 500] | 0.10 |
| Later growth | Gap growth over (R + 200, R + 500], each arm minus untouched | Half the benchmark (0.1602 × the extra coherence at R) |

Each measure gets one of three labels, fixed now:

- **differs:** more than 3 bars from zero;
- **same within the margin:** the difference ± 2 bars lies inside ± the margin;
- **unresolved:** neither. Unresolved is never negative.

**Expected response:** "same within the margin" for formation, distribution and persistence. By the identity, the two
routes differ only by the faint link (0.47% stronger) and the clock (about one time unit behind at R), both far too
small to show at these margins. Later growth is expected to be the same as well, but 12 starts probably can't show it
(see below).

**What would contradict it:** a "differs" on any measure. It would point first to the faint link, the clock or a fault,
and those would be checked before anything else is read into it. An arm raising K and ε together would separate the
first two; that would be a separate proposal.

**What 12 starts can see**, judging roughly from the pilot's spread between starts:

- distribution: the pilot's route difference had a bar of about 0.02, so "same within 0.10" is within reach;
- persistence: about 0.03, so it's within reach if the routes are close;
- formation: no earlier estimate;
- later growth: the pilot's bar for one arm against untouched was ±0.0009, more than half the margin here (about
  0.0016). A large difference, around 0.8 of the benchmark, would show. "Same within the margin" probably wouldn't,
  unless the two routes' later growth moves together; showing it would take roughly two to three times the starts.

## Comparison B: the faster half moved toward the edge, against untouched

Read at all 120 moments; nothing is matched. Every start counts equally.

| Reading | Measure | Expected | Margin |
| --- | --- | --- | --- |
| B1, the gain | Arm F's coherence at R minus untouched's, as a share of the raised pull's gain at the same moments (each averaged over moments and starts, then divided) | 0 | ±0.25 |
| B2, order among the fast oscillators | The faster half's own coherence at R, arm F minus untouched | 0 | ±0.005 |

B1 and B2 each get one of three labels, fixed now:

- **as expected (no meaningful change):** the reading ± 2 bars lies inside ± its margin;
- **contradicts (a meaningful change):** more than 3 bars from zero and at least the margin in size, either way;
- **unresolved:** neither. A clear change smaller than the margin is reported as a small change, not a contradiction.

**Why these margins.**

- B1: disturbance alone moves coherence a little. In the pilot the shams, which disturbed the run without changing its
  coherence when applied, left coherence up to 0.0017 above untouched within 200 units and up to 0.0026 later. That's
  about 0.08 and 0.13 of the raised pull's gain at R (0.0205). A meaningful effect should be well clear of that; a
  quarter of the medium's effect is about twice the largest.
- B2: the faster half's own coherence sits at the level random phases give: 0.0200 untouched in the pilot. The medium
  route moved it by 0.0003 and the shams by at most 0.0001; the push, which moved phases directly, raised it by
  0.0138. The margin, 0.005, is a quarter of its untouched level.

**What a contradiction would mean.**

- B1, a rise: making the fast oscillators more alike gathered order after all, even though none came within the
  central rhythm's reach.
- B1, a fall: moving them cost the central rhythm coherence.
- B2: order formed among the fast oscillators themselves, which the theory places only below c_f ≈ 0.515.

Each would go against the theory's expectation. A fault in the arm would be checked first.

**Uncertainty.**

- B2's bar can be estimated now from the statistics of random phases: about 0.001 with 12 starts, so a change of 0.005
  would stand out clearly.
- No earlier number gives B1's bar. My rough guess is 0.05 to 0.1 of the raised pull's gain with 12 starts. That would
  let "as expected" show if the true value is within about 0.1 of zero.
- The check below gives a first look at both before the pilot. If 12 starts look unlikely to resolve the margins, I'll
  say so before the pilot and propose a change for Colson's go.
- The theory's numbers are large-group and linear. They say where order starts and how fast it grows, not how large it
  gets among 4,000 oscillators.

**Comparison B′, only if the 0.4 level is chosen.** The same readings and margins, with the expectation reversed for
B2:

- **as expected:** B2 more than 3 bars above zero and at least 0.005: order formed among the fast oscillators;
- **contradicts:** B2 ± 2 bars inside ±0.005: no such order within the window;
- **unresolved:** neither.
- B1 is described, not labeled: the theory says the order forms, but not how large it gets, and so not how much it adds
  to the total.
- Also described: where any gain sits (the exact contributions), whether A and B move together as the theory's
  fastest pattern does, and how quickly the extra fades after R. The theory expects it to fade quickly once the rates go
  back, since its members' rates spread out again.

**Kept visible for B (and B′), as descriptions:**

- where any gain sits: each half's and the free turners' exact contributions;
- after R, block by block against untouched, and the share of any gain still there over (R + 200, R + 500], which only
  means something if B1 shows a change;
- later growth against untouched over (R + 200, R + 500], beside the pilot's shams (+0.0015 on average). Disturbance
  alone raised later growth there, so a difference here isn't by itself a sign of compatibility.

## Kept visible for every arm

- Through the window, every unit: coherence, each half's contribution and own coherence, the A–B timing, and how many
  pulled oscillators lie within the rhythm's reach (|natural rate| ≤ pull × coherence).
- What each route changed: the extra pull the raised pull delivered (as in the pilot), and how far each narrowing moved
  the rates (median and largest).
- At R, |z₂| to |z₄| and the A–B timing. Afterwards, each arm against untouched in every measure, block by block.

## Steps

1. **Code checks** on old start 1, mechanics only:
   - arm U with c = 1, and arm F with c_f = 1, each match the untouched run bit for bit;
   - after R, the rates are the originals bit for bit, and the run is the unchanged model's;
   - the pulled and free oscillators and both halves are unchanged, and the rates' mean stays 0;
   - in arm F, the slower half's and free turners' rates are unchanged bit for bit, and each faster rate is
     b + c_f (|ω| − b) with its sign;
   - arm U's window matches its exact mirror (K and ε raised by 1 / c, with steps of 0.025 c) to rounding;
   - the raised-pull arm reproduces the pilot's saved arrays for pilot start 103 bit for bit.
2. **A coherence-only check** on old starts 16 and 17 (20 moments; no gap growth; nothing after R is looked at):
   - whether arm U matches within 1% at 18 or more of the 20 moments, and how many search steps it takes;
   - arm F's B1 and B2 on the 20 moments (and B′'s, if chosen), for a first look at their spread. The sizes stay 0.6
     (and 0.4) whatever they show.

   Its settings are then frozen, as in the pilot. Its numbers never enter the pilot's readings.
3. **An exploratory pilot** on fresh starts 135 to 146 (seeds 134 to 145; 120 moments): roughly 25 minutes of
   computing in foreground pieces, about 30 with the optional level. It can suggest, not confirm.
4. **A locked prospective replication** on further fresh starts, only if wanted after the pilot's review.

**Locking.** When Colson approves this revision, with his choice on the 0.4 level, it's sealed as the locked plan
before step 1. The expected responses, margins and labels can't change after that. If the check shows the pilot needs
changing, the change is written as a dated amendment for his go before the pilot runs. Steps 1 and 2 need one go, step
3 another, and step 4 is its own decision. Nothing runs in the background.

## What it can't tell

- It's a toy model, and differences are between histories and the states they leave.
- It tests one size of the raised pull, one window (200 units), one even narrowing, and one way of reshaping (two if
  the 0.4 level is chosen).
- Arm U can't isolate compatibility, by the identity. Arm F changes compatibility in one place only.
- The expected responses come from large-group, linear theory computed for this model's rates. They're expectations
  until the pilot runs.
- The free turners are scaled in arm U (the identity needs it) and left alone in arm F.

## Where things go

Notes and reports stay in this folder: this plan, draft 1, and the theory calculation (theory_numbers.py and
theory_numbers.txt). Working files would go to generated-artifacts/scattering-side/, which is kept out of the project's
history. The model's files are only read. Nothing else is touched: not the medium pilot or the Fluidity Replication, the
Cause Test, the earlier folders, the main file, the packet, the gathered record, the Spiral Staircase pages, the
future-hypotheses backlog or the website.
