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

**Final design, October 15, 2026, for Colson's approval.** It replaces revision 1 as the plan under review. plan.md
(revision 1) and plan-draft-1.md stay word for word. No simulation, check or calibration has run for it. Since revision
1, the only new numbers come from the model's natural rates and simple formulas: how many rates fall in narrow
intervals near the edge, how large the new measures are when phases are random, and the expected size of error bars.
That's arithmetic: no oscillators were simulated and no saved results were read. The costs come from the medium pilot's
recorded timings and file sizes. Nothing runs without his go.

His words, on revision 1: "let's include both faster-half levels, 0.6 and 0.4, as separate prospective comparisons. I
particularly want to test the analytically predicted transition from no additional edge synchronization at 0.6 to an
emerging edge rhythm at 0.4. Before locking, please specify how the analysis will distinguish an actual separate,
counter-rotating collective rhythm from a temporary increase in faster-half coherence magnitude. Preserve the
theoretical predictions, the fixed intervention window, and the original model dynamics. Use existing phase and
frequency observables where possible. Keep the uniform-narrowing comparison separate, and preserve all previous
experimental locks and records. Please finalize the written design and show me the checks and expected computational
cost before requesting authorization to run. No simulations, website changes, or publication without a separate go."

His original request and his words on draft 1 are quoted in plan.md.

## What changed from revision 1

- **Both faster-half levels are in, as separate comparisons.** B at c_f = 0.6, where the theory expects no edge order,
  and B′ at c_f = 0.4, where it expects an edge rhythm to emerge. They're never pooled with each other or with
  comparison A.
- **A rule for telling a separate, counter-rotating rhythm from a temporary rise in the faster half's coherence** (its
  own section below). It adds labeled readings and a combined reading with B2, all fixed now.
- **The untouched run is rerun through each moment.** The base run keeps coherence every unit but not the oscillators'
  phases, which the rule needs. A rerun from T with both copies reproduces the base run exactly; a code check confirms
  it. Revision 1's cost left this out and is corrected below.
- **Three code checks are added** (the untouched rerun, the turning rates, and the rule tried on made-up histories).
  One is reworded: the moved rates match their formula to rounding, since that arithmetic isn't exact, while c_f = 1
  still reproduces the untouched run bit for bit.
- **Unchanged:** the model and its settings, the 200-unit window, the theory's numbers (theory_numbers.txt), comparison
  A, and every expected response, margin and label revision 1 set. Those sections are carried over word for word.

## 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.
  Their saved files are only read. Draft 1 and revision 1 stay 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. The new measures only read the oscillators' phases; nothing feeds back into a run.
- **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.

**What they give for the two faster-half levels** (theory_numbers.txt, the model's own 4,000 rates; revision 1 gives
the full table):

| c_f | Crowding just outside the edge, relative to the centre | Pull with A and B together that edge order would need (the model has 2.0) | Edge patterns that grow at the model's pulls |
| --- | --- | --- | --- |
| 0.6 | 0.88 | 2.38 | none |
| 0.4 | 1.31 | 1.59 | A and B together: growth 0.0150 per time unit, turning at 0.960, e-folding 67 units (about 20-fold over the window). A and B opposite: growth 0.0086, turning at 0.964, e-folding 116 units (117 in the large-group stand-in) |

- Edge order starts at about c_f = 0.515, between the two levels. That's the transition the two comparisons test from
  either side.
- The rates are symmetric, so a pattern turning forward at about +0.96 and its mirror turning backward at about −0.96
  grow at the same rate. The linear theory therefore expects both: a counter-rotating pair. Which survives once they're
  large is beyond it.
- At both levels the centre's crowding is unchanged, so the central rhythm's threshold doesn't move, and none of the
  faster half comes within its reach. How quickly it responds does change (J in theory_numbers.txt: about 5% quicker at
  0.6 and 9% at 0.4). My judgment, not a calculation: at 0.6 that stays well inside B1's margin.
- The theory is large-group and linear. It says where order starts, how fast it grows and how fast it turns, not how
  large it gets among 4,000 oscillators.
- Turning rates are measured in the model's own frame, where the central rhythm turns at about 0.

## The 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).

### Arms F and F′: the faster half moved toward the edge (for comparisons B and 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 + c_f (|ω| − b).
- **Arm F, c_f = 0.6:** each distance from the edge shrinks by 40%. The faster half's median natural rate goes from
  2.18 to 1.69, and its largest from 19.72 to 12.21.
- **Arm F′, c_f = 0.4:** each distance shrinks by 60%. The median goes to 1.44, and the largest to 8.46.
- 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.
- No search and no matching. The window, the return at R and the 500 units followed after R are the same as for the
  other arms.

### The raised-pull and untouched arms

- **Raised pull:** K raised by 0.5% (the pilot's frozen size) for 200 units from T, back to 1.9 at R, followed 500
  units; run by the pilot's own functions.
- **Untouched:** the base run, rerun from its state at T for the same 700 units with both copies, so that its phases can
  be read. It reproduces the base run exactly (checked).

## 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), rerun from its state at T through each moment's 700 units with both copies |
| 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); the turn between readings one unit apart (the earlier exploration's turning rate) |
| 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

Carried over word for word from revision 1.

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 (c_f = 0.6) and comparison B′ (c_f = 0.4), against untouched

Carried over word for word from revision 1, except that B′'s heading no longer says it's optional. The rhythm readings
in the next section are added to both.

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′ (c_f = 0.4, arm F′).** 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.

## Telling a separate, counter-rotating rhythm from a temporary rise

**The problem.** B2 reads the faster half's own coherence at one instant, R. A rise there could come from a rhythm, or
from an alignment that no rhythm sustains: a chance alignment, a passing beat, or a lean toward the central rhythm.
Even a real counter-rotating pair shows only partly at any instant: its two parts turn opposite ways, so their combined
size swings at about twice the turning rate. B2 alone can't tell these apart. The rule below reads the last quarter of
the window and asks three things of the faster oscillators turning each way.

**What's read.** The last 50 units of the window, (T + 150, R]: about 7.6 turns at the predicted rate, and late enough
for a pattern with a 67-unit e-folding time to have grown. The window and the runs are unchanged; this only reads them.
In each group the faster half splits by direction: 968 oscillators with positive natural rates (forward) and 968 with
negative ones (backward). Each direction is read on its own, in each group, at each moment, in every arm, untouched
included.

**The observables.** Both come from the oscillators' phases, read every time unit, and both reuse earlier measures.

- *Each oscillator's turning rate:* how far it turns over the 50 units, divided by 50. It's the turning measure the
  earlier exploration used for the groups' rhythms (the turn between readings one unit apart), applied to each
  oscillator, with its natural rate's advance added back so that full turns count. That's exact: within one unit the
  pull moves an oscillator off its natural advance by at most K + ε = 2 radians (2.0095 in the raised-pull arm), less
  than half a turn.
- *Each direction's own coherence, w(t):* the same measure as each half's own coherence (B2's), over that direction's
  968 oscillators.

**Three requirements for a direction to hold a rhythm.**

1. **A shared rate.** Find the interval 0.03 wide, inside the band 0.80 to 1.30 (−1.30 to −0.80 backward), that holds
   the most turning rates. Divide that count by the most natural rates in use that any such interval holds; call the
   result L. Require L ≥ 1.5. The shared rate, Ω*, is the median turning rate in the interval. If two intervals tie,
   the one nearer the centre is used.
   - Dividing by the arm's own natural rates means the crowding made by moving the rates doesn't count. Only
     oscillators pulled off their own rates into a common one do.
   - In counts, of the 968: at least 30 with the untouched rates (whose most crowded interval holds 20), 50 at
     c_f = 0.6 (33) and 74 at c_f = 0.4 (49).
   - Over 50 units, rates 0.03 apart drift about a quarter turn apart, so oscillators in one interval stay roughly
     together through the read.
2. **Steady turning at that rate.** Turn each reading of w back by Ω* per time unit and average the 50 readings; S is
   the size of the average. A rhythm of size a turning steadily at Ω* gives S of about a. A rise that lasts only part
   of the read, or turns at another rate, gives much less. Require S ≥ 0.057: twice the size w has at any single reading
   when phases are random (0.0285 for 968 oscillators). That's the equivalent of at least 55 of the 968 aligned and
   turning together through all 50 units. With random phases, each oscillator turning at its own natural rate, S would
   typically be about 0.007 to 0.010.
3. **Separate from the central rhythm.** Built into the band: the central rhythm turns at about 0, and the band starts
   at 0.80. The theory puts the edge rhythm at about 0.96.

A direction meeting 1 and 2 **holds a rhythm**. A group holding one in each direction at the same moment holds a
**counter-rotating pair**.

**Readings.** Each group at each moment counts once: 20 per start in each arm. Each reading is a share, arm minus
untouched, with every start counting equally. Its bar is the larger of the resampled bar and SD/√n, from the starts'
own differences.

- **E-pair:** the share holding a counter-rotating pair.
- **E-any:** the share holding a rhythm in at least one direction.
- **E-steady:** the share with S ≥ 0.057 in at least one direction, whatever L shows. It's used only inside the
  combined readings, to catch steady turning that hasn't locked.

**Labels, fixed now.** "Inside" means the reading ± 2 bars lies inside ±0.05.

- **Comparison B (0.6), E-any:** as expected (no edge synchronization) if inside; contradicts if more than 3 bars above
  zero and at least 0.05; otherwise unresolved. E-pair is described.
- **Comparison B′ (0.4), E-pair and E-any, each:** as expected if more than 3 bars above zero and at least 0.10;
  contradicts if inside; otherwise unresolved.

**Why these sizes.** 0.05 is 1 group-moment in 20, one per start on average. At 0.4 the theory has the pattern growing
about 20-fold within the window at every moment, so if the rhythm forms as predicted it should be common. 0.10 asks for
at least 1 group-moment in 10 beyond untouched; a clear share between 0.05 and 0.10 is reported as a rare rhythm,
unresolved rather than a contradiction. At 0.6, a clear share of 0.05 or more goes against the theory.

**Combined readings at c_f = 0.4,** checked in this order; the first that applies is the reading. B2 keeps its labels
from revision 1: "up" is its as-expected label for B′, and "inside its margin" its contradicts label.

1. **The predicted counter-rotating edge rhythm:** E-pair as expected, B2 up, and the median |Ω*| over every direction
   holding a rhythm within 0.90 to 1.10 (the theory: 0.960 with A and B together, 0.964 opposite).
2. **A counter-rotating rhythm that didn't lift B2:** E-pair as expected and the rate within 0.90 to 1.10, but B2 not
   up. The pair formed, but too rarely, or too small, to show in the faster half's coherence at the single instant R.
3. **A one-directional edge rhythm, not the predicted pair:** E-any as expected and E-pair contradicts.
4. **A rise in magnitude without a separate rhythm:** B2 up, E-any contradicts, and E-steady inside.
5. **No edge order formed:** B2 inside its margin, E-any contradicts, and E-steady inside. This goes against the theory.
6. **Anything else:** unresolved, with each part described. For example, a pair at a rate outside 0.90 to 1.10, or
   steady turning without a shared rate (a pattern that hasn't locked).

**Combined readings at c_f = 0.6,** in the same way:

1. **No additional edge synchronization, as the theory expects:** E-any as expected, E-steady inside, and B2 as
   expected (no meaningful change).
2. **A change in the faster half's coherence without a separate rhythm:** B2 contradicts (either way), E-any as
   expected, and E-steady inside.
3. **Edge synchronization at 0.6, against the theory:** E-any contradicts, whatever B2 shows. E-pair says whether it's
   counter-rotating.
4. **Anything else:** unresolved, with each part described.

As in revision 1, a reading that goes against the theory sends me first to check the arm and the code for a fault.

**Why a temporary rise fails the rule.**

- **Chance alignment.** With 968 oscillators, w wanders around 0.0285 and peaks higher now and then. The oscillators
  keep their own rates, so no interval fills beyond its natural count (L stays near 1), and no alignment lasts: S stays
  near 0.01.
- **The readjustment after T.** When the rates change at T, the faster oscillators' arrangement takes a short while to
  settle. The read starts 150 units later, and a rise that lasts only part of the read adds to S in proportion: a rise
  to h for d units adds at most h × d / 50.
- **The central rhythm's pull.** It leans each faster oscillator toward a fixed angle near the central rhythm, so each
  direction's w holds a part turning at about 0, outside the band. Turned back by Ω* (more than 7 turns over the read),
  a fixed part keeps at most 5% of its size in S, and it fills no interval in the band. The forward and backward leans
  point opposite ways, so they largely cancel in B2.
- **Passing beats.** Two sets of oscillators at nearby rates line up and drift apart again, so w swells and shrinks.
  That isn't one steady turning, and without locking no interval holds half again its natural count.
- **Crowded rates.** Moving the faster half crowds the rates near the edge, and the turning rates with them. L compares
  against each arm's own natural rates, so crowding alone leaves L near 1.

**Described, not labeled** (for B and B′; the same numbers are recorded for every arm):

- the share of group-moments with a rhythm in one direction only;
- each rhythm's size: how many of the 968 share its interval, its S, and how many slower-half oscillators turn in the
  same interval;
- whether A and B are in step: at moments where both groups hold a rhythm in the same direction, whether their shared
  rates agree within 0.03 and their steady parts lie within a quarter turn of each other (the theory's fastest pattern
  has A and B together);
- growth through the window: S at the same Ω* in each 50-unit block from T to R, and the turning rate of w in each block
  (the earlier exploration's measure, applied to w);
- fading after R: the same, block by block over (R, R + 500]. The theory expects a quick fade once the rates go back,
  since the rhythm's members spread out again;
- L, S and Ω* themselves, each arm beside untouched;
- B2's own course through the window, block by block, which shows whether any rise in it was brief;
- for the raised pull and arm U, the same numbers. The theory expects no edge rhythm in either, and they enter no
  reading.

**What 12 starts can see.** With untouched at zero, a share of 0.10 has a bar of about 0.02, so "as expected" at 0.4 is
within reach if the rhythm forms at 1 group-moment in 10 or more. A share of 0.5 has a bar of about 0.03. At 0.6, if no
group-moment holds a rhythm in either arm, the bar is 0 and E-any reads as expected.

## Kept visible for every arm

- Through the window, every unit: coherence, each half's contribution and own coherence, the A–B timing, how many
  pulled oscillators lie within the rhythm's reach (|natural rate| ≤ pull × coherence), and the faster half's own
  coherence in each direction (w).
- Over the window's last 50 units: every pulled oscillator's turning rate.
- 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, with
  w every unit.

## Steps

1. **Code checks** on old start 1 and pilot start 103, mechanics only (one command, about 2 to 3 minutes):
   - 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 continues exactly as the unchanged model's step
     would from the same state;
   - the pulled and free oscillators and both halves are unchanged, the rates' mean stays 0, and every rank and sign
     is kept;
   - in arms F and 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, to rounding;
   - 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;
   - **new:** the untouched rerun reproduces the pilot's base run for start 103 bit for bit over its 700 units
     (coherence every unit and gap growth);
   - **new:** turning rates from readings every unit equal those from readings every step (40 per unit) to rounding,
     over a short stretch of each arm;
   - **new:** the rule tried on made-up phase histories, with no model run. A planted counter-rotating pair at ±0.96 is
     found as a pair at the planted rate, and a cluster turning one way is found in that direction only. Random phases,
     a brief alignment, a fixed lean, a beat between two nearby rates, crowded rates without locking, and a cluster
     turning at 0.5 all fail.
2. **A window-only check** on old starts 16 and 17 (20 moments; no gap growth; nothing after R is looked at; two
   commands, about 5 minutes). It's revision 1's coherence-only check, now also reading the rule's numbers. The two
   base runs are made afresh, keeping the states at T and R; then each arm's window runs on the first copy:
   - whether arm U matches within 1% at 18 or more of the 20 moments, and how many search steps it takes;
   - B1 and B2 for arm F, and B′'s for arm F′, for a first look at their spread;
   - the rule's numbers in every arm: whether untouched ever holds a rhythm (it shouldn't), and a first look at L, S
     and Ω* at both levels.

   The levels, the rule and its thresholds stay as written whatever it shows. Its settings are then frozen, as in the
   pilot, and its numbers never enter the pilot's readings. If it shows the pilot can't work as written (for example,
   untouched runs holding rhythms, or 12 starts looking unlikely to resolve the margins), I'll say so and propose a
   dated amendment for Colson's go before the pilot.
3. **An exploratory pilot** on fresh starts 135 to 146 (seeds 134 to 145; 120 moments): about 37 minutes of computing
   in about 11 foreground pieces. It can suggest, not confirm.
4. **A locked prospective replication** on further fresh starts, only if wanted after the pilot's review.

## What it costs

A copy-unit is one copy of the model stepped through one time unit.

| Step | What runs | Computing | Commands | Saved |
| --- | --- | --- | --- | --- |
| 1. Code checks | short runs from old start 1; the raised pull and the untouched rerun at pilot start 103's first moment; the rule on made-up histories | about 2 to 3 minutes | 1 | under 1 MB |
| 2. Window-only check | base runs for old starts 16 and 17, side by side (about 3 minutes); then 20 moments, each with five 200-unit windows on one copy plus arm U's search (about 1 to 2 minutes) | about 5 minutes | 2 | about 12 MB |
| 3. Pilot | base runs for the 12 fresh starts (about 6 minutes); then 120 moments, each with five arms of 2 copies × 700 units plus arm U's search: about 7,600 copy-units, or about 100 seconds on one worker (about 31 minutes in all) | about 37 minutes | about 11 | about 160 MB |

- The basis is the medium pilot's recorded timing: about 0.0134 seconds per copy-unit on each of 7 workers. Its base
  runs took about 172 seconds each, and its 11 pieces 1,929 seconds in all.
- Against revision 1's "roughly 25 minutes … about 30 with the optional level": the 0.4 level adds about 5 minutes, and
  the untouched rerun, which revision 1 left out, about 5 more.
- Every command runs in the foreground with a hard limit under 5 minutes, uses up to 7 worker processes that end with
  it, and leaves nothing running. Saved runs go to generated-artifacts/scattering-side/, which is kept out of the
  project's history and the published app.

## Locking

When Colson approves this final design, it's sealed as the locked plan before step 1, with a lock record naming its
fingerprint. The expected responses, margins and labels, the rhythm rule and its thresholds, and the combined readings
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 two reshapings.
- Arm U can't isolate compatibility, by the identity. Arms F and F′ change 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 arms F and F′.
- A rhythm smaller than the rule's thresholds isn't counted: steady turning worth fewer than about 55 aligned
  oscillators, or locking that adds less than half again to the most crowded interval. L, S and E-steady are shown
  beside the labels, so a smaller one would still be visible.
- The rule reads the window's last 50 units. A rhythm that formed and faded earlier in the window would show in the
  block-by-block descriptions, not in the labels.

## Where things go

Notes and reports stay in this folder: this final design, revision 1 (plan.md), draft 1, and the theory calculation
(theory_numbers.py and theory_numbers.txt). After the lock, the code and its check results would join them. 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.
