4bfd712496
Bug fixes found while validating stage 15: - demo: set_shadow_caster(Some(0)) selected the default +Z light (packed index 0 from Lights::new()); the demo's warm directional light is packed at index 1. The shadow camera then looked down -Z, so misaligned objects occluded each other (cone/torus rendered black). Use index 1. - primitives::torus: index winding was flipped ([a,c,b]); the outer surface (outward normals, CCW from outside) was culled and only the dark interior stayed visible. Reversed to [a,b,c]/[b,d,c] so it is CCW from outside. - app: call device.poll() each frame in about_to_wait; without it wgpu async callbacks (on_submitted_work_done, map_async) never fire in the windowed loop. Docs: - conf: clarify the embedded-shader fallback is expected/harmless and that SHADOW_SHADER_PATH is kept for API compatibility only. - README item 15: runtime-verified headless. - DRAFT.md: emptied to a completion summary per convention (full stage-15 plan preserved in git history).