Verifiering av poängsättningsmotor

Oberoende jämförelse av Flying Start:s poängsättningsmotor mot 75 693 verkliga Sailwave-resultat från 96 segelsällskap i 10 länder.

75,693
Jämförelser
4,144
Tävlingar
96
Sällskap
0
Fel hittade

Omdöme: Redo för produktion

Över 75 693 individuella jämförelser matchar Flying Start:s poängsättningsmotor Sailwave med en 99 % matchfrekvens. Noll poängsättningsfel hittades. Alla avvikelser förklaras antingen av testdatakvalitet eller mindre avrundningsskillnader som aldrig påverkar resultaten.

Innehåll

  1. Metodik
  2. Resultatsammanfattning
  3. Vad vi testade
  4. Datakällor — 96 sällskap, 10 länder
  5. Avvikelseanalys
  6. Sailwave-egenheter upptäckta
  7. Begränsningar och förbehåll
  8. Rådata och reproducerbarhet

1. Metodik

Vi skrev ett automatiserat testramverk som tar Sailwave-resultatdata, kör det genom Flying Start:s poängsättningsmotor och jämför varje beräknat värde mot vad Sailwave producerade. Testet kontrollerar tre saker per tävlande per tävling:

  1. Korrigerad tid — producerar vår handikappformel samma antal sekunder?
  2. Position — tilldelar vi samma slutposition?
  3. Poäng — beräknar vi samma poäng?

Jämförelsen använder två verifieringslägen:

Djupverifiering (med förfluten tid)

När källdata inkluderar förfluten tid och handikappbetyg beräknar vi om korrigerade tider från grunden med lämplig formel (PY, IRC, YTC, etc.) och jämför mot Sailwaves korrigerade tider. Detta validerar hela kedjan: förfluten → korrigerad → position → poäng.

Poängverifiering (utan förfluten tid)

När källdata endast inkluderar positioner och poäng (vanligt på seriesammanfattningssidor) verifierar vi att positions-till-poäng-mappningen följer rätt poängsättningssystemregler. Detta validerar tilldelning av straffpoäng, bonuspoängberäkningar och SCP-poängsättning.

Hur vi samlade in data

Vi skrev en skrapare som systematiskt crawlade Sailwaves publika resultatkatalog, som är värd för publicerade resultat från segelsällskap världen över. För varje sällskap hämtade vi upp till 40 resultatsidor, extraherade tävlingsdata, tävlingsresultat och straffkoder och konverterade dem sedan till ett strukturerat format för verifiering.

För sex Falmouth Sailing Week 2025-flottor skrapade vi manuellt individuella tävlingssidor som inkluderade fullständig förfluten och korrigerad tid, vilket möjliggjorde djup korrigerad-tid-verifiering.

2. Resultatsammanfattning

Källa Filer Tävlingar Jämförelser Match Stor Liten
Skrapad (96 sällskap) 655 4,088 74,391 99 % 0 1,068
Falmouth Week (djup) 6 56 1,302 99 % 3 19
Totalt 661 4,144 75,693 99 % 3 1,087

0 stora avvikelser orsakade av motorlogik. De 3 stora avvikelserna är alla datakvalitetsproblem i våra testdata (förklaras i detalj nedan).

3. Vad vi testade

Poängsättningsmotorn implementerar följande RRS-funktioner (Racing Rules of Sailing). Alla utövades under testning:

FunktionTäckning
PY-handikapp (brittiska jollar)Testat i 60+ brittiska sällskap
IRC-handikapp (internationella jakter)Testat med Falmouth Week IRC1/2/3-flottor
YTC-handikapp (brittiska kryssare)Testat med Falmouth Week YTCE/YTCQ-flottor
LågpoängssättningTestat i alla 4 144 tävlingar
BonuspoängssättningTestat där sällskap använder det
DNS / DNF / DNC-straffTestat i alla sällskap
OCS / DSQ / RET / UFD / BFDTestat där de förekommer i resultat
RRS-regel A5.3 (valfri straffpoängsättning)Standard för alla testkörningar — båtar vid area + 1 vs deltagare + 1
SCP (poängsättningsstraff)Testat där sällskap tillämpar procentstraff
KassationsprofilerTestat via jämförelse av serieställning
RRS Bilaga A8 oavgjordbrytningTestat via positionsjämförelse i oavgjorda flottor

4. Datakällor — 96 sällskap, 10 länder

Vi testade avsiktligt över ett brett geografiskt och organisatoriskt spektrum. Sällskapstävling i Solent har andra egenskaper än onsdagskvällstävling på en walesisk reservoar eller ett australiensiskt O'pen Skiff-mästerskap. Poängsättningsmotorn måste hantera alla.

Storbritannien (60+ sällskap)

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, och många klassföreningar (Solo, Osprey, Fireball, 29er, ILCA UK, ITCA, UKWA, Redwings).

Nya Zeeland (8 sällskap)

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

Australien (6 sällskap)

Manly YC, Perth SC, Maroochy, Hobie WA, Lake Cootharaba SC, Open Skiff-klassen (nationella och statliga mästerskap).

Övriga länder

Sydafrika (Bloemfontein YC), Sverige (KSSS), Ungern (resultat via hunresults), Portugal, USA (KHYC — King Harbor YC), Kanada (Whitby YC).

Falmouth Sailing Week 2025

Sex flottor från Bay-banan — IRC 1, IRC 2, IRC 3, YTC Cruiser, YTC Quarter-Tonner och Firebird — med fullständig förfluten och korrigerad tid skrapad från individuella tävlingssidor på sailwave.com/results/FSW.

5. Avvikelseanalys

Av de 75 693 jämförelserna matchade 1 090 inte exakt. Här är varje kategori av avvikelse, vad som orsakade den och om det spelar roll.

Stora avvikelser (3 totalt)

Alla tre är datakvalitetsproblem i våra testdata, inte poängsättningsfelsfall.

YTCE Falmouth R4 — Percy (John & Julie Roberts)

Avvikelse: Poäng — Sailwave säger 11, Flying Start säger 8.

Grundorsak: Onsdagens Champagne Race hade 3 gästbåtar (Autarky, Infinity, Passion) som inte är med i den ordinarie serien. Vår skrapade XML inkluderade dem inte, så flottstorlek var 10 istället för 13. Percy slutade 8:a av 10 i våra data mot 11:a av 13 i Sailwaves.

Omdöme: Båda poängsättningsmotorerna är korrekta. Skillnaden finns i indata, inte i beräkningen.

YTCE Falmouth R4 — Aardvarc (Philip Cook)

Avvikelse: Poäng — Sailwave säger 12, Flying Start säger 9.

Grundorsak: Som ovan. Gästbåtar blåste upp flottstorleken i Sailwaves data.

YTCQ Falmouth R4 — Tahini (Guy English)

Avvikelse: Korrigerad tid — Sailwave säger 1:10:13, Flying Start säger 1:08:32.

Grundorsak: Tahini seglade med ett annat YTC-betyg på onsdagen (1054) än resten av serien (1080). Vår XML använde 1080 för alla tävlingar. Formeln för korrigerad tid är elapsed × 1000 ÷ rating, så annat betyg = annan korrigerad tid.

Omdöme: Båda formlerna är korrekta. Skillnaden finns i handikappdata, inte i beräkningen.

Mindre avvikelser (1 087 totalt)

Alla 1 087 mindre avvikelser faller i två kategorier:

Avrundning av korrigerad tid (19 avvikelser)

Skillnader på 1–3 sekunder mellan Sailwave och Flying Start, orsakade av mellanliggande avrundning i Sailwaves beräkningskedja. Till exempel IRC korrigerad tid = förfluten × TCC. Om förfluten = 3 428 s och TCC = 1,072:

Påverkan: Ingen. En 1–3 sekunders skillnad i korrigerad tid ändrar aldrig en slutposition — båtar är vanligtvis åtskilda med minuter.

Poängravrundning i bonus/SCP-poängsättning (1 068 avvikelser)

Skillnader på 0,1–0,3 poäng där Sailwaves bonuspoängsbröktal eller SCP-procentberäkningar skiljer sig något. Till exempel bör 3:e plats i bonuspoängsättning vara exakt 5,7, men vissa Sailwave-versioner verkar använda något annorlunda flytkortprecision internt.

Påverkan: Försumbar. Dessa bråktalsskillnader ändrar aldrig ställningen eftersom de är mindre än gapet mellan två slutpositioner.

6. Sailwave-egenheter upptäckta

Under testning hittade vi ett område där Sailwaves beteende är inkonsekvent mellan sällskap. Vi påstår inte att detta är ett fel — det kan vara ett avsiktligt konfigurationsalternativ — men det är värt att dokumentera för tävlingsledare som migrerar från Sailwave.

TLE (tidsgräns överskriden) — inkonsekvent poängsättning

Sailwave använder TLE som en straffkod för båtar som inte slutför inom tidsgränsen. Den här koden förekommer inte i Kappseglingsreglerna (RRS). RRS-ekvivalenten skulle vara DNF (Did Not Finish).

Vi fann att Sailwave behandlar TLE inkonsekvent mellan olika sällskap:

Flying Start behandlar TLE som ekvivalent med DNF (starters + 1), vilket matchar det vanligaste Sailwave-beteendet och stämmer överens med RRS-principen att en båt som startar men inte slutför får starters + 1 poäng.

Denna inkonsekvens står för en del av våra mindre avvikelser. Om ditt sällskap använder TLE med specifika poängsättningsregler, hör av dig till oss så ser vi till att Flying Start matchar din praxis.

Inga Sailwave-fel hittade

Trots testning av 4 144 tävlingar hittade vi inga fall där Sailwave producerar felaktiga resultat enligt RRS-reglerna. Alla avvikelser kan förklaras av avrundning, datakvalitet eller TLE-tvetydigheten som beskrivs ovan. Sailwave har varit branschstandard i 20+ år av goda skäl — det räknar rätt.

7. Begränsningar och förbehåll

Vad det här testet INTE täcker

Vi noterar också att majoriteten av våra jämförelser (74 391 av 75 693) är poäng-enbart-jämförelser från seriesammanfattningssidor. Den djupa korrigerad-tid-verifieringen täcker 1 302 jämförelser från Falmouth Week. Vi välkomnar tillgång till fler evenemang med publicerad förfluten och korrigerad tid för att stärka denna verifiering.

8. Rådata och reproducerbarhet

Testramverket, skrapad data och fullständiga resultat publiceras i ett dedikerat open source-förvar:

github.com/IDSTUK/SW-FS-Scoring-Engine-Verification
Poängsättningsmotorkälla • Verifierare • Testramverk • 1 266 skrapade datakällor

SökvägBeskrivning
scripts/soak-test.tsCLI-testkörare — tolkar XML, kör verifiering, producerar rapport
scripts/scrape-sailwave.tsWebbskrapare för Sailwave HTML-resultatsidor
verifier/sailwaveVerifier.tsJämförelsemotorn — beräknar om korrigerade tider, positioner, poäng
scoring-engine/Poängsättningsmotorn själv — raceScorer, seriesScorer, handicapCalculator, tieBreaker
data/sources.jsonKomplett logg över alla 1 266 skrapade käll-URL:er
data/soak-results.jsonFullständiga testresultat med per-fil-matchfrekvenser och avvikelsedetaljer
REPORT.mdDetaljerad resultatrapport

Reproducera testet

cd rc-admin npm install npx tsx scripts/scrape-sailwave.ts # skrapa färsk data npx tsx scripts/soak-test.ts <directory> # kör verifiering

Skraparen respekterar tidigare skrapade URL:er (spårade i sources.json) och hämtar bara nya sidor. Hela testsviten körs på under 60 sekunder på den skrapade datan.

All Sailwave-resultatdata hämtades från publikt publicerade resultat på sailwave.com/results. Sailwave är ett varumärke tillhörande Jon Mayall. Flying Start är inte affilierad med Sailwave.