# Pre-registration: the companion film's soundtrack as a test of reversal (written 2026-09-27)

Written and committed before `make-audio.mjs`, `mirror.mjs` or any frame of the film existed. What
had been run by then: `spine.mjs` (the schedule) and `score.mjs` (`simulate`), to choose T and to
compute the engine-side milestones below. No soundtrack has been made or heard; no detector has
been run.

## The film's gas
engine.mjs DEFAULTS, seed 1 (the page's own gas), T = 5,000 steps out and 5,000 back. Three return
legs: whole numbers exact; whole numbers with disk 0 moved one grid step (2^-32 of the box) in x at
the turn, as measure.mjs does; floating point. Chosen because at T = 5,000 the floating gas ends its
return mixed (63 of 128 disks in the left half) while at T = 3,000 it still comes home (all 128),
from probe runs of the engine only.

## The soundtrack (fixed now)
Left ear: the exact whole-number gas. Right ear: the floating gas. Every sample is a function of the
positions at one (interpolated) step and of |distance from the turn| only: for each of 12 height
bands, sqrt(sum of WCA pair energy of pairs in contact with midpoint in the band) on that band's
pitch, plus a chord whose loudness is how gathered the gas is (coarse entropy). Phases are measured
from the turn, so a gas that retraces its path gives a soundtrack whose second half is its first half
reversed. Controls: the same film soundtrack with the right ear replaced by (a) the exact gas again,
(b) the whole-number gas nudged at the turn by 2^k grid steps, k = 0, 8, 16, 24.

## The detector (mirror.mjs, fixed now)
Reads a stereo 48 kHz WAV decoded from the delivered file, and spine.mjs. Finds the turn as the
sample within 0.1 s of the nominal one that maximises the left channel's mirror correlation. Then,
per channel, for windows of 0.25 s at distances d = 2.00, 2.25, ... s from the turn (232 windows,
the whole of each leg), the Pearson correlation r(d) between the window after the turn and the
time-reversed window before it. **Break**: the smallest d such that r < 0.5 in every window in
[d, d + 2 s]. Reported in steps travelled back, T - stepAt(d).

## Predictions
- **M1.** Through AAC, the exact (left) channel: r >= 0.98 in all 232 windows, no break.
- **M2.** Through AAC, the floating (right) channel breaks, at a number of steps back between the
  first step at which any disk is 0.001 box from where it was at that step on the way out (2,570)
  and the first at which the median disk is a disk width (sigma) from it (3,348).
- **M3.** Controls through AAC (audio only, same encoder settings): (a) exact in both ears: r >= 0.98
  in all windows of both channels. (b) Breaks inside the same kind of interval: k = 0 in
  [1,478, 2,143]; k = 8 in [1,296, 2,012]; k = 16 in [783, 1,565]; k = 24 in [0, 1,043]; and the
  break falls strictly as k rises.
- **M4.** Before encoding: the left channel is sample-identical to its mirror over the whole gas
  section (largest difference exactly 0); the right is not.
- **V1.** The picture: in the delivered mp4, the exact gas's box, in grey, differs from its mirror
  frame (TURN_FRAME + j against TURN_FRAME - j) by at most 1.5 levels of 255 on average, for every j
  in the gas section; the nudged and floating boxes differ by at least 5 levels at the last pair.

If a prediction fails, the film and its README say so and show the numbers; the windows, thresholds
and intervals above are not changed after the run.
