# Verification scope

The browser evidence in browser-qa.json preserves the first seven passing control checks from the first QA run, then records the remaining checks from a resumed run. The initial test harness checked that the dialog had disappeared immediately after Escape; the component was still completing its exit animation. The harness was corrected to wait for the dialog to become hidden. This was a harness timing defect, not a product or permission failure. Previously passing evidence was retained rather than rerun.

Numerical mechanics tests: four test groups pass, including all cylinders at 0.5° increments across 720° (11,528 cylinder-angle cases), correct firing TDCs, shared journal alignment, axis constraints, 360° piston pose repetition, 720° valve/stroke repetition, ideal valve windows, and deterministic tour endpoints.

Rendered-coordinate checks use the actual Three.js world journal centers and piston/rod positions at 0°, 37°, 90°, 180°, 270°, 359°, 360°, 450°, 540°, 630°, 719°, and 720°. Maximum rod-length error: 8.88e-16. Maximum journal XY mismatch: 2.05e-15. Maximum piston/rod mismatch: 0. Maximum valve-axis drift: 4.45e-16. Maximum pushrod-length error: 8.87e-10 normalized units.

The independent within-task mechanics review initially found sideways valve-stem motion. That report is retained as initial-mechanics-review.md, followed by a product fix: fixed valve axes plus sliding rocker pads. The passing browser geometry checks above measure the fixed implementation.

After control/numeric QA, final visual corrections were limited to a dedicated phone SVG diagram, assembled rocker-cover containment, and extra framing for exploded view. The final production build passed. The affected final desktop, phone, assembled and exploded captures were visually inspected. These changes do not alter crank, rod, valve timing or control logic; the earlier passing evidence remains applicable.

The movie is a deterministic capture of the actual browser app, not an AI-generated picture or a standalone animation that bypasses its mechanics. 540 frames at 30 fps were encoded to an 18-second H.264 MP4. Both the encoded file metadata and representative decoded frames were checked. The GLB header, length and JSON mesh/node structure were inspected; this is not a comprehensive independent glTF conformance certification.

Phone QA was viewport emulation in real Chrome on macOS, not a physical-phone hardware test. No JavaScript application exceptions occurred. Optional native WebMCP registration could not be exercised because the browser lacks document.modelContext.
