How many people need to be in a room before two of them probably share a
birthday? Most people guess somewhere near 180 — half of 365. The real answer is
23. Change the room size below to draw a fresh set of birthdays, and watch
how often a match appears.
A room of 23 people · one column per day of the year
This room has a shared birthday.
Exact probability of a shared birthday
50.7%
Live simulation (0 rooms)
—
The curve below is the exact probability for every room size. It rises
shockingly fast: past 50% at 23 people, past 99% at 57, and it is
essentially certain by 70 — long before you get near 365.
P(shared birthday) vs room size
Why it feels impossible
The trick your intuition plays: you picture your own birthday and ask how many
people it takes for someone to match it. That is a different question with a much
slower answer — you'd need 253 people for a better-than-even chance someone shares
your day (the faint lower curve above). But the room doesn't care about your
birthday. It cares about every pair at once: 23 people make
23·22/2 = 253 pairs, and it only takes one of them to match. Same
number, 253 — once as people, once as pairs — and that coincidence is the whole illusion.
The check
The probability that no two of n people share a birthday is each new person
missing all the days already taken; the chance of a match is one minus that:
The exact shared-birthday probability is one minus that product, computed live in
your browser. The live simulation beside it deals out random birthdays into
thousands of rooms and shows the observed fraction with a match. Its percentage can
differ from the exact value because of sampling variation; the experiment illustrates
the formula. Offline, research/the-birthday-problem/verify.mjs
checks selected results using several methods: the product formula against a log-gamma
computation for n=1..100 (agree to <10⁻¹²), a 200,000-room Monte-Carlo at 10, 23 and
40 people (matches to <0.005), and the landmarks: 23 is the first crossing of ½
(P(22)=47.6%, P(23)=50.7%), P(57)=99.0%, P(70)=99.92%, P(366)=1 by pigeonhole,
and the "your birthday" curve crossing ½ at exactly 253. All pass.
Where this shows up
The same maths — collisions arriving near √N rather than
N — is why hash tables collide sooner than you'd expect, why the
"birthday attack" can forge a digital signature in ~2n/2 tries instead of
2n, and why coincidences in general are systematically underrated: there are far
more pairs of things than things, and a coincidence only needs one pair.
Corrections
Corrected 2026-10-14: The page said the control added people to a room one at a time. Changing the room-size slider redraws every birthday (found by the assay line, 2026-10-14).
Corrected 2026-10-14: The page said deliberately selected groups break birthday independence. Selection alone need not do so; selection based on birthdays can, such as deliberately assembling a matching pair (found by the assay line, 2026-10-14).
Corrected 2026-10-14: The nearby note said your friends have more friends than you. The friendship paradox compares network averages; it does not guarantee this for each person (found by the assay line, 2026-10-14).
Corrected 2026-10-14: The nearby relation described a die winning a tournament. The linked page is Penney's game: two players choose three-flip coin sequences and the first sequence to appear wins (found by the assay line, 2026-10-14).
Corrected 2026-10-14: The source description called ~71k a monthly count of times the question was asked. The figure is the English Wikipedia Birthday problem article's average monthly pageviews in 2025, used as a demand proxy (found by the assay line, 2026-10-14).
The claims record71 claims re-read against their sources, 14 October 2026
Written 2026-06-22. Claims re-read against their sources on 2026-10-14: 71 checked, 59 confirmed, 11 wrong, 0 unverifiable, 1 true when written and overtaken since (dated, not corrected). By the assay line (research/assay-line/queue-1014c/), Codex fixer directed by claude-assaying-boyle-1014; source record by Codex, checked by Codex.
This was the directed queue-1014c fixing pass for the birthday layer at c8289bd340. The fixer re-read the evidence for all 11 triage items, applied the supported corrections, and retained below the 59 CONFIRMED claims and pinned evidence that the Codex checker re-read in research/assay-line/queue-1014c/the-birthday-problem/N2-codex.md. Those retained lines describe that checker's source reads and probes, not a claim that the fixer repeated every historical live-site check. The layer creation log's 16-versus-14 check count is an additional MINOR finding supported by the current verifier run and the earlier checker record. The wrong count includes five WRONG and six MINOR claims; one STALE claim is separate. Correction lines and the pass date use the requested 2026-10-14 date; JSON-LD uses the actual revision date after the session rolled to 2026-10-15. Only this layer's files were edited.
Claims
WRONG [X1] Add people to a room one at a time and watch real shared birthdays appear git show c8289bd340:public/strata/the-birthday-problem/index.html (rollRoom and slider handler) : rollRoom clears the room array; the slider invokes it for the new size. Birthdays are resampled, rather than preserved while one person joins.
MINOR [X2] Every percentage on this page is that product, computed live in your browser git show c8289bd340:public/strata/the-birthday-problem/index.html (pAny and showMC) : pAny returns one minus the no-match product; showMC uses hits divided by rooms. The exact probability and observed fraction have different computations.
MINOR [X3] it converges onto the same number, which is the formula proving itself in front of you. git show c8289bd340:public/strata/the-birthday-problem/index.html (runMC) : The button requests 10,000 sampled rooms. A finite empirical fraction illustrates the formula and has sampling variation; it does not prove the formula.
MINOR [X4] checks all of it three independent ways: research/the-birthday-problem/verify.mjs : The product/log-gamma comparison covers n=1..100; Monte Carlo covers n=10,23,40. The fixed-birthday crossing and mean each have a separate calculation. The suite does not give every result three checks.
WRONG [X5] identical twins and deliberately selected groups break the independence assumption. https://data140.org/textbook/content/chapter-01/birthday-problem/ section 1.4.1 : The textbook separates independence from uniformity and mentions multiple births. Counterexample to the page: deliberately choosing fixed indices of iid birthdays before seeing any birthday preserves their independence. Selecting a matching pair by birthday can create dependence.
WRONG [X6] there your friends really do have more friends than you (the friendship paradox) https://arxiv.org/abs/1605.04470 ; public/strata/ask-a-random-friend/index.html (star and averages explanation) : The abstract expressly qualifies the friendship paradox as an average. In the linked star example the centre has four friends and each has one, disproving an individual guarantee. The correction states the network-average scope.
WRONG [X7] There a die that loses head-to-head wins the tournament; src/content/strata/always-bet-second.md (dek and plain) : The linked page describes two players naming runs of three coin flips and the first run to appear winning. It is Penney's sequence race, not a die tournament. The false sentence was in source metadata beyond the displayed teaser.
MINOR [X8] The hash page's collision finder is the birthday problem made operational: truncate SHA-256 to b bits and the first collision arrives after ≈1.25·√(2^b) inputs research/hash-function/verify.mjs (average tries-to-first-collision) ; scripts/nearby-layers.mjs (own relations take priority) : The verifier compares sum/REPS with 1.2533 times sqrt(2**bits). This approximates the mean under the uniform independent-output model; one collision time is random. The incoming note is authored by another layer, so a corrected local outgoing note now takes priority and regenerates the birthday card.
WRONG [X9] ~71k times a month https://wikimedia.org/api/rest_v1/metrics/pageviews/per-article/en.wikipedia/all-access/user/Birthday_problem/monthly/2025010100/2025123100 ; research/the-birthday-problem/wikipedia-pageviews-2025.json : The twelve 2025 monthly user pageview counts sum to 853,900 and average 71,158.33. Pageviews count visits to the article; they are not counts of searches or of questions asked.
MINOR [X10] Every number is checked three independent ways in `research/the-birthday-problem/verify.mjs` (all pass). research/the-birthday-problem/verify.mjs : Same coverage error as X4: several methods check selected results. Re-running the verifier produced 14 passed checks; no numerical assertion needed changing.
STALE [X11] "dateModified":"2026-06-22" git log -- public/strata/the-birthday-problem/index.html ; git show 2e60bcb5dd1 -- public/strata/the-birthday-problem/index.html : The publication date was also the modification date on introduction. Later HTML edits, including the 2026-10-01 og:image:alt change, left it stale. This revision sets dateModified to 2026-10-15, the session date after midnight. The expressly requested assay and correction dates remain 2026-10-14.
CONFIRMED The answer is 23: at 23 people the chance is already 50.7% https://volweb.utk.edu/~ccwiek/Links/birthday.html : [23-threshold-dek] The table explicitly gives the probability of no match: "22people 0.52430469233745" and "23people 0.49270276567602". Complements are 47.5695% and 50.7297%, so 23 is the first integer crossing.
CONFIRMED The real answer is 23. https://math.hmc.edu/funfacts/birthday-problem/ : [23-threshold-body] HMC gives "only 23 people" for the 50% threshold. Independent factorial arithmetic gives P(22)=0.4756953076625501 and P(23)=0.5072972343239854.
CONFIRMED past 99% by 57 https://math.hmc.edu/funfacts/birthday-problem/ : [57-threshold-dek] HMC gives "With 57 people" and "better than a 99 percent chance". Independent P(57)=0.9901224593411700.
CONFIRMED near-certain by 70. https://volweb.utk.edu/~ccwiek/Links/birthday.html : [70-threshold-dek] The no-match row is "70people 0.00084042403484". Its complement is 99.9159575965%, consistent with the explicitly approximate wording.
CONFIRMED The birthday problem: why just 23 people share a birthday https://math.hmc.edu/funfacts/birthday-problem/ : [23-title] Read as the threshold question answered by the dek and description, not a guarantee or a claim that all 23 share one date. HMC gives "only 23 people" at the 50% threshold.
CONFIRMED In a room of 23 people the chance two share a birthday is already 50.7%, not 1-in-16. https://volweb.utk.edu/~ccwiek/Links/birthday.html : [23-meta-probability] Source no-match value "0.49270276567602" gives 50.7297% after subtraction from one; 1/16 is 6.25%, a different quantity.
CONFIRMED It takes only 23 people for a shared birthday to be more likely than not. https://data140.org/textbook/content/chapter-01/birthday-problem/ : [23-social-description] The textbook says "With just 23 people, a match is more likely than not." Its assumptions are 365 equiprobable independent birthdays.
CONFIRMED 'someone shares YOUR birthday' is a different, far slower curve that needs 253 people https://www.cs.sjsu.edu/~stamp/CS265/SecurityEngineering/chapter5_SE/birthday.html : [specific-birthday-dek] The source fixes the observer birthday and samples N other people. Its "253 or more people" means 253 possible matches, not 253 including the observer. Independent P_you(252)=0.4991048385 and P_you(253)=0.5004771540.
CONFIRMED 23 people make exactly 253 pairs. https://math.hmc.edu/funfacts/birthday-problem/ : [pairs-dek] The cited combinatorial factor is "(n choose 2)/365". Substituting 23 gives 23*22/2=253 unordered pairs.
CONFIRMED P(n)=1−∏(365−k)/365 https://www.cs.sjsu.edu/~stamp/CS265/SecurityEngineering/chapter5_SE/birthday.html : [probability-formula-dek] The decoded source equation is "1/2 = 1 - 365/365 ⋅ 364/365 ⋅⋅⋅ (365-N+1)/365". The page body supplies the product expansion; k runs from 0 through n-1. The online NOT FOUND is an HTML-entity parsing failure, not a missing formula.
CONFIRMED the exact probability curve P(n)=1−∏(365−k)/365 cross 50% at 23 git show f5e5f84f34:public/strata/the-birthday-problem/index.html : [curve-crosses-dek] The excerpt implements "q *= (DAYS - k) / DAYS" followed by "return 1 - q". The isolated page-script probe prints 47.6% at 22 and 50.7% at 23.
CONFIRMED a live Monte-Carlo of thousands of random rooms land on the same number. git show f5e5f84f34:public/strata/the-birthday-problem/index.html : [simulation-convergence-dek] The recorded runMC code samples independent uniform day indices and counts collisions. The actual 10,000-room probe gives 49.8% versus exact 50.7%, consistent with sampling variation. Read "land on" as approximate convergence, not guaranteed identical finite-sample rounding.
CONFIRMED one column per day of the year git show f5e5f84f34:public/strata/the-birthday-problem/index.html : [room-one-column] The code divides the drawing width by "DAYS" and uses "var DAYS = 365;". Each birthday index has one column position.
CONFIRMED This room has a shared birthday. git show f5e5f84f34:public/strata/the-birthday-problem/index.html : [initial-room-verdict] The static text is a startup placeholder. Startup executes "rollRoom(); fit(); updateStats();"; updateStats branches on "hasCollision(room)" and replaces it with the appropriate verdict. The deterministic probe started with no match and took the no-match branch.
CONFIRMED Simulate 10,000 rooms git show f5e5f84f34:public/strata/the-birthday-problem/index.html : [simulation-button] The click handler calls "runMC(10000)". Running the pinned inline script with DOM/canvas stubs produced "total":10000 and "(10,000 rooms)".
CONFIRMED The curve below is the exact probability for every room size. git show f5e5f84f34:public/strata/the-birthday-problem/index.html : [curve-every-size] The plotted interval is explicitly bounded by "NMAX = 80" and the slider by min=1, max=80. The loop evaluates pAny at every integer shown. The wording is read within that displayed domain.
CONFIRMED 50% at 23 people https://math.hmc.edu/funfacts/birthday-problem/ : [23-curve-landmark] Source threshold 23 is supported by the 22/23 complement calculation. The surrounding page sentence says "past" 50%, so it does not claim exactly 50.000%.
CONFIRMED essentially certain by 70 https://volweb.utk.edu/~ccwiek/Links/birthday.html : [70-curve-landmark] The source no-match value "0.00084042403484" leaves approximately 0.084% without a match. This is near-certainty, not an asserted guarantee.
CONFIRMED The trick your intuition plays: you picture your own birthday and ask how many people it takes for someone to match it. https://math.hmc.edu/funfacts/birthday-problem/ : [intuition-substitution] The HMC explanation contrasts "one particular person" with "all pairs of people", exactly the question substitution described here. This source supports the explanatory mechanism, not a measured count of guesses near 180.
CONFIRMED you'd need 253 people for a better-than-even chance someone shares your day https://www.cs.sjsu.edu/~stamp/CS265/SecurityEngineering/chapter5_SE/birthday.html : [specific-birthday-body] The source uses a fixed external birthday and N candidate matches. "253 or more people" is the threshold for that sampling convention; 254 would be the total if the observer also occupied the room.
CONFIRMED the faint lower curve above git show f5e5f84f34:public/strata/the-birthday-problem/index.html : [faint-curve] The faint path computes "1 - Math.pow(364 / 365, k2)" and draws it with "rgba(120,134,148,0.5)". This is the fixed-birthday curve.
CONFIRMED 23 people make 23·22/2 = 253 pairs, and it only takes one of them to match. https://math.hmc.edu/funfacts/birthday-problem/ : [pairs-body] The cited factor "(n choose 2)/365" supplies the unordered-pair count. Independently, 23*22/2=253; at least one matching pair is precisely the event being computed.
CONFIRMED The probability that no two of n people share a birthday is each new person missing all the days already taken; the chance of a match is one minus that: https://math.hmc.edu/funfacts/birthday-problem/ : [product-derivation] The HMC no-match product is "(365/365)(364/365)(363/365)(362/365)…((366-n)/365)". Its conditional factors count each new birthday avoiding all preceding distinct dates.
CONFIRMED P(n) = 1 − (365/365)·(364/365)·(363/365)···(365−n+1)/365 https://www.cs.sjsu.edu/~stamp/CS265/SecurityEngineering/chapter5_SE/birthday.html : [product-formula-body] The decoded SJSU equation includes "365/365 ⋅ 364/365 ⋅⋅⋅ (365-N+1)/365". The source-record excerpt is present after HTML entity decoding; the tool false negative is not a source error.
CONFIRMED the live simulation beside it deals out actual random birthdays into thousands of rooms git show f5e5f84f34:public/strata/the-birthday-problem/index.html : [simulation-random-rooms] The runMC excerpt calls Math.random for each birthday and records one collision flag per room. A reproduced run completes 10,000 random rooms.
CONFIRMED P(366)=1 by pigeonhole https://data140.org/textbook/content/chapter-01/birthday-problem/ : [366-pigeonhole] The textbook specifies "365 days". With 366 people and only 365 possible birthday dates, at least two occupy the same date by pigeonhole. This is a direct deduction from the stated model.
CONFIRMED 23 is the first crossing of ½ https://www.stat.purdue.edu/~dasgupta/publications/coincidence2.pdf : [first-crossing] Opened the PDF with curl and pdftotext. Section 4, printed p.20, states "the smallest n" and "is n = 23" for exceeding 50%; adjacent P(22) and P(23) were also recomputed.
CONFIRMED collisions arriving near √N rather than N https://www.cs.sjsu.edu/~stamp/CS265/SecurityEngineering/chapter5_SE/birthday.html : [collision-square-root] The source says "near √365". In the general N-bin model, the no-collision probability is approximately exp(-n(n-1)/(2N)), so the characteristic collision scale is sqrt(N). HTML root-entity decoding resolves the online PARTIAL result.
CONFIRMED why hash tables collide sooner than you'd expect https://www.cs.sjsu.edu/~stamp/CS265/SecurityEngineering/chapter5_SE/birthday.html : [hash-tables] The source excerpt concerns hash-output collisions. The same occupancy derivation applies to uniformly distributed table buckets: among k inputs there are k(k-1)/2 candidate colliding pairs. This checks the mathematical application, not a survey of what readers expect.
CONFIRMED the "birthday attack" can forge a digital signature in ~2<sup>n/2</sup> tries instead of 2<sup>n</sup> https://cacr.uwaterloo.ca/hac/about/chap9.pdf : [signature-attack] Opened the PDF manually. HAC section 9.7.1, printed p.369, gives "running time O(2m/2 )" with m the hash bitlength, and algorithm 9.92 constructs colliding legitimate/fraudulent message variants. Remark 9.93 requires obtaining a signature on a prepared variant. This supports "can" in a hashed-signature chosen-message setting; it is not a claim about arbitrary signature key lengths.
CONFIRMED The model assumes 365 equally likely birthdays. git show f5e5f84f34:public/strata/the-birthday-problem/index.html : [uniform-model] The page code declares "var DAYS = 365;" and samples Math.random times DAYS. That implements the stated uniform independent model.
CONFIRMED fewer on Dec 25 / Feb 29 https://dzs.gov.hr/news/in-croatia-2-399-persons-celebrate-their-birthday-on-29-february/1817 : [leap-birthday] The Croatia source explains February 29 occurring "every four years" and reports 2,399 people born on that date in its 2021 census. Christmas Day is covered by the ONS source from real-seasonal, as the source record acknowledges. The leap-year rule is adequate for the contemporary birthday-frequency point.
CONFIRMED any non-uniformity only makes matches more likely https://data140.org/textbook/content/chapter-01/birthday-problem/ : [nonuniformity-increases] The textbook says matching probability "will be larger than the answer we get under our assumptions". This is for independent draws over the same 365-date support; it is not a theorem about arbitrarily dependent groups.
CONFIRMED so 23 is a slight over-estimate of the threshold; the true figure is 23 or fewer. https://data140.org/textbook/content/chapter-01/birthday-problem/ : [true-threshold-upper-bound] For the stated 365-day independent model, nonuniformity cannot raise the minimum integer group size above 23. "23 or fewer" correctly allows equality; no lower real-world threshold is claimed to have been measured.
CONFIRMED Feb 29 is ignored; git show f5e5f84f34:public/strata/the-birthday-problem/index.html : [feb29-ignored] The model has "var DAYS = 365;" and indices 0 through 364. It provides no 366th leap-day category.
CONFIRMED The exact mean number of people until the first match is ≈ 24.6; https://www.stat.purdue.edu/~dasgupta/publications/coincidence2.pdf : [mean-first-match] Opened the PDF manually. Section 4.1, printed p.21, gives "E(N ) = 24.6166". An independent high-precision factorial-tail sum gives 24.61658589459885.
CONFIRMED the median crossing is 23. https://www.stat.purdue.edu/~dasgupta/publications/coincidence2.pdf : [median-first-match] The PDF gives "is n = 23" for the first probability above one half. The first-match waiting-time CDF is precisely the collision probability, so its integer median is 23.
CONFIRMED Verifier & data: research/the-birthday-problem/. git show f5e5f84f34:research/the-birthday-problem/verify.mjs : [verifier-reference] The pinned directory contains verify.mjs and curve.json. The script writes "curve.json" next to itself, so the published one-file download recreates the data too.
CONFIRMED research/the-birthday-problem/verify.mjs git show f5e5f84f34:research/the-birthday-problem/verify.mjs : [verifier-file-citation] The cited file exists at the pinned commit; the page link fetches a byte-identical 6,653-byte copy. Its printed path is accurate.
CONFIRMED This layer's check works the answer out again from scratch, independently of this page. git show f5e5f84f34:research/the-birthday-problem/verify.mjs : [placard-independent] The complete verifier imports only standard-library write/path utilities, reads no page, and recomputes the product, gamma comparison and samples. A one-file fresh-directory run passes.
CONFIRMED It can settle the finding; it cannot notice a figure that drifted on this page. git show f5e5f84f34:research/the-birthday-problem/verify.mjs : [placard-limits] The complete standalone verifier reads no page input, so it cannot detect a prose-only drift. Its own independently computed numerical checks settle the probability model. Step 6 does not apply because the verifier neither reads the page nor searches a printed transcript.
CONFIRMED It is published, and it runs on its own: one file, and Node. git show f5e5f84f34:public/checks/manifest.json : [placard-published-runnable] The exact published URL returned HTTP 200 with 6,653 bytes. In an initially empty directory, "node research/the-birthday-problem/verify.mjs" exited 0, with 14 checks passed and 0 failed, using only Node and this one downloaded file.
CONFIRMED the matching day is lit red above. git show f5e5f84f34:public/strata/the-birthday-problem/index.html : [script-match-red] drawRoom marks dates with counts at least two, then uses "#ff6b6b" for their dots. The visual code agrees with the match-specific verdict.
CONFIRMED No shared birthday in <b>this</b> particular room git show f5e5f84f34:public/strata/the-birthday-problem/index.html : [script-no-match] updateStats selects the no-match branch only when hasCollision(room) is false. The local probe checks a repeated pair as true and a distinct pair as false.
CONFIRMED here 23 people really are enough for a shared birthday. https://math.hmc.edu/funfacts/birthday-problem/ : [birthday-nearby] Read with the immediately surrounding threshold explanation: 23 makes a shared birthday more likely than not, not certain. The exact probability is 0.5072972343.
CONFIRMED In each the page lets you run the random trials and watch the counterintuitive number assert itself. git show f5e5f84f34:src/content/strata/always-bet-second.md : [nearby-simulation] The cited dek describes a live flip experiment; the linked HTML implements "Math.random()<0.5?'H':'T'" and a 10,000-round control. The birthday page has its separately checked 10,000-room sampler.
CONFIRMED An immersive layer; it renders as its own standalone page at the `href` above git show f5e5f84f34:public/strata/the-birthday-problem/index.html : [standalone-page] The pinned standalone HTML is served at the frontmatter href; curl returned HTTP 200 and matched all visible prose. The Markdown explicitly says its body is not rendered.
CONFIRMED When a check finds something false, the page says what changed and when. git show f5e5f84f34:assay/README.md : [shared-site-corrections] The supplied excerpt merely defines WRONG. The actual supporting passage is assay/README.md step 4: "add a dated `Corrected YYYY-MM-DD: ...` line". The linked Always Bet Second page includes "Corrected 2026-09-28" explaining changes. Read as the stated correction workflow, not a claim that this read-only audit has already fixed its findings.
CONFIRMED (added) half of 365 git show f5e5f84f34:public/strata/the-birthday-problem/index.html : [half-year-added] Page line 101 qualifies its estimate with "somewhere near 180". Independent division gives 365/2=182.5, which is near 180; no exact equality to 180 is asserted. The phrase is absent from the source record.
CONFIRMED (added) <meta property="og:image:width" content="1200" /> git show f5e5f84f34:public/og/the-birthday-problem.png ; https://artwaste.land/og/the-birthday-problem.png : [image-width-added] The pinned PNG IHDR width is 1200 pixels; the live image returned HTTP 200 with the same width. Metadata at page line 30 is accurate. image-dimensions.txt preserves both header readings.
CONFIRMED (added) <meta property="og:image:height" content="630" /> git show f5e5f84f34:public/og/the-birthday-problem.png ; https://artwaste.land/og/the-birthday-problem.png : [image-height-added] The pinned PNG IHDR height is 630 pixels; the live image has the same height. Metadata at page line 31 is accurate. image-dimensions.txt preserves both header readings.
MINOR [M12] all 16 checks pass (layer creation log) research/the-birthday-problem/verify.mjs ; research/assay-line/queue-1014c/the-birthday-problem/N2-codex.md : The verifier emits 14 successful checks, as the checker also recorded. The creation log count was 16; its statement that all implemented checks pass is supported.
What was done
[fixed] X1 (incremental-room-misdescription): corrected the markdown dek/body, HTML dek, metadata, JSON-LD and layer creation log to describe fresh room sampling. Added the matching WRONG correction paragraph to HTML and markdown.
[fixed] X2 (all-percentages-from-product): narrowed the HTML check and opening comment to the exact shared-birthday probability; identified the Monte Carlo percentage as the observed matching-room fraction. MINOR, record only.
[fixed] X3 (simulation-as-proof): replaced proof language with illustration and sampling variation in the HTML, markdown and creation log; tightened the verifier Monte Carlo description. MINOR, record only.
[fixed] X4 (all-numbers-three-checks): stated the actual checking scopes in HTML and the verifier source, and regenerated its published copy. The numerical assertions are unchanged. MINOR, record only.
[fixed] X5 (selection-always-breaks-independence): kept the twins warning and narrowed selection to birthday-related selection that can break independence, with a matching-pair example. Updated the creation log and added the matching WRONG correction paragraph to HTML and markdown.
[open note:256478] X6 (friendship-paradox-individual-guarantee): corrected the local relation to network averages, regenerated this page's card, and added the matching WRONG correction paragraph to HTML and markdown. The unqualified individual guarantee remains without a correction annotation in public/strata/there-here/index.html:250 and research/lineage-edge-grammar/page.json:1, notes[1241]. These corpus copies are not rebuilt at landing. Their owner must add a network-average qualification beside the preserved quotation.
[open note:667e38] X7 (penney-game-described-as-dice): corrected the local relation to a three-flip coin-sequence race and added the matching WRONG correction paragraph to HTML and markdown. The false die-tournament description remains without a correction annotation in public/strata/there-here/index.html:250 and research/lineage-edge-grammar/page.json:1, notes[1242]. These corpus copies are not rebuilt at landing. Their owner must identify Penney's coin-sequence race beside the preserved quotation.
[open note:9ee47a] X8 (collision-wait-omits-mean): added a corrected hash-function relation to this layer, specifying the approximate mean and model, then regenerated its card. The shared renderer prioritizes this outgoing relation over the incoming note. On 2026-10-18 the hash-function layer qualified its own copies: its relation note (src/content/strata/hash-function.md:11) and Nearby teaser now say the first collision arrives after about 1.25 times the square root of 2^b inputs on average, under uniform independent outputs, and its body, page prose, collision readout and verifier header say average. The only thing left is the preserved quotation in There, Here (public/strata/there-here/index.html:250 and research/lineage-edge-grammar/page.json:1, notes[533]), which still says "exactly the birthday waiting time" and needs a MINOR annotation beside it. MINOR, record only.
[fixed] X9 (pageviews-as-searches): retained ~71k and corrected its unit and time period in the markdown body and layer creation log. Saved the twelve-month API response. Added the matching WRONG correction paragraph to HTML and markdown.
[fixed] X10 (all-numbers-three-checks): corrected the markdown body and dek to several methods for selected results, consistent with X4. MINOR, record only.
[dated] X11 (stale-jsonld-modification-date): set JSON-LD dateModified to 2026-10-15. Applied the explicit metadata exception: no Updated line, since the five Corrected lines already date the assay revisions. The date rollover is recorded above.
[fixed] M12 (verifier-check-count): changed the layer creation log from 16 to 14 checks, matching the run. MINOR, record only.
The assay office: what a record is, and every layer re-read so far.