Phase 5 tooling: publish the final weights with a card whose every number is read back off the Hub (mix manifest, audit.json, run_summary); parameter count recomputed from the safetensors header rather than asserted; batched commits; anonymous sha read-back; --verify-only is the Gate 5 clean-room load+generate
publish_mix: resume listing must read lfs.oid as a dict (getattr on a dict returned None for every shard, so a 'resume' re-sent all 2.3 GB); hard-exit 11/12 when a batched commit leaves a path absent or a remote sha that disagrees with the local bytes