B1's MoCapAnything pick reversed (animal model, wrong for human capture);
license analysis recorded in LICENSES.md. John chose Path B: run HSMR->SKEL
locally on ultra (MPS), ship rig-motion only, accept the non-commercial
licence risk as interim until a commercial SKEL licence request goes out
(Path A, the clean upgrade).
Engine installed under .engine/ (gitignored): uv venv py3.10, torch 2.13
MPS-green, ungated weights, smoke_test.py with Apple-Silicon bypasses
(detectron2 stubbed with full-frame bbox, headless pyrender stubbed -> QC in
Blender) -- see docs/B_ENGINE_SETUP.md.
Remaining before B ships: John's gated SKEL v1.1.1 download, then the
forward-pass smoke test (MPS end-to-end, timing, pose sanity). Known caveat:
HSMR is per-frame so root is camera-space cam_t, NOT world-grounded -> Lane C
derives root from foot-contact.
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
Confirmed prune. Space pinned by OS-update snapshots (macOS 26.5.2
staged); realizes on next reboot. Updated DECISIONS.md Decision 2.
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
Fresh SOTA survey (per PLAN — distrust the snapshot). Findings:
- MoCapAnything V2 (MIT code+weights, no SMPL, BVH-direct onto arbitrary
rig) is the pick — sidesteps the SMPL commercial-license hard-stop and
collapses the SMPL->mixamorig mapper + most of Lane C retarget.
- GVHMR: best accuracy but non-commercial code license -> reference only.
- GEM-X: commercial-clean + perfect output but CUDA-only -> off-fleet.
Stopped at the John-decision gate (docs/DECISIONS.md): confirm engine,
clear m3ultra disk (97% full), supply test footage. Inference eyeball,
B2 service-ize, B3 jitter remain.
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
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>
git init + .gitignore (weights/capture/queue/out/media excluded), docs/LICENSES.md
skeleton with the SMPL gate, PROGRESS.md ledger, and spec/mixamorig_bones.json —
65 mixamorig bones (colon-prefixed) dumped from character_kit/female/female_game.glb
via headless Blender. This bone file is the retarget ground truth for Lane C.
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>