chibifire/maskscore-rung-1-bootstrap
MaskScore Rung 1 — Bootstrap (5 of 8 stubs) Walking-skeleton implementation of MaskScore Rung 1. Five of the eight MASKSCORE.md stubs are filled with real content from a synthetic ANNY bootstrap (rest pose + rank1 identity + rank5 perturbation). Text, Speech, and Video stubs are deferred to Rung 2 — the bootstrap has no transcript, no audio, and no video, and CLAUDE.md's ETNF rule forbids putting a null in for the missing input. Each stub ships as three ZSTD-compressed parquets:… See the full description on the dataset page: https://huggingface.co/datasets/chibifire/maskscore-rung-1-bootstrap.
MaskScore Rung 1 — Bootstrap (5 of 8 stubs)
Walking-skeleton implementation of MaskScore Rung 1. Five of the eight MASKSCORE.md stubs are filled with real content from a synthetic ANNY bootstrap (rest pose + rank1 identity + rank5 perturbation). Text, Speech, and Video stubs are deferred to Rung 2 — the bootstrap has no transcript, no audio, and no video, and CLAUDE.md's ETNF rule forbids putting a null in for the missing input.
Each stub ships as three ZSTD-compressed parquets: a root row, a candidates satellite, and a scores satellite. All five root tables share one schema — differing only in the interned input_column, input_asset, and input_asset_kind values — so the family concatenates cleanly for a downstream consumer.
The five stubs
Root schema (5 root parquets, 1 row × 7 cols each)
Candidates satellite (5 files, 2 rows × 4 cols each)
Scores satellite (5 files, 128 rows × 6 cols each)
Universal render-and-compare metric per MASKSCORE.md — all five stubs score the same way, only their inputs differ.
Controls (rule 2, asserted before write)
- Identity:
rank1is bit-identical toinputby construction (symlinked at render time).rank1 max depth_l1 = 0.0exact. The metric returns zero on unchanged input. - Negative:
rank5=input+ N(0, 0.05 rad) per bone (~2.86°/axis, seed 0).rank5 mean depth_l1 = 1.789584scene units — strictly worse than rank1.
Deferred stubs
The three unfilled stubs need external data the walking-skeleton bootstrap does not have:
text— SpeakingFaces transcript (Stanford + Siri command lookup) not in local mirror.speech— SpeakingFaces audio; sits on disk but no reference transcript to score against yet.video— no rendered video sequences yet; needs frame-sequence render + temporal metric.
They come at Rung 2 alongside the SpeakingFaces fit once rf-detr-keypoint is trained on this dataset's keypoint sidecars.
Layout on disk
maskscore_rung_1_<stub>.parquet root row
maskscore_rung_1_<stub>_candidates.parquet candidates satellite
maskscore_rung_1_<stub>_scores.parquet scores satellite
poses/
rest.npz verts, faces, pose_soma (78x3 float64), translation
rank1.npz identical to rest by construction
rank5.npz rest + N(0, 0.05 rad) per bone, seed 0
poses.json metadata: rig, topology, bone count, perturbation sigma, seed
renders/
input/ 64 views of rest ANNY: view_XXX.png (color), .aov.npz (depth + normals),
.json (camera sidecar), .keypoints.json (23 COCO body keypoints projected)
rank5/ same 64-view shape from the perturbed mesh
scores/
rank1.json rank1-vs-input per-view depth_l1, normal_l1, normal_dot
rank5.json rank5-vs-input per-view sameReproduction
pixi run -e anny-mac python generate_bootstrap_poses.py
pixi run -e anny-mac python render_bootstrap.py --views 64 --spp 16
pixi run -e anny-mac python project_2d_keypoints.py build/bootstrap/rest.npz build/bootstrap/renders/input
pixi run -e anny-mac python project_2d_keypoints.py build/bootstrap/rank5.npz build/bootstrap/renders/rank5
pixi run -e anny-mac python score_render_pair.py --reference build/bootstrap/renders/input --candidate build/bootstrap/renders/rank1 --out build/scores/rank1.json --assert-identity
pixi run -e anny-mac python score_render_pair.py --reference build/bootstrap/renders/input --candidate build/bootstrap/renders/rank5 --out build/scores/rank5.json
pixi run -e anny-mac python maskscore_rung_1_mesh.py
pixi run -e anny-mac python maskscore_rung_1_stubs.pyLicense
Apache-2.0. Content derives from ANNY (Apache-2.0) and Pixal3D's sphere_hammersley_sequence (Apache-2.0 by attribution in render_view.py).
