# v1.5.2 regression and functional results

29 October 2026. Validation passed. No Suno audio was generated or assessed.

## Musical equivalence

- `sppam_data.js`, `composition.js` and `compiler.js` are byte-identical to v1.5.1.
- `app.js` is exactly the previous musical UI code before its legacy collision-monitor block. No compiler, output, identity-limit, modifier, reset or clipboard logic was changed.
- **18,816 matched field tuples**: 28 profiles × 8 variants × 12 styles × 7 representative override scenarios. Each tuple's Style, Lyrics/Behaviour and Debug strings match v1.5.1 exactly. Behaviour is style-independent, so it is compiled/compared once per profile/variant/scenario, then paired with each Style and Debug output.
- Scenarios: defaults; all-low with −5 modifiers; all-high with +5 modifiers; alternating low/high values with opposed modifiers; reversed alternating values/modifiers; default matrix with all-positive modifiers; default matrix with all-negative modifiers. Identity-limit adjustments and effective matrices also match exactly.
- **47 previous-version files/artifacts** retain their recorded SHA-256 hashes, across v1.4.1, v1.5.0 and v1.5.1.

The new app header is v1.5.2. Debug deliberately reports the unchanged v1.5.1 internal compiler identity. This preserves the requested debug output rather than silently changing a generated field for cosmetic versioning.

## Visual/controller tests

All **28 profiles** and **23 named visualisation families** have models, explanations, stages, legends and limitations. There are 26 distinct SVG bodies after ignoring accessible descriptions and unique IDs; the three neutrino-flavour geometries intentionally coincide. This is a rendering inventory, not a claim that every topology is physically unique.

All generated SVGs parse as XML. Accessibility IDs are unique within each view and across the catalogue. Checks cover the missing-vector arithmetic, unobserved neutrino treatment, atomic levels, W charge conjugation and Cherenkov wavefront-versus-photon distinction.

Each instrumented controller run opens/closes all profiles and then performs 100 show/replay cycles. Both ordinary-motion and initially-reduced-motion runs cancel all resources on close/destroy. They test preference changes, page visibility, Escape, pagehide/pageshow recovery and listener removal. Musical controls/output sentinels remain unchanged. Reduced motion was tested with matching/changing mocked media preferences; the desktop OS preference was not changed. Browser motion APIs are not used as a physics integrator.

## Live browser checks

- All 28 profiles open the correct view and have one SVG. Their default Style and Behaviour fields match the saved v1.5.1 defaults exactly.
- Closing each view removes its SVG and leaves both output fields and all matrix/modifier values unchanged.
- Twelve consecutive Replay activations retain one SVG. Escape closes the panel. A constrained neutrino override retains its identity clamp and identical debug output before/after activation.
- Reset restores the selected preset and zero modifiers. Clipboard copying returns the exact field text.
- Desktop review used a 1280 × 900 viewport; small-screen tests used 390 × 844 and 320 × 700. The final panel and close button fit; neither small viewport has page-wide horizontal overflow. The minimum-width diagram scrolls inside its own canvas. The inherited EQ-bank page overflow and scrollbar-related negative panel offset were corrected in this copy's CSS.
- All seven four-profile review sheets were inspected; figures distinguish detector, conceptual and artistic content. Scaling gaps, inaccessible repeated IDs, label overlap and the Cherenkov boundary-arrow error were corrected before the final captures.
- No browser warnings or errors were observed in the final app tab. The final animation reaches its complete diagram state. Native animation-resource counts were not exposed by the read-only browser interface; cancellation counts are established by the instrumented controller tests, while browser checks establish SVG removal and repeated-activation behaviour.

Machine-readable results: [regression](tests/regression-results.json), [visual/controller](tests/visualisation-results.json), [browser](tests/browser-validation.json). SVG captures, the review gallery, seven review-sheet images, and desktop/mobile screenshots are also in `tests/`.

## Reproduce

```sh
node sppam_v1_5_2/tests/regression.cjs
node sppam_v1_5_2/tests/visualisations.cjs
python3 -B sppam_v1_5_2/tests/check-svg.py
```

These checks establish software equivalence and the documented visual behaviour. They do not establish detector accuracy, a solved particle simulation, universal absence of interpretative ambiguity, or musical success. Development is parked pending real Suno auditions.

## Beamline status presentation restoration

The original v1.4.1 status styling and 0/7/15/23/30-second sequence have been restored in an isolated local script. Persistent local-theatre labelling and clarified green messages replace any claim of a real CERN connection. Reduced motion immediately shows the final ready state. Compilation never resets the sequence.

`node sppam_v1_5_2/tests/beamline-status.cjs` verifies every deadline/message/colour, original CSS rules, immediate reduced-motion completion, preference changes, background catch-up and page restoration. Protected-file hashes confirm that the musical compiler, main app logic, particle mappings and scientific diagram/controller scripts remain unchanged by this correction. The existing 18,816 musical regression cases and full visual/controller tests were rerun successfully.
