# RC104 Direct Composite Cleanup Notes

## Reference inspected
The accepted Enbensrodd / Single Arm Row implementation was inspected before changes.

Reference assets:
- `assets/img/exercises/enbensrodd/neutral.webp`
- `assets/img/exercises/enbensrodd/athlete.webp`
- `assets/img/exercises/enbensrodd/hockey.webp`
- `assets/img/exercises/enbensrodd/downhill.webp`
- `assets/img/exercises/enbensrodd/source_sequence.webp`

Reference active model:
- `kind: 'premium-sequence'`
- theme entries use `asset.composite`
- central service renders `asset.composite || illustration.compositeFallback`
- active CSS classes include:
  - `.next-exercise-illustration`
  - `.next-exercise-illustration-stage`
  - `.next-exercise-illustration-composite`
  - `.next-premium-composite`

## What RC104 changes
RC104 simplifies S2P1 premium entries to the same direct-composite model.

Active S2P1 path pattern:
- `assets/img/exercises/premium/s2p1/<exerciseKey>.webp`

For each S2P1 premium key:
- `themes.neutral.composite`
- `themes.athlete.composite`
- `themes.hockey.composite`
- `themes.downhill.composite`
- `compositeFallback`

all point to the approved direct composite asset above.

## What RC104 does not do
- No new images.
- No new backgrounds.
- No SVG fallback pipeline.
- No active cutout/layered background renderer.
- No pass-page rebuild.

## Code paths reused
- `assets/js/services/exercise-illustration-service.js`
- `assets/js/core/exercise-illustrations.js`
- existing premium image CSS classes in `assets/css/next-system.css`

## QA
- JS syntax checks passed.
- PHP lint passed.
- `tests/rc104_direct_composite_smoke.js` checks:
  - registry version is RC104
  - 31 S2P1 premium keys exist
  - every S2P1 entry uses direct composite paths
  - no active experimental fields: `foreground`, `source`, `transparent`, `backgroundMode`, `themeCompositeBase`
  - all referenced image files exist

Screenshots are deterministic fallback screenshots, not Chromium-live.
