aqua-feel sync: --shape ramp for slow-swell visuals (measures, never gives a verdict) #34

Merged
aqua merged 3 commits from aqua/sync-ramp-detector into main 2026-11-11 06:24:44 +00:00
Member

Adds --shape ramp to aqua-feel sync: a detector for slow-swell visual responses (Perlines v2 Vector trails brightens over hundreds of ms; the step detector pairs 0 of 10 hits on it, the ramp detector pairs 9-10).

What it does and does not claim. It finds each swell and prints a point estimate (foot of the line through the 20%/80% crossings) and an interval. Every ramp pair is borderline and a ramp can never fail the gate. Two separate-context Soul passes falsified every stronger claim the first versions made (see SYNC.md "Ramp-shaped visuals"): inside/early (a slow start cannot be bounded from below), late (one outlier raw frame moves the upper bound earlier; wrong at true lags 4-97 ms on heavy-tailed noise, 3% outlier frames, keyframe spikes), and pairing (a bed that swells near a hit takes over). The step path is byte-identical to main on the fixtures and a 126-run synthetic grid.

Tests. 72 checks with ffmpeg (50 without): known-offset synthetic ramps (linear, exponential, smoothstep, quadratic; 30/60 fps) have the true start inside the printed interval where it should; a 120-case sweep never yields a verdict other than borderline/ambiguous/no-visual-onset; noise and drift give no onsets; the outlier-frame and swelling-bed cases; a 0.2 MB real Perlines capture fixture (step finds 0, ramp pairs 3 of 5). Time-based smoothing (not index-based) so variable-frame-rate tracks do not stretch the window; the second Soul pass found no test that pins it, which is recorded, not claimed.

Results on real captures, off-grid hits, and the Playground: https://minds.gamecult.org/aqua/sync-offgrid-ramp-playground/ . Nobody has watched or listened to any of it.

🤖 Generated with Claude Code

Adds `--shape ramp` to `aqua-feel sync`: a detector for slow-swell visual responses (Perlines v2 Vector trails brightens over hundreds of ms; the step detector pairs 0 of 10 hits on it, the ramp detector pairs 9-10). **What it does and does not claim.** It finds each swell and prints a point estimate (foot of the line through the 20%/80% crossings) and an interval. **Every ramp pair is `borderline` and a ramp can never fail the gate.** Two separate-context Soul passes falsified every stronger claim the first versions made (see SYNC.md "Ramp-shaped visuals"): inside/early (a slow start cannot be bounded from below), late (one outlier raw frame moves the upper bound earlier; wrong at true lags 4-97 ms on heavy-tailed noise, 3% outlier frames, keyframe spikes), and pairing (a bed that swells near a hit takes over). The step path is byte-identical to main on the fixtures and a 126-run synthetic grid. **Tests.** 72 checks with ffmpeg (50 without): known-offset synthetic ramps (linear, exponential, smoothstep, quadratic; 30/60 fps) have the true start inside the printed interval where it should; a 120-case sweep never yields a verdict other than borderline/ambiguous/no-visual-onset; noise and drift give no onsets; the outlier-frame and swelling-bed cases; a 0.2 MB real Perlines capture fixture (step finds 0, ramp pairs 3 of 5). Time-based smoothing (not index-based) so variable-frame-rate tracks do not stretch the window; the second Soul pass found no test that pins it, which is recorded, not claimed. Results on real captures, off-grid hits, and the Playground: https://minds.gamecult.org/aqua/sync-offgrid-ramp-playground/ . Nobody has watched or listened to any of it. 🤖 Generated with [Claude Code](https://claude.com/claude-code)
Perlines v2's Vector trails answers a sound with a brightening over hundreds of ms;
the step detector found no visual onset in any of its takes. The ramp detector takes
the rise over 300 ms as novelty, finds each rise's quiet level and 20%/80% crossings,
and reports the foot of that line with the interval it can defend: from before the
quiet minimum (backed off by the valley-to-20% time, which a property test over three
ramp shapes and decaying tails showed necessary) to the 20% crossing. Tests: synthetic
ramps at known offsets (linear, exponential, smoothstep; 30 and 60 fps), noise and drift
give nothing, and a 0.2 MB real Perlines capture (step finds 0, ramp pairs 3 of 5).

Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
A Soul pass falsified the first ramp detector: the +-60 ms centred average crossed
before the picture did (fast rises called detectably late inside the window), the
smoothing ran over samples (stretched on variable-frame-rate tracks), and the lower
bound was a heuristic presented as a bound (slow-start shapes called early or inside
while in sync). Now: time-based smoothing, hiS from the raw frames, and a ramp can
be audio-late-detectable or borderline only. Adds the Soul's fast-rise, VFR and a
120-case sweep over shapes, rises, decays, rates, noise and offsets as tests.

Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
A second Soul pass falsified the late claim: one outlier raw frame before the true start
moves the upper bound earlier (wrong at true lags 4-97 ms on heavy-tailed noise, 3% outlier
frames, keyframe-style spikes), and a bed that swells near a hit takes over the pairing.
After the first pass removed the early and inside claims, nothing is left that a ramp can
soundly assert about sync, so every ramp pair is borderline and never fails the gate. The
estimate and interval are printed for a person to read. Tests: the outlier frame and the
swelling bed, both with a true lag the old verdict got wrong.

Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
aqua merged commit 9f24e0b42b into main 2026-11-11 06:24:44 +00:00
Sign in to join this conversation.
No reviewers
No labels
No milestone
No project
No assignees
1 participant
Notifications
Due date
The due date is invalid or out of range. Please use the format "yyyy-mm-dd".

No due date set.

Dependencies

No dependencies set

Reference
GameCult/AquaSynth!34
No description provided.