From 7bd3e595db9fe56ab8e2fa4df928539918b4d19d Mon Sep 17 00:00:00 2001 From: Vito Sansevero Date: Thu, 22 Oct 2026 09:06:17 -0700 Subject: [PATCH] docs(testing): list the local Inspect divergences; raise touched coverage floors TESTING.md now tracks the local Inspect (#249 PR L1) divergences that remain after the review fixes, each checked on a host with ffprobe 9.0.2: media kind by bytes versus extension (parity is for the same bytes with a matching extension), JPEG dimensions past the 64 KiB header read, classic QuickTime udta text atoms, raw versus escaped tag bounds, the 10,000 element ceiling, unknown EBML DocTypes, the JSON depth approximation and the C _decimal assumption. coverage:update raised the branch floors of the three local Inspect modules this PR touches; the unrelated activity-scan raise it proposed is left at main's values. --- TESTING.md | 35 ++++++++++++++++++++ tools/vendor/frontend-coverage-baseline.json | 6 ++-- 2 files changed, 38 insertions(+), 3 deletions(-) diff --git a/TESTING.md b/TESTING.md index 936139cf..7a39c96d 100644 --- a/TESTING.md +++ b/TESTING.md @@ -1685,6 +1685,41 @@ ComfyUI savers reach the Library through the admin scan, which reads the shared carrier. Accepting `VIDEO_EXTENSIONS` in the monitor and routing them through `read_video_metadata` is a separate, issue-linked change. +Follow-up: local Inspect parity (#249 PR L1). The browser readers +(`web/js/png-metadata.js`, `web/js/workspace/local-video.mjs`, +`web/js/workspace/local-projection.mjs`) answer as the server does for the same bytes +and a matching extension (`tests/test_local_inspect_parity.py`; the real-ffprobe cases +skip without ffmpeg). The remaining known divergences, checked against ffprobe 9.0.2, +`read_inspection_file` and `_metadata`, are tracked here, not accepted as parity: + +- Media kind comes from the bytes locally and from the extension on the server: a PNG + named `.mp4` is read as a PNG locally (format and size shown) while the server probes + it with ffprobe (no format, no size); MP4 bytes named `.png` read locally as video + while Pillow fails them on the server (`unreadable`). Parity is stated for the same + bytes with a matching extension. +- JPEG dimensions: the local header read stops at 64 KiB, so a JPEG whose SOF follows + more than 64 KiB of APP segments (camera, Photoshop and EXIF/XMP workflow savers) + shows no dimensions, while Pillow reads them within the server's 8 MiB header bound. + The fix is a segment-header walk up to 8 MiB, which needs a plan amendment. +- Classic QuickTime `moov/udta` text atoms (`©cmt`/`desc` with a 16-bit size and + language, outside `meta`) are not read locally; ffprobe reports them as + `comment`/`description`, so the server can select that envelope while the local + read is `absent`. No ComfyUI saver writes them. +- Tag-size bounds count raw bytes locally and ffprobe's escaped JSON on the server + (first probe 12 MiB + 64 KiB, role-only re-probe 4 MiB + 64 KiB): only tag sets near + those bounds and dense with quotes or control characters can make one side re-probe + or fail while the other reads. +- More than 10,000 container elements stop the local read (`limited`, metadata + `unreadable`); ffprobe reads such files. +- An EBML DocType other than `matroska`/`webm` is an invalid container locally; ffmpeg + only warns and reads it. +- Envelope JSON deeper than 1,000 levels is refused locally as Python's default + recursion limit refuses it; the server's real limit depends on the interpreter and + call stack. A duplicate key in an object enclosing a nest deeper than the running + Python's json limit is `malformed` locally and `limited` on that Python. +- Decimal exponent limits assume CPython's C `_decimal`; on a `_pydecimal` interpreter + the server would read the over-limit exponents the local projection refuses. + Preserve raw logs, failed traces, paired PNGs, geometry, runtime versions and source hashes before later managed commands clear their output directories. Frontend baseline updates are additive through `coverage:update` only after diff --git a/tools/vendor/frontend-coverage-baseline.json b/tools/vendor/frontend-coverage-baseline.json index 6160a621..df2ed5dd 100644 --- a/tools/vendor/frontend-coverage-baseline.json +++ b/tools/vendor/frontend-coverage-baseline.json @@ -295,19 +295,19 @@ }, "workspace/local-inspection.mjs": { "lines": 98, - "branches": 85, + "branches": 89, "functions": 98, "statements": 98 }, "workspace/local-projection.mjs": { "lines": 97, - "branches": 95, + "branches": 96, "functions": 98, "statements": 97 }, "workspace/local-video.mjs": { "lines": 98, - "branches": 93, + "branches": 94, "functions": 98, "statements": 98 },