name: material-slot-live-edit
purpose: Verify persistent live Material edits, explicit save separation, and the unified responsive slot widget.
preconditions: editor_scene contains a primitive and static mesh using a project Material; no editor process is running.
build_lane: dev
fixture: assets/materials/pebble_bricks.ron
steps:
  - Select the primitive using pebble_bricks and expand its material parameters.
  - Drag a scalar control, release it, and observe the surface for at least five seconds.
  - Switch selection away and back, then compare the scalar value and rendered surface.
  - Narrow and widen the Inspector around the responsive threshold.
  - Save the active Material document and observe status and processing indicators.
  - Select a static mesh material slot and compare its slot presentation.
  - Leave the expanded material card idle for five minutes while sampling the editor process GPU memory and terminal diagnostics.
  - Close and relaunch the editor, then reopen the same Material slot.
assertions:
  - The surface changes continuously, does not flicker back after release, and the editor remains responsive.
  - Selection changes preserve the live value and the compact amber dirty indicator without label overlap.
  - Scalar save becomes clean without a PROCESSING state or a long-running UI operation.
  - Primitive and static-mesh slots use the same compact header and schema-driven parameter layout.
  - Narrow and wide layouts contain every control without overlap, clipping, garbled rows, or redundant diagnostics prose.
  - No Apply, Revert, Ctrl+S hint, inline Explicit label, or inline Source & Diagnostics section appears.
  - GPU memory remains bounded, no repeated egui multipass ID warning appears, and the editor stays alive without a renderer Out of Memory error.
  - Relaunch preserves the saved Material value and rendered result.
evidence: Target-window captures for dirty-wide, dirty-narrow, saved, and relaunched states plus hashes.
cleanup: Close the spawned editor and atomically restore pebble_bricks.ron from the runner snapshot.
invalidates: Material UI, material persistence, or slot-resolution code changes.
