docs/CAPTURE.md — one-page filming protocol (landscape, feet in frame, T-pose
bookends, 5-30s takes, AirDrop to capture/inbox/).
ingest.py — scans capture/inbox/, probes each clip (ffprobe, display-orientation
aware so phone rotation tags are respected), rejects portrait/malformed to
capture/rejected/ with a reason, normalizes the rest to 30fps h264 (audio
stripped), renames YYYYMMDD_<name>.mp4, rsyncs to the m3ultra pose queue, and
logs every disposition to capture/LEDGER.tsv. Failed ships keep the normalized
file in capture/staged/ so a re-run retries without re-encoding.
--selfcheck exercises probe+validate on synthesized landscape/portrait clips.
Verified end-to-end: inbox drop -> one command -> clip in m3ultra queue, portrait
rejected with clear error, ledger rows written.
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>