# Test 1: change the medium, not the state

**Exploratory plan, revision 2. October 14, 2026.**

Colson approved revision 1 with one addition, made in revision 2. This is the version the calibration runs under, and
the freeze record fingerprints it. It doesn't change after that.

**Revision 2** (October 14) adds how the calibration's choices are frozen before the pilot, and how the old-start data
are kept out of the pilot's assessment. See "Freezing the calibration, and keeping its data out of the pilot", after
the calibration section. The analysis details fixed with the code are listed there too. Two readings are made precise:
the persistence share and the lasting switch. Nothing else changed.

Revision 1 was made earlier on October 14. Colson approved the direction and asked for targeted clarifications before
any calibration:

1. **Matching coherence doesn't match the microscopic state.** A medium-vs-push difference is read as a difference
   between intervention histories and the states they leave. It is never read as evidence of an independent memory
   variable.
2. **The calibration target.** The plan now explains the target, gives lowering its own mark, adds a ceiling, and adds
   safeguards so the size can't be tuned toward a favourable result.
3. **The direction of later growth is a hypothesis.** Opposite, non-monotonic and null shapes are defined in advance and
   reported as results.

Also added: why the growth measure uses the carried gap, a sham for each push, and a separate treatment of effort for
the medium. The first draft is kept word for word as plan-draft-1.md.

Test 2 (a medium that remembers) and Test 3 (spread by descent) stay separate and unapproved. Choosing this test
doesn't commit us to them.

This pilot doesn't reopen the Cause Test. Its FAIL stands as registered, whatever this finds. The hold-vs-pulse design
stays paused and unchanged, and its starts (61 to 102) stay unused. No existing research record is edited.

## The question

In the oscillator model, the pull between oscillators is changed for 200 time units and then set back exactly. Does
the system then behave differently from an untouched run? And does it behave differently from a run pushed directly
to the same coherence at the moment the pull is restored? Two things are measured:

- how its coherence recovers;
- how fast a tiny gap grows 200 to 500 time units after the pull is back.

Put precisely: suppose two intervention histories end at the same coherence. One is 200 units of changed pull; the
other is one instant push. Do they leave states that behave differently afterwards?

Why this question: the Cause Test (October 12) only ever pushed the oscillators' state, and its FAIL applies to that
kind of change. The follow-up found that the natural link between coherence and later growth is carried by coherence
over the past 100 to 500 time units. A push mostly moves the fast part. Changing the medium for a while lets the
system's own dynamics do the reshaping. It might reach what a push didn't, or it might fade just like a push. Either
answer is worth having.

## What changes, and what doesn't

- **Strength, not topology.** In this model every oscillator feels its whole group's average rhythm. There's no
  network of who is connected to whom. Changing topology would mean building a network version of the model, a new
  assumption like the ones Tests 2 and 3 need, so it stays out. Test 1 changes coupling strength only.
- **Which strength.** The pull within each group (K = 1.9) is raised or lowered by the same fraction in both groups for
  200 time units, then set back to exactly 1.9.
  - The faint link between the groups (ε = 0.1) stays as it is.
  - K is the coupling that most directly sets coherence, the quantity the Cause Test was about.
  - Changing ε instead would be a separate, later option.
- **Nothing new is added.** There is no memory variable and no new scalar. Apart from K during the window, the model's
  equations and settings don't change. The model code is used unchanged, as in the Cause Test.
- **The phases are untouched when the change starts.** The medium arm begins from exactly the saved state; only the
  pull changes.
- **The model sits right at its threshold (K + ε = 2Δ).** Raised, the pull moves it above the tipping point, where the
  groups start drawing together. Lowered, it moves below, where coherence fades. So a small change matters, and raising
  and lowering need not move coherence by equal amounts.

## The conditions

All of them start from the same saved state at each moment T. R is the restoration time, T + 200.

| Condition | What happens |
| --- | --- |
| Untouched | The run continues unchanged. |
| Medium, raised and lowered | K is raised (or lowered) for 200 time units from T, set back exactly at R, and followed for 500 more units. |
| Push, matched to each medium arm | At R, the untouched run's phases are pushed so each group's coherence equals the medium arm's at R, then followed for 500 units. The Cause Test's dense method is used: every pulled oscillator moves a little toward or away from its group's rhythm. The push uses the smallest move that lands each group on target (within a relative 10⁻⁶), up to a quarter turn. |
| Sham for each push | The same oscillators are moved by the same sizes as in the push, with signs paired so each group's coherence stays within 5% of where it was (the Cause Test's sham). Then followed for 500 units. |

If a push or its sham can't be built at a moment, it isn't forced. That happens when no move up to a quarter turn
reaches the target, or when the sham leaves its 5% band. The moment keeps its medium arms but drops out of the
comparisons with the push, and the reason is recorded.

## What matching does, and doesn't, do

Matching at R makes the medium arm and its push equal in each group's coherence, and from then on both run on identical
settings. It doesn't make their states equal. Coherence is one summary of 4,000 phases per group. Two states with the
same coherence can have their phases arranged very differently, and under the same pull those arrangements can behave
differently.

The two arms also got there differently: 200 units of changed pull, against one instant push. They differ in duration
and accumulated effects, not only in the kind of intervention. So the comparison is between two intervention histories
and the states they leave. It doesn't isolate coupling strength as the only difference.

**How any medium-vs-push difference will be read and worded, in the first reading and in the report:**

- As a difference between intervention histories and the states they leave.
- Not as evidence of an independent memory variable.
  - In this model, once the pull is back, the oscillators' phases are the whole state. Their natural rates and the pull
    are fixed and identical in both arms.
  - So a lasting difference has to be carried by how those phases are arranged. The medium itself keeps nothing.
- Whether a medium that remembers would change things is Test 2's question, which stays unapproved.

**How the states will be described at R.** These show how the states differ even at equal coherence. They are
descriptions only and aren't used for any reading.

- **How far apart the medium arm's and the push's phases are, oscillator by oscillator, after lining up the overall
  timing.** The freely turning oscillators are identical in every arm, so only the pulled ones are compared.
- **Coherence within each half of a group.** One half is the slower-turning oscillators, whose natural rates are closest
  to the group's and which are most easily drawn in. The other is the faster-turning half.
- **The higher-order measures |z₂| to |z₄|, and the timing between groups A and B,** as before.

## The tiny gap: carried, not fresh

The later-growth outcome uses a carried gap, as in the Cause Test:

- Each arm carries two copies a hair apart. The gap between them is measured and shrunk back to 10⁻⁷ every 5 time units,
  with its direction kept.
- It's the gap the run has carried since its start.
- Every change is applied to both copies alike, so a push leaves the gap as it was.

**Why not a fresh gap.** In the October 13 check, fresh gaps lined up with the growing direction too slowly. Only 23%
lined up within 300 units, against the 90% needed, and κ was 0.58, against the 0.75 to 1.25 needed. Their follow-up
check is on hold.

**What carrying it means here:**

- **The carried gap shares each arm's history.** In the medium arm it lived through 200 units of changed pull; in the
  push arm it went through the push unchanged. Its direction at R is part of the "resulting state" above.
- **Part of any early difference can be the gap realigning, not the system behaving differently.**
  - The 200-unit wait before the growth window is there to let the gap settle under the restored pull.
  - Growth over (R, R + 200], and in 100-unit blocks, is reported to show how large the settling is.
  - In the Cause Test, the early window ran opposite to the later one.
- **Growth during the window isn't an outcome.** The gap's growth under the changed pull is recorded, but nothing is read
  from it.

## Effort and shams

**Pushes.** Each push gets its own sham (above), and it matters more here than in the Cause Test.

- In the Cause Test, the up and down pushes were the same size. So whatever a push does just by happening cancelled out
  in the direction-dependent part.
- Here each push is matched to a medium arm, so the up and down pushes will usually differ in size, and that
  cancellation no longer holds.
- With the shams, the effects separate:
  - **push minus its sham** is the effect of the coherence change the push made;
  - **sham minus untouched** is the effect of pushing itself. In the Cause Test this wasn't zero: the dense sham raised
    later growth compared with untouched runs.

**The medium.** A change of the pull has no clean sham in this model. Any change of K moves coherence, which is the
point of the arm.

- **Equal-size changes.** Raising and lowering use the same fraction for the same 200 units, so the direction-dependent
  part compares changes of equal size and length. Any effect of changing the pull at all shows up in the common part
  (raised and lowered averaged, minus untouched), which is reported beside it.
- **Delivered pull isn't equal, so it's recorded.** The extra pull an oscillator feels is the change in K times its
  group's coherence. Coherence climbs in one arm and falls in the other, so the delivered pull differs. It's recorded
  through the window for each arm, so an imbalance in effort is visible rather than assumed away.
- **A split sham is left out.** Raising the pull in one group while lowering it in the other is possible in principle.
  But the model has one pull setting for both groups, so it would mean changing the model. It stays out unless Colson
  wants it.

Effort for the medium is a change of pull over time; effort for a push is instant phase moves. They're in different
units and can't be matched to each other, so both are reported.

## What's recorded

- Each group's coherence every time unit, in every arm: from T to R + 500, or from R for the pushes and shams.
- The A–B timing every time unit.
- The gap's growth every 5 time units.
- At T and R: each group's coherence and timing, and |z₂| to |z₄|. At R, also the state descriptions above.
- The pull in use in every stretch of every arm, to check restoration, and the delivered pull through the window.
- For each push and sham: its sizes and how much it moved (the sum of squared moves), as in the Cause Test.

**Main measures**

1. **Persistence.**
   - The coherence difference from the untouched run, averaged over moments, from T to R + 500.
   - The share of the raised-minus-lowered difference at R still there over (R + 200, R + 500], medium against
     matched push.
2. **Later growth.** Gap growth over (R + 200, R + 500], the Cause Test's measure. For each set of arms, the
   direction-dependent part S and the common part P are defined below.

Reported beside these, but not used for readings: growth during the window, over (R, R + 200] and in 100-unit blocks;
the A–B timing; and the state descriptions.

## Hypotheses, not expectations

| Hypothesis | Coherence after the pull is back | Later growth | Medium vs matched push |
| --- | --- | --- | --- |
| **Fades like a push.** Once the pull is back, the arm behaves as a push to the same coherence would. | Returns toward normal at about the push's pace. | Whatever the matched push does. | About the same. |
| **The history leaves a different state.** 200 units of changed pull leave a phase arrangement a push doesn't reproduce, and it matters afterwards. | Lasts longer or shorter than after the push. | Differs from the push. No direction is assumed. | Clearly different. |
| **Any disturbance.** Changing the pull at all, either way, moves the system onto a different path. | Fades. | Raising and lowering shift it the same way. | A similar common shift. |
| **A lasting switch.** The temporary change tips the system into a different long-lived state. | The difference stops fading. | Depends on the new state. | Different, and stays different. |

- **These aren't exclusive.** More than one can be partly true.
- **The direction of later growth is a hypothesis throughout.**
  - The natural correlation in untouched runs suggests raising the pull would slow later growth and lowering would speed
    it up, because higher recent coherence went with slower later growth.
  - Standard oscillator dynamics don't guarantee that, and the Cause Test showed the correlation isn't a reliable lever.
  - Opposite, non-monotonic and null results are all reported as they come.
- **"The history leaves a different state" is the hypothesis that matching can't settle by itself.** If it fits, it
  means the two histories differ, as set out above, and nothing more.

**The benchmark** is 0.1602 × half the difference between the raised and lowered arms' coherence at R. The slope 0.1602
is the Cause Test's, from the untouched runs. It's the size of effect the natural correlation would give, and it's used
as a yardstick for size in either direction, not as a prediction of direction. Because the pushes are matched at R, the
same benchmark applies to them.

## Shapes of the later-growth result

For the medium arms, against untouched:

- **D_raised** is growth with the pull raised minus untouched; **D_lowered** likewise for lowered.
- **S = (D_lowered − D_raised) / 2** is the direction-dependent part. Positive means the natural correlation's direction.
- **P = (D_raised + D_lowered) / 2** is the common part: what changing the pull either way did.

| Shape | When |
| --- | --- |
| Same direction as the natural correlation | S is clear and positive, and larger than P. Untouched lies between raised and lowered. |
| Opposite direction | S is clear and negative, and larger than P. |
| Non-monotonic | P is clear and larger than S: raising and lowering shift growth the same way. |
| No clear effect | Neither S nor P is clear. |
| Mixed | Anything else, reported as it stands. |

"Larger" compares sizes, ignoring sign. The same shapes are reported for the pushes: each push against its sham, and
the pushes and shams against untouched. Shape and size are read separately, and the benchmark is the yardstick for
size.

## The size of the change: calibration first

**Why the target is 1.5 times the untouched coherence at R:**

1. **Comparability.** It's the size of change the Cause Test used (±50%). The pilot's numbers then sit on the same scale
   as the Cause Test's and its benchmark.
2. **Sensitivity.** Whether a null means anything depends on how far apart the raised and lowered arms are in coherence
   at R. At about the Cause Test's size, a null can rule out half the benchmark about 3 times in 4. Much smaller
   changes would leave a null saying little.
3. **Staying near natural behaviour.** Taking the smallest size that reaches the target keeps the change as close as
   possible to what coherence does on its own.

**Is it suitable?** Mostly. Three things needed fixing, and one risk is worth naming:

- **Lowering had no mark of its own.** It has one now.
- **Ratios at single moments are unstable.** An average of per-moment ratios would be thrown off by moments where the
  untouched coherence happens to be tiny, so the marks use the ratio of the averages.
- **Nothing stopped a size from overshooting far past natural coherence.** Near the threshold, overshooting is more
  likely than falling short: a rough estimate from the large-group equations suggests a fraction of a percent may
  already reach 1.5 times. So the ladder starts at 0.1%, and there's a ceiling.
- **The risk: lowering has less room than raising.** Even fully scattered phases leave a group of 4,000 oscillators
  with a coherence of about 0.014, a bit over half the usual 0.026. So 0.67 is reachable in principle but with little
  room, and the lowering mark is the one most likely to fail.

**The revised rule, fixed now, before anything runs:**

- **Starts.** Old starts 16 and 17, ten moments each: 20 moments. Both were used for earlier checks, so they stay out of
  the results.
- **Sizes.** 0.1%, 0.25%, 0.5%, 1%, 2% and 5% of K, for 200 units, with the same size for raising and lowering.
- **Marks**, on the average over the 20 moments:
  - raising: coherence at R between 1.5 and 3 times the untouched run's;
  - lowering: coherence at R at most 0.67 times the untouched run's (1 / 1.5);
  - pushes: the matched push and its sham can be built at 18 or more of the 20 moments, separately for raising and for
    lowering.
- **Choice.** The smallest size that meets every mark is used unchanged, both ways, throughout the pilot.
- **If no size meets every mark:** stop, report what each size did, and propose a revised rule. Nothing more runs until
  Colson approves it.
- **Reference.** The chosen size is also run once with the pull kept changed for 700 units, looking at coherence only.
  This is the reference for permanently changed settings.

**Why the ceiling is 3 times.** Coherence at these moments naturally reaches about 3 times its average: up to about
0.084, against an average near 0.026. Staying under it keeps the raised arm inside the range the system visits on its
own, and keeps the matched pushes from becoming unnatural bursts.

**Why lowering's mark is 0.67, not 0.5.** In the large-group equations, raising and lowering the pull by the same
fraction multiply coherence by roughly reciprocal amounts, for example 1.6 and 0.62. So 1 / 1.5 is the matching mark,
and 0.5 would ask more of lowering than of raising. At these marks, the raised–lowered difference is about 0.8 of the
Cause Test's.

**Safeguards against tuning:**

- The rule is fixed before the calibration runs. If it fails, any change comes to Colson as a proposal with the
  numbers, before anything else runs.
- The calibration looks only at coherence up to R, and at whether pushes and shams can be built. It never looks at gap
  growth, and never at the restored arms after R.
- Old starts only.
- Once any pilot number exists, the size and the marks can't change.

**Code checks, before the calibration:**

- A branch with the pull changed for zero units matches the untouched run bit for bit.
- The restored arms run on the unchanged model.
- Pushes and shams leave the gap as it was (within a relative 10⁻⁶).
- Each sham moves the same oscillators by the same sizes as its push.

## Freezing the calibration, and keeping its data out of the pilot

Added in revision 2, at Colson's request.

**How the calibration's choices are frozen before the pilot**

1. **The rule is fixed in this plan:** the sizes, the marks and how the size is chosen. It isn't changed after any
   calibration number is seen.
2. **All the code is written and checked before the calibration runs:** the code checks, the calibration, the pilot and
   the pilot's report.
   - The report is tried on made-up numbers only.
   - The pilot's machinery is tried on a short stand-in run that shows only whether its checks pass.
3. **When the calibration ends, one command writes its report and a freeze record** (medium_freeze.json). The record
   holds:
   - the chosen size and the full calibration table;
   - the date and time, and the machine it ran on;
   - SHA-256 fingerprints of this plan, the code and the calibration's results;
   - the pilot's starts and moment times, worked out from the fixed rule;
   - fingerprints of the protected folders and files, so it can be shown later that nothing in them changed.
4. **The freeze is refused** if any pilot output already exists, if the calibration is incomplete, or if no size
   qualified.
5. **The pilot takes the size only from the freeze record.** Before every piece, and before the report, the code checks
   that the plan, the code and the calibration's results still match their fingerprints. If anything differs, it stops.
6. **Nothing in the freeze changes afterwards.** If something had to change (a bug, say), it would come to Colson first.
   A new freeze would be dated and labelled as a change, the old record kept, and the change reported with the results.
7. **The calibration report and the freeze record come to Colson before the pilot.** The pilot starts only with his go.

**Keeping the old-start data out of the pilot's assessment**

1. **Only the chosen size passes from the calibration to the pilot.**
2. **The calibration's files are kept apart from the pilot's.** The pilot's code reads nothing from them except the
   freeze record.
3. **Every pilot reading uses only the pilot's own starts, 103 to 114.** That covers the untouched comparison, the
   coherence difference behind the benchmark, the error bars and everything else.
   - The benchmark's slope (0.1602) was fixed earlier from the Cause Test's untouched runs. It doesn't come from this
     calibration.
   - The report code refuses any start outside 103 to 114.
4. **Old starts 16 and 17 are never pooled with the pilot's starts**, or counted in its sample.
5. **The kept-changed reference stays in the calibration report.** It isn't used in any pilot reading.
6. **The calibration keeps no gap growth.** Its changed-pull runs carry one copy and no gap, and the untouched runs' gap
   growth isn't saved.
7. **The code checks on old start 1 test equality and mechanics only.** They ask whether a branch reproduces the run it
   came from, and whether the checks pass. None of their numbers is used for anything else.

**Details fixed with the code, before the freeze.** These make the readings above precise. None depends on any result.

- **C** is the average of the two groups' coherence.
- **Persistence** uses the raised-minus-lowered coherence difference, as the Cause Test did.
  - Each push is matched group by group, so that difference at R is the same for the medium arms and the pushes. Both
    shares then have the same denominator.
  - Shares are ratios of averages over the starts, with resampled error bars.
- **A lasting switch** also needs the medium arms' raised-minus-lowered difference over (R + 400, R + 500] to be clear.
  Otherwise "no clear decline" could just mean nothing is left.
- **S's sign** follows the natural correlation: positive means the arm with higher coherence at R grew more slowly later.
- **Medium-vs-push comparisons** use only the moments where both pushes and both shams were built. The medium's own
  shape uses all moments.
- **Draws.**
  - The moment offsets come from (20261014, 1, seed).
  - The sham signs come from (20261014, 2, …) in the calibration and (20261014, 3, …) in the pilot.
  - Resampling uses seed 20261016, with 400 resamples.

## Sample size

- **12 fresh starts, 103 to 114 (seeds 102 to 113), ten moments each: 120 moments.** These starts have never been run.
- **Moments.** Ten per start, 330 time units apart after one random offset per start (a multiple of 5, from 0 to 325),
  starting at t = 2,000. Every branch ends before t = 6,000.
- **The starts are the units.** Each start's moments are averaged first, then the 12 starts. Error bars are the larger
  of a resampled value and SD/√12, as in the Cause Test.
- **What it can see.**
  - The error bar on S for the medium should be about 0.0004. For the pushes against their shams it should be about
    0.0005 to 0.0006, since the shams add noise.
  - How well a null can be read depends on the size the calibration picks. If nothing is there, the pilot rules out
    half the benchmark roughly half the time at the smallest qualifying change, about 3 times in 4 at the Cause Test's
    size, and nearly always at twice that.
- **Size of the job.** Each moment has two medium arms of 700 units each, plus two pushes and two shams of 500 units
  each. That totals a bit over a third of the Cause Test's computing:
  - the calibration takes roughly 15 to 20 minutes;
  - the pilot takes roughly 60 to 80 minutes.

  Both run in foreground pieces of under 5 minutes each.

## What counts as informative

These readings are fixed before the run.

- **"Clear"** means more than 3 error bars from zero.
- **"Ruled out" (for S)** means the range S ± 2 error bars lies entirely between minus and plus half the benchmark. In
  other words, there's no direction-dependent effect as large as half the benchmark, in either direction.

**What is read:**

- **The shape of later growth** for the medium arms, and for the pushes, as defined above.
- **Medium against matched push, like for like** (both against untouched; the push against its sham reported beside):
  - persistence: the share of the raised-minus-lowered coherence difference at R still there over
    (R + 200, R + 500], medium minus push, clear or not;
  - later growth: S and P for the medium minus S and P for the push, clear or not.
- **A lasting switch.** The medium arms' raised-minus-lowered coherence difference is still clear over
  (R + 400, R + 500] and shows no clear decline from (R + 200, R + 300], while the push's clearly declines.

**How each outcome is read:**

- **The medium differs from the push** (persistence or growth clearly different). The two intervention histories left
  states that behave differently, inside the model.
  - The next step, if wanted, is describing how the states differ, using the descriptions above, without claiming a
    memory variable.
  - A confirmation test would be a separate decision.
- **The medium is like the push, a useful null.** Neither persistence nor growth clearly differs, and S is ruled out.
  A brief change to the medium did no more than a push to the same coherence. This sharpens Test 2's question without
  committing to it.
- **Non-monotonic.** Changing the pull at all moved later growth, either way. For harm reduction, that means judging any
  intervention against an untouched comparison.
- **Opposite direction.** A result in its own right, not a failure. It would mean the natural correlation's direction
  doesn't carry over to this lever.
- **A lasting switch.** First confirm the pull really was restored; then describe what holds the difference.
- **Inconclusive, never negative.** This happens when:
  - no size qualifies in the calibration, so the pilot doesn't run;
  - more than 1 moment in 10 lacks a matched push or sham, which affects the medium-vs-push readings only;
  - the error bars can't tell half the benchmark from zero.

None of the shapes counts as a failure of the procedure. Only failed checks make a result inconclusive.

## What it can't tell

- It's a toy model. It shows structure inside the model, not evidence about cells.
- Equal coherence at one moment isn't an equal state. Differences are between histories and the states they leave, not
  evidence of a memory variable.
- The two interventions differ in length and accumulated effects as well as in kind. Coupling strength isn't isolated as
  the only difference.
- The carried gap shares each arm's history.
- Even under ordinary dynamics, coherence that builds up gradually may fade at a different pace from pushed coherence.
  Persistence alone isn't enough to call something new.
- It tests one pull (K), one size, one window length (200) and one push method (dense).
- It's exploratory: it can suggest, not confirm. A full-scale confirmation run is not part of it.

## How it would run

1. Colson reviews this revision, and it's changed as needed.
2. **First go.** Write the code, run the code checks and the calibration (old starts, coherence only), write the freeze
   record, and report back. Nothing runs on the fresh starts at this stage.
3. **Second go.** Run the pilot on starts 103 to 114, in foreground pieces of under 5 minutes each, saving each task as
   it finishes. Nothing is left running in the background.
4. **Report.** Every reading is reported exactly as fixed here. Anything added after seeing the results is labelled as
   after the fact.

**Where things go.** Numbers and reports stay in this folder. Working files (saved states and parts) go to
generated-artifacts/medium-test/, which is kept out of the project's history. The model's files are only read, never
changed. Nothing else is touched: not the Cause Test, exploration or pre-lock folders, the Spiral Staircase pages, the
website, cancer-research.md or map.md.
