---
slug: aim-where-your-misses-pay
passed: 2026-11-02
by: ccr-81332fb3-8nrbtu wave, one independent agent on oversight/claims-pass.md (pre-deploy; reader check on local copies with AW_DIR; every source-record entry read against its kept copy and live source)
checked: 119
confirmed: 73
wrong: 0
unverifiable: 0
observed: 46
stale: 0
---
# Claims pass: Aim Where Your Misses Pay
Live page: not deployed yet; step 2 skipped.
Reader check (pre-deploy, local copies): `AW_DIR=
node verify-aim-where-your-misses-pay.mjs`, run in a second empty directory holding only the verifier: exit 0, 298 passed, 0 failed (9.5 s). With the kept sources and the frontmatter mirrored beside it, so the in-repository checks also run: exit 0, 366 passed, 0 failed. `--mutate`: 7 planted figures, all caught (419 passed, 8 failed, exit 1, as designed). Step 6: five headline figures changed one at a time in sentences of a scratch copy, the rest left true (16.9 to 16.8 in "just past σ = 16.9 mm"; 19.82 to 19.84 at the switch; 209 to 208 mm; "In 10 of the 200" to 11; 14.93 to 14.95): each run failed (exit 1, 296 passed, 2 failed). The page prints no transcript of its own verifier. Mutation sweep (`node wave-sweep.mjs aim-where-your-misses-pay --jobs 2`): aim-where-your-misses-pay: 633 mutated, 633 caught, 0 survived (text 0, meta 0, year 0).
`assay/sources.mjs aim-where-your-misses-pay --online`: 108 entries, offline sound; 8 FOUND, 48 in the repository, 52 UNREADABLE (50 PDFs the tool does not read; 2, cran-grid and cran-author, an HTTP 503 from CRAN), plus a DOI MATCH for cite-sig and a "DOI MISMATCH" for cite-tpt that is the tool misreading "Ryan J." (Crossref has Ryan J., as the page does). The UNREADABLE ones were read by downloading each source afresh on 2026-11-02 (the paper and the Significance article from stat.cmu.edu, the WDF 2018 rules PDF, whose bytes match the kept md5, arXiv 2011.11031, the CRAN tarball, which curl fetched with HTTP 200), converting with pdftotext, and finding every excerpt in both the live text and the kept copy (all 108 found). All 17 quotations on the page are character for character in the live text. The Significance PDF carries a hidden earlier draft, so its three pages were rendered with pdftoppm and the quoted words read on the visible page; the paper's Figure 4 was rendered to check which way author 2's ellipse leans. Independent recomputation: a ray-from-the-aim integrator, an FFT raster global search, a rebuild of the darts 1.0 grid and an App. A.2 EM, all written for this pass in Python and kept outside the repository (the scratch scripts named below, in /tmp/claude-0/-home-user-Artificial-Wasteland/bb727bf8-61a8-5b0c-9312-348d724897c9/scratchpad/claims/aim-where-your-misses-pay/scripts/), sharing no code with engine.mjs or the verifier.
## Claims
- CONFIRMED | on the idealised board of a 2011 statistics paper | https://www.stat.cmu.edu/~ryantibs/papers/darts.pdf | App. A.1: "Here are the relevant dartboard measurements, taken from the British Darts Organization playing rules [Ald06]. ... Center to outer double wire 170": one radius per wire, so wires of no width. Statistics paper in JRSS A 174(1), 2011 (live Crossref: print 2011, online 2010-07-28)
- OBSERVED | Treble 20 pays best only for throwers whose darts land tightly around the aim: on the idealised board of a 2011 statistics paper, with a spread (a standard deviation) under about 16.9 mm. | recreated: claims-pass ray integrator (scratch indep.py: integrates outward along 20,000 rays from the aim, exact in the radius, sharing no method with engine.mjs or the verifier) with its own Nelder-Mead | best near T20 minus best near T19: +0.000045 at 16.9065 mm, +0.000001 at 16.9069, -0.000067 at 16.9075; the switch is 16.907 mm, under about 16.9 as the dek says (path.json 16.9069)
- OBSERVED | Past that, the best aim jumps once, to treble 19, then edges toward the 7 and slides through the 7, 16 and 8 to a spot just left of and below the centre. | recreated: claims-pass FFT raster global search (scratch globalsearch.py and pathscan.py: 0.5 mm area-averaged board) | every 0.1 mm step from 3 to 100 mm: the raster best moves more than 10 mm once, 16.9 to 17.0 (T20 to T19); T19 at 17.5, outer edge of T19 at 20 and 25 with the clock angle growing toward the 7, single 7 at 40, single 16 at 50, single 8 at 60 to 80, single bull at 100 at (-10.79, -2.72) by my polish (path.json -10.73, -2.77): left of and below the centre
- OBSERVED | If they scatter more, past a spread of about 16.9 millimetres, you score more on average by aiming at the treble 19 at the lower left, and wilder throwers still should aim further in, toward the middle. | recreated: claims-pass ray integrator (scratch indep.py: integrates outward along 20,000 rays from the aim, exact in the radius, sharing no method with engine.mjs or the verifier) with its own Nelder-Mead | switch at 16.907 mm; just past it the best aim is in T19 at (-35.0, -99.5), x and y both negative (lower left); then outer edge of T19, then inward through the 7, 16 and 8 to the single bull
- CONFIRMED | If your darts land very close to where you aim, aim at the treble 20, the best-paying spot. | https://www.stat.cmu.edu/~ryantibs/papers/darts.pdf | Figure 1: "the striped region is called “triple 20” (T20), worth 60 points"; sec. 2.1: "For σ = 0 (perfect accuracy), the optimal µ lies in the T20, the highest scoring region of the board."
- MINOR | The page works out the best spot for any spread, and can estimate your spread from your scores alone. | public/strata/aim-where-your-misses-pay/app.mjs; recreated by a claims-pass run of its readout code against engine.mjs (scratch readouts.mjs) and an own EM (scratch emcheck.py) | the scatter readout gives a best spot at all 991 slider settings and the score-only EM runs in the browser (my own App. A.2 EM on the same seeded darts matches path.json to 0.01 mm). But the slider and path.json run from 1 to 100 mm only, and for an estimate past 100 mm the app says “That is past the end of the board above, which stops at 100 mm.”, so “for any spread” is wider than the page
- CONFIRMED | In the model this page uses, from a 2011 paper by Ryan Tibshirani, Andrew Price and Jonathan Taylor, the error is a bell curve (a Gaussian) with the same spread, σ, across and up and down. | https://www.stat.cmu.edu/~ryantibs/papers/darts.pdf | sec. 2: "Z = µ + ε, ε ∼ N (0, σ 2 I), where I is the 2 × 2 identity matrix ... σ 2 controls the size of the error ε"
- CONFIRMED | from a 2011 paper by Ryan Tibshirani, Andrew Price and Jonathan Taylor | https://www.stat.cmu.edu/~ryantibs/darts/ | "Ryan Tibshirani, Andrew Price and Jonathan Taylor"; live Crossref for 10.1111/j.1467-985X.2010.00651.x lists the same three
- CONFIRMED | from a 2011 paper by Ryan Tibshirani, Andrew Price and Jonathan Taylor | https://www.stat.cmu.edu/~ryantibs/darts/ | "(published in JRSS Series A, Vol. 174, No. 1, 213-226, 2011)"; live Crossref: published-print 2011, published-online 2010-07-28
- CONFIRMED | Tibshirani's magazine version of the paper describes it as | https://www.stat.cmu.edu/~ryantibs/darts/ | "A more casual version: “Don't Try for the Triple 20” (published in Significance magazine, Vol. 8, No. 1, 46-48, 2011)"; the article calls the JRSS paper "a separate paper ... published to coincide with this article"
- CONFIRMED | Tibshirani's magazine version of the paper describes it as the distance from the target within which 39% of his shots land | https://www.stat.cmu.edu/~ryantibs/papers/darts-signif.pdf | p. 48, read on the rendered page (the PDF also carries a hidden draft, so the visible text was checked): "it is the distance from the target within which 39% of his shots land." Verbatim; "it" is s, the standard deviation
- CONFIRMED | exactly 1 − e−1/2, which is 39.35% | public/strata/aim-where-your-misses-pay/engine.mjs | WITHIN = 1 - exp(-0.5) = 0.393469, redone: 39.35%
- CONFIRMED | Half of all darts land within 1.177σ, and one in ten lands further out than 2.146σ. | public/strata/aim-where-your-misses-pay/engine.mjs | miss distance is Rayleigh, P(R > r) = exp(-r^2/2 sigma^2): median sqrt(2 ln 2) = 1.17741 sigma, 10% tail sqrt(2 ln 10) = 2.14597 sigma (redone)
- CONFIRMED | it is the only 60 on the board | https://www.stat.cmu.edu/~ryantibs/papers/darts.pdf | Figure 1: T20 "worth 60 points"; a treble scores 3n, so 60 only for n = 20; doubles reach 40 and the bull 50 (redone)
- OBSERVED | By σ = 16.5 mm the best aim has crept up and slightly to the left | recreated: claims-pass ray integrator (scratch indep.py: integrates outward along 20,000 rays from the aim, exact in the radius, sharing no method with engine.mjs or the verifier) with its own Nelder-Mead | best at 5 mm (-0.18, 102.88), at 16.5 mm (-1.90, 106.19): up 3.3 mm and 1.7 mm further left
- OBSERVED | It jumps across the board into treble 19, near the middle of the segment; by σ = 20 mm it sits on the outer edge of treble 19, and by 25 mm it leans toward the 7. | recreated: claims-pass ray integrator (scratch indep.py: integrates outward along 20,000 rays from the aim, exact in the radius, sharing no method with engine.mjs or the verifier) with its own Nelder-Mead | tie-side T19 aim (-35.02, -99.52), r 105.5, clock 199.4: 1.4 degrees from the middle of the 19 (198); 20 mm: (-36.52, -100.56), r 106.98 to 107.03 between my polish and path.json, on the outer wire; 25 mm: clock 201.46, 3.5 degrees toward the 7 (border at 207)
- OBSERVED | From there it slides inward and round: across the single 7 (at σ = 40 mm), the single 16 (50 mm) and the single 8 (60 to 80 mm) | recreated: claims-pass FFT raster global search (scratch globalsearch.py and pathscan.py: 0.5 mm area-averaged board) | raster and polish: 40 mm (-53.29, -69.27) inner single 7; 50 mm (-49.0, -41.4) inner single 16; 60, 64.6, 80 mm inner single 8; path.json is inner single 8 at every step from 59.4 to 82.6 mm
- CONFIRMED | In the paper's words, it curls into the center of the board, stopping a bit lower than and the left of the bullseye at σ = 100. | https://www.stat.cmu.edu/~ryantibs/papers/darts.pdf | Figure 5 caption: "From here it curls into the center of the board, stopping a bit lower than and the left of the bullseye at σ = 100." Verbatim, including the paper's own "and the left of"
- OBSERVED | There is one jump. | recreated: recount of public/strata/aim-where-your-misses-pay/path.json (python) and the claims-pass raster scan (scratch pathscan.py) | path.json: one step over 3 mm (16.9 to 17.0, 208.7 mm), next largest 0.33 mm; my raster: one move over 10 mm, at the same step
- OBSERVED | At the other end, below about 2.5 mm, there is no single best point. | recreated: arithmetic on public/strata/aim-where-your-misses-pay/path.json band and a side-wire tail bound | band widths 11.88 deg at 1 mm, 2.71 at 2.5, 0.45 at 3.0; at 1 mm the arc ends are 5.52 and 5.48 mm from the 20/1 and 20/5 wires, where the loss Phi(-5.52) x 57 and Phi(-5.48) x 45 is about 1e-6 each, as a millionth-of-a-point band requires. The readout still says there is no single best point at 2.6 to 2.9 mm (arc 2.1 to 0.7 deg); the prose covers this with "by 3 mm it is under half a degree"
- CONFIRMED | Two of the paper's three authors each threw 100 darts at the bull, and from the scores alone it estimated σ = 64.6 mm for author 1 and 26.9 mm for author 2. | https://www.stat.cmu.edu/~ryantibs/papers/darts.pdf | sec. 2.2: "Author 1 and author 2 each threw 100 darts at the bullseye and recorded their scores, from which we estimate their standard deviations to be σ1 = 64.6 and σ2 = 26.9"; sec. 2.1: "Here σ is given in millimeters"; three authors on p. 1
- CONFIRMED | Its advice: author 1 should be aiming at the S8, close to the bullseye. Meanwhile, author 2 (who is a fairly skilled darts player) should be aiming at the T19. | https://www.stat.cmu.edu/~ryantibs/papers/darts.pdf | sec. 2.2, verbatim: "author 1 should be aiming at the S8, close to the bullseye. Meanwhile, author 2 (who is a fairly skilled darts player) should be aiming at the T19."
- CONFIRMED | Tibshirani's article in Significance works three cases. | https://www.stat.cmu.edu/~ryantibs/papers/darts-signif.pdf | p. 47 (rendered page): s = 5mm, s = 25mm and s = 60mm, each with its best aim and average
- CONFIRMED | For σ = 25 mm the best aim earns him or her an average of 15.8 points per throw, and aiming at the triple 20 gives only 14.9 | https://www.stat.cmu.edu/~ryantibs/papers/darts-signif.pdf | p. 47, verbatim on the rendered page: "should aim at the triple 19. This earns him or her an average of 15.8 points per throw, and aiming at the triple 20 gives only 14.9"; "This" is the best aim
- CONFIRMED | For σ = 60 mm, aiming low and left of the centre gives 12.4 points per throw where treble 20 gives 10.2 | https://www.stat.cmu.edu/~ryantibs/papers/darts-signif.pdf | p. 47: "aiming somewhat lower than and to the left of the board’s centre gives the highest expected score, 12.4 points per throw"
- CONFIRMED | where treble 20 gives 10.2 | https://www.stat.cmu.edu/~ryantibs/papers/darts-signif.pdf | p. 47: "aiming at the triple 20 would cost this player more than two points each throw, yielding only 10.2 points."
- CONFIRMED | For σ = 5 mm, treble 20 gives an average of 42.9 points per throw | https://www.stat.cmu.edu/~ryantibs/papers/darts-signif.pdf | p. 47: "the best place to aim is indeed the triple 20; by aiming there the player can achieve an average of 42.9 points per throw."
- CONFIRMED | The paper evaluates the score and the bell curve on a grid, say, on a millimeter scale across the dartboard | https://www.stat.cmu.edu/~ryantibs/papers/darts.pdf | sec. 2.1, verbatim: "make two 2-dimensional arrays of the Gaussian density and the score function evaluated, say, on a millimeter scale across the dartboard"
- CONFIRMED | Tibshirani's R package, darts 1.0, samples the score at each whole millimetre of a 681 by 681 grid and convolves it with a bell curve sampled at the same points | https://cran.r-project.org/src/contrib/Archive/darts/darts_1.0.tar.gz | R/maxscore.R: "A=as.integer(numeric(681*681))", src/darts.c "Score((double)(i-340),(double)(j-340),R,S)", simpleExpScores "b1 = 1/sqrt(2*pi*s)*exp(-(-340:340)^2/(2*s))" with s "The marginal variance" (man page), convolved by FFT
- CONFIRMED | Tibshirani's R package, darts 1.0 | https://cran.r-project.org/src/contrib/Archive/darts/darts_1.0.tar.gz | DESCRIPTION: "Version: 1.0", "Author: Ryan Tibshirani"; the CRAN archive directory lists only darts_1.0.tar.gz
- CONFIRMED | The paper puts the switch at a different σ: The path appears to be continuous except for a single jump at σ = 16.4. | https://www.stat.cmu.edu/~ryantibs/papers/darts.pdf | sec. 4.2, verbatim: "The path appears to be continuous except for a single jump at σ = 16.4."
- CONFIRMED | A treble ring is 8 mm across | https://www.stat.cmu.edu/~ryantibs/papers/darts.pdf | App. A.1: inner triple wire 99, outer triple wire 107: 8 mm; WDF 2018 4.01: "For conventional wire boards, measured inside to inside = 8.0 mm"
- CONFIRMED | The paper takes its measurements from the BDO's playing rules, citing a 2006 web page: the treble from 99 to 107 mm from the centre, the double from 162 to 170 mm, the bulls out to 6.35 and 15.9 mm, all with wires of no width. | https://www.stat.cmu.edu/~ryantibs/papers/darts.pdf | App. A.1: "taken from the British Darts Organization playing rules [Ald06]": DB 6.35, SB 15.9, triple 99 and 107, double 162 and 170, one radius per wire; [Ald06] dated 2006
- CONFIRMED | citing a 2006 web page | https://www.stat.cmu.edu/~ryantibs/papers/darts.pdf | References: "[Ald06] D. Alderman. BDO playing rules for the sport of darts. http://www.bdodarts.com/play_rules.htm, 2006."
- CONFIRMED | The World Darts Federation's current rules (the 20th edition, of 28 February 2018) | https://www.dartswdf.com/rules | fetched 2026-11-02: the only Playing and Tournament Rules listed is "WDF Playing And Tournament Rules – 28/02/2018 rev 20"; its current link (dartswdf.com/storage/uploads/...) serves the same bytes as the record's URL (md5 dea1384a4282ca7b48b4f8048ef189bb); title page "Twentieth revised edition"
- CONFIRMED | give 107.4 mm to the outside edge of the treble wire, 170.0 mm to the outside edge of the double wire, rings 8.0 mm wide inside to inside, bulls 12.7 and 31.8 mm across inside, and wire from 1.27 to 1.85 mm thick | https://site.dartswdf.com/wp-content/uploads/2020/05/2018-02-28_WDF_Playing_and_Tournament_Rules_rev20.pdf | 4.01: "Outside edge of ‘Treble’ wire to Centre Bull 107.4 mm", "Outside edge of “Double” wire to Centre Bull 170.0 mm", "inside to inside = 8.0 mm", "“Bull” inside diameter 12.7 mm", "“25” ring inside diameter 31.8 mm", wire "maximum 1.85 mm or 1.27 mm minimum"
- CONFIRMED | a dart scores on the side of the wire it enters | https://site.dartswdf.com/wp-content/uploads/2020/05/2018-02-28_WDF_Playing_and_Tournament_Rules_rev20.pdf | 3.03: "The score is counted from the side of the segment wire in which the point of the dart enters or touches the face of the dartboard."
- CONFIRMED | (The federation's rules of 1995 gave the paper's 107.0 mm for the treble.) | https://www.cyberdarts.com/zwdf/wdfrules.html | "Outside edge of 'Treble' ring to centre = 107.0 mm." in the "Third revised edition ... 1st March 1995" (a secondary host, as the page says)
- CONFIRMED | The paper says so: It is important to note that we are not proposing an optimal strategy for a specific darts game. | https://www.stat.cmu.edu/~ryantibs/papers/darts.pdf | sec. 1, verbatim: "It is important to note that we are not proposing an optimal strategy for a specific darts game."
- CONFIRMED | In 501, as the magazine article puts it, players count down from 501 points to zero and are penalised for going negative | https://www.stat.cmu.edu/~ryantibs/papers/darts-signif.pdf | p. 46 (rendered page), verbatim: "(in “501”, for example, players count down from 501 points to zero and are penalised for going negative)"
- CONFIRMED | under the federation's rules a leg is won only by finishing on a double (or the bull) | https://site.dartswdf.com/wp-content/uploads/2020/05/2018-02-28_WDF_Playing_and_Tournament_Rules_rev20.pdf | 2.02: "to finish, and win, the player must land a dart in the double (Double Ring or Bull) of the number equal to one half of the remaining score."
- CONFIRMED | Points per dart is the right target only while every point is worth the same to you; on the way out it is the wrong one. | https://www.stat.cmu.edu/~ryantibs/papers/darts.pdf | sec. 1: "In some settings, a player may need to aim at a specific region and it may not make sense for the player to try to maximize his or her score."; WDF 2.02 (double finish) and 2.05 (bust rule) make the finish such a setting
- CONFIRMED | You could measure where 100 darts land, but, as the magazine article says of that job, This is a pretty dull task! | https://www.stat.cmu.edu/~ryantibs/papers/darts-signif.pdf | p. 48 (rendered page), verbatim: "This is a pretty dull task!", said of measuring 100 throws with a ruler
- CONFIRMED | You could measure where 100 darts land | https://www.stat.cmu.edu/~ryantibs/papers/darts-signif.pdf | p. 48: "no player would want to get out a ruler and measure the distances between 100 of his throws and the centre of the dartboard."
- CONFIRMED | The paper uses only the scores of darts all aimed at the double bull. | https://www.stat.cmu.edu/~ryantibs/papers/darts.pdf | sec. 1: "estimate your variance based on the scores of as few as 50 throws aimed at the double bullseye"; sec. 2.2: "aiming each time at the center of the board"
- CONFIRMED | A score of 20 says the dart is somewhere in one of three pieces of board (the single 20 inside or outside the treble, or the double 10) | https://www.stat.cmu.edu/~ryantibs/papers/darts.pdf | App. A.2: "the score Xi = 20 can be achieved by landing in 3 such regions: the two S20 chunks and the D10."
- CONFIRMED | The EM algorithm takes a guess at σ, works out how far from the centre each dart probably was given its score, re-estimates σ from those distances, and repeats until σ stops moving. | https://www.stat.cmu.edu/~ryantibs/papers/darts.pdf | sec. 2.2: "begins with an initial estimate σ02, and then repeats the following two steps until convergence": E-step E(Z2x + Z2y given the score), M-step σ2 = C/2n
- CONFIRMED | With the aim at the centre each step has a closed form (the paper's Appendix A.2) | https://www.stat.cmu.edu/~ryantibs/papers/darts.pdf | sec. 1: "the simple model we consider allows a closed-form solution"; App. A.2 gives the E-step in closed form for darts aimed at the centre
- CONFIRMED | the paper asks for 50 or more | https://www.stat.cmu.edu/~ryantibs/papers/darts.pdf | sec. 1: "aim 50 or so throws at the bullseye"; sec. 2.2: "it seems a reasonable task to record at least n = 50 scores"
- CONFIRMED | As in the paper's own test, the two are close. | https://www.stat.cmu.edu/~ryantibs/papers/darts.pdf | sec. 2.2: "The two estimates are very close for all values of σ."; Figure 3: n = 50, "For each σ we actually repeated this 10 times"
- CONFIRMED | The paper suggests that it is common for most players to have a smaller variance in the horizontal direction than in the vertical one | https://www.stat.cmu.edu/~ryantibs/papers/darts.pdf | sec. 3, verbatim
- CONFIRMED | and adds that a right-handed player may possess a different “tilt” to his or her error distribution (defined by the sign of the correlation) than a left-handed player | https://www.stat.cmu.edu/~ryantibs/papers/darts.pdf | sec. 3, verbatim, curly quotes around tilt as printed
- CONFIRMED | From author 2's 100 scores it fits σx = 17.9 and σy = 39.1 | https://www.stat.cmu.edu/~ryantibs/papers/darts.pdf | sec. 3.2: "we estimate his x and y standard deviations to be σx = 17.9 and σy = 39.1" (subscripts set inline); sqrt(320.5) = 17.90, sqrt(1530.9) = 39.13
- CONFIRMED | From author 2's 100 scores it fits | https://www.stat.cmu.edu/~ryantibs/papers/darts.pdf | sec. 3.2: "From their same set of n = 100 scores (as before), we estimate the covariances for author 1 and author 2"
- CONFIRMED | Its printed covariance also carries a correlation of −0.22 | https://www.stat.cmu.edu/~ryantibs/papers/darts.pdf | sec. 3.2: Σ2 = [[320.5, -154.2], [-154.2, 1530.9]]; -154.2 / sqrt(320.5 x 1530.9) = -0.2201 (redone)
- CONFIRMED | in the paper's words, the new heatmap tells him to aim slightly above the T20 | https://www.stat.cmu.edu/~ryantibs/papers/darts.pdf | sec. 3.2, verbatim: "the new heatmap tells him to aim slightly above the T20"; Figure 4 (p. 9, rendered) puts the blue dot just above the T20
- CONFIRMED | The round model of the same thrower had said treble 19. | https://www.stat.cmu.edu/~ryantibs/papers/darts.pdf | sec. 3.2: "The corresponding heatmap instructs him to aim at the T19."
- CONFIRMED | The paper gives no uncertainty for its fitted ellipse. | https://www.stat.cmu.edu/~ryantibs/papers/darts.pdf | full live text searched for standard error, confidence, interval, uncertain, bootstrap: the only standard error is Figure 3's (the sigma simulation); sec. 3.2 prints Σ1 and Σ2 as bare matrices
- CONFIRMED | where the paper used importance sampling | https://www.stat.cmu.edu/~ryantibs/papers/darts.pdf | sec. 3.1: "The expectations above can no longer be done in closed form as in the simple Gaussian case. Hence we use importance sampling [Liu08]"
- CONFIRMED | Fitting professionals' darts, Haugh and Wang write that A simple model such as (1) will not be sufficiently rich for modeling the skills of professional darts players, because these players tend to focus on (and practice throwing at) specific parts of the darts board | https://arxiv.org/pdf/2011.11031 | sec. 2, verbatim; the live PDF is still v2 (21 Feb 2022)
- CONFIRMED | Fitting professionals' darts, Haugh and Wang write that | https://arxiv.org/pdf/2011.11031 | abstract: "a novel data-set based on darts matches that were played by the top 16 professional players in the world during the 2019 season"; sec. 2: Sigma depending on the target "is indeed what we observe in the data-set"
- CONFIRMED | Independent darts, thrown by a player already warmed up: the paper's section 4.2 raises both. | https://www.stat.cmu.edu/~ryantibs/papers/darts.pdf | sec. 4.2 "Non-constant variance and non-independence of throws": "it is important that a player is sufficiently “warmed up”" and "the assumption that dart throws are independent seems unlikely to be true in reality"
- CONFIRMED | The paper also fits a skewed version for both of its throwers and reports that the size of the skew is not large enough to produce heatmaps that differ significantly from Figure 4 | https://www.stat.cmu.edu/~ryantibs/papers/darts.pdf | sec. 4.1, verbatim
- CONFIRMED | The paper also fits a skewed version for both of its throwers | https://www.stat.cmu.edu/~ryantibs/papers/darts.pdf | sec. 4.1: "using the scores of their n = 100 throws aimed at the board’s center. As expected, the skewness parameter α is negative in both cases"
- CONFIRMED | The paper argues it from the throwing motion; its evidence is the fits for its two throwers. | https://www.stat.cmu.edu/~ryantibs/papers/darts.pdf | sec. 3: "since the throwing motion is up-and-down with no (intentional) lateral component"; the paper fits only its two authors (secs. 2.2, 3.2), both with the smaller variance across (1820.6 against 4702.2; 320.5 against 1530.9), and cites no other data on how common it is
- CONFIRMED | on the paper's board every dart scores the region its point is in | https://www.stat.cmu.edu/~ryantibs/papers/darts.pdf | sec. 2: "Let Z be a random variable denoting the 2-dimensional position of a dart throw, and let s(Z) denote the score": the score depends only on where the point lands; engine.mjs score() is the same rule
- CONFIRMED | Ryan J. Tibshirani, Andrew Price and Jonathan Taylor, A Statistician Plays Darts, Journal of the Royal Statistical Society Series A 174(1) (2011), 213–226, doi:10.1111/j.1467-985X.2010.00651.x. | https://api.crossref.org/works/10.1111/j.1467-985X.2010.00651.x | live (2026-11-02): Ryan J. Tibshirani, Andrew Price, Jonathan Taylor; Journal of the Royal Statistical Society Series A: Statistics in Society 174(1) 213-226, print 2011. The --online "DOI MISMATCH" is the tool reading the middle initial; the page gives Ryan J. as Crossref does
- CONFIRMED | Ryan Tibshirani, Don't Try for the Triple 20, Significance 8(1) (March 2011), 46–48, doi:10.1111/j.1740-9713.2011.00483.x. | https://api.crossref.org/works/10.1111/j.1740-9713.2011.00483.x | live (2026-11-02): "Don't Try for the Triple 20", Ryan Tibshirani, Significance 8(1) 46-48, print 2011-03-01; the article's pages read march2011
- CONFIRMED | © The Royal Statistical Society | https://www.stat.cmu.edu/~ryantibs/papers/darts-signif.pdf | p. 46 foot, rendered: "© 2011 The Royal Statistical Society" (the record says fetched 2026-11-02; the kept copy says 2026-11-01)
- CONFIRMED | Ryan Tibshirani, darts: Statistical Tools to Analyze Your Darts Game, R package version 1.0 (2011, archived on CRAN), GPL. | https://cran.r-project.org/src/contrib/Archive/darts/darts_1.0.tar.gz | DESCRIPTION: "Title: Statistical Tools to Analyze Your Darts Game", "Version: 1.0", "Date: 2011-01-17", "License: GPL"; https://cran.r-project.org/web/packages/darts/index.html (2026-11-02): "Archived on 2022-03-06 as check problems were not corrected in time."
- CONFIRMED | World Darts Federation, Playing and Tournament Rules, 20th revised edition, 28 February 2018 | https://site.dartswdf.com/wp-content/uploads/2020/05/2018-02-28_WDF_Playing_and_Tournament_Rules_rev20.pdf | title page "Twentieth revised edition"; footer "28 February 2018"; rules 2.02, 2.05, 3.03 and 4.01 are where the page says
- CONFIRMED | WDF Playing and Tournament Rules, third revised edition, 1 March 1995, in the CyberDarts archive | https://www.cyberdarts.com/zwdf/wdfrules.html | "Third revised edition Dave Alderman, Coordinator 1st March 1995" on a CyberDarts page, not the WDF's
- CONFIRMED | Martin B. Haugh and Chun Wang, Play Like the Pros? Solving the Game of Darts as a Dynamic Zero-Sum Game, arXiv:2011.11031v2 (2022) | https://arxiv.org/pdf/2011.11031 | first page of the live PDF: "arXiv:2011.11031v2 [stat.AP] 21 Feb 2022", Martin B. Haugh, Chun Wang, the title as cited (the record says fetched 2026-11-02; the kept copy says 2026-11-01)
- CONFIRMED | About 39% of your darts land within 25.0 mm of where you aim, and half within 29.4 mm. | public/strata/aim-where-your-misses-pay/engine.mjs | 25 x 1.17741 = 29.44, so 29.4 (redone); app.mjs writes the same sentence at load, checked at 20 slider settings
- OBSERVED | σ = 25.0 mm: aim on the outer edge of treble 19, 0.3 mm outside its wire, leaning toward the 7. That scores 15.80 points per dart; the middle of treble 20 scores 14.93, so aiming at the middle of treble 20 costs you 0.86 points per dart. | recreated: claims-pass ray integrator (scratch indep.py: integrates outward along 20,000 rays from the aim, exact in the radius, sharing no method with engine.mjs or the verifier) with its own Nelder-Mead | best 15.7964 at (-39.27, -99.87): r 107.31 (0.3 mm outside the 107 mm wire), clock 201.5 (toward the 7); middle of T20 14.9319; 15.7964 - 14.9319 = 0.8645, so 0.86; the app.mjs code builds exactly this sentence at load
- OBSERVED | it is 1.9 mm left of the centre line and 106.2 mm up, against 103 mm for the middle of the treble | recreated: claims-pass ray integrator (scratch indep.py: integrates outward along 20,000 rays from the aim, exact in the radius, sharing no method with engine.mjs or the verifier) with its own Nelder-Mead | 16.5 mm: (-1.90, 106.19), 20.1973; 103 is (99 + 107)/2
- OBSERVED | Then, just past σ = 16.9 mm, it leaves. | recreated: claims-pass ray integrator (scratch indep.py: integrates outward along 20,000 rays from the aim, exact in the radius, sharing no method with engine.mjs or the verifier) with its own Nelder-Mead | tie at 16.9069 mm; the app readout at 16.9 says treble 20 (19.83) and at 17.0 treble 19
- OBSERVED | until at σ = 100 mm it is in the single bull, 10.7 mm left of the centre and 2.8 mm below it | recreated: claims-pass ray integrator (scratch indep.py: integrates outward along 20,000 rays from the aim, exact in the radius, sharing no method with engine.mjs or the verifier) with its own Nelder-Mead | 100 mm: path.json (-10.73, -2.77) in the single bull, worth 9.6521 by my integrator; my polish lands at (-10.79, -2.72), the same to the page's 0.1 mm after rounding 10.7 and 2.8 (a flat maximum)
- OBSERVED | Stepping σ by 0.1 mm from 1 to 100 mm, the best aim never moves more than 3 mm from one step to the next except once, between 16.9 and 17.0 mm, when it moves 209 mm. | recreated: recount of public/strata/aim-where-your-misses-pay/path.json (python) | 991 steps; one move over 3 mm, 16.9 to 17.0, 208.7 mm (so 209); every other move at most 0.33 mm
- OBSERVED | At the switch itself, σ = 16.907 mm, the two aims are worth the same, 19.82 points per dart: the advice jumps, the score does not. | recreated: claims-pass ray integrator (scratch indep.py: integrates outward along 20,000 rays from the aim, exact in the radius, sharing no method with engine.mjs or the verifier) with its own Nelder-Mead | both sides 19.81916 at 16.9069 mm; 19.82
- OBSERVED | At σ = 16.88 mm the treble 20 side is ahead by 0.003 points; at 16.94 mm the treble 19 side is ahead by 0.004. | recreated: claims-pass ray integrator (scratch indep.py: integrates outward along 20,000 rays from the aim, exact in the radius, sharing no method with engine.mjs or the verifier) with its own Nelder-Mead | 16.88 mm: 19.843581 against 19.840614, T20 ahead by 0.0030; 16.94 mm: 19.789229 against 19.792871, T19 ahead by 0.0036, so 0.004
- OBSERVED | at σ = 1 mm the arc is 11.9° of the ring (21.4 mm long), at 2.5 mm it is 2.7° (4.9 mm), and by 3 mm it is under half a degree | recreated: arithmetic on public/strata/aim-where-your-misses-pay/path.json band | 1.0 mm: 11.88 deg x 102.995 mm = 21.36 mm; 2.5 mm: 2.71 deg, 4.87 mm; 3.0 mm: 0.45 deg
- OBSERVED | The best aim on the paper's board, found by a search of the whole board and integrated exactly | recreated: claims-pass ray integrator (scratch indep.py: integrates outward along 20,000 rays from the aim, exact in the radius, sharing no method with engine.mjs or the verifier) with its own Nelder-Mead | all 14 rows: at the middle of T20 and at the stored best my integrator agrees with path.json to 4 decimals; costs redone (e.g. 100 mm: 9.6521 - 7.5250 = 2.13; 7.525038 rounds to 7.53); distances confirmed by tight polish (50 mm r 64.12, 60 mm 41.70, 64.6 mm 33.12); regions confirmed by my raster global search
- OBSERVED | The exact integral agrees, and puts author 2's aim 4.55° from the border between treble 19 and treble 7. | recreated: claims-pass ray integrator (scratch indep.py: integrates outward along 20,000 rays from the aim, exact in the radius, sharing no method with engine.mjs or the verifier) with its own Nelder-Mead | 26.9 mm: my polish (-40.49, -97.97), clock 202.45; the 19/7 border is at 207, so 4.55 degrees
- OBSERVED | the exact integral gives 15.80 and 14.93 | recreated: claims-pass ray integrator (scratch indep.py: integrates outward along 20,000 rays from the aim, exact in the radius, sharing no method with engine.mjs or the verifier) with its own Nelder-Mead | 15.7964 and 14.9319
- OBSERVED | the exact integral gives 12.43 and 10.25 | recreated: claims-pass ray integrator (scratch indep.py: integrates outward along 20,000 rays from the aim, exact in the radius, sharing no method with engine.mjs or the verifier) with its own Nelder-Mead | 12.4297 and 10.2520
- OBSERVED | the exact integral gives 43.02 at the best point and 43.01 at the middle of treble 20 | recreated: claims-pass ray integrator (scratch indep.py: integrates outward along 20,000 rays from the aim, exact in the radius, sharing no method with engine.mjs or the verifier) with its own Nelder-Mead | 43.0165 at (-0.18, 102.88) and 43.0112 at the middle of T20
- OBSERVED | Two of those printed figures are not the exact integral's: the 42.9, which it puts at 43.0, and the 10.2, which it puts at 10.3. | recreated: claims-pass ray integrator (scratch indep.py: integrates outward along 20,000 rays from the aim, exact in the radius, sharing no method with engine.mjs or the verifier) with its own Nelder-Mead | 43.0165 and 43.0112 both round to 43.0, 10.2520 to 10.3; the printed 15.8, 14.9 and 12.4 are the exact integral's to one decimal (15.7964, 14.9319, 12.4297)
- OBSERVED | Both are the grid's. | recreated: claims-pass rebuild of the darts 1.0 grid (scratch grid.py: score at whole mm on 681 x 681, Gaussian sampled at the same offsets, aims at whole mm) | grid: 42.9389 at (0, 103) for 5 mm and 10.2417 at the middle of T20 for 60 mm, which print as 42.9 and 10.2
- OBSERVED | Rebuilt here from that description, the grid gives 42.94 at σ = 5 mm | recreated: claims-pass rebuild of the darts 1.0 grid (scratch grid.py: score at whole mm on 681 x 681, Gaussian sampled at the same offsets, aims at whole mm) | 42.9389 at sigma 5 mm, best whole-mm aim (0, 103)
- OBSERVED | and 10.24 at the middle of treble 20 at σ = 60 mm | recreated: claims-pass rebuild of the darts 1.0 grid (scratch grid.py: score at whole mm on 681 x 681, Gaussian sampled at the same offsets, aims at whole mm) | 10.2417 at (0, 103) for sigma 60 mm (grid best (-38, -19), 12.4407)
- MINOR | At σ = 16.3 mm its best whole-millimetre aim is still beside treble 20, at (−2, 106), ahead of the best near treble 19 by 0.0010 points per dart; at σ = 16.4 mm the treble 19 side, at (−35, −99), is ahead by 0.0103. | public/strata/aim-where-your-misses-pay/path.json (jump.raster); recreated by the claims-pass grid rebuild (scratch grid.py) | figures confirmed: 16.3 mm best upper aim (-2, 106) 20.338148 against the lower (-35, -99) 20.337127, ahead by 0.0010; 16.4 mm (-35, -99) 20.251897 against (-2, 106) 20.241612, ahead by 0.0103. But (-2, 106) is r = 106.02, inside treble 20 (99 to 107), not "beside" it; the app's grid readout says "in treble 20"
- OBSERVED | Integrate the same board exactly and the switch moves to 16.9 mm. | recreated: claims-pass ray integrator (scratch indep.py: integrates outward along 20,000 rays from the aim, exact in the radius, sharing no method with engine.mjs or the verifier) with its own Nelder-Mead | exact switch 16.907 mm against the grid's 16.3 to 16.4
- OBSERVED | Between σ = 16.4 and 16.9 mm the two aims are never more than 0.06 points per dart apart. | recreated: claims-pass ray integrator (scratch indep.py: integrates outward along 20,000 rays from the aim, exact in the radius, sharing no method with engine.mjs or the verifier) with its own Nelder-Mead | best near T20 minus best near T19: 0.0573 at 16.4 mm, 0.0458 at 16.5, 0.0030 at 16.88, 0 at the tie
- OBSERVED | Read the wires as having no width on their outside edges and the switch comes at 16.98 mm. | recreated: claims-pass ray integrator (scratch indep.py: integrates outward along 20,000 rays from the aim, exact in the radius, sharing no method with engine.mjs or the verifier) with its own Nelder-Mead | radii 6.35, 15.9, 99.4, 107.4, 162, 170: T20 side ahead by 0.00054 at 16.9713, T19 side by 0.00055 at 16.9813: 16.98
- OBSERVED | Put the scoring line down the middle of a 1.27 mm wire and it comes at 16.68 mm; of a 1.85 mm wire, 16.56 mm. | recreated: claims-pass ray integrator (scratch indep.py: integrates outward along 20,000 rays from the aim, exact in the radius, sharing no method with engine.mjs or the verifier) with its own Nelder-Mead | wire 1.27 mm (radii 6.985 ... 169.365): sign change between 16.679 and 16.689, so 16.68; wire 1.85 mm: between 16.555 and 16.565, so 16.56. Radii rederived by hand from 4.01: middle of a wire of width w is 107.4 - w/2, 107.4 - w - 8 - w/2, 6.35 + w/2 and so on
- OBSERVED | For a conventional wire board at its nominal dimensions, then, about 16.6 to 17.0 mm. | recreated: claims-pass ray integrator (scratch indep.py: integrates outward along 20,000 rays from the aim, exact in the radius, sharing no method with engine.mjs or the verifier) with its own Nelder-Mead | 16.56, 16.68 and 16.98 mm give about 16.6 to 17.0 to the nearest tenth. The record's note says "rounded outward to a tenth", which would give 16.5
- CONFIRMED | without the tolerances the rules allow, and not the strip-material boards they also allow | https://site.dartswdf.com/wp-content/uploads/2020/05/2018-02-28_WDF_Playing_and_Tournament_Rules_rev20.pdf | 4.01: "For boards manufactured with strip material measured apex to apex = 10.00 mm +/- 0.2 mm"; every dimension carries a tolerance, e.g. 107.4 mm +/- 0.2 mm
- OBSERVED | For each σ below, ten sessions of 50 simulated darts (seeded, so the same every time), with σ estimated from where the darts landed and from their scores alone. | recreated: claims-pass EM (scratch emcheck.py: App. A.2 closed form in python) on the darts from engine.mjs throwDarts with the build's seeds 1000 x sigma + rep | my scorer agrees with the engine on all 10,000 darts; per-sigma means match path.json to 0.01 mm and the page's seven rows (e.g. 50 mm: 48.99 from positions, 47.23 from scores). The page shows 7 of the 20 sigmas computed; the widest gap, at 45 mm (46.15 against 42.52), is not shown
- OBSERVED | an ellipse with deviations of 39.4 mm along its long axis and 17.4 mm along its short one, the long axis 7.1° from vertical with its top to the left | recreated: claims-pass eigen-decomposition of the printed Sigma2 (numpy, scratch aniso.py) | deviations 39.373 and 17.354 mm, long axis 7.147 deg from vertical, top at negative x (left). The paper's own Figure 4 (p. 9, rendered) shows author 2's ellipse leaning top-left, so the sign convention is the paper's
- OBSERVED | For that ellipse the best aim is just above treble 20, 1.8 mm left of the centre line and 110.6 mm up, worth 16.05 points per dart | recreated: claims-pass anisotropic ray integrator (scratch aniso.py: rays in the whitened coordinates) | best (-1.76, 110.64), r 110.65, 16.0505; best near T19 15.7915; middle of T20 15.94
- OBSERVED | The best aim goes back to treble 19's outer edge, 16.185 points per dart there against 16.112 for the best spot near treble 20. | recreated: claims-pass anisotropic ray integrator (scratch aniso.py) | mirror best (-36.97, -100.68), r 107.25 (outer edge of T19), 16.18500; best near T20 (-2.36, 110.72) 16.11178
- OBSERVED | Author 2's fitted ellipse, long axis 7.1° from vertical with its top to the left: aim just above treble 20, 3.6 mm beyond its outer wire, worth 16.05 points per dart. | recreated: claims-pass run of app.mjs readout code (scratch readouts.mjs) and scratch aniso.py | r 110.64 - 107 = 3.6 mm; 16.05; the app.mjs code builds exactly this sentence at load
- OBSERVED | Turned a degree at a time, the ellipse keeps the best aim in the 20's segment, just above the treble, only between 5° with its top to the right and 16° with its top to the left. | recreated: claims-pass raster at every whole degree (scratch tiltsweep.py) and exact polish at the boundaries (scratch tiltedge.py) | the 20's segment from -5 to 16 degrees in both; every stored aim in that run is outer single 20, r 110.5 to 111.2 (just above the treble)
- OBSERVED | In 10 of the 200 sessions the fitted correlation came out positive, so 100 scores mostly do settle which way the ellipse leans. | recreated: recount of public/strata/aim-where-your-misses-pay/path.json em.bootstrap (python) | 10 of 200 rows have rho > 0; the 20,000 simulated darts pooled have covariance [[325.9, -163.1], [-163.1, 1555.8]] against Sigma2, within 2 standard errors. That the fits are EM fixed points is the verifier's check (section E), not redone here
- OBSERVED | rebuilds the paper's 1 mm grid in its own code and finds its jump between 16.3 and 16.4 mm, and its 42.94 and 10.24 | recreated: AW_DIR= node verify-aim-where-your-misses-pay.mjs (exit 0, 298 passed; 366 with the kept copies mirrored) | section C passes; my own grid gives 16.3 T20 side, 16.4 T19 side, 42.9389, 10.2417
- OBSERVED | The fitted ellipse's best aim stayed in the 20's segment in 133 sessions, and went to treble 19's segment in 43, the 8's in 12, the 11's in 8 and the 7's in 4: one session in three would have sent author 2 somewhere else. | recreated: recount of public/strata/aim-where-your-misses-pay/path.json em.bootstrap (python) | segments of the best aims: 20 in 133, 19 in 43, 8 in 12, 11 in 8, 7 in 4 (sum 200); 67 of 200 leave the 20, one in three
- OBSERVED | Lean it further to the left and the aim moves to the 19's segment (17° to 20°; at 20° it is right on the wire it shares with the 7), then the 7's (21° to 79°); lean it to the right and it moves to the 19's (6° to 51°), then the 16's (52° to 74°); lying nearly flat, from 75° to the right through to 80° to the left, it is in the 19's again. | recreated: claims-pass raster at every whole degree (scratch tiltsweep.py) and exact polish at the boundaries (scratch tiltedge.py) | runs 19 (-90 to -75), 16 (-74 to -52), 19 (-51 to -6), 20 (-5 to 16), 19 (17 to 20), 7 (21 to 79), 19 (80 to 89). The raster disagreed at -75, 20 and 80; exact polish settles all three as the page has them (-75: T19 14.76037 against T16 14.75792; 80: clock 206.84, inside the 19; 20: clock 207.00, on the 19/7 wire)
- OBSERVED | Switch the board above to the paper's grid and drag through 16.4 mm to watch its jump. | recreated: claims-pass run of app.mjs grid-mode readout code against engine.mjs paperSurface (scratch readouts.mjs) | at 16.3 mm: "(−2, 106), in treble 20, worth 20.34"; at 16.4 mm: "(−35, −99), in treble 19, worth 20.25": the jump is there
- CONFIRMED | The white ellipse is drawn around the best aim and holds 39% of darts. | public/strata/aim-where-your-misses-pay/app.mjs | B.ellipse draws semi-axes P.major and P.minor (one standard deviation) centred on the best aim; a bivariate normal's one-sigma ellipse holds 1 - e^(-1/2) = 39.35%
- OBSERVED | a sample at each whole millimetre stands for a square millimetre that may straddle a wire: enough to move a near-tie by half a millimetre of σ | recreated: claims-pass grid rebuild and ray integrator (scratch grid.py, indep.py) | same board, grid switch between 16.3 and 16.4 mm, exact switch 16.907 mm: a shift of about half a millimetre
- CONFIRMED | The method needs more than a handful: the paper suggests at least 50. (app.mjs, shown for fewer than 10 scores) | https://www.stat.cmu.edu/~ryantibs/papers/darts.pdf | sec. 2.2: "it seems a reasonable task to record at least n = 50 scores"
- OBSERVED | Every one of those darts hit the double bull, so the estimate runs down to zero ... missed the board, so the estimate has no upper limit (app.mjs messages) | recreated: node, engine.mjs emIso on 50 scores of 50 and on 50 scores of 0 | all 50: sigma falls to 1.22 and still falling, not converged; all 0: sigma 8500, not converged. The app prints these messages instead of a figure
- OBSERVED | One program recomputes them in a different way ... It downloads this page and its files (index.html, engine.mjs, path.json, quotes.json) ... With --mutate it plants wrong figures in a copy of the page and must fail. | recreated: AW_DIR= node verify-aim-where-your-misses-pay.mjs (exit 0, 298 passed; 366 with the kept copies mirrored) | FILES = index.html, engine.mjs, path.json, quotes.json; the strip integrator calls nothing in engine.mjs (engine.mjs is used for comparison and for the seeded sampler under test); --mutate plants 7 figures, all caught: 419 passed, 8 failed, exit 1 as designed
- CONFIRMED | Each was fetched on 2026-11-01. Quotations are verbatim. | research/aim-where-your-misses-pay/sources/ | every kept copy's header says fetched 2026-11-01; all 17 quotations are character for character in the live text (pdftotext of the live PDFs), and the Significance ones on the rendered visible pages
- OBSERVED | Apart from the dates, each figure on this page is either computed or quoted from a named source. | recreated: AW_DIR= node verify-aim-where-your-misses-pay.mjs (exit 0, 298 passed; 366 with the kept copies mirrored) | the verifier's residual sweep passes; step 6 (five sentence figures changed by hand) and the mutation sweep (summary above) found no unasserted figure
- OBSERVED | The readouts app.mjs builds at the other presets (5, 16.9, 26.9, 60, 64.6 mm; upright, leaning further left, the mirror image) | recreated: claims-pass run of app.mjs readout code against engine.mjs (scratch readouts.mjs) | each agrees with the table and prose: 26.9 mm "in treble 19, leaning toward the 7, 15.30 ... 14.36"; 64.6 mm "inner single 8, 33.1 mm from the centre"; 25 deg "in treble 7"; mirror "outer edge of treble 19 ... 16.18"; every slider step 1 to 100 mm gives a sane sentence
- CONFIRMED | relates: dartboard-order (why the twenty numbers sit where they do and how hard a near miss is punished), look-then-leap (when to stop looking), the-squares-that-werent-aimed (counting hits to test whether anything was aimed) | src/content/strata/dartboard-order.md | all three exist; their deks say what the notes say (dartboard-order: "arranged to punish a near miss"; look-then-leap: the secretary problem; the-squares-that-werent-aimed: Clarke's V-1 hit counts against a Poisson model)
- MINOR | Three printed numbers, and where they come from (the h2 over the Significance comparison) | https://www.stat.cmu.edu/~ryantibs/papers/darts-signif.pdf | p. 47 prints five figures in its three cases: 42.9 (sigma 5), 15.8 and 14.9 (sigma 25), 12.4 and 10.2 (sigma 60); the section under the heading treats all five, and the 10.2 it singles out is not one of three. The cases are three; the numbers are five
## Findings
- [fixed] MINOR: the page placed the grid's best aim at σ = 16.3 mm "beside treble 20", but that aim is inside the ring. Re-checked by the round-2 fixer on 2026-11-02: (−2, 106) is √11240 = 106.02 mm from the centre and 1.08° left of vertical, so inside treble 20 (99 to 107 mm on the paper's board, App. A.1; the 20's segment spans 9° either side of vertical), and the app's own grid readout at 16.3 mm says "(−2, 106), in treble 20". The finding holds; the sentence's figures were right and are unchanged. The page now says "At σ = 16.3 mm its best whole-millimetre aim is still in treble 20, at (−2, 106)" (public/strata/aim-where-your-misses-pay/index.html:149); the sentence the verifier asserts (verify-aim-where-your-misses-pay.mjs:732) and the d-grid164 claim in assay/sources/aim-where-your-misses-pay.json carry the same words, and the verifier's section C now also asserts that its own grid's best aims are in treble 20 at 16.3 mm (r 106.02) and in treble 19 at 16.4 mm (r 105.00), so the word "in" is checked, not only the figures. The header comment of the verifier, which said "beside" for both, now says "in".
- [fixed] MINOR: a source-record note described the rounding wrongly (the page itself was right). Recomputed: the three readings are 16.5602, 16.684 and 16.9763 mm (path.json jump.wdf); to the nearest tenth they give 16.6 and 17.0, the page's "about 16.6 to 17.0 mm", while rounding 16.5602 outward would give 16.5. The d-wdfrange note in assay/sources/aim-where-your-misses-pay.json now reads "the three readings, 16.56 to 16.98, rounded to the nearest tenth". The page is unchanged.
- [fixed] MINOR: a heading counted the magazine's printed numbers as three; it prints five. Re-read in the kept copy (research/aim-where-your-misses-pay/sources/tibshirani2011-significance-excerpts.txt, lines 101 to 114) and the live PDF (https://www.stat.cmu.edu/~ryantibs/papers/darts-signif.pdf, p. 47): "s = 5mm ... an average of 42.9 points per throw", "25mm ... an average of 15.8 points per throw, and aiming at the triple 20 gives only 14.9", "60mm ... 12.4 points per throw ... yielding only 10.2 points": three cases, five figures. The h2 at index.html:144 now reads "Three printed cases, and where their numbers come from". The heading carries no figure, so the verifier needed no new assertion; its comment over that block now says "three printed cases, five printed numbers".
- [fixed] MINOR: the plain placard promised more range than the instruments have. Re-checked: the σ slider is `min="1" max="100" step="0.1"` (index.html:91), path.json and the table run from 1 to 100 mm, and app.mjs answers a score-only estimate above 100 mm with "That is past the end of the board above, which stops at 100 mm." The frontmatter plain now says "The page works out the best spot for each spread on its slider, and can estimate your spread from your scores alone." (411 characters, three sentences, no new figure), and the plain-em entry of the source record carries the same words, its note adding that the slider runs from 1 to 100 mm in 0.1 mm steps and reads each best spot from path.json.
## Fixer's note (round 2, 2026-11-02)
All four findings were re-checked before they were fixed, and all four held. None was declined. Each was checked against the kept copy, the live Significance PDF (fetched again, HTTP 200, p. 47 has the five figures), the page's own slider and app.mjs, and the arithmetic of path.json. No figure on the page changed. Two words changed on the page ("beside" to "in"; the heading), and one clause in the plain placard. The source record (three entries) and the verifier followed them, and the verifier gained one assertion (the grid's best aims are inside treble 20 and treble 19). The claim lines above are the pass's own words and verdicts, unchanged (119 lines: 70 CONFIRMED, 46 OBSERVED, 3 MINOR counted as confirmed). After the fix: node verify-aim-where-your-misses-pay.mjs, exit 0, 367 passed, 0 failed; --mutate, exit 1, 488 passed, 8 failed (as designed); with every kind of house block, the beacon and the pulse added to a copy, exit 0, 369 passed, 0 failed, and red again (2 failed) with 19.82 planted as 19.86; the mutation sweep, aim-where-your-misses-pay: 633 mutated, 633 caught, 0 survived (text 0, meta 0, year 0); check-sources sound (108 claims); check-stratum-frontmatter, check-plain-placards and check-em-dashes clean for this layer; Playwright at 390, 768 and 1440 px, 0 console errors, 0 overflow, 0 external requests, with the title, h1 and canonical this layer's own.
- [fixed] (the directing instance, at landing; the verifier only, no claim on the page changed): the check for the heading "One jump" matched `One jump
` literally, and the house's scripts/seo-heads.mjs adds an anchor id to every h2 when a layer lands, so the check failed on the landed page (368 passed, 1 failed). verify-aim-where-your-misses-pay.mjs:693 now accepts attributes on the h2; it passes on the page with `id="one-jump"` and still fails when the heading text is changed (366 passed, 1 failed).