Original image dithering and saved camera exercises Use a new output directory and keep the downloaded helper and build script together The image builder uses Bun and Sharp The original build used Bun 1.3.11 and Sharp 0.34.5 Use those versions when comparing reproduced bytes and inspect dither-runtime-record.json Run bun build-dither-hynomas-assets.ts NEW_OUTPUT_DIRECTORY It creates the original scene nine method and palette PNGs alpha fixture and camera review diagrams The PNGs are exact palette references while WEBP comparison artwork is a viewing aid Run uv run --no-project --with numpy --with pillow python verify-dither-native.py NEW_OUTPUT_DIRECTORY It compares every published PNG pixel and checks palette counts and opaque output alpha Camera source comparison Download apps/frontend/src/cameraTrajectory.ts from the exact revision and URL in hynomas-source-audit.json Keep the source in its own temporary folder and install three@0.179.1 beside it The type-only types import is erased by Bun at runtime Run bun verify-hynomas-camera-source.ts PATH_TO_PINNED_CAMERA_SOURCE NEW_OUTPUT_DIRECTORY The harness checks the fixed source hash before importing the helper It compares 32 original valid input fixtures with the local implementation No frontend server camera recorder model weights GPU worker or cloud inference is executed The saved CameraFrame array uses milliseconds and records position quaternion and FOV The checker validates numeric fields and ordered indices and timestamps The source pose rule ignores FOV when trimming the stationary suffix Retain the untrimmed source when an ending hold or zoom is intentional The trimmed frame array is not a complete camera path payload or a camera NPZ file No encoded video duration is inferred from timestamp span