Original rolling shutter timing and Co-Director selector studies Use a new output directory for reproduction Keep the downloaded local helper and build script together Use Bun for build-rolling-codirector-records.ts Co-Director selector comparison Download bandit.py from the exact pinned public source URL in codirector-source-audit.json The source module is separately Apache licensed and retains its original notices Run python3 verify-codirector-source.py PATH_TO_PINNED_BANDIT_PY NEW_OUTPUT_DIRECTORY The verifier requires the fixed expected source hash before importing the local module Only the standalone selector is executed with authored fixtures No cloud model account or paid service is used by that verifier Copy the resulting codirector-source-fixtures.json into the output directory Run bun build-rolling-codirector-records.ts NEW_OUTPUT_DIRECTORY It builds the default and alternate diagram and search records and compares 72 selected stage choices Original artwork and analytic animation Run uv run --no-project --with numpy --with pillow python render-rolling-codirector-study.py NEW_OUTPUT_DIRECTORY --font PATH_TO_ARIAL_TTF The default font path is the macOS supplemental Arial location The renderer requires FFmpeg on PATH and the generated Co-Director records in its output directory It creates an original analytic row timing animation and explanatory artwork The moving posts are synthetic point samples and do not integrate exposure blur The enlarged still is decoded from frame 36 of the actual encoded MP4 Run uv run --no-project --with numpy python verify-rolling-codirector-native.py NEW_OUTPUT_DIRECTORY It checks the row records with rational arithmetic all 72 MP4 timestamps and the decoded first and last row centers at the middle frame The published threshold tolerance is 1.2 pixels and concerns only the saved synthetic comparison No physical camera measurement footage repair cloud inference or paper quality benchmark is claimed