From cb75cb1ca2092b12a9c002a59eb6c2cfe5975072 Mon Sep 17 00:00:00 2001 From: Brad Stein Date: Tue, 19 May 2026 13:11:37 -0300 Subject: [PATCH] ci(lesavka): refresh hygiene baseline for UVC handoff --- docs/operational-env.md | 3 +++ scripts/ci/hygiene_gate_baseline.json | 12 ++++++------ server/src/video_sinks/webcam_sink/tests.rs | 1 + 3 files changed, 10 insertions(+), 6 deletions(-) diff --git a/docs/operational-env.md b/docs/operational-env.md index 47e6c54..3b8755d 100644 --- a/docs/operational-env.md +++ b/docs/operational-env.md @@ -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_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_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_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 | @@ -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_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_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_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 | diff --git a/scripts/ci/hygiene_gate_baseline.json b/scripts/ci/hygiene_gate_baseline.json index df67d89..636cf9a 100644 --- a/scripts/ci/hygiene_gate_baseline.json +++ b/scripts/ci/hygiene_gate_baseline.json @@ -1338,32 +1338,32 @@ "server/src/video_sinks/mjpeg_spool/audit.rs": { "clippy_warnings": 0, "doc_debt": 1, - "loc": 192 + "loc": 226 }, "server/src/video_sinks/mjpeg_spool/tests.rs": { "clippy_warnings": 0, "doc_debt": 2, - "loc": 374 + "loc": 439 }, "server/src/video_sinks/webcam_sink.rs": { "clippy_warnings": 0, "doc_debt": 7, - "loc": 466 + "loc": 479 }, "server/src/video_sinks/webcam_sink/constructor.rs": { "clippy_warnings": 0, "doc_debt": 1, - "loc": 377 + "loc": 382 }, "server/src/video_sinks/webcam_sink/frame_handoff.rs": { "clippy_warnings": 0, "doc_debt": 4, - "loc": 325 + "loc": 347 }, "server/src/video_sinks/webcam_sink/tests.rs": { "clippy_warnings": 0, "doc_debt": 7, - "loc": 178 + "loc": 206 }, "server/src/video_support.rs": { "clippy_warnings": 0, diff --git a/server/src/video_sinks/webcam_sink/tests.rs b/server/src/video_sinks/webcam_sink/tests.rs index dafa618..bfef50b 100644 --- a/server/src/video_sinks/webcam_sink/tests.rs +++ b/server/src/video_sinks/webcam_sink/tests.rs @@ -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))] #[test] fn direct_mjpeg_normalizer_branch_reencodes_a_valid_frame() {