Source snapshot validated by the CI pipeline. This entry does not contain firmware bundles.
Changes:
fix(train): tch-backend rpath build.rs, unreachable gaussian-peak test thresholds, --val-dir and --eval-only (#1014) (#1014)
Rebased residual of #1014 onto main. The tch 0.24 compile fixes, clamp_min,
floor-division decode and E0507 test fix from the original PR already landed
on main (#1008 / ADR-155), so only what main still lacks is carried here:
- build.rs: with
tch-backend+ LIBTORCH_USE_PYTORCH=1, embed an rpath to
the PyTorch lib dir. On main the lib unit-test binary dies at load with
"libtorch_cpu.so: cannot open shared object file". Strict no-op unless the
feature AND the env var are set (default / --no-default-features / wheel
builds unchanged). Honours PYTHON_SYS_EXECUTABLE like torch-sys. - losses.rs: two gaussian-peak tests asserted values that are mathematically
unreachable for a half-pixel keypoint: exp(-0.5/8) = 0.9394 (< 0.95) and
exp(-0.5/4.5) = 0.8948 (< 0.9). Thresholds 0.93 / 0.89 with the math. - trainer.rs: evaluate() and new evaluate_with_dump() share ONE loop
(evaluate_inner with an optional JSONL sink), so --eval-only measures with
exactly the metric training validation uses. - train.rs: --val-dir uses a held-out MM-Fi dir as validation, taking
precedence over the automatic subject-disjoint split; any subject overlap
with --data-dir is refused as a leak (ADR-155 Tier-1.2). The automatic
split and the synthetic smoke-test fallback are unchanged.
--eval-only --checkpoint --val-dir [--dump-preds ]
loads a checkpoint and runs the validation loop standalone.
Local evidence (PyTorch 2.11, LIBTORCH_USE_PYTORCH=1, --test-threads=1):
main 353 pass / 2 fail (+ loader error without LD_LIBRARY_PATH);
this branch 355/355 with no LD_LIBRARY_PATH.
Co-authored-by: claude-flow ruv@ruv.net
Source commit: bf61d4e21f77bd58f4d1a364c9c10a73aaa2116a
Container images publish separately through the sensing-server release workflow.
Firmware downloads are attached to the dedicated vX.Y.Z-esp32 releases.