continue. FIX ROUND 5, two small items, design already decided, just implement. Skip the player screenshot test (player.html is an iframe of index.html, I checked it myself); finish whatever you are doing in one step and start. Keep your reasoning short: one edit, run the measuring tool, look at crops, next edit. THREE fresh independent reviewers checked your round-4 final.mp4 frame by frame. Good news first: the callout leaders are CONFIRMED FIXED by all three (white line with dark halo, exactly vertical drop, clearly visible dot on the intake head, plug tip, exhaust head and between the valves, dot follows the heads as they open). Piston, springs, mirrored valve trains, ports, flash, dial ticks, SPARK / ONE LAP spacing: all hold, no regressions. The HUD truncates: SPEC.md line 80 says floor, so that stays and is not a defect (say so once in REPORT.md). TWO things remain: 1. DIAL NEEDLE STILL READS AS A LINE THROUGH THE LABELS. In index.html (lines ~306-307) the IN text (x 1649, y 212) and EX text (x 1527, y 298) are already drawn after the needle group, but the needle still shows through the gaps between the letters and across them: at t=1.96 and 17.96 (IN), t=10.98 and 27.0 (EX). Fix: give both text elements a dark halo so the needle disappears behind the lettering. On each of the two text elements add these attributes: paint-order="stroke" stroke="#0E1116" stroke-width="10" stroke-linejoin="round". Keep their fill colours and keep them AFTER the pointerG group in the SVG. The page background is #0E1116, so a gap in the needle around the letters is correct and expected. Do not change anything else on the dial. 2. LAST-FRAME CAPTION IS DIM. SPEC.md line 124-125: the last frame is fully shown (opacity 1 at t=32). Today caption 8 (cap8, 'Both valves are open together...') fades OUT in the last 0.25 s, so the held final frame (t=31.967) shows it at about 10 percent. Fix in the fade code (index.html lines ~510-511 and ~631): make the cap8 entry held, the same way callD2 is: fadeCaps entry for k=8 gets held: true, and the loop passes it: for (const f of fadeCaps) fade(f.el, f.win, f.held). That keeps the fade-IN at t=28 to 28.25 and removes the fade-out. Do not touch caps 1-7. CHECK: node measure_engine.mjs --times 5.5,7.33,8,11.5,16,21.5,24,27.5,31 --shots workspace/meas5 All checks must still pass. Then BEFORE rendering back up final.mp4 to final_v4.mp4 and review.mp4 to review_v4.mp4 (do not overwrite the older backups). Render review.mp4 and final.mp4. Then extract and LOOK at these frames from the new final.mp4 (ffmpeg -ss T, crop the dial 330x260 at 1420,130 and scale 4x with flags=neighbor): t=1.96, 10.98, 17.96, 27.0 for the dial: the needle must not be visible through the IN / EX letters (a break in the needle around the letters is correct). And t=31.95 and t=28.1 for the left column: the caption text at 31.95 must be as bright as the one at t=28.5 or t=29, and at 28.1 it must still be fading in. THEN: ffprobe gate (h264, 1 video stream, 1920x1080, 30/1, 32.0 s +/-0.05, no audio); append round 5 to REVIEW.md, REPORT.md, NOTES.md. Final report: per item fixed or not fixed with the evidence, the gate, files written. One more thing to mention honestly in REPORT.md as accepted and not fixed: at about t=11.5-12.5 and 27.5-28.4 the exhaust leader's vertical touches the first red particle of the exhaust trail by about 3 px (cosmetic).