Scoring Engine Verificatie

Onafhankelijke vergelijking van de scoring engine van Flying Start met 75.693 echte Sailwave-resultaten van 96 zeilclubs in 10 landen.

75,693
Vergelijkingen
4,144
Races
96
Clubs
0
Bugs gevonden

Oordeel: productieklaar

Over 75.693 afzonderlijke vergelijkingen stemt de Flying Start scoring engine overeen met Sailwave met een overeenkomstpercentage van 99%. Er zijn geen scoringbugs gevonden. Alle afwijkingen worden verklaard door de kwaliteit van de testdata of kleine afrondingsverschillen die nooit van invloed zijn op de resultaten.

Inhoud

  1. Methodologie
  2. Resultatensamenvating
  3. Wat we hebben getest
  4. Databronnen — 96 clubs, 10 landen
  5. Afwijkingsanalyse
  6. Ontdekte eigenaardigheden van Sailwave
  7. Beperkingen en voorbehouden
  8. Ruwe data en reproduceerbaarheid

1. Methodologie

We hebben een geautomatiseerd testframework geschreven dat Sailwave-resultatendata neemt, dit door de scoring engine van Flying Start verwerkt en elke berekende waarde vergelijkt met wat Sailwave heeft geproduceerd. De test controleert drie dingen per deelnemer per race:

  1. Gecorrigeerde tijd — produceert onze handicapformule hetzelfde aantal seconden?
  2. Positie — kennen we dezelfde eindpositie toe?
  3. Punten — berekenen we dezelfde score?

De vergelijking gebruikt twee verificatiemodi:

Diepe verificatie (met verstreken tijden)

Wanneer de brondata verstreken tijden en handicapbeoordelingen bevat, herberekenen we gecorrigeerde tijden van nul af aan met de juiste formule (PY, IRC, YTC, enz.) en vergelijken we deze met de gecorrigeerde tijden van Sailwave. Dit valideert de volledige pijplijn: verstreken → gecorrigeerd → positie → punten.

Puntverificatie (zonder verstreken tijden)

Wanneer de brondata alleen posities en punten bevat (gebruikelijk op seriessamenvattingspagina's), verifiëren we dat de positie-naar-punten-toewijzing de juiste scoringsregels volgt. Dit valideert de toewijzing van strafpunten, bonuspuntberekeningen en SCP-scoring.

Hoe we de data hebben verzameld

We hebben een scraper geschreven die systematisch de Sailwave openbare resultatenlijst heeft doorzocht, die gepubliceerde resultaten van zeilclubs wereldwijd host. Voor elke club hebben we tot 40 resultatenpagina's opgehaald, deelnemersdata, raceresultaten en strafcodes geëxtraheerd en deze omgezet in een gestructureerd formaat voor verificatie.

Voor zes vloten van Falmouth Sailing Week 2025 hebben we handmatig afzonderlijke racepagina's gescraped die volledige verstreken en gecorrigeerde tijden bevatten, wat diepe gecorrigeerde-tijdverificatie mogelijk maakte.

2. Resultatensamenvating

Bron Bestanden Races Vergelijkingen Overeenkomst Groot Klein
Gescraped (96 clubs) 655 4,088 74,391 99% 0 1,068
Falmouth Week (diep) 6 56 1,302 99% 3 19
Totaal 661 4,144 75,693 99% 3 1,087

0 grote afwijkingen veroorzaakt door enginelogica. De 3 grote afwijkingen zijn alle datakwaliteitsproblemen in onze testdata (hieronder in detail uitgelegd).

3. Wat we hebben getest

De scoring engine implementeert de volgende RRS-functies (Racing Rules of Sailing). Alle zijn tijdens het testen beproefd:

FunctieDekking
PY-handicap (Britse dinghy's)Getest bij 60+ Britse clubs
IRC-handicap (internationale jachten)Getest met Falmouth Week IRC1/2/3-vloten
YTC-handicap (Britse cruisers)Getest met Falmouth Week YTCE/YTCQ-vloten
Low Point-scoringGetest in alle 4.144 races
Bonus Point-scoringGetest waar clubs het gebruiken
DNS / DNF / DNC-straffenGetest bij alle clubs
OCS / DSQ / RET / UFD / BFDGetest waar ze in resultaten verschijnen
RRS Regel A5.3 (optionele strafscoring)Standaard voor alle testrondes — boten bij deelnemers + 1 vs inschrijvingen + 1
SCP (scoringsstraf)Getest waar clubs percentagestraffen toepassen
SchrapprofielenGetest via seriesklassementvergelijking
RRS Bijlage A8 gelijke stand-regelsGetest via positievergelijking in vloten met gelijke stand

4. Databronnen — 96 clubs, 10 landen

We hebben bewust getest over een breed geografisch en organisatorisch bereik. Clubracen in het Solent heeft andere kenmerken dan woensdagavondracen op een Welsh stuwmeer of een Australisch O'pen Skiff-kampioenschap. De scoring engine moet ze allemaal aankunnen.

Verenigd Koninkrijk (60+ clubs)

Hayling Island SC, Parkstone YC, Poole YC, Warsash SC, Torbay SC, Cardiff Bay YC, Delph SC, Mengeham Rythe SC, Burghfield SC, Oxford SC, Chichester YC, Brancaster Staithe SC, Bexhill SC, Salcombe YC, Paignton SC, Brixham YC, Medway YC, Bartley SC, Northampton SC, Largo Bay SC, RCYC, Ranelagh SC, Twickenham YC, Cambridge YC, Ogston SC, Rutland SC, Bala SC, Maylandsea Bay SC, Royal Lymington YC, Flushing SC, Chase SC, Chipstead SC, Rock SC, BCYC, YDSC, en vele klassenverenigingen (Solo, Osprey, Fireball, 29er, ILCA UK, ITCA, UKWA, Redwings).

Nieuw-Zeeland (8 clubs)

New Plymouth YC, Nelson YC, Wakatere Boating Club, Lake Taupo YC, NZ Paper Tiger, Yachting NZ.

Australië (6 clubs)

Manly YC, Perth SC, Maroochy, Hobie WA, Lake Cootharaba SC, Open Skiff-klasse (nationale en staatskampioenschappen).

Andere landen

Zuid-Afrika (Bloemfontein YC), Zweden (KSSS), Hongarije (resultaten via hunresults), Portugal, VS (KHYC — King Harbor YC), Canada (Whitby YC).

Falmouth Sailing Week 2025

Zes vloten van de Bay-baan — IRC 1, IRC 2, IRC 3, YTC Cruiser, YTC Quarter-Tonner en Firebird — met volledige verstreken en gecorrigeerde tijden gescraped van afzonderlijke racepagina's gehost op sailwave.com/results/FSW.

5. Afwijkingsanalyse

Van de 75.693 vergelijkingen kwamen 1.090 niet exact overeen. Hier is elke categorie afwijking, wat de oorzaak was en of het van belang is.

Grote afwijkingen (3 in totaal)

Alle drie zijn datakwaliteitsproblemen in onze testdata, geen scoringenginebugs.

YTCE Falmouth R4 — Percy (John & Julie Roberts)

Afwijking: Punten — Sailwave zegt 11, Flying Start zegt 8.

Grondoorzaak: De woensdagse Champagne Race had 3 gastboten (Autarky, Infinity, Passion) die niet in de reguliere serie zaten. Onze gescrapede XML bevatte ze niet, dus de vlootgrootte was 10 in plaats van 13. Percy eindigde 8e van 10 in onze data vs 11e van 13 in Sailwave.

Oordeel: Beide scoring engines zijn correct. Het verschil zit in de invoerdata, niet in de berekening.

YTCE Falmouth R4 — Aardvarc (Philip Cook)

Afwijking: Punten — Sailwave zegt 12, Flying Start zegt 9.

Grondoorzaak: Zelfde als hierboven. Gastboten verhoogden de vlootgrootte in Sailwave-data.

YTCQ Falmouth R4 — Tahini (Guy English)

Afwijking: Gecorrigeerde tijd — Sailwave zegt 1:10:13, Flying Start zegt 1:08:32.

Grondoorzaak: Tahini zeilde op woensdag met een andere YTC-beoordeling (1054) dan de rest van de serie (1080). Onze XML gebruikte 1080 voor alle races. De gecorrigeerde tijdformule is elapsed × 1000 ÷ rating, dus andere beoordeling = andere gecorrigeerde tijd.

Oordeel: Beide formules zijn correct. Het verschil zit in de handicapdata, niet in de berekening.

Kleine afwijkingen (1.087 in totaal)

Alle 1.087 kleine afwijkingen vallen in twee categorieën:

Afronding gecorrigeerde tijd (19 afwijkingen)

Verschillen van 1–3 seconden tussen Sailwave en Flying Start, veroorzaakt door tussentijdse afronding in de berekenersketen van Sailwave. Bijvoorbeeld: IRC gecorrigeerde tijd = verstreken × TCC. Als verstreken = 3.428 s en TCC = 1,072:

Impact: Geen. Een verschil van 1–3 seconden in gecorrigeerde tijd verandert nooit een eindpositie — boten zijn doorgaans minuten van elkaar verwijderd.

Puntenafronding in bonus/SCP-scoring (1.068 afwijkingen)

Verschillen van 0,1–0,3 punten waarbij de bonuspuntfractionele scores of SCP-percentageberekeningen van Sailwave licht afwijken. Bijvoorbeeld: de 3e plaats in bonuspuntscoring moet precies 5,7 zijn, maar sommige Sailwave-versies lijken intern een iets andere zwevende-kommaprecisie te gebruiken.

Impact: Verwaarloosbaar. Deze fractionele verschillen veranderen nooit de klassementen omdat ze kleiner zijn dan het verschil tussen twee eindposities.

6. Ontdekte eigenaardigheden van Sailwave

Tijdens het testen vonden we één gebied waar het gedrag van Sailwave inconsistent is bij clubs. We beweren niet dat dit een bug is — het kan een opzettelijke configuratieoptie zijn — maar het is de moeite waard om te documenteren voor wedstrijdleiders die migreren van Sailwave.

TLE (tijdslimiet overschreden) — inconsistente scoring

Sailwave gebruikt TLE als strafcode voor boten die niet binnen de tijdslimiet finishen. Deze code verschijnt niet in de Racing Rules of Sailing (RRS). Het RRS-equivalent zou DNF (Did Not Finish) zijn.

We ontdekten dat Sailwave TLE inconsistent behandelt bij verschillende clubs:

Flying Start behandelt TLE als equivalent aan DNF (starters + 1), wat overeenkomt met het meest voorkomende Sailwave-gedrag en aansluit bij het RRS-principe dat een boot die start maar niet finisht starters + 1 punten ontvangt.

Deze inconsistentie verklaart een deel van onze kleine afwijkingen. Als je club TLE gebruikt met specifieke scoringsregels, neem dan contact met ons op en we zorgen ervoor dat Flying Start overeenkomt met jouw praktijk.

Geen Sailwave-bugs gevonden

Ondanks het testen van 4.144 races hebben we geen gevallen gevonden waarbij Sailwave onjuiste resultaten produceert per RRS-regels. Alle afwijkingen zijn verklaarbaar door afronding, datakwaliteit of de hierboven beschreven TLE-ambiguïteit. Sailwave is al 20+ jaar de industriestandaard met goede reden — het klopt de wiskunde.

7. Beperkingen en voorbehouden

Wat deze test NIET dekt

We merken ook op dat de meerderheid van onze vergelijkingen (74.391 van 75.693) alleen-punten-vergelijkingen zijn van seriessamenvattingspagina's. De diepe gecorrigeerde-tijdverificatie dekt 1.302 vergelijkingen van Falmouth Week. We verwelkomen toegang tot meer evenementen met gepubliceerde verstreken en gecorrigeerde tijden om deze verificatie te versterken.

8. Ruwe data en reproduceerbaarheid

Het testframework, gescrapede data en volledige resultaten zijn gepubliceerd in een speciaal open-source repository:

github.com/IDSTUK/SW-FS-Scoring-Engine-Verification
Scoring engine-broncode • Verificateur • Testframework • 1.266 gescrapede databronnen

PadBeschrijving
scripts/soak-test.tsCLI-testrunner — parseert XML, voert verificatie uit, produceert rapport
scripts/scrape-sailwave.tsWebscraper voor Sailwave HTML-resultatenpagina's
verifier/sailwaveVerifier.tsDe vergelijkingsengine — herberekent gecorrigeerde tijden, posities, punten
scoring-engine/De scoring engine zelf — raceScorer, seriesScorer, handicapCalculator, tieBreaker
data/sources.jsonVolledig logboek van alle 1.266 gescrapede bron-URL's
data/soak-results.jsonVolledige testresultaten met overeenkomstpercentages per bestand en afwijkingsdetails
REPORT.mdGedetailleerd bevindingsrapport

De test reproduceren

cd rc-admin npm install npx tsx scripts/scrape-sailwave.ts # scrape fresh data npx tsx scripts/soak-test.ts <directory> # run verification

De scraper respecteert eerder gescrapede URL's (bijgehouden in sources.json) en haalt alleen nieuwe pagina's op. De volledige testsuit wordt in minder dan 60 seconden uitgevoerd op de gescrapede data.

Alle Sailwave-resultatendata is afkomstig van openbaar gepubliceerde resultaten op sailwave.com/results. Sailwave is een handelsmerk van Jon Mayall. Flying Start is niet gelieerd aan Sailwave.