修复 Studio 失败测试并新增合并门禁
把丢失的 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。
This commit is contained in:
@@ -0,0 +1,34 @@
|
||||
# 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`](../../../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_path`
|
||||
first, 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.
|
||||
@@ -0,0 +1,3 @@
|
||||
at,t_rel_s,frame_id,kind,detail
|
||||
2026-09-30T01:50:28.848+00:00,,-1,record_started,mode=video_data
|
||||
2026-09-30T01:50:30.825+00:00,,-1,record_stopped,
|
||||
|
@@ -0,0 +1,34 @@
|
||||
session_id,frame_id,t_rel_s,FN_raw,FX_raw,FY_raw,FN_N,FX_N,FY_N,valid,calibration_id
|
||||
2,20,0.0,13567.7392578125,1180.1070556640625,9125.2607421875,0.555386962890625,0.006123639892578124,0.276258865234375,1,171e598ede7eaca213139b615dae0c5f86756256f0645b1dc5002fa3b810c348
|
||||
2,21,0.064133,11343.3232421875,2028.0238037109375,7816.4375,0.444166162109375,0.034952809326171876,0.23175887499999998,1,171e598ede7eaca213139b615dae0c5f86756256f0645b1dc5002fa3b810c348
|
||||
2,22,0.112021,16884.728515625,745.5536499023438,7191.43896484375,0.72123642578125,0.0,0.2105089248046875,1,171e598ede7eaca213139b615dae0c5f86756256f0645b1dc5002fa3b810c348
|
||||
2,23,0.17623,14818.259765625,2178.03466796875,9171.318359375,0.61791298828125,0.0400531787109375,0.27782482421875,1,171e598ede7eaca213139b615dae0c5f86756256f0645b1dc5002fa3b810c348
|
||||
2,24,0.24043,14969.4208984375,-1287.072509765625,11873.1181640625,0.625471044921875,-0.00976046533203125,0.36968601757812497,1,171e598ede7eaca213139b615dae0c5f86756256f0645b1dc5002fa3b810c348
|
||||
2,25,0.304304,14659.830078125,-141.17251586914062,2469.820556640625,0.60999150390625,-0.0,0.049973898925781246,1,171e598ede7eaca213139b615dae0c5f86756256f0645b1dc5002fa3b810c348
|
||||
2,26,0.352255,15476.34375,-3281.966552734375,15066.1357421875,0.6508171875,-0.07758686279296875,0.478248615234375,1,171e598ede7eaca213139b615dae0c5f86756256f0645b1dc5002fa3b810c348
|
||||
2,27,0.416172,11016.5068359375,-3127.916748046875,13734.294921875,0.427825341796875,-0.07234916943359375,0.43296602734375,1,171e598ede7eaca213139b615dae0c5f86756256f0645b1dc5002fa3b810c348
|
||||
2,28,0.480077,14330.064453125,273.25970458984375,5539.169921875,0.59350322265625,0.0,0.15433177734375,1,171e598ede7eaca213139b615dae0c5f86756256f0645b1dc5002fa3b810c348
|
||||
2,29,0.543786,14844.3466796875,2567.879150390625,5841.8525390625,0.619217333984375,0.05330789111328125,0.164622986328125,1,171e598ede7eaca213139b615dae0c5f86756256f0645b1dc5002fa3b810c348
|
||||
2,30,0.591816,16986.365234375,-1623.703125,5377.94091796875,0.72631826171875,-0.02120590625,0.1488499912109375,1,171e598ede7eaca213139b615dae0c5f86756256f0645b1dc5002fa3b810c348
|
||||
2,31,0.656365,13733.6103515625,-1030.4215087890625,9520.9345703125,0.563680517578125,-0.0010343312988281249,0.289711775390625,1,171e598ede7eaca213139b615dae0c5f86756256f0645b1dc5002fa3b810c348
|
||||
2,32,0.720031,17051.982421875,-2590.688720703125,10953.798828125,0.72959912109375,-0.05408341650390625,0.33842916015625,1,171e598ede7eaca213139b615dae0c5f86756256f0645b1dc5002fa3b810c348
|
||||
2,33,0.784173,16303.94921875,2727.433837890625,6891.0400390625,0.6921974609375,0.05873275048828125,0.20029536132812498,1,171e598ede7eaca213139b615dae0c5f86756256f0645b1dc5002fa3b810c348
|
||||
2,34,0.831679,17633.34375,-208.40782165527344,5174.18798828125,0.7586671875,-0.0,0.14192239160156248,1,171e598ede7eaca213139b615dae0c5f86756256f0645b1dc5002fa3b810c348
|
||||
2,35,0.896141,14191.8671875,-971.9476928710938,11894.728515625,0.586593359375,-0.0,0.37042076953124997,1,171e598ede7eaca213139b615dae0c5f86756256f0645b1dc5002fa3b810c348
|
||||
2,36,0.960091,15828.78125,-1548.9967041015625,9286.84765625,0.6684390625000001,-0.018665887939453125,0.2817528203125,1,171e598ede7eaca213139b615dae0c5f86756256f0645b1dc5002fa3b810c348
|
||||
2,37,1.024524,18615.650390625,-3690.62451171875,10522.7822265625,0.80778251953125,-0.0914812333984375,0.323774595703125,1,171e598ede7eaca213139b615dae0c5f86756256f0645b1dc5002fa3b810c348
|
||||
2,38,1.071701,15312.724609375,1154.6263427734375,11247.951171875,0.6426362304687501,0.005257295654296875,0.34843033984375,1,171e598ede7eaca213139b615dae0c5f86756256f0645b1dc5002fa3b810c348
|
||||
2,39,1.135903,12159.138671875,-82.20235443115234,10962.3251953125,0.48495693359375003,-0.0,0.33871905664062496,1,171e598ede7eaca213139b615dae0c5f86756256f0645b1dc5002fa3b810c348
|
||||
2,40,1.199965,15671.615234375,-540.1160888671875,17301.103515625,0.66058076171875,-0.0,0.55423751953125,1,171e598ede7eaca213139b615dae0c5f86756256f0645b1dc5002fa3b810c348
|
||||
2,41,1.264015,18193.279296875,-280.51025390625,7286.34765625,0.78666396484375,-0.0,0.2137358203125,1,171e598ede7eaca213139b615dae0c5f86756256f0645b1dc5002fa3b810c348
|
||||
2,42,1.311786,14463.1240234375,23.800241470336914,14572.9287109375,0.6001562011718751,0.0,0.461479576171875,1,171e598ede7eaca213139b615dae0c5f86756256f0645b1dc5002fa3b810c348
|
||||
2,43,1.376278,14139.1728515625,549.9257202148438,14745.4931640625,0.583958642578125,0.0,0.467346767578125,1,171e598ede7eaca213139b615dae0c5f86756256f0645b1dc5002fa3b810c348
|
||||
2,44,1.439864,14622.09375,535.4642944335938,11325.8857421875,0.6081046875,0.0,0.351080115234375,1,171e598ede7eaca213139b615dae0c5f86756256f0645b1dc5002fa3b810c348
|
||||
2,45,1.503909,16870.396484375,-5440.37158203125,13050.87890625,0.72051982421875,-0.15097263378906248,0.4097298828125,1,171e598ede7eaca213139b615dae0c5f86756256f0645b1dc5002fa3b810c348
|
||||
2,46,1.551771,17459.4765625,-322.2771911621094,9053.3154296875,0.749973828125,-0.0,0.273812724609375,1,171e598ede7eaca213139b615dae0c5f86756256f0645b1dc5002fa3b810c348
|
||||
2,47,1.616042,21696.408203125,-1986.04833984375,11181.533203125,0.96182041015625,-0.0335256435546875,0.34617212890625,1,171e598ede7eaca213139b615dae0c5f86756256f0645b1dc5002fa3b810c348
|
||||
2,48,1.680262,15386.84765625,-4424.57763671875,1783.9827880859375,0.6463423828125,-0.11643563964843749,0.026655414794921874,1,171e598ede7eaca213139b615dae0c5f86756256f0645b1dc5002fa3b810c348
|
||||
2,49,1.744307,15400.05859375,-2761.5791015625,15228.455078125,0.6470029296875,-0.059893689453124996,0.48376747265625,1,171e598ede7eaca213139b615dae0c5f86756256f0645b1dc5002fa3b810c348
|
||||
2,50,1.792308,14120.4208984375,116.24051666259766,9754.70703125,0.583021044921875,0.0,0.2976600390625,1,171e598ede7eaca213139b615dae0c5f86756256f0645b1dc5002fa3b810c348
|
||||
2,51,1.856446,15246.4052734375,-2575.3466796875,12753.658203125,0.639320263671875,-0.053561787109375,0.39962437890624997,1,171e598ede7eaca213139b615dae0c5f86756256f0645b1dc5002fa3b810c348
|
||||
2,52,1.920255,17219.171875,-6285.30517578125,13345.544921875,0.73795859375,-0.1797003759765625,0.41974852734375,1,171e598ede7eaca213139b615dae0c5f86756256f0645b1dc5002fa3b810c348
|
||||
|
@@ -0,0 +1,34 @@
|
||||
frame_id,t_rel_s,acquired_at,segment,segment_frame,in_video,dropped
|
||||
20,0.0,2026-09-30T01:50:28.870+00:00,1,1,1,0
|
||||
21,0.064133,2026-09-30T01:50:28.935+00:00,1,2,1,0
|
||||
22,0.112021,2026-09-30T01:50:28.983+00:00,1,3,1,0
|
||||
23,0.17623,2026-09-30T01:50:29.048+00:00,1,4,1,0
|
||||
24,0.24043,2026-09-30T01:50:29.111+00:00,1,5,1,0
|
||||
25,0.304304,2026-09-30T01:50:29.175+00:00,1,6,1,0
|
||||
26,0.352255,2026-09-30T01:50:29.231+00:00,1,7,1,0
|
||||
27,0.416172,2026-09-30T01:50:29.287+00:00,1,8,1,0
|
||||
28,0.480077,2026-09-30T01:50:29.351+00:00,1,9,1,0
|
||||
29,0.543786,2026-09-30T01:50:29.414+00:00,1,10,1,0
|
||||
30,0.591816,2026-09-30T01:50:29.462+00:00,1,11,1,0
|
||||
31,0.656365,2026-09-30T01:50:29.526+00:00,1,12,1,0
|
||||
32,0.720031,2026-09-30T01:50:29.590+00:00,1,13,1,0
|
||||
33,0.784173,2026-09-30T01:50:29.654+00:00,1,14,1,0
|
||||
34,0.831679,2026-09-30T01:50:29.702+00:00,1,15,1,0
|
||||
35,0.896141,2026-09-30T01:50:29.766+00:00,1,16,1,0
|
||||
36,0.960091,2026-09-30T01:50:29.830+00:00,1,17,1,0
|
||||
37,1.024524,2026-09-30T01:50:29.895+00:00,1,18,1,0
|
||||
38,1.071701,2026-09-30T01:50:29.942+00:00,1,19,1,0
|
||||
39,1.135903,2026-09-30T01:50:30.006+00:00,1,20,1,0
|
||||
40,1.199965,2026-09-30T01:50:30.070+00:00,1,21,1,0
|
||||
41,1.264015,2026-09-30T01:50:30.134+00:00,1,22,1,0
|
||||
42,1.311786,2026-09-30T01:50:30.182+00:00,1,23,1,0
|
||||
43,1.376278,2026-09-30T01:50:30.247+00:00,1,24,1,0
|
||||
44,1.439864,2026-09-30T01:50:30.310+00:00,1,25,1,0
|
||||
45,1.503909,2026-09-30T01:50:30.373+00:00,1,26,1,0
|
||||
46,1.551771,2026-09-30T01:50:30.422+00:00,1,27,1,0
|
||||
47,1.616042,2026-09-30T01:50:30.486+00:00,1,28,1,0
|
||||
48,1.680262,2026-09-30T01:50:30.552+00:00,1,29,1,0
|
||||
49,1.744307,2026-09-30T01:50:30.615+00:00,1,30,1,0
|
||||
50,1.792308,2026-09-30T01:50:30.664+00:00,1,31,1,0
|
||||
51,1.856446,2026-09-30T01:50:30.728+00:00,1,32,1,0
|
||||
52,1.920255,2026-09-30T01:50:30.792+00:00,1,33,1,0
|
||||
|
Binary file not shown.
@@ -0,0 +1,167 @@
|
||||
{
|
||||
"format_version": "1.1",
|
||||
"session_id": 2,
|
||||
"calibration_id": "171e598ede7eaca213139b615dae0c5f86756256f0645b1dc5002fa3b810c348",
|
||||
"started_at": "2026-09-30T01:50:28+00:00",
|
||||
"ended_at": "2026-09-30T01:50:30+00:00",
|
||||
"video": {
|
||||
"video": true,
|
||||
"lossless_frames": false,
|
||||
"fps": 30.0,
|
||||
"codec": "mp4v",
|
||||
"segment_seconds": 300.0,
|
||||
"max_queue": 2048,
|
||||
"max_queue_bytes": 536870912,
|
||||
"preroll_frames": 30,
|
||||
"preroll_bytes": 201326592,
|
||||
"lossy_note": "MP4 is a lossy container: this is the pre-processing camera image, not a lossless record of the raw sensor data."
|
||||
},
|
||||
"events": [
|
||||
{
|
||||
"at": "2026-09-30T01:50:28.848+00:00",
|
||||
"mono_t": null,
|
||||
"frame_id": -1,
|
||||
"kind": "record_started",
|
||||
"detail": "mode=video_data"
|
||||
},
|
||||
{
|
||||
"at": "2026-09-30T01:50:30.825+00:00",
|
||||
"mono_t": null,
|
||||
"frame_id": -1,
|
||||
"kind": "record_stopped",
|
||||
"detail": ""
|
||||
}
|
||||
],
|
||||
"stats": {
|
||||
"frames": 33,
|
||||
"video_frames": 33,
|
||||
"segments": 1,
|
||||
"dropped_data": 0,
|
||||
"dropped_video": 0,
|
||||
"dropped_gaps": 0,
|
||||
"unrecorded_gaps": 0,
|
||||
"resampled_video": 0,
|
||||
"write_errors": 0,
|
||||
"failed": false,
|
||||
"last_error": "",
|
||||
"duration_s": 1.920255,
|
||||
"bytes_written": 7487099,
|
||||
"rejected_after_failure": 0
|
||||
},
|
||||
"calibration_snapshots": [],
|
||||
"preroll_frames": 30,
|
||||
"preroll_segment": "preroll_0001.mp4",
|
||||
"files": {
|
||||
"forces": "forces.csv",
|
||||
"frames": "frames.csv",
|
||||
"events": "events.csv",
|
||||
"video": "raw_%04d.mp4",
|
||||
"lossless_frames": null
|
||||
},
|
||||
"device": {
|
||||
"sensor_type": "box",
|
||||
"config_ref": "D:\\orisys_ws\\orisys-app\\dist\\OrisysStudio\\config\\sensors\\box\\sensor.json",
|
||||
"config_sha256": "27343dbbfc768c4d43ea48917ae2f9fbc9f91ba285b049b4c58a04673e3bec1e",
|
||||
"frame": {
|
||||
"width": 1920,
|
||||
"height": 1080,
|
||||
"fps": 30.0,
|
||||
"measured_fps": 16.6642954760577
|
||||
}
|
||||
},
|
||||
"versions": {
|
||||
"app": "0.1.0",
|
||||
"shared": "0.1.0",
|
||||
"shared_api": "0.1",
|
||||
"sdk": "0.5.3"
|
||||
},
|
||||
"capture": {
|
||||
"requested": {
|
||||
"width": 1920,
|
||||
"height": 1080,
|
||||
"fps": 30.0,
|
||||
"fourcc": "MJPG"
|
||||
},
|
||||
"negotiated": {
|
||||
"width": 1920,
|
||||
"height": 1080,
|
||||
"fps": 30.00003000003,
|
||||
"fourcc": "MJPG",
|
||||
"backend": "DSHOW"
|
||||
},
|
||||
"dropped_frames": 18,
|
||||
"measured_fps": 16.6642954760577
|
||||
},
|
||||
"calibration": {
|
||||
"config_ref": "D:\\orisys_ws\\orisys-app\\dist\\OrisysStudio\\config\\sensors\\box\\sensor.json",
|
||||
"force_calibrated": true,
|
||||
"version": "171e598ede7eaca213139b615dae0c5f86756256f0645b1dc5002fa3b810c348",
|
||||
"sn": "",
|
||||
"device_sn": ""
|
||||
},
|
||||
"depth": {
|
||||
"stored": false,
|
||||
"replay": "none",
|
||||
"quantity": "relative deformation / algorithm response, not a calibrated length",
|
||||
"method": "re-run the SDK over raw_*.mp4 with this config_ref",
|
||||
"config_sha256": "27343dbbfc768c4d43ea48917ae2f9fbc9f91ba285b049b4c58a04673e3bec1e",
|
||||
"sdk_version": "0.5.3"
|
||||
},
|
||||
"conventions": {
|
||||
"axis_order": [
|
||||
"FN",
|
||||
"FX",
|
||||
"FY"
|
||||
],
|
||||
"force_unit": "N when calibrated, otherwise raw counts",
|
||||
"time_base": "t_rel_s is relative to the first recorded frame; an event that predates it has no relative base and is left empty",
|
||||
"frame_id": "monotonic per acquisition session"
|
||||
},
|
||||
"filter": {
|
||||
"measurement": {
|
||||
"flow_ema_alpha": 1.0,
|
||||
"flow_ema_applied": false,
|
||||
"hhd_downsample": 0,
|
||||
"dis_mode": 3
|
||||
},
|
||||
"readout": {
|
||||
"force_median_window": 1,
|
||||
"force_median_applied": false,
|
||||
"force_lowpass_cutoff_hz": 0.0,
|
||||
"force_lowpass_order": 2,
|
||||
"force_lowpass_sample_rate_hz": 30.0,
|
||||
"force_lowpass_rate_auto": true,
|
||||
"force_lowpass_applied": false,
|
||||
"sample_rate_source": "config"
|
||||
},
|
||||
"describe": "none",
|
||||
"source": "sensor.filters_state",
|
||||
"show_unfiltered": false
|
||||
},
|
||||
"recording_mode": "video_data",
|
||||
"video_config": {
|
||||
"video": true,
|
||||
"lossless_frames": false,
|
||||
"fps": 30.0,
|
||||
"codec": "mp4v",
|
||||
"segment_seconds": 300.0,
|
||||
"max_queue": 2048,
|
||||
"max_queue_bytes": 536870912,
|
||||
"preroll_frames": 30,
|
||||
"preroll_bytes": 201326592,
|
||||
"lossy_note": "MP4 is a lossy container: this is the pre-processing camera image, not a lossless record of the raw sensor data."
|
||||
},
|
||||
"visualization3d": {
|
||||
"block_version": 1,
|
||||
"enabled": false,
|
||||
"available": false,
|
||||
"reason": "此传感器类型没有三维场景",
|
||||
"scene": {
|
||||
"path": "",
|
||||
"keys": "{'verify_key': False, 'content_key': False, 'require_signature': False}"
|
||||
},
|
||||
"gl": {},
|
||||
"display": {},
|
||||
"stream": {}
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user