Files
sailing-analytics/java/com.sap.sailing.domain
Axel Uhl 1d507689fb bug6274: stop excluding MANEUVER_BASED_ESTIMATION from maneuver typing
Reverts the three call-site changes from issue #6184 (commit
1368179ac0) that passed getWindSources(MANEUVER_BASED_ESTIMATION) as
the exclusion set to trackedRace.getWind(pos, at, exclude) inside the
maneuver-typing paths:

 * IncrementalManeuverDetectorImpl.getManeuverSpotWithTypedManeuversFromExistingManeuverSpotConsideringPossibleWindChange
   (line 261) -- re-typing an existing maneuver spot when the wind at
   its position/time has changed.
 * ManeuverDetectorImpl.determineManeuversFromManeuverCurve (line 335)
   -- initial typing of a fresh spot.
 * ManeuverDetectorWithEstimationDataSupportDecoratorImpl (line 78) --
   same, in the estimation-data-support decorator.

Each now calls the two-arg getWind(pos, at), letting the tracked race's
confidence-weighted averaging pick the best wind source. When
non-estimation sources (EXPEDITION, TRACK_BASED_ESTIMATION, COURSE_BASED,
etc.) provide a wind fix at the requested position and time, their
higher base confidence dominates and MANEUVER_BASED_ESTIMATION does
not affect the result meaningfully -- so #6184's original concern
(the estimation track feeding back on itself with equal weight) does
not materialize.

When no other wind source has a fix, the estimation track's wind (with
its lower base confidence) is used. That is the intended bootstrap of
the wind-estimation-from-maneuvers design:

 1. Maneuver *spots* detected on the competitor tracks (geometry only).
 2. Estimator's NN + MST/HMM pre-classifies the spots, producing wind
    fixes on the MANEUVER_BASED_ESTIMATION track.
 3. The wind track update triggers a maneuver-cache recalc; on
    re-typing, isManeuverSpotWindNearlySame reads all wind sources
    including the estimation track (line 437, unchanged by #6184).
 4. determineManeuversFromManeuverCurve types the spot using whatever
    wind sources are available.

With #6184's exclusion in place, step 4 refused to use the estimation
track's wind, so races without any other wind source could never
progress from pre-classified spots to fully-typed ManeuverImpl
objects, breaking the bootstrap.

Removing the exclusion restores the bootstrap. Confidence-weighted
averaging inherent to TrackedRaceImpl.getWindWithConfidenceUncached
handles the 'prefer non-estimation when available' concern that
motivated #6184.
2026-07-17 12:05:51 +02:00
..
2025-09-24 16:08:59 +02:00
…
…