Fix repeat ownership and close out capture evidence
Start each repeat after its own manifest entry, refuse packets from a restarted or stopped camera, keep a simulated repeat from reading as recorded evidence, and decide completeness from the writer report. Add the operator summary (four files plus an atomic pointer) and read-only video review of a hold window. Verified with the full Autocal suite (567 passed), the shared recorder/playback files (57 passed), the lint gate and the documentation gate; the two pre-existing panel_check layout failures also fail on a clean HEAD worktree.
This commit is contained in:
@@ -392,7 +392,22 @@
|
||||
"col_levels": "Levels (N)",
|
||||
"col_hold": "Hold (s)",
|
||||
"col_repeats": "Repeats",
|
||||
"col_done": "Done"
|
||||
"col_done": "Done",
|
||||
"capture": "Recording: {status} · {frames} frames · {dropped} dropped · {reason}",
|
||||
"capture_idle": "Not ready",
|
||||
"capture_recording": "Recording",
|
||||
"capture_closing": "Closing",
|
||||
"capture_complete": "Complete",
|
||||
"capture_incomplete": "Evidence incomplete",
|
||||
"capture_reason_restarted": "image source restarted",
|
||||
"capture_reason_zero_frames": "no frame was written",
|
||||
"capture_reason_write_error": "disk write failed",
|
||||
"capture_reason_video_missing": "no video frame was kept",
|
||||
"capture_reason_video_undecodable": "the video cannot be decoded",
|
||||
"capture_reason_dropped": "frames were dropped",
|
||||
"capture_reason_segments": "unexpected number of video segments",
|
||||
"capture_reason_timeout": "closing timed out",
|
||||
"capture_wait": "recording is not ready; the hold cannot be confirmed yet"
|
||||
},
|
||||
"finger": {
|
||||
"title": "Finger calibration-point debug",
|
||||
@@ -589,6 +604,7 @@
|
||||
"overview": {
|
||||
"capture_in_progress": "In progress",
|
||||
"saved": "Analysis saved; hover for its location.",
|
||||
"saved_summary": "Review saved and summary published: {path} → {summary}",
|
||||
"open_session": "Open calibration session…",
|
||||
"empty": "Choose the session folder containing session.json to view collected sites, normal response and sensitivity. You can also open current data from Calibration capture.",
|
||||
"title": "Calibration record overview",
|
||||
@@ -654,7 +670,8 @@
|
||||
"guide_missing": "1 Check identity → 2 Select site / trial → 3 Check stable windows → 4 Save\nNext: this site has no attempt; choose a collected site or acquire it.",
|
||||
"guide_incomplete": "1 Check identity → 2 Select site / trial → 3 Check stable windows → 4 Save\nNext: inspect the stop reason and recorded signal. Incomplete attempts are excluded from fitting.",
|
||||
"guide_check": "1 Check identity → 2 Select site / trial → 3 Check stable windows → 4 Save\nNext: select a trial and Check hold windows; adjust the time interval if needed.",
|
||||
"guide_save": "1 Check identity → 2 Select site / trial → 3 Check stable windows → 4 Save\nNext: inspect remaining holds or save current analysis."
|
||||
"guide_save": "1 Check identity → 2 Select site / trial → 3 Check stable windows → 4 Save\nNext: inspect remaining holds or save current analysis.",
|
||||
"video": "View recording"
|
||||
},
|
||||
"quality": {
|
||||
"open": "Repeatability and validation…",
|
||||
@@ -724,6 +741,7 @@
|
||||
"uv_title": "Site sensitivity: blue→red {low:.4g}→{high:.4g} raw/N; grey has no fit",
|
||||
"issues": "{count} incomplete attempts excluded from fitting. Inspect raw signals for stability.",
|
||||
"saved": "Saved new review: {path}",
|
||||
"saved_summary": "Review saved and summary published: {path} → {summary}",
|
||||
"col_trial": "Trial",
|
||||
"col_branch": "Phase",
|
||||
"col_load": "Reference (N)",
|
||||
@@ -733,5 +751,35 @@
|
||||
"col_duration": "Hold (s)",
|
||||
"col_quality": "Quality",
|
||||
"col_drift": "Drift (raw/s)"
|
||||
},
|
||||
"video": {
|
||||
"title": "Video review",
|
||||
"header": "{trial} · step {step} ({branch} {load} N) · review {status} · {samples} valid samples",
|
||||
"position": "Frame {index}/{total} · id {frame} · segment {segment} frame {segment_frame} · basis {basis}",
|
||||
"play": "Play",
|
||||
"pause": "Pause",
|
||||
"previous": "Previous",
|
||||
"next": "Next",
|
||||
"frame_missing": "This frame was not written to the video (dropped from the queue)",
|
||||
"reason_missing": "Cannot open the video: {detail}",
|
||||
"reason_no_frame_source": "This recording has no usable video evidence (no camera, or no frame was written)",
|
||||
"reason_no_video_frame": "No valid frame of this hold was written to the video",
|
||||
"reason_trial_not_found": "This trial is not in the record",
|
||||
"reason_window_not_found": "This hold window is not in the trial",
|
||||
"reason_video_undecodable": "The video file cannot be decoded",
|
||||
"reason_decode": "Decoding this frame failed",
|
||||
"cursor": "Current frame",
|
||||
"reference": "Actual reference",
|
||||
"curve_title": "Raw force curve for this hold",
|
||||
"basis_unknown": "not recorded",
|
||||
"open": "View recording"
|
||||
},
|
||||
"summary": {
|
||||
"failed": "Summary export failed: {detail}. The recording is unchanged; you can retry.",
|
||||
"published": "Summary published: {path}",
|
||||
"retry": "Publish summary again",
|
||||
"done": "Summary published again: {path}",
|
||||
"reason_hold_not_found": "This hold attempt is not in the record",
|
||||
"reason_hold_not_complete": "This hold attempt was discarded by a remeasure"
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user