The Score Bug Is the Point ID
That clip up top: a 21-second, 16-shot Djokovic–Ruud rally from the Roland Garros final. The court probe had shattered it into four fragments — the tick marks on the timeline strip are where the old cuts fell, and each fragment charted 1–3 shots. The score-bug pass proved all four share one unbroken digit plateau, reassembled them, and the same frozen chart loop got 12/16 as a single point.
Two test matches were never going to be enough, so the benchmark went looking for trouble: the 2023 Roland Garros final and the 2024 Wimbledon final. Four matches, three surfaces, both tours, ~108 new human-charted points, $0. The trouble it found was upstream of every metric on the board — and the fix had been on screen since frame one.
The benchmark goes adversarial
t3 is clay: Djokovic–Ruud, RG world feed, 34 minutes of extended
highlights. The M1 homography recipe died three ways before it fit.
"Blue court hull" has no blue, and the obvious clay-hue mask swallowed
the frame — sunlit crowd skin is the same hue as clay. The median
plate smears lines into the dirt, because this camera pans 16 px and
dusted white-on-orange doesn't survive what white-on-blue did. And the
far baseline is simply buried: a V200 line on V~195 clay that no mask
can find. What replaced it — ECC-stabilized plates, a thin-bright
tophat line filter, verticals labeled by symmetry (courtside Perrier
crates put 20 Hough segments inside the hull; junk is asymmetric,
court lines aren't), and a fit basis that swaps the buried baseline
for the far service line — lands sub-pixel: held-out sidelines at
0.4/0.5 px, center line 0.2 px.
t4 is grass and WTA: Krejcikova–Paolini, Wimbledon feed. Grass exposed the line scorer instead — a wrong-but-self-consistent line assignment fit its own intersections to rms 1.7 px. Truth needed a different question: score every candidate by how well all nine model lines land on the observed mask. Impostors strand the lines they didn't use.
Candidate vetting had its own catch: the MCP metadata's hand column claims Vondrousova — the most famous left-hander in the recent women's game — is right-handed. After cv-11, handedness gets looked up, never assumed, and the chart's own metadata doesn't get to be the source.
Segment ≠ point
The scorecards came back mediocre, and the reason was upstream of every number: the thing the pipeline calls a segment is not a point, and each broadcaster breaks the equation in the opposite direction. t3 charted 3.9 shots against MCP's 8.9 — the RG editor fragments long clay rallies across multiple camera segments, some of which the staging pass wrote off as replays. t4 charted 8.1 against 7.2 — Wimbledon never cuts between points, so a fifteen-second segment holds two or three of them and the chart strings them into one twelve-shot monster.
Which means Montréal's tidy cut-per-point editing had been doing segmentation work nobody noticed and nobody paid for. That's the second load-bearing accident of this project — SAM's track death was secretly the end-of-point detector, and now the home broadcaster's edit grammar was secretly the point segmenter. Both went undiscovered until something changed underneath them.
The score bug is the point ID
The staging entry ended "point boundaries need their own detector." The detector was on screen the whole time. The score bug is a screen-space overlay — camera pan never moves it — static within a point, and it changes exactly at point boundaries. So the bug region is the point ID: merge adjacent segments whose bug never changes, split segments where it changes mid-segment, and read the plateau timeline as the point sequence.
Validated on pixels before writing a line of the pass: same-point bug crops differ by ≤ 0.005 changed-pixel fraction, different-score crops by ≥ 0.033 — a 6× margin. The traps were real, all found by looking: the RG bug grows a column per completed set, sliding the digits ~27 px right; the set-1 tiebreak banner pushes the whole bug down 14 px and drifts; and a plateau reference frozen on a fade-in frame lets compression noise fake a score change 100 frames later, while a rolling reference glides straight through the real update animation. The working design: frozen reference per plateau, anchored on the median of a settling window.
And the replay hypothesis is refuted — that's the finding, stated against my own staging entry. Every duplicate-score group turned out to be fragments of one rally or distinct deuce points (a 40-40 plateau sits between the "duplicate" 40-AD clips: three different deuce cycles, and plateau order carries what the value alone cannot). The one cadence suspect was acquitted by physics: image-space ball gravity from the WASB tracks is unimodal across all 116 clips, and a 2× slow-mo would sit ~4× low. There is no probe-passing slow-motion replay in either reel. The suspect got a fair trial and the ball's own parabola testified for the defense.
Alignment went from 59/68 and 36/48 to 59/59 and 49/49 — every extracted point matched to its human-charted twin, with the reel's chronology resolving the deuce recurrences the score alone can't tell apart.
The scorecard, both directions
Where the merges had footage, they paid: the 16-shot rally up top charts 12/16 as one clip after its four fragments managed 1–3 each; another clay point charts 12/12 exact. t3 rally length ±1 went 34% → 41%, t4 15/36 → 21/49, and t4 serve zone jumped 1/4 → 8/10 because the splits put the serve at the clip start where the gates can see it. Honest losses on the same table: t3 server end fell 10/59 → 7/58 — merged clips start mid-rally, so alternation votes alone — and t3 endings dipped 11/34 → 9/30.
What's left fails for named reasons. t3's remaining shot gap is mostly unrecoverable: the RG editor cuts into long rallies, so the early shots were never broadcast — the bug proves those clips are single points, but it cannot conjure footage. And t4 still over-counts 19 clips that are provably single points: Wimbledon's dead time lives inside the point's own plateau, the dead ball stays inside the court-y envelope on grass, and the freeze-#3 gate can't touch it. That's the t1 dead-ball coda in a new costume — a chart-level fix, not a segmentation one, and it's next.
Session cost: $0.00. Project total: ~$4.15 of $9. The benchmark is now four matches on three surfaces across both tours, and the point IDs come from the one witness every broadcaster agrees to keep on screen.