skeswa/swingset
Swingset Swingset is an evidence-preserving dataset of competitive West Coast Swing results. It traces history from 2010-01-01 onward. Events that ended before that date get no rows in events or the tables under it. The registry mirror (dancers, registry_placements) is published whole, back to the registry's own beginning; a registry placement from before the start date keeps a null event_id. That absence is the start-date rule, not missing data. Month-only events have null… See the full description on the dataset page: https://huggingface.co/datasets/skeswa/swingset.
Swingset
Swingset is an evidence-preserving dataset of competitive West Coast Swing results. It traces history from 2010-01-01 onward. Events that ended before that date get no rows in events or the tables under it. The registry mirror (dancers, registry_placements) is published whole, back to the registry's own beginning; a registry placement from before the start date keeps a null event_id. That absence is the start-date rule, not missing data. Month-only events have null start and end dates and retain their registry month. Editions with neither a registry occurrence nor a public listing are outside the discoverable event inventory.
Load it
SELECT e.name AS event, p.place, leader.name_raw AS leader,
follower.name_raw AS follower, couple.name_raw AS couple
FROM 'hf://datasets/skeswa/swingset/data/placements/*.parquet' p
JOIN 'hf://datasets/skeswa/swingset/data/events/*.parquet' e USING (event_id)
LEFT JOIN 'hf://datasets/skeswa/swingset/data/entries/*.parquet' leader
ON leader.entry_id = p.leader_entry_id
LEFT JOIN 'hf://datasets/skeswa/swingset/data/entries/*.parquet' follower
ON follower.entry_id = p.follower_entry_id
LEFT JOIN 'hf://datasets/skeswa/swingset/data/entries/*.parquet' couple
ON couple.entry_id = p.couple_entry_id;DuckDB can run this query directly. Polars, pandas, and Hugging Face datasets can read each table from the paths above. placements is the default config in this version. Hugging Face cannot stream an empty Parquet config, so calendar-only releases default to events; after results arrive, the default changes to placements.
Published coverage
This table is computed from the event rows in this exact dataset version. A source on an event identifies its evidence source or an explicitly labeled URL-override placeholder; it does not establish complete contest or round coverage. The coverage table separates archive and origin evidence. Counts across sources can overlap. Event-list acceptance requires recorded owner review; an empty findings queue alone does not approve a year. Sheet completeness remains unknown until the source index and all expected rounds have been checked.
Result coverage
Event metadata includes future schedules and index-only events. Results coverage counts only events with placements. The manifest separates calendar_horizon from latest_event_covered, the latest dated event with placements; placeholder dates remain approximate.
Data quality
0 of 58558 entry records carry a WSDC ID. Entries represent contest participation, sometimes couples, and are not unique people.
Default WSDC IDs contain confirmed links only. Probable matches remain candidate evidence in identity_links and link_candidates; they do not populate default entry or judge joins. Confirmed source IDs identify what the source asserted. An ID can precede the corresponding registry fetch. Registry coverage does not establish complete dancer histories.
Findings are not an error-rate estimate. Unknown callback outcomes are withheld, so callback rows alone are not a promotion-rate denominator. For entrants appearing with multiple partners, outcomes summarize their strongest reported result. Conflicting entrant/judge marks and their dependent summaries are withheld with findings; partner-specific score histories are not fully represented. alternate preserves an unranked source alternate status. rounds.judge_count is the round-wide judge roster, not each entrant's voting-panel size. Registry divisions PRO and TCH retain literal source codes with unverified meanings; unknown levels mean unavailable interpretation, not no points. Conflicting registry claims are withheld with review findings.
Identity corrections
Default entry and judge IDs have been rechecked against the accepted decision journal, source evidence and suppression policy. identity_links.acceptance_state describes publication acceptance; probable scores remain in link_candidates. Named judges without WSDC numbers retain null IDs.
New default joins remain withheld pending the reviewed accuracy gate. Published baseline interpretations may retain disclosed legacy support; this does not grant admission or removal authority. The manifest pins the journal and admission policy digests. Suppressed personal records are omitted from correction history.
Row counts
Known gaps
- 235 contests have unsupported scoring layouts. Their raw evidence is retained privately; see
review_queuefor details. - 1998 of 2105 events currently have event metadata but no parsed contest results.
heatshas 0 rows; public heat assignments are rarely available.- Unverified callback codes and numeric marks remain in private evidence; they do not become negative callbacks or zero marks. Shared finals bibs stay null where partner ownership is unknown; a unique same-contest, same-role preliminary identity can supply an independently observed bib. Couple names remain a single couple entry when the source does not establish individual roles.
- Rows with
snapshot_id = overrideare URL-override placeholders, not fetched source evidence. Their dates span the month encoded in the override ID; they are not verified event dates. Do not infer result coverage from these rows. - 7 newly discovered sheet links await event-year acceptance and the historical acquisition gates. Their index evidence is retained; acquisition has not started for these links.
- Event-list completion has 17 open year-scope findings for 2010, 2011, 2012, 2013, 2014, 2015, 2016, 2017, 2018, 2019, 2020, 2021, 2022, 2023, 2024, 2025, 2026. These combine pending captures (including any waits for host budgets), unresolved source interpretations, and incomplete discovery. The public year findings do not provide a distinct pending-capture count.
- Event-list identity review has 45 series-alias and 34 event-alias findings across 2010, 2011, 2012, 2013, 2014, 2015, 2016, 2017, 2018, 2019, 2020, 2021, 2022, 2023, 2024, 2025, 2026. Printed names and ambiguous editions remain unresolved until reviewed; these counts are findings, not distinct people or series.
- Event-list sources have 58 warning findings for dates, hiatus/cancellation notices, newsletter approvals or unrecovered status colours, and 4 archived-map parse findings for missing printed names or dates. Unsupported dates and undated listings remain findings; they are not silently assigned dates.
- Event-list acceptance remains open for 2010, 2011, 2012, 2013, 2014, 2015, 2016, 2017, 2018, 2019, 2020, 2021, 2022, 2023, 2024, 2025, 2026, 2027, 2028, 2029, 2030. Publishing this partial inventory does not accept a year or authorize its historical score-sheet intake.
Sources and attribution
- WSDC event calendar (
wsdc_calendar) - WSDC points registry (
wsdc_registry) - EEPro (
eepro) - scoring.dance (
scoringdance) - danceconvention.net (
dcn) - World Dance Registry (
wdr)
These sites remain the sources of their facts. Row-level source and snapshot_id fields identify the captured evidence where the table supports them. Coverage varies by source, event, round, and date; this card makes no claim of complete source or registry coverage.
Schema
events: eventid, seriesid, name, year, startdate, enddate, eventmonth, dateprecision, held, coveragetier, historysource, city, region, country, website, wsdcstatus, sources, livewindowstart, livewindowend, source, snapshotid, parserversion, firstseenat, lastseenat, runid, scopestatus, evidenceobserved_atcontests: contestid, eventid, nameraw, division, agedivision, contesttype, partnermode, dancestyle, wsdcpointseligible, combinedfrom, parsestatus, sourcecontestref, source, snapshotid, parserversion, firstseenat, lastseenat, runid, scopestatus, evidenceobserved_atrounds: roundid, contestid, roundtype, roundindex, nameraw, scoringmethod, callbacklegend, judgecount, chiefjudgeid, entrycount, promotedcount, sourceroundref, scoresheeturl, source, snapshotid, parserversion, firstseenat, lastseenat, runid, scopestatus, evidenceobservedatentries: entryid, contestid, eventid, role, bib, nameraw, namenorm, partnernameraw, cityraw, countryraw, wsdcid, linkstatus, linkconfidence, partnerentryid, roundsdanced, bestround, source, snapshotid, parserversion, firstseenat, lastseenat, runid, scopestatus, evidenceobservedatheats: heatid, roundid, heatnumber, entryid, position, source, snapshotid, parserversion, firstseenat, lastseenat, run_idjudges: judgeid, eventid, nameraw, initials, anonymous, wsdcid, source, snapshotid, parserversion, firstseenat, lastseenat, runid, scopestatus, evidenceobservedatcallback_marks: roundid, entryid, judgeid, mark, markraw, markvalue, source, snapshotid, parserversion, firstseenat, lastseenat, runidcallbacks: roundid, entryid, scoresum, yescount, altcount, nocount, outcome, tiebreakapplied, heatnumber, source, snapshotid, parserversion, firstseenat, lastseenat, runidfinal_marks: roundid, placementid, judgeid, rank, source, snapshotid, parserversion, firstseenat, lastseenat, runidplacements: placementid, roundid, contestid, eventid, place, leaderentryid, followerentryid, coupleentryid, leaderwsdcid, followerwsdcid, markssorted, tally, registrypointsleader, registrypointsfollower, registryconfirmed, pointsmatchesexpected, source, snapshotid, parserversion, firstseenat, lastseenat, runid, scopestatus, evidenceobservedatdancers: wsdcid, firstname, lastname, namenorm, ispro, primaryrole, leaderrequiredlevel, leaderallowedlevel, followerrequiredlevel, followerallowedlevel, leaderhighestlevel, leaderhighestpoints, followerhighestlevel, followerhighestpoints, recentyear, registryinternalid, registryfetchedat, mergedintowsdcid, source, snapshotid, parserversion, firstseenat, lastseenat, runid, scopestatus, evidenceobservedatregistry_placements: wsdcid, role, dancestyle, division, seriesid, seriesnameraw, eventmonth, eventid, result, points, source, snapshotid, parserversion, firstseenat, lastseenat, runid, scopestatus, evidenceobserved_atidentity_links: linkid, subjectkind, subjectid, wsdcid, method, status, confidence, constraintsapplied, sourcerefids, decisionids, acceptancepolicy, acceptancestate, journaldigest, journalgeneration, assertedat, runidlink_candidates: subjectkind, subjectid, wsdcid, score, namesimilarity, namerarity, divisionok, roleok, recencyok, geography, bibreuse, registryconfirms, sourceidconfirms, rank, chosen, run_idreview_queue: itemid, kind, subjectid, summary, suggestedoverride, openedat, run_idchangelog: changedat, runid, table, recordkey, field, oldvalue, newvalue, changetype, reasonsnapshots: snapshotid, source, url, fetchedat, httpstatus, bodysha256, bodybytes, contentchanged, parser, parserversion, parsestatus, via, capturedat, archiveurl, observed_atcoverage: year, source, via, events, contests, rounds, entries, eventsregistryonly, eventsindexonly, eventssheetspartial, eventssheetscomplete, eventsdayprecision, eventslistedonly, eventsaccepted, expectedrounds, parsedrounds, unresolvedfindings, lastchangedat, scopekind, scopeid, scopestatus, scopereasons, missingscopes, discoveredunits, acquiredunits, interpretedunits, mappedunits, withheldunits, unavailableunits, unassessedunits, resolvedidentities, identitysubjects, withheldidentities, withheldscopes, unavailablescopes, discoverydenominator, discoveryuniverse, acquisitiondenominator, interpretationdenominator, mappingdenominator, evidencecutoff, evidenceobservedat, usableverifiedat, healthasof, method, population, uncertainty, eventid, enumerationid, enumerationsnapshotids, enumerationcomplete, listedpages, acquiredpages, acquisitionunknownpages, interpretationunknownpages, interpretedpages, selectedinterpretedpages, representedpages, unavailablepages, unsupportedpages
Updates and corrections
Collection runs every 15 minutes when work is due. identity_links carries current identity confidence; changelog explains published changes. File corrections or removal requests at https://github.com/skeswa/swingset/issues.
Collection and personal data
Public calendars, registries, and score sheets are fetched serially per host, respecting robots, Retry-After, and a five-second request floor. An explicitly seeded registry sweep uses its documented two-second exception. Results include public competitor and judge names. Suppressed people keep structural rows with identity fields removed. Raw bodies stay private. Source terms continue to apply.
License and citation
The compilation and structure are ODC-By 1.0. This license does not replace source terms or grant rights in source material. Attribute Swingset, cite this repository, and pin the Hub commit used.
Schema versions
The schema is pre-1.0. This version adds event precision, held status, history sources, archive capture times, and the coverage table. Probable identity links are excluded from default entry and judge WSDC IDs.
