Verifisering av poengberegningsmotor

Uavhengig sammenligning av Flying Starts poengberegningsmotor mot 75 693 virkelige Sailwave-resultater fra 96 seilklubber i 10 land.

75,693
Sammenligninger
4,144
Raser
96
Klubber
0
Feil funnet

Konklusjon: Produksjonsklar

På tvers av 75 693 individuelle sammenligninger matcher Flying Start-poengberegningsmotoren Sailwave med 99% treffrate. Null poengberegningsfeil ble funnet. Alle avvik forklares av enten testdatakvalitet eller mindre avrundingsforskjeller som aldri påvirker resultater.

Innhold

  1. Metodikk
  2. Resultatsammendrag
  3. Hva vi testet
  4. Datakilder — 96 klubber, 10 land
  5. Avviksanalyse
  6. Sailwave-særtrekk oppdaget
  7. Begrensninger og forbehold
  8. Rådata og reproduserbarhet

1. Metodikk

Vi skrev et automatisert testverktøy som tar Sailwave-resultatdata, kjører det gjennom Flying Starts poengberegningsmotor og sammenligner alle beregnede verdier mot hva Sailwave produserte. Testen sjekker tre ting per deltaker per løp:

  1. Korrigert tid — produserer handicap-formelen vår samme antall sekunder?
  2. Posisjon — tildeler vi samme avslutningsposisjon?
  3. Poeng — beregner vi samme score?

Sammenligningen bruker to verifiseringsmodi:

Dyp verifisering (med løpstider)

Når kildedataene inkluderer løpstider og handicap-ratinger, omberegner vi korrigerte tider fra bunnen av ved hjelp av passende formel (PY, IRC, YTC osv.) og sammenligner mot Sailwaves korrigerte tider. Dette validerer hele pipelinen: løpt → korrigert → posisjon → poeng.

Poengverifisering (uten løpstider)

Når kildedataene bare inkluderer posisjoner og poeng (vanlig på seriesammendragssider), verifiserer vi at posisjons-til-poeng-kartleggingen følger de riktige poengberegningssystemreglene. Dette validerer tildeling av straffepoeng, bonuspoengberegninger og SCP-poengberegning.

Slik samlet vi inn dataene

Vi skrev en skraper som systematisk gjennomsøkte Sailwaves offentlige resultatmappe, som er vert for publiserte resultater fra seilklubber over hele verden. For hver klubb hentet vi opptil 40 resultatsider, ekstraherte deltakerdata, løpsresultater og straffekoder, og konverterte dem deretter til et strukturert format for verifisering.

For seks Falmouth Sailing Week 2025-flåter skrapte vi manuelt individuelle løpssider som inkluderte fulle løps- og korrigerte tider, noe som muliggjorde dyp verifisering av korrigert tid.

2. Resultatsammendrag

Kilde Filer Raser Sammenligninger Treff Alvorlig Mindre
Skrapet (96 klubber) 655 4,088 74,391 99% 0 1,068
Falmouth Week (dyp) 6 56 1,302 99% 3 19
Totalt 661 4,144 75,693 99% 3 1,087

0 alvorlige avvik forårsaket av motorlogikk. De 3 alvorlige avvikene er alle datakvalitetsproblemer i testdataene våre (forklart i detalj nedenfor).

3. Hva vi testet

Poengberegningsmotoren implementerer følgende RRS (Racing Rules of Sailing)-funksjoner. Alle ble brukt under testing:

FunksjonDekning
PY-handicap (UK-joller)Testet på tvers av 60+ UK-klubber
IRC-handicap (internasjonale jakter)Testet med Falmouth Week IRC1/2/3-flåter
YTC-handicap (UK-cruisere)Testet med Falmouth Week YTCE/YTCQ-flåter
Lav-poeng-beregningTestet i alle 4 144 løp
Bonuspoeng-beregningTestet der klubber bruker det
DNS / DNF / DNC-strafferTestet på tvers av alle klubber
OCS / DSQ / RET / UFD / BFDTestet der de vises i resultater
RRS Regel A5.3 (valgfri straffepoengberegning)Standard for alle testkjøringer — båter i område + 1 vs påmeldinger + 1
SCP (poengstraff)Testet der klubber bruker prosentstraff
StrykeresultatprofilerTestet via sammenligning av seriestillinger
RRS vedlegg A8-omseilingTestet via posisjonssammenligning i flåter med uavgjort

4. Datakilder — 96 klubber, 10 land

Vi testet bevisst på tvers av et bredt geografisk og organisatorisk spekter. Klubbracing i Solent har andre egenskaper enn onsdagskveldracing på et walisisk reservoar eller et australsk O'pen Skiff-mesterskap. Poengberegningsmotoren må håndtere alle.

Storbritannia (60+ klubber)

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, og mange klasseforeninger (Solo, Osprey, Fireball, 29er, ILCA UK, ITCA, UKWA, Redwings).

New Zealand (8 klubber)

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

Australia (6 klubber)

Manly YC, Perth SC, Maroochy, Hobie WA, Lake Cootharaba SC, Open Skiff-klasse (nasjonale og statlige mesterskap).

Andre land

Sør-Afrika (Bloemfontein YC), Sverige (KSSS), Ungarn (resultater via hunresults), Portugal, USA (KHYC — King Harbor YC), Canada (Whitby YC).

Falmouth Sailing Week 2025

Seks flåter fra Bay-banen — IRC 1, IRC 2, IRC 3, YTC Cruiser, YTC Quarter-Tonner og Firebird — med fulle løps- og korrigerte tider skrapet fra individuelle løpssider på sailwave.com/results/FSW.

5. Avviksanalyse

Av 75 693 sammenligninger matchet 1 090 ikke nøyaktig. Her er alle kategorier av avvik, hva som forårsaket det og om det er viktig.

Alvorlige avvik (3 totalt)

Alle tre er datakvalitetsproblemer i testdataene våre, ikke feil i poengberegningsmotoren.

YTCE Falmouth R4 — Percy (John & Julie Roberts)

Avvik: Poeng — Sailwave sier 11, Flying Start sier 8.

Rotårsak: Onsdags-Champagneløpet hadde 3 gjestbåter (Autarky, Infinity, Passion) som ikke var i den vanlige serien. Vår skrapede XML inkluderte dem ikke, så flåtestørrelsen var 10 i stedet for 13. Percy fullførte 8. av 10 i våre data versus 11. av 13 i Sailwaves.

Konklusjon: Begge poengberegningsmotorene er korrekte. Forskjellen er i inndataene, ikke beregningen.

YTCE Falmouth R4 — Aardvarc (Philip Cook)

Avvik: Poeng — Sailwave sier 12, Flying Start sier 9.

Rotårsak: Samme som ovenfor. Gjestbåter blåste opp flåtestørrelsen i Sailwaves data.

YTCQ Falmouth R4 — Tahini (Guy English)

Avvik: Korrigert tid — Sailwave sier 1:10:13, Flying Start sier 1:08:32.

Rotårsak: Tahini seilte med en annen YTC-rating på onsdag (1054) enn resten av serien (1080). Vår XML brukte 1080 for alle løp. Formelen for korrigert tid er elapsed × 1000 ÷ rating, så ulik rating = ulik korrigert tid.

Konklusjon: Begge formlene er korrekte. Forskjellen er i handicap-dataene, ikke beregningen.

Mindre avvik (1 087 totalt)

Alle 1 087 mindre avvik faller inn i to kategorier:

Avrunding av korrigert tid (19 avvik)

Forskjeller på 1–3 sekunder mellom Sailwave og Flying Start, forårsaket av mellomliggende avrunding i Sailwaves beregningskjede. For eksempel IRC korrigert tid = løpt × TCC. Hvis løpt = 3 428 s og TCC = 1,072:

Påvirkning: Ingen. En 1–3 sekunders forskjell i korrigert tid endrer aldri en avslutningsposisjon — båter er vanligvis atskilt med minutter.

Poengavrunding i bonus/SCP-poengberegning (1 068 avvik)

Forskjeller på 0,1–0,3 poeng der Sailwaves bonuspoeng-brøkscorer eller SCP-prosentberegninger avviker litt. For eksempel bør 3. plass i bonuspoeng-beregning være nøyaktig 5,7, men noen Sailwave-versjoner ser ut til å bruke litt annerledes flytende komma-presisjon internt.

Påvirkning: Ubetydelig. Disse brøkforskjellene endrer aldri stillinger fordi de er mindre enn gapet mellom to avslutningsposisjoner.

6. Sailwave-særtrekk oppdaget

Under testing fant vi ett område der Sailwaves atferd er inkonsistent på tvers av klubber. Vi hevder ikke at dette er en feil — det kan være en bevisst konfigurasjonsalternativ — men det er verdt å dokumentere for løpsledere som migrerer fra Sailwave.

TLE (Time Limit Exceeded) — inkonsistent poengberegning

Sailwave bruker TLE som straffekode for båter som ikke fullfører innen tidsgrensen. Denne koden vises ikke i Racing Rules of Sailing (RRS). RRS-ekvivalenten vil være DNF (Did Not Finish).

Vi fant at Sailwave behandler TLE inkonsistent på tvers av ulike klubber:

Flying Start behandler TLE som ekvivalent med DNF (starters + 1), som samsvarer med den vanligste Sailwave-atferden og er i tråd med RRS-prinsippet om at en båt som starter men ikke fullfører mottar starters + 1 poeng.

Denne inkonsistensen forklarer en del av de mindre avvikene våre. Hvis klubben din bruker TLE med spesifikke poengberegningsregler, vennligst gi oss beskjed og vi vil sikre at Flying Start samsvarer med praksisen din.

Ingen Sailwave-feil funnet

Til tross for testing av 4 144 løp fant vi ingen tilfeller der Sailwave produserer feil resultater per RRS-regler. Alle avvik kan forklares ved avrunding, datakvalitet eller TLE-tvetydigheten beskrevet ovenfor. Sailwave har vært industristandarden i 20+ år av god grunn — det gjør matematikken riktig.

7. Begrensninger og forbehold

Hva denne testen IKKE dekker

Vi merker også at flertallet av sammenligningene våre (74 391 av 75 693) er kun poeng-sammenligninger fra seriesammendragssider. Den dype verifiseringen av korrigert tid dekker 1 302 sammenligninger fra Falmouth Week. Vi vil gjerne ha tilgang til flere arrangementer med publiserte løps- og korrigerte tider for å styrke denne verifiseringen.

8. Rådata og reproduserbarhet

Testverktøyet, skrapede data og fullstendige resultater er publisert i et dedikert åpen kilde-repository:

github.com/IDSTUK/SW-FS-Scoring-Engine-Verification
Kilde for poengberegningsmotor • Verifiserer • Testverktøy • 1 266 skrapede datakilder

StiBeskrivelse
scripts/soak-test.tsCLI-testkjører — parser XML, kjører verifisering, produserer rapport
scripts/scrape-sailwave.tsNett-skraper for Sailwave HTML-resultatsider
verifier/sailwaveVerifier.tsSammenligningsmotor — omberegner korrigerte tider, posisjoner, poeng
scoring-engine/Selve poengberegningsmotoren — raceScorer, seriesScorer, handicapCalculator, tieBreaker
data/sources.jsonKomplett logg over alle 1 266 skrapede kilde-URL-er
data/soak-results.jsonFullstendige testresultater med treffrate per fil og avviksdetaljer
REPORT.mdDetaljert funnrapport

Reproduser testen

cd rc-admin npm install npx tsx scripts/scrape-sailwave.ts # skrap ferske data npx tsx scripts/soak-test.ts <directory> # kjør verifisering

Skraperen respekterer tidligere skrapede URL-er (sporet i sources.json) og vil bare hente nye sider. Hele testpakken kjøres på under 60 sekunder på de skrapede dataene.

Alle Sailwave-resultatdata ble hentet fra offentlig publiserte resultater på sailwave.com/results. Sailwave er et varemerke til Jon Mayall. Flying Start er ikke tilknyttet Sailwave.