# Editor Sample Regression Pack

The editor sample regression pack is the committed, deterministic first stop for content and native
viewport QA. Its source of truth is `assets/samples/editor_samples.ron`; manifest order is also the
order shown by **File > Open Sample** and by headless reports.

## Open And Exercise A Sample

1. Open **File > Open Sample** and choose the relevant area.
2. Confirm the scene opens in a normal scene tab and the viewport contains the expected anchors.
3. Perform the checks listed in the manifest and the table below.
4. Watch the status strip and Diagnostics panel for missing references, hydration failures, or
   operator errors.
5. Use **Save As** before destructive experimentation. The committed samples are regular project
   scenes, not disposable or read-only copies.

An invalid or unavailable manifest leaves an actionable disabled item in the menu. It must not
silently fall back to another scene.

## Pack Contents

| Area | Scene and visual composition | Representative checks |
|------|------------------------------|-----------------------|
| Brush | `brush_blockout.scn.ron`: broad concrete foundation, tall additive brush with a contrasting shared-material top face, red rotated subtractive marker | Select object and face targets; enter brush edit; exercise draw/clip/CSG preview and cancel; verify shared face material resolution |
| Material | `material_lab.scn.ron`: neutral floor, concrete cube, blue custom-surface sphere, rotated Material Instance block, cyan emissive backdrop | Inspect shared Material/Instance paths; target a primitive with a Material drop; compare standard, custom, and emissive hydration |
| Terrain | `terrain_authoring_showcase.scn.ron`: asymmetric 5x5 hill, four deterministic chunks, two painted shared-material layers | Sculpt and paint preview/cancel; inspect normalized weights and layer refs; verify generated selection and collider state |
| Physics Placement | `physics_placement_showcase.scn.ron`: cuboid, sphere, and tall capsule above a static floor | Multi-select all three props; settle; cancel and compare exact starting transforms; repeat, commit, undo, and redo as one group |
| Rendering | `rendering_showcase.scn.ron`: red sphere, cyan cube, amber block, emissive horizon, and three adjacent vignette/fog/exposure volumes | Move the camera through all zones; inspect active-volume ownership; verify profile/fullscreen-effect refs and visible transitions |

All authored sample actors have stable `ActorId` values. Generated hydration children are deliberately
absent from the committed scene documents.

## Headless Validation

Run both gates from the project root with Git LFS content hydrated:

```bash
cargo validate-levels --project .
cargo validate-samples --project .
```

`validate-levels` remains the authoritative project dependency/finding report. `validate-samples`
adds the pack contract: schema and safe paths, exactly one entry per required area, stable actor IDs,
authoring-only scene data, required area components, and nonempty operator checks. Either command
must exit nonzero on a blocking finding. Use `--json` when attaching machine-readable evidence.

## Maintenance Contract

- Keep exactly the five areas `Brush`, `Material`, `Terrain`, `PhysicsPlacement`, and `Rendering`.
- Treat manifest IDs as persistent automation keys; rename labels instead of IDs.
- Keep scene paths project-relative, inside `assets/levels/`, and free of symlink or traversal escapes.
- When a sample changes, update its manifest summary/checks and this visual-composition table in the
  same change.
- Run the typed no-GPU scene test plus both validation commands before native QA.
- Record exact-commit native results under
  [evaluations/sample-regression-pack/](evaluations/sample-regression-pack/). Implementation checks
  from a dirty worktree do not satisfy release-candidate acceptance.
