SCENEGOD/scenegod/web
type-two 22c8a9a324 M12: look, render button, save integrity — 3 workflow rounds, 22 agents
FEATURES (from a 5-lens audit: UX friction, feature gaps, bug hunt, visual
quality, discoverability):
- ACES filmic tone mapping + per-preset exposure. grammar.js runs physical sun
  intensities of 1.2-3.4; with NoToneMapping every lit face clipped to white and
  a warm key rendered neutral. Single biggest look win in the app.
- Real shadows: PCFSoft, a shadow box fitted to the scene's bounds, and plates
  that no longer double as the shadow catcher (dedicated ShadowMaterial).
- A Render button in the scene bar. finalRender had ZERO callers - the app's
  deliverable was console-only.
- Save actually saves the stage you built (gizmo moves, inspector edits), and
  Save/Load stop lying about what happened.
- 2x supersample + lanczos downscale; correct bt709 tagging and faststart.
- Frame guide, camera-from-view, dock counts, delete confirmations.

DEFECTS FOUND BY ADVERSARIAL REVIEW AND FIXED (all reproduced first):
- BLOCKER: save wrote the playhead pose over the authored rest transform of
  keyed entities, so every save produced a different file.
- renders were converted with the bt601 matrix while tagged bt709.
- deleting an unkeyed camera stranded its cut -> scene 422s forever.
- corner plates showed one photo at two exposures across the fold.
- exposure was advertised as keyable but nothing keyed it, so a second lighting
  preset permanently poisoned the first.
- the audio pre-flight could never fire (FastAPI does not route HEAD -> 405).
- the two render buttons were not mutually exclusive.
- frame guide letterboxed a narrow viewport that the render does not crop.

ORCHESTRATOR (round 3): dangling camera cuts are pruned in Timeline.toJSON and
skipped by cutCameraAt, rather than trying to keep every undo history clean -
deleting a camera spans Stage (no undo) and Timeline (undo), so any older entry
can resurrect a cut for a dead camera. Verified against the real validator.
Also replaced a VACUOUS test that drained a stack whose only entry was a seeded
no-op; timeline_test.mjs now replays both real histories and discriminates.

Verified: 4 JS suites + 23 server groups + render client green; blocker repro
now preserves the authored rest at every playhead position; save round-trips
200 with zero dangling cuts; zero console errors.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
2026-07-28 22:41:17 +10:00
..
dock.js M12: look, render button, save integrity — 3 workflow rounds, 22 agents 2026-07-28 22:41:17 +10:00
film.js M12: look, render button, save integrity — 3 workflow rounds, 22 agents 2026-07-28 22:41:17 +10:00
grammar.js M12: look, render button, save integrity — 3 workflow rounds, 22 agents 2026-07-28 22:41:17 +10:00
index.html M12: look, render button, save integrity — 3 workflow rounds, 22 agents 2026-07-28 22:41:17 +10:00
presets_test.mjs M12: look, render button, save integrity — 3 workflow rounds, 22 agents 2026-07-28 22:41:17 +10:00
presets.js M12: look, render button, save integrity — 3 workflow rounds, 22 agents 2026-07-28 22:41:17 +10:00
render.js M12: look, render button, save integrity — 3 workflow rounds, 22 agents 2026-07-28 22:41:17 +10:00
room3d_test.mjs [m7-A] non-mixamo rig support + world-integrated backdrops (+4 sync7 render fixes) 2026-07-25 22:21:37 +10:00
room3d.js [m7-A] non-mixamo rig support + world-integrated backdrops (+4 sync7 render fixes) 2026-07-25 22:21:37 +10:00
stage_test.mjs M12: look, render button, save integrity — 3 workflow rounds, 22 agents 2026-07-28 22:41:17 +10:00
stage.js M12: look, render button, save integrity — 3 workflow rounds, 22 agents 2026-07-28 22:41:17 +10:00
stagestub.js M12: look, render button, save integrity — 3 workflow rounds, 22 agents 2026-07-28 22:41:17 +10:00
style.css M12: look, render button, save integrity — 3 workflow rounds, 22 agents 2026-07-28 22:41:17 +10:00
timeline_test.mjs M12: look, render button, save integrity — 3 workflow rounds, 22 agents 2026-07-28 22:41:17 +10:00
timeline.js M12: look, render button, save integrity — 3 workflow rounds, 22 agents 2026-07-28 22:41:17 +10:00
tlui.js M12: look, render button, save integrity — 3 workflow rounds, 22 agents 2026-07-28 22:41:17 +10:00