PREDECESSOR BACKEND EVALUATION (before version 1.4 product-label updates).
For the final version 1.4 kit, also read VALIDATION_1_4.txt.
The previous byte-for-byte player comparison predates the version-label changes.

SCVeamer PDFium prototype validation - 2026-10-24 (Japan time)
Environment: Linux x86_64, Python 3.12.14; isolated venv without fitz/pymupdf.
Pinned dependencies: pypdf 6.10.0, pypdfium2 5.14.0, Pillow 12.3.0.
PDFium: 156.0.8076.0. Browser: headless Chromium 156.0.8078.47.

Source archives: exact SHA-256 matches to the handoff; see REFERENCE_SOURCES.json.
Both editions preserve input TeX/style/talk.pdf and original player/game assets.
Sample configurations set image_width=2560 to match the regenerated bundled HTML.
Settings and fallback workspaces use distinct prototype identifiers.

Tests: 17 per edition, all pass with no PyMuPDF installed.
The original 15 test intentions remain; two additional tests check selective
annotation removal and exclusion of future off-page overlay text from alt text.

Structural comparisons: starter 6 frames/9 states; template 9/13; Day1 46/76.
JA at 1920 and 2560; EN at 2560: all functional deck fields and titles match.
Day1 schedule: start 14:55, duration 135 minutes, finish 17:10.
All 8 fixed-game placements/examples/languages/formula settings match.
Game source payload hashes and player assets match the originals.
Handouts: starter 6 pages, Day1 46 pages; page selections, decoded content streams,
geometry and retained URI annotations match expected source pages.
All 46 handout pages in both editions render identically to selected source pages
at 512-pixel-wide pixel comparison. Formula/font/page content remains vector PDF.
Template handout stays disabled as in its source configuration.

One fresh Python process per conversion; elapsed time covers build_html only.
Handout generation and dependency setup are excluded from HTML conversion time.
These are single-run observations on this host, not universal performance promises.
ja/svg/starter: 1404708 bytes; 0.055 seconds; process maxRSS 144.7 MiB.
ja/svg/template: 2463976 bytes; 0.087 seconds; process maxRSS 144.6 MiB.
ja/svg/day1: 18517849 bytes; 1.232 seconds; process maxRSS 224.6 MiB.
ja/png1920/starter: 1807772 bytes; 0.857 seconds; process maxRSS 57.1 MiB.
ja/png1920/template: 3091787 bytes; 1.313 seconds; process maxRSS 61.2 MiB.
ja/png1920/day1: 23364660 bytes; 9.360 seconds; process maxRSS 222.4 MiB.
ja/png2560/starter: 2137864 bytes; 1.264 seconds; process maxRSS 75.8 MiB.
ja/png2560/template: 3592659 bytes; 1.822 seconds; process maxRSS 76.6 MiB.
ja/png2560/day1: 28860204 bytes; 14.407 seconds; process maxRSS 258.4 MiB.
en/svg/starter: 1186339 bytes; 0.049 seconds; process maxRSS 144.7 MiB.
en/svg/template: 1990988 bytes; 0.079 seconds; process maxRSS 144.6 MiB.
en/svg/day1: 15035631 bytes; 0.989 seconds; process maxRSS 204.5 MiB.
en/png2560/starter: 2059896 bytes; 1.331 seconds; process maxRSS 77.3 MiB.
en/png2560/template: 3325433 bytes; 1.920 seconds; process maxRSS 78.4 MiB.
en/png2560/day1: 28444952 bytes; 13.283 seconds; process maxRSS 253.3 MiB.

Offline browser: file://, network disabled, viewport1920x1080, DPR1.
JA SVG, JA PNG1920, JA PNG2560, EN PNG2560: each passed103 checks, all76 unique states.
Checks cover actual controls, game-state and iframe identity retention, schedule,
theme and final-overlay print fallback. Zero external requests/page/console errors.
PSS is summed across browser processes; JS heap is separately measured.
PSS snapshots are not peak measurements. Automation Node/Python is not included.
ja-svg: after-visit PSS 670.2 MiB; navigation+frame p95 17.8ms; image decode p95 0.1ms.
ja-png1920: after-visit PSS 1011.8 MiB; navigation+frame p95 46.4ms; image decode p95 45.1ms.
ja-png2560: after-visit PSS 1048.5 MiB; navigation+frame p95 57.3ms; image decode p95 34.9ms.
en-png2560: after-visit PSS 1042.4 MiB; navigation+frame p95 47.0ms; image decode p95 33.6ms.

One bounded-player experiment: 103 checks pass, after-visit PSS1048.5->1025.3MiB;
initial/afterprint memory and navigation did not improve consistently. NOT ADOPTED.
The supplied player remains unchanged from each original edition.

Visual QA: Japanese/English text, superscripts, bars, fractions and diagrams;
representative JA PDF pages10,27,40,57,75 and EN page40 inspected.
At a 1920px display width both PNG resolutions are legible in the inspected samples.
At a 3840px display width PNG is softer than the vector SVG;2560 improves over1920.
Actual bundled PNG dimensions are1920x1081 or2560x1441, preserving PDFium canvas sizing.
Transparent canvas preserves theme paper color where the source PDF is unpainted.

Known text-extraction limit: mathematical alternative text may map primes to0,
negation strokes to6 or proof-square glyphs to a control character. Images unaffected.
All sample titles match. Future overlay text leakage was reproduced and fixed.

NOT TESTED: Windows/Mac GUI, fresh Windows setup, PyInstaller executable, live
projector, comprehensive PDF rotation/crop/encryption/annotation coverage, and the
full TeX compilation workflow. That workflow is retained, not removed.
No general security audit or legal/organizational clearance is asserted.
The original public download and server were not changed. No new own-code MIT grant.
