# Data notes

## Reference design

The information architecture is adapted from Anu Dudhia’s [Oxford Bumps Charts](https://eodg.atm.ox.ac.uk/user/dudhia/rowing/bumps/): an index by year, a trajectory chart, standings, and concise statistics. No source code, images, or visual assets from that site are included here.

## Head of the Charles coverage

- RegattaCentral’s Head of the Charles year menu lists 2012–2026.
- 2020 has no standard edition because the regatta was canceled.
- 2026 ran October 16–18 and is included from RegattaCentral job 10096. Its 73 event divisions contain 2,664 published result rows; 69 race records are marked Official and 4 Revised.
- A second 2016 listing is a test regatta and is excluded.
- The local data package contains every published division and result row for all 14 completed editions from 2012–2026: 953 divisions and 32,985 result rows.
- The page preserves publicly displayed bow order, cumulative split times at Riverside/Weld/Cambridge Boat Club, finish place, club/boat label, and finish time.
- The race view preserves division names and codes year by year because HOCR has renamed and regrouped categories over time.
- The across-years view groups divisions primarily by normalized RegattaCentral event code. It normalizes minor spacing variants such as `W SR-VET1X` / `W SR-VET 1X`, but does not merge materially different codes.
- Club-name overrides are exact-name mappings recorded in `data/club-identities.json`; substring and fuzzy matches are never used to combine results. The RegattaCentral short label “Cambridge” is displayed as “Cambridge Boat Club.” Cambridge University, City of Cambridge, Cambridge Rowing Club, Cambridge Rindge & Latin, and West Cambridge Rowing are protected as separate organizations.
- RegattaCentral’s 2012 embedded result payload contains mismatched codes, duplicated descriptions, and shifted descriptions. The complete audited mapping is stored in `data/2012-event-corrections.json` and is used by both the race and longitudinal views and by every generated club profile. All 60 fields have a unique corrected division code.
- Club pages describe pace as percentage behind the winner: `(official time − winning time) / winning time`. Historical HOCR result books labeled the equivalent measure “percentage over winning time.” The calculation is always contained within one event, race and year; raw times are not compared across editions. Field position is `place / finishers`, displayed as “top X%.”

## 2012 event correction

The raw `data/2012.json` package remains unchanged as a record of the published payload. Its event metadata is corrected at build time and, for the race view, at load time. The correction uses the result fields themselves: winning-time ranges identify boat class and gender, club overlap with the 2013 and 2014 editions identifies the most likely recurring division, and schedule order resolves neighboring fields.

The clearest broken run is events 5–8. Event 5 is the men's Grand Master eights; event 6 is the women's Grand Master eights; event 7 is the men's Grand Master fours; and event 8 is the women's Grand Master fours. RegattaCentral publishes events 5 and 6 under the same men's-eights description, which previously put two winners in the 2012 men's-eights column. The audited mapping also corrects the later shifted runs rather than treating event 6 as an isolated exception.

## Sources

- [RegattaCentral Head of the Charles 2025 results](https://www.regattacentral.com/v3/regatta/results2?job_id=9637&org_id=0)
- [RegattaCentral Head of the Charles 2026 results](https://www.regattacentral.com/v3/regatta/results2?job_id=10096&org_id=0)
- [Official Head of the Charles results archive](https://hocr.org/about-us/history/past-results-programs-posters/)
- [Oxford Bumps Charts](https://eodg.atm.ox.ac.uk/user/dudhia/rowing/bumps/)
- [“Bump or bumps charts” explainer](https://randomtechthoughts.blog/2020/05/13/bump-or-bumps-charts/) ([Archive.org snapshot, October 22, 2026](https://web.archive.org/web/20261022231459/https://randomtechthoughts.blog/2020/05/13/bump-or-bumps-charts/))
- [OarSpotter](https://www.oarspotter.com/) is the default source for the most recent club blade design. Its [disclaimer](https://www.oarspotter.com/disclaimer.html) and [copyright notice](https://www.oarspotter.com/copyright.html) govern reuse; the blade manifest keeps public-use status explicit.

## Blade selection

The blade manifest lives at `data/blades/index.json`. Its default rule applies the most recent OarSpotter design to every boat resolved to a club. Historical overrides are explicit and take priority over that default.

MITRC is the first override. RegattaCentral displayed the same 66×36 club blade in the [2022 Men's Club Eights](https://www.regattacentral.com/v3/regatta/results?job_id=6144&event_id=40) and [2023 Men's Club Eights](https://www.regattacentral.com/v3/regatta/results?job_id=8392&event_id=36). That source was edited only to center the MIT block mark on the white blade face, matching the physical blade; the manifest records the edit and checksum. The result is used for all MITRC boats and all chart years. The current OarSpotter record labeled “MIT RC” remains in the manifest for audit purposes but is intentionally not used for display.

The first current-design batch stores the latest OarSpotter images for eight high-confidence club matches already present in the HOCR data: Avalon, Ever Green, Marin, Olden Bears, Riverfront Recapture, Texas Rowing Center, Upper Valley Rowing, and Whitemarsh Boat Club. The untouched 436×48 originals are stored locally; the manifest defines a shared right-edge crop for chart markers. Two further reviewed batches bring the local total to 47 current OarSpotter designs plus the MITRC historical override.

`scripts/catalog-oarspotter.mjs` inventories all current OarSpotter category pages into `data/blades/oarspotter-catalog.json` and conservatively resolves unique HOCR club matches into `data/blades/oarspotter-matches.json`. The catalog stores source metadata rather than the entire image gallery. This distinction is intentional: OarSpotter permits a moderate number of credited images for non-commercial pages but asks users not to copy tens or hundreds without permission.

The second batch adds 15 recurring Grand Master Eights clubs: California, Cambridge Boat Club, Chinook, Community Rowing, Corvallis, East Bay Rowing, Narragansett, New Haven, Occoquan International, Palm Beach, Penn AC, Riverside, Rock Creek, Sammamish Rowing Association, and San Diego RC. Shortened HOCR names are stored as verified identity matches rather than assumed from fuzzy text similarity.

## Interpretation

“Movement” compares finish place with rank in the starting sequence after sorting bow numbers. It is not a pass count. Riverside, Weld, and Cambridge Boat Club positions are calculated within each race by ranking RegattaCentral's published cumulative split times. The finish position remains the official result, so penalties and status codes are reflected there.

The across-years chart is club-level rather than athlete- or boat-level. Each point is a club's best official finish in the selected division family for that edition. If a club has several entries, only that best rank controls the line, while the number of entries is retained in the selected-club detail. A line breaks when the club did not race a completed edition in that family. A dashed 2019–2021 segment denotes the canceled 2020 edition rather than a missing club appearance.
