Niezależne porównanie silnika punktacji Flying Start z 75 693 rzeczywistymi wynikami Sailwave z 96 klubów żeglarskich w 10 krajach.
W 75 693 indywidualnych porównaniach silnik punktacji Flying Start pokrywa się z Sailwave ze współczynnikiem zgodności 99%. Nie znaleziono żadnych błędów punktacji. Wszystkie rozbieżności tłumaczy jakość danych testowych lub niewielkie różnice zaokrąglania, które nigdy nie wpływają na wyniki.
Napisaliśmy automatyczny system testowy, który pobiera dane wyników Sailwave, przepuszcza je przez silnik punktacji Flying Start i porównuje każdą obliczoną wartość z tym, co wyprodukowało Sailwave. Test sprawdza trzy rzeczy dla każdego zawodnika w każdym wyścigu:
Porównanie wykorzystuje dwa tryby weryfikacji:
Gdy dane źródłowe zawierają czasy rzeczywiste i ratingi handicapów, przeliczamy czasy skorygowane od podstaw, używając odpowiedniego wzoru (PY, IRC, YTC itp.) i porównujemy z czasami skorygowanymi Sailwave. Waliduje to cały potok: rzeczywisty → skorygowany → pozycja → punkty.
Gdy dane źródłowe zawierają tylko pozycje i punkty (typowe dla stron podsumowań serii), weryfikujemy, czy mapowanie pozycji na punkty jest zgodne z prawidłowymi zasadami systemu punktacji. Waliduje to przypisywanie punktów karnych, obliczanie punktów bonusowych i punktację SCP.
Napisaliśmy skrobak, który systematycznie przeszukiwał publiczny katalog wyników Sailwave, który zawiera opublikowane wyniki z klubów żeglarskich na całym świecie. Dla każdego klubu pobieraliśmy do 40 stron wyników, wyodrębnialiśmy dane zawodników, wyniki wyścigów i kody kar, a następnie konwertowaliśmy je do strukturyzowanego formatu do weryfikacji.
Dla sześciu flot Falmouth Sailing Week 2025 ręcznie zebraliśmy dane z poszczególnych stron wyścigów, które zawierały pełne czasy rzeczywiste i skorygowane, umożliwiając głęboką weryfikację czasu skorygowanego.
| Źródło | Pliki | Wyścigi | Porównania | Zgodność | Poważne | Drobne |
|---|---|---|---|---|---|---|
| Zebrane (96 klubów) | 655 | 4,088 | 74,391 | 99% | 0 | 1,068 |
| Falmouth Week (głęboka) | 6 | 56 | 1,302 | 99% | 3 | 19 |
| Łącznie | 661 | 4,144 | 75,693 | 99% | 3 | 1,087 |
0 poważnych rozbieżności spowodowanych logiką silnika. Wszystkie 3 poważne rozbieżności to problemy z jakością danych w naszych danych testowych (wyjaśnione szczegółowo poniżej).
Silnik punktacji implementuje następujące funkcje RRS (Przepisy Ścigania). Wszystkie były testowane:
| Funkcja | Pokrycie |
|---|---|
| Handicap PY (dinghy, Wielka Brytania) | Testowany w ponad 60 klubach w Wielkiej Brytanii |
| Handicap IRC (jachty międzynarodowe) | Testowany z flotami Falmouth Week IRC1/2/3 |
| Handicap YTC (krążowniki, Wielka Brytania) | Testowany z flotami Falmouth Week YTCE/YTCQ |
| Punktacja niskiego punktu | Testowany we wszystkich 4 144 wyścigach |
| Punktacja z punktami bonusowymi | Testowany tam, gdzie kluby go stosują |
| Kary DNS / DNF / DNC | Testowane we wszystkich klubach |
| OCS / DSQ / RET / UFD / BFD | Testowane tam, gdzie pojawiają się w wynikach |
| RRS Przepis A5.3 (opcjonalna punktacja karna) | Domyślny dla wszystkich przebiegów testowych — łodzie w obszarze + 1 vs zgłoszenia + 1 |
| SCP (kara punktowa) | Testowany tam, gdzie kluby stosują kary procentowe |
| Profile odrzutów | Testowane przez porównanie klasyfikacji serii |
| Rozstrzyganie remisów RRS Dodatek A8 | Testowane przez porównanie pozycji w flotach z remisem |
Celowo testowaliśmy na szerokim zakresie geograficznym i organizacyjnym. Wyścigi klubowe na Solent mają inne cechy niż środowe wieczorne wyścigi na walijskim zbiorniku wodnym czy australijskie mistrzostwa O'pen Skiff. Silnik punktacji musi obsługiwać je wszystkie.
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 oraz wiele stowarzyszeń klasowych (Solo, Osprey, Fireball, 29er, ILCA UK, ITCA, UKWA, Redwings).
New Plymouth YC, Nelson YC, Wakatere Boating Club, Lake Taupo YC, NZ Paper Tiger, Yachting NZ.
Manly YC, Perth SC, Maroochy, Hobie WA, Lake Cootharaba SC, klasa Open Skiff (mistrzostwa krajowe i stanowe).
Republika Południowej Afryki (Bloemfontein YC), Szwecja (KSSS), Węgry (wyniki przez hunresults), Portugalia, USA (KHYC — King Harbor YC), Kanada (Whitby YC).
Sześć flot z trasy Bay — IRC 1, IRC 2, IRC 3, YTC Cruiser, YTC Quarter-Tonner i Firebird — z pełnymi czasami rzeczywistymi i skorygowanymi zebranymi z poszczególnych stron wyścigów hostowanych na sailwave.com/results/FSW.
Spośród 75 693 porównań, 1 090 nie pasowało dokładnie. Poniżej każda kategoria rozbieżności, jej przyczyna i znaczenie.
Wszystkie trzy to problemy z jakością danych w naszych danych testowych, a nie błędy silnika punktacji.
Rozbieżność: Punkty — Sailwave podaje 11, Flying Start podaje 8.
Przyczyna źródłowa: Środowy Wyścig Szampański miał 3 gościnne łodzie (Autarky, Infinity, Passion) nienależące do regularnej serii. Nasze zebrane dane XML nie zawierały ich, więc rozmiar floty wynosił 10 zamiast 13. Percy finiszował na 8. miejscu z 10 w naszych danych vs 11. z 13 w danych Sailwave.
Werdykt: Oba silniki punktacji są poprawne. Różnica tkwi w danych wejściowych, nie w obliczeniach.
Rozbieżność: Punkty — Sailwave podaje 12, Flying Start podaje 9.
Przyczyna źródłowa: Tak jak powyżej. Gościnne łodzie zawyżyły rozmiar floty w danych Sailwave.
Rozbieżność: Czas skorygowany — Sailwave podaje 1:10:13, Flying Start podaje 1:08:32.
Przyczyna źródłowa: Tahini płynął ze środę z innym ratingiem YTC (1054) niż przez resztę serii (1080). Nasz plik XML używał 1080 dla wszystkich wyścigów. Wzór na czas skorygowany to elapsed × 1000 ÷ rating, więc inny rating = inny czas skorygowany.
Werdykt: Oba wzory są poprawne. Różnica tkwi w danych handicapów, nie w obliczeniach.
Wszystkie 1 087 drobnych rozbieżności dzieli się na dwie kategorie:
Różnice 1–3 sekund między Sailwave a Flying Start, spowodowane zaokrąglaniem pośrednim w łańcuchu obliczeń Sailwave. Na przykład czas skorygowany IRC = rzeczywisty × TCC. Jeśli rzeczywisty = 3 428 s i TCC = 1,072:
3428 × 1.072 = 3674.816 → 3675sWpływ: Żaden. Różnica 1–3 sekund w czasie skorygowanym nigdy nie zmienia pozycji na mecie — łodzie są zazwyczaj oddzielone minutami.
Różnice 0,1–0,3 punktu, gdzie ułamkowe wyniki punktów bonusowych Sailwave lub obliczenia procentowe SCP nieznacznie się różnią. Na przykład 3. miejsce w punktacji bonusowej powinno wynosić dokładnie 5,7, ale niektóre wersje Sailwave wydają się wewnętrznie używać nieco innej precyzji zmiennoprzecinkowej.
Wpływ: Pomijalny. Te ułamkowe różnice nigdy nie zmieniają klasyfikacji, ponieważ są mniejsze niż odstęp między dowolnymi dwiema pozycjami na mecie.
Podczas testowania znaleźliśmy jeden obszar, w którym zachowanie Sailwave jest niespójne między klubami. Nie twierdzimy, że to błąd — może to być celowa opcja konfiguracyjna — ale warto to udokumentować dla oficerów wyścigu migrujących z Sailwave.
Sailwave używa TLE jako kodu kary dla łodzi, które nie ukończyły wyścigu w limicie czasu. Kod ten nie pojawia się w Przepisach Ścigania (RRS). Odpowiednikiem RRS byłoby DNF (nie ukończył).
Odkryliśmy, że Sailwave traktuje TLE niespójnie w różnych klubach:
starters + 1 (tak samo jak DNF)last finisher's position + 1Flying Start traktuje TLE jako odpowiednik DNF (starters + 1), co odpowiada najczęstszemu zachowaniu Sailwave i jest zgodne z zasadą RRS, że łódź, która startuje, ale nie finiszuje, otrzymuje starters + 1 punktów.
Ta niespójność odpowiada za część naszych drobnych rozbieżności. Jeśli twój klub używa TLE z określonymi zasadami punktacji, daj nam znać a my zapewnimy, że Flying Start będzie zgodny z twoją praktyką.
Mimo testowania 4 144 wyścigów nie znaleźliśmy żadnych przypadków, w których Sailwave produkuje nieprawidłowe wyniki zgodnie z przepisami RRS. Wszystkie rozbieżności można wyjaśnić zaokrąglaniem, jakością danych lub opisaną powyżej niejednoznacznością TLE. Sailwave był standardem branżowym przez ponad 20 lat z dobrego powodu — obliczenia są poprawne.
Zauważamy również, że większość naszych porównań (74 391 z 75 693) to porównania tylko punktów ze stron podsumowań serii. Głęboka weryfikacja czasu skorygowanego obejmuje 1 302 porównania z Falmouth Week. Chętnie skorzystamy z dostępu do większej liczby wydarzeń z opublikowanymi czasami rzeczywistymi i skorygowanymi, aby wzmocnić tę weryfikację.
System testowy, zebrane dane i pełne wyniki są opublikowane w dedykowanym repozytorium open-source:
| Ścieżka | Opis |
|---|---|
| scripts/soak-test.ts | Uruchamiacz testów CLI — parsuje XML, przeprowadza weryfikację, generuje raport |
| scripts/scrape-sailwave.ts | Skrobak stron z wynikami HTML Sailwave |
| verifier/sailwaveVerifier.ts | Silnik porównawczy — przelicza czasy skorygowane, pozycje, punkty |
| scoring-engine/ | Sam silnik punktacji — raceScorer, seriesScorer, handicapCalculator, tieBreaker |
| data/sources.json | Kompletny dziennik wszystkich 1 266 zebranych adresów URL źródłowych |
| data/soak-results.json | Pełne wyniki testów ze wskaźnikami zgodności dla każdego pliku i szczegółami rozbieżności |
| REPORT.md | Szczegółowy raport z wyników |
Skrobak respektuje wcześniej zebrane adresy URL (śledzone w sources.json) i będzie pobierał tylko nowe strony. Cały zestaw testów wykonuje się w mniej niż 60 sekund na zebranych danych.
Wszystkie dane wyników Sailwave zostały pobrane z publicznie opublikowanych wyników na sailwave.com/results. Sailwave jest znakiem towarowym Jona Mayalla. Flying Start nie jest powiązany z Sailwave.