把丢失的 box 录像放回 apps/studio/tests/data/,修掉第 3 节 3–10 号与两处过时测试桩, 注册 timing 标记并让根目录收集零错误;新增 tools/gate.ps1 与可选的 pre-push 钩子。 验证:studio 524 通过 19 跳过、shared 467 通过 18 跳过、ui_check 632 项 0 失败、gate.ps1 退出码 0。 细节见 docs/test-repair-plan.zh.md。
Test recordings
box_short_20260930/ is one real recording, kept in the repository because several tests
must drive the real SDK chain over real footage. A synthetic clip cannot replace it: the
box chain's stitch probe looks for the lenslet grid in the image, does not converge on
generated pixels, and a synthetic 896² clip sent the chain into minutes of work where this
33-frame clip takes about two seconds.
What it is
| Sensor | box (shipped bundle) |
| Source | dist/OrisysStudio/outputs/recordings/20260930T015028Z_session0002_40cb8e7441434feab48bb646afdba011, recorded 2026-09-30, session_id 2 |
| Length | 33 frames, frame ids 20…52, 1.92 s of signal time |
| Files | raw_0001.mp4, frames.csv, forces.csv, events.csv, session.json (3.8 MB) |
| Not included | preroll_0001.mp4 (3.5 MB, optional for every reader: RecordingReader.preroll_segment() answers None when the file is absent) |
dist/ is build output and is not tracked, so the copy under it disappeared on
2026-10-14 when the studio was repackaged. That took 11 tests to ERROR and 4 to
failed without anyone noticing — see
docs/test-repair-plan.zh.md §1 and §3 #1–#2.
The frame ids are deliberately not 0…32: a test that used the frame index would pass on a 0-based recording, and real recordings start wherever the device's counter was.
Rules
- Do not replace it with a generated recording. The chain's behaviour on these pixels is part of what the tests defend.
- Do not write into it from a test. The tests that analyse it copy it into
tmp_pathfirst, because a pass writes its result beside the recording. - If it goes missing, restore it or the tests fail. They no longer skip on a missing input: a skip is how this went unnoticed.