ci(lesavka): refresh hygiene baseline for UVC handoff

This commit is contained in:
Brad Stein 2026-05-19 13:11:37 -03:00
parent 6b98f067c4
commit cb75cb1ca2
3 changed files with 10 additions and 6 deletions

View File

@ -342,6 +342,7 @@ from `LESAVKA_CLIENT_PKI_SSH_SOURCE` over SSH. Runtime clients require the insta
| `LESAVKA_UVC_FRAME_AUDIT_EVERY` | UVC helper boundary-audit sampling interval; saves every Nth spooled frame, defaults to `1` for short repros | | `LESAVKA_UVC_FRAME_AUDIT_EVERY` | UVC helper boundary-audit sampling interval; saves every Nth spooled frame, defaults to `1` for short repros |
| `LESAVKA_UVC_FRAME_AUDIT_LOG_PATH` | UVC helper boundary-audit JSONL path override; defaults to `spool-audit.jsonl` inside `LESAVKA_UVC_FRAME_AUDIT_DIR` | | `LESAVKA_UVC_FRAME_AUDIT_LOG_PATH` | UVC helper boundary-audit JSONL path override; defaults to `spool-audit.jsonl` inside `LESAVKA_UVC_FRAME_AUDIT_DIR` |
| `LESAVKA_UVC_FRAME_AUDIT_MAX_FRAMES` | UVC helper boundary-audit frame cap; defaults to `1800`, set `0` for unlimited audit capture during isolated short runs | | `LESAVKA_UVC_FRAME_AUDIT_MAX_FRAMES` | UVC helper boundary-audit frame cap; defaults to `1800`, set `0` for unlimited audit capture during isolated short runs |
| `LESAVKA_UVC_FRAME_AUDIT_ROLLING` | UVC helper boundary-audit retention toggle; defaults on so bounded audits keep the newest frames during long repros |
| `LESAVKA_UVC_FRAME_META` | UVC helper diagnostic override; when true, the server writes an atomic JSON sidecar for each spooled MJPEG frame so HEVC decode/spool timing can be compared with final RCT capture | | `LESAVKA_UVC_FRAME_META` | UVC helper diagnostic override; when true, the server writes an atomic JSON sidecar for each spooled MJPEG frame so HEVC decode/spool timing can be compared with final RCT capture |
| `LESAVKA_UVC_FRAME_META_LOG_PATH` | UVC helper diagnostic override; when set with `LESAVKA_UVC_FRAME_META=1`, append every MJPEG spool timing record as JSONL for full-probe HEVC/RCT correlation; summarize with `scripts/manual/summarize_uvc_frame_meta_log.py` | | `LESAVKA_UVC_FRAME_META_LOG_PATH` | UVC helper diagnostic override; when set with `LESAVKA_UVC_FRAME_META=1`, append every MJPEG spool timing record as JSONL for full-probe HEVC/RCT correlation; summarize with `scripts/manual/summarize_uvc_frame_meta_log.py` |
| `LESAVKA_UVC_FRAME_META_PATH` | UVC helper diagnostic override; explicit path for the optional MJPEG spool metadata sidecar | | `LESAVKA_UVC_FRAME_META_PATH` | UVC helper diagnostic override; explicit path for the optional MJPEG spool metadata sidecar |
@ -454,6 +455,8 @@ These entries are intentionally concise because most are manual lab or CI harnes
| `LESAVKA_HEVC_REENTRY_WAIT_INTERVAL_SECONDS` | manual HEVC re-entry helper retry interval while waiting for SSH after a lab host outage, defaults to `15` | | `LESAVKA_HEVC_REENTRY_WAIT_INTERVAL_SECONDS` | manual HEVC re-entry helper retry interval while waiting for SSH after a lab host outage, defaults to `15` |
| `LESAVKA_HEVC_REENTRY_WAIT_SECONDS` | manual HEVC re-entry helper reachability wait budget; when greater than `0`, polls SSH before status/build/deploy/reconfigure instead of failing immediately | | `LESAVKA_HEVC_REENTRY_WAIT_SECONDS` | manual HEVC re-entry helper reachability wait budget; when greater than `0`, polls SSH before status/build/deploy/reconfigure instead of failing immediately |
| `LESAVKA_INSTALL_CAM_CODEC` | server installer camera ingress codec default; persists `LESAVKA_CAM_CODEC` for installed services, defaults to `hevc`; HEVC installs probe the hardware decoder and warn with a smoke log when the synthetic probe fails, while runtime still refuses software video fallback in production | | `LESAVKA_INSTALL_CAM_CODEC` | server installer camera ingress codec default; persists `LESAVKA_CAM_CODEC` for installed services, defaults to `hevc`; HEVC installs probe the hardware decoder and warn with a smoke log when the synthetic probe fails, while runtime still refuses software video fallback in production |
| `LESAVKA_INSTALL_ALLOW_SOFTWARE_VIDEO` | installer-only video acceleration override; persists the software fallback allowance for lab/debug installs without changing normal runtime defaults |
| `LESAVKA_INSTALL_HEVC_DECODER` | installer-only HEVC decoder override; persists the selected hardware decoder when repairing or pinning a known-good UVC bridge path |
| `LESAVKA_INSTALL_SOURCE` | install script source selector; use `ref` to fetch the requested git ref instead of building the existing local checkout | | `LESAVKA_INSTALL_SOURCE` | install script source selector; use `ref` to fetch the requested git ref instead of building the existing local checkout |
| `LESAVKA_INSTALL_UVC_FRAME_META` | server installer diagnostic toggle; persists `LESAVKA_UVC_FRAME_META`, defaults to `0` so spool metadata is opt-in | | `LESAVKA_INSTALL_UVC_FRAME_META` | server installer diagnostic toggle; persists `LESAVKA_UVC_FRAME_META`, defaults to `0` so spool metadata is opt-in |
| `LESAVKA_INSTALL_UVC_FRAME_META_LOG_PATH` | server installer diagnostic path; persists `LESAVKA_UVC_FRAME_META_LOG_PATH`, defaults to `/tmp/lesavka-uvc-frame-meta.jsonl` for optional client-to-RCT spool-boundary fetches | | `LESAVKA_INSTALL_UVC_FRAME_META_LOG_PATH` | server installer diagnostic path; persists `LESAVKA_UVC_FRAME_META_LOG_PATH`, defaults to `/tmp/lesavka-uvc-frame-meta.jsonl` for optional client-to-RCT spool-boundary fetches |

View File

@ -1338,32 +1338,32 @@
"server/src/video_sinks/mjpeg_spool/audit.rs": { "server/src/video_sinks/mjpeg_spool/audit.rs": {
"clippy_warnings": 0, "clippy_warnings": 0,
"doc_debt": 1, "doc_debt": 1,
"loc": 192 "loc": 226
}, },
"server/src/video_sinks/mjpeg_spool/tests.rs": { "server/src/video_sinks/mjpeg_spool/tests.rs": {
"clippy_warnings": 0, "clippy_warnings": 0,
"doc_debt": 2, "doc_debt": 2,
"loc": 374 "loc": 439
}, },
"server/src/video_sinks/webcam_sink.rs": { "server/src/video_sinks/webcam_sink.rs": {
"clippy_warnings": 0, "clippy_warnings": 0,
"doc_debt": 7, "doc_debt": 7,
"loc": 466 "loc": 479
}, },
"server/src/video_sinks/webcam_sink/constructor.rs": { "server/src/video_sinks/webcam_sink/constructor.rs": {
"clippy_warnings": 0, "clippy_warnings": 0,
"doc_debt": 1, "doc_debt": 1,
"loc": 377 "loc": 382
}, },
"server/src/video_sinks/webcam_sink/frame_handoff.rs": { "server/src/video_sinks/webcam_sink/frame_handoff.rs": {
"clippy_warnings": 0, "clippy_warnings": 0,
"doc_debt": 4, "doc_debt": 4,
"loc": 325 "loc": 347
}, },
"server/src/video_sinks/webcam_sink/tests.rs": { "server/src/video_sinks/webcam_sink/tests.rs": {
"clippy_warnings": 0, "clippy_warnings": 0,
"doc_debt": 7, "doc_debt": 7,
"loc": 178 "loc": 206
}, },
"server/src/video_support.rs": { "server/src/video_support.rs": {
"clippy_warnings": 0, "clippy_warnings": 0,

View File

@ -177,6 +177,7 @@ fn webcam_bus_watch_stops_promptly_on_drop() {
); );
} }
/// Verifies the optional direct-MJPEG normalizer preserves JPEG framing before UVC handoff.
#[cfg(not(coverage))] #[cfg(not(coverage))]
#[test] #[test]
fn direct_mjpeg_normalizer_branch_reencodes_a_valid_frame() { fn direct_mjpeg_normalizer_branch_reencodes_a_valid_frame() {