# NEXT11 V6.21C — World Texture / Sport Asset / Accent Grade WIP

Status: **WIP — render architecture approved for continuation; sport art not locked**.

## What changed

- Environment is rendered inside the real Nex/Three.js world as `NEX_WORKOUT_ENVIRONMENT_BACKDROP_V1`.
- `scene.background` is only a neutral safety clear; the premium image is a real texture on the world backdrop mesh.
- Environment asset authority moved to the profile/model environment values:
  - `environmentAssetAuthority = sport`
  - `environmentAccentAuthority = theme`
- General Athlete uses the first portrait-safe source plate:
  - `assets/nex/environment/general-athlete-environment-premium-portrait.webp`
  - 450 × 974, iPhone-player aspect.
- Changing accent/theme does **not** swap the sport source image.
- Accent is generated at runtime from the cached sport source texture. NEXT Blue and Energy Purple QA therefore use the exact same WebP source.
- Same-sport accent switches reuse the decoded source texture and dispose the previous accent CanvasTexture; the WebP is not re-fetched on every accent change.
- Legacy 30 m opaque presentation floor masked almost the entire environment. The runway floor is now a 5.0 m alpha-feathered presentation slab, solid beneath the 1.8 m lane and fading into the environment. Travel, lane edges, camera and motion are unchanged.

## Frozen authority

Not changed:
- motion
- IK
- resolved animation/model
- camera equations/tracking
- travel timing/distance
- media routing

Frozen Player Guard: **PASS | core=22 | profiles_locked=18 | motion/model=66**.

## Real Chromium QA

Actual route: `preview.html?workout=dynamic-warmup#pass`

Renderer: WebGL2 / ANGLE / SwiftShader.

PASS:
- General Athlete + NEXT Blue
- General Athlete + Energy Purple

Both runs report:
- `backdropWorldPlane = true`
- `sceneBackgroundIsTexture = false`
- `backdropMapIsTexture = true`
- `environmentAssetAuthority = sport`
- `environmentAccentAuthority = theme`
- source asset = `general-athlete-environment-premium-portrait.webp`

This proves the user's intended rule: **same sport = same image; different accent = same image with a different grade**.

## Remaining before art lock

Create portrait-safe source plates with this same safe-zone grammar for:
- Hockey
- Football
- Downhill

Then run a two-axis QA matrix:
1. same sport + multiple accents -> source asset must remain identical;
2. same accent + different sports -> source asset must change while the sport runway remains its own authority.
