diff --git a/README.md b/README.md index 4debd57..8de55c2 100644 --- a/README.md +++ b/README.md @@ -301,10 +301,10 @@ Use the benchmark script for broad flight/rollout trend checking and the Garmin Use the calibration tooling under [`tools/shot_calibration/README.md`](/home/jesher/Code/Github/digitalhand/openfairway/tools/shot_calibration/README.md) for carry-focused analysis and iteration against source-of-truth data. - Physics parameter tuning profile: `assets/data/calibration/calibration_profile.json` -- Calibration carry exception profile (regime + window targets): `assets/data/calibration/carry_exception_profile.json` +- Calibration carry exception profile (diagnostic-only, explicit opt-in): `assets/data/calibration/carry_exception_profile.json` - Critical carry report output: `assets/data/openfairway_critical_carry_.csv` -The carry exception layer is calibration analysis tooling. It is applied in the compare/analyze pipeline and does not modify core runtime equations in `addons/openfairway/physics/`. +The carry exception layer is calibration analysis tooling and is disabled by default. It only applies when explicitly enabled via `--carry-exceptions`, and does not modify core runtime equations in `addons/openfairway/physics/`. ## Known Feature Gaps diff --git a/addons/openfairway/README.md b/addons/openfairway/README.md index 82649be..dc26157 100644 --- a/addons/openfairway/README.md +++ b/addons/openfairway/README.md @@ -8,6 +8,7 @@ Realistic golf ball physics engine for Godot 4.5+ C# projects. Usable from both - [Quick Start (GDScript)](#quick-start-gdscript) - [Runtime Architecture](#runtime-architecture) - [Calibration Tooling Note](#calibration-tooling-note) +- [Regime Tuning Workflow](#regime-tuning-workflow) - [Game Integration: Ball and Surface Ownership](#game-integration-ball-and-surface-ownership) - [Surface Authoring](#surface-authoring) - [API Reference - GDScript Usage](#api-reference---gdscript-usage) @@ -111,9 +112,9 @@ Source: [`assets/diagrams/physics-runtime-components.puml`](assets/diagrams/phys ## Calibration Tooling Note -Carry calibration for source-of-truth comparison is handled by tooling in `tools/shot_calibration/`, including a bounded carry exception layer profile at `assets/data/calibration/carry_exception_profile.json`. +Carry calibration for source-of-truth comparison is handled by tooling in `tools/shot_calibration/`, including an optional bounded carry exception layer profile at `assets/data/calibration/carry_exception_profile.json`. -That layer is part of the calibration compare/analyze pipeline (`compare_csv.py` and `calibrate.py`). It does not change the addon runtime equations or in-game flight integration path in `addons/openfairway/physics/`. +That layer is part of the calibration compare/analyze pipeline (`compare_csv.py` and `calibrate.py`) and is disabled by default unless explicitly enabled with `--carry-exceptions`. It does not change the addon runtime equations or in-game flight integration path in `addons/openfairway/physics/`. For calibration commands and regime/window configuration details, see: @@ -121,6 +122,136 @@ For calibration commands and regime/window configuration details, see: - `assets/data/calibration/calibration_profile.json` - `assets/data/calibration/carry_exception_profile.json` +## Regime Tuning Workflow + +Use this workflow when the goal is to improve addon physics against FlightScope reference data without launching gameplay scenes. + +### What actually improves shots + +Only two things move the measured carry numbers: + +1. Changes to addon physics code under `addons/openfairway/physics/` +2. Changes to `BallPhysicsProfile` input, including `RegimeScaleOverrides` in `assets/data/calibration/calibration_profile.json` + +`compare_csv.py` and `calibrate.py analyze` do not simulate shots. They only score the most recent headless physics export. + +### RegimeScaleOverrides + +`BallPhysicsProfile` now supports regime-keyed scale overrides: + +```json +{ + "RegimeScaleOverrides": { + "I-S1a-V3-P2": { + "DragScaleMultiplier": 0.95, + "LiftScaleMultiplier": 1.05 + }, + "D-S3-V1-P2": { + "DragScaleMultiplier": 1.02, + "LiftScaleMultiplier": 0.99 + } + } +} +``` + +The regime key format is: + +```text +--- +``` + +Families: + +- `C`: chip / very low speed (`speed < 60 mph`) +- `D`: driver-wood style (`speed > 110 mph` and `launch < 18 deg`) +- `W`: very high loft (`launch > 30 deg`) +- `I`: everything else, usually irons / wedges / approaches + +Bins: + +- Speed: `S0`, `S1a` (60-72 mph), `S1b` (72-85 mph), `S2`, `S3`, `S4` +- Launch: `V0`, `V1`, `V2`, `V3`, `V4` +- Spin: `P0`, `P1`, `P2`, `P3`, `P4` + +Resolution order is most-specific to least-specific: + +1. `I-S1a-V3-P2` +2. `I-S1a-V3` +3. `I-S1a` +4. `I` + +Default regime overrides are baked into `BallPhysicsProfile.BuildDefaultRegimeOverrides()` (22 keys as of iteration 072). The `calibration_profile.json` is optional and only needed for experimental overrides during tuning. + +Prefer specific regime keys (e.g. `D-S4-V1-P0`) over broad catch-alls (e.g. `D-S4-V1`) when sub-bins have opposite carry directions. Removing the `D-S4-V1` catch-all and replacing it with `D-S4-V1-P0`, `D-S4-V1-P1`, `D-S4-V1-P2` was necessary because P0 shots were short while P1/P2 were long. + +### What to change first + +For carry tuning: + +- Shot is too short: decrease `DragScaleMultiplier`, increase `LiftScaleMultiplier` +- Shot is too long: increase `DragScaleMultiplier`, decrease `LiftScaleMultiplier` + +Use small steps: + +- Drag: `0.01` +- Lift: `0.005` to `0.01` + +Do not start with global multipliers if the misses are clustered in short-shot bins. Use regime overrides first so short-shot tuning does not reopen driver and wood behavior. + +### Target windows + +Use these carry targets when reviewing reports: + +- `<115 yd`: primary target `+-1 yd`, stretch target `+-0.5 yd` +- `115-150 yd`: `+-3 yd` +- `150-180 yd`: `+-7 yd` +- `>200 yd` drivers: keep within `+-15 yd` + +If a regime has mixed signs, do not keep pushing it. Split the regime more narrowly or leave the remainder to the residual carry regime layer. + +### Required iteration loop + +1. Update source defaults in `BallPhysicsProfile.cs` (or optionally `assets/data/calibration/calibration_profile.json` for experimental overrides) +2. Re-export physics headlessly +3. Re-run analysis against the same FlightScope corpus +4. Compare the new critical-carry report against the prior baseline + +Example: + +```bash +godot --headless --path . --script tools/shot_calibration/export_physics_csv.gd -- \ + '--profile=assets/data/calibration/calibration_profile.json' \ + '--dirs=res://assets/data|,res://assets/data/shot_session_2|s2,res://assets/data/shot_session_3|s3,res://assets/data/shot_session_4|s4' \ + '--output=assets/data/calibration/physics.csv' + +python tools/shot_calibration/calibrate.py analyze \ + --show 129 \ + --critical-baseline assets/data/openfairway_critical_carry_20260314_0146.csv +``` + +### How to judge an iteration + +Accept a regime change only if: + +- Physics-only `% within +-3 yd` improves or stays stable +- `<115 yd` `% within +-1 yd` improves +- The critical baseline shows more improved shots than regressed shots +- Long-shot windows stay inside guardrails + +Read the generated summary in this order: + +1. `physics_only.within_3yd_pct` +2. `short_shot_priority.actual_within_1yd_pct` +3. `short_shot_priority.actual_within_0.5yd_pct` +4. `critical_baseline.improved` vs `critical_baseline.regressed` +5. `residual_regime_candidates` + +### When to use the residual regime layer + +The residual carry regime layer is for the remaining outliers after physics-only tuning captures the main shot families. + +Use it only after the base physics path has already improved the broad regime. The runtime fallback should stay regime-based, not shot-name based. + ## Game Integration: Ball and Surface Ownership The runtime split is intentional: diff --git a/addons/openfairway/physics/BallPhysicsProfile.cs b/addons/openfairway/physics/BallPhysicsProfile.cs index c081ac4..9255abe 100644 --- a/addons/openfairway/physics/BallPhysicsProfile.cs +++ b/addons/openfairway/physics/BallPhysicsProfile.cs @@ -7,13 +7,22 @@ /// public sealed class BallPhysicsProfile { - public float DragScaleMultiplier { get; set; } = 1.0f; + private static readonly HashSet RegimeOverrideKnownKeys = new() + { + "DragScaleMultiplier", "LiftScaleMultiplier", + "KineticFrictionMultiplier", "RollingFrictionMultiplier", + "GrassViscosityMultiplier", "CriticalAngleOffsetRadians", + "SpinbackThetaBoostMultiplier", + }; + + public float DragScaleMultiplier { get; set; } = 1.01f; public float LiftScaleMultiplier { get; set; } = 1.0f; public float KineticFrictionMultiplier { get; set; } = 1.0f; public float RollingFrictionMultiplier { get; set; } = 1.0f; public float GrassViscosityMultiplier { get; set; } = 1.0f; public float CriticalAngleOffsetRadians { get; set; } = 0.0f; public float SpinbackThetaBoostMultiplier { get; set; } = 1.0f; + public Dictionary RegimeScaleOverrides { get; set; } = BuildDefaultRegimeOverrides(); public FlightProfile Flight { get; set; } public BounceProfile Bounce { get; set; } @@ -29,6 +38,7 @@ public sealed class BallPhysicsProfile "KineticFrictionMultiplier", "RollingFrictionMultiplier", "GrassViscosityMultiplier", "CriticalAngleOffsetRadians", "SpinbackThetaBoostMultiplier", + "RegimeScaleOverrides", "Flight", "Bounce", "Rollout", }; @@ -60,6 +70,14 @@ public static BallPhysicsProfile FromJson(string json) profile.CriticalAngleOffsetRadians = v.GetSingle(); if (root.TryGetProperty("SpinbackThetaBoostMultiplier", out v)) profile.SpinbackThetaBoostMultiplier = v.GetSingle(); + if (root.TryGetProperty("RegimeScaleOverrides", out var regimeEl) && regimeEl.ValueKind == JsonValueKind.Object) + { + foreach (var prop in regimeEl.EnumerateObject()) + { + WarnUnknownKeys(prop.Value, RegimeOverrideKnownKeys, $"RegimeScaleOverride[{prop.Name}]"); + profile.RegimeScaleOverrides[prop.Name] = ParseRegimeScaleOverride(prop.Value); + } + } if (root.TryGetProperty("Flight", out var flightEl)) { @@ -76,6 +94,84 @@ public static BallPhysicsProfile FromJson(string json) return profile; } + public RegimeScaleOverride ResolveScaleOverride( + float speedMph, + float launchAngleDeg, + float totalSpinRpm, + out string regimeKey, + out string matchedOverrideKey) + { + regimeKey = ShotRegimeKey.Build(speedMph, launchAngleDeg, totalSpinRpm); + matchedOverrideKey = string.Empty; + + if (RegimeScaleOverrides == null || RegimeScaleOverrides.Count == 0) + return RegimeScaleOverride.Neutral; + + foreach (string candidate in ShotRegimeKey.BuildLookupKeys(speedMph, launchAngleDeg, totalSpinRpm)) + { + if (RegimeScaleOverrides.TryGetValue(candidate, out var matched)) + { + matchedOverrideKey = candidate; + return matched; + } + } + + return RegimeScaleOverride.Neutral; + } + + /// + /// Calibrated regime-specific scale overrides derived from FlightScope + /// reference data. These correct systematic carry biases per launch regime + /// (e.g. chip shots under-carry at low Re, driver shots over-carry at high Re). + /// + private static Dictionary BuildDefaultRegimeOverrides() + { + return new Dictionary + { + // Chip shots (speed < 60 mph): systematic under-carry at low Reynolds + ["C-S0"] = new() { DragScaleMultiplier = 0.70f, LiftScaleMultiplier = 1.20f }, + ["C-S0-V1-P0"] = new() { DragScaleMultiplier = 0.55f, LiftScaleMultiplier = 1.15f }, + ["C-S0-V4-P3"] = new() { DragScaleMultiplier = 0.65f, LiftScaleMultiplier = 1.25f }, + + // Slow iron S1a (60-72 mph): larger systematic under-carry, more aggressive corrections + ["I-S1a-V0-P1"] = new() { DragScaleMultiplier = 0.94f, LiftScaleMultiplier = 1.04f }, + ["I-S1a-V2-P1"] = new() { DragScaleMultiplier = 0.80f, LiftScaleMultiplier = 1.14f }, + ["I-S1a-V2-P2"] = new() { DragScaleMultiplier = 0.82f, LiftScaleMultiplier = 1.13f }, + ["I-S1a-V2-P3"] = new() { DragScaleMultiplier = 0.82f, LiftScaleMultiplier = 1.12f }, + ["I-S1a-V3-P2"] = new() { DragScaleMultiplier = 0.79f, LiftScaleMultiplier = 1.14f }, + ["I-S1a-V3-P3"] = new() { DragScaleMultiplier = 0.94f, LiftScaleMultiplier = 1.04f }, + ["I-S1a-V1-P2"] = new() { DragScaleMultiplier = 0.92f, LiftScaleMultiplier = 1.05f }, + + // Mid iron S1b (72-85 mph): smaller corrections + ["I-S1b-V0-P0"] = new() { DragScaleMultiplier = 0.97f, LiftScaleMultiplier = 1.02f }, + ["I-S1b-V2-P2"] = new() { DragScaleMultiplier = 0.94f, LiftScaleMultiplier = 1.03f }, + ["I-S1b-V2-P3"] = new() { DragScaleMultiplier = 0.97f, LiftScaleMultiplier = 1.01f }, + ["I-S1b-V3-P2"] = new() { DragScaleMultiplier = 0.88f, LiftScaleMultiplier = 1.06f }, + ["I-S1b-V3-P3"] = new() { DragScaleMultiplier = 0.97f, LiftScaleMultiplier = 1.02f }, + ["I-S1b-V1-P2"] = new() { DragScaleMultiplier = 0.98f, LiftScaleMultiplier = 1.01f }, + + // Wedge lob (launch > 30 deg, 60-72 mph): under-carry + ["W-S1a-V3-P3"] = new() { DragScaleMultiplier = 0.83f, LiftScaleMultiplier = 1.10f }, + + // Fast iron with high spin: over-carry + ["I-S3-V2-P3"] = new() { DragScaleMultiplier = 1.08f, LiftScaleMultiplier = 0.96f }, + ["I-S2-V2-P3"] = new() { DragScaleMultiplier = 1.04f }, + + // Mid-speed iron: all short + ["I-S2-V1-P1"] = new() { DragScaleMultiplier = 0.97f, LiftScaleMultiplier = 1.02f }, + + // Driver regime: slight over-carry + ["D-S3-V1"] = new() { DragScaleMultiplier = 1.04f, LiftScaleMultiplier = 0.99f }, + ["D-S4-V0-P1"] = new() { DragScaleMultiplier = 1.03f, LiftScaleMultiplier = 0.98f }, + ["D-S4-V1-P0"] = new() { DragScaleMultiplier = 0.98f, LiftScaleMultiplier = 1.02f }, + ["D-S4-V1-P1"] = new() { DragScaleMultiplier = 1.04f }, + ["D-S4-V1-P2"] = new() { DragScaleMultiplier = 1.04f }, + + // High-speed wedge (launch > 30 deg, 85-105 mph): over-carry + ["W-S2-V3-P4"] = new() { DragScaleMultiplier = 1.06f, LiftScaleMultiplier = 0.97f }, + }; + } + private static void WarnUnknownKeys(JsonElement element, HashSet knownKeys, string context) { if (element.ValueKind != JsonValueKind.Object) @@ -208,6 +304,21 @@ private static RolloutProfile ParseRolloutProfile(JsonElement el) }; } + private static RegimeScaleOverride ParseRegimeScaleOverride(JsonElement el) + { + var scaleOverride = new RegimeScaleOverride(); + return new RegimeScaleOverride + { + DragScaleMultiplier = TryFloat(el, "DragScaleMultiplier", scaleOverride.DragScaleMultiplier), + LiftScaleMultiplier = TryFloat(el, "LiftScaleMultiplier", scaleOverride.LiftScaleMultiplier), + KineticFrictionMultiplier = TryFloat(el, "KineticFrictionMultiplier", scaleOverride.KineticFrictionMultiplier), + RollingFrictionMultiplier = TryFloat(el, "RollingFrictionMultiplier", scaleOverride.RollingFrictionMultiplier), + GrassViscosityMultiplier = TryFloat(el, "GrassViscosityMultiplier", scaleOverride.GrassViscosityMultiplier), + CriticalAngleOffsetRadians = TryFloat(el, "CriticalAngleOffsetRadians", scaleOverride.CriticalAngleOffsetRadians), + SpinbackThetaBoostMultiplier = TryFloat(el, "SpinbackThetaBoostMultiplier", scaleOverride.SpinbackThetaBoostMultiplier), + }; + } + private static float TryFloat(JsonElement el, string name, float defaultValue) { return el.TryGetProperty(name, out var prop) ? prop.GetSingle() : defaultValue; diff --git a/addons/openfairway/physics/FlightProfile.cs b/addons/openfairway/physics/FlightProfile.cs index bb4e622..ad9f336 100644 --- a/addons/openfairway/physics/FlightProfile.cs +++ b/addons/openfairway/physics/FlightProfile.cs @@ -41,7 +41,7 @@ public sealed class FlightProfile public float LowReCdFloor { get; init; } = 0.38f; public float LowReBlendStart { get; init; } = 30000.0f; public float CdAt50k { get; init; } = 0.4632f; - public float CdMin { get; init; } = 0.22f; + public float CdMin { get; init; } = 0.223f; // --- Lift caps --- public float ClMaxBase { get; init; } = 0.268f; @@ -65,7 +65,7 @@ public sealed class FlightProfile // --- High-Re lift --- public float HighReStart { get; init; } = 75000.0f; - public float HighReMidSpinGain { get; init; } = 13.8f; + public float HighReMidSpinGain { get; init; } = 16.0f; public float HighReSpinGain { get; init; } = 16.0f; public float HighReGainReductionStart { get; init; } = 0.10f; public float HighReGainReductionEnd { get; init; } = 0.18f; @@ -96,17 +96,17 @@ public sealed class FlightProfile // --- Progressive spin drag cap boost (increased form drag at high SR) --- public float SpinDragProgressiveCapSrStart { get; init; } = 0.33f; public float SpinDragProgressiveCapSrEnd { get; init; } = 0.50f; - public float SpinDragProgressiveCapBoostMax { get; init; } = 0.0f; + public float SpinDragProgressiveCapBoostMax { get; init; } = 0.25f; // --- Mid-spin Cl boost (bell-shaped lift recovery for mid-iron SR regime) --- - public float MidSpinClBoostSrStart { get; init; } = 0.10f; - public float MidSpinClBoostSrEnd { get; init; } = 0.35f; - public float MidSpinClBoostMax { get; init; } = 0.0f; + public float MidSpinClBoostSrStart { get; init; } = 0.17f; + public float MidSpinClBoostSrEnd { get; init; } = 0.31f; + public float MidSpinClBoostMax { get; init; } = 0.50f; // --- High-launch drag boost --- - public float HighLaunchDragBoostMax { get; init; } = 1.18f; - public float HighLaunchDragVlaStartDeg { get; init; } = 33.0f; - public float HighLaunchDragVlaFullDeg { get; init; } = 40.0f; + public float HighLaunchDragBoostMax { get; init; } = 1.24f; + public float HighLaunchDragVlaStartDeg { get; init; } = 24.5f; + public float HighLaunchDragVlaFullDeg { get; init; } = 31.5f; public float HighLaunchDragSrStart { get; init; } = 0.50f; public float HighLaunchDragSrEnd { get; init; } = 0.70f; diff --git a/addons/openfairway/physics/PhysicsAdapter.cs b/addons/openfairway/physics/PhysicsAdapter.cs index 0e27830..75cd0da 100644 --- a/addons/openfairway/physics/PhysicsAdapter.cs +++ b/addons/openfairway/physics/PhysicsAdapter.cs @@ -50,6 +50,19 @@ public Dictionary SimulateShotWithProfile(Dictionary shot, BallPhysicsProfile pr return result; } + /// + /// Carry-only simulation with a full BallPhysicsProfile override, including + /// launch-regime scale overrides. + /// + public Dictionary SimulateCarryOnlyWithProfile(Dictionary shot, BallPhysicsProfile profile) + { + var saved = _ballProfile; + _ballProfile = profile ?? new BallPhysicsProfile(); + var result = SimulateCarryOnlyInternal(shot, null); + _ballProfile = saved; + return result; + } + /// /// Simulate a shot from JSON data on a specific surface and floor normal. /// Useful for regression checks such as green/slope-specific rollout behavior. @@ -71,6 +84,9 @@ public Dictionary SimulateShotFromJson(Dictionary shot, PhysicsEnums.SurfaceType float sidespin = (float)spinData["sidespin"]; float totalSpin = (float)spinData["total"]; float spinAxis = (float)spinData["axis"]; + RegimeScaleOverride regimeScale = _ballProfile.ResolveScaleOverride(speedMph, vla, totalSpin, out string regimeKey, out string matchedOverrideKey); + if (!string.IsNullOrEmpty(matchedOverrideKey)) + PhysicsLogger.Info($"[Regime] {regimeKey} matched={matchedOverrideKey} drag={regimeScale.DragScaleMultiplier:F3} lift={regimeScale.LiftScaleMultiplier:F3}"); var launch = _shotSetup.BuildLaunchVectorsFromComponents(speedMph, vla, hla, backspin, sidespin); Vector3 velocity = (Vector3)launch["velocity"]; @@ -78,7 +94,7 @@ public Dictionary SimulateShotFromJson(Dictionary shot, PhysicsEnums.SurfaceType Vector3 shotDir = (Vector3)launch["shot_direction"]; Vector3 contactNormal = floorNormal.LengthSquared() > 0.000001f ? floorNormal.Normalized() : Vector3.Up; - var parameters = CreateParams(contactNormal, surface, vla); + var parameters = CreateParams(contactNormal, surface, vla, speedMph, totalSpin); Vector3 pos = new Vector3(0.0f, START_HEIGHT, 0.0f); PhysicsEnums.BallState state = PhysicsEnums.BallState.Flight; @@ -223,6 +239,8 @@ public Dictionary SimulateShotFromJson(Dictionary shot, PhysicsEnums.SurfaceType { "initial_cd", initialAirSample.DragCoefficient }, { "initial_cl", initialAirSample.LiftCoefficient }, { "peak_cl", peakCl }, + { "launch_regime_key", regimeKey }, + { "matched_regime_override_key", matchedOverrideKey }, { "surface", surface.ToString() }, { "first_impact_spinback", firstImpactSpinback }, { "first_impact_tangent_in_mps", firstImpactTangentIn }, @@ -272,13 +290,36 @@ private Dictionary SimulateCarryOnlyInternal(Dictionary shot, FlightProfile flig Vector3 omega = (Vector3)launch["omega"]; Vector3 shotDir = (Vector3)launch["shot_direction"]; - FlightProfile fp = flightProfile ?? _ballProfile.ResolvedFlight; + string regimeKey = ShotRegimeKey.Build(speedMph, vla, totalSpin); + string matchedOverrideKey = string.Empty; + float dragScale = 1.0f; + float liftScale = 1.0f; + FlightProfile fp; + if (flightProfile != null) + { + fp = flightProfile; + } + else + { + RegimeScaleOverride regimeScale = _ballProfile.ResolveScaleOverride( + speedMph, + vla, + totalSpin, + out regimeKey, + out matchedOverrideKey + ); + if (!string.IsNullOrEmpty(matchedOverrideKey)) + PhysicsLogger.Info($"[Regime] {regimeKey} matched={matchedOverrideKey} drag={regimeScale.DragScaleMultiplier:F3} lift={regimeScale.LiftScaleMultiplier:F3}"); + dragScale = _ballProfile.DragScaleMultiplier * regimeScale.DragScaleMultiplier; + liftScale = _ballProfile.LiftScaleMultiplier * regimeScale.LiftScaleMultiplier; + fp = _ballProfile.ResolvedFlight; + } float airDensity = _aero.GetAirDensity(DEFAULT_ALT_FT, DEFAULT_TEMP_F, PhysicsEnums.Units.Imperial); float airViscosity = _aero.GetDynamicViscosity(DEFAULT_TEMP_F, PhysicsEnums.Units.Imperial); FlightAerodynamicsSample initialAirSample = BallPhysics.SampleFlightAerodynamics( - velocity, omega, airDensity, airViscosity, 1.0f, 1.0f, vla, fp + velocity, omega, airDensity, airViscosity, dragScale, liftScale, vla, fp ); Vector3 pos = new Vector3(0.0f, START_HEIGHT, 0.0f); @@ -294,7 +335,7 @@ private Dictionary SimulateCarryOnlyInternal(Dictionary shot, FlightProfile flig for (int i = 0; i < steps; i++) { FlightAerodynamicsSample airSample = BallPhysics.SampleFlightAerodynamics( - velocity, omega, airDensity, airViscosity, 1.0f, 1.0f, vla, fp + velocity, omega, airDensity, airViscosity, dragScale, liftScale, vla, fp ); if (airSample.HasAerodynamics) { @@ -363,11 +404,18 @@ private Dictionary SimulateCarryOnlyInternal(Dictionary shot, FlightProfile flig { "initial_cd", initialAirSample.DragCoefficient }, { "initial_cl", initialAirSample.LiftCoefficient }, { "peak_cl", peakCl }, + { "launch_regime_key", regimeKey }, + { "matched_regime_override_key", matchedOverrideKey }, { "flight_profile_name", fp.Name } }; } - private PhysicsParams CreateParams(Vector3 floorNormal, PhysicsEnums.SurfaceType surface, float initialLaunchAngleDeg) + private PhysicsParams CreateParams( + Vector3 floorNormal, + PhysicsEnums.SurfaceType surface, + float initialLaunchAngleDeg, + float launchSpeedMph, + float launchSpinRpm) { float airDensity = _aero.GetAirDensity(DEFAULT_ALT_FT, DEFAULT_TEMP_F, PhysicsEnums.Units.Imperial); float airViscosity = _aero.GetDynamicViscosity(DEFAULT_TEMP_F, PhysicsEnums.Units.Imperial); @@ -381,7 +429,9 @@ private PhysicsParams CreateParams(Vector3 floorNormal, PhysicsEnums.SurfaceType floorNormal, rolloutImpactSpin: 0.0f, ballProfile: _ballProfile, - initialLaunchAngleDeg: initialLaunchAngleDeg + initialLaunchAngleDeg: initialLaunchAngleDeg, + launchSpeedMph: launchSpeedMph, + launchSpinRpm: launchSpinRpm ).ToPhysicsParams(); } } diff --git a/addons/openfairway/physics/PhysicsParamsFactory.cs b/addons/openfairway/physics/PhysicsParamsFactory.cs index 3aaa14e..d882b2e 100644 --- a/addons/openfairway/physics/PhysicsParamsFactory.cs +++ b/addons/openfairway/physics/PhysicsParamsFactory.cs @@ -15,25 +15,34 @@ public ResolvedPhysicsParams Create( Vector3 floorNormal, float rolloutImpactSpin = 0.0f, BallPhysicsProfile ballProfile = null, - float initialLaunchAngleDeg = 0.0f) + float initialLaunchAngleDeg = 0.0f, + float launchSpeedMph = 0.0f, + float launchSpinRpm = 0.0f) { BallPhysicsProfile profile = ballProfile ?? new BallPhysicsProfile(); SurfacePhysicsSettings surface = SurfacePhysicsCatalog.Get(surfaceType); + RegimeScaleOverride regimeScale = profile.ResolveScaleOverride( + launchSpeedMph, + initialLaunchAngleDeg, + launchSpinRpm, + out _, + out _ + ); return new ResolvedPhysicsParams( airDensity, airViscosity, - dragScale * profile.DragScaleMultiplier, - liftScale * profile.LiftScaleMultiplier, - surface.KineticFriction * profile.KineticFrictionMultiplier, - surface.RollingFriction * profile.RollingFrictionMultiplier, - surface.GrassViscosity * profile.GrassViscosityMultiplier, - surface.CriticalAngle + profile.CriticalAngleOffsetRadians, + dragScale * profile.DragScaleMultiplier * regimeScale.DragScaleMultiplier, + liftScale * profile.LiftScaleMultiplier * regimeScale.LiftScaleMultiplier, + surface.KineticFriction * profile.KineticFrictionMultiplier * regimeScale.KineticFrictionMultiplier, + surface.RollingFriction * profile.RollingFrictionMultiplier * regimeScale.RollingFrictionMultiplier, + surface.GrassViscosity * profile.GrassViscosityMultiplier * regimeScale.GrassViscosityMultiplier, + surface.CriticalAngle + profile.CriticalAngleOffsetRadians + regimeScale.CriticalAngleOffsetRadians, surfaceType, floorNormal, rolloutImpactSpin, surface.SpinbackResponseScale, - surface.SpinbackThetaBoostMax * profile.SpinbackThetaBoostMultiplier, + surface.SpinbackThetaBoostMax * profile.SpinbackThetaBoostMultiplier * regimeScale.SpinbackThetaBoostMultiplier, surface.SpinbackSpinStartRpm, surface.SpinbackSpinEndRpm, surface.SpinbackSpeedStartMps, diff --git a/addons/openfairway/physics/RegimeScaleOverride.cs b/addons/openfairway/physics/RegimeScaleOverride.cs new file mode 100644 index 0000000..e3b3428 --- /dev/null +++ b/addons/openfairway/physics/RegimeScaleOverride.cs @@ -0,0 +1,17 @@ +/// +/// Runtime-safe scale modifiers keyed by launch regime. These are intentionally +/// limited to multipliers and offsets already supported by BallPhysicsProfile so +/// regime tuning can stay bounded and predictable. +/// +public sealed class RegimeScaleOverride +{ + public float DragScaleMultiplier { get; set; } = 1.0f; + public float LiftScaleMultiplier { get; set; } = 1.0f; + public float KineticFrictionMultiplier { get; set; } = 1.0f; + public float RollingFrictionMultiplier { get; set; } = 1.0f; + public float GrassViscosityMultiplier { get; set; } = 1.0f; + public float CriticalAngleOffsetRadians { get; set; } = 0.0f; + public float SpinbackThetaBoostMultiplier { get; set; } = 1.0f; + + public static RegimeScaleOverride Neutral { get; } = new(); +} diff --git a/addons/openfairway/physics/RegimeScaleOverride.cs.uid b/addons/openfairway/physics/RegimeScaleOverride.cs.uid new file mode 100644 index 0000000..ca1fcef --- /dev/null +++ b/addons/openfairway/physics/RegimeScaleOverride.cs.uid @@ -0,0 +1 @@ +uid://bvchdggp3gorh diff --git a/addons/openfairway/physics/ShotRegimeKey.cs b/addons/openfairway/physics/ShotRegimeKey.cs new file mode 100644 index 0000000..c692ae0 --- /dev/null +++ b/addons/openfairway/physics/ShotRegimeKey.cs @@ -0,0 +1,78 @@ +using System.Collections.Generic; + +/// +/// Shared launch-regime classifier used by runtime physics and calibration +/// tooling so both paths bucket shots the same way. +/// +public static class ShotRegimeKey +{ + public static string Build(float speedMph, float launchAngleDeg, float totalSpinRpm) + { + return $"{GetFamily(speedMph, launchAngleDeg)}-{GetSpeedBin(speedMph)}-{GetLaunchBin(launchAngleDeg)}-{GetSpinBin(totalSpinRpm)}"; + } + + public static IEnumerable BuildLookupKeys(float speedMph, float launchAngleDeg, float totalSpinRpm) + { + string family = GetFamily(speedMph, launchAngleDeg); + string speed = GetSpeedBin(speedMph); + string launch = GetLaunchBin(launchAngleDeg); + string spin = GetSpinBin(totalSpinRpm); + + yield return $"{family}-{speed}-{launch}-{spin}"; + yield return $"{family}-{speed}-{launch}"; + yield return $"{family}-{speed}"; + yield return family; + } + + public static string GetFamily(float speedMph, float launchAngleDeg) + { + if (speedMph < 60.0f) + return "C"; + if (speedMph > 110.0f && launchAngleDeg < 18.0f) + return "D"; + if (launchAngleDeg > 30.0f) + return "W"; + return "I"; + } + + public static string GetSpeedBin(float speedMph) + { + if (speedMph < 60.0f) + return "S0"; + if (speedMph < 72.0f) + return "S1a"; + if (speedMph < 85.0f) + return "S1b"; + if (speedMph < 105.0f) + return "S2"; + if (speedMph < 120.0f) + return "S3"; + return "S4"; + } + + public static string GetLaunchBin(float launchAngleDeg) + { + if (launchAngleDeg < 10.0f) + return "V0"; + if (launchAngleDeg < 18.0f) + return "V1"; + if (launchAngleDeg < 25.0f) + return "V2"; + if (launchAngleDeg < 33.0f) + return "V3"; + return "V4"; + } + + public static string GetSpinBin(float totalSpinRpm) + { + if (totalSpinRpm < 2500.0f) + return "P0"; + if (totalSpinRpm < 4000.0f) + return "P1"; + if (totalSpinRpm < 5500.0f) + return "P2"; + if (totalSpinRpm < 7500.0f) + return "P3"; + return "P4"; + } +} diff --git a/addons/openfairway/physics/ShotRegimeKey.cs.uid b/addons/openfairway/physics/ShotRegimeKey.cs.uid new file mode 100644 index 0000000..51ed806 --- /dev/null +++ b/addons/openfairway/physics/ShotRegimeKey.cs.uid @@ -0,0 +1 @@ +uid://ihfrw4ddip2v diff --git a/assets/data/calibration/calibration_profile.json b/assets/data/calibration/calibration_profile.json index f96d868..2c63c08 100644 --- a/assets/data/calibration/calibration_profile.json +++ b/assets/data/calibration/calibration_profile.json @@ -1,16 +1,2 @@ { - "DragScaleMultiplier": 1.01, - "Flight": { - "CdMin": 0.223, - "HighLaunchDragVlaStartDeg": 24.5, - "HighLaunchDragVlaFullDeg": 31.5, - "HighLaunchDragBoostMax": 1.24, - "SpinDragProgressiveCapSrStart": 0.33, - "SpinDragProgressiveCapSrEnd": 0.50, - "SpinDragProgressiveCapBoostMax": 0.25, - "HighReMidSpinGain": 16.0, - "MidSpinClBoostSrStart": 0.17, - "MidSpinClBoostSrEnd": 0.31, - "MidSpinClBoostMax": 0.50 - } } diff --git a/assets/data/calibration/carry_exception_profile.json b/assets/data/calibration/carry_exception_profile.json index 11f6c58..2873a5b 100644 --- a/assets/data/calibration/carry_exception_profile.json +++ b/assets/data/calibration/carry_exception_profile.json @@ -1,75 +1,15 @@ { - "enabled": true, - "apply_to_top_n_by_abs_error": 60, - "prioritize_short_shots": false, - "selection_metric": "window_tolerance", + "enabled": false, + "apply_to_top_n_by_abs_error": 0, + "prioritize_short_shots": true, + "selection_metric": "abs_error", "caps": { "short_carry_lt_yd": 115.0, "long_carry_gt_yd": 200.0, - "short_max_abs_yd": 9.0, + "short_max_abs_yd": 2.0, "long_max_abs_yd": 6.0 }, - "offset_yd_by_regime": { - "D-S4-V1-P1": 6.4, - "D-S3-V1-P2": 7.0, - "D-S4-V1-P2": 7.2, - "I-S3-V2-P3": 11.5, - "I-S2-V1-P2": 6.3, - "I-S1-V1-P2": -5.0, - "W-S2-V3-P4": 8.0, - "I-S2-V2-P3": 3.5, - "I-S2-V3-P3": 4.0, - "D-S4-V0-P1": 7.9, - "D-S4-V0-P2": 9.0 - }, - "offset_yd_by_shot_name": { - "bump_and_run": -9.1, - "s3_shot_9i_2": -8.0, - "wedge_shot_2": -6.1, - "wedge_test_shot2": -5.4, - "s3_shot_6i_35": -5.1, - "wedge_shot_1": -5.1, - "wedge_test_shot": -5.0, - "s3_shot_7i_31": -4.8, - "s3_shot_6i_41": -4.6, - "s3_shot_5i_15": -4.5, - "s3_shot_pw_64": -4.4, - "p_wedge_shot_1": -4.3, - "s3_shot_6i_37": -3.6, - "s3_shot_6i_45": 3.5, - "s3_shot_pw_68": 3.4, - "s3_shot_5i_11": -3.2, - "s3_shot_6i_38": -3.2, - "s3_shot_3w_22": 3.1, - "s3_shot_5i_10": 3.0, - "s3_shot_pw_69": -2.8, - "s3_shot_5i_13": 2.6, - "s3_shot_9i_5": -2.6, - "s3_shot_pw_66": -2.6, - "s3_shot_6i_49": -2.5, - "bump_test_shot": -2.1, - "s3_shot_6i_36": 2.1, - "s3_shot_5i_17": -2.0, - "s3_shot_7i_26": 1.8, - "s2_shot_11": -1.7, - "s3_shot_9i_1": -1.4 - }, - "priority_windows": [ - { - "name": "carry_115_150", - "min_carry_gt_yd": 115.0, - "max_carry_lte_yd": 150.0, - "target_abs_yd": 3.0, - "priority": 1, - "max_abs_offset_yd": 4 - }, - { - "name": "carry_150_180", - "min_carry_gt_yd": 150.0, - "max_carry_lte_yd": 180.0, - "target_abs_yd": 6.0, - "priority": 2, - "max_abs_offset_yd": 7 - } - ] + "offset_yd_by_regime": {}, + "offset_yd_by_shot_name": {}, + "priority_windows": [] } diff --git a/assets/data/calibration/flightscope.csv b/assets/data/calibration/flightscope.csv index 0fcc3f9..7948f08 100644 --- a/assets/data/calibration/flightscope.csv +++ b/assets/data/calibration/flightscope.csv @@ -101,3 +101,37 @@ s3_shot_pw_66,shot_pw_66.json,75.71,27.32,-1.17,6605.0,3.99,6589.0,460.1,89.7,90 s3_shot_pw_67,shot_pw_67.json,81.66,28.12,6.34,6509.6,12.74,6349.4,1435.1,100.0,101.1,1.1,65.0 s3_shot_pw_68,shot_pw_68.json,88.55,23.37,-0.05,6637.4,6.04,6600.5,698.8,112.7,114.1,1.4,63.4 s3_shot_pw_69,shot_pw_69.json,74.06,23.61,0.18,5880.4,8.45,5816.5,864.4,86.0,88.8,2.8,41.2 +s4_shot_3w_31,shot_3w_31.json,106.87,15.70,-2.35,3662.0,8.88,3618.1,565.0,150.3,158.8,8.5,53.7 +s4_shot_3w_32,shot_3w_32.json,105.45,18.52,-1.38,5714.3,2.28,5709.8,227.6,146.0,148.8,2.8,71.9 +s4_shot_3w_33,shot_3w_33.json,99.72,20.51,0.54,6997.1,1.55,6994.5,189.5,132.0,133.4,1.4,72.8 +s4_shot_3w_34,shot_3w_34.json,114.64,15.34,2.39,3501.5,12.77,3414.9,773.8,166.6,175.4,8.8,60.3 +s4_shot_3w_35,shot_3w_35.json,117.92,14.40,3.60,3735.1,13.26,3635.5,856.4,171.9,180.2,8.3,61.1 +s4_shot_5i_25,shot_5i_25.json,89.08,16.71,1.13,5261.8,6.18,5231.2,566.6,110.8,116.1,5.3,40.1 +s4_shot_5i_26,shot_5i_26.json,106.31,15.46,-3.63,4114.0,3.40,4106.7,244.1,148.7,155.9,7.2,54.5 +s4_shot_5i_27,shot_5i_27.json,84.90,6.99,5.73,2262.9,30.00,1959.8,1131.5,55.3,92.1,36.8,5.8 +s4_shot_5i_28,shot_5i_28.json,86.01,15.91,-1.64,4178.9,1.01,4178.3,73.4,103.1,114.6,11.5,32.2 +s4_shot_5i_29,shot_5i_29.json,76.23,6.14,0.67,3695.3,0.00,3695.3,0.0,46.2,73.3,27.1,4.3 +s4_shot_5i_30,shot_5i_30.json,96.81,18.19,0.71,6358.2,17.49,6064.2,1911.0,124.7,127.7,3.0,55.5 +s4_shot_6i_19,shot_6i_19.json,85.61,14.70,2.87,4622.8,10.94,4538.9,877.1,98.9,110.8,11.9,28.6 +s4_shot_6i_20,shot_6i_20.json,78.84,9.70,-0.74,4288.8,0.00,4288.8,0.0,69.4,89.6,20.2,11.5 +s4_shot_6i_21,shot_6i_21.json,91.87,17.75,0.67,5966.8,11.46,5847.9,1185.3,116.4,120.1,3.7,47.6 +s4_shot_6i_22,shot_6i_22.json,76.88,7.65,14.36,3780.1,30.00,3273.7,1890.1,50.8,78.8,28.0,6.0 +s4_shot_6i_23,shot_6i_23.json,86.70,15.37,2.75,4195.9,11.91,4105.6,865.6,0.0,0.0,0.0,0.0 +s4_shot_6i_24,shot_6i_24.json,90.75,14.84,2.98,5270.3,14.94,5092.1,1358.6,0.0,0.0,0.0,0.0 +s4_shot_9i_13,shot_9i_13.json,73.08,12.51,11.29,4978.8,21.31,4638.4,1809.5,0.0,0.0,0.0,0.0 +s4_shot_9i_14,shot_9i_14.json,87.13,22.10,0.34,5730.4,4.69,5711.2,468.2,111.2,113.9,2.7,55.8 +s4_shot_9i_15,shot_9i_15.json,75.35,23.70,-1.27,6790.0,2.92,6781.2,346.1,87.7,89.3,1.6,43.9 +s4_shot_9i_17,shot_9i_17.json,79.41,14.92,16.37,4369.2,30.00,3783.8,2184.6,80.9,95.6,14.7,21.4 +s4_shot_9i_18,shot_9i_18.json,74.62,23.60,2.52,6418.0,6.12,6381.4,684.4,86.6,88.8,2.2,42.3 +s4_shot_lw_38,shot_lw_38.json,47.61,37.82,6.06,5608.6,5.60,5581.8,546.9,42.4,43.4,1.0,30.5 +s4_shot_pw_1,shot_pw_1.json,69.84,20.07,-0.58,3577.0,7.98,3542.3,496.5,74.8,83.7,8.9,26.2 +s4_shot_pw_10,shot_pw_10.json,76.33,26.80,0.65,5988.6,4.90,5966.7,511.9,91.5,93.2,1.7,52.8 +s4_shot_pw_11,shot_pw_11.json,76.26,27.35,-0.63,6296.3,5.22,6270.2,573.0,91.1,92.5,1.4,54.2 +s4_shot_pw_2,shot_pw_2.json,53.25,24.98,0.23,4085.0,3.00,4079.4,213.9,48.5,56.0,7.5,20.2 +s4_shot_pw_3,shot_pw_3.json,62.81,31.15,6.57,6128.8,6.31,6091.7,673.2,67.3,68.6,1.3,41.8 +s4_shot_pw_47,shot_pw_47.json,46.66,24.60,2.26,3699.1,0.00,3699.1,0.0,37.4,45.2,7.8,14.6 +s4_shot_pw_48,shot_pw_48.json,46.55,25.52,3.83,4318.4,0.58,4318.2,43.5,37.9,44.5,6.6,15.6 +s4_shot_pw_49,shot_pw_49.json,60.30,22.56,3.45,4043.8,4.96,4028.7,350.0,59.3,68.0,8.7,22.8 +s4_shot_pw_6,shot_pw_6.json,68.69,26.10,1.07,4148.8,8.23,4106.0,593.9,78.4,83.1,4.7,38.6 +s4_shot_pw_7,shot_pw_7.json,76.85,25.20,3.72,6565.2,8.16,6498.7,931.8,91.1,92.6,1.5,49.5 +s4_shot_pw_9,shot_pw_9.json,76.60,28.64,4.92,7133.1,5.71,7097.7,709.7,0.0,0.0,0.0,0.0 diff --git a/assets/data/calibration/history/iteration_036.json b/assets/data/calibration/history/iteration_036.json new file mode 100644 index 0000000..7f2d312 --- /dev/null +++ b/assets/data/calibration/history/iteration_036.json @@ -0,0 +1,749 @@ +{ + "iteration": 36, + "timestamp": "2026-03-14T00:59:16.617180", + "profile_overrides": {}, + "summary": { + "pass": 29, + "moderate": 19, + "severe": 51, + "no_reference": 3 + }, + "per_shot": { + "5iron": { + "diff_carry_yd": 1.6, + "diff_total_yd": 12.1, + "diff_apex_ft": 5.0, + "status": "severe", + "error_pattern": "ROLLOUT_TOO_LONG" + }, + "approach_mid_iron_test_shot": { + "diff_carry_yd": 0.0, + "diff_total_yd": 7.9, + "diff_apex_ft": -4.7, + "status": "moderate", + "error_pattern": "ROLLOUT_TOO_LONG" + }, + "bump_and_run": { + "diff_carry_yd": -0.1, + "diff_total_yd": -27.5, + "diff_apex_ft": -2.1, + "status": "severe", + "error_pattern": "ROLLOUT_TOO_SHORT" + }, + "bump_and_run_slow": { + "diff_carry_yd": null, + "diff_total_yd": null, + "diff_apex_ft": null, + "status": "pass", + "error_pattern": null + }, + "bump_test_shot": { + "diff_carry_yd": 0.0, + "diff_total_yd": 12.8, + "diff_apex_ft": -0.1, + "status": "severe", + "error_pattern": "ROLLOUT_TOO_LONG" + }, + "checked_test_shot": { + "diff_carry_yd": -0.6, + "diff_total_yd": 1.1, + "diff_apex_ft": -8.7, + "status": "pass", + "error_pattern": null + }, + "chip_test_shot": { + "diff_carry_yd": null, + "diff_total_yd": null, + "diff_apex_ft": null, + "status": "pass", + "error_pattern": null + }, + "drive_test_shot": { + "diff_carry_yd": 1.0, + "diff_total_yd": 0.8, + "diff_apex_ft": -0.6, + "status": "pass", + "error_pattern": null + }, + "driver1": { + "diff_carry_yd": 0.3, + "diff_total_yd": -25.7, + "diff_apex_ft": -0.7, + "status": "severe", + "error_pattern": "ROLLOUT_TOO_SHORT" + }, + "driver2": { + "diff_carry_yd": 2.5, + "diff_total_yd": 8.6, + "diff_apex_ft": -2.7, + "status": "moderate", + "error_pattern": "ROLLOUT_TOO_LONG" + }, + "driver3": { + "diff_carry_yd": -0.8, + "diff_total_yd": 23.3, + "diff_apex_ft": 21.1, + "status": "severe", + "error_pattern": "ROLLOUT_TOO_LONG" + }, + "driver4": { + "diff_carry_yd": 0.7, + "diff_total_yd": 16.3, + "diff_apex_ft": 4.4, + "status": "severe", + "error_pattern": "ROLLOUT_TOO_LONG" + }, + "flop_test_shot": { + "diff_carry_yd": 0.9, + "diff_total_yd": 2.8, + "diff_apex_ft": -7.6, + "status": "pass", + "error_pattern": null + }, + "p_wedge_shot_1": { + "diff_carry_yd": 0.0, + "diff_total_yd": 2.2, + "diff_apex_ft": -5.4, + "status": "pass", + "error_pattern": null + }, + "s2_shot_10": { + "diff_carry_yd": 0.0, + "diff_total_yd": 10.7, + "diff_apex_ft": -5.8, + "status": "severe", + "error_pattern": "ROLLOUT_TOO_LONG" + }, + "s2_shot_11": { + "diff_carry_yd": 0.0, + "diff_total_yd": 2.0, + "diff_apex_ft": -4.4, + "status": "pass", + "error_pattern": null + }, + "s2_shot_12": { + "diff_carry_yd": 1.7, + "diff_total_yd": 9.5, + "diff_apex_ft": -5.1, + "status": "moderate", + "error_pattern": "ROLLOUT_TOO_LONG" + }, + "s2_shot_13": { + "diff_carry_yd": -1.7, + "diff_total_yd": 3.0, + "diff_apex_ft": -5.9, + "status": "pass", + "error_pattern": null + }, + "s2_shot_14": { + "diff_carry_yd": 0.2, + "diff_total_yd": 1.6, + "diff_apex_ft": -5.9, + "status": "pass", + "error_pattern": null + }, + "s2_shot_15": { + "diff_carry_yd": -0.6, + "diff_total_yd": -12.3, + "diff_apex_ft": -1.9, + "status": "severe", + "error_pattern": "ROLLOUT_TOO_SHORT" + }, + "s2_shot_16": { + "diff_carry_yd": 0.4, + "diff_total_yd": 2.2, + "diff_apex_ft": -3.2, + "status": "pass", + "error_pattern": null + }, + "s2_shot_17": { + "diff_carry_yd": 0.0, + "diff_total_yd": 9.2, + "diff_apex_ft": -3.6, + "status": "moderate", + "error_pattern": "ROLLOUT_TOO_LONG" + }, + "s2_shot_18": { + "diff_carry_yd": 1.1, + "diff_total_yd": 16.6, + "diff_apex_ft": 3.1, + "status": "severe", + "error_pattern": "ROLLOUT_TOO_LONG" + }, + "s2_shot_19": { + "diff_carry_yd": -3.1, + "diff_total_yd": -4.4, + "diff_apex_ft": -0.9, + "status": "moderate", + "error_pattern": "CARRY_TOO_SHORT" + }, + "s2_shot_20": { + "diff_carry_yd": 0.2, + "diff_total_yd": 11.1, + "diff_apex_ft": -1.8, + "status": "severe", + "error_pattern": "ROLLOUT_TOO_LONG" + }, + "s2_shot_21": { + "diff_carry_yd": 5.8, + "diff_total_yd": 28.8, + "diff_apex_ft": 1.8, + "status": "severe", + "error_pattern": "CARRY_AND_ROLLOUT_LONG" + }, + "s2_shot_22": { + "diff_carry_yd": -0.7, + "diff_total_yd": 3.5, + "diff_apex_ft": -1.4, + "status": "pass", + "error_pattern": null + }, + "s2_shot_23": { + "diff_carry_yd": -2.8, + "diff_total_yd": -18.9, + "diff_apex_ft": 0.1, + "status": "severe", + "error_pattern": "ROLLOUT_TOO_SHORT" + }, + "s2_shot_24": { + "diff_carry_yd": -0.7, + "diff_total_yd": 2.7, + "diff_apex_ft": -1.6, + "status": "pass", + "error_pattern": null + }, + "s2_shot_26": { + "diff_carry_yd": 2.6, + "diff_total_yd": 23.1, + "diff_apex_ft": 24.2, + "status": "severe", + "error_pattern": "ROLLOUT_TOO_LONG" + }, + "s2_shot_27": { + "diff_carry_yd": -3.4, + "diff_total_yd": 13.8, + "diff_apex_ft": 5.0, + "status": "severe", + "error_pattern": "CARRY_TOO_SHORT" + }, + "s2_shot_9": { + "diff_carry_yd": -2.8, + "diff_total_yd": 3.5, + "diff_apex_ft": 7.3, + "status": "pass", + "error_pattern": null + }, + "s3_shot_3w_18": { + "diff_carry_yd": null, + "diff_total_yd": null, + "diff_apex_ft": null, + "status": "pass", + "error_pattern": null + }, + "s3_shot_3w_19": { + "diff_carry_yd": -0.1, + "diff_total_yd": 16.7, + "diff_apex_ft": 0.1, + "status": "severe", + "error_pattern": "ROLLOUT_TOO_LONG" + }, + "s3_shot_3w_21": { + "diff_carry_yd": 1.1, + "diff_total_yd": 16.6, + "diff_apex_ft": 0.3, + "status": "severe", + "error_pattern": "ROLLOUT_TOO_LONG" + }, + "s3_shot_3w_22": { + "diff_carry_yd": 0.0, + "diff_total_yd": 20.2, + "diff_apex_ft": 0.5, + "status": "severe", + "error_pattern": "ROLLOUT_TOO_LONG" + }, + "s3_shot_3w_23": { + "diff_carry_yd": 0.8, + "diff_total_yd": -22.7, + "diff_apex_ft": -1.2, + "status": "severe", + "error_pattern": "ROLLOUT_TOO_SHORT" + }, + "s3_shot_3w_24": { + "diff_carry_yd": 3.9, + "diff_total_yd": 29.6, + "diff_apex_ft": 1.9, + "status": "severe", + "error_pattern": "CARRY_AND_ROLLOUT_LONG" + }, + "s3_shot_5i_10": { + "diff_carry_yd": 0.0, + "diff_total_yd": -7.1, + "diff_apex_ft": 5.9, + "status": "moderate", + "error_pattern": "ROLLOUT_TOO_SHORT" + }, + "s3_shot_5i_11": { + "diff_carry_yd": 0.0, + "diff_total_yd": -17.2, + "diff_apex_ft": -1.3, + "status": "severe", + "error_pattern": "ROLLOUT_TOO_SHORT" + }, + "s3_shot_5i_12": { + "diff_carry_yd": 1.2, + "diff_total_yd": -23.5, + "diff_apex_ft": 1.1, + "status": "severe", + "error_pattern": "ROLLOUT_TOO_SHORT" + }, + "s3_shot_5i_13": { + "diff_carry_yd": 0.0, + "diff_total_yd": 10.1, + "diff_apex_ft": 0.6, + "status": "severe", + "error_pattern": "ROLLOUT_TOO_LONG" + }, + "s3_shot_5i_15": { + "diff_carry_yd": 0.0, + "diff_total_yd": 14.7, + "diff_apex_ft": -1.1, + "status": "severe", + "error_pattern": "ROLLOUT_TOO_LONG" + }, + "s3_shot_5i_16": { + "diff_carry_yd": 1.1, + "diff_total_yd": -20.8, + "diff_apex_ft": -0.2, + "status": "severe", + "error_pattern": "ROLLOUT_TOO_SHORT" + }, + "s3_shot_5i_17": { + "diff_carry_yd": 0.0, + "diff_total_yd": -1.9, + "diff_apex_ft": -0.3, + "status": "pass", + "error_pattern": null + }, + "s3_shot_6i_35": { + "diff_carry_yd": 0.0, + "diff_total_yd": -16.6, + "diff_apex_ft": -3.3, + "status": "severe", + "error_pattern": "ROLLOUT_TOO_SHORT" + }, + "s3_shot_6i_36": { + "diff_carry_yd": 0.0, + "diff_total_yd": -20.8, + "diff_apex_ft": 0.6, + "status": "severe", + "error_pattern": "ROLLOUT_TOO_SHORT" + }, + "s3_shot_6i_37": { + "diff_carry_yd": 0.0, + "diff_total_yd": 12.2, + "diff_apex_ft": -0.8, + "status": "severe", + "error_pattern": "ROLLOUT_TOO_LONG" + }, + "s3_shot_6i_38": { + "diff_carry_yd": 0.0, + "diff_total_yd": -21.3, + "diff_apex_ft": 0.1, + "status": "severe", + "error_pattern": "ROLLOUT_TOO_SHORT" + }, + "s3_shot_6i_39": { + "diff_carry_yd": -0.5, + "diff_total_yd": 6.4, + "diff_apex_ft": 0.0, + "status": "moderate", + "error_pattern": "ROLLOUT_TOO_LONG" + }, + "s3_shot_6i_40": { + "diff_carry_yd": -1.2, + "diff_total_yd": 7.8, + "diff_apex_ft": 0.1, + "status": "moderate", + "error_pattern": "ROLLOUT_TOO_LONG" + }, + "s3_shot_6i_41": { + "diff_carry_yd": 0.0, + "diff_total_yd": 13.2, + "diff_apex_ft": -1.0, + "status": "severe", + "error_pattern": "ROLLOUT_TOO_LONG" + }, + "s3_shot_6i_42": { + "diff_carry_yd": -1.1, + "diff_total_yd": -17.4, + "diff_apex_ft": 0.8, + "status": "severe", + "error_pattern": "ROLLOUT_TOO_SHORT" + }, + "s3_shot_6i_43": { + "diff_carry_yd": 2.4, + "diff_total_yd": 0.9, + "diff_apex_ft": 8.1, + "status": "pass", + "error_pattern": null + }, + "s3_shot_6i_44": { + "diff_carry_yd": -1.2, + "diff_total_yd": -27.4, + "diff_apex_ft": -1.3, + "status": "severe", + "error_pattern": "ROLLOUT_TOO_SHORT" + }, + "s3_shot_6i_45": { + "diff_carry_yd": 0.0, + "diff_total_yd": 21.1, + "diff_apex_ft": 0.6, + "status": "severe", + "error_pattern": "ROLLOUT_TOO_LONG" + }, + "s3_shot_6i_46": { + "diff_carry_yd": 3.8, + "diff_total_yd": -3.5, + "diff_apex_ft": -1.5, + "status": "moderate", + "error_pattern": "CARRY_TOO_LONG" + }, + "s3_shot_6i_47": { + "diff_carry_yd": 3.0, + "diff_total_yd": 10.8, + "diff_apex_ft": 11.8, + "status": "severe", + "error_pattern": "ROLLOUT_TOO_LONG" + }, + "s3_shot_6i_48": { + "diff_carry_yd": 2.1, + "diff_total_yd": 11.1, + "diff_apex_ft": 14.2, + "status": "severe", + "error_pattern": "ROLLOUT_TOO_LONG" + }, + "s3_shot_6i_49": { + "diff_carry_yd": 0.0, + "diff_total_yd": 7.0, + "diff_apex_ft": -0.3, + "status": "moderate", + "error_pattern": "ROLLOUT_TOO_LONG" + }, + "s3_shot_6i_50": { + "diff_carry_yd": -0.4, + "diff_total_yd": -12.1, + "diff_apex_ft": 3.9, + "status": "severe", + "error_pattern": "ROLLOUT_TOO_SHORT" + }, + "s3_shot_7i_25": { + "diff_carry_yd": -0.5, + "diff_total_yd": -18.0, + "diff_apex_ft": 0.9, + "status": "severe", + "error_pattern": "ROLLOUT_TOO_SHORT" + }, + "s3_shot_7i_26": { + "diff_carry_yd": 0.0, + "diff_total_yd": -21.8, + "diff_apex_ft": 1.1, + "status": "severe", + "error_pattern": "ROLLOUT_TOO_SHORT" + }, + "s3_shot_7i_27": { + "diff_carry_yd": -2.2, + "diff_total_yd": 4.3, + "diff_apex_ft": 8.0, + "status": "pass", + "error_pattern": null + }, + "s3_shot_7i_28": { + "diff_carry_yd": -2.8, + "diff_total_yd": 1.2, + "diff_apex_ft": 8.3, + "status": "pass", + "error_pattern": null + }, + "s3_shot_7i_29": { + "diff_carry_yd": 1.0, + "diff_total_yd": -5.8, + "diff_apex_ft": -3.5, + "status": "moderate", + "error_pattern": "ROLLOUT_TOO_SHORT" + }, + "s3_shot_7i_30": { + "diff_carry_yd": -4.2, + "diff_total_yd": 1.5, + "diff_apex_ft": 5.5, + "status": "moderate", + "error_pattern": "CARRY_TOO_SHORT" + }, + "s3_shot_7i_31": { + "diff_carry_yd": 0.0, + "diff_total_yd": -14.3, + "diff_apex_ft": -4.1, + "status": "severe", + "error_pattern": "ROLLOUT_TOO_SHORT" + }, + "s3_shot_7i_32": { + "diff_carry_yd": -1.8, + "diff_total_yd": -2.2, + "diff_apex_ft": 3.1, + "status": "pass", + "error_pattern": null + }, + "s3_shot_7i_33": { + "diff_carry_yd": -1.6, + "diff_total_yd": -1.3, + "diff_apex_ft": 4.7, + "status": "pass", + "error_pattern": null + }, + "s3_shot_7i_34": { + "diff_carry_yd": 0.4, + "diff_total_yd": 2.6, + "diff_apex_ft": 3.1, + "status": "pass", + "error_pattern": null + }, + "s3_shot_9i_1": { + "diff_carry_yd": 0.0, + "diff_total_yd": -12.6, + "diff_apex_ft": 1.3, + "status": "severe", + "error_pattern": "ROLLOUT_TOO_SHORT" + }, + "s3_shot_9i_2": { + "diff_carry_yd": 0.0, + "diff_total_yd": -9.1, + "diff_apex_ft": -3.0, + "status": "moderate", + "error_pattern": "ROLLOUT_TOO_SHORT" + }, + "s3_shot_9i_3": { + "diff_carry_yd": -1.4, + "diff_total_yd": 1.1, + "diff_apex_ft": -5.3, + "status": "pass", + "error_pattern": null + }, + "s3_shot_9i_5": { + "diff_carry_yd": -0.0, + "diff_total_yd": -5.5, + "diff_apex_ft": -5.5, + "status": "moderate", + "error_pattern": "ROLLOUT_TOO_SHORT" + }, + "s3_shot_9i_7": { + "diff_carry_yd": 1.1, + "diff_total_yd": 1.6, + "diff_apex_ft": -4.2, + "status": "pass", + "error_pattern": null + }, + "s3_shot_9i_8": { + "diff_carry_yd": -1.6, + "diff_total_yd": 4.1, + "diff_apex_ft": -1.5, + "status": "pass", + "error_pattern": null + }, + "s3_shot_9i_9": { + "diff_carry_yd": -1.2, + "diff_total_yd": 1.9, + "diff_apex_ft": -6.1, + "status": "pass", + "error_pattern": null + }, + "s3_shot_driver_51": { + "diff_carry_yd": 4.4, + "diff_total_yd": 29.6, + "diff_apex_ft": 0.6, + "status": "severe", + "error_pattern": "CARRY_AND_ROLLOUT_LONG" + }, + "s3_shot_driver_52": { + "diff_carry_yd": 5.4, + "diff_total_yd": 25.3, + "diff_apex_ft": -1.4, + "status": "severe", + "error_pattern": "CARRY_AND_ROLLOUT_LONG" + }, + "s3_shot_driver_53": { + "diff_carry_yd": 2.5, + "diff_total_yd": 17.9, + "diff_apex_ft": -3.8, + "status": "severe", + "error_pattern": "ROLLOUT_TOO_LONG" + }, + "s3_shot_driver_54": { + "diff_carry_yd": -1.0, + "diff_total_yd": 0.0, + "diff_apex_ft": -2.2, + "status": "pass", + "error_pattern": null + }, + "s3_shot_driver_55": { + "diff_carry_yd": 2.5, + "diff_total_yd": 22.6, + "diff_apex_ft": 0.4, + "status": "severe", + "error_pattern": "ROLLOUT_TOO_LONG" + }, + "s3_shot_driver_56": { + "diff_carry_yd": -2.2, + "diff_total_yd": 20.7, + "diff_apex_ft": 9.7, + "status": "severe", + "error_pattern": "ROLLOUT_TOO_LONG" + }, + "s3_shot_driver_57": { + "diff_carry_yd": -5.1, + "diff_total_yd": -19.7, + "diff_apex_ft": -3.5, + "status": "severe", + "error_pattern": "CARRY_AND_ROLLOUT_SHORT" + }, + "s3_shot_driver_58": { + "diff_carry_yd": 11.0, + "diff_total_yd": 37.0, + "diff_apex_ft": -4.8, + "status": "severe", + "error_pattern": "CARRY_AND_ROLLOUT_LONG" + }, + "s3_shot_driver_59": { + "diff_carry_yd": -0.9, + "diff_total_yd": 17.7, + "diff_apex_ft": -3.8, + "status": "severe", + "error_pattern": "ROLLOUT_TOO_LONG" + }, + "s3_shot_driver_60": { + "diff_carry_yd": 0.0, + "diff_total_yd": -14.9, + "diff_apex_ft": -2.4, + "status": "severe", + "error_pattern": "ROLLOUT_TOO_SHORT" + }, + "s3_shot_pw_64": { + "diff_carry_yd": 0.0, + "diff_total_yd": 9.6, + "diff_apex_ft": -3.7, + "status": "moderate", + "error_pattern": "ROLLOUT_TOO_LONG" + }, + "s3_shot_pw_65": { + "diff_carry_yd": -0.1, + "diff_total_yd": 4.7, + "diff_apex_ft": -3.8, + "status": "pass", + "error_pattern": null + }, + "s3_shot_pw_66": { + "diff_carry_yd": -0.0, + "diff_total_yd": 11.3, + "diff_apex_ft": -3.7, + "status": "severe", + "error_pattern": "ROLLOUT_TOO_LONG" + }, + "s3_shot_pw_67": { + "diff_carry_yd": 0.0, + "diff_total_yd": 5.7, + "diff_apex_ft": -4.0, + "status": "moderate", + "error_pattern": "ROLLOUT_TOO_LONG" + }, + "s3_shot_pw_68": { + "diff_carry_yd": -0.0, + "diff_total_yd": 6.1, + "diff_apex_ft": -6.2, + "status": "moderate", + "error_pattern": "ROLLOUT_TOO_LONG" + }, + "s3_shot_pw_69": { + "diff_carry_yd": 0.0, + "diff_total_yd": -3.9, + "diff_apex_ft": -3.8, + "status": "pass", + "error_pattern": null + }, + "topped_test_shot": { + "diff_carry_yd": -0.6, + "diff_total_yd": 13.9, + "diff_apex_ft": -0.1, + "status": "severe", + "error_pattern": "ROLLOUT_TOO_LONG" + }, + "wedge_shot_1": { + "diff_carry_yd": 0.0, + "diff_total_yd": -0.7, + "diff_apex_ft": -2.4, + "status": "pass", + "error_pattern": null + }, + "wedge_shot_2": { + "diff_carry_yd": 0.0, + "diff_total_yd": 2.7, + "diff_apex_ft": -4.2, + "status": "pass", + "error_pattern": null + }, + "wedge_test_shot": { + "diff_carry_yd": 0.0, + "diff_total_yd": 3.6, + "diff_apex_ft": -3.2, + "status": "pass", + "error_pattern": null + }, + "wedge_test_shot2": { + "diff_carry_yd": -0.0, + "diff_total_yd": 3.1, + "diff_apex_ft": -2.0, + "status": "pass", + "error_pattern": null + }, + "wood1": { + "diff_carry_yd": 5.7, + "diff_total_yd": -3.2, + "diff_apex_ft": 3.2, + "status": "moderate", + "error_pattern": "CARRY_TOO_LONG" + }, + "wood2": { + "diff_carry_yd": 4.8, + "diff_total_yd": 0.7, + "diff_apex_ft": -1.6, + "status": "moderate", + "error_pattern": "CARRY_TOO_LONG" + }, + "wood_low_test_shot": { + "diff_carry_yd": 1.8, + "diff_total_yd": 22.9, + "diff_apex_ft": 0.4, + "status": "severe", + "error_pattern": "ROLLOUT_TOO_LONG" + } + }, + "regressions": [], + "conflicts": [ + "Bounce.FlightTangentialRetentionBase", + "Bounce.FlightSpinFactorMin", + "Bounce.FlightSpinFactorDivisor", + "Rollout.MidSpinMultiplierMax", + "Rollout.HighSpinMultiplierMax", + "Rollout.FrictionBlendSpeed", + "KineticFrictionMultiplier", + "Bounce.RolloutHighSpinRetention", + "Rollout.ChipVelocityScaleMin", + "Rollout.ChipVelocityScaleMax", + "Bounce.CorBaseA", + "Rollout.LowSpinMultiplierMax", + "Rollout.LowSpinThreshold", + "RollingFrictionMultiplier", + "Bounce.RolloutLowSpinRetention", + "Flight.ClMaxBase", + "Flight.CdMin", + "DragScaleMultiplier", + "LiftScaleMultiplier" + ] +} diff --git a/assets/data/calibration/history/iteration_037.json b/assets/data/calibration/history/iteration_037.json new file mode 100644 index 0000000..40fddf6 --- /dev/null +++ b/assets/data/calibration/history/iteration_037.json @@ -0,0 +1,749 @@ +{ + "iteration": 37, + "timestamp": "2026-03-14T00:59:31.324070", + "profile_overrides": {}, + "summary": { + "pass": 29, + "moderate": 19, + "severe": 51, + "no_reference": 3 + }, + "per_shot": { + "5iron": { + "diff_carry_yd": 1.6, + "diff_total_yd": 12.1, + "diff_apex_ft": 5.0, + "status": "severe", + "error_pattern": "ROLLOUT_TOO_LONG" + }, + "approach_mid_iron_test_shot": { + "diff_carry_yd": 0.0, + "diff_total_yd": 7.9, + "diff_apex_ft": -4.7, + "status": "moderate", + "error_pattern": "ROLLOUT_TOO_LONG" + }, + "bump_and_run": { + "diff_carry_yd": -0.1, + "diff_total_yd": -27.5, + "diff_apex_ft": -2.1, + "status": "severe", + "error_pattern": "ROLLOUT_TOO_SHORT" + }, + "bump_and_run_slow": { + "diff_carry_yd": null, + "diff_total_yd": null, + "diff_apex_ft": null, + "status": "pass", + "error_pattern": null + }, + "bump_test_shot": { + "diff_carry_yd": 0.0, + "diff_total_yd": 12.8, + "diff_apex_ft": -0.1, + "status": "severe", + "error_pattern": "ROLLOUT_TOO_LONG" + }, + "checked_test_shot": { + "diff_carry_yd": -0.6, + "diff_total_yd": 1.1, + "diff_apex_ft": -8.7, + "status": "pass", + "error_pattern": null + }, + "chip_test_shot": { + "diff_carry_yd": null, + "diff_total_yd": null, + "diff_apex_ft": null, + "status": "pass", + "error_pattern": null + }, + "drive_test_shot": { + "diff_carry_yd": 1.0, + "diff_total_yd": 0.8, + "diff_apex_ft": -0.6, + "status": "pass", + "error_pattern": null + }, + "driver1": { + "diff_carry_yd": 0.3, + "diff_total_yd": -25.7, + "diff_apex_ft": -0.7, + "status": "severe", + "error_pattern": "ROLLOUT_TOO_SHORT" + }, + "driver2": { + "diff_carry_yd": 2.5, + "diff_total_yd": 8.6, + "diff_apex_ft": -2.7, + "status": "moderate", + "error_pattern": "ROLLOUT_TOO_LONG" + }, + "driver3": { + "diff_carry_yd": -0.8, + "diff_total_yd": 23.3, + "diff_apex_ft": 21.1, + "status": "severe", + "error_pattern": "ROLLOUT_TOO_LONG" + }, + "driver4": { + "diff_carry_yd": 0.7, + "diff_total_yd": 16.3, + "diff_apex_ft": 4.4, + "status": "severe", + "error_pattern": "ROLLOUT_TOO_LONG" + }, + "flop_test_shot": { + "diff_carry_yd": 0.9, + "diff_total_yd": 2.8, + "diff_apex_ft": -7.6, + "status": "pass", + "error_pattern": null + }, + "p_wedge_shot_1": { + "diff_carry_yd": 0.0, + "diff_total_yd": 2.2, + "diff_apex_ft": -5.4, + "status": "pass", + "error_pattern": null + }, + "s2_shot_10": { + "diff_carry_yd": 0.0, + "diff_total_yd": 10.7, + "diff_apex_ft": -5.8, + "status": "severe", + "error_pattern": "ROLLOUT_TOO_LONG" + }, + "s2_shot_11": { + "diff_carry_yd": 0.0, + "diff_total_yd": 2.0, + "diff_apex_ft": -4.4, + "status": "pass", + "error_pattern": null + }, + "s2_shot_12": { + "diff_carry_yd": 1.7, + "diff_total_yd": 9.5, + "diff_apex_ft": -5.1, + "status": "moderate", + "error_pattern": "ROLLOUT_TOO_LONG" + }, + "s2_shot_13": { + "diff_carry_yd": -1.7, + "diff_total_yd": 3.0, + "diff_apex_ft": -5.9, + "status": "pass", + "error_pattern": null + }, + "s2_shot_14": { + "diff_carry_yd": 0.2, + "diff_total_yd": 1.6, + "diff_apex_ft": -5.9, + "status": "pass", + "error_pattern": null + }, + "s2_shot_15": { + "diff_carry_yd": -0.6, + "diff_total_yd": -12.3, + "diff_apex_ft": -1.9, + "status": "severe", + "error_pattern": "ROLLOUT_TOO_SHORT" + }, + "s2_shot_16": { + "diff_carry_yd": 0.4, + "diff_total_yd": 2.2, + "diff_apex_ft": -3.2, + "status": "pass", + "error_pattern": null + }, + "s2_shot_17": { + "diff_carry_yd": 0.0, + "diff_total_yd": 9.2, + "diff_apex_ft": -3.6, + "status": "moderate", + "error_pattern": "ROLLOUT_TOO_LONG" + }, + "s2_shot_18": { + "diff_carry_yd": 1.1, + "diff_total_yd": 16.6, + "diff_apex_ft": 3.1, + "status": "severe", + "error_pattern": "ROLLOUT_TOO_LONG" + }, + "s2_shot_19": { + "diff_carry_yd": -3.1, + "diff_total_yd": -4.4, + "diff_apex_ft": -0.9, + "status": "moderate", + "error_pattern": "CARRY_TOO_SHORT" + }, + "s2_shot_20": { + "diff_carry_yd": 0.2, + "diff_total_yd": 11.1, + "diff_apex_ft": -1.8, + "status": "severe", + "error_pattern": "ROLLOUT_TOO_LONG" + }, + "s2_shot_21": { + "diff_carry_yd": 5.8, + "diff_total_yd": 28.8, + "diff_apex_ft": 1.8, + "status": "severe", + "error_pattern": "CARRY_AND_ROLLOUT_LONG" + }, + "s2_shot_22": { + "diff_carry_yd": -0.7, + "diff_total_yd": 3.5, + "diff_apex_ft": -1.4, + "status": "pass", + "error_pattern": null + }, + "s2_shot_23": { + "diff_carry_yd": -2.8, + "diff_total_yd": -18.9, + "diff_apex_ft": 0.1, + "status": "severe", + "error_pattern": "ROLLOUT_TOO_SHORT" + }, + "s2_shot_24": { + "diff_carry_yd": -0.7, + "diff_total_yd": 2.7, + "diff_apex_ft": -1.6, + "status": "pass", + "error_pattern": null + }, + "s2_shot_26": { + "diff_carry_yd": 2.6, + "diff_total_yd": 23.1, + "diff_apex_ft": 24.2, + "status": "severe", + "error_pattern": "ROLLOUT_TOO_LONG" + }, + "s2_shot_27": { + "diff_carry_yd": -3.4, + "diff_total_yd": 13.8, + "diff_apex_ft": 5.0, + "status": "severe", + "error_pattern": "CARRY_TOO_SHORT" + }, + "s2_shot_9": { + "diff_carry_yd": -2.8, + "diff_total_yd": 3.5, + "diff_apex_ft": 7.3, + "status": "pass", + "error_pattern": null + }, + "s3_shot_3w_18": { + "diff_carry_yd": null, + "diff_total_yd": null, + "diff_apex_ft": null, + "status": "pass", + "error_pattern": null + }, + "s3_shot_3w_19": { + "diff_carry_yd": -0.1, + "diff_total_yd": 16.7, + "diff_apex_ft": 0.1, + "status": "severe", + "error_pattern": "ROLLOUT_TOO_LONG" + }, + "s3_shot_3w_21": { + "diff_carry_yd": 1.1, + "diff_total_yd": 16.6, + "diff_apex_ft": 0.3, + "status": "severe", + "error_pattern": "ROLLOUT_TOO_LONG" + }, + "s3_shot_3w_22": { + "diff_carry_yd": 0.0, + "diff_total_yd": 20.2, + "diff_apex_ft": 0.5, + "status": "severe", + "error_pattern": "ROLLOUT_TOO_LONG" + }, + "s3_shot_3w_23": { + "diff_carry_yd": 0.8, + "diff_total_yd": -22.7, + "diff_apex_ft": -1.2, + "status": "severe", + "error_pattern": "ROLLOUT_TOO_SHORT" + }, + "s3_shot_3w_24": { + "diff_carry_yd": 3.9, + "diff_total_yd": 29.6, + "diff_apex_ft": 1.9, + "status": "severe", + "error_pattern": "CARRY_AND_ROLLOUT_LONG" + }, + "s3_shot_5i_10": { + "diff_carry_yd": 0.0, + "diff_total_yd": -7.1, + "diff_apex_ft": 5.9, + "status": "moderate", + "error_pattern": "ROLLOUT_TOO_SHORT" + }, + "s3_shot_5i_11": { + "diff_carry_yd": 0.0, + "diff_total_yd": -17.2, + "diff_apex_ft": -1.3, + "status": "severe", + "error_pattern": "ROLLOUT_TOO_SHORT" + }, + "s3_shot_5i_12": { + "diff_carry_yd": 1.2, + "diff_total_yd": -23.5, + "diff_apex_ft": 1.1, + "status": "severe", + "error_pattern": "ROLLOUT_TOO_SHORT" + }, + "s3_shot_5i_13": { + "diff_carry_yd": 0.0, + "diff_total_yd": 10.1, + "diff_apex_ft": 0.6, + "status": "severe", + "error_pattern": "ROLLOUT_TOO_LONG" + }, + "s3_shot_5i_15": { + "diff_carry_yd": 0.0, + "diff_total_yd": 14.7, + "diff_apex_ft": -1.1, + "status": "severe", + "error_pattern": "ROLLOUT_TOO_LONG" + }, + "s3_shot_5i_16": { + "diff_carry_yd": 1.1, + "diff_total_yd": -20.8, + "diff_apex_ft": -0.2, + "status": "severe", + "error_pattern": "ROLLOUT_TOO_SHORT" + }, + "s3_shot_5i_17": { + "diff_carry_yd": 0.0, + "diff_total_yd": -1.9, + "diff_apex_ft": -0.3, + "status": "pass", + "error_pattern": null + }, + "s3_shot_6i_35": { + "diff_carry_yd": 0.0, + "diff_total_yd": -16.6, + "diff_apex_ft": -3.3, + "status": "severe", + "error_pattern": "ROLLOUT_TOO_SHORT" + }, + "s3_shot_6i_36": { + "diff_carry_yd": 0.0, + "diff_total_yd": -20.8, + "diff_apex_ft": 0.6, + "status": "severe", + "error_pattern": "ROLLOUT_TOO_SHORT" + }, + "s3_shot_6i_37": { + "diff_carry_yd": 0.0, + "diff_total_yd": 12.2, + "diff_apex_ft": -0.8, + "status": "severe", + "error_pattern": "ROLLOUT_TOO_LONG" + }, + "s3_shot_6i_38": { + "diff_carry_yd": 0.0, + "diff_total_yd": -21.3, + "diff_apex_ft": 0.1, + "status": "severe", + "error_pattern": "ROLLOUT_TOO_SHORT" + }, + "s3_shot_6i_39": { + "diff_carry_yd": -0.5, + "diff_total_yd": 6.4, + "diff_apex_ft": 0.0, + "status": "moderate", + "error_pattern": "ROLLOUT_TOO_LONG" + }, + "s3_shot_6i_40": { + "diff_carry_yd": -1.2, + "diff_total_yd": 7.8, + "diff_apex_ft": 0.1, + "status": "moderate", + "error_pattern": "ROLLOUT_TOO_LONG" + }, + "s3_shot_6i_41": { + "diff_carry_yd": 0.0, + "diff_total_yd": 13.2, + "diff_apex_ft": -1.0, + "status": "severe", + "error_pattern": "ROLLOUT_TOO_LONG" + }, + "s3_shot_6i_42": { + "diff_carry_yd": -1.1, + "diff_total_yd": -17.4, + "diff_apex_ft": 0.8, + "status": "severe", + "error_pattern": "ROLLOUT_TOO_SHORT" + }, + "s3_shot_6i_43": { + "diff_carry_yd": 2.4, + "diff_total_yd": 0.9, + "diff_apex_ft": 8.1, + "status": "pass", + "error_pattern": null + }, + "s3_shot_6i_44": { + "diff_carry_yd": -1.2, + "diff_total_yd": -27.4, + "diff_apex_ft": -1.3, + "status": "severe", + "error_pattern": "ROLLOUT_TOO_SHORT" + }, + "s3_shot_6i_45": { + "diff_carry_yd": 0.0, + "diff_total_yd": 21.1, + "diff_apex_ft": 0.6, + "status": "severe", + "error_pattern": "ROLLOUT_TOO_LONG" + }, + "s3_shot_6i_46": { + "diff_carry_yd": 3.8, + "diff_total_yd": -3.5, + "diff_apex_ft": -1.5, + "status": "moderate", + "error_pattern": "CARRY_TOO_LONG" + }, + "s3_shot_6i_47": { + "diff_carry_yd": 3.0, + "diff_total_yd": 10.8, + "diff_apex_ft": 11.8, + "status": "severe", + "error_pattern": "ROLLOUT_TOO_LONG" + }, + "s3_shot_6i_48": { + "diff_carry_yd": 2.1, + "diff_total_yd": 11.1, + "diff_apex_ft": 14.2, + "status": "severe", + "error_pattern": "ROLLOUT_TOO_LONG" + }, + "s3_shot_6i_49": { + "diff_carry_yd": 0.0, + "diff_total_yd": 7.0, + "diff_apex_ft": -0.3, + "status": "moderate", + "error_pattern": "ROLLOUT_TOO_LONG" + }, + "s3_shot_6i_50": { + "diff_carry_yd": -0.4, + "diff_total_yd": -12.1, + "diff_apex_ft": 3.9, + "status": "severe", + "error_pattern": "ROLLOUT_TOO_SHORT" + }, + "s3_shot_7i_25": { + "diff_carry_yd": -0.5, + "diff_total_yd": -18.0, + "diff_apex_ft": 0.9, + "status": "severe", + "error_pattern": "ROLLOUT_TOO_SHORT" + }, + "s3_shot_7i_26": { + "diff_carry_yd": 0.0, + "diff_total_yd": -21.8, + "diff_apex_ft": 1.1, + "status": "severe", + "error_pattern": "ROLLOUT_TOO_SHORT" + }, + "s3_shot_7i_27": { + "diff_carry_yd": -2.2, + "diff_total_yd": 4.3, + "diff_apex_ft": 8.0, + "status": "pass", + "error_pattern": null + }, + "s3_shot_7i_28": { + "diff_carry_yd": -2.8, + "diff_total_yd": 1.2, + "diff_apex_ft": 8.3, + "status": "pass", + "error_pattern": null + }, + "s3_shot_7i_29": { + "diff_carry_yd": 1.0, + "diff_total_yd": -5.8, + "diff_apex_ft": -3.5, + "status": "moderate", + "error_pattern": "ROLLOUT_TOO_SHORT" + }, + "s3_shot_7i_30": { + "diff_carry_yd": -4.2, + "diff_total_yd": 1.5, + "diff_apex_ft": 5.5, + "status": "moderate", + "error_pattern": "CARRY_TOO_SHORT" + }, + "s3_shot_7i_31": { + "diff_carry_yd": 0.0, + "diff_total_yd": -14.3, + "diff_apex_ft": -4.1, + "status": "severe", + "error_pattern": "ROLLOUT_TOO_SHORT" + }, + "s3_shot_7i_32": { + "diff_carry_yd": -1.8, + "diff_total_yd": -2.2, + "diff_apex_ft": 3.1, + "status": "pass", + "error_pattern": null + }, + "s3_shot_7i_33": { + "diff_carry_yd": -1.6, + "diff_total_yd": -1.3, + "diff_apex_ft": 4.7, + "status": "pass", + "error_pattern": null + }, + "s3_shot_7i_34": { + "diff_carry_yd": 0.4, + "diff_total_yd": 2.6, + "diff_apex_ft": 3.1, + "status": "pass", + "error_pattern": null + }, + "s3_shot_9i_1": { + "diff_carry_yd": 0.0, + "diff_total_yd": -12.6, + "diff_apex_ft": 1.3, + "status": "severe", + "error_pattern": "ROLLOUT_TOO_SHORT" + }, + "s3_shot_9i_2": { + "diff_carry_yd": 0.0, + "diff_total_yd": -9.1, + "diff_apex_ft": -3.0, + "status": "moderate", + "error_pattern": "ROLLOUT_TOO_SHORT" + }, + "s3_shot_9i_3": { + "diff_carry_yd": -1.4, + "diff_total_yd": 1.1, + "diff_apex_ft": -5.3, + "status": "pass", + "error_pattern": null + }, + "s3_shot_9i_5": { + "diff_carry_yd": -0.0, + "diff_total_yd": -5.5, + "diff_apex_ft": -5.5, + "status": "moderate", + "error_pattern": "ROLLOUT_TOO_SHORT" + }, + "s3_shot_9i_7": { + "diff_carry_yd": 1.1, + "diff_total_yd": 1.6, + "diff_apex_ft": -4.2, + "status": "pass", + "error_pattern": null + }, + "s3_shot_9i_8": { + "diff_carry_yd": -1.6, + "diff_total_yd": 4.1, + "diff_apex_ft": -1.5, + "status": "pass", + "error_pattern": null + }, + "s3_shot_9i_9": { + "diff_carry_yd": -1.2, + "diff_total_yd": 1.9, + "diff_apex_ft": -6.1, + "status": "pass", + "error_pattern": null + }, + "s3_shot_driver_51": { + "diff_carry_yd": 4.4, + "diff_total_yd": 29.6, + "diff_apex_ft": 0.6, + "status": "severe", + "error_pattern": "CARRY_AND_ROLLOUT_LONG" + }, + "s3_shot_driver_52": { + "diff_carry_yd": 5.4, + "diff_total_yd": 25.3, + "diff_apex_ft": -1.4, + "status": "severe", + "error_pattern": "CARRY_AND_ROLLOUT_LONG" + }, + "s3_shot_driver_53": { + "diff_carry_yd": 2.5, + "diff_total_yd": 17.9, + "diff_apex_ft": -3.8, + "status": "severe", + "error_pattern": "ROLLOUT_TOO_LONG" + }, + "s3_shot_driver_54": { + "diff_carry_yd": -1.0, + "diff_total_yd": 0.0, + "diff_apex_ft": -2.2, + "status": "pass", + "error_pattern": null + }, + "s3_shot_driver_55": { + "diff_carry_yd": 2.5, + "diff_total_yd": 22.6, + "diff_apex_ft": 0.4, + "status": "severe", + "error_pattern": "ROLLOUT_TOO_LONG" + }, + "s3_shot_driver_56": { + "diff_carry_yd": -2.2, + "diff_total_yd": 20.7, + "diff_apex_ft": 9.7, + "status": "severe", + "error_pattern": "ROLLOUT_TOO_LONG" + }, + "s3_shot_driver_57": { + "diff_carry_yd": -5.1, + "diff_total_yd": -19.7, + "diff_apex_ft": -3.5, + "status": "severe", + "error_pattern": "CARRY_AND_ROLLOUT_SHORT" + }, + "s3_shot_driver_58": { + "diff_carry_yd": 11.0, + "diff_total_yd": 37.0, + "diff_apex_ft": -4.8, + "status": "severe", + "error_pattern": "CARRY_AND_ROLLOUT_LONG" + }, + "s3_shot_driver_59": { + "diff_carry_yd": -0.9, + "diff_total_yd": 17.7, + "diff_apex_ft": -3.8, + "status": "severe", + "error_pattern": "ROLLOUT_TOO_LONG" + }, + "s3_shot_driver_60": { + "diff_carry_yd": 0.0, + "diff_total_yd": -14.9, + "diff_apex_ft": -2.4, + "status": "severe", + "error_pattern": "ROLLOUT_TOO_SHORT" + }, + "s3_shot_pw_64": { + "diff_carry_yd": 0.0, + "diff_total_yd": 9.6, + "diff_apex_ft": -3.7, + "status": "moderate", + "error_pattern": "ROLLOUT_TOO_LONG" + }, + "s3_shot_pw_65": { + "diff_carry_yd": -0.1, + "diff_total_yd": 4.7, + "diff_apex_ft": -3.8, + "status": "pass", + "error_pattern": null + }, + "s3_shot_pw_66": { + "diff_carry_yd": -0.0, + "diff_total_yd": 11.3, + "diff_apex_ft": -3.7, + "status": "severe", + "error_pattern": "ROLLOUT_TOO_LONG" + }, + "s3_shot_pw_67": { + "diff_carry_yd": 0.0, + "diff_total_yd": 5.7, + "diff_apex_ft": -4.0, + "status": "moderate", + "error_pattern": "ROLLOUT_TOO_LONG" + }, + "s3_shot_pw_68": { + "diff_carry_yd": -0.0, + "diff_total_yd": 6.1, + "diff_apex_ft": -6.2, + "status": "moderate", + "error_pattern": "ROLLOUT_TOO_LONG" + }, + "s3_shot_pw_69": { + "diff_carry_yd": 0.0, + "diff_total_yd": -3.9, + "diff_apex_ft": -3.8, + "status": "pass", + "error_pattern": null + }, + "topped_test_shot": { + "diff_carry_yd": -0.6, + "diff_total_yd": 13.9, + "diff_apex_ft": -0.1, + "status": "severe", + "error_pattern": "ROLLOUT_TOO_LONG" + }, + "wedge_shot_1": { + "diff_carry_yd": 0.0, + "diff_total_yd": -0.7, + "diff_apex_ft": -2.4, + "status": "pass", + "error_pattern": null + }, + "wedge_shot_2": { + "diff_carry_yd": 0.0, + "diff_total_yd": 2.7, + "diff_apex_ft": -4.2, + "status": "pass", + "error_pattern": null + }, + "wedge_test_shot": { + "diff_carry_yd": 0.0, + "diff_total_yd": 3.6, + "diff_apex_ft": -3.2, + "status": "pass", + "error_pattern": null + }, + "wedge_test_shot2": { + "diff_carry_yd": -0.0, + "diff_total_yd": 3.1, + "diff_apex_ft": -2.0, + "status": "pass", + "error_pattern": null + }, + "wood1": { + "diff_carry_yd": 5.7, + "diff_total_yd": -3.2, + "diff_apex_ft": 3.2, + "status": "moderate", + "error_pattern": "CARRY_TOO_LONG" + }, + "wood2": { + "diff_carry_yd": 4.8, + "diff_total_yd": 0.7, + "diff_apex_ft": -1.6, + "status": "moderate", + "error_pattern": "CARRY_TOO_LONG" + }, + "wood_low_test_shot": { + "diff_carry_yd": 1.8, + "diff_total_yd": 22.9, + "diff_apex_ft": 0.4, + "status": "severe", + "error_pattern": "ROLLOUT_TOO_LONG" + } + }, + "regressions": [], + "conflicts": [ + "Bounce.FlightTangentialRetentionBase", + "Bounce.FlightSpinFactorMin", + "Bounce.FlightSpinFactorDivisor", + "Rollout.MidSpinMultiplierMax", + "Rollout.HighSpinMultiplierMax", + "Rollout.FrictionBlendSpeed", + "KineticFrictionMultiplier", + "Bounce.RolloutHighSpinRetention", + "Rollout.ChipVelocityScaleMin", + "Rollout.ChipVelocityScaleMax", + "Bounce.CorBaseA", + "Rollout.LowSpinMultiplierMax", + "Rollout.LowSpinThreshold", + "RollingFrictionMultiplier", + "Bounce.RolloutLowSpinRetention", + "Flight.ClMaxBase", + "Flight.CdMin", + "DragScaleMultiplier", + "LiftScaleMultiplier" + ] +} diff --git a/assets/data/calibration/history/iteration_038.json b/assets/data/calibration/history/iteration_038.json new file mode 100644 index 0000000..f67fb58 --- /dev/null +++ b/assets/data/calibration/history/iteration_038.json @@ -0,0 +1,749 @@ +{ + "iteration": 38, + "timestamp": "2026-03-14T01:01:09.634732", + "profile_overrides": {}, + "summary": { + "pass": 29, + "moderate": 19, + "severe": 51, + "no_reference": 3 + }, + "per_shot": { + "5iron": { + "diff_carry_yd": 1.6, + "diff_total_yd": 12.1, + "diff_apex_ft": 5.0, + "status": "severe", + "error_pattern": "ROLLOUT_TOO_LONG" + }, + "approach_mid_iron_test_shot": { + "diff_carry_yd": 0.0, + "diff_total_yd": 7.9, + "diff_apex_ft": -4.7, + "status": "moderate", + "error_pattern": "ROLLOUT_TOO_LONG" + }, + "bump_and_run": { + "diff_carry_yd": -0.1, + "diff_total_yd": -27.5, + "diff_apex_ft": -2.1, + "status": "severe", + "error_pattern": "ROLLOUT_TOO_SHORT" + }, + "bump_and_run_slow": { + "diff_carry_yd": null, + "diff_total_yd": null, + "diff_apex_ft": null, + "status": "pass", + "error_pattern": null + }, + "bump_test_shot": { + "diff_carry_yd": 0.0, + "diff_total_yd": 12.8, + "diff_apex_ft": -0.1, + "status": "severe", + "error_pattern": "ROLLOUT_TOO_LONG" + }, + "checked_test_shot": { + "diff_carry_yd": -0.6, + "diff_total_yd": 1.1, + "diff_apex_ft": -8.7, + "status": "pass", + "error_pattern": null + }, + "chip_test_shot": { + "diff_carry_yd": null, + "diff_total_yd": null, + "diff_apex_ft": null, + "status": "pass", + "error_pattern": null + }, + "drive_test_shot": { + "diff_carry_yd": 1.0, + "diff_total_yd": 0.8, + "diff_apex_ft": -0.6, + "status": "pass", + "error_pattern": null + }, + "driver1": { + "diff_carry_yd": 0.3, + "diff_total_yd": -25.7, + "diff_apex_ft": -0.7, + "status": "severe", + "error_pattern": "ROLLOUT_TOO_SHORT" + }, + "driver2": { + "diff_carry_yd": 2.5, + "diff_total_yd": 8.6, + "diff_apex_ft": -2.7, + "status": "moderate", + "error_pattern": "ROLLOUT_TOO_LONG" + }, + "driver3": { + "diff_carry_yd": -0.8, + "diff_total_yd": 23.3, + "diff_apex_ft": 21.1, + "status": "severe", + "error_pattern": "ROLLOUT_TOO_LONG" + }, + "driver4": { + "diff_carry_yd": 0.7, + "diff_total_yd": 16.3, + "diff_apex_ft": 4.4, + "status": "severe", + "error_pattern": "ROLLOUT_TOO_LONG" + }, + "flop_test_shot": { + "diff_carry_yd": 0.9, + "diff_total_yd": 2.8, + "diff_apex_ft": -7.6, + "status": "pass", + "error_pattern": null + }, + "p_wedge_shot_1": { + "diff_carry_yd": 0.0, + "diff_total_yd": 2.2, + "diff_apex_ft": -5.4, + "status": "pass", + "error_pattern": null + }, + "s2_shot_10": { + "diff_carry_yd": 0.0, + "diff_total_yd": 10.7, + "diff_apex_ft": -5.8, + "status": "severe", + "error_pattern": "ROLLOUT_TOO_LONG" + }, + "s2_shot_11": { + "diff_carry_yd": 0.0, + "diff_total_yd": 2.0, + "diff_apex_ft": -4.4, + "status": "pass", + "error_pattern": null + }, + "s2_shot_12": { + "diff_carry_yd": 1.7, + "diff_total_yd": 9.5, + "diff_apex_ft": -5.1, + "status": "moderate", + "error_pattern": "ROLLOUT_TOO_LONG" + }, + "s2_shot_13": { + "diff_carry_yd": -1.7, + "diff_total_yd": 3.0, + "diff_apex_ft": -5.9, + "status": "pass", + "error_pattern": null + }, + "s2_shot_14": { + "diff_carry_yd": 0.2, + "diff_total_yd": 1.6, + "diff_apex_ft": -5.9, + "status": "pass", + "error_pattern": null + }, + "s2_shot_15": { + "diff_carry_yd": -0.6, + "diff_total_yd": -12.3, + "diff_apex_ft": -1.9, + "status": "severe", + "error_pattern": "ROLLOUT_TOO_SHORT" + }, + "s2_shot_16": { + "diff_carry_yd": 0.4, + "diff_total_yd": 2.2, + "diff_apex_ft": -3.2, + "status": "pass", + "error_pattern": null + }, + "s2_shot_17": { + "diff_carry_yd": 0.0, + "diff_total_yd": 9.2, + "diff_apex_ft": -3.6, + "status": "moderate", + "error_pattern": "ROLLOUT_TOO_LONG" + }, + "s2_shot_18": { + "diff_carry_yd": 1.1, + "diff_total_yd": 16.6, + "diff_apex_ft": 3.1, + "status": "severe", + "error_pattern": "ROLLOUT_TOO_LONG" + }, + "s2_shot_19": { + "diff_carry_yd": -3.1, + "diff_total_yd": -4.4, + "diff_apex_ft": -0.9, + "status": "moderate", + "error_pattern": "CARRY_TOO_SHORT" + }, + "s2_shot_20": { + "diff_carry_yd": 0.2, + "diff_total_yd": 11.1, + "diff_apex_ft": -1.8, + "status": "severe", + "error_pattern": "ROLLOUT_TOO_LONG" + }, + "s2_shot_21": { + "diff_carry_yd": 5.8, + "diff_total_yd": 28.8, + "diff_apex_ft": 1.8, + "status": "severe", + "error_pattern": "CARRY_AND_ROLLOUT_LONG" + }, + "s2_shot_22": { + "diff_carry_yd": -0.7, + "diff_total_yd": 3.5, + "diff_apex_ft": -1.4, + "status": "pass", + "error_pattern": null + }, + "s2_shot_23": { + "diff_carry_yd": -2.8, + "diff_total_yd": -18.9, + "diff_apex_ft": 0.1, + "status": "severe", + "error_pattern": "ROLLOUT_TOO_SHORT" + }, + "s2_shot_24": { + "diff_carry_yd": -0.7, + "diff_total_yd": 2.7, + "diff_apex_ft": -1.6, + "status": "pass", + "error_pattern": null + }, + "s2_shot_26": { + "diff_carry_yd": 2.6, + "diff_total_yd": 23.1, + "diff_apex_ft": 24.2, + "status": "severe", + "error_pattern": "ROLLOUT_TOO_LONG" + }, + "s2_shot_27": { + "diff_carry_yd": -3.4, + "diff_total_yd": 13.8, + "diff_apex_ft": 5.0, + "status": "severe", + "error_pattern": "CARRY_TOO_SHORT" + }, + "s2_shot_9": { + "diff_carry_yd": -2.8, + "diff_total_yd": 3.5, + "diff_apex_ft": 7.3, + "status": "pass", + "error_pattern": null + }, + "s3_shot_3w_18": { + "diff_carry_yd": null, + "diff_total_yd": null, + "diff_apex_ft": null, + "status": "pass", + "error_pattern": null + }, + "s3_shot_3w_19": { + "diff_carry_yd": -0.1, + "diff_total_yd": 16.7, + "diff_apex_ft": 0.1, + "status": "severe", + "error_pattern": "ROLLOUT_TOO_LONG" + }, + "s3_shot_3w_21": { + "diff_carry_yd": 1.1, + "diff_total_yd": 16.6, + "diff_apex_ft": 0.3, + "status": "severe", + "error_pattern": "ROLLOUT_TOO_LONG" + }, + "s3_shot_3w_22": { + "diff_carry_yd": 0.0, + "diff_total_yd": 20.2, + "diff_apex_ft": 0.5, + "status": "severe", + "error_pattern": "ROLLOUT_TOO_LONG" + }, + "s3_shot_3w_23": { + "diff_carry_yd": 0.8, + "diff_total_yd": -22.7, + "diff_apex_ft": -1.2, + "status": "severe", + "error_pattern": "ROLLOUT_TOO_SHORT" + }, + "s3_shot_3w_24": { + "diff_carry_yd": 3.9, + "diff_total_yd": 29.6, + "diff_apex_ft": 1.9, + "status": "severe", + "error_pattern": "CARRY_AND_ROLLOUT_LONG" + }, + "s3_shot_5i_10": { + "diff_carry_yd": 0.0, + "diff_total_yd": -7.1, + "diff_apex_ft": 5.9, + "status": "moderate", + "error_pattern": "ROLLOUT_TOO_SHORT" + }, + "s3_shot_5i_11": { + "diff_carry_yd": 0.0, + "diff_total_yd": -17.2, + "diff_apex_ft": -1.3, + "status": "severe", + "error_pattern": "ROLLOUT_TOO_SHORT" + }, + "s3_shot_5i_12": { + "diff_carry_yd": 1.2, + "diff_total_yd": -23.5, + "diff_apex_ft": 1.1, + "status": "severe", + "error_pattern": "ROLLOUT_TOO_SHORT" + }, + "s3_shot_5i_13": { + "diff_carry_yd": 0.0, + "diff_total_yd": 10.1, + "diff_apex_ft": 0.6, + "status": "severe", + "error_pattern": "ROLLOUT_TOO_LONG" + }, + "s3_shot_5i_15": { + "diff_carry_yd": 0.0, + "diff_total_yd": 14.7, + "diff_apex_ft": -1.1, + "status": "severe", + "error_pattern": "ROLLOUT_TOO_LONG" + }, + "s3_shot_5i_16": { + "diff_carry_yd": 1.1, + "diff_total_yd": -20.8, + "diff_apex_ft": -0.2, + "status": "severe", + "error_pattern": "ROLLOUT_TOO_SHORT" + }, + "s3_shot_5i_17": { + "diff_carry_yd": 0.0, + "diff_total_yd": -1.9, + "diff_apex_ft": -0.3, + "status": "pass", + "error_pattern": null + }, + "s3_shot_6i_35": { + "diff_carry_yd": 0.0, + "diff_total_yd": -16.6, + "diff_apex_ft": -3.3, + "status": "severe", + "error_pattern": "ROLLOUT_TOO_SHORT" + }, + "s3_shot_6i_36": { + "diff_carry_yd": 0.0, + "diff_total_yd": -20.8, + "diff_apex_ft": 0.6, + "status": "severe", + "error_pattern": "ROLLOUT_TOO_SHORT" + }, + "s3_shot_6i_37": { + "diff_carry_yd": 0.0, + "diff_total_yd": 12.2, + "diff_apex_ft": -0.8, + "status": "severe", + "error_pattern": "ROLLOUT_TOO_LONG" + }, + "s3_shot_6i_38": { + "diff_carry_yd": 0.0, + "diff_total_yd": -21.3, + "diff_apex_ft": 0.1, + "status": "severe", + "error_pattern": "ROLLOUT_TOO_SHORT" + }, + "s3_shot_6i_39": { + "diff_carry_yd": -0.5, + "diff_total_yd": 6.4, + "diff_apex_ft": 0.0, + "status": "moderate", + "error_pattern": "ROLLOUT_TOO_LONG" + }, + "s3_shot_6i_40": { + "diff_carry_yd": -1.2, + "diff_total_yd": 7.8, + "diff_apex_ft": 0.1, + "status": "moderate", + "error_pattern": "ROLLOUT_TOO_LONG" + }, + "s3_shot_6i_41": { + "diff_carry_yd": 0.0, + "diff_total_yd": 13.2, + "diff_apex_ft": -1.0, + "status": "severe", + "error_pattern": "ROLLOUT_TOO_LONG" + }, + "s3_shot_6i_42": { + "diff_carry_yd": -1.1, + "diff_total_yd": -17.4, + "diff_apex_ft": 0.8, + "status": "severe", + "error_pattern": "ROLLOUT_TOO_SHORT" + }, + "s3_shot_6i_43": { + "diff_carry_yd": 2.4, + "diff_total_yd": 0.9, + "diff_apex_ft": 8.1, + "status": "pass", + "error_pattern": null + }, + "s3_shot_6i_44": { + "diff_carry_yd": -1.2, + "diff_total_yd": -27.4, + "diff_apex_ft": -1.3, + "status": "severe", + "error_pattern": "ROLLOUT_TOO_SHORT" + }, + "s3_shot_6i_45": { + "diff_carry_yd": 0.0, + "diff_total_yd": 21.1, + "diff_apex_ft": 0.6, + "status": "severe", + "error_pattern": "ROLLOUT_TOO_LONG" + }, + "s3_shot_6i_46": { + "diff_carry_yd": 3.8, + "diff_total_yd": -3.5, + "diff_apex_ft": -1.5, + "status": "moderate", + "error_pattern": "CARRY_TOO_LONG" + }, + "s3_shot_6i_47": { + "diff_carry_yd": 3.0, + "diff_total_yd": 10.8, + "diff_apex_ft": 11.8, + "status": "severe", + "error_pattern": "ROLLOUT_TOO_LONG" + }, + "s3_shot_6i_48": { + "diff_carry_yd": 2.1, + "diff_total_yd": 11.1, + "diff_apex_ft": 14.2, + "status": "severe", + "error_pattern": "ROLLOUT_TOO_LONG" + }, + "s3_shot_6i_49": { + "diff_carry_yd": 0.0, + "diff_total_yd": 7.0, + "diff_apex_ft": -0.3, + "status": "moderate", + "error_pattern": "ROLLOUT_TOO_LONG" + }, + "s3_shot_6i_50": { + "diff_carry_yd": -0.4, + "diff_total_yd": -12.1, + "diff_apex_ft": 3.9, + "status": "severe", + "error_pattern": "ROLLOUT_TOO_SHORT" + }, + "s3_shot_7i_25": { + "diff_carry_yd": -0.5, + "diff_total_yd": -18.0, + "diff_apex_ft": 0.9, + "status": "severe", + "error_pattern": "ROLLOUT_TOO_SHORT" + }, + "s3_shot_7i_26": { + "diff_carry_yd": 0.0, + "diff_total_yd": -21.8, + "diff_apex_ft": 1.1, + "status": "severe", + "error_pattern": "ROLLOUT_TOO_SHORT" + }, + "s3_shot_7i_27": { + "diff_carry_yd": -2.2, + "diff_total_yd": 4.3, + "diff_apex_ft": 8.0, + "status": "pass", + "error_pattern": null + }, + "s3_shot_7i_28": { + "diff_carry_yd": -2.8, + "diff_total_yd": 1.2, + "diff_apex_ft": 8.3, + "status": "pass", + "error_pattern": null + }, + "s3_shot_7i_29": { + "diff_carry_yd": 1.0, + "diff_total_yd": -5.8, + "diff_apex_ft": -3.5, + "status": "moderate", + "error_pattern": "ROLLOUT_TOO_SHORT" + }, + "s3_shot_7i_30": { + "diff_carry_yd": -4.2, + "diff_total_yd": 1.5, + "diff_apex_ft": 5.5, + "status": "moderate", + "error_pattern": "CARRY_TOO_SHORT" + }, + "s3_shot_7i_31": { + "diff_carry_yd": 0.0, + "diff_total_yd": -14.3, + "diff_apex_ft": -4.1, + "status": "severe", + "error_pattern": "ROLLOUT_TOO_SHORT" + }, + "s3_shot_7i_32": { + "diff_carry_yd": -1.8, + "diff_total_yd": -2.2, + "diff_apex_ft": 3.1, + "status": "pass", + "error_pattern": null + }, + "s3_shot_7i_33": { + "diff_carry_yd": -1.6, + "diff_total_yd": -1.3, + "diff_apex_ft": 4.7, + "status": "pass", + "error_pattern": null + }, + "s3_shot_7i_34": { + "diff_carry_yd": 0.4, + "diff_total_yd": 2.6, + "diff_apex_ft": 3.1, + "status": "pass", + "error_pattern": null + }, + "s3_shot_9i_1": { + "diff_carry_yd": 0.0, + "diff_total_yd": -12.6, + "diff_apex_ft": 1.3, + "status": "severe", + "error_pattern": "ROLLOUT_TOO_SHORT" + }, + "s3_shot_9i_2": { + "diff_carry_yd": 0.0, + "diff_total_yd": -9.1, + "diff_apex_ft": -3.0, + "status": "moderate", + "error_pattern": "ROLLOUT_TOO_SHORT" + }, + "s3_shot_9i_3": { + "diff_carry_yd": -1.4, + "diff_total_yd": 1.1, + "diff_apex_ft": -5.3, + "status": "pass", + "error_pattern": null + }, + "s3_shot_9i_5": { + "diff_carry_yd": -0.0, + "diff_total_yd": -5.5, + "diff_apex_ft": -5.5, + "status": "moderate", + "error_pattern": "ROLLOUT_TOO_SHORT" + }, + "s3_shot_9i_7": { + "diff_carry_yd": 1.1, + "diff_total_yd": 1.6, + "diff_apex_ft": -4.2, + "status": "pass", + "error_pattern": null + }, + "s3_shot_9i_8": { + "diff_carry_yd": -1.6, + "diff_total_yd": 4.1, + "diff_apex_ft": -1.5, + "status": "pass", + "error_pattern": null + }, + "s3_shot_9i_9": { + "diff_carry_yd": -1.2, + "diff_total_yd": 1.9, + "diff_apex_ft": -6.1, + "status": "pass", + "error_pattern": null + }, + "s3_shot_driver_51": { + "diff_carry_yd": 4.4, + "diff_total_yd": 29.6, + "diff_apex_ft": 0.6, + "status": "severe", + "error_pattern": "CARRY_AND_ROLLOUT_LONG" + }, + "s3_shot_driver_52": { + "diff_carry_yd": 5.4, + "diff_total_yd": 25.3, + "diff_apex_ft": -1.4, + "status": "severe", + "error_pattern": "CARRY_AND_ROLLOUT_LONG" + }, + "s3_shot_driver_53": { + "diff_carry_yd": 2.5, + "diff_total_yd": 17.9, + "diff_apex_ft": -3.8, + "status": "severe", + "error_pattern": "ROLLOUT_TOO_LONG" + }, + "s3_shot_driver_54": { + "diff_carry_yd": -1.0, + "diff_total_yd": 0.0, + "diff_apex_ft": -2.2, + "status": "pass", + "error_pattern": null + }, + "s3_shot_driver_55": { + "diff_carry_yd": 2.5, + "diff_total_yd": 22.6, + "diff_apex_ft": 0.4, + "status": "severe", + "error_pattern": "ROLLOUT_TOO_LONG" + }, + "s3_shot_driver_56": { + "diff_carry_yd": -2.2, + "diff_total_yd": 20.7, + "diff_apex_ft": 9.7, + "status": "severe", + "error_pattern": "ROLLOUT_TOO_LONG" + }, + "s3_shot_driver_57": { + "diff_carry_yd": -5.1, + "diff_total_yd": -19.7, + "diff_apex_ft": -3.5, + "status": "severe", + "error_pattern": "CARRY_AND_ROLLOUT_SHORT" + }, + "s3_shot_driver_58": { + "diff_carry_yd": 11.0, + "diff_total_yd": 37.0, + "diff_apex_ft": -4.8, + "status": "severe", + "error_pattern": "CARRY_AND_ROLLOUT_LONG" + }, + "s3_shot_driver_59": { + "diff_carry_yd": -0.9, + "diff_total_yd": 17.7, + "diff_apex_ft": -3.8, + "status": "severe", + "error_pattern": "ROLLOUT_TOO_LONG" + }, + "s3_shot_driver_60": { + "diff_carry_yd": 0.0, + "diff_total_yd": -14.9, + "diff_apex_ft": -2.4, + "status": "severe", + "error_pattern": "ROLLOUT_TOO_SHORT" + }, + "s3_shot_pw_64": { + "diff_carry_yd": 0.0, + "diff_total_yd": 9.6, + "diff_apex_ft": -3.7, + "status": "moderate", + "error_pattern": "ROLLOUT_TOO_LONG" + }, + "s3_shot_pw_65": { + "diff_carry_yd": -0.1, + "diff_total_yd": 4.7, + "diff_apex_ft": -3.8, + "status": "pass", + "error_pattern": null + }, + "s3_shot_pw_66": { + "diff_carry_yd": -0.0, + "diff_total_yd": 11.3, + "diff_apex_ft": -3.7, + "status": "severe", + "error_pattern": "ROLLOUT_TOO_LONG" + }, + "s3_shot_pw_67": { + "diff_carry_yd": 0.0, + "diff_total_yd": 5.7, + "diff_apex_ft": -4.0, + "status": "moderate", + "error_pattern": "ROLLOUT_TOO_LONG" + }, + "s3_shot_pw_68": { + "diff_carry_yd": -0.0, + "diff_total_yd": 6.1, + "diff_apex_ft": -6.2, + "status": "moderate", + "error_pattern": "ROLLOUT_TOO_LONG" + }, + "s3_shot_pw_69": { + "diff_carry_yd": 0.0, + "diff_total_yd": -3.9, + "diff_apex_ft": -3.8, + "status": "pass", + "error_pattern": null + }, + "topped_test_shot": { + "diff_carry_yd": -0.6, + "diff_total_yd": 13.9, + "diff_apex_ft": -0.1, + "status": "severe", + "error_pattern": "ROLLOUT_TOO_LONG" + }, + "wedge_shot_1": { + "diff_carry_yd": 0.0, + "diff_total_yd": -0.7, + "diff_apex_ft": -2.4, + "status": "pass", + "error_pattern": null + }, + "wedge_shot_2": { + "diff_carry_yd": 0.0, + "diff_total_yd": 2.7, + "diff_apex_ft": -4.2, + "status": "pass", + "error_pattern": null + }, + "wedge_test_shot": { + "diff_carry_yd": 0.0, + "diff_total_yd": 3.6, + "diff_apex_ft": -3.2, + "status": "pass", + "error_pattern": null + }, + "wedge_test_shot2": { + "diff_carry_yd": -0.0, + "diff_total_yd": 3.1, + "diff_apex_ft": -2.0, + "status": "pass", + "error_pattern": null + }, + "wood1": { + "diff_carry_yd": 5.7, + "diff_total_yd": -3.2, + "diff_apex_ft": 3.2, + "status": "moderate", + "error_pattern": "CARRY_TOO_LONG" + }, + "wood2": { + "diff_carry_yd": 4.8, + "diff_total_yd": 0.7, + "diff_apex_ft": -1.6, + "status": "moderate", + "error_pattern": "CARRY_TOO_LONG" + }, + "wood_low_test_shot": { + "diff_carry_yd": 1.8, + "diff_total_yd": 22.9, + "diff_apex_ft": 0.4, + "status": "severe", + "error_pattern": "ROLLOUT_TOO_LONG" + } + }, + "regressions": [], + "conflicts": [ + "Bounce.FlightTangentialRetentionBase", + "Bounce.FlightSpinFactorMin", + "Bounce.FlightSpinFactorDivisor", + "Rollout.MidSpinMultiplierMax", + "Rollout.HighSpinMultiplierMax", + "Rollout.FrictionBlendSpeed", + "KineticFrictionMultiplier", + "Bounce.RolloutHighSpinRetention", + "Rollout.ChipVelocityScaleMin", + "Rollout.ChipVelocityScaleMax", + "Bounce.CorBaseA", + "Rollout.LowSpinMultiplierMax", + "Rollout.LowSpinThreshold", + "RollingFrictionMultiplier", + "Bounce.RolloutLowSpinRetention", + "Flight.ClMaxBase", + "Flight.CdMin", + "DragScaleMultiplier", + "LiftScaleMultiplier" + ] +} diff --git a/assets/data/calibration/history/iteration_039.json b/assets/data/calibration/history/iteration_039.json new file mode 100644 index 0000000..7f8438d --- /dev/null +++ b/assets/data/calibration/history/iteration_039.json @@ -0,0 +1,987 @@ +{ + "iteration": 39, + "timestamp": "2026-03-14T01:02:04.962621", + "profile_overrides": {}, + "summary": { + "pass": 29, + "moderate": 19, + "severe": 51, + "no_reference": 37 + }, + "per_shot": { + "5iron": { + "diff_carry_yd": 1.6, + "diff_total_yd": 12.1, + "diff_apex_ft": 5.0, + "status": "severe", + "error_pattern": "ROLLOUT_TOO_LONG" + }, + "approach_mid_iron_test_shot": { + "diff_carry_yd": 0.0, + "diff_total_yd": 7.9, + "diff_apex_ft": -4.7, + "status": "moderate", + "error_pattern": "ROLLOUT_TOO_LONG" + }, + "bump_and_run": { + "diff_carry_yd": -0.1, + "diff_total_yd": -27.5, + "diff_apex_ft": -2.1, + "status": "severe", + "error_pattern": "ROLLOUT_TOO_SHORT" + }, + "bump_and_run_slow": { + "diff_carry_yd": null, + "diff_total_yd": null, + "diff_apex_ft": null, + "status": "pass", + "error_pattern": null + }, + "bump_test_shot": { + "diff_carry_yd": 0.0, + "diff_total_yd": 12.8, + "diff_apex_ft": -0.1, + "status": "severe", + "error_pattern": "ROLLOUT_TOO_LONG" + }, + "checked_test_shot": { + "diff_carry_yd": -0.6, + "diff_total_yd": 1.1, + "diff_apex_ft": -8.7, + "status": "pass", + "error_pattern": null + }, + "chip_test_shot": { + "diff_carry_yd": null, + "diff_total_yd": null, + "diff_apex_ft": null, + "status": "pass", + "error_pattern": null + }, + "drive_test_shot": { + "diff_carry_yd": 1.0, + "diff_total_yd": 0.8, + "diff_apex_ft": -0.6, + "status": "pass", + "error_pattern": null + }, + "driver1": { + "diff_carry_yd": 0.3, + "diff_total_yd": -25.7, + "diff_apex_ft": -0.7, + "status": "severe", + "error_pattern": "ROLLOUT_TOO_SHORT" + }, + "driver2": { + "diff_carry_yd": 2.5, + "diff_total_yd": 8.6, + "diff_apex_ft": -2.7, + "status": "moderate", + "error_pattern": "ROLLOUT_TOO_LONG" + }, + "driver3": { + "diff_carry_yd": -0.8, + "diff_total_yd": 23.3, + "diff_apex_ft": 21.1, + "status": "severe", + "error_pattern": "ROLLOUT_TOO_LONG" + }, + "driver4": { + "diff_carry_yd": 0.7, + "diff_total_yd": 16.3, + "diff_apex_ft": 4.4, + "status": "severe", + "error_pattern": "ROLLOUT_TOO_LONG" + }, + "flop_test_shot": { + "diff_carry_yd": 0.9, + "diff_total_yd": 2.8, + "diff_apex_ft": -7.6, + "status": "pass", + "error_pattern": null + }, + "p_wedge_shot_1": { + "diff_carry_yd": 0.0, + "diff_total_yd": 2.2, + "diff_apex_ft": -5.4, + "status": "pass", + "error_pattern": null + }, + "s2_shot_10": { + "diff_carry_yd": 0.0, + "diff_total_yd": 10.7, + "diff_apex_ft": -5.8, + "status": "severe", + "error_pattern": "ROLLOUT_TOO_LONG" + }, + "s2_shot_11": { + "diff_carry_yd": 0.0, + "diff_total_yd": 2.0, + "diff_apex_ft": -4.4, + "status": "pass", + "error_pattern": null + }, + "s2_shot_12": { + "diff_carry_yd": 1.7, + "diff_total_yd": 9.5, + "diff_apex_ft": -5.1, + "status": "moderate", + "error_pattern": "ROLLOUT_TOO_LONG" + }, + "s2_shot_13": { + "diff_carry_yd": -1.7, + "diff_total_yd": 3.0, + "diff_apex_ft": -5.9, + "status": "pass", + "error_pattern": null + }, + "s2_shot_14": { + "diff_carry_yd": 0.2, + "diff_total_yd": 1.6, + "diff_apex_ft": -5.9, + "status": "pass", + "error_pattern": null + }, + "s2_shot_15": { + "diff_carry_yd": -0.6, + "diff_total_yd": -12.3, + "diff_apex_ft": -1.9, + "status": "severe", + "error_pattern": "ROLLOUT_TOO_SHORT" + }, + "s2_shot_16": { + "diff_carry_yd": 0.4, + "diff_total_yd": 2.2, + "diff_apex_ft": -3.2, + "status": "pass", + "error_pattern": null + }, + "s2_shot_17": { + "diff_carry_yd": 0.0, + "diff_total_yd": 9.2, + "diff_apex_ft": -3.6, + "status": "moderate", + "error_pattern": "ROLLOUT_TOO_LONG" + }, + "s2_shot_18": { + "diff_carry_yd": 1.1, + "diff_total_yd": 16.6, + "diff_apex_ft": 3.1, + "status": "severe", + "error_pattern": "ROLLOUT_TOO_LONG" + }, + "s2_shot_19": { + "diff_carry_yd": -3.1, + "diff_total_yd": -4.4, + "diff_apex_ft": -0.9, + "status": "moderate", + "error_pattern": "CARRY_TOO_SHORT" + }, + "s2_shot_20": { + "diff_carry_yd": 0.2, + "diff_total_yd": 11.1, + "diff_apex_ft": -1.8, + "status": "severe", + "error_pattern": "ROLLOUT_TOO_LONG" + }, + "s2_shot_21": { + "diff_carry_yd": 5.8, + "diff_total_yd": 28.8, + "diff_apex_ft": 1.8, + "status": "severe", + "error_pattern": "CARRY_AND_ROLLOUT_LONG" + }, + "s2_shot_22": { + "diff_carry_yd": -0.7, + "diff_total_yd": 3.5, + "diff_apex_ft": -1.4, + "status": "pass", + "error_pattern": null + }, + "s2_shot_23": { + "diff_carry_yd": -2.8, + "diff_total_yd": -18.9, + "diff_apex_ft": 0.1, + "status": "severe", + "error_pattern": "ROLLOUT_TOO_SHORT" + }, + "s2_shot_24": { + "diff_carry_yd": -0.7, + "diff_total_yd": 2.7, + "diff_apex_ft": -1.6, + "status": "pass", + "error_pattern": null + }, + "s2_shot_26": { + "diff_carry_yd": 2.6, + "diff_total_yd": 23.1, + "diff_apex_ft": 24.2, + "status": "severe", + "error_pattern": "ROLLOUT_TOO_LONG" + }, + "s2_shot_27": { + "diff_carry_yd": -3.4, + "diff_total_yd": 13.8, + "diff_apex_ft": 5.0, + "status": "severe", + "error_pattern": "CARRY_TOO_SHORT" + }, + "s2_shot_9": { + "diff_carry_yd": -2.8, + "diff_total_yd": 3.5, + "diff_apex_ft": 7.3, + "status": "pass", + "error_pattern": null + }, + "s3_shot_3w_18": { + "diff_carry_yd": null, + "diff_total_yd": null, + "diff_apex_ft": null, + "status": "pass", + "error_pattern": null + }, + "s3_shot_3w_19": { + "diff_carry_yd": -0.1, + "diff_total_yd": 16.7, + "diff_apex_ft": 0.1, + "status": "severe", + "error_pattern": "ROLLOUT_TOO_LONG" + }, + "s3_shot_3w_21": { + "diff_carry_yd": 1.1, + "diff_total_yd": 16.6, + "diff_apex_ft": 0.3, + "status": "severe", + "error_pattern": "ROLLOUT_TOO_LONG" + }, + "s3_shot_3w_22": { + "diff_carry_yd": 0.0, + "diff_total_yd": 20.2, + "diff_apex_ft": 0.5, + "status": "severe", + "error_pattern": "ROLLOUT_TOO_LONG" + }, + "s3_shot_3w_23": { + "diff_carry_yd": 0.8, + "diff_total_yd": -22.7, + "diff_apex_ft": -1.2, + "status": "severe", + "error_pattern": "ROLLOUT_TOO_SHORT" + }, + "s3_shot_3w_24": { + "diff_carry_yd": 3.9, + "diff_total_yd": 29.6, + "diff_apex_ft": 1.9, + "status": "severe", + "error_pattern": "CARRY_AND_ROLLOUT_LONG" + }, + "s3_shot_5i_10": { + "diff_carry_yd": 0.0, + "diff_total_yd": -7.1, + "diff_apex_ft": 5.9, + "status": "moderate", + "error_pattern": "ROLLOUT_TOO_SHORT" + }, + "s3_shot_5i_11": { + "diff_carry_yd": 0.0, + "diff_total_yd": -17.2, + "diff_apex_ft": -1.3, + "status": "severe", + "error_pattern": "ROLLOUT_TOO_SHORT" + }, + "s3_shot_5i_12": { + "diff_carry_yd": 1.2, + "diff_total_yd": -23.5, + "diff_apex_ft": 1.1, + "status": "severe", + "error_pattern": "ROLLOUT_TOO_SHORT" + }, + "s3_shot_5i_13": { + "diff_carry_yd": 0.0, + "diff_total_yd": 10.1, + "diff_apex_ft": 0.6, + "status": "severe", + "error_pattern": "ROLLOUT_TOO_LONG" + }, + "s3_shot_5i_15": { + "diff_carry_yd": 0.0, + "diff_total_yd": 14.7, + "diff_apex_ft": -1.1, + "status": "severe", + "error_pattern": "ROLLOUT_TOO_LONG" + }, + "s3_shot_5i_16": { + "diff_carry_yd": 1.1, + "diff_total_yd": -20.8, + "diff_apex_ft": -0.2, + "status": "severe", + "error_pattern": "ROLLOUT_TOO_SHORT" + }, + "s3_shot_5i_17": { + "diff_carry_yd": 0.0, + "diff_total_yd": -1.9, + "diff_apex_ft": -0.3, + "status": "pass", + "error_pattern": null + }, + "s3_shot_6i_35": { + "diff_carry_yd": 0.0, + "diff_total_yd": -16.6, + "diff_apex_ft": -3.3, + "status": "severe", + "error_pattern": "ROLLOUT_TOO_SHORT" + }, + "s3_shot_6i_36": { + "diff_carry_yd": 0.0, + "diff_total_yd": -20.8, + "diff_apex_ft": 0.6, + "status": "severe", + "error_pattern": "ROLLOUT_TOO_SHORT" + }, + "s3_shot_6i_37": { + "diff_carry_yd": 0.0, + "diff_total_yd": 12.2, + "diff_apex_ft": -0.8, + "status": "severe", + "error_pattern": "ROLLOUT_TOO_LONG" + }, + "s3_shot_6i_38": { + "diff_carry_yd": 0.0, + "diff_total_yd": -21.3, + "diff_apex_ft": 0.1, + "status": "severe", + "error_pattern": "ROLLOUT_TOO_SHORT" + }, + "s3_shot_6i_39": { + "diff_carry_yd": -0.5, + "diff_total_yd": 6.4, + "diff_apex_ft": 0.0, + "status": "moderate", + "error_pattern": "ROLLOUT_TOO_LONG" + }, + "s3_shot_6i_40": { + "diff_carry_yd": -1.2, + "diff_total_yd": 7.8, + "diff_apex_ft": 0.1, + "status": "moderate", + "error_pattern": "ROLLOUT_TOO_LONG" + }, + "s3_shot_6i_41": { + "diff_carry_yd": 0.0, + "diff_total_yd": 13.2, + "diff_apex_ft": -1.0, + "status": "severe", + "error_pattern": "ROLLOUT_TOO_LONG" + }, + "s3_shot_6i_42": { + "diff_carry_yd": -1.1, + "diff_total_yd": -17.4, + "diff_apex_ft": 0.8, + "status": "severe", + "error_pattern": "ROLLOUT_TOO_SHORT" + }, + "s3_shot_6i_43": { + "diff_carry_yd": 2.4, + "diff_total_yd": 0.9, + "diff_apex_ft": 8.1, + "status": "pass", + "error_pattern": null + }, + "s3_shot_6i_44": { + "diff_carry_yd": -1.2, + "diff_total_yd": -27.4, + "diff_apex_ft": -1.3, + "status": "severe", + "error_pattern": "ROLLOUT_TOO_SHORT" + }, + "s3_shot_6i_45": { + "diff_carry_yd": 0.0, + "diff_total_yd": 21.1, + "diff_apex_ft": 0.6, + "status": "severe", + "error_pattern": "ROLLOUT_TOO_LONG" + }, + "s3_shot_6i_46": { + "diff_carry_yd": 3.8, + "diff_total_yd": -3.5, + "diff_apex_ft": -1.5, + "status": "moderate", + "error_pattern": "CARRY_TOO_LONG" + }, + "s3_shot_6i_47": { + "diff_carry_yd": 3.0, + "diff_total_yd": 10.8, + "diff_apex_ft": 11.8, + "status": "severe", + "error_pattern": "ROLLOUT_TOO_LONG" + }, + "s3_shot_6i_48": { + "diff_carry_yd": 2.1, + "diff_total_yd": 11.1, + "diff_apex_ft": 14.2, + "status": "severe", + "error_pattern": "ROLLOUT_TOO_LONG" + }, + "s3_shot_6i_49": { + "diff_carry_yd": 0.0, + "diff_total_yd": 7.0, + "diff_apex_ft": -0.3, + "status": "moderate", + "error_pattern": "ROLLOUT_TOO_LONG" + }, + "s3_shot_6i_50": { + "diff_carry_yd": -0.4, + "diff_total_yd": -12.1, + "diff_apex_ft": 3.9, + "status": "severe", + "error_pattern": "ROLLOUT_TOO_SHORT" + }, + "s3_shot_7i_25": { + "diff_carry_yd": -0.5, + "diff_total_yd": -18.0, + "diff_apex_ft": 0.9, + "status": "severe", + "error_pattern": "ROLLOUT_TOO_SHORT" + }, + "s3_shot_7i_26": { + "diff_carry_yd": 0.0, + "diff_total_yd": -21.8, + "diff_apex_ft": 1.1, + "status": "severe", + "error_pattern": "ROLLOUT_TOO_SHORT" + }, + "s3_shot_7i_27": { + "diff_carry_yd": -2.2, + "diff_total_yd": 4.3, + "diff_apex_ft": 8.0, + "status": "pass", + "error_pattern": null + }, + "s3_shot_7i_28": { + "diff_carry_yd": -2.8, + "diff_total_yd": 1.2, + "diff_apex_ft": 8.3, + "status": "pass", + "error_pattern": null + }, + "s3_shot_7i_29": { + "diff_carry_yd": 1.0, + "diff_total_yd": -5.8, + "diff_apex_ft": -3.5, + "status": "moderate", + "error_pattern": "ROLLOUT_TOO_SHORT" + }, + "s3_shot_7i_30": { + "diff_carry_yd": -4.2, + "diff_total_yd": 1.5, + "diff_apex_ft": 5.5, + "status": "moderate", + "error_pattern": "CARRY_TOO_SHORT" + }, + "s3_shot_7i_31": { + "diff_carry_yd": 0.0, + "diff_total_yd": -14.3, + "diff_apex_ft": -4.1, + "status": "severe", + "error_pattern": "ROLLOUT_TOO_SHORT" + }, + "s3_shot_7i_32": { + "diff_carry_yd": -1.8, + "diff_total_yd": -2.2, + "diff_apex_ft": 3.1, + "status": "pass", + "error_pattern": null + }, + "s3_shot_7i_33": { + "diff_carry_yd": -1.6, + "diff_total_yd": -1.3, + "diff_apex_ft": 4.7, + "status": "pass", + "error_pattern": null + }, + "s3_shot_7i_34": { + "diff_carry_yd": 0.4, + "diff_total_yd": 2.6, + "diff_apex_ft": 3.1, + "status": "pass", + "error_pattern": null + }, + "s3_shot_9i_1": { + "diff_carry_yd": 0.0, + "diff_total_yd": -12.6, + "diff_apex_ft": 1.3, + "status": "severe", + "error_pattern": "ROLLOUT_TOO_SHORT" + }, + "s3_shot_9i_2": { + "diff_carry_yd": 0.0, + "diff_total_yd": -9.1, + "diff_apex_ft": -3.0, + "status": "moderate", + "error_pattern": "ROLLOUT_TOO_SHORT" + }, + "s3_shot_9i_3": { + "diff_carry_yd": -1.4, + "diff_total_yd": 1.1, + "diff_apex_ft": -5.3, + "status": "pass", + "error_pattern": null + }, + "s3_shot_9i_5": { + "diff_carry_yd": -0.0, + "diff_total_yd": -5.5, + "diff_apex_ft": -5.5, + "status": "moderate", + "error_pattern": "ROLLOUT_TOO_SHORT" + }, + "s3_shot_9i_7": { + "diff_carry_yd": 1.1, + "diff_total_yd": 1.6, + "diff_apex_ft": -4.2, + "status": "pass", + "error_pattern": null + }, + "s3_shot_9i_8": { + "diff_carry_yd": -1.6, + "diff_total_yd": 4.1, + "diff_apex_ft": -1.5, + "status": "pass", + "error_pattern": null + }, + "s3_shot_9i_9": { + "diff_carry_yd": -1.2, + "diff_total_yd": 1.9, + "diff_apex_ft": -6.1, + "status": "pass", + "error_pattern": null + }, + "s3_shot_driver_51": { + "diff_carry_yd": 4.4, + "diff_total_yd": 29.6, + "diff_apex_ft": 0.6, + "status": "severe", + "error_pattern": "CARRY_AND_ROLLOUT_LONG" + }, + "s3_shot_driver_52": { + "diff_carry_yd": 5.4, + "diff_total_yd": 25.3, + "diff_apex_ft": -1.4, + "status": "severe", + "error_pattern": "CARRY_AND_ROLLOUT_LONG" + }, + "s3_shot_driver_53": { + "diff_carry_yd": 2.5, + "diff_total_yd": 17.9, + "diff_apex_ft": -3.8, + "status": "severe", + "error_pattern": "ROLLOUT_TOO_LONG" + }, + "s3_shot_driver_54": { + "diff_carry_yd": -1.0, + "diff_total_yd": 0.0, + "diff_apex_ft": -2.2, + "status": "pass", + "error_pattern": null + }, + "s3_shot_driver_55": { + "diff_carry_yd": 2.5, + "diff_total_yd": 22.6, + "diff_apex_ft": 0.4, + "status": "severe", + "error_pattern": "ROLLOUT_TOO_LONG" + }, + "s3_shot_driver_56": { + "diff_carry_yd": -2.2, + "diff_total_yd": 20.7, + "diff_apex_ft": 9.7, + "status": "severe", + "error_pattern": "ROLLOUT_TOO_LONG" + }, + "s3_shot_driver_57": { + "diff_carry_yd": -5.1, + "diff_total_yd": -19.7, + "diff_apex_ft": -3.5, + "status": "severe", + "error_pattern": "CARRY_AND_ROLLOUT_SHORT" + }, + "s3_shot_driver_58": { + "diff_carry_yd": 11.0, + "diff_total_yd": 37.0, + "diff_apex_ft": -4.8, + "status": "severe", + "error_pattern": "CARRY_AND_ROLLOUT_LONG" + }, + "s3_shot_driver_59": { + "diff_carry_yd": -0.9, + "diff_total_yd": 17.7, + "diff_apex_ft": -3.8, + "status": "severe", + "error_pattern": "ROLLOUT_TOO_LONG" + }, + "s3_shot_driver_60": { + "diff_carry_yd": 0.0, + "diff_total_yd": -14.9, + "diff_apex_ft": -2.4, + "status": "severe", + "error_pattern": "ROLLOUT_TOO_SHORT" + }, + "s3_shot_pw_64": { + "diff_carry_yd": 0.0, + "diff_total_yd": 9.6, + "diff_apex_ft": -3.7, + "status": "moderate", + "error_pattern": "ROLLOUT_TOO_LONG" + }, + "s3_shot_pw_65": { + "diff_carry_yd": -0.1, + "diff_total_yd": 4.7, + "diff_apex_ft": -3.8, + "status": "pass", + "error_pattern": null + }, + "s3_shot_pw_66": { + "diff_carry_yd": -0.0, + "diff_total_yd": 11.3, + "diff_apex_ft": -3.7, + "status": "severe", + "error_pattern": "ROLLOUT_TOO_LONG" + }, + "s3_shot_pw_67": { + "diff_carry_yd": 0.0, + "diff_total_yd": 5.7, + "diff_apex_ft": -4.0, + "status": "moderate", + "error_pattern": "ROLLOUT_TOO_LONG" + }, + "s3_shot_pw_68": { + "diff_carry_yd": -0.0, + "diff_total_yd": 6.1, + "diff_apex_ft": -6.2, + "status": "moderate", + "error_pattern": "ROLLOUT_TOO_LONG" + }, + "s3_shot_pw_69": { + "diff_carry_yd": 0.0, + "diff_total_yd": -3.9, + "diff_apex_ft": -3.8, + "status": "pass", + "error_pattern": null + }, + "s4_shot_3w_31": { + "diff_carry_yd": null, + "diff_total_yd": null, + "diff_apex_ft": null, + "status": "pass", + "error_pattern": null + }, + "s4_shot_3w_32": { + "diff_carry_yd": null, + "diff_total_yd": null, + "diff_apex_ft": null, + "status": "pass", + "error_pattern": null + }, + "s4_shot_3w_33": { + "diff_carry_yd": null, + "diff_total_yd": null, + "diff_apex_ft": null, + "status": "pass", + "error_pattern": null + }, + "s4_shot_3w_34": { + "diff_carry_yd": null, + "diff_total_yd": null, + "diff_apex_ft": null, + "status": "pass", + "error_pattern": null + }, + "s4_shot_3w_35": { + "diff_carry_yd": null, + "diff_total_yd": null, + "diff_apex_ft": null, + "status": "pass", + "error_pattern": null + }, + "s4_shot_5i_25": { + "diff_carry_yd": null, + "diff_total_yd": null, + "diff_apex_ft": null, + "status": "pass", + "error_pattern": null + }, + "s4_shot_5i_26": { + "diff_carry_yd": null, + "diff_total_yd": null, + "diff_apex_ft": null, + "status": "pass", + "error_pattern": null + }, + "s4_shot_5i_27": { + "diff_carry_yd": null, + "diff_total_yd": null, + "diff_apex_ft": null, + "status": "pass", + "error_pattern": null + }, + "s4_shot_5i_28": { + "diff_carry_yd": null, + "diff_total_yd": null, + "diff_apex_ft": null, + "status": "pass", + "error_pattern": null + }, + "s4_shot_5i_29": { + "diff_carry_yd": null, + "diff_total_yd": null, + "diff_apex_ft": null, + "status": "pass", + "error_pattern": null + }, + "s4_shot_5i_30": { + "diff_carry_yd": null, + "diff_total_yd": null, + "diff_apex_ft": null, + "status": "pass", + "error_pattern": null + }, + "s4_shot_6i_19": { + "diff_carry_yd": null, + "diff_total_yd": null, + "diff_apex_ft": null, + "status": "pass", + "error_pattern": null + }, + "s4_shot_6i_20": { + "diff_carry_yd": null, + "diff_total_yd": null, + "diff_apex_ft": null, + "status": "pass", + "error_pattern": null + }, + "s4_shot_6i_21": { + "diff_carry_yd": null, + "diff_total_yd": null, + "diff_apex_ft": null, + "status": "pass", + "error_pattern": null + }, + "s4_shot_6i_22": { + "diff_carry_yd": null, + "diff_total_yd": null, + "diff_apex_ft": null, + "status": "pass", + "error_pattern": null + }, + "s4_shot_6i_23": { + "diff_carry_yd": null, + "diff_total_yd": null, + "diff_apex_ft": null, + "status": "pass", + "error_pattern": null + }, + "s4_shot_6i_24": { + "diff_carry_yd": null, + "diff_total_yd": null, + "diff_apex_ft": null, + "status": "pass", + "error_pattern": null + }, + "s4_shot_9i_13": { + "diff_carry_yd": null, + "diff_total_yd": null, + "diff_apex_ft": null, + "status": "pass", + "error_pattern": null + }, + "s4_shot_9i_14": { + "diff_carry_yd": null, + "diff_total_yd": null, + "diff_apex_ft": null, + "status": "pass", + "error_pattern": null + }, + "s4_shot_9i_15": { + "diff_carry_yd": null, + "diff_total_yd": null, + "diff_apex_ft": null, + "status": "pass", + "error_pattern": null + }, + "s4_shot_9i_17": { + "diff_carry_yd": null, + "diff_total_yd": null, + "diff_apex_ft": null, + "status": "pass", + "error_pattern": null + }, + "s4_shot_9i_18": { + "diff_carry_yd": null, + "diff_total_yd": null, + "diff_apex_ft": null, + "status": "pass", + "error_pattern": null + }, + "s4_shot_lw_38": { + "diff_carry_yd": null, + "diff_total_yd": null, + "diff_apex_ft": null, + "status": "pass", + "error_pattern": null + }, + "s4_shot_pw_1": { + "diff_carry_yd": null, + "diff_total_yd": null, + "diff_apex_ft": null, + "status": "pass", + "error_pattern": null + }, + "s4_shot_pw_10": { + "diff_carry_yd": null, + "diff_total_yd": null, + "diff_apex_ft": null, + "status": "pass", + "error_pattern": null + }, + "s4_shot_pw_11": { + "diff_carry_yd": null, + "diff_total_yd": null, + "diff_apex_ft": null, + "status": "pass", + "error_pattern": null + }, + "s4_shot_pw_2": { + "diff_carry_yd": null, + "diff_total_yd": null, + "diff_apex_ft": null, + "status": "pass", + "error_pattern": null + }, + "s4_shot_pw_3": { + "diff_carry_yd": null, + "diff_total_yd": null, + "diff_apex_ft": null, + "status": "pass", + "error_pattern": null + }, + "s4_shot_pw_47": { + "diff_carry_yd": null, + "diff_total_yd": null, + "diff_apex_ft": null, + "status": "pass", + "error_pattern": null + }, + "s4_shot_pw_48": { + "diff_carry_yd": null, + "diff_total_yd": null, + "diff_apex_ft": null, + "status": "pass", + "error_pattern": null + }, + "s4_shot_pw_49": { + "diff_carry_yd": null, + "diff_total_yd": null, + "diff_apex_ft": null, + "status": "pass", + "error_pattern": null + }, + "s4_shot_pw_6": { + "diff_carry_yd": null, + "diff_total_yd": null, + "diff_apex_ft": null, + "status": "pass", + "error_pattern": null + }, + "s4_shot_pw_7": { + "diff_carry_yd": null, + "diff_total_yd": null, + "diff_apex_ft": null, + "status": "pass", + "error_pattern": null + }, + "s4_shot_pw_9": { + "diff_carry_yd": null, + "diff_total_yd": null, + "diff_apex_ft": null, + "status": "pass", + "error_pattern": null + }, + "topped_test_shot": { + "diff_carry_yd": -0.6, + "diff_total_yd": 13.9, + "diff_apex_ft": -0.1, + "status": "severe", + "error_pattern": "ROLLOUT_TOO_LONG" + }, + "wedge_shot_1": { + "diff_carry_yd": 0.0, + "diff_total_yd": -0.7, + "diff_apex_ft": -2.4, + "status": "pass", + "error_pattern": null + }, + "wedge_shot_2": { + "diff_carry_yd": 0.0, + "diff_total_yd": 2.7, + "diff_apex_ft": -4.2, + "status": "pass", + "error_pattern": null + }, + "wedge_test_shot": { + "diff_carry_yd": 0.0, + "diff_total_yd": 3.6, + "diff_apex_ft": -3.2, + "status": "pass", + "error_pattern": null + }, + "wedge_test_shot2": { + "diff_carry_yd": -0.0, + "diff_total_yd": 3.1, + "diff_apex_ft": -2.0, + "status": "pass", + "error_pattern": null + }, + "wood1": { + "diff_carry_yd": 5.7, + "diff_total_yd": -3.2, + "diff_apex_ft": 3.2, + "status": "moderate", + "error_pattern": "CARRY_TOO_LONG" + }, + "wood2": { + "diff_carry_yd": 4.8, + "diff_total_yd": 0.7, + "diff_apex_ft": -1.6, + "status": "moderate", + "error_pattern": "CARRY_TOO_LONG" + }, + "wood_low_test_shot": { + "diff_carry_yd": 1.8, + "diff_total_yd": 22.9, + "diff_apex_ft": 0.4, + "status": "severe", + "error_pattern": "ROLLOUT_TOO_LONG" + } + }, + "regressions": [], + "conflicts": [ + "Bounce.FlightTangentialRetentionBase", + "Bounce.FlightSpinFactorMin", + "Bounce.FlightSpinFactorDivisor", + "Rollout.MidSpinMultiplierMax", + "Rollout.HighSpinMultiplierMax", + "Rollout.FrictionBlendSpeed", + "KineticFrictionMultiplier", + "Bounce.RolloutHighSpinRetention", + "Rollout.ChipVelocityScaleMin", + "Rollout.ChipVelocityScaleMax", + "Bounce.CorBaseA", + "Rollout.LowSpinMultiplierMax", + "Rollout.LowSpinThreshold", + "RollingFrictionMultiplier", + "Bounce.RolloutLowSpinRetention", + "Flight.ClMaxBase", + "Flight.CdMin", + "DragScaleMultiplier", + "LiftScaleMultiplier" + ] +} diff --git a/assets/data/calibration/history/iteration_040.json b/assets/data/calibration/history/iteration_040.json new file mode 100644 index 0000000..e90aa6d --- /dev/null +++ b/assets/data/calibration/history/iteration_040.json @@ -0,0 +1,987 @@ +{ + "iteration": 40, + "timestamp": "2026-03-14T01:02:51.105556", + "profile_overrides": {}, + "summary": { + "pass": 29, + "moderate": 19, + "severe": 51, + "no_reference": 37 + }, + "per_shot": { + "5iron": { + "diff_carry_yd": 1.6, + "diff_total_yd": 12.1, + "diff_apex_ft": 5.0, + "status": "severe", + "error_pattern": "ROLLOUT_TOO_LONG" + }, + "approach_mid_iron_test_shot": { + "diff_carry_yd": 0.0, + "diff_total_yd": 7.9, + "diff_apex_ft": -4.7, + "status": "moderate", + "error_pattern": "ROLLOUT_TOO_LONG" + }, + "bump_and_run": { + "diff_carry_yd": -0.1, + "diff_total_yd": -27.5, + "diff_apex_ft": -2.1, + "status": "severe", + "error_pattern": "ROLLOUT_TOO_SHORT" + }, + "bump_and_run_slow": { + "diff_carry_yd": null, + "diff_total_yd": null, + "diff_apex_ft": null, + "status": "pass", + "error_pattern": null + }, + "bump_test_shot": { + "diff_carry_yd": 0.0, + "diff_total_yd": 12.8, + "diff_apex_ft": -0.1, + "status": "severe", + "error_pattern": "ROLLOUT_TOO_LONG" + }, + "checked_test_shot": { + "diff_carry_yd": -0.6, + "diff_total_yd": 1.1, + "diff_apex_ft": -8.7, + "status": "pass", + "error_pattern": null + }, + "chip_test_shot": { + "diff_carry_yd": null, + "diff_total_yd": null, + "diff_apex_ft": null, + "status": "pass", + "error_pattern": null + }, + "drive_test_shot": { + "diff_carry_yd": 1.0, + "diff_total_yd": 0.8, + "diff_apex_ft": -0.6, + "status": "pass", + "error_pattern": null + }, + "driver1": { + "diff_carry_yd": 0.3, + "diff_total_yd": -25.7, + "diff_apex_ft": -0.7, + "status": "severe", + "error_pattern": "ROLLOUT_TOO_SHORT" + }, + "driver2": { + "diff_carry_yd": 2.5, + "diff_total_yd": 8.6, + "diff_apex_ft": -2.7, + "status": "moderate", + "error_pattern": "ROLLOUT_TOO_LONG" + }, + "driver3": { + "diff_carry_yd": -0.8, + "diff_total_yd": 23.3, + "diff_apex_ft": 21.1, + "status": "severe", + "error_pattern": "ROLLOUT_TOO_LONG" + }, + "driver4": { + "diff_carry_yd": 0.7, + "diff_total_yd": 16.3, + "diff_apex_ft": 4.4, + "status": "severe", + "error_pattern": "ROLLOUT_TOO_LONG" + }, + "flop_test_shot": { + "diff_carry_yd": 0.9, + "diff_total_yd": 2.8, + "diff_apex_ft": -7.6, + "status": "pass", + "error_pattern": null + }, + "p_wedge_shot_1": { + "diff_carry_yd": 0.0, + "diff_total_yd": 2.2, + "diff_apex_ft": -5.4, + "status": "pass", + "error_pattern": null + }, + "s2_shot_10": { + "diff_carry_yd": 0.0, + "diff_total_yd": 10.7, + "diff_apex_ft": -5.8, + "status": "severe", + "error_pattern": "ROLLOUT_TOO_LONG" + }, + "s2_shot_11": { + "diff_carry_yd": 0.0, + "diff_total_yd": 2.0, + "diff_apex_ft": -4.4, + "status": "pass", + "error_pattern": null + }, + "s2_shot_12": { + "diff_carry_yd": 1.7, + "diff_total_yd": 9.5, + "diff_apex_ft": -5.1, + "status": "moderate", + "error_pattern": "ROLLOUT_TOO_LONG" + }, + "s2_shot_13": { + "diff_carry_yd": -1.7, + "diff_total_yd": 3.0, + "diff_apex_ft": -5.9, + "status": "pass", + "error_pattern": null + }, + "s2_shot_14": { + "diff_carry_yd": 0.2, + "diff_total_yd": 1.6, + "diff_apex_ft": -5.9, + "status": "pass", + "error_pattern": null + }, + "s2_shot_15": { + "diff_carry_yd": -0.6, + "diff_total_yd": -12.3, + "diff_apex_ft": -1.9, + "status": "severe", + "error_pattern": "ROLLOUT_TOO_SHORT" + }, + "s2_shot_16": { + "diff_carry_yd": 0.4, + "diff_total_yd": 2.2, + "diff_apex_ft": -3.2, + "status": "pass", + "error_pattern": null + }, + "s2_shot_17": { + "diff_carry_yd": 0.0, + "diff_total_yd": 9.2, + "diff_apex_ft": -3.6, + "status": "moderate", + "error_pattern": "ROLLOUT_TOO_LONG" + }, + "s2_shot_18": { + "diff_carry_yd": 1.1, + "diff_total_yd": 16.6, + "diff_apex_ft": 3.1, + "status": "severe", + "error_pattern": "ROLLOUT_TOO_LONG" + }, + "s2_shot_19": { + "diff_carry_yd": -3.1, + "diff_total_yd": -4.4, + "diff_apex_ft": -0.9, + "status": "moderate", + "error_pattern": "CARRY_TOO_SHORT" + }, + "s2_shot_20": { + "diff_carry_yd": 0.2, + "diff_total_yd": 11.1, + "diff_apex_ft": -1.8, + "status": "severe", + "error_pattern": "ROLLOUT_TOO_LONG" + }, + "s2_shot_21": { + "diff_carry_yd": 5.8, + "diff_total_yd": 28.8, + "diff_apex_ft": 1.8, + "status": "severe", + "error_pattern": "CARRY_AND_ROLLOUT_LONG" + }, + "s2_shot_22": { + "diff_carry_yd": -0.7, + "diff_total_yd": 3.5, + "diff_apex_ft": -1.4, + "status": "pass", + "error_pattern": null + }, + "s2_shot_23": { + "diff_carry_yd": -2.8, + "diff_total_yd": -18.9, + "diff_apex_ft": 0.1, + "status": "severe", + "error_pattern": "ROLLOUT_TOO_SHORT" + }, + "s2_shot_24": { + "diff_carry_yd": -0.7, + "diff_total_yd": 2.7, + "diff_apex_ft": -1.6, + "status": "pass", + "error_pattern": null + }, + "s2_shot_26": { + "diff_carry_yd": 2.6, + "diff_total_yd": 23.1, + "diff_apex_ft": 24.2, + "status": "severe", + "error_pattern": "ROLLOUT_TOO_LONG" + }, + "s2_shot_27": { + "diff_carry_yd": -3.4, + "diff_total_yd": 13.8, + "diff_apex_ft": 5.0, + "status": "severe", + "error_pattern": "CARRY_TOO_SHORT" + }, + "s2_shot_9": { + "diff_carry_yd": -2.8, + "diff_total_yd": 3.5, + "diff_apex_ft": 7.3, + "status": "pass", + "error_pattern": null + }, + "s3_shot_3w_18": { + "diff_carry_yd": null, + "diff_total_yd": null, + "diff_apex_ft": null, + "status": "pass", + "error_pattern": null + }, + "s3_shot_3w_19": { + "diff_carry_yd": -0.1, + "diff_total_yd": 16.7, + "diff_apex_ft": 0.1, + "status": "severe", + "error_pattern": "ROLLOUT_TOO_LONG" + }, + "s3_shot_3w_21": { + "diff_carry_yd": 1.1, + "diff_total_yd": 16.6, + "diff_apex_ft": 0.3, + "status": "severe", + "error_pattern": "ROLLOUT_TOO_LONG" + }, + "s3_shot_3w_22": { + "diff_carry_yd": 0.0, + "diff_total_yd": 20.2, + "diff_apex_ft": 0.5, + "status": "severe", + "error_pattern": "ROLLOUT_TOO_LONG" + }, + "s3_shot_3w_23": { + "diff_carry_yd": 0.8, + "diff_total_yd": -22.7, + "diff_apex_ft": -1.2, + "status": "severe", + "error_pattern": "ROLLOUT_TOO_SHORT" + }, + "s3_shot_3w_24": { + "diff_carry_yd": 3.9, + "diff_total_yd": 29.6, + "diff_apex_ft": 1.9, + "status": "severe", + "error_pattern": "CARRY_AND_ROLLOUT_LONG" + }, + "s3_shot_5i_10": { + "diff_carry_yd": 0.0, + "diff_total_yd": -7.1, + "diff_apex_ft": 5.9, + "status": "moderate", + "error_pattern": "ROLLOUT_TOO_SHORT" + }, + "s3_shot_5i_11": { + "diff_carry_yd": 0.0, + "diff_total_yd": -17.2, + "diff_apex_ft": -1.3, + "status": "severe", + "error_pattern": "ROLLOUT_TOO_SHORT" + }, + "s3_shot_5i_12": { + "diff_carry_yd": 1.2, + "diff_total_yd": -23.5, + "diff_apex_ft": 1.1, + "status": "severe", + "error_pattern": "ROLLOUT_TOO_SHORT" + }, + "s3_shot_5i_13": { + "diff_carry_yd": 0.0, + "diff_total_yd": 10.1, + "diff_apex_ft": 0.6, + "status": "severe", + "error_pattern": "ROLLOUT_TOO_LONG" + }, + "s3_shot_5i_15": { + "diff_carry_yd": 0.0, + "diff_total_yd": 14.7, + "diff_apex_ft": -1.1, + "status": "severe", + "error_pattern": "ROLLOUT_TOO_LONG" + }, + "s3_shot_5i_16": { + "diff_carry_yd": 1.1, + "diff_total_yd": -20.8, + "diff_apex_ft": -0.2, + "status": "severe", + "error_pattern": "ROLLOUT_TOO_SHORT" + }, + "s3_shot_5i_17": { + "diff_carry_yd": 0.0, + "diff_total_yd": -1.9, + "diff_apex_ft": -0.3, + "status": "pass", + "error_pattern": null + }, + "s3_shot_6i_35": { + "diff_carry_yd": 0.0, + "diff_total_yd": -16.6, + "diff_apex_ft": -3.3, + "status": "severe", + "error_pattern": "ROLLOUT_TOO_SHORT" + }, + "s3_shot_6i_36": { + "diff_carry_yd": 0.0, + "diff_total_yd": -20.8, + "diff_apex_ft": 0.6, + "status": "severe", + "error_pattern": "ROLLOUT_TOO_SHORT" + }, + "s3_shot_6i_37": { + "diff_carry_yd": 0.0, + "diff_total_yd": 12.2, + "diff_apex_ft": -0.8, + "status": "severe", + "error_pattern": "ROLLOUT_TOO_LONG" + }, + "s3_shot_6i_38": { + "diff_carry_yd": 0.0, + "diff_total_yd": -21.3, + "diff_apex_ft": 0.1, + "status": "severe", + "error_pattern": "ROLLOUT_TOO_SHORT" + }, + "s3_shot_6i_39": { + "diff_carry_yd": -0.5, + "diff_total_yd": 6.4, + "diff_apex_ft": 0.0, + "status": "moderate", + "error_pattern": "ROLLOUT_TOO_LONG" + }, + "s3_shot_6i_40": { + "diff_carry_yd": -1.2, + "diff_total_yd": 7.8, + "diff_apex_ft": 0.1, + "status": "moderate", + "error_pattern": "ROLLOUT_TOO_LONG" + }, + "s3_shot_6i_41": { + "diff_carry_yd": 0.0, + "diff_total_yd": 13.2, + "diff_apex_ft": -1.0, + "status": "severe", + "error_pattern": "ROLLOUT_TOO_LONG" + }, + "s3_shot_6i_42": { + "diff_carry_yd": -1.1, + "diff_total_yd": -17.4, + "diff_apex_ft": 0.8, + "status": "severe", + "error_pattern": "ROLLOUT_TOO_SHORT" + }, + "s3_shot_6i_43": { + "diff_carry_yd": 2.4, + "diff_total_yd": 0.9, + "diff_apex_ft": 8.1, + "status": "pass", + "error_pattern": null + }, + "s3_shot_6i_44": { + "diff_carry_yd": -1.2, + "diff_total_yd": -27.4, + "diff_apex_ft": -1.3, + "status": "severe", + "error_pattern": "ROLLOUT_TOO_SHORT" + }, + "s3_shot_6i_45": { + "diff_carry_yd": 0.0, + "diff_total_yd": 21.1, + "diff_apex_ft": 0.6, + "status": "severe", + "error_pattern": "ROLLOUT_TOO_LONG" + }, + "s3_shot_6i_46": { + "diff_carry_yd": 3.8, + "diff_total_yd": -3.5, + "diff_apex_ft": -1.5, + "status": "moderate", + "error_pattern": "CARRY_TOO_LONG" + }, + "s3_shot_6i_47": { + "diff_carry_yd": 3.0, + "diff_total_yd": 10.8, + "diff_apex_ft": 11.8, + "status": "severe", + "error_pattern": "ROLLOUT_TOO_LONG" + }, + "s3_shot_6i_48": { + "diff_carry_yd": 2.1, + "diff_total_yd": 11.1, + "diff_apex_ft": 14.2, + "status": "severe", + "error_pattern": "ROLLOUT_TOO_LONG" + }, + "s3_shot_6i_49": { + "diff_carry_yd": 0.0, + "diff_total_yd": 7.0, + "diff_apex_ft": -0.3, + "status": "moderate", + "error_pattern": "ROLLOUT_TOO_LONG" + }, + "s3_shot_6i_50": { + "diff_carry_yd": -0.4, + "diff_total_yd": -12.1, + "diff_apex_ft": 3.9, + "status": "severe", + "error_pattern": "ROLLOUT_TOO_SHORT" + }, + "s3_shot_7i_25": { + "diff_carry_yd": -0.5, + "diff_total_yd": -18.0, + "diff_apex_ft": 0.9, + "status": "severe", + "error_pattern": "ROLLOUT_TOO_SHORT" + }, + "s3_shot_7i_26": { + "diff_carry_yd": 0.0, + "diff_total_yd": -21.8, + "diff_apex_ft": 1.1, + "status": "severe", + "error_pattern": "ROLLOUT_TOO_SHORT" + }, + "s3_shot_7i_27": { + "diff_carry_yd": -2.2, + "diff_total_yd": 4.3, + "diff_apex_ft": 8.0, + "status": "pass", + "error_pattern": null + }, + "s3_shot_7i_28": { + "diff_carry_yd": -2.8, + "diff_total_yd": 1.2, + "diff_apex_ft": 8.3, + "status": "pass", + "error_pattern": null + }, + "s3_shot_7i_29": { + "diff_carry_yd": 1.0, + "diff_total_yd": -5.8, + "diff_apex_ft": -3.5, + "status": "moderate", + "error_pattern": "ROLLOUT_TOO_SHORT" + }, + "s3_shot_7i_30": { + "diff_carry_yd": -4.2, + "diff_total_yd": 1.5, + "diff_apex_ft": 5.5, + "status": "moderate", + "error_pattern": "CARRY_TOO_SHORT" + }, + "s3_shot_7i_31": { + "diff_carry_yd": 0.0, + "diff_total_yd": -14.3, + "diff_apex_ft": -4.1, + "status": "severe", + "error_pattern": "ROLLOUT_TOO_SHORT" + }, + "s3_shot_7i_32": { + "diff_carry_yd": -1.8, + "diff_total_yd": -2.2, + "diff_apex_ft": 3.1, + "status": "pass", + "error_pattern": null + }, + "s3_shot_7i_33": { + "diff_carry_yd": -1.6, + "diff_total_yd": -1.3, + "diff_apex_ft": 4.7, + "status": "pass", + "error_pattern": null + }, + "s3_shot_7i_34": { + "diff_carry_yd": 0.4, + "diff_total_yd": 2.6, + "diff_apex_ft": 3.1, + "status": "pass", + "error_pattern": null + }, + "s3_shot_9i_1": { + "diff_carry_yd": 0.0, + "diff_total_yd": -12.6, + "diff_apex_ft": 1.3, + "status": "severe", + "error_pattern": "ROLLOUT_TOO_SHORT" + }, + "s3_shot_9i_2": { + "diff_carry_yd": 0.0, + "diff_total_yd": -9.1, + "diff_apex_ft": -3.0, + "status": "moderate", + "error_pattern": "ROLLOUT_TOO_SHORT" + }, + "s3_shot_9i_3": { + "diff_carry_yd": -1.4, + "diff_total_yd": 1.1, + "diff_apex_ft": -5.3, + "status": "pass", + "error_pattern": null + }, + "s3_shot_9i_5": { + "diff_carry_yd": -0.0, + "diff_total_yd": -5.5, + "diff_apex_ft": -5.5, + "status": "moderate", + "error_pattern": "ROLLOUT_TOO_SHORT" + }, + "s3_shot_9i_7": { + "diff_carry_yd": 1.1, + "diff_total_yd": 1.6, + "diff_apex_ft": -4.2, + "status": "pass", + "error_pattern": null + }, + "s3_shot_9i_8": { + "diff_carry_yd": -1.6, + "diff_total_yd": 4.1, + "diff_apex_ft": -1.5, + "status": "pass", + "error_pattern": null + }, + "s3_shot_9i_9": { + "diff_carry_yd": -1.2, + "diff_total_yd": 1.9, + "diff_apex_ft": -6.1, + "status": "pass", + "error_pattern": null + }, + "s3_shot_driver_51": { + "diff_carry_yd": 4.4, + "diff_total_yd": 29.6, + "diff_apex_ft": 0.6, + "status": "severe", + "error_pattern": "CARRY_AND_ROLLOUT_LONG" + }, + "s3_shot_driver_52": { + "diff_carry_yd": 5.4, + "diff_total_yd": 25.3, + "diff_apex_ft": -1.4, + "status": "severe", + "error_pattern": "CARRY_AND_ROLLOUT_LONG" + }, + "s3_shot_driver_53": { + "diff_carry_yd": 2.5, + "diff_total_yd": 17.9, + "diff_apex_ft": -3.8, + "status": "severe", + "error_pattern": "ROLLOUT_TOO_LONG" + }, + "s3_shot_driver_54": { + "diff_carry_yd": -1.0, + "diff_total_yd": 0.0, + "diff_apex_ft": -2.2, + "status": "pass", + "error_pattern": null + }, + "s3_shot_driver_55": { + "diff_carry_yd": 2.5, + "diff_total_yd": 22.6, + "diff_apex_ft": 0.4, + "status": "severe", + "error_pattern": "ROLLOUT_TOO_LONG" + }, + "s3_shot_driver_56": { + "diff_carry_yd": -2.2, + "diff_total_yd": 20.7, + "diff_apex_ft": 9.7, + "status": "severe", + "error_pattern": "ROLLOUT_TOO_LONG" + }, + "s3_shot_driver_57": { + "diff_carry_yd": -5.1, + "diff_total_yd": -19.7, + "diff_apex_ft": -3.5, + "status": "severe", + "error_pattern": "CARRY_AND_ROLLOUT_SHORT" + }, + "s3_shot_driver_58": { + "diff_carry_yd": 11.0, + "diff_total_yd": 37.0, + "diff_apex_ft": -4.8, + "status": "severe", + "error_pattern": "CARRY_AND_ROLLOUT_LONG" + }, + "s3_shot_driver_59": { + "diff_carry_yd": -0.9, + "diff_total_yd": 17.7, + "diff_apex_ft": -3.8, + "status": "severe", + "error_pattern": "ROLLOUT_TOO_LONG" + }, + "s3_shot_driver_60": { + "diff_carry_yd": 0.0, + "diff_total_yd": -14.9, + "diff_apex_ft": -2.4, + "status": "severe", + "error_pattern": "ROLLOUT_TOO_SHORT" + }, + "s3_shot_pw_64": { + "diff_carry_yd": 0.0, + "diff_total_yd": 9.6, + "diff_apex_ft": -3.7, + "status": "moderate", + "error_pattern": "ROLLOUT_TOO_LONG" + }, + "s3_shot_pw_65": { + "diff_carry_yd": -0.1, + "diff_total_yd": 4.7, + "diff_apex_ft": -3.8, + "status": "pass", + "error_pattern": null + }, + "s3_shot_pw_66": { + "diff_carry_yd": -0.0, + "diff_total_yd": 11.3, + "diff_apex_ft": -3.7, + "status": "severe", + "error_pattern": "ROLLOUT_TOO_LONG" + }, + "s3_shot_pw_67": { + "diff_carry_yd": 0.0, + "diff_total_yd": 5.7, + "diff_apex_ft": -4.0, + "status": "moderate", + "error_pattern": "ROLLOUT_TOO_LONG" + }, + "s3_shot_pw_68": { + "diff_carry_yd": -0.0, + "diff_total_yd": 6.1, + "diff_apex_ft": -6.2, + "status": "moderate", + "error_pattern": "ROLLOUT_TOO_LONG" + }, + "s3_shot_pw_69": { + "diff_carry_yd": 0.0, + "diff_total_yd": -3.9, + "diff_apex_ft": -3.8, + "status": "pass", + "error_pattern": null + }, + "s4_shot_3w_31": { + "diff_carry_yd": null, + "diff_total_yd": null, + "diff_apex_ft": null, + "status": "pass", + "error_pattern": null + }, + "s4_shot_3w_32": { + "diff_carry_yd": null, + "diff_total_yd": null, + "diff_apex_ft": null, + "status": "pass", + "error_pattern": null + }, + "s4_shot_3w_33": { + "diff_carry_yd": null, + "diff_total_yd": null, + "diff_apex_ft": null, + "status": "pass", + "error_pattern": null + }, + "s4_shot_3w_34": { + "diff_carry_yd": null, + "diff_total_yd": null, + "diff_apex_ft": null, + "status": "pass", + "error_pattern": null + }, + "s4_shot_3w_35": { + "diff_carry_yd": null, + "diff_total_yd": null, + "diff_apex_ft": null, + "status": "pass", + "error_pattern": null + }, + "s4_shot_5i_25": { + "diff_carry_yd": null, + "diff_total_yd": null, + "diff_apex_ft": null, + "status": "pass", + "error_pattern": null + }, + "s4_shot_5i_26": { + "diff_carry_yd": null, + "diff_total_yd": null, + "diff_apex_ft": null, + "status": "pass", + "error_pattern": null + }, + "s4_shot_5i_27": { + "diff_carry_yd": null, + "diff_total_yd": null, + "diff_apex_ft": null, + "status": "pass", + "error_pattern": null + }, + "s4_shot_5i_28": { + "diff_carry_yd": null, + "diff_total_yd": null, + "diff_apex_ft": null, + "status": "pass", + "error_pattern": null + }, + "s4_shot_5i_29": { + "diff_carry_yd": null, + "diff_total_yd": null, + "diff_apex_ft": null, + "status": "pass", + "error_pattern": null + }, + "s4_shot_5i_30": { + "diff_carry_yd": null, + "diff_total_yd": null, + "diff_apex_ft": null, + "status": "pass", + "error_pattern": null + }, + "s4_shot_6i_19": { + "diff_carry_yd": null, + "diff_total_yd": null, + "diff_apex_ft": null, + "status": "pass", + "error_pattern": null + }, + "s4_shot_6i_20": { + "diff_carry_yd": null, + "diff_total_yd": null, + "diff_apex_ft": null, + "status": "pass", + "error_pattern": null + }, + "s4_shot_6i_21": { + "diff_carry_yd": null, + "diff_total_yd": null, + "diff_apex_ft": null, + "status": "pass", + "error_pattern": null + }, + "s4_shot_6i_22": { + "diff_carry_yd": null, + "diff_total_yd": null, + "diff_apex_ft": null, + "status": "pass", + "error_pattern": null + }, + "s4_shot_6i_23": { + "diff_carry_yd": null, + "diff_total_yd": null, + "diff_apex_ft": null, + "status": "pass", + "error_pattern": null + }, + "s4_shot_6i_24": { + "diff_carry_yd": null, + "diff_total_yd": null, + "diff_apex_ft": null, + "status": "pass", + "error_pattern": null + }, + "s4_shot_9i_13": { + "diff_carry_yd": null, + "diff_total_yd": null, + "diff_apex_ft": null, + "status": "pass", + "error_pattern": null + }, + "s4_shot_9i_14": { + "diff_carry_yd": null, + "diff_total_yd": null, + "diff_apex_ft": null, + "status": "pass", + "error_pattern": null + }, + "s4_shot_9i_15": { + "diff_carry_yd": null, + "diff_total_yd": null, + "diff_apex_ft": null, + "status": "pass", + "error_pattern": null + }, + "s4_shot_9i_17": { + "diff_carry_yd": null, + "diff_total_yd": null, + "diff_apex_ft": null, + "status": "pass", + "error_pattern": null + }, + "s4_shot_9i_18": { + "diff_carry_yd": null, + "diff_total_yd": null, + "diff_apex_ft": null, + "status": "pass", + "error_pattern": null + }, + "s4_shot_lw_38": { + "diff_carry_yd": null, + "diff_total_yd": null, + "diff_apex_ft": null, + "status": "pass", + "error_pattern": null + }, + "s4_shot_pw_1": { + "diff_carry_yd": null, + "diff_total_yd": null, + "diff_apex_ft": null, + "status": "pass", + "error_pattern": null + }, + "s4_shot_pw_10": { + "diff_carry_yd": null, + "diff_total_yd": null, + "diff_apex_ft": null, + "status": "pass", + "error_pattern": null + }, + "s4_shot_pw_11": { + "diff_carry_yd": null, + "diff_total_yd": null, + "diff_apex_ft": null, + "status": "pass", + "error_pattern": null + }, + "s4_shot_pw_2": { + "diff_carry_yd": null, + "diff_total_yd": null, + "diff_apex_ft": null, + "status": "pass", + "error_pattern": null + }, + "s4_shot_pw_3": { + "diff_carry_yd": null, + "diff_total_yd": null, + "diff_apex_ft": null, + "status": "pass", + "error_pattern": null + }, + "s4_shot_pw_47": { + "diff_carry_yd": null, + "diff_total_yd": null, + "diff_apex_ft": null, + "status": "pass", + "error_pattern": null + }, + "s4_shot_pw_48": { + "diff_carry_yd": null, + "diff_total_yd": null, + "diff_apex_ft": null, + "status": "pass", + "error_pattern": null + }, + "s4_shot_pw_49": { + "diff_carry_yd": null, + "diff_total_yd": null, + "diff_apex_ft": null, + "status": "pass", + "error_pattern": null + }, + "s4_shot_pw_6": { + "diff_carry_yd": null, + "diff_total_yd": null, + "diff_apex_ft": null, + "status": "pass", + "error_pattern": null + }, + "s4_shot_pw_7": { + "diff_carry_yd": null, + "diff_total_yd": null, + "diff_apex_ft": null, + "status": "pass", + "error_pattern": null + }, + "s4_shot_pw_9": { + "diff_carry_yd": null, + "diff_total_yd": null, + "diff_apex_ft": null, + "status": "pass", + "error_pattern": null + }, + "topped_test_shot": { + "diff_carry_yd": -0.6, + "diff_total_yd": 13.9, + "diff_apex_ft": -0.1, + "status": "severe", + "error_pattern": "ROLLOUT_TOO_LONG" + }, + "wedge_shot_1": { + "diff_carry_yd": 0.0, + "diff_total_yd": -0.7, + "diff_apex_ft": -2.4, + "status": "pass", + "error_pattern": null + }, + "wedge_shot_2": { + "diff_carry_yd": 0.0, + "diff_total_yd": 2.7, + "diff_apex_ft": -4.2, + "status": "pass", + "error_pattern": null + }, + "wedge_test_shot": { + "diff_carry_yd": 0.0, + "diff_total_yd": 3.6, + "diff_apex_ft": -3.2, + "status": "pass", + "error_pattern": null + }, + "wedge_test_shot2": { + "diff_carry_yd": -0.0, + "diff_total_yd": 3.1, + "diff_apex_ft": -2.0, + "status": "pass", + "error_pattern": null + }, + "wood1": { + "diff_carry_yd": 5.7, + "diff_total_yd": -3.2, + "diff_apex_ft": 3.2, + "status": "moderate", + "error_pattern": "CARRY_TOO_LONG" + }, + "wood2": { + "diff_carry_yd": 4.8, + "diff_total_yd": 0.7, + "diff_apex_ft": -1.6, + "status": "moderate", + "error_pattern": "CARRY_TOO_LONG" + }, + "wood_low_test_shot": { + "diff_carry_yd": 1.8, + "diff_total_yd": 22.9, + "diff_apex_ft": 0.4, + "status": "severe", + "error_pattern": "ROLLOUT_TOO_LONG" + } + }, + "regressions": [], + "conflicts": [ + "Bounce.FlightTangentialRetentionBase", + "Bounce.FlightSpinFactorMin", + "Bounce.FlightSpinFactorDivisor", + "Rollout.MidSpinMultiplierMax", + "Rollout.HighSpinMultiplierMax", + "Rollout.FrictionBlendSpeed", + "KineticFrictionMultiplier", + "Bounce.RolloutHighSpinRetention", + "Rollout.ChipVelocityScaleMin", + "Rollout.ChipVelocityScaleMax", + "Bounce.CorBaseA", + "Rollout.LowSpinMultiplierMax", + "Rollout.LowSpinThreshold", + "RollingFrictionMultiplier", + "Bounce.RolloutLowSpinRetention", + "Flight.ClMaxBase", + "Flight.CdMin", + "DragScaleMultiplier", + "LiftScaleMultiplier" + ] +} diff --git a/assets/data/calibration/history/iteration_041.json b/assets/data/calibration/history/iteration_041.json new file mode 100644 index 0000000..555c600 --- /dev/null +++ b/assets/data/calibration/history/iteration_041.json @@ -0,0 +1,987 @@ +{ + "iteration": 41, + "timestamp": "2026-03-14T01:03:00.720932", + "profile_overrides": {}, + "summary": { + "pass": 29, + "moderate": 19, + "severe": 51, + "no_reference": 37 + }, + "per_shot": { + "5iron": { + "diff_carry_yd": 1.6, + "diff_total_yd": 12.1, + "diff_apex_ft": 5.0, + "status": "severe", + "error_pattern": "ROLLOUT_TOO_LONG" + }, + "approach_mid_iron_test_shot": { + "diff_carry_yd": 0.0, + "diff_total_yd": 7.9, + "diff_apex_ft": -4.7, + "status": "moderate", + "error_pattern": "ROLLOUT_TOO_LONG" + }, + "bump_and_run": { + "diff_carry_yd": -0.1, + "diff_total_yd": -27.5, + "diff_apex_ft": -2.1, + "status": "severe", + "error_pattern": "ROLLOUT_TOO_SHORT" + }, + "bump_and_run_slow": { + "diff_carry_yd": null, + "diff_total_yd": null, + "diff_apex_ft": null, + "status": "pass", + "error_pattern": null + }, + "bump_test_shot": { + "diff_carry_yd": 0.0, + "diff_total_yd": 12.8, + "diff_apex_ft": -0.1, + "status": "severe", + "error_pattern": "ROLLOUT_TOO_LONG" + }, + "checked_test_shot": { + "diff_carry_yd": -0.6, + "diff_total_yd": 1.1, + "diff_apex_ft": -8.7, + "status": "pass", + "error_pattern": null + }, + "chip_test_shot": { + "diff_carry_yd": null, + "diff_total_yd": null, + "diff_apex_ft": null, + "status": "pass", + "error_pattern": null + }, + "drive_test_shot": { + "diff_carry_yd": 1.0, + "diff_total_yd": 0.8, + "diff_apex_ft": -0.6, + "status": "pass", + "error_pattern": null + }, + "driver1": { + "diff_carry_yd": 0.3, + "diff_total_yd": -25.7, + "diff_apex_ft": -0.7, + "status": "severe", + "error_pattern": "ROLLOUT_TOO_SHORT" + }, + "driver2": { + "diff_carry_yd": 2.5, + "diff_total_yd": 8.6, + "diff_apex_ft": -2.7, + "status": "moderate", + "error_pattern": "ROLLOUT_TOO_LONG" + }, + "driver3": { + "diff_carry_yd": -0.8, + "diff_total_yd": 23.3, + "diff_apex_ft": 21.1, + "status": "severe", + "error_pattern": "ROLLOUT_TOO_LONG" + }, + "driver4": { + "diff_carry_yd": 0.7, + "diff_total_yd": 16.3, + "diff_apex_ft": 4.4, + "status": "severe", + "error_pattern": "ROLLOUT_TOO_LONG" + }, + "flop_test_shot": { + "diff_carry_yd": 0.9, + "diff_total_yd": 2.8, + "diff_apex_ft": -7.6, + "status": "pass", + "error_pattern": null + }, + "p_wedge_shot_1": { + "diff_carry_yd": 0.0, + "diff_total_yd": 2.2, + "diff_apex_ft": -5.4, + "status": "pass", + "error_pattern": null + }, + "s2_shot_10": { + "diff_carry_yd": 0.0, + "diff_total_yd": 10.7, + "diff_apex_ft": -5.8, + "status": "severe", + "error_pattern": "ROLLOUT_TOO_LONG" + }, + "s2_shot_11": { + "diff_carry_yd": 0.0, + "diff_total_yd": 2.0, + "diff_apex_ft": -4.4, + "status": "pass", + "error_pattern": null + }, + "s2_shot_12": { + "diff_carry_yd": 1.7, + "diff_total_yd": 9.5, + "diff_apex_ft": -5.1, + "status": "moderate", + "error_pattern": "ROLLOUT_TOO_LONG" + }, + "s2_shot_13": { + "diff_carry_yd": -1.7, + "diff_total_yd": 3.0, + "diff_apex_ft": -5.9, + "status": "pass", + "error_pattern": null + }, + "s2_shot_14": { + "diff_carry_yd": 0.2, + "diff_total_yd": 1.6, + "diff_apex_ft": -5.9, + "status": "pass", + "error_pattern": null + }, + "s2_shot_15": { + "diff_carry_yd": -0.6, + "diff_total_yd": -12.3, + "diff_apex_ft": -1.9, + "status": "severe", + "error_pattern": "ROLLOUT_TOO_SHORT" + }, + "s2_shot_16": { + "diff_carry_yd": 0.4, + "diff_total_yd": 2.2, + "diff_apex_ft": -3.2, + "status": "pass", + "error_pattern": null + }, + "s2_shot_17": { + "diff_carry_yd": 0.0, + "diff_total_yd": 9.2, + "diff_apex_ft": -3.6, + "status": "moderate", + "error_pattern": "ROLLOUT_TOO_LONG" + }, + "s2_shot_18": { + "diff_carry_yd": 1.1, + "diff_total_yd": 16.6, + "diff_apex_ft": 3.1, + "status": "severe", + "error_pattern": "ROLLOUT_TOO_LONG" + }, + "s2_shot_19": { + "diff_carry_yd": -3.1, + "diff_total_yd": -4.4, + "diff_apex_ft": -0.9, + "status": "moderate", + "error_pattern": "CARRY_TOO_SHORT" + }, + "s2_shot_20": { + "diff_carry_yd": 0.2, + "diff_total_yd": 11.1, + "diff_apex_ft": -1.8, + "status": "severe", + "error_pattern": "ROLLOUT_TOO_LONG" + }, + "s2_shot_21": { + "diff_carry_yd": 5.8, + "diff_total_yd": 28.8, + "diff_apex_ft": 1.8, + "status": "severe", + "error_pattern": "CARRY_AND_ROLLOUT_LONG" + }, + "s2_shot_22": { + "diff_carry_yd": -0.7, + "diff_total_yd": 3.5, + "diff_apex_ft": -1.4, + "status": "pass", + "error_pattern": null + }, + "s2_shot_23": { + "diff_carry_yd": -2.8, + "diff_total_yd": -18.9, + "diff_apex_ft": 0.1, + "status": "severe", + "error_pattern": "ROLLOUT_TOO_SHORT" + }, + "s2_shot_24": { + "diff_carry_yd": -0.7, + "diff_total_yd": 2.7, + "diff_apex_ft": -1.6, + "status": "pass", + "error_pattern": null + }, + "s2_shot_26": { + "diff_carry_yd": 2.6, + "diff_total_yd": 23.1, + "diff_apex_ft": 24.2, + "status": "severe", + "error_pattern": "ROLLOUT_TOO_LONG" + }, + "s2_shot_27": { + "diff_carry_yd": -3.4, + "diff_total_yd": 13.8, + "diff_apex_ft": 5.0, + "status": "severe", + "error_pattern": "CARRY_TOO_SHORT" + }, + "s2_shot_9": { + "diff_carry_yd": -2.8, + "diff_total_yd": 3.5, + "diff_apex_ft": 7.3, + "status": "pass", + "error_pattern": null + }, + "s3_shot_3w_18": { + "diff_carry_yd": null, + "diff_total_yd": null, + "diff_apex_ft": null, + "status": "pass", + "error_pattern": null + }, + "s3_shot_3w_19": { + "diff_carry_yd": -0.1, + "diff_total_yd": 16.7, + "diff_apex_ft": 0.1, + "status": "severe", + "error_pattern": "ROLLOUT_TOO_LONG" + }, + "s3_shot_3w_21": { + "diff_carry_yd": 1.1, + "diff_total_yd": 16.6, + "diff_apex_ft": 0.3, + "status": "severe", + "error_pattern": "ROLLOUT_TOO_LONG" + }, + "s3_shot_3w_22": { + "diff_carry_yd": 0.0, + "diff_total_yd": 20.2, + "diff_apex_ft": 0.5, + "status": "severe", + "error_pattern": "ROLLOUT_TOO_LONG" + }, + "s3_shot_3w_23": { + "diff_carry_yd": 0.8, + "diff_total_yd": -22.7, + "diff_apex_ft": -1.2, + "status": "severe", + "error_pattern": "ROLLOUT_TOO_SHORT" + }, + "s3_shot_3w_24": { + "diff_carry_yd": 3.9, + "diff_total_yd": 29.6, + "diff_apex_ft": 1.9, + "status": "severe", + "error_pattern": "CARRY_AND_ROLLOUT_LONG" + }, + "s3_shot_5i_10": { + "diff_carry_yd": 0.0, + "diff_total_yd": -7.1, + "diff_apex_ft": 5.9, + "status": "moderate", + "error_pattern": "ROLLOUT_TOO_SHORT" + }, + "s3_shot_5i_11": { + "diff_carry_yd": 0.0, + "diff_total_yd": -17.2, + "diff_apex_ft": -1.3, + "status": "severe", + "error_pattern": "ROLLOUT_TOO_SHORT" + }, + "s3_shot_5i_12": { + "diff_carry_yd": 1.2, + "diff_total_yd": -23.5, + "diff_apex_ft": 1.1, + "status": "severe", + "error_pattern": "ROLLOUT_TOO_SHORT" + }, + "s3_shot_5i_13": { + "diff_carry_yd": 0.0, + "diff_total_yd": 10.1, + "diff_apex_ft": 0.6, + "status": "severe", + "error_pattern": "ROLLOUT_TOO_LONG" + }, + "s3_shot_5i_15": { + "diff_carry_yd": 0.0, + "diff_total_yd": 14.7, + "diff_apex_ft": -1.1, + "status": "severe", + "error_pattern": "ROLLOUT_TOO_LONG" + }, + "s3_shot_5i_16": { + "diff_carry_yd": 1.1, + "diff_total_yd": -20.8, + "diff_apex_ft": -0.2, + "status": "severe", + "error_pattern": "ROLLOUT_TOO_SHORT" + }, + "s3_shot_5i_17": { + "diff_carry_yd": 0.0, + "diff_total_yd": -1.9, + "diff_apex_ft": -0.3, + "status": "pass", + "error_pattern": null + }, + "s3_shot_6i_35": { + "diff_carry_yd": 0.0, + "diff_total_yd": -16.6, + "diff_apex_ft": -3.3, + "status": "severe", + "error_pattern": "ROLLOUT_TOO_SHORT" + }, + "s3_shot_6i_36": { + "diff_carry_yd": 0.0, + "diff_total_yd": -20.8, + "diff_apex_ft": 0.6, + "status": "severe", + "error_pattern": "ROLLOUT_TOO_SHORT" + }, + "s3_shot_6i_37": { + "diff_carry_yd": 0.0, + "diff_total_yd": 12.2, + "diff_apex_ft": -0.8, + "status": "severe", + "error_pattern": "ROLLOUT_TOO_LONG" + }, + "s3_shot_6i_38": { + "diff_carry_yd": 0.0, + "diff_total_yd": -21.3, + "diff_apex_ft": 0.1, + "status": "severe", + "error_pattern": "ROLLOUT_TOO_SHORT" + }, + "s3_shot_6i_39": { + "diff_carry_yd": -0.5, + "diff_total_yd": 6.4, + "diff_apex_ft": 0.0, + "status": "moderate", + "error_pattern": "ROLLOUT_TOO_LONG" + }, + "s3_shot_6i_40": { + "diff_carry_yd": -1.2, + "diff_total_yd": 7.8, + "diff_apex_ft": 0.1, + "status": "moderate", + "error_pattern": "ROLLOUT_TOO_LONG" + }, + "s3_shot_6i_41": { + "diff_carry_yd": 0.0, + "diff_total_yd": 13.2, + "diff_apex_ft": -1.0, + "status": "severe", + "error_pattern": "ROLLOUT_TOO_LONG" + }, + "s3_shot_6i_42": { + "diff_carry_yd": -1.1, + "diff_total_yd": -17.4, + "diff_apex_ft": 0.8, + "status": "severe", + "error_pattern": "ROLLOUT_TOO_SHORT" + }, + "s3_shot_6i_43": { + "diff_carry_yd": 2.4, + "diff_total_yd": 0.9, + "diff_apex_ft": 8.1, + "status": "pass", + "error_pattern": null + }, + "s3_shot_6i_44": { + "diff_carry_yd": -1.2, + "diff_total_yd": -27.4, + "diff_apex_ft": -1.3, + "status": "severe", + "error_pattern": "ROLLOUT_TOO_SHORT" + }, + "s3_shot_6i_45": { + "diff_carry_yd": 0.0, + "diff_total_yd": 21.1, + "diff_apex_ft": 0.6, + "status": "severe", + "error_pattern": "ROLLOUT_TOO_LONG" + }, + "s3_shot_6i_46": { + "diff_carry_yd": 3.8, + "diff_total_yd": -3.5, + "diff_apex_ft": -1.5, + "status": "moderate", + "error_pattern": "CARRY_TOO_LONG" + }, + "s3_shot_6i_47": { + "diff_carry_yd": 3.0, + "diff_total_yd": 10.8, + "diff_apex_ft": 11.8, + "status": "severe", + "error_pattern": "ROLLOUT_TOO_LONG" + }, + "s3_shot_6i_48": { + "diff_carry_yd": 2.1, + "diff_total_yd": 11.1, + "diff_apex_ft": 14.2, + "status": "severe", + "error_pattern": "ROLLOUT_TOO_LONG" + }, + "s3_shot_6i_49": { + "diff_carry_yd": 0.0, + "diff_total_yd": 7.0, + "diff_apex_ft": -0.3, + "status": "moderate", + "error_pattern": "ROLLOUT_TOO_LONG" + }, + "s3_shot_6i_50": { + "diff_carry_yd": -0.4, + "diff_total_yd": -12.1, + "diff_apex_ft": 3.9, + "status": "severe", + "error_pattern": "ROLLOUT_TOO_SHORT" + }, + "s3_shot_7i_25": { + "diff_carry_yd": -0.5, + "diff_total_yd": -18.0, + "diff_apex_ft": 0.9, + "status": "severe", + "error_pattern": "ROLLOUT_TOO_SHORT" + }, + "s3_shot_7i_26": { + "diff_carry_yd": 0.0, + "diff_total_yd": -21.8, + "diff_apex_ft": 1.1, + "status": "severe", + "error_pattern": "ROLLOUT_TOO_SHORT" + }, + "s3_shot_7i_27": { + "diff_carry_yd": -2.2, + "diff_total_yd": 4.3, + "diff_apex_ft": 8.0, + "status": "pass", + "error_pattern": null + }, + "s3_shot_7i_28": { + "diff_carry_yd": -2.8, + "diff_total_yd": 1.2, + "diff_apex_ft": 8.3, + "status": "pass", + "error_pattern": null + }, + "s3_shot_7i_29": { + "diff_carry_yd": 1.0, + "diff_total_yd": -5.8, + "diff_apex_ft": -3.5, + "status": "moderate", + "error_pattern": "ROLLOUT_TOO_SHORT" + }, + "s3_shot_7i_30": { + "diff_carry_yd": -4.2, + "diff_total_yd": 1.5, + "diff_apex_ft": 5.5, + "status": "moderate", + "error_pattern": "CARRY_TOO_SHORT" + }, + "s3_shot_7i_31": { + "diff_carry_yd": 0.0, + "diff_total_yd": -14.3, + "diff_apex_ft": -4.1, + "status": "severe", + "error_pattern": "ROLLOUT_TOO_SHORT" + }, + "s3_shot_7i_32": { + "diff_carry_yd": -1.8, + "diff_total_yd": -2.2, + "diff_apex_ft": 3.1, + "status": "pass", + "error_pattern": null + }, + "s3_shot_7i_33": { + "diff_carry_yd": -1.6, + "diff_total_yd": -1.3, + "diff_apex_ft": 4.7, + "status": "pass", + "error_pattern": null + }, + "s3_shot_7i_34": { + "diff_carry_yd": 0.4, + "diff_total_yd": 2.6, + "diff_apex_ft": 3.1, + "status": "pass", + "error_pattern": null + }, + "s3_shot_9i_1": { + "diff_carry_yd": 0.0, + "diff_total_yd": -12.6, + "diff_apex_ft": 1.3, + "status": "severe", + "error_pattern": "ROLLOUT_TOO_SHORT" + }, + "s3_shot_9i_2": { + "diff_carry_yd": 0.0, + "diff_total_yd": -9.1, + "diff_apex_ft": -3.0, + "status": "moderate", + "error_pattern": "ROLLOUT_TOO_SHORT" + }, + "s3_shot_9i_3": { + "diff_carry_yd": -1.4, + "diff_total_yd": 1.1, + "diff_apex_ft": -5.3, + "status": "pass", + "error_pattern": null + }, + "s3_shot_9i_5": { + "diff_carry_yd": -0.0, + "diff_total_yd": -5.5, + "diff_apex_ft": -5.5, + "status": "moderate", + "error_pattern": "ROLLOUT_TOO_SHORT" + }, + "s3_shot_9i_7": { + "diff_carry_yd": 1.1, + "diff_total_yd": 1.6, + "diff_apex_ft": -4.2, + "status": "pass", + "error_pattern": null + }, + "s3_shot_9i_8": { + "diff_carry_yd": -1.6, + "diff_total_yd": 4.1, + "diff_apex_ft": -1.5, + "status": "pass", + "error_pattern": null + }, + "s3_shot_9i_9": { + "diff_carry_yd": -1.2, + "diff_total_yd": 1.9, + "diff_apex_ft": -6.1, + "status": "pass", + "error_pattern": null + }, + "s3_shot_driver_51": { + "diff_carry_yd": 4.4, + "diff_total_yd": 29.6, + "diff_apex_ft": 0.6, + "status": "severe", + "error_pattern": "CARRY_AND_ROLLOUT_LONG" + }, + "s3_shot_driver_52": { + "diff_carry_yd": 5.4, + "diff_total_yd": 25.3, + "diff_apex_ft": -1.4, + "status": "severe", + "error_pattern": "CARRY_AND_ROLLOUT_LONG" + }, + "s3_shot_driver_53": { + "diff_carry_yd": 2.5, + "diff_total_yd": 17.9, + "diff_apex_ft": -3.8, + "status": "severe", + "error_pattern": "ROLLOUT_TOO_LONG" + }, + "s3_shot_driver_54": { + "diff_carry_yd": -1.0, + "diff_total_yd": 0.0, + "diff_apex_ft": -2.2, + "status": "pass", + "error_pattern": null + }, + "s3_shot_driver_55": { + "diff_carry_yd": 2.5, + "diff_total_yd": 22.6, + "diff_apex_ft": 0.4, + "status": "severe", + "error_pattern": "ROLLOUT_TOO_LONG" + }, + "s3_shot_driver_56": { + "diff_carry_yd": -2.2, + "diff_total_yd": 20.7, + "diff_apex_ft": 9.7, + "status": "severe", + "error_pattern": "ROLLOUT_TOO_LONG" + }, + "s3_shot_driver_57": { + "diff_carry_yd": -5.1, + "diff_total_yd": -19.7, + "diff_apex_ft": -3.5, + "status": "severe", + "error_pattern": "CARRY_AND_ROLLOUT_SHORT" + }, + "s3_shot_driver_58": { + "diff_carry_yd": 11.0, + "diff_total_yd": 37.0, + "diff_apex_ft": -4.8, + "status": "severe", + "error_pattern": "CARRY_AND_ROLLOUT_LONG" + }, + "s3_shot_driver_59": { + "diff_carry_yd": -0.9, + "diff_total_yd": 17.7, + "diff_apex_ft": -3.8, + "status": "severe", + "error_pattern": "ROLLOUT_TOO_LONG" + }, + "s3_shot_driver_60": { + "diff_carry_yd": 0.0, + "diff_total_yd": -14.9, + "diff_apex_ft": -2.4, + "status": "severe", + "error_pattern": "ROLLOUT_TOO_SHORT" + }, + "s3_shot_pw_64": { + "diff_carry_yd": 0.0, + "diff_total_yd": 9.6, + "diff_apex_ft": -3.7, + "status": "moderate", + "error_pattern": "ROLLOUT_TOO_LONG" + }, + "s3_shot_pw_65": { + "diff_carry_yd": -0.1, + "diff_total_yd": 4.7, + "diff_apex_ft": -3.8, + "status": "pass", + "error_pattern": null + }, + "s3_shot_pw_66": { + "diff_carry_yd": -0.0, + "diff_total_yd": 11.3, + "diff_apex_ft": -3.7, + "status": "severe", + "error_pattern": "ROLLOUT_TOO_LONG" + }, + "s3_shot_pw_67": { + "diff_carry_yd": 0.0, + "diff_total_yd": 5.7, + "diff_apex_ft": -4.0, + "status": "moderate", + "error_pattern": "ROLLOUT_TOO_LONG" + }, + "s3_shot_pw_68": { + "diff_carry_yd": -0.0, + "diff_total_yd": 6.1, + "diff_apex_ft": -6.2, + "status": "moderate", + "error_pattern": "ROLLOUT_TOO_LONG" + }, + "s3_shot_pw_69": { + "diff_carry_yd": 0.0, + "diff_total_yd": -3.9, + "diff_apex_ft": -3.8, + "status": "pass", + "error_pattern": null + }, + "s4_shot_3w_31": { + "diff_carry_yd": null, + "diff_total_yd": null, + "diff_apex_ft": null, + "status": "pass", + "error_pattern": null + }, + "s4_shot_3w_32": { + "diff_carry_yd": null, + "diff_total_yd": null, + "diff_apex_ft": null, + "status": "pass", + "error_pattern": null + }, + "s4_shot_3w_33": { + "diff_carry_yd": null, + "diff_total_yd": null, + "diff_apex_ft": null, + "status": "pass", + "error_pattern": null + }, + "s4_shot_3w_34": { + "diff_carry_yd": null, + "diff_total_yd": null, + "diff_apex_ft": null, + "status": "pass", + "error_pattern": null + }, + "s4_shot_3w_35": { + "diff_carry_yd": null, + "diff_total_yd": null, + "diff_apex_ft": null, + "status": "pass", + "error_pattern": null + }, + "s4_shot_5i_25": { + "diff_carry_yd": null, + "diff_total_yd": null, + "diff_apex_ft": null, + "status": "pass", + "error_pattern": null + }, + "s4_shot_5i_26": { + "diff_carry_yd": null, + "diff_total_yd": null, + "diff_apex_ft": null, + "status": "pass", + "error_pattern": null + }, + "s4_shot_5i_27": { + "diff_carry_yd": null, + "diff_total_yd": null, + "diff_apex_ft": null, + "status": "pass", + "error_pattern": null + }, + "s4_shot_5i_28": { + "diff_carry_yd": null, + "diff_total_yd": null, + "diff_apex_ft": null, + "status": "pass", + "error_pattern": null + }, + "s4_shot_5i_29": { + "diff_carry_yd": null, + "diff_total_yd": null, + "diff_apex_ft": null, + "status": "pass", + "error_pattern": null + }, + "s4_shot_5i_30": { + "diff_carry_yd": null, + "diff_total_yd": null, + "diff_apex_ft": null, + "status": "pass", + "error_pattern": null + }, + "s4_shot_6i_19": { + "diff_carry_yd": null, + "diff_total_yd": null, + "diff_apex_ft": null, + "status": "pass", + "error_pattern": null + }, + "s4_shot_6i_20": { + "diff_carry_yd": null, + "diff_total_yd": null, + "diff_apex_ft": null, + "status": "pass", + "error_pattern": null + }, + "s4_shot_6i_21": { + "diff_carry_yd": null, + "diff_total_yd": null, + "diff_apex_ft": null, + "status": "pass", + "error_pattern": null + }, + "s4_shot_6i_22": { + "diff_carry_yd": null, + "diff_total_yd": null, + "diff_apex_ft": null, + "status": "pass", + "error_pattern": null + }, + "s4_shot_6i_23": { + "diff_carry_yd": null, + "diff_total_yd": null, + "diff_apex_ft": null, + "status": "pass", + "error_pattern": null + }, + "s4_shot_6i_24": { + "diff_carry_yd": null, + "diff_total_yd": null, + "diff_apex_ft": null, + "status": "pass", + "error_pattern": null + }, + "s4_shot_9i_13": { + "diff_carry_yd": null, + "diff_total_yd": null, + "diff_apex_ft": null, + "status": "pass", + "error_pattern": null + }, + "s4_shot_9i_14": { + "diff_carry_yd": null, + "diff_total_yd": null, + "diff_apex_ft": null, + "status": "pass", + "error_pattern": null + }, + "s4_shot_9i_15": { + "diff_carry_yd": null, + "diff_total_yd": null, + "diff_apex_ft": null, + "status": "pass", + "error_pattern": null + }, + "s4_shot_9i_17": { + "diff_carry_yd": null, + "diff_total_yd": null, + "diff_apex_ft": null, + "status": "pass", + "error_pattern": null + }, + "s4_shot_9i_18": { + "diff_carry_yd": null, + "diff_total_yd": null, + "diff_apex_ft": null, + "status": "pass", + "error_pattern": null + }, + "s4_shot_lw_38": { + "diff_carry_yd": null, + "diff_total_yd": null, + "diff_apex_ft": null, + "status": "pass", + "error_pattern": null + }, + "s4_shot_pw_1": { + "diff_carry_yd": null, + "diff_total_yd": null, + "diff_apex_ft": null, + "status": "pass", + "error_pattern": null + }, + "s4_shot_pw_10": { + "diff_carry_yd": null, + "diff_total_yd": null, + "diff_apex_ft": null, + "status": "pass", + "error_pattern": null + }, + "s4_shot_pw_11": { + "diff_carry_yd": null, + "diff_total_yd": null, + "diff_apex_ft": null, + "status": "pass", + "error_pattern": null + }, + "s4_shot_pw_2": { + "diff_carry_yd": null, + "diff_total_yd": null, + "diff_apex_ft": null, + "status": "pass", + "error_pattern": null + }, + "s4_shot_pw_3": { + "diff_carry_yd": null, + "diff_total_yd": null, + "diff_apex_ft": null, + "status": "pass", + "error_pattern": null + }, + "s4_shot_pw_47": { + "diff_carry_yd": null, + "diff_total_yd": null, + "diff_apex_ft": null, + "status": "pass", + "error_pattern": null + }, + "s4_shot_pw_48": { + "diff_carry_yd": null, + "diff_total_yd": null, + "diff_apex_ft": null, + "status": "pass", + "error_pattern": null + }, + "s4_shot_pw_49": { + "diff_carry_yd": null, + "diff_total_yd": null, + "diff_apex_ft": null, + "status": "pass", + "error_pattern": null + }, + "s4_shot_pw_6": { + "diff_carry_yd": null, + "diff_total_yd": null, + "diff_apex_ft": null, + "status": "pass", + "error_pattern": null + }, + "s4_shot_pw_7": { + "diff_carry_yd": null, + "diff_total_yd": null, + "diff_apex_ft": null, + "status": "pass", + "error_pattern": null + }, + "s4_shot_pw_9": { + "diff_carry_yd": null, + "diff_total_yd": null, + "diff_apex_ft": null, + "status": "pass", + "error_pattern": null + }, + "topped_test_shot": { + "diff_carry_yd": -0.6, + "diff_total_yd": 13.9, + "diff_apex_ft": -0.1, + "status": "severe", + "error_pattern": "ROLLOUT_TOO_LONG" + }, + "wedge_shot_1": { + "diff_carry_yd": 0.0, + "diff_total_yd": -0.7, + "diff_apex_ft": -2.4, + "status": "pass", + "error_pattern": null + }, + "wedge_shot_2": { + "diff_carry_yd": 0.0, + "diff_total_yd": 2.7, + "diff_apex_ft": -4.2, + "status": "pass", + "error_pattern": null + }, + "wedge_test_shot": { + "diff_carry_yd": 0.0, + "diff_total_yd": 3.6, + "diff_apex_ft": -3.2, + "status": "pass", + "error_pattern": null + }, + "wedge_test_shot2": { + "diff_carry_yd": -0.0, + "diff_total_yd": 3.1, + "diff_apex_ft": -2.0, + "status": "pass", + "error_pattern": null + }, + "wood1": { + "diff_carry_yd": 5.7, + "diff_total_yd": -3.2, + "diff_apex_ft": 3.2, + "status": "moderate", + "error_pattern": "CARRY_TOO_LONG" + }, + "wood2": { + "diff_carry_yd": 4.8, + "diff_total_yd": 0.7, + "diff_apex_ft": -1.6, + "status": "moderate", + "error_pattern": "CARRY_TOO_LONG" + }, + "wood_low_test_shot": { + "diff_carry_yd": 1.8, + "diff_total_yd": 22.9, + "diff_apex_ft": 0.4, + "status": "severe", + "error_pattern": "ROLLOUT_TOO_LONG" + } + }, + "regressions": [], + "conflicts": [ + "Bounce.FlightTangentialRetentionBase", + "Bounce.FlightSpinFactorMin", + "Bounce.FlightSpinFactorDivisor", + "Rollout.MidSpinMultiplierMax", + "Rollout.HighSpinMultiplierMax", + "Rollout.FrictionBlendSpeed", + "KineticFrictionMultiplier", + "Bounce.RolloutHighSpinRetention", + "Rollout.ChipVelocityScaleMin", + "Rollout.ChipVelocityScaleMax", + "Bounce.CorBaseA", + "Rollout.LowSpinMultiplierMax", + "Rollout.LowSpinThreshold", + "RollingFrictionMultiplier", + "Bounce.RolloutLowSpinRetention", + "Flight.ClMaxBase", + "Flight.CdMin", + "DragScaleMultiplier", + "LiftScaleMultiplier" + ] +} diff --git a/assets/data/calibration/history/iteration_042.json b/assets/data/calibration/history/iteration_042.json new file mode 100644 index 0000000..f868865 --- /dev/null +++ b/assets/data/calibration/history/iteration_042.json @@ -0,0 +1,987 @@ +{ + "iteration": 42, + "timestamp": "2026-03-14T01:03:15.694232", + "profile_overrides": {}, + "summary": { + "pass": 29, + "moderate": 19, + "severe": 51, + "no_reference": 37 + }, + "per_shot": { + "5iron": { + "diff_carry_yd": 1.6, + "diff_total_yd": 12.1, + "diff_apex_ft": 5.0, + "status": "severe", + "error_pattern": "ROLLOUT_TOO_LONG" + }, + "approach_mid_iron_test_shot": { + "diff_carry_yd": 0.0, + "diff_total_yd": 7.9, + "diff_apex_ft": -4.7, + "status": "moderate", + "error_pattern": "ROLLOUT_TOO_LONG" + }, + "bump_and_run": { + "diff_carry_yd": -0.1, + "diff_total_yd": -27.5, + "diff_apex_ft": -2.1, + "status": "severe", + "error_pattern": "ROLLOUT_TOO_SHORT" + }, + "bump_and_run_slow": { + "diff_carry_yd": null, + "diff_total_yd": null, + "diff_apex_ft": null, + "status": "pass", + "error_pattern": null + }, + "bump_test_shot": { + "diff_carry_yd": 0.0, + "diff_total_yd": 12.8, + "diff_apex_ft": -0.1, + "status": "severe", + "error_pattern": "ROLLOUT_TOO_LONG" + }, + "checked_test_shot": { + "diff_carry_yd": -0.6, + "diff_total_yd": 1.1, + "diff_apex_ft": -8.7, + "status": "pass", + "error_pattern": null + }, + "chip_test_shot": { + "diff_carry_yd": null, + "diff_total_yd": null, + "diff_apex_ft": null, + "status": "pass", + "error_pattern": null + }, + "drive_test_shot": { + "diff_carry_yd": 1.0, + "diff_total_yd": 0.8, + "diff_apex_ft": -0.6, + "status": "pass", + "error_pattern": null + }, + "driver1": { + "diff_carry_yd": 0.3, + "diff_total_yd": -25.7, + "diff_apex_ft": -0.7, + "status": "severe", + "error_pattern": "ROLLOUT_TOO_SHORT" + }, + "driver2": { + "diff_carry_yd": 2.5, + "diff_total_yd": 8.6, + "diff_apex_ft": -2.7, + "status": "moderate", + "error_pattern": "ROLLOUT_TOO_LONG" + }, + "driver3": { + "diff_carry_yd": -0.8, + "diff_total_yd": 23.3, + "diff_apex_ft": 21.1, + "status": "severe", + "error_pattern": "ROLLOUT_TOO_LONG" + }, + "driver4": { + "diff_carry_yd": 0.7, + "diff_total_yd": 16.3, + "diff_apex_ft": 4.4, + "status": "severe", + "error_pattern": "ROLLOUT_TOO_LONG" + }, + "flop_test_shot": { + "diff_carry_yd": 0.9, + "diff_total_yd": 2.8, + "diff_apex_ft": -7.6, + "status": "pass", + "error_pattern": null + }, + "p_wedge_shot_1": { + "diff_carry_yd": 0.0, + "diff_total_yd": 2.2, + "diff_apex_ft": -5.4, + "status": "pass", + "error_pattern": null + }, + "s2_shot_10": { + "diff_carry_yd": 0.0, + "diff_total_yd": 10.7, + "diff_apex_ft": -5.8, + "status": "severe", + "error_pattern": "ROLLOUT_TOO_LONG" + }, + "s2_shot_11": { + "diff_carry_yd": 0.0, + "diff_total_yd": 2.0, + "diff_apex_ft": -4.4, + "status": "pass", + "error_pattern": null + }, + "s2_shot_12": { + "diff_carry_yd": 1.7, + "diff_total_yd": 9.5, + "diff_apex_ft": -5.1, + "status": "moderate", + "error_pattern": "ROLLOUT_TOO_LONG" + }, + "s2_shot_13": { + "diff_carry_yd": -1.7, + "diff_total_yd": 3.0, + "diff_apex_ft": -5.9, + "status": "pass", + "error_pattern": null + }, + "s2_shot_14": { + "diff_carry_yd": 0.2, + "diff_total_yd": 1.6, + "diff_apex_ft": -5.9, + "status": "pass", + "error_pattern": null + }, + "s2_shot_15": { + "diff_carry_yd": -0.6, + "diff_total_yd": -12.3, + "diff_apex_ft": -1.9, + "status": "severe", + "error_pattern": "ROLLOUT_TOO_SHORT" + }, + "s2_shot_16": { + "diff_carry_yd": 0.4, + "diff_total_yd": 2.2, + "diff_apex_ft": -3.2, + "status": "pass", + "error_pattern": null + }, + "s2_shot_17": { + "diff_carry_yd": 0.0, + "diff_total_yd": 9.2, + "diff_apex_ft": -3.6, + "status": "moderate", + "error_pattern": "ROLLOUT_TOO_LONG" + }, + "s2_shot_18": { + "diff_carry_yd": 1.1, + "diff_total_yd": 16.6, + "diff_apex_ft": 3.1, + "status": "severe", + "error_pattern": "ROLLOUT_TOO_LONG" + }, + "s2_shot_19": { + "diff_carry_yd": -3.1, + "diff_total_yd": -4.4, + "diff_apex_ft": -0.9, + "status": "moderate", + "error_pattern": "CARRY_TOO_SHORT" + }, + "s2_shot_20": { + "diff_carry_yd": 0.2, + "diff_total_yd": 11.1, + "diff_apex_ft": -1.8, + "status": "severe", + "error_pattern": "ROLLOUT_TOO_LONG" + }, + "s2_shot_21": { + "diff_carry_yd": 5.8, + "diff_total_yd": 28.8, + "diff_apex_ft": 1.8, + "status": "severe", + "error_pattern": "CARRY_AND_ROLLOUT_LONG" + }, + "s2_shot_22": { + "diff_carry_yd": -0.7, + "diff_total_yd": 3.5, + "diff_apex_ft": -1.4, + "status": "pass", + "error_pattern": null + }, + "s2_shot_23": { + "diff_carry_yd": -2.8, + "diff_total_yd": -18.9, + "diff_apex_ft": 0.1, + "status": "severe", + "error_pattern": "ROLLOUT_TOO_SHORT" + }, + "s2_shot_24": { + "diff_carry_yd": -0.7, + "diff_total_yd": 2.7, + "diff_apex_ft": -1.6, + "status": "pass", + "error_pattern": null + }, + "s2_shot_26": { + "diff_carry_yd": 2.6, + "diff_total_yd": 23.1, + "diff_apex_ft": 24.2, + "status": "severe", + "error_pattern": "ROLLOUT_TOO_LONG" + }, + "s2_shot_27": { + "diff_carry_yd": -3.4, + "diff_total_yd": 13.8, + "diff_apex_ft": 5.0, + "status": "severe", + "error_pattern": "CARRY_TOO_SHORT" + }, + "s2_shot_9": { + "diff_carry_yd": -2.8, + "diff_total_yd": 3.5, + "diff_apex_ft": 7.3, + "status": "pass", + "error_pattern": null + }, + "s3_shot_3w_18": { + "diff_carry_yd": null, + "diff_total_yd": null, + "diff_apex_ft": null, + "status": "pass", + "error_pattern": null + }, + "s3_shot_3w_19": { + "diff_carry_yd": -0.1, + "diff_total_yd": 16.7, + "diff_apex_ft": 0.1, + "status": "severe", + "error_pattern": "ROLLOUT_TOO_LONG" + }, + "s3_shot_3w_21": { + "diff_carry_yd": 1.1, + "diff_total_yd": 16.6, + "diff_apex_ft": 0.3, + "status": "severe", + "error_pattern": "ROLLOUT_TOO_LONG" + }, + "s3_shot_3w_22": { + "diff_carry_yd": 0.0, + "diff_total_yd": 20.2, + "diff_apex_ft": 0.5, + "status": "severe", + "error_pattern": "ROLLOUT_TOO_LONG" + }, + "s3_shot_3w_23": { + "diff_carry_yd": 0.8, + "diff_total_yd": -22.7, + "diff_apex_ft": -1.2, + "status": "severe", + "error_pattern": "ROLLOUT_TOO_SHORT" + }, + "s3_shot_3w_24": { + "diff_carry_yd": 3.9, + "diff_total_yd": 29.6, + "diff_apex_ft": 1.9, + "status": "severe", + "error_pattern": "CARRY_AND_ROLLOUT_LONG" + }, + "s3_shot_5i_10": { + "diff_carry_yd": 0.0, + "diff_total_yd": -7.1, + "diff_apex_ft": 5.9, + "status": "moderate", + "error_pattern": "ROLLOUT_TOO_SHORT" + }, + "s3_shot_5i_11": { + "diff_carry_yd": 0.0, + "diff_total_yd": -17.2, + "diff_apex_ft": -1.3, + "status": "severe", + "error_pattern": "ROLLOUT_TOO_SHORT" + }, + "s3_shot_5i_12": { + "diff_carry_yd": 1.2, + "diff_total_yd": -23.5, + "diff_apex_ft": 1.1, + "status": "severe", + "error_pattern": "ROLLOUT_TOO_SHORT" + }, + "s3_shot_5i_13": { + "diff_carry_yd": 0.0, + "diff_total_yd": 10.1, + "diff_apex_ft": 0.6, + "status": "severe", + "error_pattern": "ROLLOUT_TOO_LONG" + }, + "s3_shot_5i_15": { + "diff_carry_yd": 0.0, + "diff_total_yd": 14.7, + "diff_apex_ft": -1.1, + "status": "severe", + "error_pattern": "ROLLOUT_TOO_LONG" + }, + "s3_shot_5i_16": { + "diff_carry_yd": 1.1, + "diff_total_yd": -20.8, + "diff_apex_ft": -0.2, + "status": "severe", + "error_pattern": "ROLLOUT_TOO_SHORT" + }, + "s3_shot_5i_17": { + "diff_carry_yd": 0.0, + "diff_total_yd": -1.9, + "diff_apex_ft": -0.3, + "status": "pass", + "error_pattern": null + }, + "s3_shot_6i_35": { + "diff_carry_yd": 0.0, + "diff_total_yd": -16.6, + "diff_apex_ft": -3.3, + "status": "severe", + "error_pattern": "ROLLOUT_TOO_SHORT" + }, + "s3_shot_6i_36": { + "diff_carry_yd": 0.0, + "diff_total_yd": -20.8, + "diff_apex_ft": 0.6, + "status": "severe", + "error_pattern": "ROLLOUT_TOO_SHORT" + }, + "s3_shot_6i_37": { + "diff_carry_yd": 0.0, + "diff_total_yd": 12.2, + "diff_apex_ft": -0.8, + "status": "severe", + "error_pattern": "ROLLOUT_TOO_LONG" + }, + "s3_shot_6i_38": { + "diff_carry_yd": 0.0, + "diff_total_yd": -21.3, + "diff_apex_ft": 0.1, + "status": "severe", + "error_pattern": "ROLLOUT_TOO_SHORT" + }, + "s3_shot_6i_39": { + "diff_carry_yd": -0.5, + "diff_total_yd": 6.4, + "diff_apex_ft": 0.0, + "status": "moderate", + "error_pattern": "ROLLOUT_TOO_LONG" + }, + "s3_shot_6i_40": { + "diff_carry_yd": -1.2, + "diff_total_yd": 7.8, + "diff_apex_ft": 0.1, + "status": "moderate", + "error_pattern": "ROLLOUT_TOO_LONG" + }, + "s3_shot_6i_41": { + "diff_carry_yd": 0.0, + "diff_total_yd": 13.2, + "diff_apex_ft": -1.0, + "status": "severe", + "error_pattern": "ROLLOUT_TOO_LONG" + }, + "s3_shot_6i_42": { + "diff_carry_yd": -1.1, + "diff_total_yd": -17.4, + "diff_apex_ft": 0.8, + "status": "severe", + "error_pattern": "ROLLOUT_TOO_SHORT" + }, + "s3_shot_6i_43": { + "diff_carry_yd": 2.4, + "diff_total_yd": 0.9, + "diff_apex_ft": 8.1, + "status": "pass", + "error_pattern": null + }, + "s3_shot_6i_44": { + "diff_carry_yd": -1.2, + "diff_total_yd": -27.4, + "diff_apex_ft": -1.3, + "status": "severe", + "error_pattern": "ROLLOUT_TOO_SHORT" + }, + "s3_shot_6i_45": { + "diff_carry_yd": 0.0, + "diff_total_yd": 21.1, + "diff_apex_ft": 0.6, + "status": "severe", + "error_pattern": "ROLLOUT_TOO_LONG" + }, + "s3_shot_6i_46": { + "diff_carry_yd": 3.8, + "diff_total_yd": -3.5, + "diff_apex_ft": -1.5, + "status": "moderate", + "error_pattern": "CARRY_TOO_LONG" + }, + "s3_shot_6i_47": { + "diff_carry_yd": 3.0, + "diff_total_yd": 10.8, + "diff_apex_ft": 11.8, + "status": "severe", + "error_pattern": "ROLLOUT_TOO_LONG" + }, + "s3_shot_6i_48": { + "diff_carry_yd": 2.1, + "diff_total_yd": 11.1, + "diff_apex_ft": 14.2, + "status": "severe", + "error_pattern": "ROLLOUT_TOO_LONG" + }, + "s3_shot_6i_49": { + "diff_carry_yd": 0.0, + "diff_total_yd": 7.0, + "diff_apex_ft": -0.3, + "status": "moderate", + "error_pattern": "ROLLOUT_TOO_LONG" + }, + "s3_shot_6i_50": { + "diff_carry_yd": -0.4, + "diff_total_yd": -12.1, + "diff_apex_ft": 3.9, + "status": "severe", + "error_pattern": "ROLLOUT_TOO_SHORT" + }, + "s3_shot_7i_25": { + "diff_carry_yd": -0.5, + "diff_total_yd": -18.0, + "diff_apex_ft": 0.9, + "status": "severe", + "error_pattern": "ROLLOUT_TOO_SHORT" + }, + "s3_shot_7i_26": { + "diff_carry_yd": 0.0, + "diff_total_yd": -21.8, + "diff_apex_ft": 1.1, + "status": "severe", + "error_pattern": "ROLLOUT_TOO_SHORT" + }, + "s3_shot_7i_27": { + "diff_carry_yd": -2.2, + "diff_total_yd": 4.3, + "diff_apex_ft": 8.0, + "status": "pass", + "error_pattern": null + }, + "s3_shot_7i_28": { + "diff_carry_yd": -2.8, + "diff_total_yd": 1.2, + "diff_apex_ft": 8.3, + "status": "pass", + "error_pattern": null + }, + "s3_shot_7i_29": { + "diff_carry_yd": 1.0, + "diff_total_yd": -5.8, + "diff_apex_ft": -3.5, + "status": "moderate", + "error_pattern": "ROLLOUT_TOO_SHORT" + }, + "s3_shot_7i_30": { + "diff_carry_yd": -4.2, + "diff_total_yd": 1.5, + "diff_apex_ft": 5.5, + "status": "moderate", + "error_pattern": "CARRY_TOO_SHORT" + }, + "s3_shot_7i_31": { + "diff_carry_yd": 0.0, + "diff_total_yd": -14.3, + "diff_apex_ft": -4.1, + "status": "severe", + "error_pattern": "ROLLOUT_TOO_SHORT" + }, + "s3_shot_7i_32": { + "diff_carry_yd": -1.8, + "diff_total_yd": -2.2, + "diff_apex_ft": 3.1, + "status": "pass", + "error_pattern": null + }, + "s3_shot_7i_33": { + "diff_carry_yd": -1.6, + "diff_total_yd": -1.3, + "diff_apex_ft": 4.7, + "status": "pass", + "error_pattern": null + }, + "s3_shot_7i_34": { + "diff_carry_yd": 0.4, + "diff_total_yd": 2.6, + "diff_apex_ft": 3.1, + "status": "pass", + "error_pattern": null + }, + "s3_shot_9i_1": { + "diff_carry_yd": 0.0, + "diff_total_yd": -12.6, + "diff_apex_ft": 1.3, + "status": "severe", + "error_pattern": "ROLLOUT_TOO_SHORT" + }, + "s3_shot_9i_2": { + "diff_carry_yd": 0.0, + "diff_total_yd": -9.1, + "diff_apex_ft": -3.0, + "status": "moderate", + "error_pattern": "ROLLOUT_TOO_SHORT" + }, + "s3_shot_9i_3": { + "diff_carry_yd": -1.4, + "diff_total_yd": 1.1, + "diff_apex_ft": -5.3, + "status": "pass", + "error_pattern": null + }, + "s3_shot_9i_5": { + "diff_carry_yd": -0.0, + "diff_total_yd": -5.5, + "diff_apex_ft": -5.5, + "status": "moderate", + "error_pattern": "ROLLOUT_TOO_SHORT" + }, + "s3_shot_9i_7": { + "diff_carry_yd": 1.1, + "diff_total_yd": 1.6, + "diff_apex_ft": -4.2, + "status": "pass", + "error_pattern": null + }, + "s3_shot_9i_8": { + "diff_carry_yd": -1.6, + "diff_total_yd": 4.1, + "diff_apex_ft": -1.5, + "status": "pass", + "error_pattern": null + }, + "s3_shot_9i_9": { + "diff_carry_yd": -1.2, + "diff_total_yd": 1.9, + "diff_apex_ft": -6.1, + "status": "pass", + "error_pattern": null + }, + "s3_shot_driver_51": { + "diff_carry_yd": 4.4, + "diff_total_yd": 29.6, + "diff_apex_ft": 0.6, + "status": "severe", + "error_pattern": "CARRY_AND_ROLLOUT_LONG" + }, + "s3_shot_driver_52": { + "diff_carry_yd": 5.4, + "diff_total_yd": 25.3, + "diff_apex_ft": -1.4, + "status": "severe", + "error_pattern": "CARRY_AND_ROLLOUT_LONG" + }, + "s3_shot_driver_53": { + "diff_carry_yd": 2.5, + "diff_total_yd": 17.9, + "diff_apex_ft": -3.8, + "status": "severe", + "error_pattern": "ROLLOUT_TOO_LONG" + }, + "s3_shot_driver_54": { + "diff_carry_yd": -1.0, + "diff_total_yd": 0.0, + "diff_apex_ft": -2.2, + "status": "pass", + "error_pattern": null + }, + "s3_shot_driver_55": { + "diff_carry_yd": 2.5, + "diff_total_yd": 22.6, + "diff_apex_ft": 0.4, + "status": "severe", + "error_pattern": "ROLLOUT_TOO_LONG" + }, + "s3_shot_driver_56": { + "diff_carry_yd": -2.2, + "diff_total_yd": 20.7, + "diff_apex_ft": 9.7, + "status": "severe", + "error_pattern": "ROLLOUT_TOO_LONG" + }, + "s3_shot_driver_57": { + "diff_carry_yd": -5.1, + "diff_total_yd": -19.7, + "diff_apex_ft": -3.5, + "status": "severe", + "error_pattern": "CARRY_AND_ROLLOUT_SHORT" + }, + "s3_shot_driver_58": { + "diff_carry_yd": 11.0, + "diff_total_yd": 37.0, + "diff_apex_ft": -4.8, + "status": "severe", + "error_pattern": "CARRY_AND_ROLLOUT_LONG" + }, + "s3_shot_driver_59": { + "diff_carry_yd": -0.9, + "diff_total_yd": 17.7, + "diff_apex_ft": -3.8, + "status": "severe", + "error_pattern": "ROLLOUT_TOO_LONG" + }, + "s3_shot_driver_60": { + "diff_carry_yd": 0.0, + "diff_total_yd": -14.9, + "diff_apex_ft": -2.4, + "status": "severe", + "error_pattern": "ROLLOUT_TOO_SHORT" + }, + "s3_shot_pw_64": { + "diff_carry_yd": 0.0, + "diff_total_yd": 9.6, + "diff_apex_ft": -3.7, + "status": "moderate", + "error_pattern": "ROLLOUT_TOO_LONG" + }, + "s3_shot_pw_65": { + "diff_carry_yd": -0.1, + "diff_total_yd": 4.7, + "diff_apex_ft": -3.8, + "status": "pass", + "error_pattern": null + }, + "s3_shot_pw_66": { + "diff_carry_yd": -0.0, + "diff_total_yd": 11.3, + "diff_apex_ft": -3.7, + "status": "severe", + "error_pattern": "ROLLOUT_TOO_LONG" + }, + "s3_shot_pw_67": { + "diff_carry_yd": 0.0, + "diff_total_yd": 5.7, + "diff_apex_ft": -4.0, + "status": "moderate", + "error_pattern": "ROLLOUT_TOO_LONG" + }, + "s3_shot_pw_68": { + "diff_carry_yd": -0.0, + "diff_total_yd": 6.1, + "diff_apex_ft": -6.2, + "status": "moderate", + "error_pattern": "ROLLOUT_TOO_LONG" + }, + "s3_shot_pw_69": { + "diff_carry_yd": 0.0, + "diff_total_yd": -3.9, + "diff_apex_ft": -3.8, + "status": "pass", + "error_pattern": null + }, + "s4_shot_3w_31": { + "diff_carry_yd": null, + "diff_total_yd": null, + "diff_apex_ft": null, + "status": "pass", + "error_pattern": null + }, + "s4_shot_3w_32": { + "diff_carry_yd": null, + "diff_total_yd": null, + "diff_apex_ft": null, + "status": "pass", + "error_pattern": null + }, + "s4_shot_3w_33": { + "diff_carry_yd": null, + "diff_total_yd": null, + "diff_apex_ft": null, + "status": "pass", + "error_pattern": null + }, + "s4_shot_3w_34": { + "diff_carry_yd": null, + "diff_total_yd": null, + "diff_apex_ft": null, + "status": "pass", + "error_pattern": null + }, + "s4_shot_3w_35": { + "diff_carry_yd": null, + "diff_total_yd": null, + "diff_apex_ft": null, + "status": "pass", + "error_pattern": null + }, + "s4_shot_5i_25": { + "diff_carry_yd": null, + "diff_total_yd": null, + "diff_apex_ft": null, + "status": "pass", + "error_pattern": null + }, + "s4_shot_5i_26": { + "diff_carry_yd": null, + "diff_total_yd": null, + "diff_apex_ft": null, + "status": "pass", + "error_pattern": null + }, + "s4_shot_5i_27": { + "diff_carry_yd": null, + "diff_total_yd": null, + "diff_apex_ft": null, + "status": "pass", + "error_pattern": null + }, + "s4_shot_5i_28": { + "diff_carry_yd": null, + "diff_total_yd": null, + "diff_apex_ft": null, + "status": "pass", + "error_pattern": null + }, + "s4_shot_5i_29": { + "diff_carry_yd": null, + "diff_total_yd": null, + "diff_apex_ft": null, + "status": "pass", + "error_pattern": null + }, + "s4_shot_5i_30": { + "diff_carry_yd": null, + "diff_total_yd": null, + "diff_apex_ft": null, + "status": "pass", + "error_pattern": null + }, + "s4_shot_6i_19": { + "diff_carry_yd": null, + "diff_total_yd": null, + "diff_apex_ft": null, + "status": "pass", + "error_pattern": null + }, + "s4_shot_6i_20": { + "diff_carry_yd": null, + "diff_total_yd": null, + "diff_apex_ft": null, + "status": "pass", + "error_pattern": null + }, + "s4_shot_6i_21": { + "diff_carry_yd": null, + "diff_total_yd": null, + "diff_apex_ft": null, + "status": "pass", + "error_pattern": null + }, + "s4_shot_6i_22": { + "diff_carry_yd": null, + "diff_total_yd": null, + "diff_apex_ft": null, + "status": "pass", + "error_pattern": null + }, + "s4_shot_6i_23": { + "diff_carry_yd": null, + "diff_total_yd": null, + "diff_apex_ft": null, + "status": "pass", + "error_pattern": null + }, + "s4_shot_6i_24": { + "diff_carry_yd": null, + "diff_total_yd": null, + "diff_apex_ft": null, + "status": "pass", + "error_pattern": null + }, + "s4_shot_9i_13": { + "diff_carry_yd": null, + "diff_total_yd": null, + "diff_apex_ft": null, + "status": "pass", + "error_pattern": null + }, + "s4_shot_9i_14": { + "diff_carry_yd": null, + "diff_total_yd": null, + "diff_apex_ft": null, + "status": "pass", + "error_pattern": null + }, + "s4_shot_9i_15": { + "diff_carry_yd": null, + "diff_total_yd": null, + "diff_apex_ft": null, + "status": "pass", + "error_pattern": null + }, + "s4_shot_9i_17": { + "diff_carry_yd": null, + "diff_total_yd": null, + "diff_apex_ft": null, + "status": "pass", + "error_pattern": null + }, + "s4_shot_9i_18": { + "diff_carry_yd": null, + "diff_total_yd": null, + "diff_apex_ft": null, + "status": "pass", + "error_pattern": null + }, + "s4_shot_lw_38": { + "diff_carry_yd": null, + "diff_total_yd": null, + "diff_apex_ft": null, + "status": "pass", + "error_pattern": null + }, + "s4_shot_pw_1": { + "diff_carry_yd": null, + "diff_total_yd": null, + "diff_apex_ft": null, + "status": "pass", + "error_pattern": null + }, + "s4_shot_pw_10": { + "diff_carry_yd": null, + "diff_total_yd": null, + "diff_apex_ft": null, + "status": "pass", + "error_pattern": null + }, + "s4_shot_pw_11": { + "diff_carry_yd": null, + "diff_total_yd": null, + "diff_apex_ft": null, + "status": "pass", + "error_pattern": null + }, + "s4_shot_pw_2": { + "diff_carry_yd": null, + "diff_total_yd": null, + "diff_apex_ft": null, + "status": "pass", + "error_pattern": null + }, + "s4_shot_pw_3": { + "diff_carry_yd": null, + "diff_total_yd": null, + "diff_apex_ft": null, + "status": "pass", + "error_pattern": null + }, + "s4_shot_pw_47": { + "diff_carry_yd": null, + "diff_total_yd": null, + "diff_apex_ft": null, + "status": "pass", + "error_pattern": null + }, + "s4_shot_pw_48": { + "diff_carry_yd": null, + "diff_total_yd": null, + "diff_apex_ft": null, + "status": "pass", + "error_pattern": null + }, + "s4_shot_pw_49": { + "diff_carry_yd": null, + "diff_total_yd": null, + "diff_apex_ft": null, + "status": "pass", + "error_pattern": null + }, + "s4_shot_pw_6": { + "diff_carry_yd": null, + "diff_total_yd": null, + "diff_apex_ft": null, + "status": "pass", + "error_pattern": null + }, + "s4_shot_pw_7": { + "diff_carry_yd": null, + "diff_total_yd": null, + "diff_apex_ft": null, + "status": "pass", + "error_pattern": null + }, + "s4_shot_pw_9": { + "diff_carry_yd": null, + "diff_total_yd": null, + "diff_apex_ft": null, + "status": "pass", + "error_pattern": null + }, + "topped_test_shot": { + "diff_carry_yd": -0.6, + "diff_total_yd": 13.9, + "diff_apex_ft": -0.1, + "status": "severe", + "error_pattern": "ROLLOUT_TOO_LONG" + }, + "wedge_shot_1": { + "diff_carry_yd": 0.0, + "diff_total_yd": -0.7, + "diff_apex_ft": -2.4, + "status": "pass", + "error_pattern": null + }, + "wedge_shot_2": { + "diff_carry_yd": 0.0, + "diff_total_yd": 2.7, + "diff_apex_ft": -4.2, + "status": "pass", + "error_pattern": null + }, + "wedge_test_shot": { + "diff_carry_yd": 0.0, + "diff_total_yd": 3.6, + "diff_apex_ft": -3.2, + "status": "pass", + "error_pattern": null + }, + "wedge_test_shot2": { + "diff_carry_yd": -0.0, + "diff_total_yd": 3.1, + "diff_apex_ft": -2.0, + "status": "pass", + "error_pattern": null + }, + "wood1": { + "diff_carry_yd": 5.7, + "diff_total_yd": -3.2, + "diff_apex_ft": 3.2, + "status": "moderate", + "error_pattern": "CARRY_TOO_LONG" + }, + "wood2": { + "diff_carry_yd": 4.8, + "diff_total_yd": 0.7, + "diff_apex_ft": -1.6, + "status": "moderate", + "error_pattern": "CARRY_TOO_LONG" + }, + "wood_low_test_shot": { + "diff_carry_yd": 1.8, + "diff_total_yd": 22.9, + "diff_apex_ft": 0.4, + "status": "severe", + "error_pattern": "ROLLOUT_TOO_LONG" + } + }, + "regressions": [], + "conflicts": [ + "Bounce.FlightTangentialRetentionBase", + "Bounce.FlightSpinFactorMin", + "Bounce.FlightSpinFactorDivisor", + "Rollout.MidSpinMultiplierMax", + "Rollout.HighSpinMultiplierMax", + "Rollout.FrictionBlendSpeed", + "KineticFrictionMultiplier", + "Bounce.RolloutHighSpinRetention", + "Rollout.ChipVelocityScaleMin", + "Rollout.ChipVelocityScaleMax", + "Bounce.CorBaseA", + "Rollout.LowSpinMultiplierMax", + "Rollout.LowSpinThreshold", + "RollingFrictionMultiplier", + "Bounce.RolloutLowSpinRetention", + "Flight.ClMaxBase", + "Flight.CdMin", + "DragScaleMultiplier", + "LiftScaleMultiplier" + ] +} diff --git a/assets/data/calibration/history/iteration_043.json b/assets/data/calibration/history/iteration_043.json new file mode 100644 index 0000000..1fc97ef --- /dev/null +++ b/assets/data/calibration/history/iteration_043.json @@ -0,0 +1,987 @@ +{ + "iteration": 43, + "timestamp": "2026-03-14T01:03:29.092820", + "profile_overrides": {}, + "summary": { + "pass": 29, + "moderate": 19, + "severe": 51, + "no_reference": 37 + }, + "per_shot": { + "5iron": { + "diff_carry_yd": 1.6, + "diff_total_yd": 12.1, + "diff_apex_ft": 5.0, + "status": "severe", + "error_pattern": "ROLLOUT_TOO_LONG" + }, + "approach_mid_iron_test_shot": { + "diff_carry_yd": 0.0, + "diff_total_yd": 7.9, + "diff_apex_ft": -4.7, + "status": "moderate", + "error_pattern": "ROLLOUT_TOO_LONG" + }, + "bump_and_run": { + "diff_carry_yd": -0.1, + "diff_total_yd": -27.5, + "diff_apex_ft": -2.1, + "status": "severe", + "error_pattern": "ROLLOUT_TOO_SHORT" + }, + "bump_and_run_slow": { + "diff_carry_yd": null, + "diff_total_yd": null, + "diff_apex_ft": null, + "status": "pass", + "error_pattern": null + }, + "bump_test_shot": { + "diff_carry_yd": 0.0, + "diff_total_yd": 12.8, + "diff_apex_ft": -0.1, + "status": "severe", + "error_pattern": "ROLLOUT_TOO_LONG" + }, + "checked_test_shot": { + "diff_carry_yd": -0.6, + "diff_total_yd": 1.1, + "diff_apex_ft": -8.7, + "status": "pass", + "error_pattern": null + }, + "chip_test_shot": { + "diff_carry_yd": null, + "diff_total_yd": null, + "diff_apex_ft": null, + "status": "pass", + "error_pattern": null + }, + "drive_test_shot": { + "diff_carry_yd": 1.0, + "diff_total_yd": 0.8, + "diff_apex_ft": -0.6, + "status": "pass", + "error_pattern": null + }, + "driver1": { + "diff_carry_yd": 0.3, + "diff_total_yd": -25.7, + "diff_apex_ft": -0.7, + "status": "severe", + "error_pattern": "ROLLOUT_TOO_SHORT" + }, + "driver2": { + "diff_carry_yd": 2.5, + "diff_total_yd": 8.6, + "diff_apex_ft": -2.7, + "status": "moderate", + "error_pattern": "ROLLOUT_TOO_LONG" + }, + "driver3": { + "diff_carry_yd": -0.8, + "diff_total_yd": 23.3, + "diff_apex_ft": 21.1, + "status": "severe", + "error_pattern": "ROLLOUT_TOO_LONG" + }, + "driver4": { + "diff_carry_yd": 0.7, + "diff_total_yd": 16.3, + "diff_apex_ft": 4.4, + "status": "severe", + "error_pattern": "ROLLOUT_TOO_LONG" + }, + "flop_test_shot": { + "diff_carry_yd": 0.9, + "diff_total_yd": 2.8, + "diff_apex_ft": -7.6, + "status": "pass", + "error_pattern": null + }, + "p_wedge_shot_1": { + "diff_carry_yd": 0.0, + "diff_total_yd": 2.2, + "diff_apex_ft": -5.4, + "status": "pass", + "error_pattern": null + }, + "s2_shot_10": { + "diff_carry_yd": 0.0, + "diff_total_yd": 10.7, + "diff_apex_ft": -5.8, + "status": "severe", + "error_pattern": "ROLLOUT_TOO_LONG" + }, + "s2_shot_11": { + "diff_carry_yd": 0.0, + "diff_total_yd": 2.0, + "diff_apex_ft": -4.4, + "status": "pass", + "error_pattern": null + }, + "s2_shot_12": { + "diff_carry_yd": 1.7, + "diff_total_yd": 9.5, + "diff_apex_ft": -5.1, + "status": "moderate", + "error_pattern": "ROLLOUT_TOO_LONG" + }, + "s2_shot_13": { + "diff_carry_yd": -1.7, + "diff_total_yd": 3.0, + "diff_apex_ft": -5.9, + "status": "pass", + "error_pattern": null + }, + "s2_shot_14": { + "diff_carry_yd": 0.2, + "diff_total_yd": 1.6, + "diff_apex_ft": -5.9, + "status": "pass", + "error_pattern": null + }, + "s2_shot_15": { + "diff_carry_yd": -0.6, + "diff_total_yd": -12.3, + "diff_apex_ft": -1.9, + "status": "severe", + "error_pattern": "ROLLOUT_TOO_SHORT" + }, + "s2_shot_16": { + "diff_carry_yd": 0.4, + "diff_total_yd": 2.2, + "diff_apex_ft": -3.2, + "status": "pass", + "error_pattern": null + }, + "s2_shot_17": { + "diff_carry_yd": 0.0, + "diff_total_yd": 9.2, + "diff_apex_ft": -3.6, + "status": "moderate", + "error_pattern": "ROLLOUT_TOO_LONG" + }, + "s2_shot_18": { + "diff_carry_yd": 1.1, + "diff_total_yd": 16.6, + "diff_apex_ft": 3.1, + "status": "severe", + "error_pattern": "ROLLOUT_TOO_LONG" + }, + "s2_shot_19": { + "diff_carry_yd": -3.1, + "diff_total_yd": -4.4, + "diff_apex_ft": -0.9, + "status": "moderate", + "error_pattern": "CARRY_TOO_SHORT" + }, + "s2_shot_20": { + "diff_carry_yd": 0.2, + "diff_total_yd": 11.1, + "diff_apex_ft": -1.8, + "status": "severe", + "error_pattern": "ROLLOUT_TOO_LONG" + }, + "s2_shot_21": { + "diff_carry_yd": 5.8, + "diff_total_yd": 28.8, + "diff_apex_ft": 1.8, + "status": "severe", + "error_pattern": "CARRY_AND_ROLLOUT_LONG" + }, + "s2_shot_22": { + "diff_carry_yd": -0.7, + "diff_total_yd": 3.5, + "diff_apex_ft": -1.4, + "status": "pass", + "error_pattern": null + }, + "s2_shot_23": { + "diff_carry_yd": -2.8, + "diff_total_yd": -18.9, + "diff_apex_ft": 0.1, + "status": "severe", + "error_pattern": "ROLLOUT_TOO_SHORT" + }, + "s2_shot_24": { + "diff_carry_yd": -0.7, + "diff_total_yd": 2.7, + "diff_apex_ft": -1.6, + "status": "pass", + "error_pattern": null + }, + "s2_shot_26": { + "diff_carry_yd": 2.6, + "diff_total_yd": 23.1, + "diff_apex_ft": 24.2, + "status": "severe", + "error_pattern": "ROLLOUT_TOO_LONG" + }, + "s2_shot_27": { + "diff_carry_yd": -3.4, + "diff_total_yd": 13.8, + "diff_apex_ft": 5.0, + "status": "severe", + "error_pattern": "CARRY_TOO_SHORT" + }, + "s2_shot_9": { + "diff_carry_yd": -2.8, + "diff_total_yd": 3.5, + "diff_apex_ft": 7.3, + "status": "pass", + "error_pattern": null + }, + "s3_shot_3w_18": { + "diff_carry_yd": null, + "diff_total_yd": null, + "diff_apex_ft": null, + "status": "pass", + "error_pattern": null + }, + "s3_shot_3w_19": { + "diff_carry_yd": -0.1, + "diff_total_yd": 16.7, + "diff_apex_ft": 0.1, + "status": "severe", + "error_pattern": "ROLLOUT_TOO_LONG" + }, + "s3_shot_3w_21": { + "diff_carry_yd": 1.1, + "diff_total_yd": 16.6, + "diff_apex_ft": 0.3, + "status": "severe", + "error_pattern": "ROLLOUT_TOO_LONG" + }, + "s3_shot_3w_22": { + "diff_carry_yd": 0.0, + "diff_total_yd": 20.2, + "diff_apex_ft": 0.5, + "status": "severe", + "error_pattern": "ROLLOUT_TOO_LONG" + }, + "s3_shot_3w_23": { + "diff_carry_yd": 0.8, + "diff_total_yd": -22.7, + "diff_apex_ft": -1.2, + "status": "severe", + "error_pattern": "ROLLOUT_TOO_SHORT" + }, + "s3_shot_3w_24": { + "diff_carry_yd": 3.9, + "diff_total_yd": 29.6, + "diff_apex_ft": 1.9, + "status": "severe", + "error_pattern": "CARRY_AND_ROLLOUT_LONG" + }, + "s3_shot_5i_10": { + "diff_carry_yd": 0.0, + "diff_total_yd": -7.1, + "diff_apex_ft": 5.9, + "status": "moderate", + "error_pattern": "ROLLOUT_TOO_SHORT" + }, + "s3_shot_5i_11": { + "diff_carry_yd": 0.0, + "diff_total_yd": -17.2, + "diff_apex_ft": -1.3, + "status": "severe", + "error_pattern": "ROLLOUT_TOO_SHORT" + }, + "s3_shot_5i_12": { + "diff_carry_yd": 1.2, + "diff_total_yd": -23.5, + "diff_apex_ft": 1.1, + "status": "severe", + "error_pattern": "ROLLOUT_TOO_SHORT" + }, + "s3_shot_5i_13": { + "diff_carry_yd": 0.0, + "diff_total_yd": 10.1, + "diff_apex_ft": 0.6, + "status": "severe", + "error_pattern": "ROLLOUT_TOO_LONG" + }, + "s3_shot_5i_15": { + "diff_carry_yd": 0.0, + "diff_total_yd": 14.7, + "diff_apex_ft": -1.1, + "status": "severe", + "error_pattern": "ROLLOUT_TOO_LONG" + }, + "s3_shot_5i_16": { + "diff_carry_yd": 1.1, + "diff_total_yd": -20.8, + "diff_apex_ft": -0.2, + "status": "severe", + "error_pattern": "ROLLOUT_TOO_SHORT" + }, + "s3_shot_5i_17": { + "diff_carry_yd": 0.0, + "diff_total_yd": -1.9, + "diff_apex_ft": -0.3, + "status": "pass", + "error_pattern": null + }, + "s3_shot_6i_35": { + "diff_carry_yd": 0.0, + "diff_total_yd": -16.6, + "diff_apex_ft": -3.3, + "status": "severe", + "error_pattern": "ROLLOUT_TOO_SHORT" + }, + "s3_shot_6i_36": { + "diff_carry_yd": 0.0, + "diff_total_yd": -20.8, + "diff_apex_ft": 0.6, + "status": "severe", + "error_pattern": "ROLLOUT_TOO_SHORT" + }, + "s3_shot_6i_37": { + "diff_carry_yd": 0.0, + "diff_total_yd": 12.2, + "diff_apex_ft": -0.8, + "status": "severe", + "error_pattern": "ROLLOUT_TOO_LONG" + }, + "s3_shot_6i_38": { + "diff_carry_yd": 0.0, + "diff_total_yd": -21.3, + "diff_apex_ft": 0.1, + "status": "severe", + "error_pattern": "ROLLOUT_TOO_SHORT" + }, + "s3_shot_6i_39": { + "diff_carry_yd": -0.5, + "diff_total_yd": 6.4, + "diff_apex_ft": 0.0, + "status": "moderate", + "error_pattern": "ROLLOUT_TOO_LONG" + }, + "s3_shot_6i_40": { + "diff_carry_yd": -1.2, + "diff_total_yd": 7.8, + "diff_apex_ft": 0.1, + "status": "moderate", + "error_pattern": "ROLLOUT_TOO_LONG" + }, + "s3_shot_6i_41": { + "diff_carry_yd": 0.0, + "diff_total_yd": 13.2, + "diff_apex_ft": -1.0, + "status": "severe", + "error_pattern": "ROLLOUT_TOO_LONG" + }, + "s3_shot_6i_42": { + "diff_carry_yd": -1.1, + "diff_total_yd": -17.4, + "diff_apex_ft": 0.8, + "status": "severe", + "error_pattern": "ROLLOUT_TOO_SHORT" + }, + "s3_shot_6i_43": { + "diff_carry_yd": 2.4, + "diff_total_yd": 0.9, + "diff_apex_ft": 8.1, + "status": "pass", + "error_pattern": null + }, + "s3_shot_6i_44": { + "diff_carry_yd": -1.2, + "diff_total_yd": -27.4, + "diff_apex_ft": -1.3, + "status": "severe", + "error_pattern": "ROLLOUT_TOO_SHORT" + }, + "s3_shot_6i_45": { + "diff_carry_yd": 0.0, + "diff_total_yd": 21.1, + "diff_apex_ft": 0.6, + "status": "severe", + "error_pattern": "ROLLOUT_TOO_LONG" + }, + "s3_shot_6i_46": { + "diff_carry_yd": 3.8, + "diff_total_yd": -3.5, + "diff_apex_ft": -1.5, + "status": "moderate", + "error_pattern": "CARRY_TOO_LONG" + }, + "s3_shot_6i_47": { + "diff_carry_yd": 3.0, + "diff_total_yd": 10.8, + "diff_apex_ft": 11.8, + "status": "severe", + "error_pattern": "ROLLOUT_TOO_LONG" + }, + "s3_shot_6i_48": { + "diff_carry_yd": 2.1, + "diff_total_yd": 11.1, + "diff_apex_ft": 14.2, + "status": "severe", + "error_pattern": "ROLLOUT_TOO_LONG" + }, + "s3_shot_6i_49": { + "diff_carry_yd": 0.0, + "diff_total_yd": 7.0, + "diff_apex_ft": -0.3, + "status": "moderate", + "error_pattern": "ROLLOUT_TOO_LONG" + }, + "s3_shot_6i_50": { + "diff_carry_yd": -0.4, + "diff_total_yd": -12.1, + "diff_apex_ft": 3.9, + "status": "severe", + "error_pattern": "ROLLOUT_TOO_SHORT" + }, + "s3_shot_7i_25": { + "diff_carry_yd": -0.5, + "diff_total_yd": -18.0, + "diff_apex_ft": 0.9, + "status": "severe", + "error_pattern": "ROLLOUT_TOO_SHORT" + }, + "s3_shot_7i_26": { + "diff_carry_yd": 0.0, + "diff_total_yd": -21.8, + "diff_apex_ft": 1.1, + "status": "severe", + "error_pattern": "ROLLOUT_TOO_SHORT" + }, + "s3_shot_7i_27": { + "diff_carry_yd": -2.2, + "diff_total_yd": 4.3, + "diff_apex_ft": 8.0, + "status": "pass", + "error_pattern": null + }, + "s3_shot_7i_28": { + "diff_carry_yd": -2.8, + "diff_total_yd": 1.2, + "diff_apex_ft": 8.3, + "status": "pass", + "error_pattern": null + }, + "s3_shot_7i_29": { + "diff_carry_yd": 1.0, + "diff_total_yd": -5.8, + "diff_apex_ft": -3.5, + "status": "moderate", + "error_pattern": "ROLLOUT_TOO_SHORT" + }, + "s3_shot_7i_30": { + "diff_carry_yd": -4.2, + "diff_total_yd": 1.5, + "diff_apex_ft": 5.5, + "status": "moderate", + "error_pattern": "CARRY_TOO_SHORT" + }, + "s3_shot_7i_31": { + "diff_carry_yd": 0.0, + "diff_total_yd": -14.3, + "diff_apex_ft": -4.1, + "status": "severe", + "error_pattern": "ROLLOUT_TOO_SHORT" + }, + "s3_shot_7i_32": { + "diff_carry_yd": -1.8, + "diff_total_yd": -2.2, + "diff_apex_ft": 3.1, + "status": "pass", + "error_pattern": null + }, + "s3_shot_7i_33": { + "diff_carry_yd": -1.6, + "diff_total_yd": -1.3, + "diff_apex_ft": 4.7, + "status": "pass", + "error_pattern": null + }, + "s3_shot_7i_34": { + "diff_carry_yd": 0.4, + "diff_total_yd": 2.6, + "diff_apex_ft": 3.1, + "status": "pass", + "error_pattern": null + }, + "s3_shot_9i_1": { + "diff_carry_yd": 0.0, + "diff_total_yd": -12.6, + "diff_apex_ft": 1.3, + "status": "severe", + "error_pattern": "ROLLOUT_TOO_SHORT" + }, + "s3_shot_9i_2": { + "diff_carry_yd": 0.0, + "diff_total_yd": -9.1, + "diff_apex_ft": -3.0, + "status": "moderate", + "error_pattern": "ROLLOUT_TOO_SHORT" + }, + "s3_shot_9i_3": { + "diff_carry_yd": -1.4, + "diff_total_yd": 1.1, + "diff_apex_ft": -5.3, + "status": "pass", + "error_pattern": null + }, + "s3_shot_9i_5": { + "diff_carry_yd": -0.0, + "diff_total_yd": -5.5, + "diff_apex_ft": -5.5, + "status": "moderate", + "error_pattern": "ROLLOUT_TOO_SHORT" + }, + "s3_shot_9i_7": { + "diff_carry_yd": 1.1, + "diff_total_yd": 1.6, + "diff_apex_ft": -4.2, + "status": "pass", + "error_pattern": null + }, + "s3_shot_9i_8": { + "diff_carry_yd": -1.6, + "diff_total_yd": 4.1, + "diff_apex_ft": -1.5, + "status": "pass", + "error_pattern": null + }, + "s3_shot_9i_9": { + "diff_carry_yd": -1.2, + "diff_total_yd": 1.9, + "diff_apex_ft": -6.1, + "status": "pass", + "error_pattern": null + }, + "s3_shot_driver_51": { + "diff_carry_yd": 4.4, + "diff_total_yd": 29.6, + "diff_apex_ft": 0.6, + "status": "severe", + "error_pattern": "CARRY_AND_ROLLOUT_LONG" + }, + "s3_shot_driver_52": { + "diff_carry_yd": 5.4, + "diff_total_yd": 25.3, + "diff_apex_ft": -1.4, + "status": "severe", + "error_pattern": "CARRY_AND_ROLLOUT_LONG" + }, + "s3_shot_driver_53": { + "diff_carry_yd": 2.5, + "diff_total_yd": 17.9, + "diff_apex_ft": -3.8, + "status": "severe", + "error_pattern": "ROLLOUT_TOO_LONG" + }, + "s3_shot_driver_54": { + "diff_carry_yd": -1.0, + "diff_total_yd": 0.0, + "diff_apex_ft": -2.2, + "status": "pass", + "error_pattern": null + }, + "s3_shot_driver_55": { + "diff_carry_yd": 2.5, + "diff_total_yd": 22.6, + "diff_apex_ft": 0.4, + "status": "severe", + "error_pattern": "ROLLOUT_TOO_LONG" + }, + "s3_shot_driver_56": { + "diff_carry_yd": -2.2, + "diff_total_yd": 20.7, + "diff_apex_ft": 9.7, + "status": "severe", + "error_pattern": "ROLLOUT_TOO_LONG" + }, + "s3_shot_driver_57": { + "diff_carry_yd": -5.1, + "diff_total_yd": -19.7, + "diff_apex_ft": -3.5, + "status": "severe", + "error_pattern": "CARRY_AND_ROLLOUT_SHORT" + }, + "s3_shot_driver_58": { + "diff_carry_yd": 11.0, + "diff_total_yd": 37.0, + "diff_apex_ft": -4.8, + "status": "severe", + "error_pattern": "CARRY_AND_ROLLOUT_LONG" + }, + "s3_shot_driver_59": { + "diff_carry_yd": -0.9, + "diff_total_yd": 17.7, + "diff_apex_ft": -3.8, + "status": "severe", + "error_pattern": "ROLLOUT_TOO_LONG" + }, + "s3_shot_driver_60": { + "diff_carry_yd": 0.0, + "diff_total_yd": -14.9, + "diff_apex_ft": -2.4, + "status": "severe", + "error_pattern": "ROLLOUT_TOO_SHORT" + }, + "s3_shot_pw_64": { + "diff_carry_yd": 0.0, + "diff_total_yd": 9.6, + "diff_apex_ft": -3.7, + "status": "moderate", + "error_pattern": "ROLLOUT_TOO_LONG" + }, + "s3_shot_pw_65": { + "diff_carry_yd": -0.1, + "diff_total_yd": 4.7, + "diff_apex_ft": -3.8, + "status": "pass", + "error_pattern": null + }, + "s3_shot_pw_66": { + "diff_carry_yd": -0.0, + "diff_total_yd": 11.3, + "diff_apex_ft": -3.7, + "status": "severe", + "error_pattern": "ROLLOUT_TOO_LONG" + }, + "s3_shot_pw_67": { + "diff_carry_yd": 0.0, + "diff_total_yd": 5.7, + "diff_apex_ft": -4.0, + "status": "moderate", + "error_pattern": "ROLLOUT_TOO_LONG" + }, + "s3_shot_pw_68": { + "diff_carry_yd": -0.0, + "diff_total_yd": 6.1, + "diff_apex_ft": -6.2, + "status": "moderate", + "error_pattern": "ROLLOUT_TOO_LONG" + }, + "s3_shot_pw_69": { + "diff_carry_yd": 0.0, + "diff_total_yd": -3.9, + "diff_apex_ft": -3.8, + "status": "pass", + "error_pattern": null + }, + "s4_shot_3w_31": { + "diff_carry_yd": null, + "diff_total_yd": null, + "diff_apex_ft": null, + "status": "pass", + "error_pattern": null + }, + "s4_shot_3w_32": { + "diff_carry_yd": null, + "diff_total_yd": null, + "diff_apex_ft": null, + "status": "pass", + "error_pattern": null + }, + "s4_shot_3w_33": { + "diff_carry_yd": null, + "diff_total_yd": null, + "diff_apex_ft": null, + "status": "pass", + "error_pattern": null + }, + "s4_shot_3w_34": { + "diff_carry_yd": null, + "diff_total_yd": null, + "diff_apex_ft": null, + "status": "pass", + "error_pattern": null + }, + "s4_shot_3w_35": { + "diff_carry_yd": null, + "diff_total_yd": null, + "diff_apex_ft": null, + "status": "pass", + "error_pattern": null + }, + "s4_shot_5i_25": { + "diff_carry_yd": null, + "diff_total_yd": null, + "diff_apex_ft": null, + "status": "pass", + "error_pattern": null + }, + "s4_shot_5i_26": { + "diff_carry_yd": null, + "diff_total_yd": null, + "diff_apex_ft": null, + "status": "pass", + "error_pattern": null + }, + "s4_shot_5i_27": { + "diff_carry_yd": null, + "diff_total_yd": null, + "diff_apex_ft": null, + "status": "pass", + "error_pattern": null + }, + "s4_shot_5i_28": { + "diff_carry_yd": null, + "diff_total_yd": null, + "diff_apex_ft": null, + "status": "pass", + "error_pattern": null + }, + "s4_shot_5i_29": { + "diff_carry_yd": null, + "diff_total_yd": null, + "diff_apex_ft": null, + "status": "pass", + "error_pattern": null + }, + "s4_shot_5i_30": { + "diff_carry_yd": null, + "diff_total_yd": null, + "diff_apex_ft": null, + "status": "pass", + "error_pattern": null + }, + "s4_shot_6i_19": { + "diff_carry_yd": null, + "diff_total_yd": null, + "diff_apex_ft": null, + "status": "pass", + "error_pattern": null + }, + "s4_shot_6i_20": { + "diff_carry_yd": null, + "diff_total_yd": null, + "diff_apex_ft": null, + "status": "pass", + "error_pattern": null + }, + "s4_shot_6i_21": { + "diff_carry_yd": null, + "diff_total_yd": null, + "diff_apex_ft": null, + "status": "pass", + "error_pattern": null + }, + "s4_shot_6i_22": { + "diff_carry_yd": null, + "diff_total_yd": null, + "diff_apex_ft": null, + "status": "pass", + "error_pattern": null + }, + "s4_shot_6i_23": { + "diff_carry_yd": null, + "diff_total_yd": null, + "diff_apex_ft": null, + "status": "pass", + "error_pattern": null + }, + "s4_shot_6i_24": { + "diff_carry_yd": null, + "diff_total_yd": null, + "diff_apex_ft": null, + "status": "pass", + "error_pattern": null + }, + "s4_shot_9i_13": { + "diff_carry_yd": null, + "diff_total_yd": null, + "diff_apex_ft": null, + "status": "pass", + "error_pattern": null + }, + "s4_shot_9i_14": { + "diff_carry_yd": null, + "diff_total_yd": null, + "diff_apex_ft": null, + "status": "pass", + "error_pattern": null + }, + "s4_shot_9i_15": { + "diff_carry_yd": null, + "diff_total_yd": null, + "diff_apex_ft": null, + "status": "pass", + "error_pattern": null + }, + "s4_shot_9i_17": { + "diff_carry_yd": null, + "diff_total_yd": null, + "diff_apex_ft": null, + "status": "pass", + "error_pattern": null + }, + "s4_shot_9i_18": { + "diff_carry_yd": null, + "diff_total_yd": null, + "diff_apex_ft": null, + "status": "pass", + "error_pattern": null + }, + "s4_shot_lw_38": { + "diff_carry_yd": null, + "diff_total_yd": null, + "diff_apex_ft": null, + "status": "pass", + "error_pattern": null + }, + "s4_shot_pw_1": { + "diff_carry_yd": null, + "diff_total_yd": null, + "diff_apex_ft": null, + "status": "pass", + "error_pattern": null + }, + "s4_shot_pw_10": { + "diff_carry_yd": null, + "diff_total_yd": null, + "diff_apex_ft": null, + "status": "pass", + "error_pattern": null + }, + "s4_shot_pw_11": { + "diff_carry_yd": null, + "diff_total_yd": null, + "diff_apex_ft": null, + "status": "pass", + "error_pattern": null + }, + "s4_shot_pw_2": { + "diff_carry_yd": null, + "diff_total_yd": null, + "diff_apex_ft": null, + "status": "pass", + "error_pattern": null + }, + "s4_shot_pw_3": { + "diff_carry_yd": null, + "diff_total_yd": null, + "diff_apex_ft": null, + "status": "pass", + "error_pattern": null + }, + "s4_shot_pw_47": { + "diff_carry_yd": null, + "diff_total_yd": null, + "diff_apex_ft": null, + "status": "pass", + "error_pattern": null + }, + "s4_shot_pw_48": { + "diff_carry_yd": null, + "diff_total_yd": null, + "diff_apex_ft": null, + "status": "pass", + "error_pattern": null + }, + "s4_shot_pw_49": { + "diff_carry_yd": null, + "diff_total_yd": null, + "diff_apex_ft": null, + "status": "pass", + "error_pattern": null + }, + "s4_shot_pw_6": { + "diff_carry_yd": null, + "diff_total_yd": null, + "diff_apex_ft": null, + "status": "pass", + "error_pattern": null + }, + "s4_shot_pw_7": { + "diff_carry_yd": null, + "diff_total_yd": null, + "diff_apex_ft": null, + "status": "pass", + "error_pattern": null + }, + "s4_shot_pw_9": { + "diff_carry_yd": null, + "diff_total_yd": null, + "diff_apex_ft": null, + "status": "pass", + "error_pattern": null + }, + "topped_test_shot": { + "diff_carry_yd": -0.6, + "diff_total_yd": 13.9, + "diff_apex_ft": -0.1, + "status": "severe", + "error_pattern": "ROLLOUT_TOO_LONG" + }, + "wedge_shot_1": { + "diff_carry_yd": 0.0, + "diff_total_yd": -0.7, + "diff_apex_ft": -2.4, + "status": "pass", + "error_pattern": null + }, + "wedge_shot_2": { + "diff_carry_yd": 0.0, + "diff_total_yd": 2.7, + "diff_apex_ft": -4.2, + "status": "pass", + "error_pattern": null + }, + "wedge_test_shot": { + "diff_carry_yd": 0.0, + "diff_total_yd": 3.6, + "diff_apex_ft": -3.2, + "status": "pass", + "error_pattern": null + }, + "wedge_test_shot2": { + "diff_carry_yd": -0.0, + "diff_total_yd": 3.1, + "diff_apex_ft": -2.0, + "status": "pass", + "error_pattern": null + }, + "wood1": { + "diff_carry_yd": 5.7, + "diff_total_yd": -3.2, + "diff_apex_ft": 3.2, + "status": "moderate", + "error_pattern": "CARRY_TOO_LONG" + }, + "wood2": { + "diff_carry_yd": 4.8, + "diff_total_yd": 0.7, + "diff_apex_ft": -1.6, + "status": "moderate", + "error_pattern": "CARRY_TOO_LONG" + }, + "wood_low_test_shot": { + "diff_carry_yd": 1.8, + "diff_total_yd": 22.9, + "diff_apex_ft": 0.4, + "status": "severe", + "error_pattern": "ROLLOUT_TOO_LONG" + } + }, + "regressions": [], + "conflicts": [ + "Bounce.FlightTangentialRetentionBase", + "Bounce.FlightSpinFactorMin", + "Bounce.FlightSpinFactorDivisor", + "Rollout.MidSpinMultiplierMax", + "Rollout.HighSpinMultiplierMax", + "Rollout.FrictionBlendSpeed", + "KineticFrictionMultiplier", + "Bounce.RolloutHighSpinRetention", + "Rollout.ChipVelocityScaleMin", + "Rollout.ChipVelocityScaleMax", + "Bounce.CorBaseA", + "Rollout.LowSpinMultiplierMax", + "Rollout.LowSpinThreshold", + "RollingFrictionMultiplier", + "Bounce.RolloutLowSpinRetention", + "Flight.ClMaxBase", + "Flight.CdMin", + "DragScaleMultiplier", + "LiftScaleMultiplier" + ] +} diff --git a/assets/data/calibration/history/iteration_044.json b/assets/data/calibration/history/iteration_044.json new file mode 100644 index 0000000..9aa0ea8 --- /dev/null +++ b/assets/data/calibration/history/iteration_044.json @@ -0,0 +1,1192 @@ +{ + "iteration": 44, + "timestamp": "2026-03-14T01:10:19.545365", + "profile_overrides": { + "DragScaleMultiplier": 1.01, + "Flight": { + "CdMin": 0.223, + "HighLaunchDragVlaStartDeg": 24.5, + "HighLaunchDragVlaFullDeg": 31.5, + "HighLaunchDragBoostMax": 1.24, + "SpinDragProgressiveCapSrStart": 0.33, + "SpinDragProgressiveCapSrEnd": 0.5, + "SpinDragProgressiveCapBoostMax": 0.25, + "HighReMidSpinGain": 16.0, + "MidSpinClBoostSrStart": 0.17, + "MidSpinClBoostSrEnd": 0.31, + "MidSpinClBoostMax": 0.5 + } + }, + "summary": { + "pass": 32, + "moderate": 35, + "severe": 62, + "no_reference": 7 + }, + "per_shot": { + "5iron": { + "diff_carry_yd": 0.8, + "diff_total_yd": 11.3, + "diff_apex_ft": 4.6, + "status": "severe", + "error_pattern": "ROLLOUT_TOO_LONG" + }, + "approach_mid_iron_test_shot": { + "diff_carry_yd": -0.6, + "diff_total_yd": 7.3, + "diff_apex_ft": -5.0, + "status": "moderate", + "error_pattern": "ROLLOUT_TOO_LONG" + }, + "bump_and_run": { + "diff_carry_yd": -0.1, + "diff_total_yd": -27.5, + "diff_apex_ft": -2.1, + "status": "severe", + "error_pattern": "ROLLOUT_TOO_SHORT" + }, + "bump_and_run_slow": { + "diff_carry_yd": null, + "diff_total_yd": null, + "diff_apex_ft": null, + "status": "pass", + "error_pattern": null + }, + "bump_test_shot": { + "diff_carry_yd": 0.0, + "diff_total_yd": 12.7, + "diff_apex_ft": -0.1, + "status": "severe", + "error_pattern": "ROLLOUT_TOO_LONG" + }, + "checked_test_shot": { + "diff_carry_yd": -2.1, + "diff_total_yd": -0.5, + "diff_apex_ft": -9.6, + "status": "pass", + "error_pattern": null + }, + "chip_test_shot": { + "diff_carry_yd": null, + "diff_total_yd": null, + "diff_apex_ft": null, + "status": "pass", + "error_pattern": null + }, + "drive_test_shot": { + "diff_carry_yd": -0.4, + "diff_total_yd": -0.6, + "diff_apex_ft": -1.1, + "status": "pass", + "error_pattern": null + }, + "driver1": { + "diff_carry_yd": -0.3, + "diff_total_yd": -26.3, + "diff_apex_ft": -0.8, + "status": "severe", + "error_pattern": "ROLLOUT_TOO_SHORT" + }, + "driver2": { + "diff_carry_yd": 1.2, + "diff_total_yd": 7.3, + "diff_apex_ft": -3.0, + "status": "moderate", + "error_pattern": "ROLLOUT_TOO_LONG" + }, + "driver3": { + "diff_carry_yd": -1.9, + "diff_total_yd": 20.4, + "diff_apex_ft": 20.6, + "status": "severe", + "error_pattern": "ROLLOUT_TOO_LONG" + }, + "driver4": { + "diff_carry_yd": -0.7, + "diff_total_yd": 15.0, + "diff_apex_ft": 4.1, + "status": "severe", + "error_pattern": "ROLLOUT_TOO_LONG" + }, + "flop_test_shot": { + "diff_carry_yd": -0.2, + "diff_total_yd": 1.6, + "diff_apex_ft": -8.5, + "status": "pass", + "error_pattern": null + }, + "p_wedge_shot_1": { + "diff_carry_yd": -0.5, + "diff_total_yd": 1.7, + "diff_apex_ft": -5.5, + "status": "pass", + "error_pattern": null + }, + "s2_shot_10": { + "diff_carry_yd": -0.6, + "diff_total_yd": 10.2, + "diff_apex_ft": -6.0, + "status": "severe", + "error_pattern": "ROLLOUT_TOO_LONG" + }, + "s2_shot_11": { + "diff_carry_yd": -0.9, + "diff_total_yd": 1.1, + "diff_apex_ft": -4.6, + "status": "pass", + "error_pattern": null + }, + "s2_shot_12": { + "diff_carry_yd": 1.0, + "diff_total_yd": 9.5, + "diff_apex_ft": -5.3, + "status": "moderate", + "error_pattern": "ROLLOUT_TOO_LONG" + }, + "s2_shot_13": { + "diff_carry_yd": -2.3, + "diff_total_yd": 3.2, + "diff_apex_ft": -6.1, + "status": "pass", + "error_pattern": null + }, + "s2_shot_14": { + "diff_carry_yd": -0.3, + "diff_total_yd": 1.7, + "diff_apex_ft": -6.1, + "status": "pass", + "error_pattern": null + }, + "s2_shot_15": { + "diff_carry_yd": -1.0, + "diff_total_yd": -12.7, + "diff_apex_ft": -2.0, + "status": "severe", + "error_pattern": "ROLLOUT_TOO_SHORT" + }, + "s2_shot_16": { + "diff_carry_yd": -0.3, + "diff_total_yd": 2.2, + "diff_apex_ft": -3.5, + "status": "pass", + "error_pattern": null + }, + "s2_shot_17": { + "diff_carry_yd": -1.4, + "diff_total_yd": 8.0, + "diff_apex_ft": -3.9, + "status": "moderate", + "error_pattern": "ROLLOUT_TOO_LONG" + }, + "s2_shot_18": { + "diff_carry_yd": 0.3, + "diff_total_yd": 14.0, + "diff_apex_ft": 2.6, + "status": "severe", + "error_pattern": "ROLLOUT_TOO_LONG" + }, + "s2_shot_19": { + "diff_carry_yd": 2.2, + "diff_total_yd": -6.1, + "diff_apex_ft": -1.2, + "status": "moderate", + "error_pattern": "ROLLOUT_TOO_SHORT" + }, + "s2_shot_20": { + "diff_carry_yd": -1.0, + "diff_total_yd": 11.5, + "diff_apex_ft": -2.0, + "status": "severe", + "error_pattern": "ROLLOUT_TOO_LONG" + }, + "s2_shot_21": { + "diff_carry_yd": 4.9, + "diff_total_yd": 27.7, + "diff_apex_ft": 1.7, + "status": "severe", + "error_pattern": "CARRY_AND_ROLLOUT_LONG" + }, + "s2_shot_22": { + "diff_carry_yd": -1.8, + "diff_total_yd": 1.6, + "diff_apex_ft": -1.6, + "status": "pass", + "error_pattern": null + }, + "s2_shot_23": { + "diff_carry_yd": -3.5, + "diff_total_yd": -19.6, + "diff_apex_ft": 0.0, + "status": "severe", + "error_pattern": "CARRY_AND_ROLLOUT_SHORT" + }, + "s2_shot_24": { + "diff_carry_yd": -1.7, + "diff_total_yd": 3.4, + "diff_apex_ft": -1.9, + "status": "pass", + "error_pattern": null + }, + "s2_shot_26": { + "diff_carry_yd": 1.7, + "diff_total_yd": 20.6, + "diff_apex_ft": 23.5, + "status": "severe", + "error_pattern": "ROLLOUT_TOO_LONG" + }, + "s2_shot_27": { + "diff_carry_yd": -4.4, + "diff_total_yd": 12.8, + "diff_apex_ft": 4.8, + "status": "severe", + "error_pattern": "CARRY_TOO_SHORT" + }, + "s2_shot_9": { + "diff_carry_yd": -3.3, + "diff_total_yd": 1.6, + "diff_apex_ft": 7.1, + "status": "moderate", + "error_pattern": "CARRY_TOO_SHORT" + }, + "s3_shot_3w_18": { + "diff_carry_yd": null, + "diff_total_yd": null, + "diff_apex_ft": null, + "status": "pass", + "error_pattern": null + }, + "s3_shot_3w_19": { + "diff_carry_yd": -0.6, + "diff_total_yd": 16.0, + "diff_apex_ft": 0.1, + "status": "severe", + "error_pattern": "ROLLOUT_TOO_LONG" + }, + "s3_shot_3w_21": { + "diff_carry_yd": 0.6, + "diff_total_yd": 15.9, + "diff_apex_ft": 0.3, + "status": "severe", + "error_pattern": "ROLLOUT_TOO_LONG" + }, + "s3_shot_3w_22": { + "diff_carry_yd": -0.5, + "diff_total_yd": 19.6, + "diff_apex_ft": 0.5, + "status": "severe", + "error_pattern": "ROLLOUT_TOO_LONG" + }, + "s3_shot_3w_23": { + "diff_carry_yd": 0.1, + "diff_total_yd": -23.3, + "diff_apex_ft": -1.3, + "status": "severe", + "error_pattern": "ROLLOUT_TOO_SHORT" + }, + "s3_shot_3w_24": { + "diff_carry_yd": 2.9, + "diff_total_yd": 28.4, + "diff_apex_ft": 1.8, + "status": "severe", + "error_pattern": "ROLLOUT_TOO_LONG" + }, + "s3_shot_5i_10": { + "diff_carry_yd": -0.5, + "diff_total_yd": -7.6, + "diff_apex_ft": 5.8, + "status": "moderate", + "error_pattern": "ROLLOUT_TOO_SHORT" + }, + "s3_shot_5i_11": { + "diff_carry_yd": -0.5, + "diff_total_yd": -17.6, + "diff_apex_ft": -1.3, + "status": "severe", + "error_pattern": "ROLLOUT_TOO_SHORT" + }, + "s3_shot_5i_12": { + "diff_carry_yd": 1.1, + "diff_total_yd": -23.5, + "diff_apex_ft": 1.1, + "status": "severe", + "error_pattern": "ROLLOUT_TOO_SHORT" + }, + "s3_shot_5i_13": { + "diff_carry_yd": -0.3, + "diff_total_yd": 10.1, + "diff_apex_ft": 0.6, + "status": "severe", + "error_pattern": "ROLLOUT_TOO_LONG" + }, + "s3_shot_5i_15": { + "diff_carry_yd": -0.1, + "diff_total_yd": 14.5, + "diff_apex_ft": -1.1, + "status": "severe", + "error_pattern": "ROLLOUT_TOO_LONG" + }, + "s3_shot_5i_16": { + "diff_carry_yd": 0.9, + "diff_total_yd": -21.0, + "diff_apex_ft": -0.2, + "status": "severe", + "error_pattern": "ROLLOUT_TOO_SHORT" + }, + "s3_shot_5i_17": { + "diff_carry_yd": -0.2, + "diff_total_yd": -1.7, + "diff_apex_ft": -0.3, + "status": "pass", + "error_pattern": null + }, + "s3_shot_6i_35": { + "diff_carry_yd": -0.4, + "diff_total_yd": -17.0, + "diff_apex_ft": -3.4, + "status": "severe", + "error_pattern": "ROLLOUT_TOO_SHORT" + }, + "s3_shot_6i_36": { + "diff_carry_yd": 1.7, + "diff_total_yd": -21.1, + "diff_apex_ft": 0.6, + "status": "severe", + "error_pattern": "ROLLOUT_TOO_SHORT" + }, + "s3_shot_6i_37": { + "diff_carry_yd": -0.1, + "diff_total_yd": 11.9, + "diff_apex_ft": -0.9, + "status": "severe", + "error_pattern": "ROLLOUT_TOO_LONG" + }, + "s3_shot_6i_38": { + "diff_carry_yd": -0.4, + "diff_total_yd": -21.7, + "diff_apex_ft": 0.1, + "status": "severe", + "error_pattern": "ROLLOUT_TOO_SHORT" + }, + "s3_shot_6i_39": { + "diff_carry_yd": -0.5, + "diff_total_yd": 6.4, + "diff_apex_ft": 0.0, + "status": "moderate", + "error_pattern": "ROLLOUT_TOO_LONG" + }, + "s3_shot_6i_40": { + "diff_carry_yd": -1.3, + "diff_total_yd": 7.7, + "diff_apex_ft": 0.1, + "status": "moderate", + "error_pattern": "ROLLOUT_TOO_LONG" + }, + "s3_shot_6i_41": { + "diff_carry_yd": -0.1, + "diff_total_yd": 12.9, + "diff_apex_ft": -1.0, + "status": "severe", + "error_pattern": "ROLLOUT_TOO_LONG" + }, + "s3_shot_6i_42": { + "diff_carry_yd": -1.4, + "diff_total_yd": -17.8, + "diff_apex_ft": 0.7, + "status": "severe", + "error_pattern": "ROLLOUT_TOO_SHORT" + }, + "s3_shot_6i_43": { + "diff_carry_yd": 1.6, + "diff_total_yd": -0.2, + "diff_apex_ft": 7.8, + "status": "pass", + "error_pattern": null + }, + "s3_shot_6i_44": { + "diff_carry_yd": -1.8, + "diff_total_yd": -28.0, + "diff_apex_ft": -1.4, + "status": "severe", + "error_pattern": "ROLLOUT_TOO_SHORT" + }, + "s3_shot_6i_45": { + "diff_carry_yd": -0.5, + "diff_total_yd": 20.4, + "diff_apex_ft": 0.5, + "status": "severe", + "error_pattern": "ROLLOUT_TOO_LONG" + }, + "s3_shot_6i_46": { + "diff_carry_yd": 3.1, + "diff_total_yd": -4.2, + "diff_apex_ft": -1.7, + "status": "moderate", + "error_pattern": "CARRY_TOO_LONG" + }, + "s3_shot_6i_47": { + "diff_carry_yd": 2.1, + "diff_total_yd": 8.3, + "diff_apex_ft": 11.4, + "status": "moderate", + "error_pattern": "ROLLOUT_TOO_LONG" + }, + "s3_shot_6i_48": { + "diff_carry_yd": 1.3, + "diff_total_yd": 8.8, + "diff_apex_ft": 13.8, + "status": "moderate", + "error_pattern": "ROLLOUT_TOO_LONG" + }, + "s3_shot_6i_49": { + "diff_carry_yd": 0.0, + "diff_total_yd": 6.9, + "diff_apex_ft": -0.3, + "status": "moderate", + "error_pattern": "ROLLOUT_TOO_LONG" + }, + "s3_shot_6i_50": { + "diff_carry_yd": -0.9, + "diff_total_yd": -12.5, + "diff_apex_ft": 3.8, + "status": "severe", + "error_pattern": "ROLLOUT_TOO_SHORT" + }, + "s3_shot_7i_25": { + "diff_carry_yd": -0.9, + "diff_total_yd": -18.4, + "diff_apex_ft": 0.9, + "status": "severe", + "error_pattern": "ROLLOUT_TOO_SHORT" + }, + "s3_shot_7i_26": { + "diff_carry_yd": 1.5, + "diff_total_yd": -22.1, + "diff_apex_ft": 1.1, + "status": "severe", + "error_pattern": "ROLLOUT_TOO_SHORT" + }, + "s3_shot_7i_27": { + "diff_carry_yd": -2.8, + "diff_total_yd": 4.7, + "diff_apex_ft": 7.7, + "status": "pass", + "error_pattern": null + }, + "s3_shot_7i_28": { + "diff_carry_yd": -3.5, + "diff_total_yd": 1.5, + "diff_apex_ft": 8.1, + "status": "moderate", + "error_pattern": "CARRY_TOO_SHORT" + }, + "s3_shot_7i_29": { + "diff_carry_yd": 0.1, + "diff_total_yd": -6.6, + "diff_apex_ft": -3.6, + "status": "moderate", + "error_pattern": "ROLLOUT_TOO_SHORT" + }, + "s3_shot_7i_30": { + "diff_carry_yd": -4.7, + "diff_total_yd": 1.0, + "diff_apex_ft": 5.3, + "status": "moderate", + "error_pattern": "CARRY_TOO_SHORT" + }, + "s3_shot_7i_31": { + "diff_carry_yd": -0.4, + "diff_total_yd": -14.7, + "diff_apex_ft": -4.2, + "status": "severe", + "error_pattern": "ROLLOUT_TOO_SHORT" + }, + "s3_shot_7i_32": { + "diff_carry_yd": -2.4, + "diff_total_yd": -2.8, + "diff_apex_ft": 3.0, + "status": "pass", + "error_pattern": null + }, + "s3_shot_7i_33": { + "diff_carry_yd": -2.2, + "diff_total_yd": -1.9, + "diff_apex_ft": 4.5, + "status": "pass", + "error_pattern": null + }, + "s3_shot_7i_34": { + "diff_carry_yd": -0.4, + "diff_total_yd": 2.0, + "diff_apex_ft": 3.0, + "status": "pass", + "error_pattern": null + }, + "s3_shot_9i_1": { + "diff_carry_yd": -0.5, + "diff_total_yd": -13.0, + "diff_apex_ft": 1.2, + "status": "severe", + "error_pattern": "ROLLOUT_TOO_SHORT" + }, + "s3_shot_9i_2": { + "diff_carry_yd": -0.2, + "diff_total_yd": -9.2, + "diff_apex_ft": -3.1, + "status": "moderate", + "error_pattern": "ROLLOUT_TOO_SHORT" + }, + "s3_shot_9i_3": { + "diff_carry_yd": -1.9, + "diff_total_yd": 1.4, + "diff_apex_ft": -5.4, + "status": "pass", + "error_pattern": null + }, + "s3_shot_9i_5": { + "diff_carry_yd": -0.4, + "diff_total_yd": -5.9, + "diff_apex_ft": -5.5, + "status": "moderate", + "error_pattern": "ROLLOUT_TOO_SHORT" + }, + "s3_shot_9i_7": { + "diff_carry_yd": 0.6, + "diff_total_yd": 1.1, + "diff_apex_ft": -4.3, + "status": "pass", + "error_pattern": null + }, + "s3_shot_9i_8": { + "diff_carry_yd": -2.3, + "diff_total_yd": 4.7, + "diff_apex_ft": -1.8, + "status": "pass", + "error_pattern": null + }, + "s3_shot_9i_9": { + "diff_carry_yd": -1.8, + "diff_total_yd": 2.3, + "diff_apex_ft": -6.3, + "status": "pass", + "error_pattern": null + }, + "s3_shot_driver_51": { + "diff_carry_yd": 3.4, + "diff_total_yd": 28.4, + "diff_apex_ft": 0.0, + "status": "severe", + "error_pattern": "CARRY_AND_ROLLOUT_LONG" + }, + "s3_shot_driver_52": { + "diff_carry_yd": 4.2, + "diff_total_yd": 23.9, + "diff_apex_ft": -2.0, + "status": "severe", + "error_pattern": "CARRY_AND_ROLLOUT_LONG" + }, + "s3_shot_driver_53": { + "diff_carry_yd": 0.5, + "diff_total_yd": 15.7, + "diff_apex_ft": -4.5, + "status": "severe", + "error_pattern": "ROLLOUT_TOO_LONG" + }, + "s3_shot_driver_54": { + "diff_carry_yd": -1.8, + "diff_total_yd": -0.7, + "diff_apex_ft": -2.5, + "status": "pass", + "error_pattern": null + }, + "s3_shot_driver_55": { + "diff_carry_yd": 2.0, + "diff_total_yd": 21.7, + "diff_apex_ft": 0.4, + "status": "severe", + "error_pattern": "ROLLOUT_TOO_LONG" + }, + "s3_shot_driver_56": { + "diff_carry_yd": -3.3, + "diff_total_yd": 19.6, + "diff_apex_ft": 9.4, + "status": "severe", + "error_pattern": "CARRY_TOO_SHORT" + }, + "s3_shot_driver_57": { + "diff_carry_yd": -5.8, + "diff_total_yd": -20.4, + "diff_apex_ft": -3.7, + "status": "severe", + "error_pattern": "CARRY_AND_ROLLOUT_SHORT" + }, + "s3_shot_driver_58": { + "diff_carry_yd": 10.0, + "diff_total_yd": 34.0, + "diff_apex_ft": -5.4, + "status": "severe", + "error_pattern": "CARRY_AND_ROLLOUT_LONG" + }, + "s3_shot_driver_59": { + "diff_carry_yd": -1.6, + "diff_total_yd": 14.4, + "diff_apex_ft": -4.2, + "status": "severe", + "error_pattern": "ROLLOUT_TOO_LONG" + }, + "s3_shot_driver_60": { + "diff_carry_yd": -0.6, + "diff_total_yd": -15.4, + "diff_apex_ft": -2.5, + "status": "severe", + "error_pattern": "ROLLOUT_TOO_SHORT" + }, + "s3_shot_pw_64": { + "diff_carry_yd": -0.3, + "diff_total_yd": 9.1, + "diff_apex_ft": -3.8, + "status": "moderate", + "error_pattern": "ROLLOUT_TOO_LONG" + }, + "s3_shot_pw_65": { + "diff_carry_yd": -0.6, + "diff_total_yd": 4.2, + "diff_apex_ft": -4.0, + "status": "pass", + "error_pattern": null + }, + "s3_shot_pw_66": { + "diff_carry_yd": -0.4, + "diff_total_yd": 10.8, + "diff_apex_ft": -3.9, + "status": "severe", + "error_pattern": "ROLLOUT_TOO_LONG" + }, + "s3_shot_pw_67": { + "diff_carry_yd": -0.4, + "diff_total_yd": 5.2, + "diff_apex_ft": -4.1, + "status": "moderate", + "error_pattern": "ROLLOUT_TOO_LONG" + }, + "s3_shot_pw_68": { + "diff_carry_yd": -0.5, + "diff_total_yd": 6.1, + "diff_apex_ft": -6.4, + "status": "moderate", + "error_pattern": "ROLLOUT_TOO_LONG" + }, + "s3_shot_pw_69": { + "diff_carry_yd": -0.4, + "diff_total_yd": 11.6, + "diff_apex_ft": -3.9, + "status": "severe", + "error_pattern": "ROLLOUT_TOO_LONG" + }, + "s4_shot_3w_31": { + "diff_carry_yd": -0.1, + "diff_total_yd": -3.6, + "diff_apex_ft": -3.6, + "status": "pass", + "error_pattern": null + }, + "s4_shot_3w_32": { + "diff_carry_yd": 1.5, + "diff_total_yd": 12.2, + "diff_apex_ft": 1.4, + "status": "severe", + "error_pattern": "ROLLOUT_TOO_LONG" + }, + "s4_shot_3w_33": { + "diff_carry_yd": 5.7, + "diff_total_yd": 13.2, + "diff_apex_ft": -8.2, + "status": "severe", + "error_pattern": "CARRY_AND_ROLLOUT_LONG" + }, + "s4_shot_3w_34": { + "diff_carry_yd": 3.6, + "diff_total_yd": 2.2, + "diff_apex_ft": -2.5, + "status": "moderate", + "error_pattern": "CARRY_TOO_LONG" + }, + "s4_shot_3w_35": { + "diff_carry_yd": 4.5, + "diff_total_yd": 2.8, + "diff_apex_ft": -3.1, + "status": "moderate", + "error_pattern": "CARRY_TOO_LONG" + }, + "s4_shot_5i_25": { + "diff_carry_yd": -2.9, + "diff_total_yd": -7.2, + "diff_apex_ft": -5.5, + "status": "moderate", + "error_pattern": "ROLLOUT_TOO_SHORT" + }, + "s4_shot_5i_26": { + "diff_carry_yd": 3.1, + "diff_total_yd": 5.0, + "diff_apex_ft": 2.9, + "status": "moderate", + "error_pattern": "CARRY_TOO_LONG" + }, + "s4_shot_5i_27": { + "diff_carry_yd": -2.0, + "diff_total_yd": 10.8, + "diff_apex_ft": -0.2, + "status": "severe", + "error_pattern": "ROLLOUT_TOO_LONG" + }, + "s4_shot_5i_28": { + "diff_carry_yd": -0.2, + "diff_total_yd": -6.9, + "diff_apex_ft": 5.0, + "status": "moderate", + "error_pattern": "ROLLOUT_TOO_SHORT" + }, + "s4_shot_5i_29": { + "diff_carry_yd": 6.3, + "diff_total_yd": 13.8, + "diff_apex_ft": 1.0, + "status": "severe", + "error_pattern": "CARRY_AND_ROLLOUT_LONG" + }, + "s4_shot_5i_30": { + "diff_carry_yd": 1.3, + "diff_total_yd": 4.1, + "diff_apex_ft": -7.1, + "status": "pass", + "error_pattern": null + }, + "s4_shot_6i_19": { + "diff_carry_yd": -0.5, + "diff_total_yd": -11.5, + "diff_apex_ft": 0.2, + "status": "severe", + "error_pattern": "ROLLOUT_TOO_SHORT" + }, + "s4_shot_6i_20": { + "diff_carry_yd": -0.1, + "diff_total_yd": 11.4, + "diff_apex_ft": 0.0, + "status": "severe", + "error_pattern": "ROLLOUT_TOO_LONG" + }, + "s4_shot_6i_21": { + "diff_carry_yd": 0.9, + "diff_total_yd": -1.5, + "diff_apex_ft": -6.8, + "status": "pass", + "error_pattern": null + }, + "s4_shot_6i_22": { + "diff_carry_yd": 4.5, + "diff_total_yd": 10.8, + "diff_apex_ft": 0.9, + "status": "severe", + "error_pattern": "CARRY_AND_ROLLOUT_LONG" + }, + "s4_shot_6i_23": { + "diff_carry_yd": null, + "diff_total_yd": null, + "diff_apex_ft": null, + "status": "pass", + "error_pattern": null + }, + "s4_shot_6i_24": { + "diff_carry_yd": null, + "diff_total_yd": null, + "diff_apex_ft": null, + "status": "pass", + "error_pattern": null + }, + "s4_shot_9i_13": { + "diff_carry_yd": null, + "diff_total_yd": null, + "diff_apex_ft": null, + "status": "pass", + "error_pattern": null + }, + "s4_shot_9i_14": { + "diff_carry_yd": -0.1, + "diff_total_yd": 1.2, + "diff_apex_ft": -6.4, + "status": "pass", + "error_pattern": null + }, + "s4_shot_9i_15": { + "diff_carry_yd": -2.9, + "diff_total_yd": 10.8, + "diff_apex_ft": -3.7, + "status": "severe", + "error_pattern": "ROLLOUT_TOO_LONG" + }, + "s4_shot_9i_17": { + "diff_carry_yd": -2.0, + "diff_total_yd": -16.6, + "diff_apex_ft": -0.6, + "status": "severe", + "error_pattern": "ROLLOUT_TOO_SHORT" + }, + "s4_shot_9i_18": { + "diff_carry_yd": -2.8, + "diff_total_yd": 8.7, + "diff_apex_ft": -3.5, + "status": "moderate", + "error_pattern": "ROLLOUT_TOO_LONG" + }, + "s4_shot_lw_38": { + "diff_carry_yd": -5.7, + "diff_total_yd": 2.1, + "diff_apex_ft": -4.0, + "status": "moderate", + "error_pattern": "CARRY_TOO_SHORT" + }, + "s4_shot_pw_1": { + "diff_carry_yd": -7.7, + "diff_total_yd": -14.3, + "diff_apex_ft": -0.3, + "status": "severe", + "error_pattern": "CARRY_AND_ROLLOUT_SHORT" + }, + "s4_shot_pw_10": { + "diff_carry_yd": -2.4, + "diff_total_yd": 0.4, + "diff_apex_ft": -4.2, + "status": "pass", + "error_pattern": null + }, + "s4_shot_pw_11": { + "diff_carry_yd": -2.6, + "diff_total_yd": 0.4, + "diff_apex_ft": -3.8, + "status": "pass", + "error_pattern": null + }, + "s4_shot_pw_2": { + "diff_carry_yd": -4.8, + "diff_total_yd": 4.3, + "diff_apex_ft": -1.6, + "status": "moderate", + "error_pattern": "CARRY_TOO_SHORT" + }, + "s4_shot_pw_3": { + "diff_carry_yd": -6.9, + "diff_total_yd": 3.9, + "diff_apex_ft": -3.9, + "status": "moderate", + "error_pattern": "CARRY_TOO_SHORT" + }, + "s4_shot_pw_47": { + "diff_carry_yd": -3.9, + "diff_total_yd": 4.0, + "diff_apex_ft": -1.2, + "status": "moderate", + "error_pattern": "CARRY_TOO_SHORT" + }, + "s4_shot_pw_48": { + "diff_carry_yd": -4.3, + "diff_total_yd": 2.7, + "diff_apex_ft": -1.3, + "status": "moderate", + "error_pattern": "CARRY_TOO_SHORT" + }, + "s4_shot_pw_49": { + "diff_carry_yd": -6.2, + "diff_total_yd": 4.4, + "diff_apex_ft": -1.9, + "status": "moderate", + "error_pattern": "CARRY_TOO_SHORT" + }, + "s4_shot_pw_6": { + "diff_carry_yd": -8.2, + "diff_total_yd": 7.0, + "diff_apex_ft": -3.6, + "status": "severe", + "error_pattern": "CARRY_TOO_SHORT" + }, + "s4_shot_pw_7": { + "diff_carry_yd": -2.0, + "diff_total_yd": 12.2, + "diff_apex_ft": -3.7, + "status": "severe", + "error_pattern": "ROLLOUT_TOO_LONG" + }, + "s4_shot_pw_9": { + "diff_carry_yd": null, + "diff_total_yd": null, + "diff_apex_ft": null, + "status": "pass", + "error_pattern": null + }, + "topped_test_shot": { + "diff_carry_yd": -0.7, + "diff_total_yd": 13.8, + "diff_apex_ft": -0.1, + "status": "severe", + "error_pattern": "ROLLOUT_TOO_LONG" + }, + "wedge_shot_1": { + "diff_carry_yd": -0.7, + "diff_total_yd": -1.7, + "diff_apex_ft": -2.6, + "status": "pass", + "error_pattern": null + }, + "wedge_shot_2": { + "diff_carry_yd": -0.5, + "diff_total_yd": 2.1, + "diff_apex_ft": -4.4, + "status": "pass", + "error_pattern": null + }, + "wedge_test_shot": { + "diff_carry_yd": -0.3, + "diff_total_yd": 3.2, + "diff_apex_ft": -3.2, + "status": "pass", + "error_pattern": null + }, + "wedge_test_shot2": { + "diff_carry_yd": -0.1, + "diff_total_yd": 2.9, + "diff_apex_ft": -2.0, + "status": "pass", + "error_pattern": null + }, + "wood1": { + "diff_carry_yd": 4.9, + "diff_total_yd": -4.0, + "diff_apex_ft": 3.1, + "status": "moderate", + "error_pattern": "CARRY_TOO_LONG" + }, + "wood2": { + "diff_carry_yd": 3.8, + "diff_total_yd": 0.4, + "diff_apex_ft": -1.8, + "status": "moderate", + "error_pattern": "CARRY_TOO_LONG" + }, + "wood_low_test_shot": { + "diff_carry_yd": 1.3, + "diff_total_yd": 22.0, + "diff_apex_ft": 0.3, + "status": "severe", + "error_pattern": "ROLLOUT_TOO_LONG" + } + }, + "regressions": [ + { + "shot": "s2_shot_9", + "was": "pass", + "now": "moderate", + "prev_total_diff": 3.5, + "curr_total_diff": 1.6 + }, + { + "shot": "s3_shot_7i_28", + "was": "pass", + "now": "moderate", + "prev_total_diff": 1.2, + "curr_total_diff": 1.5 + }, + { + "shot": "s3_shot_pw_69", + "was": "pass", + "now": "severe", + "prev_total_diff": -3.9, + "curr_total_diff": 11.6 + }, + { + "shot": "s4_shot_3w_32", + "was": "pass", + "now": "severe", + "prev_total_diff": null, + "curr_total_diff": 12.2 + }, + { + "shot": "s4_shot_3w_33", + "was": "pass", + "now": "severe", + "prev_total_diff": null, + "curr_total_diff": 13.2 + }, + { + "shot": "s4_shot_3w_34", + "was": "pass", + "now": "moderate", + "prev_total_diff": null, + "curr_total_diff": 2.2 + }, + { + "shot": "s4_shot_3w_35", + "was": "pass", + "now": "moderate", + "prev_total_diff": null, + "curr_total_diff": 2.8 + }, + { + "shot": "s4_shot_5i_25", + "was": "pass", + "now": "moderate", + "prev_total_diff": null, + "curr_total_diff": -7.2 + }, + { + "shot": "s4_shot_5i_26", + "was": "pass", + "now": "moderate", + "prev_total_diff": null, + "curr_total_diff": 5.0 + }, + { + "shot": "s4_shot_5i_27", + "was": "pass", + "now": "severe", + "prev_total_diff": null, + "curr_total_diff": 10.8 + }, + { + "shot": "s4_shot_5i_28", + "was": "pass", + "now": "moderate", + "prev_total_diff": null, + "curr_total_diff": -6.9 + }, + { + "shot": "s4_shot_5i_29", + "was": "pass", + "now": "severe", + "prev_total_diff": null, + "curr_total_diff": 13.8 + }, + { + "shot": "s4_shot_6i_19", + "was": "pass", + "now": "severe", + "prev_total_diff": null, + "curr_total_diff": -11.5 + }, + { + "shot": "s4_shot_6i_20", + "was": "pass", + "now": "severe", + "prev_total_diff": null, + "curr_total_diff": 11.4 + }, + { + "shot": "s4_shot_6i_22", + "was": "pass", + "now": "severe", + "prev_total_diff": null, + "curr_total_diff": 10.8 + }, + { + "shot": "s4_shot_9i_15", + "was": "pass", + "now": "severe", + "prev_total_diff": null, + "curr_total_diff": 10.8 + }, + { + "shot": "s4_shot_9i_17", + "was": "pass", + "now": "severe", + "prev_total_diff": null, + "curr_total_diff": -16.6 + }, + { + "shot": "s4_shot_9i_18", + "was": "pass", + "now": "moderate", + "prev_total_diff": null, + "curr_total_diff": 8.7 + }, + { + "shot": "s4_shot_lw_38", + "was": "pass", + "now": "moderate", + "prev_total_diff": null, + "curr_total_diff": 2.1 + }, + { + "shot": "s4_shot_pw_1", + "was": "pass", + "now": "severe", + "prev_total_diff": null, + "curr_total_diff": -14.3 + }, + { + "shot": "s4_shot_pw_2", + "was": "pass", + "now": "moderate", + "prev_total_diff": null, + "curr_total_diff": 4.3 + }, + { + "shot": "s4_shot_pw_3", + "was": "pass", + "now": "moderate", + "prev_total_diff": null, + "curr_total_diff": 3.9 + }, + { + "shot": "s4_shot_pw_47", + "was": "pass", + "now": "moderate", + "prev_total_diff": null, + "curr_total_diff": 4.0 + }, + { + "shot": "s4_shot_pw_48", + "was": "pass", + "now": "moderate", + "prev_total_diff": null, + "curr_total_diff": 2.7 + }, + { + "shot": "s4_shot_pw_49", + "was": "pass", + "now": "moderate", + "prev_total_diff": null, + "curr_total_diff": 4.4 + }, + { + "shot": "s4_shot_pw_6", + "was": "pass", + "now": "severe", + "prev_total_diff": null, + "curr_total_diff": 7.0 + }, + { + "shot": "s4_shot_pw_7", + "was": "pass", + "now": "severe", + "prev_total_diff": null, + "curr_total_diff": 12.2 + } + ], + "conflicts": [ + "Bounce.FlightTangentialRetentionBase", + "Bounce.FlightSpinFactorMin", + "Bounce.FlightSpinFactorDivisor", + "Rollout.MidSpinMultiplierMax", + "Rollout.HighSpinMultiplierMax", + "Rollout.FrictionBlendSpeed", + "KineticFrictionMultiplier", + "Bounce.RolloutHighSpinRetention", + "Rollout.ChipVelocityScaleMin", + "Rollout.ChipVelocityScaleMax", + "Bounce.CorBaseA", + "Rollout.LowSpinMultiplierMax", + "Rollout.LowSpinThreshold", + "RollingFrictionMultiplier", + "Bounce.RolloutLowSpinRetention", + "Flight.ClMaxBase", + "Flight.CdMin", + "DragScaleMultiplier", + "LiftScaleMultiplier" + ] +} diff --git a/assets/data/calibration/history/iteration_045.json b/assets/data/calibration/history/iteration_045.json new file mode 100644 index 0000000..19254d1 --- /dev/null +++ b/assets/data/calibration/history/iteration_045.json @@ -0,0 +1,987 @@ +{ + "iteration": 45, + "timestamp": "2026-03-14T01:10:46.291877", + "profile_overrides": {}, + "summary": { + "pass": 32, + "moderate": 35, + "severe": 62, + "no_reference": 7 + }, + "per_shot": { + "5iron": { + "diff_carry_yd": 0.8, + "diff_total_yd": 11.3, + "diff_apex_ft": 4.6, + "status": "severe", + "error_pattern": "ROLLOUT_TOO_LONG" + }, + "approach_mid_iron_test_shot": { + "diff_carry_yd": -0.6, + "diff_total_yd": 7.3, + "diff_apex_ft": -5.0, + "status": "moderate", + "error_pattern": "ROLLOUT_TOO_LONG" + }, + "bump_and_run": { + "diff_carry_yd": -0.1, + "diff_total_yd": -27.5, + "diff_apex_ft": -2.1, + "status": "severe", + "error_pattern": "ROLLOUT_TOO_SHORT" + }, + "bump_and_run_slow": { + "diff_carry_yd": null, + "diff_total_yd": null, + "diff_apex_ft": null, + "status": "pass", + "error_pattern": null + }, + "bump_test_shot": { + "diff_carry_yd": 0.0, + "diff_total_yd": 12.7, + "diff_apex_ft": -0.1, + "status": "severe", + "error_pattern": "ROLLOUT_TOO_LONG" + }, + "checked_test_shot": { + "diff_carry_yd": -2.1, + "diff_total_yd": -0.5, + "diff_apex_ft": -9.6, + "status": "pass", + "error_pattern": null + }, + "chip_test_shot": { + "diff_carry_yd": null, + "diff_total_yd": null, + "diff_apex_ft": null, + "status": "pass", + "error_pattern": null + }, + "drive_test_shot": { + "diff_carry_yd": -0.4, + "diff_total_yd": -0.6, + "diff_apex_ft": -1.1, + "status": "pass", + "error_pattern": null + }, + "driver1": { + "diff_carry_yd": -0.3, + "diff_total_yd": -26.3, + "diff_apex_ft": -0.8, + "status": "severe", + "error_pattern": "ROLLOUT_TOO_SHORT" + }, + "driver2": { + "diff_carry_yd": 1.2, + "diff_total_yd": 7.3, + "diff_apex_ft": -3.0, + "status": "moderate", + "error_pattern": "ROLLOUT_TOO_LONG" + }, + "driver3": { + "diff_carry_yd": -1.9, + "diff_total_yd": 20.4, + "diff_apex_ft": 20.6, + "status": "severe", + "error_pattern": "ROLLOUT_TOO_LONG" + }, + "driver4": { + "diff_carry_yd": -0.7, + "diff_total_yd": 15.0, + "diff_apex_ft": 4.1, + "status": "severe", + "error_pattern": "ROLLOUT_TOO_LONG" + }, + "flop_test_shot": { + "diff_carry_yd": -0.2, + "diff_total_yd": 1.6, + "diff_apex_ft": -8.5, + "status": "pass", + "error_pattern": null + }, + "p_wedge_shot_1": { + "diff_carry_yd": -0.5, + "diff_total_yd": 1.7, + "diff_apex_ft": -5.5, + "status": "pass", + "error_pattern": null + }, + "s2_shot_10": { + "diff_carry_yd": -0.6, + "diff_total_yd": 10.2, + "diff_apex_ft": -6.0, + "status": "severe", + "error_pattern": "ROLLOUT_TOO_LONG" + }, + "s2_shot_11": { + "diff_carry_yd": -0.9, + "diff_total_yd": 1.1, + "diff_apex_ft": -4.6, + "status": "pass", + "error_pattern": null + }, + "s2_shot_12": { + "diff_carry_yd": 1.0, + "diff_total_yd": 9.5, + "diff_apex_ft": -5.3, + "status": "moderate", + "error_pattern": "ROLLOUT_TOO_LONG" + }, + "s2_shot_13": { + "diff_carry_yd": -2.3, + "diff_total_yd": 3.2, + "diff_apex_ft": -6.1, + "status": "pass", + "error_pattern": null + }, + "s2_shot_14": { + "diff_carry_yd": -0.3, + "diff_total_yd": 1.7, + "diff_apex_ft": -6.1, + "status": "pass", + "error_pattern": null + }, + "s2_shot_15": { + "diff_carry_yd": -1.0, + "diff_total_yd": -12.7, + "diff_apex_ft": -2.0, + "status": "severe", + "error_pattern": "ROLLOUT_TOO_SHORT" + }, + "s2_shot_16": { + "diff_carry_yd": -0.3, + "diff_total_yd": 2.2, + "diff_apex_ft": -3.5, + "status": "pass", + "error_pattern": null + }, + "s2_shot_17": { + "diff_carry_yd": -1.4, + "diff_total_yd": 8.0, + "diff_apex_ft": -3.9, + "status": "moderate", + "error_pattern": "ROLLOUT_TOO_LONG" + }, + "s2_shot_18": { + "diff_carry_yd": 0.3, + "diff_total_yd": 14.0, + "diff_apex_ft": 2.6, + "status": "severe", + "error_pattern": "ROLLOUT_TOO_LONG" + }, + "s2_shot_19": { + "diff_carry_yd": 2.2, + "diff_total_yd": -6.1, + "diff_apex_ft": -1.2, + "status": "moderate", + "error_pattern": "ROLLOUT_TOO_SHORT" + }, + "s2_shot_20": { + "diff_carry_yd": -1.0, + "diff_total_yd": 11.5, + "diff_apex_ft": -2.0, + "status": "severe", + "error_pattern": "ROLLOUT_TOO_LONG" + }, + "s2_shot_21": { + "diff_carry_yd": 4.9, + "diff_total_yd": 27.7, + "diff_apex_ft": 1.7, + "status": "severe", + "error_pattern": "CARRY_AND_ROLLOUT_LONG" + }, + "s2_shot_22": { + "diff_carry_yd": -1.8, + "diff_total_yd": 1.6, + "diff_apex_ft": -1.6, + "status": "pass", + "error_pattern": null + }, + "s2_shot_23": { + "diff_carry_yd": -3.5, + "diff_total_yd": -19.6, + "diff_apex_ft": 0.0, + "status": "severe", + "error_pattern": "CARRY_AND_ROLLOUT_SHORT" + }, + "s2_shot_24": { + "diff_carry_yd": -1.7, + "diff_total_yd": 3.4, + "diff_apex_ft": -1.9, + "status": "pass", + "error_pattern": null + }, + "s2_shot_26": { + "diff_carry_yd": 1.7, + "diff_total_yd": 20.6, + "diff_apex_ft": 23.5, + "status": "severe", + "error_pattern": "ROLLOUT_TOO_LONG" + }, + "s2_shot_27": { + "diff_carry_yd": -4.4, + "diff_total_yd": 12.8, + "diff_apex_ft": 4.8, + "status": "severe", + "error_pattern": "CARRY_TOO_SHORT" + }, + "s2_shot_9": { + "diff_carry_yd": -3.3, + "diff_total_yd": 1.6, + "diff_apex_ft": 7.1, + "status": "moderate", + "error_pattern": "CARRY_TOO_SHORT" + }, + "s3_shot_3w_18": { + "diff_carry_yd": null, + "diff_total_yd": null, + "diff_apex_ft": null, + "status": "pass", + "error_pattern": null + }, + "s3_shot_3w_19": { + "diff_carry_yd": -0.6, + "diff_total_yd": 16.0, + "diff_apex_ft": 0.1, + "status": "severe", + "error_pattern": "ROLLOUT_TOO_LONG" + }, + "s3_shot_3w_21": { + "diff_carry_yd": 0.6, + "diff_total_yd": 15.9, + "diff_apex_ft": 0.3, + "status": "severe", + "error_pattern": "ROLLOUT_TOO_LONG" + }, + "s3_shot_3w_22": { + "diff_carry_yd": -0.5, + "diff_total_yd": 19.6, + "diff_apex_ft": 0.5, + "status": "severe", + "error_pattern": "ROLLOUT_TOO_LONG" + }, + "s3_shot_3w_23": { + "diff_carry_yd": 0.1, + "diff_total_yd": -23.3, + "diff_apex_ft": -1.3, + "status": "severe", + "error_pattern": "ROLLOUT_TOO_SHORT" + }, + "s3_shot_3w_24": { + "diff_carry_yd": 2.9, + "diff_total_yd": 28.4, + "diff_apex_ft": 1.8, + "status": "severe", + "error_pattern": "ROLLOUT_TOO_LONG" + }, + "s3_shot_5i_10": { + "diff_carry_yd": -0.5, + "diff_total_yd": -7.6, + "diff_apex_ft": 5.8, + "status": "moderate", + "error_pattern": "ROLLOUT_TOO_SHORT" + }, + "s3_shot_5i_11": { + "diff_carry_yd": -0.5, + "diff_total_yd": -17.6, + "diff_apex_ft": -1.3, + "status": "severe", + "error_pattern": "ROLLOUT_TOO_SHORT" + }, + "s3_shot_5i_12": { + "diff_carry_yd": 1.1, + "diff_total_yd": -23.5, + "diff_apex_ft": 1.1, + "status": "severe", + "error_pattern": "ROLLOUT_TOO_SHORT" + }, + "s3_shot_5i_13": { + "diff_carry_yd": -0.3, + "diff_total_yd": 10.1, + "diff_apex_ft": 0.6, + "status": "severe", + "error_pattern": "ROLLOUT_TOO_LONG" + }, + "s3_shot_5i_15": { + "diff_carry_yd": -0.1, + "diff_total_yd": 14.5, + "diff_apex_ft": -1.1, + "status": "severe", + "error_pattern": "ROLLOUT_TOO_LONG" + }, + "s3_shot_5i_16": { + "diff_carry_yd": 0.9, + "diff_total_yd": -21.0, + "diff_apex_ft": -0.2, + "status": "severe", + "error_pattern": "ROLLOUT_TOO_SHORT" + }, + "s3_shot_5i_17": { + "diff_carry_yd": -0.2, + "diff_total_yd": -1.7, + "diff_apex_ft": -0.3, + "status": "pass", + "error_pattern": null + }, + "s3_shot_6i_35": { + "diff_carry_yd": -0.4, + "diff_total_yd": -17.0, + "diff_apex_ft": -3.4, + "status": "severe", + "error_pattern": "ROLLOUT_TOO_SHORT" + }, + "s3_shot_6i_36": { + "diff_carry_yd": 1.7, + "diff_total_yd": -21.1, + "diff_apex_ft": 0.6, + "status": "severe", + "error_pattern": "ROLLOUT_TOO_SHORT" + }, + "s3_shot_6i_37": { + "diff_carry_yd": -0.1, + "diff_total_yd": 11.9, + "diff_apex_ft": -0.9, + "status": "severe", + "error_pattern": "ROLLOUT_TOO_LONG" + }, + "s3_shot_6i_38": { + "diff_carry_yd": -0.4, + "diff_total_yd": -21.7, + "diff_apex_ft": 0.1, + "status": "severe", + "error_pattern": "ROLLOUT_TOO_SHORT" + }, + "s3_shot_6i_39": { + "diff_carry_yd": -0.5, + "diff_total_yd": 6.4, + "diff_apex_ft": 0.0, + "status": "moderate", + "error_pattern": "ROLLOUT_TOO_LONG" + }, + "s3_shot_6i_40": { + "diff_carry_yd": -1.3, + "diff_total_yd": 7.7, + "diff_apex_ft": 0.1, + "status": "moderate", + "error_pattern": "ROLLOUT_TOO_LONG" + }, + "s3_shot_6i_41": { + "diff_carry_yd": -0.1, + "diff_total_yd": 12.9, + "diff_apex_ft": -1.0, + "status": "severe", + "error_pattern": "ROLLOUT_TOO_LONG" + }, + "s3_shot_6i_42": { + "diff_carry_yd": -1.4, + "diff_total_yd": -17.8, + "diff_apex_ft": 0.7, + "status": "severe", + "error_pattern": "ROLLOUT_TOO_SHORT" + }, + "s3_shot_6i_43": { + "diff_carry_yd": 1.6, + "diff_total_yd": -0.2, + "diff_apex_ft": 7.8, + "status": "pass", + "error_pattern": null + }, + "s3_shot_6i_44": { + "diff_carry_yd": -1.8, + "diff_total_yd": -28.0, + "diff_apex_ft": -1.4, + "status": "severe", + "error_pattern": "ROLLOUT_TOO_SHORT" + }, + "s3_shot_6i_45": { + "diff_carry_yd": -0.5, + "diff_total_yd": 20.4, + "diff_apex_ft": 0.5, + "status": "severe", + "error_pattern": "ROLLOUT_TOO_LONG" + }, + "s3_shot_6i_46": { + "diff_carry_yd": 3.1, + "diff_total_yd": -4.2, + "diff_apex_ft": -1.7, + "status": "moderate", + "error_pattern": "CARRY_TOO_LONG" + }, + "s3_shot_6i_47": { + "diff_carry_yd": 2.1, + "diff_total_yd": 8.3, + "diff_apex_ft": 11.4, + "status": "moderate", + "error_pattern": "ROLLOUT_TOO_LONG" + }, + "s3_shot_6i_48": { + "diff_carry_yd": 1.3, + "diff_total_yd": 8.8, + "diff_apex_ft": 13.8, + "status": "moderate", + "error_pattern": "ROLLOUT_TOO_LONG" + }, + "s3_shot_6i_49": { + "diff_carry_yd": 0.0, + "diff_total_yd": 6.9, + "diff_apex_ft": -0.3, + "status": "moderate", + "error_pattern": "ROLLOUT_TOO_LONG" + }, + "s3_shot_6i_50": { + "diff_carry_yd": -0.9, + "diff_total_yd": -12.5, + "diff_apex_ft": 3.8, + "status": "severe", + "error_pattern": "ROLLOUT_TOO_SHORT" + }, + "s3_shot_7i_25": { + "diff_carry_yd": -0.9, + "diff_total_yd": -18.4, + "diff_apex_ft": 0.9, + "status": "severe", + "error_pattern": "ROLLOUT_TOO_SHORT" + }, + "s3_shot_7i_26": { + "diff_carry_yd": 1.5, + "diff_total_yd": -22.1, + "diff_apex_ft": 1.1, + "status": "severe", + "error_pattern": "ROLLOUT_TOO_SHORT" + }, + "s3_shot_7i_27": { + "diff_carry_yd": -2.8, + "diff_total_yd": 4.7, + "diff_apex_ft": 7.7, + "status": "pass", + "error_pattern": null + }, + "s3_shot_7i_28": { + "diff_carry_yd": -3.5, + "diff_total_yd": 1.5, + "diff_apex_ft": 8.1, + "status": "moderate", + "error_pattern": "CARRY_TOO_SHORT" + }, + "s3_shot_7i_29": { + "diff_carry_yd": 0.1, + "diff_total_yd": -6.6, + "diff_apex_ft": -3.6, + "status": "moderate", + "error_pattern": "ROLLOUT_TOO_SHORT" + }, + "s3_shot_7i_30": { + "diff_carry_yd": -4.7, + "diff_total_yd": 1.0, + "diff_apex_ft": 5.3, + "status": "moderate", + "error_pattern": "CARRY_TOO_SHORT" + }, + "s3_shot_7i_31": { + "diff_carry_yd": -0.4, + "diff_total_yd": -14.7, + "diff_apex_ft": -4.2, + "status": "severe", + "error_pattern": "ROLLOUT_TOO_SHORT" + }, + "s3_shot_7i_32": { + "diff_carry_yd": -2.4, + "diff_total_yd": -2.8, + "diff_apex_ft": 3.0, + "status": "pass", + "error_pattern": null + }, + "s3_shot_7i_33": { + "diff_carry_yd": -2.2, + "diff_total_yd": -1.9, + "diff_apex_ft": 4.5, + "status": "pass", + "error_pattern": null + }, + "s3_shot_7i_34": { + "diff_carry_yd": -0.4, + "diff_total_yd": 2.0, + "diff_apex_ft": 3.0, + "status": "pass", + "error_pattern": null + }, + "s3_shot_9i_1": { + "diff_carry_yd": -0.5, + "diff_total_yd": -13.0, + "diff_apex_ft": 1.2, + "status": "severe", + "error_pattern": "ROLLOUT_TOO_SHORT" + }, + "s3_shot_9i_2": { + "diff_carry_yd": -0.2, + "diff_total_yd": -9.2, + "diff_apex_ft": -3.1, + "status": "moderate", + "error_pattern": "ROLLOUT_TOO_SHORT" + }, + "s3_shot_9i_3": { + "diff_carry_yd": -1.9, + "diff_total_yd": 1.4, + "diff_apex_ft": -5.4, + "status": "pass", + "error_pattern": null + }, + "s3_shot_9i_5": { + "diff_carry_yd": -0.4, + "diff_total_yd": -5.9, + "diff_apex_ft": -5.5, + "status": "moderate", + "error_pattern": "ROLLOUT_TOO_SHORT" + }, + "s3_shot_9i_7": { + "diff_carry_yd": 0.6, + "diff_total_yd": 1.1, + "diff_apex_ft": -4.3, + "status": "pass", + "error_pattern": null + }, + "s3_shot_9i_8": { + "diff_carry_yd": -2.3, + "diff_total_yd": 4.7, + "diff_apex_ft": -1.8, + "status": "pass", + "error_pattern": null + }, + "s3_shot_9i_9": { + "diff_carry_yd": -1.8, + "diff_total_yd": 2.3, + "diff_apex_ft": -6.3, + "status": "pass", + "error_pattern": null + }, + "s3_shot_driver_51": { + "diff_carry_yd": 3.4, + "diff_total_yd": 28.4, + "diff_apex_ft": 0.0, + "status": "severe", + "error_pattern": "CARRY_AND_ROLLOUT_LONG" + }, + "s3_shot_driver_52": { + "diff_carry_yd": 4.2, + "diff_total_yd": 23.9, + "diff_apex_ft": -2.0, + "status": "severe", + "error_pattern": "CARRY_AND_ROLLOUT_LONG" + }, + "s3_shot_driver_53": { + "diff_carry_yd": 0.5, + "diff_total_yd": 15.7, + "diff_apex_ft": -4.5, + "status": "severe", + "error_pattern": "ROLLOUT_TOO_LONG" + }, + "s3_shot_driver_54": { + "diff_carry_yd": -1.8, + "diff_total_yd": -0.7, + "diff_apex_ft": -2.5, + "status": "pass", + "error_pattern": null + }, + "s3_shot_driver_55": { + "diff_carry_yd": 2.0, + "diff_total_yd": 21.7, + "diff_apex_ft": 0.4, + "status": "severe", + "error_pattern": "ROLLOUT_TOO_LONG" + }, + "s3_shot_driver_56": { + "diff_carry_yd": -3.3, + "diff_total_yd": 19.6, + "diff_apex_ft": 9.4, + "status": "severe", + "error_pattern": "CARRY_TOO_SHORT" + }, + "s3_shot_driver_57": { + "diff_carry_yd": -5.8, + "diff_total_yd": -20.4, + "diff_apex_ft": -3.7, + "status": "severe", + "error_pattern": "CARRY_AND_ROLLOUT_SHORT" + }, + "s3_shot_driver_58": { + "diff_carry_yd": 10.0, + "diff_total_yd": 34.0, + "diff_apex_ft": -5.4, + "status": "severe", + "error_pattern": "CARRY_AND_ROLLOUT_LONG" + }, + "s3_shot_driver_59": { + "diff_carry_yd": -1.6, + "diff_total_yd": 14.4, + "diff_apex_ft": -4.2, + "status": "severe", + "error_pattern": "ROLLOUT_TOO_LONG" + }, + "s3_shot_driver_60": { + "diff_carry_yd": -0.6, + "diff_total_yd": -15.4, + "diff_apex_ft": -2.5, + "status": "severe", + "error_pattern": "ROLLOUT_TOO_SHORT" + }, + "s3_shot_pw_64": { + "diff_carry_yd": -0.3, + "diff_total_yd": 9.1, + "diff_apex_ft": -3.8, + "status": "moderate", + "error_pattern": "ROLLOUT_TOO_LONG" + }, + "s3_shot_pw_65": { + "diff_carry_yd": -0.6, + "diff_total_yd": 4.2, + "diff_apex_ft": -4.0, + "status": "pass", + "error_pattern": null + }, + "s3_shot_pw_66": { + "diff_carry_yd": -0.4, + "diff_total_yd": 10.8, + "diff_apex_ft": -3.9, + "status": "severe", + "error_pattern": "ROLLOUT_TOO_LONG" + }, + "s3_shot_pw_67": { + "diff_carry_yd": -0.4, + "diff_total_yd": 5.2, + "diff_apex_ft": -4.1, + "status": "moderate", + "error_pattern": "ROLLOUT_TOO_LONG" + }, + "s3_shot_pw_68": { + "diff_carry_yd": -0.5, + "diff_total_yd": 6.1, + "diff_apex_ft": -6.4, + "status": "moderate", + "error_pattern": "ROLLOUT_TOO_LONG" + }, + "s3_shot_pw_69": { + "diff_carry_yd": -0.4, + "diff_total_yd": 11.6, + "diff_apex_ft": -3.9, + "status": "severe", + "error_pattern": "ROLLOUT_TOO_LONG" + }, + "s4_shot_3w_31": { + "diff_carry_yd": -0.1, + "diff_total_yd": -3.6, + "diff_apex_ft": -3.6, + "status": "pass", + "error_pattern": null + }, + "s4_shot_3w_32": { + "diff_carry_yd": 1.5, + "diff_total_yd": 12.2, + "diff_apex_ft": 1.4, + "status": "severe", + "error_pattern": "ROLLOUT_TOO_LONG" + }, + "s4_shot_3w_33": { + "diff_carry_yd": 5.7, + "diff_total_yd": 13.2, + "diff_apex_ft": -8.2, + "status": "severe", + "error_pattern": "CARRY_AND_ROLLOUT_LONG" + }, + "s4_shot_3w_34": { + "diff_carry_yd": 3.6, + "diff_total_yd": 2.2, + "diff_apex_ft": -2.5, + "status": "moderate", + "error_pattern": "CARRY_TOO_LONG" + }, + "s4_shot_3w_35": { + "diff_carry_yd": 4.5, + "diff_total_yd": 2.8, + "diff_apex_ft": -3.1, + "status": "moderate", + "error_pattern": "CARRY_TOO_LONG" + }, + "s4_shot_5i_25": { + "diff_carry_yd": -2.9, + "diff_total_yd": -7.2, + "diff_apex_ft": -5.5, + "status": "moderate", + "error_pattern": "ROLLOUT_TOO_SHORT" + }, + "s4_shot_5i_26": { + "diff_carry_yd": 3.1, + "diff_total_yd": 5.0, + "diff_apex_ft": 2.9, + "status": "moderate", + "error_pattern": "CARRY_TOO_LONG" + }, + "s4_shot_5i_27": { + "diff_carry_yd": -2.0, + "diff_total_yd": 10.8, + "diff_apex_ft": -0.2, + "status": "severe", + "error_pattern": "ROLLOUT_TOO_LONG" + }, + "s4_shot_5i_28": { + "diff_carry_yd": -0.2, + "diff_total_yd": -6.9, + "diff_apex_ft": 5.0, + "status": "moderate", + "error_pattern": "ROLLOUT_TOO_SHORT" + }, + "s4_shot_5i_29": { + "diff_carry_yd": 6.3, + "diff_total_yd": 13.8, + "diff_apex_ft": 1.0, + "status": "severe", + "error_pattern": "CARRY_AND_ROLLOUT_LONG" + }, + "s4_shot_5i_30": { + "diff_carry_yd": 1.3, + "diff_total_yd": 4.1, + "diff_apex_ft": -7.1, + "status": "pass", + "error_pattern": null + }, + "s4_shot_6i_19": { + "diff_carry_yd": -0.5, + "diff_total_yd": -11.5, + "diff_apex_ft": 0.2, + "status": "severe", + "error_pattern": "ROLLOUT_TOO_SHORT" + }, + "s4_shot_6i_20": { + "diff_carry_yd": -0.1, + "diff_total_yd": 11.4, + "diff_apex_ft": 0.0, + "status": "severe", + "error_pattern": "ROLLOUT_TOO_LONG" + }, + "s4_shot_6i_21": { + "diff_carry_yd": 0.9, + "diff_total_yd": -1.5, + "diff_apex_ft": -6.8, + "status": "pass", + "error_pattern": null + }, + "s4_shot_6i_22": { + "diff_carry_yd": 4.5, + "diff_total_yd": 10.8, + "diff_apex_ft": 0.9, + "status": "severe", + "error_pattern": "CARRY_AND_ROLLOUT_LONG" + }, + "s4_shot_6i_23": { + "diff_carry_yd": null, + "diff_total_yd": null, + "diff_apex_ft": null, + "status": "pass", + "error_pattern": null + }, + "s4_shot_6i_24": { + "diff_carry_yd": null, + "diff_total_yd": null, + "diff_apex_ft": null, + "status": "pass", + "error_pattern": null + }, + "s4_shot_9i_13": { + "diff_carry_yd": null, + "diff_total_yd": null, + "diff_apex_ft": null, + "status": "pass", + "error_pattern": null + }, + "s4_shot_9i_14": { + "diff_carry_yd": -0.1, + "diff_total_yd": 1.2, + "diff_apex_ft": -6.4, + "status": "pass", + "error_pattern": null + }, + "s4_shot_9i_15": { + "diff_carry_yd": -2.9, + "diff_total_yd": 10.8, + "diff_apex_ft": -3.7, + "status": "severe", + "error_pattern": "ROLLOUT_TOO_LONG" + }, + "s4_shot_9i_17": { + "diff_carry_yd": -2.0, + "diff_total_yd": -16.6, + "diff_apex_ft": -0.6, + "status": "severe", + "error_pattern": "ROLLOUT_TOO_SHORT" + }, + "s4_shot_9i_18": { + "diff_carry_yd": -2.8, + "diff_total_yd": 8.7, + "diff_apex_ft": -3.5, + "status": "moderate", + "error_pattern": "ROLLOUT_TOO_LONG" + }, + "s4_shot_lw_38": { + "diff_carry_yd": -5.7, + "diff_total_yd": 2.1, + "diff_apex_ft": -4.0, + "status": "moderate", + "error_pattern": "CARRY_TOO_SHORT" + }, + "s4_shot_pw_1": { + "diff_carry_yd": -7.7, + "diff_total_yd": -14.3, + "diff_apex_ft": -0.3, + "status": "severe", + "error_pattern": "CARRY_AND_ROLLOUT_SHORT" + }, + "s4_shot_pw_10": { + "diff_carry_yd": -2.4, + "diff_total_yd": 0.4, + "diff_apex_ft": -4.2, + "status": "pass", + "error_pattern": null + }, + "s4_shot_pw_11": { + "diff_carry_yd": -2.6, + "diff_total_yd": 0.4, + "diff_apex_ft": -3.8, + "status": "pass", + "error_pattern": null + }, + "s4_shot_pw_2": { + "diff_carry_yd": -4.8, + "diff_total_yd": 4.3, + "diff_apex_ft": -1.6, + "status": "moderate", + "error_pattern": "CARRY_TOO_SHORT" + }, + "s4_shot_pw_3": { + "diff_carry_yd": -6.9, + "diff_total_yd": 3.9, + "diff_apex_ft": -3.9, + "status": "moderate", + "error_pattern": "CARRY_TOO_SHORT" + }, + "s4_shot_pw_47": { + "diff_carry_yd": -3.9, + "diff_total_yd": 4.0, + "diff_apex_ft": -1.2, + "status": "moderate", + "error_pattern": "CARRY_TOO_SHORT" + }, + "s4_shot_pw_48": { + "diff_carry_yd": -4.3, + "diff_total_yd": 2.7, + "diff_apex_ft": -1.3, + "status": "moderate", + "error_pattern": "CARRY_TOO_SHORT" + }, + "s4_shot_pw_49": { + "diff_carry_yd": -6.2, + "diff_total_yd": 4.4, + "diff_apex_ft": -1.9, + "status": "moderate", + "error_pattern": "CARRY_TOO_SHORT" + }, + "s4_shot_pw_6": { + "diff_carry_yd": -8.2, + "diff_total_yd": 7.0, + "diff_apex_ft": -3.6, + "status": "severe", + "error_pattern": "CARRY_TOO_SHORT" + }, + "s4_shot_pw_7": { + "diff_carry_yd": -2.0, + "diff_total_yd": 12.2, + "diff_apex_ft": -3.7, + "status": "severe", + "error_pattern": "ROLLOUT_TOO_LONG" + }, + "s4_shot_pw_9": { + "diff_carry_yd": null, + "diff_total_yd": null, + "diff_apex_ft": null, + "status": "pass", + "error_pattern": null + }, + "topped_test_shot": { + "diff_carry_yd": -0.7, + "diff_total_yd": 13.8, + "diff_apex_ft": -0.1, + "status": "severe", + "error_pattern": "ROLLOUT_TOO_LONG" + }, + "wedge_shot_1": { + "diff_carry_yd": -0.7, + "diff_total_yd": -1.7, + "diff_apex_ft": -2.6, + "status": "pass", + "error_pattern": null + }, + "wedge_shot_2": { + "diff_carry_yd": -0.5, + "diff_total_yd": 2.1, + "diff_apex_ft": -4.4, + "status": "pass", + "error_pattern": null + }, + "wedge_test_shot": { + "diff_carry_yd": -0.3, + "diff_total_yd": 3.2, + "diff_apex_ft": -3.2, + "status": "pass", + "error_pattern": null + }, + "wedge_test_shot2": { + "diff_carry_yd": -0.1, + "diff_total_yd": 2.9, + "diff_apex_ft": -2.0, + "status": "pass", + "error_pattern": null + }, + "wood1": { + "diff_carry_yd": 4.9, + "diff_total_yd": -4.0, + "diff_apex_ft": 3.1, + "status": "moderate", + "error_pattern": "CARRY_TOO_LONG" + }, + "wood2": { + "diff_carry_yd": 3.8, + "diff_total_yd": 0.4, + "diff_apex_ft": -1.8, + "status": "moderate", + "error_pattern": "CARRY_TOO_LONG" + }, + "wood_low_test_shot": { + "diff_carry_yd": 1.3, + "diff_total_yd": 22.0, + "diff_apex_ft": 0.3, + "status": "severe", + "error_pattern": "ROLLOUT_TOO_LONG" + } + }, + "regressions": [], + "conflicts": [ + "Bounce.FlightTangentialRetentionBase", + "Bounce.FlightSpinFactorMin", + "Bounce.FlightSpinFactorDivisor", + "Rollout.MidSpinMultiplierMax", + "Rollout.HighSpinMultiplierMax", + "Rollout.FrictionBlendSpeed", + "KineticFrictionMultiplier", + "Bounce.RolloutHighSpinRetention", + "Rollout.ChipVelocityScaleMin", + "Rollout.ChipVelocityScaleMax", + "Bounce.CorBaseA", + "Rollout.LowSpinMultiplierMax", + "Rollout.LowSpinThreshold", + "RollingFrictionMultiplier", + "Bounce.RolloutLowSpinRetention", + "Flight.ClMaxBase", + "Flight.CdMin", + "DragScaleMultiplier", + "LiftScaleMultiplier" + ] +} diff --git a/assets/data/calibration/history/iteration_046.json b/assets/data/calibration/history/iteration_046.json new file mode 100644 index 0000000..499992e --- /dev/null +++ b/assets/data/calibration/history/iteration_046.json @@ -0,0 +1,987 @@ +{ + "iteration": 46, + "timestamp": "2026-03-14T01:11:03.055483", + "profile_overrides": {}, + "summary": { + "pass": 32, + "moderate": 35, + "severe": 62, + "no_reference": 7 + }, + "per_shot": { + "5iron": { + "diff_carry_yd": 0.8, + "diff_total_yd": 11.3, + "diff_apex_ft": 4.6, + "status": "severe", + "error_pattern": "ROLLOUT_TOO_LONG" + }, + "approach_mid_iron_test_shot": { + "diff_carry_yd": -0.6, + "diff_total_yd": 7.3, + "diff_apex_ft": -5.0, + "status": "moderate", + "error_pattern": "ROLLOUT_TOO_LONG" + }, + "bump_and_run": { + "diff_carry_yd": -0.1, + "diff_total_yd": -27.5, + "diff_apex_ft": -2.1, + "status": "severe", + "error_pattern": "ROLLOUT_TOO_SHORT" + }, + "bump_and_run_slow": { + "diff_carry_yd": null, + "diff_total_yd": null, + "diff_apex_ft": null, + "status": "pass", + "error_pattern": null + }, + "bump_test_shot": { + "diff_carry_yd": 0.0, + "diff_total_yd": 12.7, + "diff_apex_ft": -0.1, + "status": "severe", + "error_pattern": "ROLLOUT_TOO_LONG" + }, + "checked_test_shot": { + "diff_carry_yd": -2.1, + "diff_total_yd": -0.5, + "diff_apex_ft": -9.6, + "status": "pass", + "error_pattern": null + }, + "chip_test_shot": { + "diff_carry_yd": null, + "diff_total_yd": null, + "diff_apex_ft": null, + "status": "pass", + "error_pattern": null + }, + "drive_test_shot": { + "diff_carry_yd": -0.4, + "diff_total_yd": -0.6, + "diff_apex_ft": -1.1, + "status": "pass", + "error_pattern": null + }, + "driver1": { + "diff_carry_yd": -0.3, + "diff_total_yd": -26.3, + "diff_apex_ft": -0.8, + "status": "severe", + "error_pattern": "ROLLOUT_TOO_SHORT" + }, + "driver2": { + "diff_carry_yd": 1.2, + "diff_total_yd": 7.3, + "diff_apex_ft": -3.0, + "status": "moderate", + "error_pattern": "ROLLOUT_TOO_LONG" + }, + "driver3": { + "diff_carry_yd": -1.9, + "diff_total_yd": 20.4, + "diff_apex_ft": 20.6, + "status": "severe", + "error_pattern": "ROLLOUT_TOO_LONG" + }, + "driver4": { + "diff_carry_yd": -0.7, + "diff_total_yd": 15.0, + "diff_apex_ft": 4.1, + "status": "severe", + "error_pattern": "ROLLOUT_TOO_LONG" + }, + "flop_test_shot": { + "diff_carry_yd": -0.2, + "diff_total_yd": 1.6, + "diff_apex_ft": -8.5, + "status": "pass", + "error_pattern": null + }, + "p_wedge_shot_1": { + "diff_carry_yd": -0.5, + "diff_total_yd": 1.7, + "diff_apex_ft": -5.5, + "status": "pass", + "error_pattern": null + }, + "s2_shot_10": { + "diff_carry_yd": -0.6, + "diff_total_yd": 10.2, + "diff_apex_ft": -6.0, + "status": "severe", + "error_pattern": "ROLLOUT_TOO_LONG" + }, + "s2_shot_11": { + "diff_carry_yd": -0.9, + "diff_total_yd": 1.1, + "diff_apex_ft": -4.6, + "status": "pass", + "error_pattern": null + }, + "s2_shot_12": { + "diff_carry_yd": 1.0, + "diff_total_yd": 9.5, + "diff_apex_ft": -5.3, + "status": "moderate", + "error_pattern": "ROLLOUT_TOO_LONG" + }, + "s2_shot_13": { + "diff_carry_yd": -2.3, + "diff_total_yd": 3.2, + "diff_apex_ft": -6.1, + "status": "pass", + "error_pattern": null + }, + "s2_shot_14": { + "diff_carry_yd": -0.3, + "diff_total_yd": 1.7, + "diff_apex_ft": -6.1, + "status": "pass", + "error_pattern": null + }, + "s2_shot_15": { + "diff_carry_yd": -1.0, + "diff_total_yd": -12.7, + "diff_apex_ft": -2.0, + "status": "severe", + "error_pattern": "ROLLOUT_TOO_SHORT" + }, + "s2_shot_16": { + "diff_carry_yd": -0.3, + "diff_total_yd": 2.2, + "diff_apex_ft": -3.5, + "status": "pass", + "error_pattern": null + }, + "s2_shot_17": { + "diff_carry_yd": -1.4, + "diff_total_yd": 8.0, + "diff_apex_ft": -3.9, + "status": "moderate", + "error_pattern": "ROLLOUT_TOO_LONG" + }, + "s2_shot_18": { + "diff_carry_yd": 0.3, + "diff_total_yd": 14.0, + "diff_apex_ft": 2.6, + "status": "severe", + "error_pattern": "ROLLOUT_TOO_LONG" + }, + "s2_shot_19": { + "diff_carry_yd": 2.2, + "diff_total_yd": -6.1, + "diff_apex_ft": -1.2, + "status": "moderate", + "error_pattern": "ROLLOUT_TOO_SHORT" + }, + "s2_shot_20": { + "diff_carry_yd": -1.0, + "diff_total_yd": 11.5, + "diff_apex_ft": -2.0, + "status": "severe", + "error_pattern": "ROLLOUT_TOO_LONG" + }, + "s2_shot_21": { + "diff_carry_yd": 4.9, + "diff_total_yd": 27.7, + "diff_apex_ft": 1.7, + "status": "severe", + "error_pattern": "CARRY_AND_ROLLOUT_LONG" + }, + "s2_shot_22": { + "diff_carry_yd": -1.8, + "diff_total_yd": 1.6, + "diff_apex_ft": -1.6, + "status": "pass", + "error_pattern": null + }, + "s2_shot_23": { + "diff_carry_yd": -3.5, + "diff_total_yd": -19.6, + "diff_apex_ft": 0.0, + "status": "severe", + "error_pattern": "CARRY_AND_ROLLOUT_SHORT" + }, + "s2_shot_24": { + "diff_carry_yd": -1.7, + "diff_total_yd": 3.4, + "diff_apex_ft": -1.9, + "status": "pass", + "error_pattern": null + }, + "s2_shot_26": { + "diff_carry_yd": 1.7, + "diff_total_yd": 20.6, + "diff_apex_ft": 23.5, + "status": "severe", + "error_pattern": "ROLLOUT_TOO_LONG" + }, + "s2_shot_27": { + "diff_carry_yd": -4.4, + "diff_total_yd": 12.8, + "diff_apex_ft": 4.8, + "status": "severe", + "error_pattern": "CARRY_TOO_SHORT" + }, + "s2_shot_9": { + "diff_carry_yd": -3.3, + "diff_total_yd": 1.6, + "diff_apex_ft": 7.1, + "status": "moderate", + "error_pattern": "CARRY_TOO_SHORT" + }, + "s3_shot_3w_18": { + "diff_carry_yd": null, + "diff_total_yd": null, + "diff_apex_ft": null, + "status": "pass", + "error_pattern": null + }, + "s3_shot_3w_19": { + "diff_carry_yd": -0.6, + "diff_total_yd": 16.0, + "diff_apex_ft": 0.1, + "status": "severe", + "error_pattern": "ROLLOUT_TOO_LONG" + }, + "s3_shot_3w_21": { + "diff_carry_yd": 0.6, + "diff_total_yd": 15.9, + "diff_apex_ft": 0.3, + "status": "severe", + "error_pattern": "ROLLOUT_TOO_LONG" + }, + "s3_shot_3w_22": { + "diff_carry_yd": -0.5, + "diff_total_yd": 19.6, + "diff_apex_ft": 0.5, + "status": "severe", + "error_pattern": "ROLLOUT_TOO_LONG" + }, + "s3_shot_3w_23": { + "diff_carry_yd": 0.1, + "diff_total_yd": -23.3, + "diff_apex_ft": -1.3, + "status": "severe", + "error_pattern": "ROLLOUT_TOO_SHORT" + }, + "s3_shot_3w_24": { + "diff_carry_yd": 2.9, + "diff_total_yd": 28.4, + "diff_apex_ft": 1.8, + "status": "severe", + "error_pattern": "ROLLOUT_TOO_LONG" + }, + "s3_shot_5i_10": { + "diff_carry_yd": -0.5, + "diff_total_yd": -7.6, + "diff_apex_ft": 5.8, + "status": "moderate", + "error_pattern": "ROLLOUT_TOO_SHORT" + }, + "s3_shot_5i_11": { + "diff_carry_yd": -0.5, + "diff_total_yd": -17.6, + "diff_apex_ft": -1.3, + "status": "severe", + "error_pattern": "ROLLOUT_TOO_SHORT" + }, + "s3_shot_5i_12": { + "diff_carry_yd": 1.1, + "diff_total_yd": -23.5, + "diff_apex_ft": 1.1, + "status": "severe", + "error_pattern": "ROLLOUT_TOO_SHORT" + }, + "s3_shot_5i_13": { + "diff_carry_yd": -0.3, + "diff_total_yd": 10.1, + "diff_apex_ft": 0.6, + "status": "severe", + "error_pattern": "ROLLOUT_TOO_LONG" + }, + "s3_shot_5i_15": { + "diff_carry_yd": -0.1, + "diff_total_yd": 14.5, + "diff_apex_ft": -1.1, + "status": "severe", + "error_pattern": "ROLLOUT_TOO_LONG" + }, + "s3_shot_5i_16": { + "diff_carry_yd": 0.9, + "diff_total_yd": -21.0, + "diff_apex_ft": -0.2, + "status": "severe", + "error_pattern": "ROLLOUT_TOO_SHORT" + }, + "s3_shot_5i_17": { + "diff_carry_yd": -0.2, + "diff_total_yd": -1.7, + "diff_apex_ft": -0.3, + "status": "pass", + "error_pattern": null + }, + "s3_shot_6i_35": { + "diff_carry_yd": -0.4, + "diff_total_yd": -17.0, + "diff_apex_ft": -3.4, + "status": "severe", + "error_pattern": "ROLLOUT_TOO_SHORT" + }, + "s3_shot_6i_36": { + "diff_carry_yd": 1.7, + "diff_total_yd": -21.1, + "diff_apex_ft": 0.6, + "status": "severe", + "error_pattern": "ROLLOUT_TOO_SHORT" + }, + "s3_shot_6i_37": { + "diff_carry_yd": -0.1, + "diff_total_yd": 11.9, + "diff_apex_ft": -0.9, + "status": "severe", + "error_pattern": "ROLLOUT_TOO_LONG" + }, + "s3_shot_6i_38": { + "diff_carry_yd": -0.4, + "diff_total_yd": -21.7, + "diff_apex_ft": 0.1, + "status": "severe", + "error_pattern": "ROLLOUT_TOO_SHORT" + }, + "s3_shot_6i_39": { + "diff_carry_yd": -0.5, + "diff_total_yd": 6.4, + "diff_apex_ft": 0.0, + "status": "moderate", + "error_pattern": "ROLLOUT_TOO_LONG" + }, + "s3_shot_6i_40": { + "diff_carry_yd": -1.3, + "diff_total_yd": 7.7, + "diff_apex_ft": 0.1, + "status": "moderate", + "error_pattern": "ROLLOUT_TOO_LONG" + }, + "s3_shot_6i_41": { + "diff_carry_yd": -0.1, + "diff_total_yd": 12.9, + "diff_apex_ft": -1.0, + "status": "severe", + "error_pattern": "ROLLOUT_TOO_LONG" + }, + "s3_shot_6i_42": { + "diff_carry_yd": -1.4, + "diff_total_yd": -17.8, + "diff_apex_ft": 0.7, + "status": "severe", + "error_pattern": "ROLLOUT_TOO_SHORT" + }, + "s3_shot_6i_43": { + "diff_carry_yd": 1.6, + "diff_total_yd": -0.2, + "diff_apex_ft": 7.8, + "status": "pass", + "error_pattern": null + }, + "s3_shot_6i_44": { + "diff_carry_yd": -1.8, + "diff_total_yd": -28.0, + "diff_apex_ft": -1.4, + "status": "severe", + "error_pattern": "ROLLOUT_TOO_SHORT" + }, + "s3_shot_6i_45": { + "diff_carry_yd": -0.5, + "diff_total_yd": 20.4, + "diff_apex_ft": 0.5, + "status": "severe", + "error_pattern": "ROLLOUT_TOO_LONG" + }, + "s3_shot_6i_46": { + "diff_carry_yd": 3.1, + "diff_total_yd": -4.2, + "diff_apex_ft": -1.7, + "status": "moderate", + "error_pattern": "CARRY_TOO_LONG" + }, + "s3_shot_6i_47": { + "diff_carry_yd": 2.1, + "diff_total_yd": 8.3, + "diff_apex_ft": 11.4, + "status": "moderate", + "error_pattern": "ROLLOUT_TOO_LONG" + }, + "s3_shot_6i_48": { + "diff_carry_yd": 1.3, + "diff_total_yd": 8.8, + "diff_apex_ft": 13.8, + "status": "moderate", + "error_pattern": "ROLLOUT_TOO_LONG" + }, + "s3_shot_6i_49": { + "diff_carry_yd": 0.0, + "diff_total_yd": 6.9, + "diff_apex_ft": -0.3, + "status": "moderate", + "error_pattern": "ROLLOUT_TOO_LONG" + }, + "s3_shot_6i_50": { + "diff_carry_yd": -0.9, + "diff_total_yd": -12.5, + "diff_apex_ft": 3.8, + "status": "severe", + "error_pattern": "ROLLOUT_TOO_SHORT" + }, + "s3_shot_7i_25": { + "diff_carry_yd": -0.9, + "diff_total_yd": -18.4, + "diff_apex_ft": 0.9, + "status": "severe", + "error_pattern": "ROLLOUT_TOO_SHORT" + }, + "s3_shot_7i_26": { + "diff_carry_yd": 1.5, + "diff_total_yd": -22.1, + "diff_apex_ft": 1.1, + "status": "severe", + "error_pattern": "ROLLOUT_TOO_SHORT" + }, + "s3_shot_7i_27": { + "diff_carry_yd": -2.8, + "diff_total_yd": 4.7, + "diff_apex_ft": 7.7, + "status": "pass", + "error_pattern": null + }, + "s3_shot_7i_28": { + "diff_carry_yd": -3.5, + "diff_total_yd": 1.5, + "diff_apex_ft": 8.1, + "status": "moderate", + "error_pattern": "CARRY_TOO_SHORT" + }, + "s3_shot_7i_29": { + "diff_carry_yd": 0.1, + "diff_total_yd": -6.6, + "diff_apex_ft": -3.6, + "status": "moderate", + "error_pattern": "ROLLOUT_TOO_SHORT" + }, + "s3_shot_7i_30": { + "diff_carry_yd": -4.7, + "diff_total_yd": 1.0, + "diff_apex_ft": 5.3, + "status": "moderate", + "error_pattern": "CARRY_TOO_SHORT" + }, + "s3_shot_7i_31": { + "diff_carry_yd": -0.4, + "diff_total_yd": -14.7, + "diff_apex_ft": -4.2, + "status": "severe", + "error_pattern": "ROLLOUT_TOO_SHORT" + }, + "s3_shot_7i_32": { + "diff_carry_yd": -2.4, + "diff_total_yd": -2.8, + "diff_apex_ft": 3.0, + "status": "pass", + "error_pattern": null + }, + "s3_shot_7i_33": { + "diff_carry_yd": -2.2, + "diff_total_yd": -1.9, + "diff_apex_ft": 4.5, + "status": "pass", + "error_pattern": null + }, + "s3_shot_7i_34": { + "diff_carry_yd": -0.4, + "diff_total_yd": 2.0, + "diff_apex_ft": 3.0, + "status": "pass", + "error_pattern": null + }, + "s3_shot_9i_1": { + "diff_carry_yd": -0.5, + "diff_total_yd": -13.0, + "diff_apex_ft": 1.2, + "status": "severe", + "error_pattern": "ROLLOUT_TOO_SHORT" + }, + "s3_shot_9i_2": { + "diff_carry_yd": -0.2, + "diff_total_yd": -9.2, + "diff_apex_ft": -3.1, + "status": "moderate", + "error_pattern": "ROLLOUT_TOO_SHORT" + }, + "s3_shot_9i_3": { + "diff_carry_yd": -1.9, + "diff_total_yd": 1.4, + "diff_apex_ft": -5.4, + "status": "pass", + "error_pattern": null + }, + "s3_shot_9i_5": { + "diff_carry_yd": -0.4, + "diff_total_yd": -5.9, + "diff_apex_ft": -5.5, + "status": "moderate", + "error_pattern": "ROLLOUT_TOO_SHORT" + }, + "s3_shot_9i_7": { + "diff_carry_yd": 0.6, + "diff_total_yd": 1.1, + "diff_apex_ft": -4.3, + "status": "pass", + "error_pattern": null + }, + "s3_shot_9i_8": { + "diff_carry_yd": -2.3, + "diff_total_yd": 4.7, + "diff_apex_ft": -1.8, + "status": "pass", + "error_pattern": null + }, + "s3_shot_9i_9": { + "diff_carry_yd": -1.8, + "diff_total_yd": 2.3, + "diff_apex_ft": -6.3, + "status": "pass", + "error_pattern": null + }, + "s3_shot_driver_51": { + "diff_carry_yd": 3.4, + "diff_total_yd": 28.4, + "diff_apex_ft": 0.0, + "status": "severe", + "error_pattern": "CARRY_AND_ROLLOUT_LONG" + }, + "s3_shot_driver_52": { + "diff_carry_yd": 4.2, + "diff_total_yd": 23.9, + "diff_apex_ft": -2.0, + "status": "severe", + "error_pattern": "CARRY_AND_ROLLOUT_LONG" + }, + "s3_shot_driver_53": { + "diff_carry_yd": 0.5, + "diff_total_yd": 15.7, + "diff_apex_ft": -4.5, + "status": "severe", + "error_pattern": "ROLLOUT_TOO_LONG" + }, + "s3_shot_driver_54": { + "diff_carry_yd": -1.8, + "diff_total_yd": -0.7, + "diff_apex_ft": -2.5, + "status": "pass", + "error_pattern": null + }, + "s3_shot_driver_55": { + "diff_carry_yd": 2.0, + "diff_total_yd": 21.7, + "diff_apex_ft": 0.4, + "status": "severe", + "error_pattern": "ROLLOUT_TOO_LONG" + }, + "s3_shot_driver_56": { + "diff_carry_yd": -3.3, + "diff_total_yd": 19.6, + "diff_apex_ft": 9.4, + "status": "severe", + "error_pattern": "CARRY_TOO_SHORT" + }, + "s3_shot_driver_57": { + "diff_carry_yd": -5.8, + "diff_total_yd": -20.4, + "diff_apex_ft": -3.7, + "status": "severe", + "error_pattern": "CARRY_AND_ROLLOUT_SHORT" + }, + "s3_shot_driver_58": { + "diff_carry_yd": 10.0, + "diff_total_yd": 34.0, + "diff_apex_ft": -5.4, + "status": "severe", + "error_pattern": "CARRY_AND_ROLLOUT_LONG" + }, + "s3_shot_driver_59": { + "diff_carry_yd": -1.6, + "diff_total_yd": 14.4, + "diff_apex_ft": -4.2, + "status": "severe", + "error_pattern": "ROLLOUT_TOO_LONG" + }, + "s3_shot_driver_60": { + "diff_carry_yd": -0.6, + "diff_total_yd": -15.4, + "diff_apex_ft": -2.5, + "status": "severe", + "error_pattern": "ROLLOUT_TOO_SHORT" + }, + "s3_shot_pw_64": { + "diff_carry_yd": -0.3, + "diff_total_yd": 9.1, + "diff_apex_ft": -3.8, + "status": "moderate", + "error_pattern": "ROLLOUT_TOO_LONG" + }, + "s3_shot_pw_65": { + "diff_carry_yd": -0.6, + "diff_total_yd": 4.2, + "diff_apex_ft": -4.0, + "status": "pass", + "error_pattern": null + }, + "s3_shot_pw_66": { + "diff_carry_yd": -0.4, + "diff_total_yd": 10.8, + "diff_apex_ft": -3.9, + "status": "severe", + "error_pattern": "ROLLOUT_TOO_LONG" + }, + "s3_shot_pw_67": { + "diff_carry_yd": -0.4, + "diff_total_yd": 5.2, + "diff_apex_ft": -4.1, + "status": "moderate", + "error_pattern": "ROLLOUT_TOO_LONG" + }, + "s3_shot_pw_68": { + "diff_carry_yd": -0.5, + "diff_total_yd": 6.1, + "diff_apex_ft": -6.4, + "status": "moderate", + "error_pattern": "ROLLOUT_TOO_LONG" + }, + "s3_shot_pw_69": { + "diff_carry_yd": -0.4, + "diff_total_yd": 11.6, + "diff_apex_ft": -3.9, + "status": "severe", + "error_pattern": "ROLLOUT_TOO_LONG" + }, + "s4_shot_3w_31": { + "diff_carry_yd": -0.1, + "diff_total_yd": -3.6, + "diff_apex_ft": -3.6, + "status": "pass", + "error_pattern": null + }, + "s4_shot_3w_32": { + "diff_carry_yd": 1.5, + "diff_total_yd": 12.2, + "diff_apex_ft": 1.4, + "status": "severe", + "error_pattern": "ROLLOUT_TOO_LONG" + }, + "s4_shot_3w_33": { + "diff_carry_yd": 5.7, + "diff_total_yd": 13.2, + "diff_apex_ft": -8.2, + "status": "severe", + "error_pattern": "CARRY_AND_ROLLOUT_LONG" + }, + "s4_shot_3w_34": { + "diff_carry_yd": 3.6, + "diff_total_yd": 2.2, + "diff_apex_ft": -2.5, + "status": "moderate", + "error_pattern": "CARRY_TOO_LONG" + }, + "s4_shot_3w_35": { + "diff_carry_yd": 4.5, + "diff_total_yd": 2.8, + "diff_apex_ft": -3.1, + "status": "moderate", + "error_pattern": "CARRY_TOO_LONG" + }, + "s4_shot_5i_25": { + "diff_carry_yd": -2.9, + "diff_total_yd": -7.2, + "diff_apex_ft": -5.5, + "status": "moderate", + "error_pattern": "ROLLOUT_TOO_SHORT" + }, + "s4_shot_5i_26": { + "diff_carry_yd": 3.1, + "diff_total_yd": 5.0, + "diff_apex_ft": 2.9, + "status": "moderate", + "error_pattern": "CARRY_TOO_LONG" + }, + "s4_shot_5i_27": { + "diff_carry_yd": -2.0, + "diff_total_yd": 10.8, + "diff_apex_ft": -0.2, + "status": "severe", + "error_pattern": "ROLLOUT_TOO_LONG" + }, + "s4_shot_5i_28": { + "diff_carry_yd": -0.2, + "diff_total_yd": -6.9, + "diff_apex_ft": 5.0, + "status": "moderate", + "error_pattern": "ROLLOUT_TOO_SHORT" + }, + "s4_shot_5i_29": { + "diff_carry_yd": 6.3, + "diff_total_yd": 13.8, + "diff_apex_ft": 1.0, + "status": "severe", + "error_pattern": "CARRY_AND_ROLLOUT_LONG" + }, + "s4_shot_5i_30": { + "diff_carry_yd": 1.3, + "diff_total_yd": 4.1, + "diff_apex_ft": -7.1, + "status": "pass", + "error_pattern": null + }, + "s4_shot_6i_19": { + "diff_carry_yd": -0.5, + "diff_total_yd": -11.5, + "diff_apex_ft": 0.2, + "status": "severe", + "error_pattern": "ROLLOUT_TOO_SHORT" + }, + "s4_shot_6i_20": { + "diff_carry_yd": -0.1, + "diff_total_yd": 11.4, + "diff_apex_ft": 0.0, + "status": "severe", + "error_pattern": "ROLLOUT_TOO_LONG" + }, + "s4_shot_6i_21": { + "diff_carry_yd": 0.9, + "diff_total_yd": -1.5, + "diff_apex_ft": -6.8, + "status": "pass", + "error_pattern": null + }, + "s4_shot_6i_22": { + "diff_carry_yd": 4.5, + "diff_total_yd": 10.8, + "diff_apex_ft": 0.9, + "status": "severe", + "error_pattern": "CARRY_AND_ROLLOUT_LONG" + }, + "s4_shot_6i_23": { + "diff_carry_yd": null, + "diff_total_yd": null, + "diff_apex_ft": null, + "status": "pass", + "error_pattern": null + }, + "s4_shot_6i_24": { + "diff_carry_yd": null, + "diff_total_yd": null, + "diff_apex_ft": null, + "status": "pass", + "error_pattern": null + }, + "s4_shot_9i_13": { + "diff_carry_yd": null, + "diff_total_yd": null, + "diff_apex_ft": null, + "status": "pass", + "error_pattern": null + }, + "s4_shot_9i_14": { + "diff_carry_yd": -0.1, + "diff_total_yd": 1.2, + "diff_apex_ft": -6.4, + "status": "pass", + "error_pattern": null + }, + "s4_shot_9i_15": { + "diff_carry_yd": -2.9, + "diff_total_yd": 10.8, + "diff_apex_ft": -3.7, + "status": "severe", + "error_pattern": "ROLLOUT_TOO_LONG" + }, + "s4_shot_9i_17": { + "diff_carry_yd": -2.0, + "diff_total_yd": -16.6, + "diff_apex_ft": -0.6, + "status": "severe", + "error_pattern": "ROLLOUT_TOO_SHORT" + }, + "s4_shot_9i_18": { + "diff_carry_yd": -2.8, + "diff_total_yd": 8.7, + "diff_apex_ft": -3.5, + "status": "moderate", + "error_pattern": "ROLLOUT_TOO_LONG" + }, + "s4_shot_lw_38": { + "diff_carry_yd": -5.7, + "diff_total_yd": 2.1, + "diff_apex_ft": -4.0, + "status": "moderate", + "error_pattern": "CARRY_TOO_SHORT" + }, + "s4_shot_pw_1": { + "diff_carry_yd": -7.7, + "diff_total_yd": -14.3, + "diff_apex_ft": -0.3, + "status": "severe", + "error_pattern": "CARRY_AND_ROLLOUT_SHORT" + }, + "s4_shot_pw_10": { + "diff_carry_yd": -2.4, + "diff_total_yd": 0.4, + "diff_apex_ft": -4.2, + "status": "pass", + "error_pattern": null + }, + "s4_shot_pw_11": { + "diff_carry_yd": -2.6, + "diff_total_yd": 0.4, + "diff_apex_ft": -3.8, + "status": "pass", + "error_pattern": null + }, + "s4_shot_pw_2": { + "diff_carry_yd": -4.8, + "diff_total_yd": 4.3, + "diff_apex_ft": -1.6, + "status": "moderate", + "error_pattern": "CARRY_TOO_SHORT" + }, + "s4_shot_pw_3": { + "diff_carry_yd": -6.9, + "diff_total_yd": 3.9, + "diff_apex_ft": -3.9, + "status": "moderate", + "error_pattern": "CARRY_TOO_SHORT" + }, + "s4_shot_pw_47": { + "diff_carry_yd": -3.9, + "diff_total_yd": 4.0, + "diff_apex_ft": -1.2, + "status": "moderate", + "error_pattern": "CARRY_TOO_SHORT" + }, + "s4_shot_pw_48": { + "diff_carry_yd": -4.3, + "diff_total_yd": 2.7, + "diff_apex_ft": -1.3, + "status": "moderate", + "error_pattern": "CARRY_TOO_SHORT" + }, + "s4_shot_pw_49": { + "diff_carry_yd": -6.2, + "diff_total_yd": 4.4, + "diff_apex_ft": -1.9, + "status": "moderate", + "error_pattern": "CARRY_TOO_SHORT" + }, + "s4_shot_pw_6": { + "diff_carry_yd": -8.2, + "diff_total_yd": 7.0, + "diff_apex_ft": -3.6, + "status": "severe", + "error_pattern": "CARRY_TOO_SHORT" + }, + "s4_shot_pw_7": { + "diff_carry_yd": -2.0, + "diff_total_yd": 12.2, + "diff_apex_ft": -3.7, + "status": "severe", + "error_pattern": "ROLLOUT_TOO_LONG" + }, + "s4_shot_pw_9": { + "diff_carry_yd": null, + "diff_total_yd": null, + "diff_apex_ft": null, + "status": "pass", + "error_pattern": null + }, + "topped_test_shot": { + "diff_carry_yd": -0.7, + "diff_total_yd": 13.8, + "diff_apex_ft": -0.1, + "status": "severe", + "error_pattern": "ROLLOUT_TOO_LONG" + }, + "wedge_shot_1": { + "diff_carry_yd": -0.7, + "diff_total_yd": -1.7, + "diff_apex_ft": -2.6, + "status": "pass", + "error_pattern": null + }, + "wedge_shot_2": { + "diff_carry_yd": -0.5, + "diff_total_yd": 2.1, + "diff_apex_ft": -4.4, + "status": "pass", + "error_pattern": null + }, + "wedge_test_shot": { + "diff_carry_yd": -0.3, + "diff_total_yd": 3.2, + "diff_apex_ft": -3.2, + "status": "pass", + "error_pattern": null + }, + "wedge_test_shot2": { + "diff_carry_yd": -0.1, + "diff_total_yd": 2.9, + "diff_apex_ft": -2.0, + "status": "pass", + "error_pattern": null + }, + "wood1": { + "diff_carry_yd": 4.9, + "diff_total_yd": -4.0, + "diff_apex_ft": 3.1, + "status": "moderate", + "error_pattern": "CARRY_TOO_LONG" + }, + "wood2": { + "diff_carry_yd": 3.8, + "diff_total_yd": 0.4, + "diff_apex_ft": -1.8, + "status": "moderate", + "error_pattern": "CARRY_TOO_LONG" + }, + "wood_low_test_shot": { + "diff_carry_yd": 1.3, + "diff_total_yd": 22.0, + "diff_apex_ft": 0.3, + "status": "severe", + "error_pattern": "ROLLOUT_TOO_LONG" + } + }, + "regressions": [], + "conflicts": [ + "Bounce.FlightTangentialRetentionBase", + "Bounce.FlightSpinFactorMin", + "Bounce.FlightSpinFactorDivisor", + "Rollout.MidSpinMultiplierMax", + "Rollout.HighSpinMultiplierMax", + "Rollout.FrictionBlendSpeed", + "KineticFrictionMultiplier", + "Bounce.RolloutHighSpinRetention", + "Rollout.ChipVelocityScaleMin", + "Rollout.ChipVelocityScaleMax", + "Bounce.CorBaseA", + "Rollout.LowSpinMultiplierMax", + "Rollout.LowSpinThreshold", + "RollingFrictionMultiplier", + "Bounce.RolloutLowSpinRetention", + "Flight.ClMaxBase", + "Flight.CdMin", + "DragScaleMultiplier", + "LiftScaleMultiplier" + ] +} diff --git a/assets/data/calibration/history/iteration_047.json b/assets/data/calibration/history/iteration_047.json new file mode 100644 index 0000000..5c03532 --- /dev/null +++ b/assets/data/calibration/history/iteration_047.json @@ -0,0 +1,987 @@ +{ + "iteration": 47, + "timestamp": "2026-03-14T01:11:24.344679", + "profile_overrides": {}, + "summary": { + "pass": 32, + "moderate": 35, + "severe": 62, + "no_reference": 7 + }, + "per_shot": { + "5iron": { + "diff_carry_yd": 0.8, + "diff_total_yd": 11.3, + "diff_apex_ft": 4.6, + "status": "severe", + "error_pattern": "ROLLOUT_TOO_LONG" + }, + "approach_mid_iron_test_shot": { + "diff_carry_yd": -0.6, + "diff_total_yd": 7.3, + "diff_apex_ft": -5.0, + "status": "moderate", + "error_pattern": "ROLLOUT_TOO_LONG" + }, + "bump_and_run": { + "diff_carry_yd": -0.1, + "diff_total_yd": -27.5, + "diff_apex_ft": -2.1, + "status": "severe", + "error_pattern": "ROLLOUT_TOO_SHORT" + }, + "bump_and_run_slow": { + "diff_carry_yd": null, + "diff_total_yd": null, + "diff_apex_ft": null, + "status": "pass", + "error_pattern": null + }, + "bump_test_shot": { + "diff_carry_yd": 0.0, + "diff_total_yd": 12.7, + "diff_apex_ft": -0.1, + "status": "severe", + "error_pattern": "ROLLOUT_TOO_LONG" + }, + "checked_test_shot": { + "diff_carry_yd": -2.1, + "diff_total_yd": -0.5, + "diff_apex_ft": -9.6, + "status": "pass", + "error_pattern": null + }, + "chip_test_shot": { + "diff_carry_yd": null, + "diff_total_yd": null, + "diff_apex_ft": null, + "status": "pass", + "error_pattern": null + }, + "drive_test_shot": { + "diff_carry_yd": -0.4, + "diff_total_yd": -0.6, + "diff_apex_ft": -1.1, + "status": "pass", + "error_pattern": null + }, + "driver1": { + "diff_carry_yd": -0.3, + "diff_total_yd": -26.3, + "diff_apex_ft": -0.8, + "status": "severe", + "error_pattern": "ROLLOUT_TOO_SHORT" + }, + "driver2": { + "diff_carry_yd": 1.2, + "diff_total_yd": 7.3, + "diff_apex_ft": -3.0, + "status": "moderate", + "error_pattern": "ROLLOUT_TOO_LONG" + }, + "driver3": { + "diff_carry_yd": -1.9, + "diff_total_yd": 20.4, + "diff_apex_ft": 20.6, + "status": "severe", + "error_pattern": "ROLLOUT_TOO_LONG" + }, + "driver4": { + "diff_carry_yd": -0.7, + "diff_total_yd": 15.0, + "diff_apex_ft": 4.1, + "status": "severe", + "error_pattern": "ROLLOUT_TOO_LONG" + }, + "flop_test_shot": { + "diff_carry_yd": -0.2, + "diff_total_yd": 1.6, + "diff_apex_ft": -8.5, + "status": "pass", + "error_pattern": null + }, + "p_wedge_shot_1": { + "diff_carry_yd": -0.5, + "diff_total_yd": 1.7, + "diff_apex_ft": -5.5, + "status": "pass", + "error_pattern": null + }, + "s2_shot_10": { + "diff_carry_yd": -0.6, + "diff_total_yd": 10.2, + "diff_apex_ft": -6.0, + "status": "severe", + "error_pattern": "ROLLOUT_TOO_LONG" + }, + "s2_shot_11": { + "diff_carry_yd": -0.9, + "diff_total_yd": 1.1, + "diff_apex_ft": -4.6, + "status": "pass", + "error_pattern": null + }, + "s2_shot_12": { + "diff_carry_yd": 1.0, + "diff_total_yd": 9.5, + "diff_apex_ft": -5.3, + "status": "moderate", + "error_pattern": "ROLLOUT_TOO_LONG" + }, + "s2_shot_13": { + "diff_carry_yd": -2.3, + "diff_total_yd": 3.2, + "diff_apex_ft": -6.1, + "status": "pass", + "error_pattern": null + }, + "s2_shot_14": { + "diff_carry_yd": -0.3, + "diff_total_yd": 1.7, + "diff_apex_ft": -6.1, + "status": "pass", + "error_pattern": null + }, + "s2_shot_15": { + "diff_carry_yd": -1.0, + "diff_total_yd": -12.7, + "diff_apex_ft": -2.0, + "status": "severe", + "error_pattern": "ROLLOUT_TOO_SHORT" + }, + "s2_shot_16": { + "diff_carry_yd": -0.3, + "diff_total_yd": 2.2, + "diff_apex_ft": -3.5, + "status": "pass", + "error_pattern": null + }, + "s2_shot_17": { + "diff_carry_yd": -1.4, + "diff_total_yd": 8.0, + "diff_apex_ft": -3.9, + "status": "moderate", + "error_pattern": "ROLLOUT_TOO_LONG" + }, + "s2_shot_18": { + "diff_carry_yd": 0.3, + "diff_total_yd": 14.0, + "diff_apex_ft": 2.6, + "status": "severe", + "error_pattern": "ROLLOUT_TOO_LONG" + }, + "s2_shot_19": { + "diff_carry_yd": 2.2, + "diff_total_yd": -6.1, + "diff_apex_ft": -1.2, + "status": "moderate", + "error_pattern": "ROLLOUT_TOO_SHORT" + }, + "s2_shot_20": { + "diff_carry_yd": -1.0, + "diff_total_yd": 11.5, + "diff_apex_ft": -2.0, + "status": "severe", + "error_pattern": "ROLLOUT_TOO_LONG" + }, + "s2_shot_21": { + "diff_carry_yd": 4.9, + "diff_total_yd": 27.7, + "diff_apex_ft": 1.7, + "status": "severe", + "error_pattern": "CARRY_AND_ROLLOUT_LONG" + }, + "s2_shot_22": { + "diff_carry_yd": -1.8, + "diff_total_yd": 1.6, + "diff_apex_ft": -1.6, + "status": "pass", + "error_pattern": null + }, + "s2_shot_23": { + "diff_carry_yd": -3.5, + "diff_total_yd": -19.6, + "diff_apex_ft": 0.0, + "status": "severe", + "error_pattern": "CARRY_AND_ROLLOUT_SHORT" + }, + "s2_shot_24": { + "diff_carry_yd": -1.7, + "diff_total_yd": 3.4, + "diff_apex_ft": -1.9, + "status": "pass", + "error_pattern": null + }, + "s2_shot_26": { + "diff_carry_yd": 1.7, + "diff_total_yd": 20.6, + "diff_apex_ft": 23.5, + "status": "severe", + "error_pattern": "ROLLOUT_TOO_LONG" + }, + "s2_shot_27": { + "diff_carry_yd": -4.4, + "diff_total_yd": 12.8, + "diff_apex_ft": 4.8, + "status": "severe", + "error_pattern": "CARRY_TOO_SHORT" + }, + "s2_shot_9": { + "diff_carry_yd": -3.3, + "diff_total_yd": 1.6, + "diff_apex_ft": 7.1, + "status": "moderate", + "error_pattern": "CARRY_TOO_SHORT" + }, + "s3_shot_3w_18": { + "diff_carry_yd": null, + "diff_total_yd": null, + "diff_apex_ft": null, + "status": "pass", + "error_pattern": null + }, + "s3_shot_3w_19": { + "diff_carry_yd": -0.6, + "diff_total_yd": 16.0, + "diff_apex_ft": 0.1, + "status": "severe", + "error_pattern": "ROLLOUT_TOO_LONG" + }, + "s3_shot_3w_21": { + "diff_carry_yd": 0.6, + "diff_total_yd": 15.9, + "diff_apex_ft": 0.3, + "status": "severe", + "error_pattern": "ROLLOUT_TOO_LONG" + }, + "s3_shot_3w_22": { + "diff_carry_yd": -0.5, + "diff_total_yd": 19.6, + "diff_apex_ft": 0.5, + "status": "severe", + "error_pattern": "ROLLOUT_TOO_LONG" + }, + "s3_shot_3w_23": { + "diff_carry_yd": 0.1, + "diff_total_yd": -23.3, + "diff_apex_ft": -1.3, + "status": "severe", + "error_pattern": "ROLLOUT_TOO_SHORT" + }, + "s3_shot_3w_24": { + "diff_carry_yd": 2.9, + "diff_total_yd": 28.4, + "diff_apex_ft": 1.8, + "status": "severe", + "error_pattern": "ROLLOUT_TOO_LONG" + }, + "s3_shot_5i_10": { + "diff_carry_yd": -0.5, + "diff_total_yd": -7.6, + "diff_apex_ft": 5.8, + "status": "moderate", + "error_pattern": "ROLLOUT_TOO_SHORT" + }, + "s3_shot_5i_11": { + "diff_carry_yd": -0.5, + "diff_total_yd": -17.6, + "diff_apex_ft": -1.3, + "status": "severe", + "error_pattern": "ROLLOUT_TOO_SHORT" + }, + "s3_shot_5i_12": { + "diff_carry_yd": 1.1, + "diff_total_yd": -23.5, + "diff_apex_ft": 1.1, + "status": "severe", + "error_pattern": "ROLLOUT_TOO_SHORT" + }, + "s3_shot_5i_13": { + "diff_carry_yd": -0.3, + "diff_total_yd": 10.1, + "diff_apex_ft": 0.6, + "status": "severe", + "error_pattern": "ROLLOUT_TOO_LONG" + }, + "s3_shot_5i_15": { + "diff_carry_yd": -0.1, + "diff_total_yd": 14.5, + "diff_apex_ft": -1.1, + "status": "severe", + "error_pattern": "ROLLOUT_TOO_LONG" + }, + "s3_shot_5i_16": { + "diff_carry_yd": 0.9, + "diff_total_yd": -21.0, + "diff_apex_ft": -0.2, + "status": "severe", + "error_pattern": "ROLLOUT_TOO_SHORT" + }, + "s3_shot_5i_17": { + "diff_carry_yd": -0.2, + "diff_total_yd": -1.7, + "diff_apex_ft": -0.3, + "status": "pass", + "error_pattern": null + }, + "s3_shot_6i_35": { + "diff_carry_yd": -0.4, + "diff_total_yd": -17.0, + "diff_apex_ft": -3.4, + "status": "severe", + "error_pattern": "ROLLOUT_TOO_SHORT" + }, + "s3_shot_6i_36": { + "diff_carry_yd": 1.7, + "diff_total_yd": -21.1, + "diff_apex_ft": 0.6, + "status": "severe", + "error_pattern": "ROLLOUT_TOO_SHORT" + }, + "s3_shot_6i_37": { + "diff_carry_yd": -0.1, + "diff_total_yd": 11.9, + "diff_apex_ft": -0.9, + "status": "severe", + "error_pattern": "ROLLOUT_TOO_LONG" + }, + "s3_shot_6i_38": { + "diff_carry_yd": -0.4, + "diff_total_yd": -21.7, + "diff_apex_ft": 0.1, + "status": "severe", + "error_pattern": "ROLLOUT_TOO_SHORT" + }, + "s3_shot_6i_39": { + "diff_carry_yd": -0.5, + "diff_total_yd": 6.4, + "diff_apex_ft": 0.0, + "status": "moderate", + "error_pattern": "ROLLOUT_TOO_LONG" + }, + "s3_shot_6i_40": { + "diff_carry_yd": -1.3, + "diff_total_yd": 7.7, + "diff_apex_ft": 0.1, + "status": "moderate", + "error_pattern": "ROLLOUT_TOO_LONG" + }, + "s3_shot_6i_41": { + "diff_carry_yd": -0.1, + "diff_total_yd": 12.9, + "diff_apex_ft": -1.0, + "status": "severe", + "error_pattern": "ROLLOUT_TOO_LONG" + }, + "s3_shot_6i_42": { + "diff_carry_yd": -1.4, + "diff_total_yd": -17.8, + "diff_apex_ft": 0.7, + "status": "severe", + "error_pattern": "ROLLOUT_TOO_SHORT" + }, + "s3_shot_6i_43": { + "diff_carry_yd": 1.6, + "diff_total_yd": -0.2, + "diff_apex_ft": 7.8, + "status": "pass", + "error_pattern": null + }, + "s3_shot_6i_44": { + "diff_carry_yd": -1.8, + "diff_total_yd": -28.0, + "diff_apex_ft": -1.4, + "status": "severe", + "error_pattern": "ROLLOUT_TOO_SHORT" + }, + "s3_shot_6i_45": { + "diff_carry_yd": -0.5, + "diff_total_yd": 20.4, + "diff_apex_ft": 0.5, + "status": "severe", + "error_pattern": "ROLLOUT_TOO_LONG" + }, + "s3_shot_6i_46": { + "diff_carry_yd": 3.1, + "diff_total_yd": -4.2, + "diff_apex_ft": -1.7, + "status": "moderate", + "error_pattern": "CARRY_TOO_LONG" + }, + "s3_shot_6i_47": { + "diff_carry_yd": 2.1, + "diff_total_yd": 8.3, + "diff_apex_ft": 11.4, + "status": "moderate", + "error_pattern": "ROLLOUT_TOO_LONG" + }, + "s3_shot_6i_48": { + "diff_carry_yd": 1.3, + "diff_total_yd": 8.8, + "diff_apex_ft": 13.8, + "status": "moderate", + "error_pattern": "ROLLOUT_TOO_LONG" + }, + "s3_shot_6i_49": { + "diff_carry_yd": 0.0, + "diff_total_yd": 6.9, + "diff_apex_ft": -0.3, + "status": "moderate", + "error_pattern": "ROLLOUT_TOO_LONG" + }, + "s3_shot_6i_50": { + "diff_carry_yd": -0.9, + "diff_total_yd": -12.5, + "diff_apex_ft": 3.8, + "status": "severe", + "error_pattern": "ROLLOUT_TOO_SHORT" + }, + "s3_shot_7i_25": { + "diff_carry_yd": -0.9, + "diff_total_yd": -18.4, + "diff_apex_ft": 0.9, + "status": "severe", + "error_pattern": "ROLLOUT_TOO_SHORT" + }, + "s3_shot_7i_26": { + "diff_carry_yd": 1.5, + "diff_total_yd": -22.1, + "diff_apex_ft": 1.1, + "status": "severe", + "error_pattern": "ROLLOUT_TOO_SHORT" + }, + "s3_shot_7i_27": { + "diff_carry_yd": -2.8, + "diff_total_yd": 4.7, + "diff_apex_ft": 7.7, + "status": "pass", + "error_pattern": null + }, + "s3_shot_7i_28": { + "diff_carry_yd": -3.5, + "diff_total_yd": 1.5, + "diff_apex_ft": 8.1, + "status": "moderate", + "error_pattern": "CARRY_TOO_SHORT" + }, + "s3_shot_7i_29": { + "diff_carry_yd": 0.1, + "diff_total_yd": -6.6, + "diff_apex_ft": -3.6, + "status": "moderate", + "error_pattern": "ROLLOUT_TOO_SHORT" + }, + "s3_shot_7i_30": { + "diff_carry_yd": -4.7, + "diff_total_yd": 1.0, + "diff_apex_ft": 5.3, + "status": "moderate", + "error_pattern": "CARRY_TOO_SHORT" + }, + "s3_shot_7i_31": { + "diff_carry_yd": -0.4, + "diff_total_yd": -14.7, + "diff_apex_ft": -4.2, + "status": "severe", + "error_pattern": "ROLLOUT_TOO_SHORT" + }, + "s3_shot_7i_32": { + "diff_carry_yd": -2.4, + "diff_total_yd": -2.8, + "diff_apex_ft": 3.0, + "status": "pass", + "error_pattern": null + }, + "s3_shot_7i_33": { + "diff_carry_yd": -2.2, + "diff_total_yd": -1.9, + "diff_apex_ft": 4.5, + "status": "pass", + "error_pattern": null + }, + "s3_shot_7i_34": { + "diff_carry_yd": -0.4, + "diff_total_yd": 2.0, + "diff_apex_ft": 3.0, + "status": "pass", + "error_pattern": null + }, + "s3_shot_9i_1": { + "diff_carry_yd": -0.5, + "diff_total_yd": -13.0, + "diff_apex_ft": 1.2, + "status": "severe", + "error_pattern": "ROLLOUT_TOO_SHORT" + }, + "s3_shot_9i_2": { + "diff_carry_yd": -0.2, + "diff_total_yd": -9.2, + "diff_apex_ft": -3.1, + "status": "moderate", + "error_pattern": "ROLLOUT_TOO_SHORT" + }, + "s3_shot_9i_3": { + "diff_carry_yd": -1.9, + "diff_total_yd": 1.4, + "diff_apex_ft": -5.4, + "status": "pass", + "error_pattern": null + }, + "s3_shot_9i_5": { + "diff_carry_yd": -0.4, + "diff_total_yd": -5.9, + "diff_apex_ft": -5.5, + "status": "moderate", + "error_pattern": "ROLLOUT_TOO_SHORT" + }, + "s3_shot_9i_7": { + "diff_carry_yd": 0.6, + "diff_total_yd": 1.1, + "diff_apex_ft": -4.3, + "status": "pass", + "error_pattern": null + }, + "s3_shot_9i_8": { + "diff_carry_yd": -2.3, + "diff_total_yd": 4.7, + "diff_apex_ft": -1.8, + "status": "pass", + "error_pattern": null + }, + "s3_shot_9i_9": { + "diff_carry_yd": -1.8, + "diff_total_yd": 2.3, + "diff_apex_ft": -6.3, + "status": "pass", + "error_pattern": null + }, + "s3_shot_driver_51": { + "diff_carry_yd": 3.4, + "diff_total_yd": 28.4, + "diff_apex_ft": 0.0, + "status": "severe", + "error_pattern": "CARRY_AND_ROLLOUT_LONG" + }, + "s3_shot_driver_52": { + "diff_carry_yd": 4.2, + "diff_total_yd": 23.9, + "diff_apex_ft": -2.0, + "status": "severe", + "error_pattern": "CARRY_AND_ROLLOUT_LONG" + }, + "s3_shot_driver_53": { + "diff_carry_yd": 0.5, + "diff_total_yd": 15.7, + "diff_apex_ft": -4.5, + "status": "severe", + "error_pattern": "ROLLOUT_TOO_LONG" + }, + "s3_shot_driver_54": { + "diff_carry_yd": -1.8, + "diff_total_yd": -0.7, + "diff_apex_ft": -2.5, + "status": "pass", + "error_pattern": null + }, + "s3_shot_driver_55": { + "diff_carry_yd": 2.0, + "diff_total_yd": 21.7, + "diff_apex_ft": 0.4, + "status": "severe", + "error_pattern": "ROLLOUT_TOO_LONG" + }, + "s3_shot_driver_56": { + "diff_carry_yd": -3.3, + "diff_total_yd": 19.6, + "diff_apex_ft": 9.4, + "status": "severe", + "error_pattern": "CARRY_TOO_SHORT" + }, + "s3_shot_driver_57": { + "diff_carry_yd": -5.8, + "diff_total_yd": -20.4, + "diff_apex_ft": -3.7, + "status": "severe", + "error_pattern": "CARRY_AND_ROLLOUT_SHORT" + }, + "s3_shot_driver_58": { + "diff_carry_yd": 10.0, + "diff_total_yd": 34.0, + "diff_apex_ft": -5.4, + "status": "severe", + "error_pattern": "CARRY_AND_ROLLOUT_LONG" + }, + "s3_shot_driver_59": { + "diff_carry_yd": -1.6, + "diff_total_yd": 14.4, + "diff_apex_ft": -4.2, + "status": "severe", + "error_pattern": "ROLLOUT_TOO_LONG" + }, + "s3_shot_driver_60": { + "diff_carry_yd": -0.6, + "diff_total_yd": -15.4, + "diff_apex_ft": -2.5, + "status": "severe", + "error_pattern": "ROLLOUT_TOO_SHORT" + }, + "s3_shot_pw_64": { + "diff_carry_yd": -0.3, + "diff_total_yd": 9.1, + "diff_apex_ft": -3.8, + "status": "moderate", + "error_pattern": "ROLLOUT_TOO_LONG" + }, + "s3_shot_pw_65": { + "diff_carry_yd": -0.6, + "diff_total_yd": 4.2, + "diff_apex_ft": -4.0, + "status": "pass", + "error_pattern": null + }, + "s3_shot_pw_66": { + "diff_carry_yd": -0.4, + "diff_total_yd": 10.8, + "diff_apex_ft": -3.9, + "status": "severe", + "error_pattern": "ROLLOUT_TOO_LONG" + }, + "s3_shot_pw_67": { + "diff_carry_yd": -0.4, + "diff_total_yd": 5.2, + "diff_apex_ft": -4.1, + "status": "moderate", + "error_pattern": "ROLLOUT_TOO_LONG" + }, + "s3_shot_pw_68": { + "diff_carry_yd": -0.5, + "diff_total_yd": 6.1, + "diff_apex_ft": -6.4, + "status": "moderate", + "error_pattern": "ROLLOUT_TOO_LONG" + }, + "s3_shot_pw_69": { + "diff_carry_yd": -0.4, + "diff_total_yd": 11.6, + "diff_apex_ft": -3.9, + "status": "severe", + "error_pattern": "ROLLOUT_TOO_LONG" + }, + "s4_shot_3w_31": { + "diff_carry_yd": -0.1, + "diff_total_yd": -3.6, + "diff_apex_ft": -3.6, + "status": "pass", + "error_pattern": null + }, + "s4_shot_3w_32": { + "diff_carry_yd": 1.5, + "diff_total_yd": 12.2, + "diff_apex_ft": 1.4, + "status": "severe", + "error_pattern": "ROLLOUT_TOO_LONG" + }, + "s4_shot_3w_33": { + "diff_carry_yd": 5.7, + "diff_total_yd": 13.2, + "diff_apex_ft": -8.2, + "status": "severe", + "error_pattern": "CARRY_AND_ROLLOUT_LONG" + }, + "s4_shot_3w_34": { + "diff_carry_yd": 3.6, + "diff_total_yd": 2.2, + "diff_apex_ft": -2.5, + "status": "moderate", + "error_pattern": "CARRY_TOO_LONG" + }, + "s4_shot_3w_35": { + "diff_carry_yd": 4.5, + "diff_total_yd": 2.8, + "diff_apex_ft": -3.1, + "status": "moderate", + "error_pattern": "CARRY_TOO_LONG" + }, + "s4_shot_5i_25": { + "diff_carry_yd": -2.9, + "diff_total_yd": -7.2, + "diff_apex_ft": -5.5, + "status": "moderate", + "error_pattern": "ROLLOUT_TOO_SHORT" + }, + "s4_shot_5i_26": { + "diff_carry_yd": 3.1, + "diff_total_yd": 5.0, + "diff_apex_ft": 2.9, + "status": "moderate", + "error_pattern": "CARRY_TOO_LONG" + }, + "s4_shot_5i_27": { + "diff_carry_yd": -2.0, + "diff_total_yd": 10.8, + "diff_apex_ft": -0.2, + "status": "severe", + "error_pattern": "ROLLOUT_TOO_LONG" + }, + "s4_shot_5i_28": { + "diff_carry_yd": -0.2, + "diff_total_yd": -6.9, + "diff_apex_ft": 5.0, + "status": "moderate", + "error_pattern": "ROLLOUT_TOO_SHORT" + }, + "s4_shot_5i_29": { + "diff_carry_yd": 6.3, + "diff_total_yd": 13.8, + "diff_apex_ft": 1.0, + "status": "severe", + "error_pattern": "CARRY_AND_ROLLOUT_LONG" + }, + "s4_shot_5i_30": { + "diff_carry_yd": 1.3, + "diff_total_yd": 4.1, + "diff_apex_ft": -7.1, + "status": "pass", + "error_pattern": null + }, + "s4_shot_6i_19": { + "diff_carry_yd": -0.5, + "diff_total_yd": -11.5, + "diff_apex_ft": 0.2, + "status": "severe", + "error_pattern": "ROLLOUT_TOO_SHORT" + }, + "s4_shot_6i_20": { + "diff_carry_yd": -0.1, + "diff_total_yd": 11.4, + "diff_apex_ft": 0.0, + "status": "severe", + "error_pattern": "ROLLOUT_TOO_LONG" + }, + "s4_shot_6i_21": { + "diff_carry_yd": 0.9, + "diff_total_yd": -1.5, + "diff_apex_ft": -6.8, + "status": "pass", + "error_pattern": null + }, + "s4_shot_6i_22": { + "diff_carry_yd": 4.5, + "diff_total_yd": 10.8, + "diff_apex_ft": 0.9, + "status": "severe", + "error_pattern": "CARRY_AND_ROLLOUT_LONG" + }, + "s4_shot_6i_23": { + "diff_carry_yd": null, + "diff_total_yd": null, + "diff_apex_ft": null, + "status": "pass", + "error_pattern": null + }, + "s4_shot_6i_24": { + "diff_carry_yd": null, + "diff_total_yd": null, + "diff_apex_ft": null, + "status": "pass", + "error_pattern": null + }, + "s4_shot_9i_13": { + "diff_carry_yd": null, + "diff_total_yd": null, + "diff_apex_ft": null, + "status": "pass", + "error_pattern": null + }, + "s4_shot_9i_14": { + "diff_carry_yd": -0.1, + "diff_total_yd": 1.2, + "diff_apex_ft": -6.4, + "status": "pass", + "error_pattern": null + }, + "s4_shot_9i_15": { + "diff_carry_yd": -2.9, + "diff_total_yd": 10.8, + "diff_apex_ft": -3.7, + "status": "severe", + "error_pattern": "ROLLOUT_TOO_LONG" + }, + "s4_shot_9i_17": { + "diff_carry_yd": -2.0, + "diff_total_yd": -16.6, + "diff_apex_ft": -0.6, + "status": "severe", + "error_pattern": "ROLLOUT_TOO_SHORT" + }, + "s4_shot_9i_18": { + "diff_carry_yd": -2.8, + "diff_total_yd": 8.7, + "diff_apex_ft": -3.5, + "status": "moderate", + "error_pattern": "ROLLOUT_TOO_LONG" + }, + "s4_shot_lw_38": { + "diff_carry_yd": -5.7, + "diff_total_yd": 2.1, + "diff_apex_ft": -4.0, + "status": "moderate", + "error_pattern": "CARRY_TOO_SHORT" + }, + "s4_shot_pw_1": { + "diff_carry_yd": -7.7, + "diff_total_yd": -14.3, + "diff_apex_ft": -0.3, + "status": "severe", + "error_pattern": "CARRY_AND_ROLLOUT_SHORT" + }, + "s4_shot_pw_10": { + "diff_carry_yd": -2.4, + "diff_total_yd": 0.4, + "diff_apex_ft": -4.2, + "status": "pass", + "error_pattern": null + }, + "s4_shot_pw_11": { + "diff_carry_yd": -2.6, + "diff_total_yd": 0.4, + "diff_apex_ft": -3.8, + "status": "pass", + "error_pattern": null + }, + "s4_shot_pw_2": { + "diff_carry_yd": -4.8, + "diff_total_yd": 4.3, + "diff_apex_ft": -1.6, + "status": "moderate", + "error_pattern": "CARRY_TOO_SHORT" + }, + "s4_shot_pw_3": { + "diff_carry_yd": -6.9, + "diff_total_yd": 3.9, + "diff_apex_ft": -3.9, + "status": "moderate", + "error_pattern": "CARRY_TOO_SHORT" + }, + "s4_shot_pw_47": { + "diff_carry_yd": -3.9, + "diff_total_yd": 4.0, + "diff_apex_ft": -1.2, + "status": "moderate", + "error_pattern": "CARRY_TOO_SHORT" + }, + "s4_shot_pw_48": { + "diff_carry_yd": -4.3, + "diff_total_yd": 2.7, + "diff_apex_ft": -1.3, + "status": "moderate", + "error_pattern": "CARRY_TOO_SHORT" + }, + "s4_shot_pw_49": { + "diff_carry_yd": -6.2, + "diff_total_yd": 4.4, + "diff_apex_ft": -1.9, + "status": "moderate", + "error_pattern": "CARRY_TOO_SHORT" + }, + "s4_shot_pw_6": { + "diff_carry_yd": -8.2, + "diff_total_yd": 7.0, + "diff_apex_ft": -3.6, + "status": "severe", + "error_pattern": "CARRY_TOO_SHORT" + }, + "s4_shot_pw_7": { + "diff_carry_yd": -2.0, + "diff_total_yd": 12.2, + "diff_apex_ft": -3.7, + "status": "severe", + "error_pattern": "ROLLOUT_TOO_LONG" + }, + "s4_shot_pw_9": { + "diff_carry_yd": null, + "diff_total_yd": null, + "diff_apex_ft": null, + "status": "pass", + "error_pattern": null + }, + "topped_test_shot": { + "diff_carry_yd": -0.7, + "diff_total_yd": 13.8, + "diff_apex_ft": -0.1, + "status": "severe", + "error_pattern": "ROLLOUT_TOO_LONG" + }, + "wedge_shot_1": { + "diff_carry_yd": -0.7, + "diff_total_yd": -1.7, + "diff_apex_ft": -2.6, + "status": "pass", + "error_pattern": null + }, + "wedge_shot_2": { + "diff_carry_yd": -0.5, + "diff_total_yd": 2.1, + "diff_apex_ft": -4.4, + "status": "pass", + "error_pattern": null + }, + "wedge_test_shot": { + "diff_carry_yd": -0.3, + "diff_total_yd": 3.2, + "diff_apex_ft": -3.2, + "status": "pass", + "error_pattern": null + }, + "wedge_test_shot2": { + "diff_carry_yd": -0.1, + "diff_total_yd": 2.9, + "diff_apex_ft": -2.0, + "status": "pass", + "error_pattern": null + }, + "wood1": { + "diff_carry_yd": 4.9, + "diff_total_yd": -4.0, + "diff_apex_ft": 3.1, + "status": "moderate", + "error_pattern": "CARRY_TOO_LONG" + }, + "wood2": { + "diff_carry_yd": 3.8, + "diff_total_yd": 0.4, + "diff_apex_ft": -1.8, + "status": "moderate", + "error_pattern": "CARRY_TOO_LONG" + }, + "wood_low_test_shot": { + "diff_carry_yd": 1.3, + "diff_total_yd": 22.0, + "diff_apex_ft": 0.3, + "status": "severe", + "error_pattern": "ROLLOUT_TOO_LONG" + } + }, + "regressions": [], + "conflicts": [ + "Bounce.FlightTangentialRetentionBase", + "Bounce.FlightSpinFactorMin", + "Bounce.FlightSpinFactorDivisor", + "Rollout.MidSpinMultiplierMax", + "Rollout.HighSpinMultiplierMax", + "Rollout.FrictionBlendSpeed", + "KineticFrictionMultiplier", + "Bounce.RolloutHighSpinRetention", + "Rollout.ChipVelocityScaleMin", + "Rollout.ChipVelocityScaleMax", + "Bounce.CorBaseA", + "Rollout.LowSpinMultiplierMax", + "Rollout.LowSpinThreshold", + "RollingFrictionMultiplier", + "Bounce.RolloutLowSpinRetention", + "Flight.ClMaxBase", + "Flight.CdMin", + "DragScaleMultiplier", + "LiftScaleMultiplier" + ] +} diff --git a/assets/data/calibration/history/iteration_048.json b/assets/data/calibration/history/iteration_048.json new file mode 100644 index 0000000..aad9c9e --- /dev/null +++ b/assets/data/calibration/history/iteration_048.json @@ -0,0 +1,987 @@ +{ + "iteration": 48, + "timestamp": "2026-03-14T01:14:33.509687", + "profile_overrides": {}, + "summary": { + "pass": 32, + "moderate": 35, + "severe": 62, + "no_reference": 7 + }, + "per_shot": { + "5iron": { + "diff_carry_yd": 0.8, + "diff_total_yd": 11.3, + "diff_apex_ft": 4.6, + "status": "severe", + "error_pattern": "ROLLOUT_TOO_LONG" + }, + "approach_mid_iron_test_shot": { + "diff_carry_yd": -0.6, + "diff_total_yd": 7.3, + "diff_apex_ft": -5.0, + "status": "moderate", + "error_pattern": "ROLLOUT_TOO_LONG" + }, + "bump_and_run": { + "diff_carry_yd": -0.1, + "diff_total_yd": -27.5, + "diff_apex_ft": -2.1, + "status": "severe", + "error_pattern": "ROLLOUT_TOO_SHORT" + }, + "bump_and_run_slow": { + "diff_carry_yd": null, + "diff_total_yd": null, + "diff_apex_ft": null, + "status": "pass", + "error_pattern": null + }, + "bump_test_shot": { + "diff_carry_yd": 0.0, + "diff_total_yd": 12.7, + "diff_apex_ft": -0.1, + "status": "severe", + "error_pattern": "ROLLOUT_TOO_LONG" + }, + "checked_test_shot": { + "diff_carry_yd": -2.1, + "diff_total_yd": -0.5, + "diff_apex_ft": -9.6, + "status": "pass", + "error_pattern": null + }, + "chip_test_shot": { + "diff_carry_yd": null, + "diff_total_yd": null, + "diff_apex_ft": null, + "status": "pass", + "error_pattern": null + }, + "drive_test_shot": { + "diff_carry_yd": -0.4, + "diff_total_yd": -0.6, + "diff_apex_ft": -1.1, + "status": "pass", + "error_pattern": null + }, + "driver1": { + "diff_carry_yd": -0.3, + "diff_total_yd": -26.3, + "diff_apex_ft": -0.8, + "status": "severe", + "error_pattern": "ROLLOUT_TOO_SHORT" + }, + "driver2": { + "diff_carry_yd": 1.2, + "diff_total_yd": 7.3, + "diff_apex_ft": -3.0, + "status": "moderate", + "error_pattern": "ROLLOUT_TOO_LONG" + }, + "driver3": { + "diff_carry_yd": -1.9, + "diff_total_yd": 20.4, + "diff_apex_ft": 20.6, + "status": "severe", + "error_pattern": "ROLLOUT_TOO_LONG" + }, + "driver4": { + "diff_carry_yd": -0.7, + "diff_total_yd": 15.0, + "diff_apex_ft": 4.1, + "status": "severe", + "error_pattern": "ROLLOUT_TOO_LONG" + }, + "flop_test_shot": { + "diff_carry_yd": -0.2, + "diff_total_yd": 1.6, + "diff_apex_ft": -8.5, + "status": "pass", + "error_pattern": null + }, + "p_wedge_shot_1": { + "diff_carry_yd": -0.5, + "diff_total_yd": 1.7, + "diff_apex_ft": -5.5, + "status": "pass", + "error_pattern": null + }, + "s2_shot_10": { + "diff_carry_yd": -0.6, + "diff_total_yd": 10.2, + "diff_apex_ft": -6.0, + "status": "severe", + "error_pattern": "ROLLOUT_TOO_LONG" + }, + "s2_shot_11": { + "diff_carry_yd": -0.9, + "diff_total_yd": 1.1, + "diff_apex_ft": -4.6, + "status": "pass", + "error_pattern": null + }, + "s2_shot_12": { + "diff_carry_yd": 1.0, + "diff_total_yd": 9.5, + "diff_apex_ft": -5.3, + "status": "moderate", + "error_pattern": "ROLLOUT_TOO_LONG" + }, + "s2_shot_13": { + "diff_carry_yd": -2.3, + "diff_total_yd": 3.2, + "diff_apex_ft": -6.1, + "status": "pass", + "error_pattern": null + }, + "s2_shot_14": { + "diff_carry_yd": -0.3, + "diff_total_yd": 1.7, + "diff_apex_ft": -6.1, + "status": "pass", + "error_pattern": null + }, + "s2_shot_15": { + "diff_carry_yd": -1.0, + "diff_total_yd": -12.7, + "diff_apex_ft": -2.0, + "status": "severe", + "error_pattern": "ROLLOUT_TOO_SHORT" + }, + "s2_shot_16": { + "diff_carry_yd": -0.3, + "diff_total_yd": 2.2, + "diff_apex_ft": -3.5, + "status": "pass", + "error_pattern": null + }, + "s2_shot_17": { + "diff_carry_yd": -1.4, + "diff_total_yd": 8.0, + "diff_apex_ft": -3.9, + "status": "moderate", + "error_pattern": "ROLLOUT_TOO_LONG" + }, + "s2_shot_18": { + "diff_carry_yd": 0.3, + "diff_total_yd": 14.0, + "diff_apex_ft": 2.6, + "status": "severe", + "error_pattern": "ROLLOUT_TOO_LONG" + }, + "s2_shot_19": { + "diff_carry_yd": 2.2, + "diff_total_yd": -6.1, + "diff_apex_ft": -1.2, + "status": "moderate", + "error_pattern": "ROLLOUT_TOO_SHORT" + }, + "s2_shot_20": { + "diff_carry_yd": -1.0, + "diff_total_yd": 11.5, + "diff_apex_ft": -2.0, + "status": "severe", + "error_pattern": "ROLLOUT_TOO_LONG" + }, + "s2_shot_21": { + "diff_carry_yd": 4.9, + "diff_total_yd": 27.7, + "diff_apex_ft": 1.7, + "status": "severe", + "error_pattern": "CARRY_AND_ROLLOUT_LONG" + }, + "s2_shot_22": { + "diff_carry_yd": -1.8, + "diff_total_yd": 1.6, + "diff_apex_ft": -1.6, + "status": "pass", + "error_pattern": null + }, + "s2_shot_23": { + "diff_carry_yd": -3.5, + "diff_total_yd": -19.6, + "diff_apex_ft": 0.0, + "status": "severe", + "error_pattern": "CARRY_AND_ROLLOUT_SHORT" + }, + "s2_shot_24": { + "diff_carry_yd": -1.7, + "diff_total_yd": 3.4, + "diff_apex_ft": -1.9, + "status": "pass", + "error_pattern": null + }, + "s2_shot_26": { + "diff_carry_yd": 1.7, + "diff_total_yd": 20.6, + "diff_apex_ft": 23.5, + "status": "severe", + "error_pattern": "ROLLOUT_TOO_LONG" + }, + "s2_shot_27": { + "diff_carry_yd": -4.4, + "diff_total_yd": 12.8, + "diff_apex_ft": 4.8, + "status": "severe", + "error_pattern": "CARRY_TOO_SHORT" + }, + "s2_shot_9": { + "diff_carry_yd": -3.3, + "diff_total_yd": 1.6, + "diff_apex_ft": 7.1, + "status": "moderate", + "error_pattern": "CARRY_TOO_SHORT" + }, + "s3_shot_3w_18": { + "diff_carry_yd": null, + "diff_total_yd": null, + "diff_apex_ft": null, + "status": "pass", + "error_pattern": null + }, + "s3_shot_3w_19": { + "diff_carry_yd": -0.6, + "diff_total_yd": 16.0, + "diff_apex_ft": 0.1, + "status": "severe", + "error_pattern": "ROLLOUT_TOO_LONG" + }, + "s3_shot_3w_21": { + "diff_carry_yd": 0.6, + "diff_total_yd": 15.9, + "diff_apex_ft": 0.3, + "status": "severe", + "error_pattern": "ROLLOUT_TOO_LONG" + }, + "s3_shot_3w_22": { + "diff_carry_yd": -0.5, + "diff_total_yd": 19.6, + "diff_apex_ft": 0.5, + "status": "severe", + "error_pattern": "ROLLOUT_TOO_LONG" + }, + "s3_shot_3w_23": { + "diff_carry_yd": 0.1, + "diff_total_yd": -23.3, + "diff_apex_ft": -1.3, + "status": "severe", + "error_pattern": "ROLLOUT_TOO_SHORT" + }, + "s3_shot_3w_24": { + "diff_carry_yd": 2.9, + "diff_total_yd": 28.4, + "diff_apex_ft": 1.8, + "status": "severe", + "error_pattern": "ROLLOUT_TOO_LONG" + }, + "s3_shot_5i_10": { + "diff_carry_yd": -0.5, + "diff_total_yd": -7.6, + "diff_apex_ft": 5.8, + "status": "moderate", + "error_pattern": "ROLLOUT_TOO_SHORT" + }, + "s3_shot_5i_11": { + "diff_carry_yd": -0.5, + "diff_total_yd": -17.6, + "diff_apex_ft": -1.3, + "status": "severe", + "error_pattern": "ROLLOUT_TOO_SHORT" + }, + "s3_shot_5i_12": { + "diff_carry_yd": 1.1, + "diff_total_yd": -23.5, + "diff_apex_ft": 1.1, + "status": "severe", + "error_pattern": "ROLLOUT_TOO_SHORT" + }, + "s3_shot_5i_13": { + "diff_carry_yd": -0.3, + "diff_total_yd": 10.1, + "diff_apex_ft": 0.6, + "status": "severe", + "error_pattern": "ROLLOUT_TOO_LONG" + }, + "s3_shot_5i_15": { + "diff_carry_yd": -0.1, + "diff_total_yd": 14.5, + "diff_apex_ft": -1.1, + "status": "severe", + "error_pattern": "ROLLOUT_TOO_LONG" + }, + "s3_shot_5i_16": { + "diff_carry_yd": 0.9, + "diff_total_yd": -21.0, + "diff_apex_ft": -0.2, + "status": "severe", + "error_pattern": "ROLLOUT_TOO_SHORT" + }, + "s3_shot_5i_17": { + "diff_carry_yd": -0.2, + "diff_total_yd": -1.7, + "diff_apex_ft": -0.3, + "status": "pass", + "error_pattern": null + }, + "s3_shot_6i_35": { + "diff_carry_yd": -0.4, + "diff_total_yd": -17.0, + "diff_apex_ft": -3.4, + "status": "severe", + "error_pattern": "ROLLOUT_TOO_SHORT" + }, + "s3_shot_6i_36": { + "diff_carry_yd": 1.7, + "diff_total_yd": -21.1, + "diff_apex_ft": 0.6, + "status": "severe", + "error_pattern": "ROLLOUT_TOO_SHORT" + }, + "s3_shot_6i_37": { + "diff_carry_yd": -0.1, + "diff_total_yd": 11.9, + "diff_apex_ft": -0.9, + "status": "severe", + "error_pattern": "ROLLOUT_TOO_LONG" + }, + "s3_shot_6i_38": { + "diff_carry_yd": -0.4, + "diff_total_yd": -21.7, + "diff_apex_ft": 0.1, + "status": "severe", + "error_pattern": "ROLLOUT_TOO_SHORT" + }, + "s3_shot_6i_39": { + "diff_carry_yd": -0.5, + "diff_total_yd": 6.4, + "diff_apex_ft": 0.0, + "status": "moderate", + "error_pattern": "ROLLOUT_TOO_LONG" + }, + "s3_shot_6i_40": { + "diff_carry_yd": -1.3, + "diff_total_yd": 7.7, + "diff_apex_ft": 0.1, + "status": "moderate", + "error_pattern": "ROLLOUT_TOO_LONG" + }, + "s3_shot_6i_41": { + "diff_carry_yd": -0.1, + "diff_total_yd": 12.9, + "diff_apex_ft": -1.0, + "status": "severe", + "error_pattern": "ROLLOUT_TOO_LONG" + }, + "s3_shot_6i_42": { + "diff_carry_yd": -1.4, + "diff_total_yd": -17.8, + "diff_apex_ft": 0.7, + "status": "severe", + "error_pattern": "ROLLOUT_TOO_SHORT" + }, + "s3_shot_6i_43": { + "diff_carry_yd": 1.6, + "diff_total_yd": -0.2, + "diff_apex_ft": 7.8, + "status": "pass", + "error_pattern": null + }, + "s3_shot_6i_44": { + "diff_carry_yd": -1.8, + "diff_total_yd": -28.0, + "diff_apex_ft": -1.4, + "status": "severe", + "error_pattern": "ROLLOUT_TOO_SHORT" + }, + "s3_shot_6i_45": { + "diff_carry_yd": -0.5, + "diff_total_yd": 20.4, + "diff_apex_ft": 0.5, + "status": "severe", + "error_pattern": "ROLLOUT_TOO_LONG" + }, + "s3_shot_6i_46": { + "diff_carry_yd": 3.1, + "diff_total_yd": -4.2, + "diff_apex_ft": -1.7, + "status": "moderate", + "error_pattern": "CARRY_TOO_LONG" + }, + "s3_shot_6i_47": { + "diff_carry_yd": 2.1, + "diff_total_yd": 8.3, + "diff_apex_ft": 11.4, + "status": "moderate", + "error_pattern": "ROLLOUT_TOO_LONG" + }, + "s3_shot_6i_48": { + "diff_carry_yd": 1.3, + "diff_total_yd": 8.8, + "diff_apex_ft": 13.8, + "status": "moderate", + "error_pattern": "ROLLOUT_TOO_LONG" + }, + "s3_shot_6i_49": { + "diff_carry_yd": 0.0, + "diff_total_yd": 6.9, + "diff_apex_ft": -0.3, + "status": "moderate", + "error_pattern": "ROLLOUT_TOO_LONG" + }, + "s3_shot_6i_50": { + "diff_carry_yd": -0.9, + "diff_total_yd": -12.5, + "diff_apex_ft": 3.8, + "status": "severe", + "error_pattern": "ROLLOUT_TOO_SHORT" + }, + "s3_shot_7i_25": { + "diff_carry_yd": -0.9, + "diff_total_yd": -18.4, + "diff_apex_ft": 0.9, + "status": "severe", + "error_pattern": "ROLLOUT_TOO_SHORT" + }, + "s3_shot_7i_26": { + "diff_carry_yd": 1.5, + "diff_total_yd": -22.1, + "diff_apex_ft": 1.1, + "status": "severe", + "error_pattern": "ROLLOUT_TOO_SHORT" + }, + "s3_shot_7i_27": { + "diff_carry_yd": -2.8, + "diff_total_yd": 4.7, + "diff_apex_ft": 7.7, + "status": "pass", + "error_pattern": null + }, + "s3_shot_7i_28": { + "diff_carry_yd": -3.5, + "diff_total_yd": 1.5, + "diff_apex_ft": 8.1, + "status": "moderate", + "error_pattern": "CARRY_TOO_SHORT" + }, + "s3_shot_7i_29": { + "diff_carry_yd": 0.1, + "diff_total_yd": -6.6, + "diff_apex_ft": -3.6, + "status": "moderate", + "error_pattern": "ROLLOUT_TOO_SHORT" + }, + "s3_shot_7i_30": { + "diff_carry_yd": -4.7, + "diff_total_yd": 1.0, + "diff_apex_ft": 5.3, + "status": "moderate", + "error_pattern": "CARRY_TOO_SHORT" + }, + "s3_shot_7i_31": { + "diff_carry_yd": -0.4, + "diff_total_yd": -14.7, + "diff_apex_ft": -4.2, + "status": "severe", + "error_pattern": "ROLLOUT_TOO_SHORT" + }, + "s3_shot_7i_32": { + "diff_carry_yd": -2.4, + "diff_total_yd": -2.8, + "diff_apex_ft": 3.0, + "status": "pass", + "error_pattern": null + }, + "s3_shot_7i_33": { + "diff_carry_yd": -2.2, + "diff_total_yd": -1.9, + "diff_apex_ft": 4.5, + "status": "pass", + "error_pattern": null + }, + "s3_shot_7i_34": { + "diff_carry_yd": -0.4, + "diff_total_yd": 2.0, + "diff_apex_ft": 3.0, + "status": "pass", + "error_pattern": null + }, + "s3_shot_9i_1": { + "diff_carry_yd": -0.5, + "diff_total_yd": -13.0, + "diff_apex_ft": 1.2, + "status": "severe", + "error_pattern": "ROLLOUT_TOO_SHORT" + }, + "s3_shot_9i_2": { + "diff_carry_yd": -0.2, + "diff_total_yd": -9.2, + "diff_apex_ft": -3.1, + "status": "moderate", + "error_pattern": "ROLLOUT_TOO_SHORT" + }, + "s3_shot_9i_3": { + "diff_carry_yd": -1.9, + "diff_total_yd": 1.4, + "diff_apex_ft": -5.4, + "status": "pass", + "error_pattern": null + }, + "s3_shot_9i_5": { + "diff_carry_yd": -0.4, + "diff_total_yd": -5.9, + "diff_apex_ft": -5.5, + "status": "moderate", + "error_pattern": "ROLLOUT_TOO_SHORT" + }, + "s3_shot_9i_7": { + "diff_carry_yd": 0.6, + "diff_total_yd": 1.1, + "diff_apex_ft": -4.3, + "status": "pass", + "error_pattern": null + }, + "s3_shot_9i_8": { + "diff_carry_yd": -2.3, + "diff_total_yd": 4.7, + "diff_apex_ft": -1.8, + "status": "pass", + "error_pattern": null + }, + "s3_shot_9i_9": { + "diff_carry_yd": -1.8, + "diff_total_yd": 2.3, + "diff_apex_ft": -6.3, + "status": "pass", + "error_pattern": null + }, + "s3_shot_driver_51": { + "diff_carry_yd": 3.4, + "diff_total_yd": 28.4, + "diff_apex_ft": 0.0, + "status": "severe", + "error_pattern": "CARRY_AND_ROLLOUT_LONG" + }, + "s3_shot_driver_52": { + "diff_carry_yd": 4.2, + "diff_total_yd": 23.9, + "diff_apex_ft": -2.0, + "status": "severe", + "error_pattern": "CARRY_AND_ROLLOUT_LONG" + }, + "s3_shot_driver_53": { + "diff_carry_yd": 0.5, + "diff_total_yd": 15.7, + "diff_apex_ft": -4.5, + "status": "severe", + "error_pattern": "ROLLOUT_TOO_LONG" + }, + "s3_shot_driver_54": { + "diff_carry_yd": -1.8, + "diff_total_yd": -0.7, + "diff_apex_ft": -2.5, + "status": "pass", + "error_pattern": null + }, + "s3_shot_driver_55": { + "diff_carry_yd": 2.0, + "diff_total_yd": 21.7, + "diff_apex_ft": 0.4, + "status": "severe", + "error_pattern": "ROLLOUT_TOO_LONG" + }, + "s3_shot_driver_56": { + "diff_carry_yd": -3.3, + "diff_total_yd": 19.6, + "diff_apex_ft": 9.4, + "status": "severe", + "error_pattern": "CARRY_TOO_SHORT" + }, + "s3_shot_driver_57": { + "diff_carry_yd": -5.8, + "diff_total_yd": -20.4, + "diff_apex_ft": -3.7, + "status": "severe", + "error_pattern": "CARRY_AND_ROLLOUT_SHORT" + }, + "s3_shot_driver_58": { + "diff_carry_yd": 10.0, + "diff_total_yd": 34.0, + "diff_apex_ft": -5.4, + "status": "severe", + "error_pattern": "CARRY_AND_ROLLOUT_LONG" + }, + "s3_shot_driver_59": { + "diff_carry_yd": -1.6, + "diff_total_yd": 14.4, + "diff_apex_ft": -4.2, + "status": "severe", + "error_pattern": "ROLLOUT_TOO_LONG" + }, + "s3_shot_driver_60": { + "diff_carry_yd": -0.6, + "diff_total_yd": -15.4, + "diff_apex_ft": -2.5, + "status": "severe", + "error_pattern": "ROLLOUT_TOO_SHORT" + }, + "s3_shot_pw_64": { + "diff_carry_yd": -0.3, + "diff_total_yd": 9.1, + "diff_apex_ft": -3.8, + "status": "moderate", + "error_pattern": "ROLLOUT_TOO_LONG" + }, + "s3_shot_pw_65": { + "diff_carry_yd": -0.6, + "diff_total_yd": 4.2, + "diff_apex_ft": -4.0, + "status": "pass", + "error_pattern": null + }, + "s3_shot_pw_66": { + "diff_carry_yd": -0.4, + "diff_total_yd": 10.8, + "diff_apex_ft": -3.9, + "status": "severe", + "error_pattern": "ROLLOUT_TOO_LONG" + }, + "s3_shot_pw_67": { + "diff_carry_yd": -0.4, + "diff_total_yd": 5.2, + "diff_apex_ft": -4.1, + "status": "moderate", + "error_pattern": "ROLLOUT_TOO_LONG" + }, + "s3_shot_pw_68": { + "diff_carry_yd": -0.5, + "diff_total_yd": 6.1, + "diff_apex_ft": -6.4, + "status": "moderate", + "error_pattern": "ROLLOUT_TOO_LONG" + }, + "s3_shot_pw_69": { + "diff_carry_yd": -0.4, + "diff_total_yd": 11.6, + "diff_apex_ft": -3.9, + "status": "severe", + "error_pattern": "ROLLOUT_TOO_LONG" + }, + "s4_shot_3w_31": { + "diff_carry_yd": -0.1, + "diff_total_yd": -3.6, + "diff_apex_ft": -3.6, + "status": "pass", + "error_pattern": null + }, + "s4_shot_3w_32": { + "diff_carry_yd": 1.5, + "diff_total_yd": 12.2, + "diff_apex_ft": 1.4, + "status": "severe", + "error_pattern": "ROLLOUT_TOO_LONG" + }, + "s4_shot_3w_33": { + "diff_carry_yd": 5.7, + "diff_total_yd": 13.2, + "diff_apex_ft": -8.2, + "status": "severe", + "error_pattern": "CARRY_AND_ROLLOUT_LONG" + }, + "s4_shot_3w_34": { + "diff_carry_yd": 3.6, + "diff_total_yd": 2.2, + "diff_apex_ft": -2.5, + "status": "moderate", + "error_pattern": "CARRY_TOO_LONG" + }, + "s4_shot_3w_35": { + "diff_carry_yd": 4.5, + "diff_total_yd": 2.8, + "diff_apex_ft": -3.1, + "status": "moderate", + "error_pattern": "CARRY_TOO_LONG" + }, + "s4_shot_5i_25": { + "diff_carry_yd": -2.9, + "diff_total_yd": -7.2, + "diff_apex_ft": -5.5, + "status": "moderate", + "error_pattern": "ROLLOUT_TOO_SHORT" + }, + "s4_shot_5i_26": { + "diff_carry_yd": 3.1, + "diff_total_yd": 5.0, + "diff_apex_ft": 2.9, + "status": "moderate", + "error_pattern": "CARRY_TOO_LONG" + }, + "s4_shot_5i_27": { + "diff_carry_yd": -2.0, + "diff_total_yd": 10.8, + "diff_apex_ft": -0.2, + "status": "severe", + "error_pattern": "ROLLOUT_TOO_LONG" + }, + "s4_shot_5i_28": { + "diff_carry_yd": -0.2, + "diff_total_yd": -6.9, + "diff_apex_ft": 5.0, + "status": "moderate", + "error_pattern": "ROLLOUT_TOO_SHORT" + }, + "s4_shot_5i_29": { + "diff_carry_yd": 6.3, + "diff_total_yd": 13.8, + "diff_apex_ft": 1.0, + "status": "severe", + "error_pattern": "CARRY_AND_ROLLOUT_LONG" + }, + "s4_shot_5i_30": { + "diff_carry_yd": 1.3, + "diff_total_yd": 4.1, + "diff_apex_ft": -7.1, + "status": "pass", + "error_pattern": null + }, + "s4_shot_6i_19": { + "diff_carry_yd": -0.5, + "diff_total_yd": -11.5, + "diff_apex_ft": 0.2, + "status": "severe", + "error_pattern": "ROLLOUT_TOO_SHORT" + }, + "s4_shot_6i_20": { + "diff_carry_yd": -0.1, + "diff_total_yd": 11.4, + "diff_apex_ft": 0.0, + "status": "severe", + "error_pattern": "ROLLOUT_TOO_LONG" + }, + "s4_shot_6i_21": { + "diff_carry_yd": 0.9, + "diff_total_yd": -1.5, + "diff_apex_ft": -6.8, + "status": "pass", + "error_pattern": null + }, + "s4_shot_6i_22": { + "diff_carry_yd": 4.5, + "diff_total_yd": 10.8, + "diff_apex_ft": 0.9, + "status": "severe", + "error_pattern": "CARRY_AND_ROLLOUT_LONG" + }, + "s4_shot_6i_23": { + "diff_carry_yd": null, + "diff_total_yd": null, + "diff_apex_ft": null, + "status": "pass", + "error_pattern": null + }, + "s4_shot_6i_24": { + "diff_carry_yd": null, + "diff_total_yd": null, + "diff_apex_ft": null, + "status": "pass", + "error_pattern": null + }, + "s4_shot_9i_13": { + "diff_carry_yd": null, + "diff_total_yd": null, + "diff_apex_ft": null, + "status": "pass", + "error_pattern": null + }, + "s4_shot_9i_14": { + "diff_carry_yd": -0.1, + "diff_total_yd": 1.2, + "diff_apex_ft": -6.4, + "status": "pass", + "error_pattern": null + }, + "s4_shot_9i_15": { + "diff_carry_yd": -2.9, + "diff_total_yd": 10.8, + "diff_apex_ft": -3.7, + "status": "severe", + "error_pattern": "ROLLOUT_TOO_LONG" + }, + "s4_shot_9i_17": { + "diff_carry_yd": -2.0, + "diff_total_yd": -16.6, + "diff_apex_ft": -0.6, + "status": "severe", + "error_pattern": "ROLLOUT_TOO_SHORT" + }, + "s4_shot_9i_18": { + "diff_carry_yd": -2.8, + "diff_total_yd": 8.7, + "diff_apex_ft": -3.5, + "status": "moderate", + "error_pattern": "ROLLOUT_TOO_LONG" + }, + "s4_shot_lw_38": { + "diff_carry_yd": -5.7, + "diff_total_yd": 2.1, + "diff_apex_ft": -4.0, + "status": "moderate", + "error_pattern": "CARRY_TOO_SHORT" + }, + "s4_shot_pw_1": { + "diff_carry_yd": -7.7, + "diff_total_yd": -14.3, + "diff_apex_ft": -0.3, + "status": "severe", + "error_pattern": "CARRY_AND_ROLLOUT_SHORT" + }, + "s4_shot_pw_10": { + "diff_carry_yd": -2.4, + "diff_total_yd": 0.4, + "diff_apex_ft": -4.2, + "status": "pass", + "error_pattern": null + }, + "s4_shot_pw_11": { + "diff_carry_yd": -2.6, + "diff_total_yd": 0.4, + "diff_apex_ft": -3.8, + "status": "pass", + "error_pattern": null + }, + "s4_shot_pw_2": { + "diff_carry_yd": -4.8, + "diff_total_yd": 4.3, + "diff_apex_ft": -1.6, + "status": "moderate", + "error_pattern": "CARRY_TOO_SHORT" + }, + "s4_shot_pw_3": { + "diff_carry_yd": -6.9, + "diff_total_yd": 3.9, + "diff_apex_ft": -3.9, + "status": "moderate", + "error_pattern": "CARRY_TOO_SHORT" + }, + "s4_shot_pw_47": { + "diff_carry_yd": -3.9, + "diff_total_yd": 4.0, + "diff_apex_ft": -1.2, + "status": "moderate", + "error_pattern": "CARRY_TOO_SHORT" + }, + "s4_shot_pw_48": { + "diff_carry_yd": -4.3, + "diff_total_yd": 2.7, + "diff_apex_ft": -1.3, + "status": "moderate", + "error_pattern": "CARRY_TOO_SHORT" + }, + "s4_shot_pw_49": { + "diff_carry_yd": -6.2, + "diff_total_yd": 4.4, + "diff_apex_ft": -1.9, + "status": "moderate", + "error_pattern": "CARRY_TOO_SHORT" + }, + "s4_shot_pw_6": { + "diff_carry_yd": -8.2, + "diff_total_yd": 7.0, + "diff_apex_ft": -3.6, + "status": "severe", + "error_pattern": "CARRY_TOO_SHORT" + }, + "s4_shot_pw_7": { + "diff_carry_yd": -2.0, + "diff_total_yd": 12.2, + "diff_apex_ft": -3.7, + "status": "severe", + "error_pattern": "ROLLOUT_TOO_LONG" + }, + "s4_shot_pw_9": { + "diff_carry_yd": null, + "diff_total_yd": null, + "diff_apex_ft": null, + "status": "pass", + "error_pattern": null + }, + "topped_test_shot": { + "diff_carry_yd": -0.7, + "diff_total_yd": 13.8, + "diff_apex_ft": -0.1, + "status": "severe", + "error_pattern": "ROLLOUT_TOO_LONG" + }, + "wedge_shot_1": { + "diff_carry_yd": -0.7, + "diff_total_yd": -1.7, + "diff_apex_ft": -2.6, + "status": "pass", + "error_pattern": null + }, + "wedge_shot_2": { + "diff_carry_yd": -0.5, + "diff_total_yd": 2.1, + "diff_apex_ft": -4.4, + "status": "pass", + "error_pattern": null + }, + "wedge_test_shot": { + "diff_carry_yd": -0.3, + "diff_total_yd": 3.2, + "diff_apex_ft": -3.2, + "status": "pass", + "error_pattern": null + }, + "wedge_test_shot2": { + "diff_carry_yd": -0.1, + "diff_total_yd": 2.9, + "diff_apex_ft": -2.0, + "status": "pass", + "error_pattern": null + }, + "wood1": { + "diff_carry_yd": 4.9, + "diff_total_yd": -4.0, + "diff_apex_ft": 3.1, + "status": "moderate", + "error_pattern": "CARRY_TOO_LONG" + }, + "wood2": { + "diff_carry_yd": 3.8, + "diff_total_yd": 0.4, + "diff_apex_ft": -1.8, + "status": "moderate", + "error_pattern": "CARRY_TOO_LONG" + }, + "wood_low_test_shot": { + "diff_carry_yd": 1.3, + "diff_total_yd": 22.0, + "diff_apex_ft": 0.3, + "status": "severe", + "error_pattern": "ROLLOUT_TOO_LONG" + } + }, + "regressions": [], + "conflicts": [ + "Bounce.FlightTangentialRetentionBase", + "Bounce.FlightSpinFactorMin", + "Bounce.FlightSpinFactorDivisor", + "Rollout.MidSpinMultiplierMax", + "Rollout.HighSpinMultiplierMax", + "Rollout.FrictionBlendSpeed", + "KineticFrictionMultiplier", + "Bounce.RolloutHighSpinRetention", + "Rollout.ChipVelocityScaleMin", + "Rollout.ChipVelocityScaleMax", + "Bounce.CorBaseA", + "Rollout.LowSpinMultiplierMax", + "Rollout.LowSpinThreshold", + "RollingFrictionMultiplier", + "Bounce.RolloutLowSpinRetention", + "Flight.ClMaxBase", + "Flight.CdMin", + "DragScaleMultiplier", + "LiftScaleMultiplier" + ] +} diff --git a/assets/data/calibration/history/iteration_049.json b/assets/data/calibration/history/iteration_049.json new file mode 100644 index 0000000..3e6840f --- /dev/null +++ b/assets/data/calibration/history/iteration_049.json @@ -0,0 +1,987 @@ +{ + "iteration": 49, + "timestamp": "2026-03-14T01:16:57.361851", + "profile_overrides": {}, + "summary": { + "pass": 39, + "moderate": 29, + "severe": 61, + "no_reference": 7 + }, + "per_shot": { + "5iron": { + "diff_carry_yd": 0.8, + "diff_total_yd": 11.3, + "diff_apex_ft": 4.6, + "status": "severe", + "error_pattern": "ROLLOUT_TOO_LONG" + }, + "approach_mid_iron_test_shot": { + "diff_carry_yd": -0.6, + "diff_total_yd": 7.3, + "diff_apex_ft": -5.0, + "status": "moderate", + "error_pattern": "ROLLOUT_TOO_LONG" + }, + "bump_and_run": { + "diff_carry_yd": -0.1, + "diff_total_yd": -27.5, + "diff_apex_ft": -2.1, + "status": "severe", + "error_pattern": "ROLLOUT_TOO_SHORT" + }, + "bump_and_run_slow": { + "diff_carry_yd": null, + "diff_total_yd": null, + "diff_apex_ft": null, + "status": "pass", + "error_pattern": null + }, + "bump_test_shot": { + "diff_carry_yd": 0.0, + "diff_total_yd": 12.7, + "diff_apex_ft": -0.1, + "status": "severe", + "error_pattern": "ROLLOUT_TOO_LONG" + }, + "checked_test_shot": { + "diff_carry_yd": -2.1, + "diff_total_yd": -0.5, + "diff_apex_ft": -9.6, + "status": "pass", + "error_pattern": null + }, + "chip_test_shot": { + "diff_carry_yd": null, + "diff_total_yd": null, + "diff_apex_ft": null, + "status": "pass", + "error_pattern": null + }, + "drive_test_shot": { + "diff_carry_yd": -0.4, + "diff_total_yd": -0.6, + "diff_apex_ft": -1.1, + "status": "pass", + "error_pattern": null + }, + "driver1": { + "diff_carry_yd": -0.3, + "diff_total_yd": -26.3, + "diff_apex_ft": -0.8, + "status": "severe", + "error_pattern": "ROLLOUT_TOO_SHORT" + }, + "driver2": { + "diff_carry_yd": 1.2, + "diff_total_yd": 7.3, + "diff_apex_ft": -3.0, + "status": "moderate", + "error_pattern": "ROLLOUT_TOO_LONG" + }, + "driver3": { + "diff_carry_yd": -1.9, + "diff_total_yd": 20.4, + "diff_apex_ft": 20.6, + "status": "severe", + "error_pattern": "ROLLOUT_TOO_LONG" + }, + "driver4": { + "diff_carry_yd": -0.7, + "diff_total_yd": 15.0, + "diff_apex_ft": 4.1, + "status": "severe", + "error_pattern": "ROLLOUT_TOO_LONG" + }, + "flop_test_shot": { + "diff_carry_yd": -0.2, + "diff_total_yd": 1.6, + "diff_apex_ft": -8.5, + "status": "pass", + "error_pattern": null + }, + "p_wedge_shot_1": { + "diff_carry_yd": -0.5, + "diff_total_yd": 1.7, + "diff_apex_ft": -5.5, + "status": "pass", + "error_pattern": null + }, + "s2_shot_10": { + "diff_carry_yd": -0.6, + "diff_total_yd": 10.2, + "diff_apex_ft": -6.0, + "status": "severe", + "error_pattern": "ROLLOUT_TOO_LONG" + }, + "s2_shot_11": { + "diff_carry_yd": -0.9, + "diff_total_yd": 1.1, + "diff_apex_ft": -4.6, + "status": "pass", + "error_pattern": null + }, + "s2_shot_12": { + "diff_carry_yd": 1.0, + "diff_total_yd": 9.5, + "diff_apex_ft": -5.3, + "status": "moderate", + "error_pattern": "ROLLOUT_TOO_LONG" + }, + "s2_shot_13": { + "diff_carry_yd": -2.3, + "diff_total_yd": 3.2, + "diff_apex_ft": -6.1, + "status": "pass", + "error_pattern": null + }, + "s2_shot_14": { + "diff_carry_yd": -0.0, + "diff_total_yd": 1.7, + "diff_apex_ft": -6.1, + "status": "pass", + "error_pattern": null + }, + "s2_shot_15": { + "diff_carry_yd": 0.0, + "diff_total_yd": -12.7, + "diff_apex_ft": -2.0, + "status": "severe", + "error_pattern": "ROLLOUT_TOO_SHORT" + }, + "s2_shot_16": { + "diff_carry_yd": -0.3, + "diff_total_yd": 2.2, + "diff_apex_ft": -3.5, + "status": "pass", + "error_pattern": null + }, + "s2_shot_17": { + "diff_carry_yd": -1.4, + "diff_total_yd": 8.0, + "diff_apex_ft": -3.9, + "status": "moderate", + "error_pattern": "ROLLOUT_TOO_LONG" + }, + "s2_shot_18": { + "diff_carry_yd": 0.3, + "diff_total_yd": 14.0, + "diff_apex_ft": 2.6, + "status": "severe", + "error_pattern": "ROLLOUT_TOO_LONG" + }, + "s2_shot_19": { + "diff_carry_yd": -4.2, + "diff_total_yd": -6.1, + "diff_apex_ft": -1.2, + "status": "moderate", + "error_pattern": "CARRY_AND_ROLLOUT_SHORT" + }, + "s2_shot_20": { + "diff_carry_yd": -1.2, + "diff_total_yd": 11.5, + "diff_apex_ft": -2.0, + "status": "severe", + "error_pattern": "ROLLOUT_TOO_LONG" + }, + "s2_shot_21": { + "diff_carry_yd": 4.9, + "diff_total_yd": 27.7, + "diff_apex_ft": 1.7, + "status": "severe", + "error_pattern": "CARRY_AND_ROLLOUT_LONG" + }, + "s2_shot_22": { + "diff_carry_yd": -1.8, + "diff_total_yd": 1.6, + "diff_apex_ft": -1.6, + "status": "pass", + "error_pattern": null + }, + "s2_shot_23": { + "diff_carry_yd": -4.4, + "diff_total_yd": -19.6, + "diff_apex_ft": 0.0, + "status": "severe", + "error_pattern": "CARRY_AND_ROLLOUT_SHORT" + }, + "s2_shot_24": { + "diff_carry_yd": -1.7, + "diff_total_yd": 3.4, + "diff_apex_ft": -1.9, + "status": "pass", + "error_pattern": null + }, + "s2_shot_26": { + "diff_carry_yd": 1.7, + "diff_total_yd": 20.6, + "diff_apex_ft": 23.5, + "status": "severe", + "error_pattern": "ROLLOUT_TOO_LONG" + }, + "s2_shot_27": { + "diff_carry_yd": -4.4, + "diff_total_yd": 12.8, + "diff_apex_ft": 4.8, + "status": "severe", + "error_pattern": "CARRY_TOO_SHORT" + }, + "s2_shot_9": { + "diff_carry_yd": -3.3, + "diff_total_yd": 1.6, + "diff_apex_ft": 7.1, + "status": "moderate", + "error_pattern": "CARRY_TOO_SHORT" + }, + "s3_shot_3w_18": { + "diff_carry_yd": null, + "diff_total_yd": null, + "diff_apex_ft": null, + "status": "pass", + "error_pattern": null + }, + "s3_shot_3w_19": { + "diff_carry_yd": -0.6, + "diff_total_yd": 16.0, + "diff_apex_ft": 0.1, + "status": "severe", + "error_pattern": "ROLLOUT_TOO_LONG" + }, + "s3_shot_3w_21": { + "diff_carry_yd": 0.6, + "diff_total_yd": 15.9, + "diff_apex_ft": 0.3, + "status": "severe", + "error_pattern": "ROLLOUT_TOO_LONG" + }, + "s3_shot_3w_22": { + "diff_carry_yd": -0.5, + "diff_total_yd": 19.6, + "diff_apex_ft": 0.5, + "status": "severe", + "error_pattern": "ROLLOUT_TOO_LONG" + }, + "s3_shot_3w_23": { + "diff_carry_yd": 0.1, + "diff_total_yd": -23.3, + "diff_apex_ft": -1.3, + "status": "severe", + "error_pattern": "ROLLOUT_TOO_SHORT" + }, + "s3_shot_3w_24": { + "diff_carry_yd": 2.9, + "diff_total_yd": 28.4, + "diff_apex_ft": 1.8, + "status": "severe", + "error_pattern": "ROLLOUT_TOO_LONG" + }, + "s3_shot_5i_10": { + "diff_carry_yd": -0.5, + "diff_total_yd": -7.6, + "diff_apex_ft": 5.8, + "status": "moderate", + "error_pattern": "ROLLOUT_TOO_SHORT" + }, + "s3_shot_5i_11": { + "diff_carry_yd": -0.5, + "diff_total_yd": -17.6, + "diff_apex_ft": -1.3, + "status": "severe", + "error_pattern": "ROLLOUT_TOO_SHORT" + }, + "s3_shot_5i_12": { + "diff_carry_yd": 1.1, + "diff_total_yd": -23.5, + "diff_apex_ft": 1.1, + "status": "severe", + "error_pattern": "ROLLOUT_TOO_SHORT" + }, + "s3_shot_5i_13": { + "diff_carry_yd": -0.3, + "diff_total_yd": 10.1, + "diff_apex_ft": 0.6, + "status": "severe", + "error_pattern": "ROLLOUT_TOO_LONG" + }, + "s3_shot_5i_15": { + "diff_carry_yd": -0.1, + "diff_total_yd": 14.5, + "diff_apex_ft": -1.1, + "status": "severe", + "error_pattern": "ROLLOUT_TOO_LONG" + }, + "s3_shot_5i_16": { + "diff_carry_yd": 0.9, + "diff_total_yd": -21.0, + "diff_apex_ft": -0.2, + "status": "severe", + "error_pattern": "ROLLOUT_TOO_SHORT" + }, + "s3_shot_5i_17": { + "diff_carry_yd": -0.2, + "diff_total_yd": -1.7, + "diff_apex_ft": -0.3, + "status": "pass", + "error_pattern": null + }, + "s3_shot_6i_35": { + "diff_carry_yd": -0.4, + "diff_total_yd": -17.0, + "diff_apex_ft": -3.4, + "status": "severe", + "error_pattern": "ROLLOUT_TOO_SHORT" + }, + "s3_shot_6i_36": { + "diff_carry_yd": -0.4, + "diff_total_yd": -21.1, + "diff_apex_ft": 0.6, + "status": "severe", + "error_pattern": "ROLLOUT_TOO_SHORT" + }, + "s3_shot_6i_37": { + "diff_carry_yd": -0.1, + "diff_total_yd": 11.9, + "diff_apex_ft": -0.9, + "status": "severe", + "error_pattern": "ROLLOUT_TOO_LONG" + }, + "s3_shot_6i_38": { + "diff_carry_yd": -0.4, + "diff_total_yd": -21.7, + "diff_apex_ft": 0.1, + "status": "severe", + "error_pattern": "ROLLOUT_TOO_SHORT" + }, + "s3_shot_6i_39": { + "diff_carry_yd": -0.5, + "diff_total_yd": 6.4, + "diff_apex_ft": 0.0, + "status": "moderate", + "error_pattern": "ROLLOUT_TOO_LONG" + }, + "s3_shot_6i_40": { + "diff_carry_yd": -1.3, + "diff_total_yd": 7.7, + "diff_apex_ft": 0.1, + "status": "moderate", + "error_pattern": "ROLLOUT_TOO_LONG" + }, + "s3_shot_6i_41": { + "diff_carry_yd": -0.1, + "diff_total_yd": 12.9, + "diff_apex_ft": -1.0, + "status": "severe", + "error_pattern": "ROLLOUT_TOO_LONG" + }, + "s3_shot_6i_42": { + "diff_carry_yd": 0.0, + "diff_total_yd": -17.8, + "diff_apex_ft": 0.7, + "status": "severe", + "error_pattern": "ROLLOUT_TOO_SHORT" + }, + "s3_shot_6i_43": { + "diff_carry_yd": 1.6, + "diff_total_yd": -0.2, + "diff_apex_ft": 7.8, + "status": "pass", + "error_pattern": null + }, + "s3_shot_6i_44": { + "diff_carry_yd": -1.8, + "diff_total_yd": -28.0, + "diff_apex_ft": -1.4, + "status": "severe", + "error_pattern": "ROLLOUT_TOO_SHORT" + }, + "s3_shot_6i_45": { + "diff_carry_yd": -0.5, + "diff_total_yd": 20.4, + "diff_apex_ft": 0.5, + "status": "severe", + "error_pattern": "ROLLOUT_TOO_LONG" + }, + "s3_shot_6i_46": { + "diff_carry_yd": 3.1, + "diff_total_yd": -4.2, + "diff_apex_ft": -1.7, + "status": "moderate", + "error_pattern": "CARRY_TOO_LONG" + }, + "s3_shot_6i_47": { + "diff_carry_yd": 2.1, + "diff_total_yd": 8.3, + "diff_apex_ft": 11.4, + "status": "moderate", + "error_pattern": "ROLLOUT_TOO_LONG" + }, + "s3_shot_6i_48": { + "diff_carry_yd": 1.3, + "diff_total_yd": 8.8, + "diff_apex_ft": 13.8, + "status": "moderate", + "error_pattern": "ROLLOUT_TOO_LONG" + }, + "s3_shot_6i_49": { + "diff_carry_yd": 0.0, + "diff_total_yd": 6.9, + "diff_apex_ft": -0.3, + "status": "moderate", + "error_pattern": "ROLLOUT_TOO_LONG" + }, + "s3_shot_6i_50": { + "diff_carry_yd": -0.9, + "diff_total_yd": -12.5, + "diff_apex_ft": 3.8, + "status": "severe", + "error_pattern": "ROLLOUT_TOO_SHORT" + }, + "s3_shot_7i_25": { + "diff_carry_yd": -0.9, + "diff_total_yd": -18.4, + "diff_apex_ft": 0.9, + "status": "severe", + "error_pattern": "ROLLOUT_TOO_SHORT" + }, + "s3_shot_7i_26": { + "diff_carry_yd": -0.3, + "diff_total_yd": -22.1, + "diff_apex_ft": 1.1, + "status": "severe", + "error_pattern": "ROLLOUT_TOO_SHORT" + }, + "s3_shot_7i_27": { + "diff_carry_yd": -2.8, + "diff_total_yd": 4.7, + "diff_apex_ft": 7.7, + "status": "pass", + "error_pattern": null + }, + "s3_shot_7i_28": { + "diff_carry_yd": -3.5, + "diff_total_yd": 1.5, + "diff_apex_ft": 8.1, + "status": "moderate", + "error_pattern": "CARRY_TOO_SHORT" + }, + "s3_shot_7i_29": { + "diff_carry_yd": 0.1, + "diff_total_yd": -6.6, + "diff_apex_ft": -3.6, + "status": "moderate", + "error_pattern": "ROLLOUT_TOO_SHORT" + }, + "s3_shot_7i_30": { + "diff_carry_yd": -4.7, + "diff_total_yd": 1.0, + "diff_apex_ft": 5.3, + "status": "moderate", + "error_pattern": "CARRY_TOO_SHORT" + }, + "s3_shot_7i_31": { + "diff_carry_yd": -0.4, + "diff_total_yd": -14.7, + "diff_apex_ft": -4.2, + "status": "severe", + "error_pattern": "ROLLOUT_TOO_SHORT" + }, + "s3_shot_7i_32": { + "diff_carry_yd": -2.4, + "diff_total_yd": -2.8, + "diff_apex_ft": 3.0, + "status": "pass", + "error_pattern": null + }, + "s3_shot_7i_33": { + "diff_carry_yd": -2.2, + "diff_total_yd": -1.9, + "diff_apex_ft": 4.5, + "status": "pass", + "error_pattern": null + }, + "s3_shot_7i_34": { + "diff_carry_yd": -0.4, + "diff_total_yd": 2.0, + "diff_apex_ft": 3.0, + "status": "pass", + "error_pattern": null + }, + "s3_shot_9i_1": { + "diff_carry_yd": -0.5, + "diff_total_yd": -13.0, + "diff_apex_ft": 1.2, + "status": "severe", + "error_pattern": "ROLLOUT_TOO_SHORT" + }, + "s3_shot_9i_2": { + "diff_carry_yd": -0.2, + "diff_total_yd": -9.2, + "diff_apex_ft": -3.1, + "status": "moderate", + "error_pattern": "ROLLOUT_TOO_SHORT" + }, + "s3_shot_9i_3": { + "diff_carry_yd": -1.9, + "diff_total_yd": 1.4, + "diff_apex_ft": -5.4, + "status": "pass", + "error_pattern": null + }, + "s3_shot_9i_5": { + "diff_carry_yd": -0.4, + "diff_total_yd": -5.9, + "diff_apex_ft": -5.5, + "status": "moderate", + "error_pattern": "ROLLOUT_TOO_SHORT" + }, + "s3_shot_9i_7": { + "diff_carry_yd": 0.6, + "diff_total_yd": 1.1, + "diff_apex_ft": -4.3, + "status": "pass", + "error_pattern": null + }, + "s3_shot_9i_8": { + "diff_carry_yd": -2.3, + "diff_total_yd": 4.7, + "diff_apex_ft": -1.8, + "status": "pass", + "error_pattern": null + }, + "s3_shot_9i_9": { + "diff_carry_yd": -1.8, + "diff_total_yd": 2.3, + "diff_apex_ft": -6.3, + "status": "pass", + "error_pattern": null + }, + "s3_shot_driver_51": { + "diff_carry_yd": 0.4, + "diff_total_yd": 28.4, + "diff_apex_ft": 0.0, + "status": "severe", + "error_pattern": "ROLLOUT_TOO_LONG" + }, + "s3_shot_driver_52": { + "diff_carry_yd": 4.2, + "diff_total_yd": 23.9, + "diff_apex_ft": -2.0, + "status": "severe", + "error_pattern": "CARRY_AND_ROLLOUT_LONG" + }, + "s3_shot_driver_53": { + "diff_carry_yd": 0.5, + "diff_total_yd": 15.7, + "diff_apex_ft": -4.5, + "status": "severe", + "error_pattern": "ROLLOUT_TOO_LONG" + }, + "s3_shot_driver_54": { + "diff_carry_yd": -1.8, + "diff_total_yd": -0.7, + "diff_apex_ft": -2.5, + "status": "pass", + "error_pattern": null + }, + "s3_shot_driver_55": { + "diff_carry_yd": 2.0, + "diff_total_yd": 21.7, + "diff_apex_ft": 0.4, + "status": "severe", + "error_pattern": "ROLLOUT_TOO_LONG" + }, + "s3_shot_driver_56": { + "diff_carry_yd": -3.3, + "diff_total_yd": 19.6, + "diff_apex_ft": 9.4, + "status": "severe", + "error_pattern": "CARRY_TOO_SHORT" + }, + "s3_shot_driver_57": { + "diff_carry_yd": -5.8, + "diff_total_yd": -20.4, + "diff_apex_ft": -3.7, + "status": "severe", + "error_pattern": "CARRY_AND_ROLLOUT_SHORT" + }, + "s3_shot_driver_58": { + "diff_carry_yd": 7.0, + "diff_total_yd": 34.0, + "diff_apex_ft": -5.4, + "status": "severe", + "error_pattern": "CARRY_AND_ROLLOUT_LONG" + }, + "s3_shot_driver_59": { + "diff_carry_yd": -1.6, + "diff_total_yd": 14.4, + "diff_apex_ft": -4.2, + "status": "severe", + "error_pattern": "ROLLOUT_TOO_LONG" + }, + "s3_shot_driver_60": { + "diff_carry_yd": -0.6, + "diff_total_yd": -15.4, + "diff_apex_ft": -2.5, + "status": "severe", + "error_pattern": "ROLLOUT_TOO_SHORT" + }, + "s3_shot_pw_64": { + "diff_carry_yd": -0.3, + "diff_total_yd": 9.1, + "diff_apex_ft": -3.8, + "status": "moderate", + "error_pattern": "ROLLOUT_TOO_LONG" + }, + "s3_shot_pw_65": { + "diff_carry_yd": -0.6, + "diff_total_yd": 4.2, + "diff_apex_ft": -4.0, + "status": "pass", + "error_pattern": null + }, + "s3_shot_pw_66": { + "diff_carry_yd": -0.4, + "diff_total_yd": 10.8, + "diff_apex_ft": -3.9, + "status": "severe", + "error_pattern": "ROLLOUT_TOO_LONG" + }, + "s3_shot_pw_67": { + "diff_carry_yd": -0.4, + "diff_total_yd": 5.2, + "diff_apex_ft": -4.1, + "status": "moderate", + "error_pattern": "ROLLOUT_TOO_LONG" + }, + "s3_shot_pw_68": { + "diff_carry_yd": -0.5, + "diff_total_yd": 6.1, + "diff_apex_ft": -6.4, + "status": "moderate", + "error_pattern": "ROLLOUT_TOO_LONG" + }, + "s3_shot_pw_69": { + "diff_carry_yd": -0.4, + "diff_total_yd": 11.6, + "diff_apex_ft": -3.9, + "status": "severe", + "error_pattern": "ROLLOUT_TOO_LONG" + }, + "s4_shot_3w_31": { + "diff_carry_yd": -0.1, + "diff_total_yd": -3.6, + "diff_apex_ft": -3.6, + "status": "pass", + "error_pattern": null + }, + "s4_shot_3w_32": { + "diff_carry_yd": 1.5, + "diff_total_yd": 12.2, + "diff_apex_ft": 1.4, + "status": "severe", + "error_pattern": "ROLLOUT_TOO_LONG" + }, + "s4_shot_3w_33": { + "diff_carry_yd": 5.7, + "diff_total_yd": 13.2, + "diff_apex_ft": -8.2, + "status": "severe", + "error_pattern": "CARRY_AND_ROLLOUT_LONG" + }, + "s4_shot_3w_34": { + "diff_carry_yd": 3.6, + "diff_total_yd": 2.2, + "diff_apex_ft": -2.5, + "status": "moderate", + "error_pattern": "CARRY_TOO_LONG" + }, + "s4_shot_3w_35": { + "diff_carry_yd": 4.5, + "diff_total_yd": 2.8, + "diff_apex_ft": -3.1, + "status": "moderate", + "error_pattern": "CARRY_TOO_LONG" + }, + "s4_shot_5i_25": { + "diff_carry_yd": 0.0, + "diff_total_yd": -7.2, + "diff_apex_ft": -5.5, + "status": "moderate", + "error_pattern": "ROLLOUT_TOO_SHORT" + }, + "s4_shot_5i_26": { + "diff_carry_yd": 3.1, + "diff_total_yd": 5.0, + "diff_apex_ft": 2.9, + "status": "moderate", + "error_pattern": "CARRY_TOO_LONG" + }, + "s4_shot_5i_27": { + "diff_carry_yd": -2.0, + "diff_total_yd": 10.8, + "diff_apex_ft": -0.2, + "status": "severe", + "error_pattern": "ROLLOUT_TOO_LONG" + }, + "s4_shot_5i_28": { + "diff_carry_yd": 0.0, + "diff_total_yd": -6.9, + "diff_apex_ft": 5.0, + "status": "moderate", + "error_pattern": "ROLLOUT_TOO_SHORT" + }, + "s4_shot_5i_29": { + "diff_carry_yd": 0.0, + "diff_total_yd": 13.8, + "diff_apex_ft": 1.0, + "status": "severe", + "error_pattern": "ROLLOUT_TOO_LONG" + }, + "s4_shot_5i_30": { + "diff_carry_yd": 1.3, + "diff_total_yd": 4.1, + "diff_apex_ft": -7.1, + "status": "pass", + "error_pattern": null + }, + "s4_shot_6i_19": { + "diff_carry_yd": 0.0, + "diff_total_yd": -11.5, + "diff_apex_ft": 0.2, + "status": "severe", + "error_pattern": "ROLLOUT_TOO_SHORT" + }, + "s4_shot_6i_20": { + "diff_carry_yd": -0.1, + "diff_total_yd": 11.4, + "diff_apex_ft": 0.0, + "status": "severe", + "error_pattern": "ROLLOUT_TOO_LONG" + }, + "s4_shot_6i_21": { + "diff_carry_yd": 0.9, + "diff_total_yd": -1.5, + "diff_apex_ft": -6.8, + "status": "pass", + "error_pattern": null + }, + "s4_shot_6i_22": { + "diff_carry_yd": 0.0, + "diff_total_yd": 10.8, + "diff_apex_ft": 0.9, + "status": "severe", + "error_pattern": "ROLLOUT_TOO_LONG" + }, + "s4_shot_6i_23": { + "diff_carry_yd": null, + "diff_total_yd": null, + "diff_apex_ft": null, + "status": "pass", + "error_pattern": null + }, + "s4_shot_6i_24": { + "diff_carry_yd": null, + "diff_total_yd": null, + "diff_apex_ft": null, + "status": "pass", + "error_pattern": null + }, + "s4_shot_9i_13": { + "diff_carry_yd": null, + "diff_total_yd": null, + "diff_apex_ft": null, + "status": "pass", + "error_pattern": null + }, + "s4_shot_9i_14": { + "diff_carry_yd": -0.0, + "diff_total_yd": 1.2, + "diff_apex_ft": -6.4, + "status": "pass", + "error_pattern": null + }, + "s4_shot_9i_15": { + "diff_carry_yd": -2.9, + "diff_total_yd": 10.8, + "diff_apex_ft": -3.7, + "status": "severe", + "error_pattern": "ROLLOUT_TOO_LONG" + }, + "s4_shot_9i_17": { + "diff_carry_yd": 3.0, + "diff_total_yd": -16.6, + "diff_apex_ft": -0.6, + "status": "severe", + "error_pattern": "ROLLOUT_TOO_SHORT" + }, + "s4_shot_9i_18": { + "diff_carry_yd": -2.8, + "diff_total_yd": 8.7, + "diff_apex_ft": -3.5, + "status": "moderate", + "error_pattern": "ROLLOUT_TOO_LONG" + }, + "s4_shot_lw_38": { + "diff_carry_yd": 0.0, + "diff_total_yd": 2.1, + "diff_apex_ft": -4.0, + "status": "pass", + "error_pattern": null + }, + "s4_shot_pw_1": { + "diff_carry_yd": 0.0, + "diff_total_yd": -14.3, + "diff_apex_ft": -0.3, + "status": "severe", + "error_pattern": "ROLLOUT_TOO_SHORT" + }, + "s4_shot_pw_10": { + "diff_carry_yd": -2.4, + "diff_total_yd": 0.4, + "diff_apex_ft": -4.2, + "status": "pass", + "error_pattern": null + }, + "s4_shot_pw_11": { + "diff_carry_yd": -2.6, + "diff_total_yd": 0.4, + "diff_apex_ft": -3.8, + "status": "pass", + "error_pattern": null + }, + "s4_shot_pw_2": { + "diff_carry_yd": 0.0, + "diff_total_yd": 4.3, + "diff_apex_ft": -1.6, + "status": "pass", + "error_pattern": null + }, + "s4_shot_pw_3": { + "diff_carry_yd": 0.0, + "diff_total_yd": 3.9, + "diff_apex_ft": -3.9, + "status": "pass", + "error_pattern": null + }, + "s4_shot_pw_47": { + "diff_carry_yd": 0.0, + "diff_total_yd": 4.0, + "diff_apex_ft": -1.2, + "status": "pass", + "error_pattern": null + }, + "s4_shot_pw_48": { + "diff_carry_yd": 0.0, + "diff_total_yd": 2.7, + "diff_apex_ft": -1.3, + "status": "pass", + "error_pattern": null + }, + "s4_shot_pw_49": { + "diff_carry_yd": 0.0, + "diff_total_yd": 4.4, + "diff_apex_ft": -1.9, + "status": "pass", + "error_pattern": null + }, + "s4_shot_pw_6": { + "diff_carry_yd": 0.0, + "diff_total_yd": 7.0, + "diff_apex_ft": -3.6, + "status": "moderate", + "error_pattern": "ROLLOUT_TOO_LONG" + }, + "s4_shot_pw_7": { + "diff_carry_yd": -2.0, + "diff_total_yd": 12.2, + "diff_apex_ft": -3.7, + "status": "severe", + "error_pattern": "ROLLOUT_TOO_LONG" + }, + "s4_shot_pw_9": { + "diff_carry_yd": null, + "diff_total_yd": null, + "diff_apex_ft": null, + "status": "pass", + "error_pattern": null + }, + "topped_test_shot": { + "diff_carry_yd": -0.7, + "diff_total_yd": 13.8, + "diff_apex_ft": -0.1, + "status": "severe", + "error_pattern": "ROLLOUT_TOO_LONG" + }, + "wedge_shot_1": { + "diff_carry_yd": -0.7, + "diff_total_yd": -1.7, + "diff_apex_ft": -2.6, + "status": "pass", + "error_pattern": null + }, + "wedge_shot_2": { + "diff_carry_yd": -0.5, + "diff_total_yd": 2.1, + "diff_apex_ft": -4.4, + "status": "pass", + "error_pattern": null + }, + "wedge_test_shot": { + "diff_carry_yd": -0.3, + "diff_total_yd": 3.2, + "diff_apex_ft": -3.2, + "status": "pass", + "error_pattern": null + }, + "wedge_test_shot2": { + "diff_carry_yd": -0.1, + "diff_total_yd": 2.9, + "diff_apex_ft": -2.0, + "status": "pass", + "error_pattern": null + }, + "wood1": { + "diff_carry_yd": 2.9, + "diff_total_yd": -4.0, + "diff_apex_ft": 3.1, + "status": "pass", + "error_pattern": null + }, + "wood2": { + "diff_carry_yd": 3.8, + "diff_total_yd": 0.4, + "diff_apex_ft": -1.8, + "status": "moderate", + "error_pattern": "CARRY_TOO_LONG" + }, + "wood_low_test_shot": { + "diff_carry_yd": 1.3, + "diff_total_yd": 22.0, + "diff_apex_ft": 0.3, + "status": "severe", + "error_pattern": "ROLLOUT_TOO_LONG" + } + }, + "regressions": [], + "conflicts": [ + "Bounce.FlightTangentialRetentionBase", + "Bounce.FlightSpinFactorMin", + "Bounce.FlightSpinFactorDivisor", + "Rollout.MidSpinMultiplierMax", + "Rollout.HighSpinMultiplierMax", + "Rollout.FrictionBlendSpeed", + "KineticFrictionMultiplier", + "Bounce.RolloutHighSpinRetention", + "Rollout.ChipVelocityScaleMin", + "Rollout.ChipVelocityScaleMax", + "Bounce.CorBaseA", + "Rollout.LowSpinMultiplierMax", + "Rollout.LowSpinThreshold", + "RollingFrictionMultiplier", + "Bounce.RolloutLowSpinRetention", + "Flight.ClMaxBase", + "Flight.CdMin", + "DragScaleMultiplier", + "LiftScaleMultiplier" + ] +} diff --git a/assets/data/calibration/history/iteration_050.json b/assets/data/calibration/history/iteration_050.json new file mode 100644 index 0000000..c91a1cc --- /dev/null +++ b/assets/data/calibration/history/iteration_050.json @@ -0,0 +1,987 @@ +{ + "iteration": 50, + "timestamp": "2026-03-14T01:21:12.296041", + "profile_overrides": {}, + "summary": { + "pass": 39, + "moderate": 29, + "severe": 61, + "no_reference": 7 + }, + "per_shot": { + "5iron": { + "diff_carry_yd": 0.8, + "diff_total_yd": 11.3, + "diff_apex_ft": 4.6, + "status": "severe", + "error_pattern": "ROLLOUT_TOO_LONG" + }, + "approach_mid_iron_test_shot": { + "diff_carry_yd": -0.6, + "diff_total_yd": 7.3, + "diff_apex_ft": -5.0, + "status": "moderate", + "error_pattern": "ROLLOUT_TOO_LONG" + }, + "bump_and_run": { + "diff_carry_yd": -0.1, + "diff_total_yd": -27.5, + "diff_apex_ft": -2.1, + "status": "severe", + "error_pattern": "ROLLOUT_TOO_SHORT" + }, + "bump_and_run_slow": { + "diff_carry_yd": null, + "diff_total_yd": null, + "diff_apex_ft": null, + "status": "pass", + "error_pattern": null + }, + "bump_test_shot": { + "diff_carry_yd": 0.0, + "diff_total_yd": 12.7, + "diff_apex_ft": -0.1, + "status": "severe", + "error_pattern": "ROLLOUT_TOO_LONG" + }, + "checked_test_shot": { + "diff_carry_yd": -2.1, + "diff_total_yd": -0.5, + "diff_apex_ft": -9.6, + "status": "pass", + "error_pattern": null + }, + "chip_test_shot": { + "diff_carry_yd": null, + "diff_total_yd": null, + "diff_apex_ft": null, + "status": "pass", + "error_pattern": null + }, + "drive_test_shot": { + "diff_carry_yd": -0.4, + "diff_total_yd": -0.6, + "diff_apex_ft": -1.1, + "status": "pass", + "error_pattern": null + }, + "driver1": { + "diff_carry_yd": -0.3, + "diff_total_yd": -26.3, + "diff_apex_ft": -0.8, + "status": "severe", + "error_pattern": "ROLLOUT_TOO_SHORT" + }, + "driver2": { + "diff_carry_yd": 1.2, + "diff_total_yd": 7.3, + "diff_apex_ft": -3.0, + "status": "moderate", + "error_pattern": "ROLLOUT_TOO_LONG" + }, + "driver3": { + "diff_carry_yd": -1.9, + "diff_total_yd": 20.4, + "diff_apex_ft": 20.6, + "status": "severe", + "error_pattern": "ROLLOUT_TOO_LONG" + }, + "driver4": { + "diff_carry_yd": -0.7, + "diff_total_yd": 15.0, + "diff_apex_ft": 4.1, + "status": "severe", + "error_pattern": "ROLLOUT_TOO_LONG" + }, + "flop_test_shot": { + "diff_carry_yd": -0.2, + "diff_total_yd": 1.6, + "diff_apex_ft": -8.5, + "status": "pass", + "error_pattern": null + }, + "p_wedge_shot_1": { + "diff_carry_yd": -0.5, + "diff_total_yd": 1.7, + "diff_apex_ft": -5.5, + "status": "pass", + "error_pattern": null + }, + "s2_shot_10": { + "diff_carry_yd": -0.6, + "diff_total_yd": 10.2, + "diff_apex_ft": -6.0, + "status": "severe", + "error_pattern": "ROLLOUT_TOO_LONG" + }, + "s2_shot_11": { + "diff_carry_yd": -0.9, + "diff_total_yd": 1.1, + "diff_apex_ft": -4.6, + "status": "pass", + "error_pattern": null + }, + "s2_shot_12": { + "diff_carry_yd": 1.0, + "diff_total_yd": 9.5, + "diff_apex_ft": -5.3, + "status": "moderate", + "error_pattern": "ROLLOUT_TOO_LONG" + }, + "s2_shot_13": { + "diff_carry_yd": -2.3, + "diff_total_yd": 3.2, + "diff_apex_ft": -6.1, + "status": "pass", + "error_pattern": null + }, + "s2_shot_14": { + "diff_carry_yd": -0.0, + "diff_total_yd": 1.7, + "diff_apex_ft": -6.1, + "status": "pass", + "error_pattern": null + }, + "s2_shot_15": { + "diff_carry_yd": 0.0, + "diff_total_yd": -12.7, + "diff_apex_ft": -2.0, + "status": "severe", + "error_pattern": "ROLLOUT_TOO_SHORT" + }, + "s2_shot_16": { + "diff_carry_yd": -0.3, + "diff_total_yd": 2.2, + "diff_apex_ft": -3.5, + "status": "pass", + "error_pattern": null + }, + "s2_shot_17": { + "diff_carry_yd": -1.4, + "diff_total_yd": 8.0, + "diff_apex_ft": -3.9, + "status": "moderate", + "error_pattern": "ROLLOUT_TOO_LONG" + }, + "s2_shot_18": { + "diff_carry_yd": 0.3, + "diff_total_yd": 14.0, + "diff_apex_ft": 2.6, + "status": "severe", + "error_pattern": "ROLLOUT_TOO_LONG" + }, + "s2_shot_19": { + "diff_carry_yd": -4.2, + "diff_total_yd": -6.1, + "diff_apex_ft": -1.2, + "status": "moderate", + "error_pattern": "CARRY_AND_ROLLOUT_SHORT" + }, + "s2_shot_20": { + "diff_carry_yd": -1.2, + "diff_total_yd": 11.5, + "diff_apex_ft": -2.0, + "status": "severe", + "error_pattern": "ROLLOUT_TOO_LONG" + }, + "s2_shot_21": { + "diff_carry_yd": 4.9, + "diff_total_yd": 27.7, + "diff_apex_ft": 1.7, + "status": "severe", + "error_pattern": "CARRY_AND_ROLLOUT_LONG" + }, + "s2_shot_22": { + "diff_carry_yd": -1.8, + "diff_total_yd": 1.6, + "diff_apex_ft": -1.6, + "status": "pass", + "error_pattern": null + }, + "s2_shot_23": { + "diff_carry_yd": -4.4, + "diff_total_yd": -19.6, + "diff_apex_ft": 0.0, + "status": "severe", + "error_pattern": "CARRY_AND_ROLLOUT_SHORT" + }, + "s2_shot_24": { + "diff_carry_yd": -1.7, + "diff_total_yd": 3.4, + "diff_apex_ft": -1.9, + "status": "pass", + "error_pattern": null + }, + "s2_shot_26": { + "diff_carry_yd": 1.7, + "diff_total_yd": 20.6, + "diff_apex_ft": 23.5, + "status": "severe", + "error_pattern": "ROLLOUT_TOO_LONG" + }, + "s2_shot_27": { + "diff_carry_yd": -4.4, + "diff_total_yd": 12.8, + "diff_apex_ft": 4.8, + "status": "severe", + "error_pattern": "CARRY_TOO_SHORT" + }, + "s2_shot_9": { + "diff_carry_yd": -3.3, + "diff_total_yd": 1.6, + "diff_apex_ft": 7.1, + "status": "moderate", + "error_pattern": "CARRY_TOO_SHORT" + }, + "s3_shot_3w_18": { + "diff_carry_yd": null, + "diff_total_yd": null, + "diff_apex_ft": null, + "status": "pass", + "error_pattern": null + }, + "s3_shot_3w_19": { + "diff_carry_yd": -0.6, + "diff_total_yd": 16.0, + "diff_apex_ft": 0.1, + "status": "severe", + "error_pattern": "ROLLOUT_TOO_LONG" + }, + "s3_shot_3w_21": { + "diff_carry_yd": 0.6, + "diff_total_yd": 15.9, + "diff_apex_ft": 0.3, + "status": "severe", + "error_pattern": "ROLLOUT_TOO_LONG" + }, + "s3_shot_3w_22": { + "diff_carry_yd": -0.5, + "diff_total_yd": 19.6, + "diff_apex_ft": 0.5, + "status": "severe", + "error_pattern": "ROLLOUT_TOO_LONG" + }, + "s3_shot_3w_23": { + "diff_carry_yd": 0.1, + "diff_total_yd": -23.3, + "diff_apex_ft": -1.3, + "status": "severe", + "error_pattern": "ROLLOUT_TOO_SHORT" + }, + "s3_shot_3w_24": { + "diff_carry_yd": 2.9, + "diff_total_yd": 28.4, + "diff_apex_ft": 1.8, + "status": "severe", + "error_pattern": "ROLLOUT_TOO_LONG" + }, + "s3_shot_5i_10": { + "diff_carry_yd": -0.5, + "diff_total_yd": -7.6, + "diff_apex_ft": 5.8, + "status": "moderate", + "error_pattern": "ROLLOUT_TOO_SHORT" + }, + "s3_shot_5i_11": { + "diff_carry_yd": -0.5, + "diff_total_yd": -17.6, + "diff_apex_ft": -1.3, + "status": "severe", + "error_pattern": "ROLLOUT_TOO_SHORT" + }, + "s3_shot_5i_12": { + "diff_carry_yd": 1.1, + "diff_total_yd": -23.5, + "diff_apex_ft": 1.1, + "status": "severe", + "error_pattern": "ROLLOUT_TOO_SHORT" + }, + "s3_shot_5i_13": { + "diff_carry_yd": -0.3, + "diff_total_yd": 10.1, + "diff_apex_ft": 0.6, + "status": "severe", + "error_pattern": "ROLLOUT_TOO_LONG" + }, + "s3_shot_5i_15": { + "diff_carry_yd": -0.1, + "diff_total_yd": 14.5, + "diff_apex_ft": -1.1, + "status": "severe", + "error_pattern": "ROLLOUT_TOO_LONG" + }, + "s3_shot_5i_16": { + "diff_carry_yd": 0.9, + "diff_total_yd": -21.0, + "diff_apex_ft": -0.2, + "status": "severe", + "error_pattern": "ROLLOUT_TOO_SHORT" + }, + "s3_shot_5i_17": { + "diff_carry_yd": -0.2, + "diff_total_yd": -1.7, + "diff_apex_ft": -0.3, + "status": "pass", + "error_pattern": null + }, + "s3_shot_6i_35": { + "diff_carry_yd": -0.4, + "diff_total_yd": -17.0, + "diff_apex_ft": -3.4, + "status": "severe", + "error_pattern": "ROLLOUT_TOO_SHORT" + }, + "s3_shot_6i_36": { + "diff_carry_yd": -0.4, + "diff_total_yd": -21.1, + "diff_apex_ft": 0.6, + "status": "severe", + "error_pattern": "ROLLOUT_TOO_SHORT" + }, + "s3_shot_6i_37": { + "diff_carry_yd": -0.1, + "diff_total_yd": 11.9, + "diff_apex_ft": -0.9, + "status": "severe", + "error_pattern": "ROLLOUT_TOO_LONG" + }, + "s3_shot_6i_38": { + "diff_carry_yd": -0.4, + "diff_total_yd": -21.7, + "diff_apex_ft": 0.1, + "status": "severe", + "error_pattern": "ROLLOUT_TOO_SHORT" + }, + "s3_shot_6i_39": { + "diff_carry_yd": -0.5, + "diff_total_yd": 6.4, + "diff_apex_ft": 0.0, + "status": "moderate", + "error_pattern": "ROLLOUT_TOO_LONG" + }, + "s3_shot_6i_40": { + "diff_carry_yd": -1.3, + "diff_total_yd": 7.7, + "diff_apex_ft": 0.1, + "status": "moderate", + "error_pattern": "ROLLOUT_TOO_LONG" + }, + "s3_shot_6i_41": { + "diff_carry_yd": -0.1, + "diff_total_yd": 12.9, + "diff_apex_ft": -1.0, + "status": "severe", + "error_pattern": "ROLLOUT_TOO_LONG" + }, + "s3_shot_6i_42": { + "diff_carry_yd": 0.0, + "diff_total_yd": -17.8, + "diff_apex_ft": 0.7, + "status": "severe", + "error_pattern": "ROLLOUT_TOO_SHORT" + }, + "s3_shot_6i_43": { + "diff_carry_yd": 1.6, + "diff_total_yd": -0.2, + "diff_apex_ft": 7.8, + "status": "pass", + "error_pattern": null + }, + "s3_shot_6i_44": { + "diff_carry_yd": -1.8, + "diff_total_yd": -28.0, + "diff_apex_ft": -1.4, + "status": "severe", + "error_pattern": "ROLLOUT_TOO_SHORT" + }, + "s3_shot_6i_45": { + "diff_carry_yd": -0.5, + "diff_total_yd": 20.4, + "diff_apex_ft": 0.5, + "status": "severe", + "error_pattern": "ROLLOUT_TOO_LONG" + }, + "s3_shot_6i_46": { + "diff_carry_yd": 3.1, + "diff_total_yd": -4.2, + "diff_apex_ft": -1.7, + "status": "moderate", + "error_pattern": "CARRY_TOO_LONG" + }, + "s3_shot_6i_47": { + "diff_carry_yd": 2.1, + "diff_total_yd": 8.3, + "diff_apex_ft": 11.4, + "status": "moderate", + "error_pattern": "ROLLOUT_TOO_LONG" + }, + "s3_shot_6i_48": { + "diff_carry_yd": 1.3, + "diff_total_yd": 8.8, + "diff_apex_ft": 13.8, + "status": "moderate", + "error_pattern": "ROLLOUT_TOO_LONG" + }, + "s3_shot_6i_49": { + "diff_carry_yd": 0.0, + "diff_total_yd": 6.9, + "diff_apex_ft": -0.3, + "status": "moderate", + "error_pattern": "ROLLOUT_TOO_LONG" + }, + "s3_shot_6i_50": { + "diff_carry_yd": -0.9, + "diff_total_yd": -12.5, + "diff_apex_ft": 3.8, + "status": "severe", + "error_pattern": "ROLLOUT_TOO_SHORT" + }, + "s3_shot_7i_25": { + "diff_carry_yd": -0.9, + "diff_total_yd": -18.4, + "diff_apex_ft": 0.9, + "status": "severe", + "error_pattern": "ROLLOUT_TOO_SHORT" + }, + "s3_shot_7i_26": { + "diff_carry_yd": -0.3, + "diff_total_yd": -22.1, + "diff_apex_ft": 1.1, + "status": "severe", + "error_pattern": "ROLLOUT_TOO_SHORT" + }, + "s3_shot_7i_27": { + "diff_carry_yd": -2.8, + "diff_total_yd": 4.7, + "diff_apex_ft": 7.7, + "status": "pass", + "error_pattern": null + }, + "s3_shot_7i_28": { + "diff_carry_yd": -3.5, + "diff_total_yd": 1.5, + "diff_apex_ft": 8.1, + "status": "moderate", + "error_pattern": "CARRY_TOO_SHORT" + }, + "s3_shot_7i_29": { + "diff_carry_yd": 0.1, + "diff_total_yd": -6.6, + "diff_apex_ft": -3.6, + "status": "moderate", + "error_pattern": "ROLLOUT_TOO_SHORT" + }, + "s3_shot_7i_30": { + "diff_carry_yd": -4.7, + "diff_total_yd": 1.0, + "diff_apex_ft": 5.3, + "status": "moderate", + "error_pattern": "CARRY_TOO_SHORT" + }, + "s3_shot_7i_31": { + "diff_carry_yd": -0.4, + "diff_total_yd": -14.7, + "diff_apex_ft": -4.2, + "status": "severe", + "error_pattern": "ROLLOUT_TOO_SHORT" + }, + "s3_shot_7i_32": { + "diff_carry_yd": -2.4, + "diff_total_yd": -2.8, + "diff_apex_ft": 3.0, + "status": "pass", + "error_pattern": null + }, + "s3_shot_7i_33": { + "diff_carry_yd": -2.2, + "diff_total_yd": -1.9, + "diff_apex_ft": 4.5, + "status": "pass", + "error_pattern": null + }, + "s3_shot_7i_34": { + "diff_carry_yd": -0.4, + "diff_total_yd": 2.0, + "diff_apex_ft": 3.0, + "status": "pass", + "error_pattern": null + }, + "s3_shot_9i_1": { + "diff_carry_yd": -0.5, + "diff_total_yd": -13.0, + "diff_apex_ft": 1.2, + "status": "severe", + "error_pattern": "ROLLOUT_TOO_SHORT" + }, + "s3_shot_9i_2": { + "diff_carry_yd": -0.2, + "diff_total_yd": -9.2, + "diff_apex_ft": -3.1, + "status": "moderate", + "error_pattern": "ROLLOUT_TOO_SHORT" + }, + "s3_shot_9i_3": { + "diff_carry_yd": -1.9, + "diff_total_yd": 1.4, + "diff_apex_ft": -5.4, + "status": "pass", + "error_pattern": null + }, + "s3_shot_9i_5": { + "diff_carry_yd": -0.4, + "diff_total_yd": -5.9, + "diff_apex_ft": -5.5, + "status": "moderate", + "error_pattern": "ROLLOUT_TOO_SHORT" + }, + "s3_shot_9i_7": { + "diff_carry_yd": 0.6, + "diff_total_yd": 1.1, + "diff_apex_ft": -4.3, + "status": "pass", + "error_pattern": null + }, + "s3_shot_9i_8": { + "diff_carry_yd": -2.3, + "diff_total_yd": 4.7, + "diff_apex_ft": -1.8, + "status": "pass", + "error_pattern": null + }, + "s3_shot_9i_9": { + "diff_carry_yd": -1.8, + "diff_total_yd": 2.3, + "diff_apex_ft": -6.3, + "status": "pass", + "error_pattern": null + }, + "s3_shot_driver_51": { + "diff_carry_yd": 0.4, + "diff_total_yd": 28.4, + "diff_apex_ft": 0.0, + "status": "severe", + "error_pattern": "ROLLOUT_TOO_LONG" + }, + "s3_shot_driver_52": { + "diff_carry_yd": 4.2, + "diff_total_yd": 23.9, + "diff_apex_ft": -2.0, + "status": "severe", + "error_pattern": "CARRY_AND_ROLLOUT_LONG" + }, + "s3_shot_driver_53": { + "diff_carry_yd": 0.5, + "diff_total_yd": 15.7, + "diff_apex_ft": -4.5, + "status": "severe", + "error_pattern": "ROLLOUT_TOO_LONG" + }, + "s3_shot_driver_54": { + "diff_carry_yd": -1.8, + "diff_total_yd": -0.7, + "diff_apex_ft": -2.5, + "status": "pass", + "error_pattern": null + }, + "s3_shot_driver_55": { + "diff_carry_yd": 2.0, + "diff_total_yd": 21.7, + "diff_apex_ft": 0.4, + "status": "severe", + "error_pattern": "ROLLOUT_TOO_LONG" + }, + "s3_shot_driver_56": { + "diff_carry_yd": -3.3, + "diff_total_yd": 19.6, + "diff_apex_ft": 9.4, + "status": "severe", + "error_pattern": "CARRY_TOO_SHORT" + }, + "s3_shot_driver_57": { + "diff_carry_yd": -5.8, + "diff_total_yd": -20.4, + "diff_apex_ft": -3.7, + "status": "severe", + "error_pattern": "CARRY_AND_ROLLOUT_SHORT" + }, + "s3_shot_driver_58": { + "diff_carry_yd": 7.0, + "diff_total_yd": 34.0, + "diff_apex_ft": -5.4, + "status": "severe", + "error_pattern": "CARRY_AND_ROLLOUT_LONG" + }, + "s3_shot_driver_59": { + "diff_carry_yd": -1.6, + "diff_total_yd": 14.4, + "diff_apex_ft": -4.2, + "status": "severe", + "error_pattern": "ROLLOUT_TOO_LONG" + }, + "s3_shot_driver_60": { + "diff_carry_yd": -0.6, + "diff_total_yd": -15.4, + "diff_apex_ft": -2.5, + "status": "severe", + "error_pattern": "ROLLOUT_TOO_SHORT" + }, + "s3_shot_pw_64": { + "diff_carry_yd": -0.3, + "diff_total_yd": 9.1, + "diff_apex_ft": -3.8, + "status": "moderate", + "error_pattern": "ROLLOUT_TOO_LONG" + }, + "s3_shot_pw_65": { + "diff_carry_yd": -0.6, + "diff_total_yd": 4.2, + "diff_apex_ft": -4.0, + "status": "pass", + "error_pattern": null + }, + "s3_shot_pw_66": { + "diff_carry_yd": -0.4, + "diff_total_yd": 10.8, + "diff_apex_ft": -3.9, + "status": "severe", + "error_pattern": "ROLLOUT_TOO_LONG" + }, + "s3_shot_pw_67": { + "diff_carry_yd": -0.4, + "diff_total_yd": 5.2, + "diff_apex_ft": -4.1, + "status": "moderate", + "error_pattern": "ROLLOUT_TOO_LONG" + }, + "s3_shot_pw_68": { + "diff_carry_yd": -0.5, + "diff_total_yd": 6.1, + "diff_apex_ft": -6.4, + "status": "moderate", + "error_pattern": "ROLLOUT_TOO_LONG" + }, + "s3_shot_pw_69": { + "diff_carry_yd": -0.4, + "diff_total_yd": 11.6, + "diff_apex_ft": -3.9, + "status": "severe", + "error_pattern": "ROLLOUT_TOO_LONG" + }, + "s4_shot_3w_31": { + "diff_carry_yd": -0.1, + "diff_total_yd": -3.6, + "diff_apex_ft": -3.6, + "status": "pass", + "error_pattern": null + }, + "s4_shot_3w_32": { + "diff_carry_yd": 1.5, + "diff_total_yd": 12.2, + "diff_apex_ft": 1.4, + "status": "severe", + "error_pattern": "ROLLOUT_TOO_LONG" + }, + "s4_shot_3w_33": { + "diff_carry_yd": 5.7, + "diff_total_yd": 13.2, + "diff_apex_ft": -8.2, + "status": "severe", + "error_pattern": "CARRY_AND_ROLLOUT_LONG" + }, + "s4_shot_3w_34": { + "diff_carry_yd": 3.6, + "diff_total_yd": 2.2, + "diff_apex_ft": -2.5, + "status": "moderate", + "error_pattern": "CARRY_TOO_LONG" + }, + "s4_shot_3w_35": { + "diff_carry_yd": 4.5, + "diff_total_yd": 2.8, + "diff_apex_ft": -3.1, + "status": "moderate", + "error_pattern": "CARRY_TOO_LONG" + }, + "s4_shot_5i_25": { + "diff_carry_yd": 0.0, + "diff_total_yd": -7.2, + "diff_apex_ft": -5.5, + "status": "moderate", + "error_pattern": "ROLLOUT_TOO_SHORT" + }, + "s4_shot_5i_26": { + "diff_carry_yd": 3.1, + "diff_total_yd": 5.0, + "diff_apex_ft": 2.9, + "status": "moderate", + "error_pattern": "CARRY_TOO_LONG" + }, + "s4_shot_5i_27": { + "diff_carry_yd": -2.0, + "diff_total_yd": 10.8, + "diff_apex_ft": -0.2, + "status": "severe", + "error_pattern": "ROLLOUT_TOO_LONG" + }, + "s4_shot_5i_28": { + "diff_carry_yd": 0.0, + "diff_total_yd": -6.9, + "diff_apex_ft": 5.0, + "status": "moderate", + "error_pattern": "ROLLOUT_TOO_SHORT" + }, + "s4_shot_5i_29": { + "diff_carry_yd": 0.0, + "diff_total_yd": 13.8, + "diff_apex_ft": 1.0, + "status": "severe", + "error_pattern": "ROLLOUT_TOO_LONG" + }, + "s4_shot_5i_30": { + "diff_carry_yd": 1.3, + "diff_total_yd": 4.1, + "diff_apex_ft": -7.1, + "status": "pass", + "error_pattern": null + }, + "s4_shot_6i_19": { + "diff_carry_yd": 0.0, + "diff_total_yd": -11.5, + "diff_apex_ft": 0.2, + "status": "severe", + "error_pattern": "ROLLOUT_TOO_SHORT" + }, + "s4_shot_6i_20": { + "diff_carry_yd": -0.1, + "diff_total_yd": 11.4, + "diff_apex_ft": 0.0, + "status": "severe", + "error_pattern": "ROLLOUT_TOO_LONG" + }, + "s4_shot_6i_21": { + "diff_carry_yd": 0.9, + "diff_total_yd": -1.5, + "diff_apex_ft": -6.8, + "status": "pass", + "error_pattern": null + }, + "s4_shot_6i_22": { + "diff_carry_yd": 0.0, + "diff_total_yd": 10.8, + "diff_apex_ft": 0.9, + "status": "severe", + "error_pattern": "ROLLOUT_TOO_LONG" + }, + "s4_shot_6i_23": { + "diff_carry_yd": null, + "diff_total_yd": null, + "diff_apex_ft": null, + "status": "pass", + "error_pattern": null + }, + "s4_shot_6i_24": { + "diff_carry_yd": null, + "diff_total_yd": null, + "diff_apex_ft": null, + "status": "pass", + "error_pattern": null + }, + "s4_shot_9i_13": { + "diff_carry_yd": null, + "diff_total_yd": null, + "diff_apex_ft": null, + "status": "pass", + "error_pattern": null + }, + "s4_shot_9i_14": { + "diff_carry_yd": -0.0, + "diff_total_yd": 1.2, + "diff_apex_ft": -6.4, + "status": "pass", + "error_pattern": null + }, + "s4_shot_9i_15": { + "diff_carry_yd": -2.9, + "diff_total_yd": 10.8, + "diff_apex_ft": -3.7, + "status": "severe", + "error_pattern": "ROLLOUT_TOO_LONG" + }, + "s4_shot_9i_17": { + "diff_carry_yd": 3.0, + "diff_total_yd": -16.6, + "diff_apex_ft": -0.6, + "status": "severe", + "error_pattern": "ROLLOUT_TOO_SHORT" + }, + "s4_shot_9i_18": { + "diff_carry_yd": -2.8, + "diff_total_yd": 8.7, + "diff_apex_ft": -3.5, + "status": "moderate", + "error_pattern": "ROLLOUT_TOO_LONG" + }, + "s4_shot_lw_38": { + "diff_carry_yd": 0.0, + "diff_total_yd": 2.1, + "diff_apex_ft": -4.0, + "status": "pass", + "error_pattern": null + }, + "s4_shot_pw_1": { + "diff_carry_yd": 0.0, + "diff_total_yd": -14.3, + "diff_apex_ft": -0.3, + "status": "severe", + "error_pattern": "ROLLOUT_TOO_SHORT" + }, + "s4_shot_pw_10": { + "diff_carry_yd": -2.4, + "diff_total_yd": 0.4, + "diff_apex_ft": -4.2, + "status": "pass", + "error_pattern": null + }, + "s4_shot_pw_11": { + "diff_carry_yd": -2.6, + "diff_total_yd": 0.4, + "diff_apex_ft": -3.8, + "status": "pass", + "error_pattern": null + }, + "s4_shot_pw_2": { + "diff_carry_yd": 0.0, + "diff_total_yd": 4.3, + "diff_apex_ft": -1.6, + "status": "pass", + "error_pattern": null + }, + "s4_shot_pw_3": { + "diff_carry_yd": 0.0, + "diff_total_yd": 3.9, + "diff_apex_ft": -3.9, + "status": "pass", + "error_pattern": null + }, + "s4_shot_pw_47": { + "diff_carry_yd": 0.0, + "diff_total_yd": 4.0, + "diff_apex_ft": -1.2, + "status": "pass", + "error_pattern": null + }, + "s4_shot_pw_48": { + "diff_carry_yd": 0.0, + "diff_total_yd": 2.7, + "diff_apex_ft": -1.3, + "status": "pass", + "error_pattern": null + }, + "s4_shot_pw_49": { + "diff_carry_yd": 0.0, + "diff_total_yd": 4.4, + "diff_apex_ft": -1.9, + "status": "pass", + "error_pattern": null + }, + "s4_shot_pw_6": { + "diff_carry_yd": 0.0, + "diff_total_yd": 7.0, + "diff_apex_ft": -3.6, + "status": "moderate", + "error_pattern": "ROLLOUT_TOO_LONG" + }, + "s4_shot_pw_7": { + "diff_carry_yd": -2.0, + "diff_total_yd": 12.2, + "diff_apex_ft": -3.7, + "status": "severe", + "error_pattern": "ROLLOUT_TOO_LONG" + }, + "s4_shot_pw_9": { + "diff_carry_yd": null, + "diff_total_yd": null, + "diff_apex_ft": null, + "status": "pass", + "error_pattern": null + }, + "topped_test_shot": { + "diff_carry_yd": -0.7, + "diff_total_yd": 13.8, + "diff_apex_ft": -0.1, + "status": "severe", + "error_pattern": "ROLLOUT_TOO_LONG" + }, + "wedge_shot_1": { + "diff_carry_yd": -0.7, + "diff_total_yd": -1.7, + "diff_apex_ft": -2.6, + "status": "pass", + "error_pattern": null + }, + "wedge_shot_2": { + "diff_carry_yd": -0.5, + "diff_total_yd": 2.1, + "diff_apex_ft": -4.4, + "status": "pass", + "error_pattern": null + }, + "wedge_test_shot": { + "diff_carry_yd": -0.3, + "diff_total_yd": 3.2, + "diff_apex_ft": -3.2, + "status": "pass", + "error_pattern": null + }, + "wedge_test_shot2": { + "diff_carry_yd": -0.1, + "diff_total_yd": 2.9, + "diff_apex_ft": -2.0, + "status": "pass", + "error_pattern": null + }, + "wood1": { + "diff_carry_yd": 2.9, + "diff_total_yd": -4.0, + "diff_apex_ft": 3.1, + "status": "pass", + "error_pattern": null + }, + "wood2": { + "diff_carry_yd": 3.8, + "diff_total_yd": 0.4, + "diff_apex_ft": -1.8, + "status": "moderate", + "error_pattern": "CARRY_TOO_LONG" + }, + "wood_low_test_shot": { + "diff_carry_yd": 1.3, + "diff_total_yd": 22.0, + "diff_apex_ft": 0.3, + "status": "severe", + "error_pattern": "ROLLOUT_TOO_LONG" + } + }, + "regressions": [], + "conflicts": [ + "Bounce.FlightTangentialRetentionBase", + "Bounce.FlightSpinFactorMin", + "Bounce.FlightSpinFactorDivisor", + "Rollout.MidSpinMultiplierMax", + "Rollout.HighSpinMultiplierMax", + "Rollout.FrictionBlendSpeed", + "KineticFrictionMultiplier", + "Bounce.RolloutHighSpinRetention", + "Rollout.ChipVelocityScaleMin", + "Rollout.ChipVelocityScaleMax", + "Bounce.CorBaseA", + "Rollout.LowSpinMultiplierMax", + "Rollout.LowSpinThreshold", + "RollingFrictionMultiplier", + "Bounce.RolloutLowSpinRetention", + "Flight.ClMaxBase", + "Flight.CdMin", + "DragScaleMultiplier", + "LiftScaleMultiplier" + ] +} diff --git a/assets/data/calibration/history/iteration_051.json b/assets/data/calibration/history/iteration_051.json new file mode 100644 index 0000000..685c7f3 --- /dev/null +++ b/assets/data/calibration/history/iteration_051.json @@ -0,0 +1,987 @@ +{ + "iteration": 51, + "timestamp": "2026-03-14T01:21:18.308862", + "profile_overrides": {}, + "summary": { + "pass": 39, + "moderate": 29, + "severe": 61, + "no_reference": 7 + }, + "per_shot": { + "5iron": { + "diff_carry_yd": 0.8, + "diff_total_yd": 11.3, + "diff_apex_ft": 4.6, + "status": "severe", + "error_pattern": "ROLLOUT_TOO_LONG" + }, + "approach_mid_iron_test_shot": { + "diff_carry_yd": -0.6, + "diff_total_yd": 7.3, + "diff_apex_ft": -5.0, + "status": "moderate", + "error_pattern": "ROLLOUT_TOO_LONG" + }, + "bump_and_run": { + "diff_carry_yd": -0.1, + "diff_total_yd": -27.5, + "diff_apex_ft": -2.1, + "status": "severe", + "error_pattern": "ROLLOUT_TOO_SHORT" + }, + "bump_and_run_slow": { + "diff_carry_yd": null, + "diff_total_yd": null, + "diff_apex_ft": null, + "status": "pass", + "error_pattern": null + }, + "bump_test_shot": { + "diff_carry_yd": 0.0, + "diff_total_yd": 12.7, + "diff_apex_ft": -0.1, + "status": "severe", + "error_pattern": "ROLLOUT_TOO_LONG" + }, + "checked_test_shot": { + "diff_carry_yd": -2.1, + "diff_total_yd": -0.5, + "diff_apex_ft": -9.6, + "status": "pass", + "error_pattern": null + }, + "chip_test_shot": { + "diff_carry_yd": null, + "diff_total_yd": null, + "diff_apex_ft": null, + "status": "pass", + "error_pattern": null + }, + "drive_test_shot": { + "diff_carry_yd": -0.4, + "diff_total_yd": -0.6, + "diff_apex_ft": -1.1, + "status": "pass", + "error_pattern": null + }, + "driver1": { + "diff_carry_yd": -0.3, + "diff_total_yd": -26.3, + "diff_apex_ft": -0.8, + "status": "severe", + "error_pattern": "ROLLOUT_TOO_SHORT" + }, + "driver2": { + "diff_carry_yd": 1.2, + "diff_total_yd": 7.3, + "diff_apex_ft": -3.0, + "status": "moderate", + "error_pattern": "ROLLOUT_TOO_LONG" + }, + "driver3": { + "diff_carry_yd": -1.9, + "diff_total_yd": 20.4, + "diff_apex_ft": 20.6, + "status": "severe", + "error_pattern": "ROLLOUT_TOO_LONG" + }, + "driver4": { + "diff_carry_yd": -0.7, + "diff_total_yd": 15.0, + "diff_apex_ft": 4.1, + "status": "severe", + "error_pattern": "ROLLOUT_TOO_LONG" + }, + "flop_test_shot": { + "diff_carry_yd": -0.2, + "diff_total_yd": 1.6, + "diff_apex_ft": -8.5, + "status": "pass", + "error_pattern": null + }, + "p_wedge_shot_1": { + "diff_carry_yd": -0.5, + "diff_total_yd": 1.7, + "diff_apex_ft": -5.5, + "status": "pass", + "error_pattern": null + }, + "s2_shot_10": { + "diff_carry_yd": -0.6, + "diff_total_yd": 10.2, + "diff_apex_ft": -6.0, + "status": "severe", + "error_pattern": "ROLLOUT_TOO_LONG" + }, + "s2_shot_11": { + "diff_carry_yd": -0.9, + "diff_total_yd": 1.1, + "diff_apex_ft": -4.6, + "status": "pass", + "error_pattern": null + }, + "s2_shot_12": { + "diff_carry_yd": 1.0, + "diff_total_yd": 9.5, + "diff_apex_ft": -5.3, + "status": "moderate", + "error_pattern": "ROLLOUT_TOO_LONG" + }, + "s2_shot_13": { + "diff_carry_yd": -2.3, + "diff_total_yd": 3.2, + "diff_apex_ft": -6.1, + "status": "pass", + "error_pattern": null + }, + "s2_shot_14": { + "diff_carry_yd": -0.0, + "diff_total_yd": 1.7, + "diff_apex_ft": -6.1, + "status": "pass", + "error_pattern": null + }, + "s2_shot_15": { + "diff_carry_yd": 0.0, + "diff_total_yd": -12.7, + "diff_apex_ft": -2.0, + "status": "severe", + "error_pattern": "ROLLOUT_TOO_SHORT" + }, + "s2_shot_16": { + "diff_carry_yd": -0.3, + "diff_total_yd": 2.2, + "diff_apex_ft": -3.5, + "status": "pass", + "error_pattern": null + }, + "s2_shot_17": { + "diff_carry_yd": -1.4, + "diff_total_yd": 8.0, + "diff_apex_ft": -3.9, + "status": "moderate", + "error_pattern": "ROLLOUT_TOO_LONG" + }, + "s2_shot_18": { + "diff_carry_yd": 0.3, + "diff_total_yd": 14.0, + "diff_apex_ft": 2.6, + "status": "severe", + "error_pattern": "ROLLOUT_TOO_LONG" + }, + "s2_shot_19": { + "diff_carry_yd": -4.2, + "diff_total_yd": -6.1, + "diff_apex_ft": -1.2, + "status": "moderate", + "error_pattern": "CARRY_AND_ROLLOUT_SHORT" + }, + "s2_shot_20": { + "diff_carry_yd": -1.2, + "diff_total_yd": 11.5, + "diff_apex_ft": -2.0, + "status": "severe", + "error_pattern": "ROLLOUT_TOO_LONG" + }, + "s2_shot_21": { + "diff_carry_yd": 4.9, + "diff_total_yd": 27.7, + "diff_apex_ft": 1.7, + "status": "severe", + "error_pattern": "CARRY_AND_ROLLOUT_LONG" + }, + "s2_shot_22": { + "diff_carry_yd": -1.8, + "diff_total_yd": 1.6, + "diff_apex_ft": -1.6, + "status": "pass", + "error_pattern": null + }, + "s2_shot_23": { + "diff_carry_yd": -4.4, + "diff_total_yd": -19.6, + "diff_apex_ft": 0.0, + "status": "severe", + "error_pattern": "CARRY_AND_ROLLOUT_SHORT" + }, + "s2_shot_24": { + "diff_carry_yd": -1.7, + "diff_total_yd": 3.4, + "diff_apex_ft": -1.9, + "status": "pass", + "error_pattern": null + }, + "s2_shot_26": { + "diff_carry_yd": 1.7, + "diff_total_yd": 20.6, + "diff_apex_ft": 23.5, + "status": "severe", + "error_pattern": "ROLLOUT_TOO_LONG" + }, + "s2_shot_27": { + "diff_carry_yd": -4.4, + "diff_total_yd": 12.8, + "diff_apex_ft": 4.8, + "status": "severe", + "error_pattern": "CARRY_TOO_SHORT" + }, + "s2_shot_9": { + "diff_carry_yd": -3.3, + "diff_total_yd": 1.6, + "diff_apex_ft": 7.1, + "status": "moderate", + "error_pattern": "CARRY_TOO_SHORT" + }, + "s3_shot_3w_18": { + "diff_carry_yd": null, + "diff_total_yd": null, + "diff_apex_ft": null, + "status": "pass", + "error_pattern": null + }, + "s3_shot_3w_19": { + "diff_carry_yd": -0.6, + "diff_total_yd": 16.0, + "diff_apex_ft": 0.1, + "status": "severe", + "error_pattern": "ROLLOUT_TOO_LONG" + }, + "s3_shot_3w_21": { + "diff_carry_yd": 0.6, + "diff_total_yd": 15.9, + "diff_apex_ft": 0.3, + "status": "severe", + "error_pattern": "ROLLOUT_TOO_LONG" + }, + "s3_shot_3w_22": { + "diff_carry_yd": -0.5, + "diff_total_yd": 19.6, + "diff_apex_ft": 0.5, + "status": "severe", + "error_pattern": "ROLLOUT_TOO_LONG" + }, + "s3_shot_3w_23": { + "diff_carry_yd": 0.1, + "diff_total_yd": -23.3, + "diff_apex_ft": -1.3, + "status": "severe", + "error_pattern": "ROLLOUT_TOO_SHORT" + }, + "s3_shot_3w_24": { + "diff_carry_yd": 2.9, + "diff_total_yd": 28.4, + "diff_apex_ft": 1.8, + "status": "severe", + "error_pattern": "ROLLOUT_TOO_LONG" + }, + "s3_shot_5i_10": { + "diff_carry_yd": -0.5, + "diff_total_yd": -7.6, + "diff_apex_ft": 5.8, + "status": "moderate", + "error_pattern": "ROLLOUT_TOO_SHORT" + }, + "s3_shot_5i_11": { + "diff_carry_yd": -0.5, + "diff_total_yd": -17.6, + "diff_apex_ft": -1.3, + "status": "severe", + "error_pattern": "ROLLOUT_TOO_SHORT" + }, + "s3_shot_5i_12": { + "diff_carry_yd": 1.1, + "diff_total_yd": -23.5, + "diff_apex_ft": 1.1, + "status": "severe", + "error_pattern": "ROLLOUT_TOO_SHORT" + }, + "s3_shot_5i_13": { + "diff_carry_yd": -0.3, + "diff_total_yd": 10.1, + "diff_apex_ft": 0.6, + "status": "severe", + "error_pattern": "ROLLOUT_TOO_LONG" + }, + "s3_shot_5i_15": { + "diff_carry_yd": -0.1, + "diff_total_yd": 14.5, + "diff_apex_ft": -1.1, + "status": "severe", + "error_pattern": "ROLLOUT_TOO_LONG" + }, + "s3_shot_5i_16": { + "diff_carry_yd": 0.9, + "diff_total_yd": -21.0, + "diff_apex_ft": -0.2, + "status": "severe", + "error_pattern": "ROLLOUT_TOO_SHORT" + }, + "s3_shot_5i_17": { + "diff_carry_yd": -0.2, + "diff_total_yd": -1.7, + "diff_apex_ft": -0.3, + "status": "pass", + "error_pattern": null + }, + "s3_shot_6i_35": { + "diff_carry_yd": -0.4, + "diff_total_yd": -17.0, + "diff_apex_ft": -3.4, + "status": "severe", + "error_pattern": "ROLLOUT_TOO_SHORT" + }, + "s3_shot_6i_36": { + "diff_carry_yd": -0.4, + "diff_total_yd": -21.1, + "diff_apex_ft": 0.6, + "status": "severe", + "error_pattern": "ROLLOUT_TOO_SHORT" + }, + "s3_shot_6i_37": { + "diff_carry_yd": -0.1, + "diff_total_yd": 11.9, + "diff_apex_ft": -0.9, + "status": "severe", + "error_pattern": "ROLLOUT_TOO_LONG" + }, + "s3_shot_6i_38": { + "diff_carry_yd": -0.4, + "diff_total_yd": -21.7, + "diff_apex_ft": 0.1, + "status": "severe", + "error_pattern": "ROLLOUT_TOO_SHORT" + }, + "s3_shot_6i_39": { + "diff_carry_yd": -0.5, + "diff_total_yd": 6.4, + "diff_apex_ft": 0.0, + "status": "moderate", + "error_pattern": "ROLLOUT_TOO_LONG" + }, + "s3_shot_6i_40": { + "diff_carry_yd": -1.3, + "diff_total_yd": 7.7, + "diff_apex_ft": 0.1, + "status": "moderate", + "error_pattern": "ROLLOUT_TOO_LONG" + }, + "s3_shot_6i_41": { + "diff_carry_yd": -0.1, + "diff_total_yd": 12.9, + "diff_apex_ft": -1.0, + "status": "severe", + "error_pattern": "ROLLOUT_TOO_LONG" + }, + "s3_shot_6i_42": { + "diff_carry_yd": 0.0, + "diff_total_yd": -17.8, + "diff_apex_ft": 0.7, + "status": "severe", + "error_pattern": "ROLLOUT_TOO_SHORT" + }, + "s3_shot_6i_43": { + "diff_carry_yd": 1.6, + "diff_total_yd": -0.2, + "diff_apex_ft": 7.8, + "status": "pass", + "error_pattern": null + }, + "s3_shot_6i_44": { + "diff_carry_yd": -1.8, + "diff_total_yd": -28.0, + "diff_apex_ft": -1.4, + "status": "severe", + "error_pattern": "ROLLOUT_TOO_SHORT" + }, + "s3_shot_6i_45": { + "diff_carry_yd": -0.5, + "diff_total_yd": 20.4, + "diff_apex_ft": 0.5, + "status": "severe", + "error_pattern": "ROLLOUT_TOO_LONG" + }, + "s3_shot_6i_46": { + "diff_carry_yd": 3.1, + "diff_total_yd": -4.2, + "diff_apex_ft": -1.7, + "status": "moderate", + "error_pattern": "CARRY_TOO_LONG" + }, + "s3_shot_6i_47": { + "diff_carry_yd": 2.1, + "diff_total_yd": 8.3, + "diff_apex_ft": 11.4, + "status": "moderate", + "error_pattern": "ROLLOUT_TOO_LONG" + }, + "s3_shot_6i_48": { + "diff_carry_yd": 1.3, + "diff_total_yd": 8.8, + "diff_apex_ft": 13.8, + "status": "moderate", + "error_pattern": "ROLLOUT_TOO_LONG" + }, + "s3_shot_6i_49": { + "diff_carry_yd": 0.0, + "diff_total_yd": 6.9, + "diff_apex_ft": -0.3, + "status": "moderate", + "error_pattern": "ROLLOUT_TOO_LONG" + }, + "s3_shot_6i_50": { + "diff_carry_yd": -0.9, + "diff_total_yd": -12.5, + "diff_apex_ft": 3.8, + "status": "severe", + "error_pattern": "ROLLOUT_TOO_SHORT" + }, + "s3_shot_7i_25": { + "diff_carry_yd": -0.9, + "diff_total_yd": -18.4, + "diff_apex_ft": 0.9, + "status": "severe", + "error_pattern": "ROLLOUT_TOO_SHORT" + }, + "s3_shot_7i_26": { + "diff_carry_yd": -0.3, + "diff_total_yd": -22.1, + "diff_apex_ft": 1.1, + "status": "severe", + "error_pattern": "ROLLOUT_TOO_SHORT" + }, + "s3_shot_7i_27": { + "diff_carry_yd": -2.8, + "diff_total_yd": 4.7, + "diff_apex_ft": 7.7, + "status": "pass", + "error_pattern": null + }, + "s3_shot_7i_28": { + "diff_carry_yd": -3.5, + "diff_total_yd": 1.5, + "diff_apex_ft": 8.1, + "status": "moderate", + "error_pattern": "CARRY_TOO_SHORT" + }, + "s3_shot_7i_29": { + "diff_carry_yd": 0.1, + "diff_total_yd": -6.6, + "diff_apex_ft": -3.6, + "status": "moderate", + "error_pattern": "ROLLOUT_TOO_SHORT" + }, + "s3_shot_7i_30": { + "diff_carry_yd": -4.7, + "diff_total_yd": 1.0, + "diff_apex_ft": 5.3, + "status": "moderate", + "error_pattern": "CARRY_TOO_SHORT" + }, + "s3_shot_7i_31": { + "diff_carry_yd": -0.4, + "diff_total_yd": -14.7, + "diff_apex_ft": -4.2, + "status": "severe", + "error_pattern": "ROLLOUT_TOO_SHORT" + }, + "s3_shot_7i_32": { + "diff_carry_yd": -2.4, + "diff_total_yd": -2.8, + "diff_apex_ft": 3.0, + "status": "pass", + "error_pattern": null + }, + "s3_shot_7i_33": { + "diff_carry_yd": -2.2, + "diff_total_yd": -1.9, + "diff_apex_ft": 4.5, + "status": "pass", + "error_pattern": null + }, + "s3_shot_7i_34": { + "diff_carry_yd": -0.4, + "diff_total_yd": 2.0, + "diff_apex_ft": 3.0, + "status": "pass", + "error_pattern": null + }, + "s3_shot_9i_1": { + "diff_carry_yd": -0.5, + "diff_total_yd": -13.0, + "diff_apex_ft": 1.2, + "status": "severe", + "error_pattern": "ROLLOUT_TOO_SHORT" + }, + "s3_shot_9i_2": { + "diff_carry_yd": -0.2, + "diff_total_yd": -9.2, + "diff_apex_ft": -3.1, + "status": "moderate", + "error_pattern": "ROLLOUT_TOO_SHORT" + }, + "s3_shot_9i_3": { + "diff_carry_yd": -1.9, + "diff_total_yd": 1.4, + "diff_apex_ft": -5.4, + "status": "pass", + "error_pattern": null + }, + "s3_shot_9i_5": { + "diff_carry_yd": -0.4, + "diff_total_yd": -5.9, + "diff_apex_ft": -5.5, + "status": "moderate", + "error_pattern": "ROLLOUT_TOO_SHORT" + }, + "s3_shot_9i_7": { + "diff_carry_yd": 0.6, + "diff_total_yd": 1.1, + "diff_apex_ft": -4.3, + "status": "pass", + "error_pattern": null + }, + "s3_shot_9i_8": { + "diff_carry_yd": -2.3, + "diff_total_yd": 4.7, + "diff_apex_ft": -1.8, + "status": "pass", + "error_pattern": null + }, + "s3_shot_9i_9": { + "diff_carry_yd": -1.8, + "diff_total_yd": 2.3, + "diff_apex_ft": -6.3, + "status": "pass", + "error_pattern": null + }, + "s3_shot_driver_51": { + "diff_carry_yd": 0.4, + "diff_total_yd": 28.4, + "diff_apex_ft": 0.0, + "status": "severe", + "error_pattern": "ROLLOUT_TOO_LONG" + }, + "s3_shot_driver_52": { + "diff_carry_yd": 4.2, + "diff_total_yd": 23.9, + "diff_apex_ft": -2.0, + "status": "severe", + "error_pattern": "CARRY_AND_ROLLOUT_LONG" + }, + "s3_shot_driver_53": { + "diff_carry_yd": 0.5, + "diff_total_yd": 15.7, + "diff_apex_ft": -4.5, + "status": "severe", + "error_pattern": "ROLLOUT_TOO_LONG" + }, + "s3_shot_driver_54": { + "diff_carry_yd": -1.8, + "diff_total_yd": -0.7, + "diff_apex_ft": -2.5, + "status": "pass", + "error_pattern": null + }, + "s3_shot_driver_55": { + "diff_carry_yd": 2.0, + "diff_total_yd": 21.7, + "diff_apex_ft": 0.4, + "status": "severe", + "error_pattern": "ROLLOUT_TOO_LONG" + }, + "s3_shot_driver_56": { + "diff_carry_yd": -3.3, + "diff_total_yd": 19.6, + "diff_apex_ft": 9.4, + "status": "severe", + "error_pattern": "CARRY_TOO_SHORT" + }, + "s3_shot_driver_57": { + "diff_carry_yd": -5.8, + "diff_total_yd": -20.4, + "diff_apex_ft": -3.7, + "status": "severe", + "error_pattern": "CARRY_AND_ROLLOUT_SHORT" + }, + "s3_shot_driver_58": { + "diff_carry_yd": 7.0, + "diff_total_yd": 34.0, + "diff_apex_ft": -5.4, + "status": "severe", + "error_pattern": "CARRY_AND_ROLLOUT_LONG" + }, + "s3_shot_driver_59": { + "diff_carry_yd": -1.6, + "diff_total_yd": 14.4, + "diff_apex_ft": -4.2, + "status": "severe", + "error_pattern": "ROLLOUT_TOO_LONG" + }, + "s3_shot_driver_60": { + "diff_carry_yd": -0.6, + "diff_total_yd": -15.4, + "diff_apex_ft": -2.5, + "status": "severe", + "error_pattern": "ROLLOUT_TOO_SHORT" + }, + "s3_shot_pw_64": { + "diff_carry_yd": -0.3, + "diff_total_yd": 9.1, + "diff_apex_ft": -3.8, + "status": "moderate", + "error_pattern": "ROLLOUT_TOO_LONG" + }, + "s3_shot_pw_65": { + "diff_carry_yd": -0.6, + "diff_total_yd": 4.2, + "diff_apex_ft": -4.0, + "status": "pass", + "error_pattern": null + }, + "s3_shot_pw_66": { + "diff_carry_yd": -0.4, + "diff_total_yd": 10.8, + "diff_apex_ft": -3.9, + "status": "severe", + "error_pattern": "ROLLOUT_TOO_LONG" + }, + "s3_shot_pw_67": { + "diff_carry_yd": -0.4, + "diff_total_yd": 5.2, + "diff_apex_ft": -4.1, + "status": "moderate", + "error_pattern": "ROLLOUT_TOO_LONG" + }, + "s3_shot_pw_68": { + "diff_carry_yd": -0.5, + "diff_total_yd": 6.1, + "diff_apex_ft": -6.4, + "status": "moderate", + "error_pattern": "ROLLOUT_TOO_LONG" + }, + "s3_shot_pw_69": { + "diff_carry_yd": -0.4, + "diff_total_yd": 11.6, + "diff_apex_ft": -3.9, + "status": "severe", + "error_pattern": "ROLLOUT_TOO_LONG" + }, + "s4_shot_3w_31": { + "diff_carry_yd": -0.1, + "diff_total_yd": -3.6, + "diff_apex_ft": -3.6, + "status": "pass", + "error_pattern": null + }, + "s4_shot_3w_32": { + "diff_carry_yd": 1.5, + "diff_total_yd": 12.2, + "diff_apex_ft": 1.4, + "status": "severe", + "error_pattern": "ROLLOUT_TOO_LONG" + }, + "s4_shot_3w_33": { + "diff_carry_yd": 5.7, + "diff_total_yd": 13.2, + "diff_apex_ft": -8.2, + "status": "severe", + "error_pattern": "CARRY_AND_ROLLOUT_LONG" + }, + "s4_shot_3w_34": { + "diff_carry_yd": 3.6, + "diff_total_yd": 2.2, + "diff_apex_ft": -2.5, + "status": "moderate", + "error_pattern": "CARRY_TOO_LONG" + }, + "s4_shot_3w_35": { + "diff_carry_yd": 4.5, + "diff_total_yd": 2.8, + "diff_apex_ft": -3.1, + "status": "moderate", + "error_pattern": "CARRY_TOO_LONG" + }, + "s4_shot_5i_25": { + "diff_carry_yd": 0.0, + "diff_total_yd": -7.2, + "diff_apex_ft": -5.5, + "status": "moderate", + "error_pattern": "ROLLOUT_TOO_SHORT" + }, + "s4_shot_5i_26": { + "diff_carry_yd": 3.1, + "diff_total_yd": 5.0, + "diff_apex_ft": 2.9, + "status": "moderate", + "error_pattern": "CARRY_TOO_LONG" + }, + "s4_shot_5i_27": { + "diff_carry_yd": -2.0, + "diff_total_yd": 10.8, + "diff_apex_ft": -0.2, + "status": "severe", + "error_pattern": "ROLLOUT_TOO_LONG" + }, + "s4_shot_5i_28": { + "diff_carry_yd": 0.0, + "diff_total_yd": -6.9, + "diff_apex_ft": 5.0, + "status": "moderate", + "error_pattern": "ROLLOUT_TOO_SHORT" + }, + "s4_shot_5i_29": { + "diff_carry_yd": 0.0, + "diff_total_yd": 13.8, + "diff_apex_ft": 1.0, + "status": "severe", + "error_pattern": "ROLLOUT_TOO_LONG" + }, + "s4_shot_5i_30": { + "diff_carry_yd": 1.3, + "diff_total_yd": 4.1, + "diff_apex_ft": -7.1, + "status": "pass", + "error_pattern": null + }, + "s4_shot_6i_19": { + "diff_carry_yd": 0.0, + "diff_total_yd": -11.5, + "diff_apex_ft": 0.2, + "status": "severe", + "error_pattern": "ROLLOUT_TOO_SHORT" + }, + "s4_shot_6i_20": { + "diff_carry_yd": -0.1, + "diff_total_yd": 11.4, + "diff_apex_ft": 0.0, + "status": "severe", + "error_pattern": "ROLLOUT_TOO_LONG" + }, + "s4_shot_6i_21": { + "diff_carry_yd": 0.9, + "diff_total_yd": -1.5, + "diff_apex_ft": -6.8, + "status": "pass", + "error_pattern": null + }, + "s4_shot_6i_22": { + "diff_carry_yd": 0.0, + "diff_total_yd": 10.8, + "diff_apex_ft": 0.9, + "status": "severe", + "error_pattern": "ROLLOUT_TOO_LONG" + }, + "s4_shot_6i_23": { + "diff_carry_yd": null, + "diff_total_yd": null, + "diff_apex_ft": null, + "status": "pass", + "error_pattern": null + }, + "s4_shot_6i_24": { + "diff_carry_yd": null, + "diff_total_yd": null, + "diff_apex_ft": null, + "status": "pass", + "error_pattern": null + }, + "s4_shot_9i_13": { + "diff_carry_yd": null, + "diff_total_yd": null, + "diff_apex_ft": null, + "status": "pass", + "error_pattern": null + }, + "s4_shot_9i_14": { + "diff_carry_yd": -0.0, + "diff_total_yd": 1.2, + "diff_apex_ft": -6.4, + "status": "pass", + "error_pattern": null + }, + "s4_shot_9i_15": { + "diff_carry_yd": -2.9, + "diff_total_yd": 10.8, + "diff_apex_ft": -3.7, + "status": "severe", + "error_pattern": "ROLLOUT_TOO_LONG" + }, + "s4_shot_9i_17": { + "diff_carry_yd": 3.0, + "diff_total_yd": -16.6, + "diff_apex_ft": -0.6, + "status": "severe", + "error_pattern": "ROLLOUT_TOO_SHORT" + }, + "s4_shot_9i_18": { + "diff_carry_yd": -2.8, + "diff_total_yd": 8.7, + "diff_apex_ft": -3.5, + "status": "moderate", + "error_pattern": "ROLLOUT_TOO_LONG" + }, + "s4_shot_lw_38": { + "diff_carry_yd": 0.0, + "diff_total_yd": 2.1, + "diff_apex_ft": -4.0, + "status": "pass", + "error_pattern": null + }, + "s4_shot_pw_1": { + "diff_carry_yd": 0.0, + "diff_total_yd": -14.3, + "diff_apex_ft": -0.3, + "status": "severe", + "error_pattern": "ROLLOUT_TOO_SHORT" + }, + "s4_shot_pw_10": { + "diff_carry_yd": -2.4, + "diff_total_yd": 0.4, + "diff_apex_ft": -4.2, + "status": "pass", + "error_pattern": null + }, + "s4_shot_pw_11": { + "diff_carry_yd": -2.6, + "diff_total_yd": 0.4, + "diff_apex_ft": -3.8, + "status": "pass", + "error_pattern": null + }, + "s4_shot_pw_2": { + "diff_carry_yd": 0.0, + "diff_total_yd": 4.3, + "diff_apex_ft": -1.6, + "status": "pass", + "error_pattern": null + }, + "s4_shot_pw_3": { + "diff_carry_yd": 0.0, + "diff_total_yd": 3.9, + "diff_apex_ft": -3.9, + "status": "pass", + "error_pattern": null + }, + "s4_shot_pw_47": { + "diff_carry_yd": 0.0, + "diff_total_yd": 4.0, + "diff_apex_ft": -1.2, + "status": "pass", + "error_pattern": null + }, + "s4_shot_pw_48": { + "diff_carry_yd": 0.0, + "diff_total_yd": 2.7, + "diff_apex_ft": -1.3, + "status": "pass", + "error_pattern": null + }, + "s4_shot_pw_49": { + "diff_carry_yd": 0.0, + "diff_total_yd": 4.4, + "diff_apex_ft": -1.9, + "status": "pass", + "error_pattern": null + }, + "s4_shot_pw_6": { + "diff_carry_yd": 0.0, + "diff_total_yd": 7.0, + "diff_apex_ft": -3.6, + "status": "moderate", + "error_pattern": "ROLLOUT_TOO_LONG" + }, + "s4_shot_pw_7": { + "diff_carry_yd": -2.0, + "diff_total_yd": 12.2, + "diff_apex_ft": -3.7, + "status": "severe", + "error_pattern": "ROLLOUT_TOO_LONG" + }, + "s4_shot_pw_9": { + "diff_carry_yd": null, + "diff_total_yd": null, + "diff_apex_ft": null, + "status": "pass", + "error_pattern": null + }, + "topped_test_shot": { + "diff_carry_yd": -0.7, + "diff_total_yd": 13.8, + "diff_apex_ft": -0.1, + "status": "severe", + "error_pattern": "ROLLOUT_TOO_LONG" + }, + "wedge_shot_1": { + "diff_carry_yd": -0.7, + "diff_total_yd": -1.7, + "diff_apex_ft": -2.6, + "status": "pass", + "error_pattern": null + }, + "wedge_shot_2": { + "diff_carry_yd": -0.5, + "diff_total_yd": 2.1, + "diff_apex_ft": -4.4, + "status": "pass", + "error_pattern": null + }, + "wedge_test_shot": { + "diff_carry_yd": -0.3, + "diff_total_yd": 3.2, + "diff_apex_ft": -3.2, + "status": "pass", + "error_pattern": null + }, + "wedge_test_shot2": { + "diff_carry_yd": -0.1, + "diff_total_yd": 2.9, + "diff_apex_ft": -2.0, + "status": "pass", + "error_pattern": null + }, + "wood1": { + "diff_carry_yd": 2.9, + "diff_total_yd": -4.0, + "diff_apex_ft": 3.1, + "status": "pass", + "error_pattern": null + }, + "wood2": { + "diff_carry_yd": 3.8, + "diff_total_yd": 0.4, + "diff_apex_ft": -1.8, + "status": "moderate", + "error_pattern": "CARRY_TOO_LONG" + }, + "wood_low_test_shot": { + "diff_carry_yd": 1.3, + "diff_total_yd": 22.0, + "diff_apex_ft": 0.3, + "status": "severe", + "error_pattern": "ROLLOUT_TOO_LONG" + } + }, + "regressions": [], + "conflicts": [ + "Bounce.FlightTangentialRetentionBase", + "Bounce.FlightSpinFactorMin", + "Bounce.FlightSpinFactorDivisor", + "Rollout.MidSpinMultiplierMax", + "Rollout.HighSpinMultiplierMax", + "Rollout.FrictionBlendSpeed", + "KineticFrictionMultiplier", + "Bounce.RolloutHighSpinRetention", + "Rollout.ChipVelocityScaleMin", + "Rollout.ChipVelocityScaleMax", + "Bounce.CorBaseA", + "Rollout.LowSpinMultiplierMax", + "Rollout.LowSpinThreshold", + "RollingFrictionMultiplier", + "Bounce.RolloutLowSpinRetention", + "Flight.ClMaxBase", + "Flight.CdMin", + "DragScaleMultiplier", + "LiftScaleMultiplier" + ] +} diff --git a/assets/data/calibration/history/iteration_052.json b/assets/data/calibration/history/iteration_052.json new file mode 100644 index 0000000..fa93b42 --- /dev/null +++ b/assets/data/calibration/history/iteration_052.json @@ -0,0 +1,987 @@ +{ + "iteration": 52, + "timestamp": "2026-03-14T01:21:28.605589", + "profile_overrides": {}, + "summary": { + "pass": 39, + "moderate": 29, + "severe": 61, + "no_reference": 7 + }, + "per_shot": { + "5iron": { + "diff_carry_yd": 0.8, + "diff_total_yd": 11.3, + "diff_apex_ft": 4.6, + "status": "severe", + "error_pattern": "ROLLOUT_TOO_LONG" + }, + "approach_mid_iron_test_shot": { + "diff_carry_yd": -0.6, + "diff_total_yd": 7.3, + "diff_apex_ft": -5.0, + "status": "moderate", + "error_pattern": "ROLLOUT_TOO_LONG" + }, + "bump_and_run": { + "diff_carry_yd": -0.1, + "diff_total_yd": -27.5, + "diff_apex_ft": -2.1, + "status": "severe", + "error_pattern": "ROLLOUT_TOO_SHORT" + }, + "bump_and_run_slow": { + "diff_carry_yd": null, + "diff_total_yd": null, + "diff_apex_ft": null, + "status": "pass", + "error_pattern": null + }, + "bump_test_shot": { + "diff_carry_yd": 0.0, + "diff_total_yd": 12.7, + "diff_apex_ft": -0.1, + "status": "severe", + "error_pattern": "ROLLOUT_TOO_LONG" + }, + "checked_test_shot": { + "diff_carry_yd": -2.1, + "diff_total_yd": -0.5, + "diff_apex_ft": -9.6, + "status": "pass", + "error_pattern": null + }, + "chip_test_shot": { + "diff_carry_yd": null, + "diff_total_yd": null, + "diff_apex_ft": null, + "status": "pass", + "error_pattern": null + }, + "drive_test_shot": { + "diff_carry_yd": -0.4, + "diff_total_yd": -0.6, + "diff_apex_ft": -1.1, + "status": "pass", + "error_pattern": null + }, + "driver1": { + "diff_carry_yd": -0.3, + "diff_total_yd": -26.3, + "diff_apex_ft": -0.8, + "status": "severe", + "error_pattern": "ROLLOUT_TOO_SHORT" + }, + "driver2": { + "diff_carry_yd": 1.2, + "diff_total_yd": 7.3, + "diff_apex_ft": -3.0, + "status": "moderate", + "error_pattern": "ROLLOUT_TOO_LONG" + }, + "driver3": { + "diff_carry_yd": -1.9, + "diff_total_yd": 20.4, + "diff_apex_ft": 20.6, + "status": "severe", + "error_pattern": "ROLLOUT_TOO_LONG" + }, + "driver4": { + "diff_carry_yd": -0.7, + "diff_total_yd": 15.0, + "diff_apex_ft": 4.1, + "status": "severe", + "error_pattern": "ROLLOUT_TOO_LONG" + }, + "flop_test_shot": { + "diff_carry_yd": -0.2, + "diff_total_yd": 1.6, + "diff_apex_ft": -8.5, + "status": "pass", + "error_pattern": null + }, + "p_wedge_shot_1": { + "diff_carry_yd": -0.5, + "diff_total_yd": 1.7, + "diff_apex_ft": -5.5, + "status": "pass", + "error_pattern": null + }, + "s2_shot_10": { + "diff_carry_yd": -0.6, + "diff_total_yd": 10.2, + "diff_apex_ft": -6.0, + "status": "severe", + "error_pattern": "ROLLOUT_TOO_LONG" + }, + "s2_shot_11": { + "diff_carry_yd": -0.9, + "diff_total_yd": 1.1, + "diff_apex_ft": -4.6, + "status": "pass", + "error_pattern": null + }, + "s2_shot_12": { + "diff_carry_yd": 1.0, + "diff_total_yd": 9.5, + "diff_apex_ft": -5.3, + "status": "moderate", + "error_pattern": "ROLLOUT_TOO_LONG" + }, + "s2_shot_13": { + "diff_carry_yd": -2.3, + "diff_total_yd": 3.2, + "diff_apex_ft": -6.1, + "status": "pass", + "error_pattern": null + }, + "s2_shot_14": { + "diff_carry_yd": -0.0, + "diff_total_yd": 1.7, + "diff_apex_ft": -6.1, + "status": "pass", + "error_pattern": null + }, + "s2_shot_15": { + "diff_carry_yd": 0.0, + "diff_total_yd": -12.7, + "diff_apex_ft": -2.0, + "status": "severe", + "error_pattern": "ROLLOUT_TOO_SHORT" + }, + "s2_shot_16": { + "diff_carry_yd": -0.3, + "diff_total_yd": 2.2, + "diff_apex_ft": -3.5, + "status": "pass", + "error_pattern": null + }, + "s2_shot_17": { + "diff_carry_yd": -1.4, + "diff_total_yd": 8.0, + "diff_apex_ft": -3.9, + "status": "moderate", + "error_pattern": "ROLLOUT_TOO_LONG" + }, + "s2_shot_18": { + "diff_carry_yd": 0.3, + "diff_total_yd": 14.0, + "diff_apex_ft": 2.6, + "status": "severe", + "error_pattern": "ROLLOUT_TOO_LONG" + }, + "s2_shot_19": { + "diff_carry_yd": -4.2, + "diff_total_yd": -6.1, + "diff_apex_ft": -1.2, + "status": "moderate", + "error_pattern": "CARRY_AND_ROLLOUT_SHORT" + }, + "s2_shot_20": { + "diff_carry_yd": -1.2, + "diff_total_yd": 11.5, + "diff_apex_ft": -2.0, + "status": "severe", + "error_pattern": "ROLLOUT_TOO_LONG" + }, + "s2_shot_21": { + "diff_carry_yd": 4.9, + "diff_total_yd": 27.7, + "diff_apex_ft": 1.7, + "status": "severe", + "error_pattern": "CARRY_AND_ROLLOUT_LONG" + }, + "s2_shot_22": { + "diff_carry_yd": -1.8, + "diff_total_yd": 1.6, + "diff_apex_ft": -1.6, + "status": "pass", + "error_pattern": null + }, + "s2_shot_23": { + "diff_carry_yd": -4.4, + "diff_total_yd": -19.6, + "diff_apex_ft": 0.0, + "status": "severe", + "error_pattern": "CARRY_AND_ROLLOUT_SHORT" + }, + "s2_shot_24": { + "diff_carry_yd": -1.7, + "diff_total_yd": 3.4, + "diff_apex_ft": -1.9, + "status": "pass", + "error_pattern": null + }, + "s2_shot_26": { + "diff_carry_yd": 1.7, + "diff_total_yd": 20.6, + "diff_apex_ft": 23.5, + "status": "severe", + "error_pattern": "ROLLOUT_TOO_LONG" + }, + "s2_shot_27": { + "diff_carry_yd": -4.4, + "diff_total_yd": 12.8, + "diff_apex_ft": 4.8, + "status": "severe", + "error_pattern": "CARRY_TOO_SHORT" + }, + "s2_shot_9": { + "diff_carry_yd": -3.3, + "diff_total_yd": 1.6, + "diff_apex_ft": 7.1, + "status": "moderate", + "error_pattern": "CARRY_TOO_SHORT" + }, + "s3_shot_3w_18": { + "diff_carry_yd": null, + "diff_total_yd": null, + "diff_apex_ft": null, + "status": "pass", + "error_pattern": null + }, + "s3_shot_3w_19": { + "diff_carry_yd": -0.6, + "diff_total_yd": 16.0, + "diff_apex_ft": 0.1, + "status": "severe", + "error_pattern": "ROLLOUT_TOO_LONG" + }, + "s3_shot_3w_21": { + "diff_carry_yd": 0.6, + "diff_total_yd": 15.9, + "diff_apex_ft": 0.3, + "status": "severe", + "error_pattern": "ROLLOUT_TOO_LONG" + }, + "s3_shot_3w_22": { + "diff_carry_yd": -0.5, + "diff_total_yd": 19.6, + "diff_apex_ft": 0.5, + "status": "severe", + "error_pattern": "ROLLOUT_TOO_LONG" + }, + "s3_shot_3w_23": { + "diff_carry_yd": 0.1, + "diff_total_yd": -23.3, + "diff_apex_ft": -1.3, + "status": "severe", + "error_pattern": "ROLLOUT_TOO_SHORT" + }, + "s3_shot_3w_24": { + "diff_carry_yd": 2.9, + "diff_total_yd": 28.4, + "diff_apex_ft": 1.8, + "status": "severe", + "error_pattern": "ROLLOUT_TOO_LONG" + }, + "s3_shot_5i_10": { + "diff_carry_yd": -0.5, + "diff_total_yd": -7.6, + "diff_apex_ft": 5.8, + "status": "moderate", + "error_pattern": "ROLLOUT_TOO_SHORT" + }, + "s3_shot_5i_11": { + "diff_carry_yd": -0.5, + "diff_total_yd": -17.6, + "diff_apex_ft": -1.3, + "status": "severe", + "error_pattern": "ROLLOUT_TOO_SHORT" + }, + "s3_shot_5i_12": { + "diff_carry_yd": 1.1, + "diff_total_yd": -23.5, + "diff_apex_ft": 1.1, + "status": "severe", + "error_pattern": "ROLLOUT_TOO_SHORT" + }, + "s3_shot_5i_13": { + "diff_carry_yd": -0.3, + "diff_total_yd": 10.1, + "diff_apex_ft": 0.6, + "status": "severe", + "error_pattern": "ROLLOUT_TOO_LONG" + }, + "s3_shot_5i_15": { + "diff_carry_yd": -0.1, + "diff_total_yd": 14.5, + "diff_apex_ft": -1.1, + "status": "severe", + "error_pattern": "ROLLOUT_TOO_LONG" + }, + "s3_shot_5i_16": { + "diff_carry_yd": 0.9, + "diff_total_yd": -21.0, + "diff_apex_ft": -0.2, + "status": "severe", + "error_pattern": "ROLLOUT_TOO_SHORT" + }, + "s3_shot_5i_17": { + "diff_carry_yd": -0.2, + "diff_total_yd": -1.7, + "diff_apex_ft": -0.3, + "status": "pass", + "error_pattern": null + }, + "s3_shot_6i_35": { + "diff_carry_yd": -0.4, + "diff_total_yd": -17.0, + "diff_apex_ft": -3.4, + "status": "severe", + "error_pattern": "ROLLOUT_TOO_SHORT" + }, + "s3_shot_6i_36": { + "diff_carry_yd": -0.4, + "diff_total_yd": -21.1, + "diff_apex_ft": 0.6, + "status": "severe", + "error_pattern": "ROLLOUT_TOO_SHORT" + }, + "s3_shot_6i_37": { + "diff_carry_yd": -0.1, + "diff_total_yd": 11.9, + "diff_apex_ft": -0.9, + "status": "severe", + "error_pattern": "ROLLOUT_TOO_LONG" + }, + "s3_shot_6i_38": { + "diff_carry_yd": -0.4, + "diff_total_yd": -21.7, + "diff_apex_ft": 0.1, + "status": "severe", + "error_pattern": "ROLLOUT_TOO_SHORT" + }, + "s3_shot_6i_39": { + "diff_carry_yd": -0.5, + "diff_total_yd": 6.4, + "diff_apex_ft": 0.0, + "status": "moderate", + "error_pattern": "ROLLOUT_TOO_LONG" + }, + "s3_shot_6i_40": { + "diff_carry_yd": -1.3, + "diff_total_yd": 7.7, + "diff_apex_ft": 0.1, + "status": "moderate", + "error_pattern": "ROLLOUT_TOO_LONG" + }, + "s3_shot_6i_41": { + "diff_carry_yd": -0.1, + "diff_total_yd": 12.9, + "diff_apex_ft": -1.0, + "status": "severe", + "error_pattern": "ROLLOUT_TOO_LONG" + }, + "s3_shot_6i_42": { + "diff_carry_yd": 0.0, + "diff_total_yd": -17.8, + "diff_apex_ft": 0.7, + "status": "severe", + "error_pattern": "ROLLOUT_TOO_SHORT" + }, + "s3_shot_6i_43": { + "diff_carry_yd": 1.6, + "diff_total_yd": -0.2, + "diff_apex_ft": 7.8, + "status": "pass", + "error_pattern": null + }, + "s3_shot_6i_44": { + "diff_carry_yd": -1.8, + "diff_total_yd": -28.0, + "diff_apex_ft": -1.4, + "status": "severe", + "error_pattern": "ROLLOUT_TOO_SHORT" + }, + "s3_shot_6i_45": { + "diff_carry_yd": -0.5, + "diff_total_yd": 20.4, + "diff_apex_ft": 0.5, + "status": "severe", + "error_pattern": "ROLLOUT_TOO_LONG" + }, + "s3_shot_6i_46": { + "diff_carry_yd": 3.1, + "diff_total_yd": -4.2, + "diff_apex_ft": -1.7, + "status": "moderate", + "error_pattern": "CARRY_TOO_LONG" + }, + "s3_shot_6i_47": { + "diff_carry_yd": 2.1, + "diff_total_yd": 8.3, + "diff_apex_ft": 11.4, + "status": "moderate", + "error_pattern": "ROLLOUT_TOO_LONG" + }, + "s3_shot_6i_48": { + "diff_carry_yd": 1.3, + "diff_total_yd": 8.8, + "diff_apex_ft": 13.8, + "status": "moderate", + "error_pattern": "ROLLOUT_TOO_LONG" + }, + "s3_shot_6i_49": { + "diff_carry_yd": 0.0, + "diff_total_yd": 6.9, + "diff_apex_ft": -0.3, + "status": "moderate", + "error_pattern": "ROLLOUT_TOO_LONG" + }, + "s3_shot_6i_50": { + "diff_carry_yd": -0.9, + "diff_total_yd": -12.5, + "diff_apex_ft": 3.8, + "status": "severe", + "error_pattern": "ROLLOUT_TOO_SHORT" + }, + "s3_shot_7i_25": { + "diff_carry_yd": -0.9, + "diff_total_yd": -18.4, + "diff_apex_ft": 0.9, + "status": "severe", + "error_pattern": "ROLLOUT_TOO_SHORT" + }, + "s3_shot_7i_26": { + "diff_carry_yd": -0.3, + "diff_total_yd": -22.1, + "diff_apex_ft": 1.1, + "status": "severe", + "error_pattern": "ROLLOUT_TOO_SHORT" + }, + "s3_shot_7i_27": { + "diff_carry_yd": -2.8, + "diff_total_yd": 4.7, + "diff_apex_ft": 7.7, + "status": "pass", + "error_pattern": null + }, + "s3_shot_7i_28": { + "diff_carry_yd": -3.5, + "diff_total_yd": 1.5, + "diff_apex_ft": 8.1, + "status": "moderate", + "error_pattern": "CARRY_TOO_SHORT" + }, + "s3_shot_7i_29": { + "diff_carry_yd": 0.1, + "diff_total_yd": -6.6, + "diff_apex_ft": -3.6, + "status": "moderate", + "error_pattern": "ROLLOUT_TOO_SHORT" + }, + "s3_shot_7i_30": { + "diff_carry_yd": -4.7, + "diff_total_yd": 1.0, + "diff_apex_ft": 5.3, + "status": "moderate", + "error_pattern": "CARRY_TOO_SHORT" + }, + "s3_shot_7i_31": { + "diff_carry_yd": -0.4, + "diff_total_yd": -14.7, + "diff_apex_ft": -4.2, + "status": "severe", + "error_pattern": "ROLLOUT_TOO_SHORT" + }, + "s3_shot_7i_32": { + "diff_carry_yd": -2.4, + "diff_total_yd": -2.8, + "diff_apex_ft": 3.0, + "status": "pass", + "error_pattern": null + }, + "s3_shot_7i_33": { + "diff_carry_yd": -2.2, + "diff_total_yd": -1.9, + "diff_apex_ft": 4.5, + "status": "pass", + "error_pattern": null + }, + "s3_shot_7i_34": { + "diff_carry_yd": -0.4, + "diff_total_yd": 2.0, + "diff_apex_ft": 3.0, + "status": "pass", + "error_pattern": null + }, + "s3_shot_9i_1": { + "diff_carry_yd": -0.5, + "diff_total_yd": -13.0, + "diff_apex_ft": 1.2, + "status": "severe", + "error_pattern": "ROLLOUT_TOO_SHORT" + }, + "s3_shot_9i_2": { + "diff_carry_yd": -0.2, + "diff_total_yd": -9.2, + "diff_apex_ft": -3.1, + "status": "moderate", + "error_pattern": "ROLLOUT_TOO_SHORT" + }, + "s3_shot_9i_3": { + "diff_carry_yd": -1.9, + "diff_total_yd": 1.4, + "diff_apex_ft": -5.4, + "status": "pass", + "error_pattern": null + }, + "s3_shot_9i_5": { + "diff_carry_yd": -0.4, + "diff_total_yd": -5.9, + "diff_apex_ft": -5.5, + "status": "moderate", + "error_pattern": "ROLLOUT_TOO_SHORT" + }, + "s3_shot_9i_7": { + "diff_carry_yd": 0.6, + "diff_total_yd": 1.1, + "diff_apex_ft": -4.3, + "status": "pass", + "error_pattern": null + }, + "s3_shot_9i_8": { + "diff_carry_yd": -2.3, + "diff_total_yd": 4.7, + "diff_apex_ft": -1.8, + "status": "pass", + "error_pattern": null + }, + "s3_shot_9i_9": { + "diff_carry_yd": -1.8, + "diff_total_yd": 2.3, + "diff_apex_ft": -6.3, + "status": "pass", + "error_pattern": null + }, + "s3_shot_driver_51": { + "diff_carry_yd": 0.4, + "diff_total_yd": 28.4, + "diff_apex_ft": 0.0, + "status": "severe", + "error_pattern": "ROLLOUT_TOO_LONG" + }, + "s3_shot_driver_52": { + "diff_carry_yd": 4.2, + "diff_total_yd": 23.9, + "diff_apex_ft": -2.0, + "status": "severe", + "error_pattern": "CARRY_AND_ROLLOUT_LONG" + }, + "s3_shot_driver_53": { + "diff_carry_yd": 0.5, + "diff_total_yd": 15.7, + "diff_apex_ft": -4.5, + "status": "severe", + "error_pattern": "ROLLOUT_TOO_LONG" + }, + "s3_shot_driver_54": { + "diff_carry_yd": -1.8, + "diff_total_yd": -0.7, + "diff_apex_ft": -2.5, + "status": "pass", + "error_pattern": null + }, + "s3_shot_driver_55": { + "diff_carry_yd": 2.0, + "diff_total_yd": 21.7, + "diff_apex_ft": 0.4, + "status": "severe", + "error_pattern": "ROLLOUT_TOO_LONG" + }, + "s3_shot_driver_56": { + "diff_carry_yd": -3.3, + "diff_total_yd": 19.6, + "diff_apex_ft": 9.4, + "status": "severe", + "error_pattern": "CARRY_TOO_SHORT" + }, + "s3_shot_driver_57": { + "diff_carry_yd": -5.8, + "diff_total_yd": -20.4, + "diff_apex_ft": -3.7, + "status": "severe", + "error_pattern": "CARRY_AND_ROLLOUT_SHORT" + }, + "s3_shot_driver_58": { + "diff_carry_yd": 7.0, + "diff_total_yd": 34.0, + "diff_apex_ft": -5.4, + "status": "severe", + "error_pattern": "CARRY_AND_ROLLOUT_LONG" + }, + "s3_shot_driver_59": { + "diff_carry_yd": -1.6, + "diff_total_yd": 14.4, + "diff_apex_ft": -4.2, + "status": "severe", + "error_pattern": "ROLLOUT_TOO_LONG" + }, + "s3_shot_driver_60": { + "diff_carry_yd": -0.6, + "diff_total_yd": -15.4, + "diff_apex_ft": -2.5, + "status": "severe", + "error_pattern": "ROLLOUT_TOO_SHORT" + }, + "s3_shot_pw_64": { + "diff_carry_yd": -0.3, + "diff_total_yd": 9.1, + "diff_apex_ft": -3.8, + "status": "moderate", + "error_pattern": "ROLLOUT_TOO_LONG" + }, + "s3_shot_pw_65": { + "diff_carry_yd": -0.6, + "diff_total_yd": 4.2, + "diff_apex_ft": -4.0, + "status": "pass", + "error_pattern": null + }, + "s3_shot_pw_66": { + "diff_carry_yd": -0.4, + "diff_total_yd": 10.8, + "diff_apex_ft": -3.9, + "status": "severe", + "error_pattern": "ROLLOUT_TOO_LONG" + }, + "s3_shot_pw_67": { + "diff_carry_yd": -0.4, + "diff_total_yd": 5.2, + "diff_apex_ft": -4.1, + "status": "moderate", + "error_pattern": "ROLLOUT_TOO_LONG" + }, + "s3_shot_pw_68": { + "diff_carry_yd": -0.5, + "diff_total_yd": 6.1, + "diff_apex_ft": -6.4, + "status": "moderate", + "error_pattern": "ROLLOUT_TOO_LONG" + }, + "s3_shot_pw_69": { + "diff_carry_yd": -0.4, + "diff_total_yd": 11.6, + "diff_apex_ft": -3.9, + "status": "severe", + "error_pattern": "ROLLOUT_TOO_LONG" + }, + "s4_shot_3w_31": { + "diff_carry_yd": -0.1, + "diff_total_yd": -3.6, + "diff_apex_ft": -3.6, + "status": "pass", + "error_pattern": null + }, + "s4_shot_3w_32": { + "diff_carry_yd": 1.5, + "diff_total_yd": 12.2, + "diff_apex_ft": 1.4, + "status": "severe", + "error_pattern": "ROLLOUT_TOO_LONG" + }, + "s4_shot_3w_33": { + "diff_carry_yd": 5.7, + "diff_total_yd": 13.2, + "diff_apex_ft": -8.2, + "status": "severe", + "error_pattern": "CARRY_AND_ROLLOUT_LONG" + }, + "s4_shot_3w_34": { + "diff_carry_yd": 3.6, + "diff_total_yd": 2.2, + "diff_apex_ft": -2.5, + "status": "moderate", + "error_pattern": "CARRY_TOO_LONG" + }, + "s4_shot_3w_35": { + "diff_carry_yd": 4.5, + "diff_total_yd": 2.8, + "diff_apex_ft": -3.1, + "status": "moderate", + "error_pattern": "CARRY_TOO_LONG" + }, + "s4_shot_5i_25": { + "diff_carry_yd": 0.0, + "diff_total_yd": -7.2, + "diff_apex_ft": -5.5, + "status": "moderate", + "error_pattern": "ROLLOUT_TOO_SHORT" + }, + "s4_shot_5i_26": { + "diff_carry_yd": 3.1, + "diff_total_yd": 5.0, + "diff_apex_ft": 2.9, + "status": "moderate", + "error_pattern": "CARRY_TOO_LONG" + }, + "s4_shot_5i_27": { + "diff_carry_yd": -2.0, + "diff_total_yd": 10.8, + "diff_apex_ft": -0.2, + "status": "severe", + "error_pattern": "ROLLOUT_TOO_LONG" + }, + "s4_shot_5i_28": { + "diff_carry_yd": 0.0, + "diff_total_yd": -6.9, + "diff_apex_ft": 5.0, + "status": "moderate", + "error_pattern": "ROLLOUT_TOO_SHORT" + }, + "s4_shot_5i_29": { + "diff_carry_yd": 0.0, + "diff_total_yd": 13.8, + "diff_apex_ft": 1.0, + "status": "severe", + "error_pattern": "ROLLOUT_TOO_LONG" + }, + "s4_shot_5i_30": { + "diff_carry_yd": 1.3, + "diff_total_yd": 4.1, + "diff_apex_ft": -7.1, + "status": "pass", + "error_pattern": null + }, + "s4_shot_6i_19": { + "diff_carry_yd": 0.0, + "diff_total_yd": -11.5, + "diff_apex_ft": 0.2, + "status": "severe", + "error_pattern": "ROLLOUT_TOO_SHORT" + }, + "s4_shot_6i_20": { + "diff_carry_yd": -0.1, + "diff_total_yd": 11.4, + "diff_apex_ft": 0.0, + "status": "severe", + "error_pattern": "ROLLOUT_TOO_LONG" + }, + "s4_shot_6i_21": { + "diff_carry_yd": 0.9, + "diff_total_yd": -1.5, + "diff_apex_ft": -6.8, + "status": "pass", + "error_pattern": null + }, + "s4_shot_6i_22": { + "diff_carry_yd": 0.0, + "diff_total_yd": 10.8, + "diff_apex_ft": 0.9, + "status": "severe", + "error_pattern": "ROLLOUT_TOO_LONG" + }, + "s4_shot_6i_23": { + "diff_carry_yd": null, + "diff_total_yd": null, + "diff_apex_ft": null, + "status": "pass", + "error_pattern": null + }, + "s4_shot_6i_24": { + "diff_carry_yd": null, + "diff_total_yd": null, + "diff_apex_ft": null, + "status": "pass", + "error_pattern": null + }, + "s4_shot_9i_13": { + "diff_carry_yd": null, + "diff_total_yd": null, + "diff_apex_ft": null, + "status": "pass", + "error_pattern": null + }, + "s4_shot_9i_14": { + "diff_carry_yd": -0.0, + "diff_total_yd": 1.2, + "diff_apex_ft": -6.4, + "status": "pass", + "error_pattern": null + }, + "s4_shot_9i_15": { + "diff_carry_yd": -2.9, + "diff_total_yd": 10.8, + "diff_apex_ft": -3.7, + "status": "severe", + "error_pattern": "ROLLOUT_TOO_LONG" + }, + "s4_shot_9i_17": { + "diff_carry_yd": 3.0, + "diff_total_yd": -16.6, + "diff_apex_ft": -0.6, + "status": "severe", + "error_pattern": "ROLLOUT_TOO_SHORT" + }, + "s4_shot_9i_18": { + "diff_carry_yd": -2.8, + "diff_total_yd": 8.7, + "diff_apex_ft": -3.5, + "status": "moderate", + "error_pattern": "ROLLOUT_TOO_LONG" + }, + "s4_shot_lw_38": { + "diff_carry_yd": 0.0, + "diff_total_yd": 2.1, + "diff_apex_ft": -4.0, + "status": "pass", + "error_pattern": null + }, + "s4_shot_pw_1": { + "diff_carry_yd": 0.0, + "diff_total_yd": -14.3, + "diff_apex_ft": -0.3, + "status": "severe", + "error_pattern": "ROLLOUT_TOO_SHORT" + }, + "s4_shot_pw_10": { + "diff_carry_yd": -2.4, + "diff_total_yd": 0.4, + "diff_apex_ft": -4.2, + "status": "pass", + "error_pattern": null + }, + "s4_shot_pw_11": { + "diff_carry_yd": -2.6, + "diff_total_yd": 0.4, + "diff_apex_ft": -3.8, + "status": "pass", + "error_pattern": null + }, + "s4_shot_pw_2": { + "diff_carry_yd": 0.0, + "diff_total_yd": 4.3, + "diff_apex_ft": -1.6, + "status": "pass", + "error_pattern": null + }, + "s4_shot_pw_3": { + "diff_carry_yd": 0.0, + "diff_total_yd": 3.9, + "diff_apex_ft": -3.9, + "status": "pass", + "error_pattern": null + }, + "s4_shot_pw_47": { + "diff_carry_yd": 0.0, + "diff_total_yd": 4.0, + "diff_apex_ft": -1.2, + "status": "pass", + "error_pattern": null + }, + "s4_shot_pw_48": { + "diff_carry_yd": 0.0, + "diff_total_yd": 2.7, + "diff_apex_ft": -1.3, + "status": "pass", + "error_pattern": null + }, + "s4_shot_pw_49": { + "diff_carry_yd": 0.0, + "diff_total_yd": 4.4, + "diff_apex_ft": -1.9, + "status": "pass", + "error_pattern": null + }, + "s4_shot_pw_6": { + "diff_carry_yd": 0.0, + "diff_total_yd": 7.0, + "diff_apex_ft": -3.6, + "status": "moderate", + "error_pattern": "ROLLOUT_TOO_LONG" + }, + "s4_shot_pw_7": { + "diff_carry_yd": -2.0, + "diff_total_yd": 12.2, + "diff_apex_ft": -3.7, + "status": "severe", + "error_pattern": "ROLLOUT_TOO_LONG" + }, + "s4_shot_pw_9": { + "diff_carry_yd": null, + "diff_total_yd": null, + "diff_apex_ft": null, + "status": "pass", + "error_pattern": null + }, + "topped_test_shot": { + "diff_carry_yd": -0.7, + "diff_total_yd": 13.8, + "diff_apex_ft": -0.1, + "status": "severe", + "error_pattern": "ROLLOUT_TOO_LONG" + }, + "wedge_shot_1": { + "diff_carry_yd": -0.7, + "diff_total_yd": -1.7, + "diff_apex_ft": -2.6, + "status": "pass", + "error_pattern": null + }, + "wedge_shot_2": { + "diff_carry_yd": -0.5, + "diff_total_yd": 2.1, + "diff_apex_ft": -4.4, + "status": "pass", + "error_pattern": null + }, + "wedge_test_shot": { + "diff_carry_yd": -0.3, + "diff_total_yd": 3.2, + "diff_apex_ft": -3.2, + "status": "pass", + "error_pattern": null + }, + "wedge_test_shot2": { + "diff_carry_yd": -0.1, + "diff_total_yd": 2.9, + "diff_apex_ft": -2.0, + "status": "pass", + "error_pattern": null + }, + "wood1": { + "diff_carry_yd": 2.9, + "diff_total_yd": -4.0, + "diff_apex_ft": 3.1, + "status": "pass", + "error_pattern": null + }, + "wood2": { + "diff_carry_yd": 3.8, + "diff_total_yd": 0.4, + "diff_apex_ft": -1.8, + "status": "moderate", + "error_pattern": "CARRY_TOO_LONG" + }, + "wood_low_test_shot": { + "diff_carry_yd": 1.3, + "diff_total_yd": 22.0, + "diff_apex_ft": 0.3, + "status": "severe", + "error_pattern": "ROLLOUT_TOO_LONG" + } + }, + "regressions": [], + "conflicts": [ + "Bounce.FlightTangentialRetentionBase", + "Bounce.FlightSpinFactorMin", + "Bounce.FlightSpinFactorDivisor", + "Rollout.MidSpinMultiplierMax", + "Rollout.HighSpinMultiplierMax", + "Rollout.FrictionBlendSpeed", + "KineticFrictionMultiplier", + "Bounce.RolloutHighSpinRetention", + "Rollout.ChipVelocityScaleMin", + "Rollout.ChipVelocityScaleMax", + "Bounce.CorBaseA", + "Rollout.LowSpinMultiplierMax", + "Rollout.LowSpinThreshold", + "RollingFrictionMultiplier", + "Bounce.RolloutLowSpinRetention", + "Flight.ClMaxBase", + "Flight.CdMin", + "DragScaleMultiplier", + "LiftScaleMultiplier" + ] +} diff --git a/assets/data/calibration/history/iteration_053.json b/assets/data/calibration/history/iteration_053.json new file mode 100644 index 0000000..1741e29 --- /dev/null +++ b/assets/data/calibration/history/iteration_053.json @@ -0,0 +1,1113 @@ +{ + "iteration": 53, + "timestamp": "2026-03-14T01:41:49.427149", + "profile_overrides": {}, + "summary": { + "pass": 23, + "moderate": 41, + "severe": 65, + "no_reference": 7 + }, + "per_shot": { + "5iron": { + "diff_carry_yd": 4.8, + "diff_total_yd": 11.3, + "diff_apex_ft": 4.6, + "status": "severe", + "error_pattern": "CARRY_AND_ROLLOUT_LONG" + }, + "approach_mid_iron_test_shot": { + "diff_carry_yd": -0.6, + "diff_total_yd": 7.3, + "diff_apex_ft": -5.0, + "status": "moderate", + "error_pattern": "ROLLOUT_TOO_LONG" + }, + "bump_and_run": { + "diff_carry_yd": -9.1, + "diff_total_yd": -27.5, + "diff_apex_ft": -2.1, + "status": "severe", + "error_pattern": "CARRY_AND_ROLLOUT_SHORT" + }, + "bump_and_run_slow": { + "diff_carry_yd": null, + "diff_total_yd": null, + "diff_apex_ft": null, + "status": "pass", + "error_pattern": null + }, + "bump_test_shot": { + "diff_carry_yd": -2.1, + "diff_total_yd": 12.7, + "diff_apex_ft": -0.1, + "status": "severe", + "error_pattern": "ROLLOUT_TOO_LONG" + }, + "checked_test_shot": { + "diff_carry_yd": -2.1, + "diff_total_yd": -0.5, + "diff_apex_ft": -9.6, + "status": "pass", + "error_pattern": null + }, + "chip_test_shot": { + "diff_carry_yd": null, + "diff_total_yd": null, + "diff_apex_ft": null, + "status": "pass", + "error_pattern": null + }, + "drive_test_shot": { + "diff_carry_yd": -0.4, + "diff_total_yd": -0.6, + "diff_apex_ft": -1.1, + "status": "pass", + "error_pattern": null + }, + "driver1": { + "diff_carry_yd": -0.3, + "diff_total_yd": -26.3, + "diff_apex_ft": -0.8, + "status": "severe", + "error_pattern": "ROLLOUT_TOO_SHORT" + }, + "driver2": { + "diff_carry_yd": 7.6, + "diff_total_yd": 7.3, + "diff_apex_ft": -3.0, + "status": "severe", + "error_pattern": "CARRY_AND_ROLLOUT_LONG" + }, + "driver3": { + "diff_carry_yd": 5.1, + "diff_total_yd": 20.4, + "diff_apex_ft": 20.6, + "status": "severe", + "error_pattern": "CARRY_AND_ROLLOUT_LONG" + }, + "driver4": { + "diff_carry_yd": 6.3, + "diff_total_yd": 15.0, + "diff_apex_ft": 4.1, + "status": "severe", + "error_pattern": "CARRY_AND_ROLLOUT_LONG" + }, + "flop_test_shot": { + "diff_carry_yd": -0.2, + "diff_total_yd": 1.6, + "diff_apex_ft": -8.5, + "status": "pass", + "error_pattern": null + }, + "p_wedge_shot_1": { + "diff_carry_yd": -4.8, + "diff_total_yd": 1.7, + "diff_apex_ft": -5.5, + "status": "moderate", + "error_pattern": "CARRY_TOO_SHORT" + }, + "s2_shot_10": { + "diff_carry_yd": 3.4, + "diff_total_yd": 10.2, + "diff_apex_ft": -6.0, + "status": "severe", + "error_pattern": "CARRY_AND_ROLLOUT_LONG" + }, + "s2_shot_11": { + "diff_carry_yd": -2.6, + "diff_total_yd": 1.1, + "diff_apex_ft": -4.6, + "status": "pass", + "error_pattern": null + }, + "s2_shot_12": { + "diff_carry_yd": 4.5, + "diff_total_yd": 9.5, + "diff_apex_ft": -5.3, + "status": "moderate", + "error_pattern": "CARRY_AND_ROLLOUT_LONG" + }, + "s2_shot_13": { + "diff_carry_yd": 1.2, + "diff_total_yd": 3.2, + "diff_apex_ft": -6.1, + "status": "pass", + "error_pattern": null + }, + "s2_shot_14": { + "diff_carry_yd": -0.3, + "diff_total_yd": 1.7, + "diff_apex_ft": -6.1, + "status": "pass", + "error_pattern": null + }, + "s2_shot_15": { + "diff_carry_yd": -1.0, + "diff_total_yd": -12.7, + "diff_apex_ft": -2.0, + "status": "severe", + "error_pattern": "ROLLOUT_TOO_SHORT" + }, + "s2_shot_16": { + "diff_carry_yd": -0.3, + "diff_total_yd": 2.2, + "diff_apex_ft": -3.5, + "status": "pass", + "error_pattern": null + }, + "s2_shot_17": { + "diff_carry_yd": 5.8, + "diff_total_yd": 8.0, + "diff_apex_ft": -3.9, + "status": "moderate", + "error_pattern": "CARRY_AND_ROLLOUT_LONG" + }, + "s2_shot_18": { + "diff_carry_yd": 4.3, + "diff_total_yd": 14.0, + "diff_apex_ft": 2.6, + "status": "severe", + "error_pattern": "CARRY_AND_ROLLOUT_LONG" + }, + "s2_shot_19": { + "diff_carry_yd": 2.2, + "diff_total_yd": -6.1, + "diff_apex_ft": -1.2, + "status": "moderate", + "error_pattern": "ROLLOUT_TOO_SHORT" + }, + "s2_shot_20": { + "diff_carry_yd": 6.0, + "diff_total_yd": 11.5, + "diff_apex_ft": -2.0, + "status": "severe", + "error_pattern": "CARRY_AND_ROLLOUT_LONG" + }, + "s2_shot_21": { + "diff_carry_yd": 4.9, + "diff_total_yd": 27.7, + "diff_apex_ft": 1.7, + "status": "severe", + "error_pattern": "CARRY_AND_ROLLOUT_LONG" + }, + "s2_shot_22": { + "diff_carry_yd": 4.6, + "diff_total_yd": 1.6, + "diff_apex_ft": -1.6, + "status": "moderate", + "error_pattern": "CARRY_TOO_LONG" + }, + "s2_shot_23": { + "diff_carry_yd": 3.5, + "diff_total_yd": -19.6, + "diff_apex_ft": 0.0, + "status": "severe", + "error_pattern": "CARRY_TOO_LONG" + }, + "s2_shot_24": { + "diff_carry_yd": 4.7, + "diff_total_yd": 3.4, + "diff_apex_ft": -1.9, + "status": "moderate", + "error_pattern": "CARRY_TOO_LONG" + }, + "s2_shot_26": { + "diff_carry_yd": 1.7, + "diff_total_yd": 20.6, + "diff_apex_ft": 23.5, + "status": "severe", + "error_pattern": "ROLLOUT_TOO_LONG" + }, + "s2_shot_27": { + "diff_carry_yd": 2.6, + "diff_total_yd": 12.8, + "diff_apex_ft": 4.8, + "status": "severe", + "error_pattern": "ROLLOUT_TOO_LONG" + }, + "s2_shot_9": { + "diff_carry_yd": -3.3, + "diff_total_yd": 1.6, + "diff_apex_ft": 7.1, + "status": "moderate", + "error_pattern": "CARRY_TOO_SHORT" + }, + "s3_shot_3w_18": { + "diff_carry_yd": null, + "diff_total_yd": null, + "diff_apex_ft": null, + "status": "pass", + "error_pattern": null + }, + "s3_shot_3w_19": { + "diff_carry_yd": -0.6, + "diff_total_yd": 16.0, + "diff_apex_ft": 0.1, + "status": "severe", + "error_pattern": "ROLLOUT_TOO_LONG" + }, + "s3_shot_3w_21": { + "diff_carry_yd": 0.6, + "diff_total_yd": 15.9, + "diff_apex_ft": 0.3, + "status": "severe", + "error_pattern": "ROLLOUT_TOO_LONG" + }, + "s3_shot_3w_22": { + "diff_carry_yd": 2.6, + "diff_total_yd": 19.6, + "diff_apex_ft": 0.5, + "status": "severe", + "error_pattern": "ROLLOUT_TOO_LONG" + }, + "s3_shot_3w_23": { + "diff_carry_yd": 0.1, + "diff_total_yd": -23.3, + "diff_apex_ft": -1.3, + "status": "severe", + "error_pattern": "ROLLOUT_TOO_SHORT" + }, + "s3_shot_3w_24": { + "diff_carry_yd": 6.9, + "diff_total_yd": 28.4, + "diff_apex_ft": 1.8, + "status": "severe", + "error_pattern": "CARRY_AND_ROLLOUT_LONG" + }, + "s3_shot_5i_10": { + "diff_carry_yd": 2.5, + "diff_total_yd": -7.6, + "diff_apex_ft": 5.8, + "status": "moderate", + "error_pattern": "ROLLOUT_TOO_SHORT" + }, + "s3_shot_5i_11": { + "diff_carry_yd": -3.7, + "diff_total_yd": -17.6, + "diff_apex_ft": -1.3, + "status": "severe", + "error_pattern": "CARRY_AND_ROLLOUT_SHORT" + }, + "s3_shot_5i_12": { + "diff_carry_yd": 1.1, + "diff_total_yd": -23.5, + "diff_apex_ft": 1.1, + "status": "severe", + "error_pattern": "ROLLOUT_TOO_SHORT" + }, + "s3_shot_5i_13": { + "diff_carry_yd": 2.3, + "diff_total_yd": 10.1, + "diff_apex_ft": 0.6, + "status": "severe", + "error_pattern": "ROLLOUT_TOO_LONG" + }, + "s3_shot_5i_15": { + "diff_carry_yd": -4.6, + "diff_total_yd": 14.5, + "diff_apex_ft": -1.1, + "status": "severe", + "error_pattern": "CARRY_TOO_SHORT" + }, + "s3_shot_5i_16": { + "diff_carry_yd": 0.9, + "diff_total_yd": -21.0, + "diff_apex_ft": -0.2, + "status": "severe", + "error_pattern": "ROLLOUT_TOO_SHORT" + }, + "s3_shot_5i_17": { + "diff_carry_yd": -2.2, + "diff_total_yd": -1.7, + "diff_apex_ft": -0.3, + "status": "pass", + "error_pattern": null + }, + "s3_shot_6i_35": { + "diff_carry_yd": -5.5, + "diff_total_yd": -17.0, + "diff_apex_ft": -3.4, + "status": "severe", + "error_pattern": "CARRY_AND_ROLLOUT_SHORT" + }, + "s3_shot_6i_36": { + "diff_carry_yd": 1.7, + "diff_total_yd": -21.1, + "diff_apex_ft": 0.6, + "status": "severe", + "error_pattern": "ROLLOUT_TOO_SHORT" + }, + "s3_shot_6i_37": { + "diff_carry_yd": -3.7, + "diff_total_yd": 11.9, + "diff_apex_ft": -0.9, + "status": "severe", + "error_pattern": "CARRY_TOO_SHORT" + }, + "s3_shot_6i_38": { + "diff_carry_yd": -3.6, + "diff_total_yd": -21.7, + "diff_apex_ft": 0.1, + "status": "severe", + "error_pattern": "CARRY_AND_ROLLOUT_SHORT" + }, + "s3_shot_6i_39": { + "diff_carry_yd": -0.5, + "diff_total_yd": 6.4, + "diff_apex_ft": 0.0, + "status": "moderate", + "error_pattern": "ROLLOUT_TOO_LONG" + }, + "s3_shot_6i_40": { + "diff_carry_yd": -1.3, + "diff_total_yd": 7.7, + "diff_apex_ft": 0.1, + "status": "moderate", + "error_pattern": "ROLLOUT_TOO_LONG" + }, + "s3_shot_6i_41": { + "diff_carry_yd": -4.7, + "diff_total_yd": 12.9, + "diff_apex_ft": -1.0, + "status": "severe", + "error_pattern": "CARRY_TOO_SHORT" + }, + "s3_shot_6i_42": { + "diff_carry_yd": -1.4, + "diff_total_yd": -17.8, + "diff_apex_ft": 0.7, + "status": "severe", + "error_pattern": "ROLLOUT_TOO_SHORT" + }, + "s3_shot_6i_43": { + "diff_carry_yd": 5.6, + "diff_total_yd": -0.2, + "diff_apex_ft": 7.8, + "status": "moderate", + "error_pattern": "CARRY_TOO_LONG" + }, + "s3_shot_6i_44": { + "diff_carry_yd": -1.8, + "diff_total_yd": -28.0, + "diff_apex_ft": -1.4, + "status": "severe", + "error_pattern": "ROLLOUT_TOO_SHORT" + }, + "s3_shot_6i_45": { + "diff_carry_yd": 3.0, + "diff_total_yd": 20.4, + "diff_apex_ft": 0.5, + "status": "severe", + "error_pattern": "ROLLOUT_TOO_LONG" + }, + "s3_shot_6i_46": { + "diff_carry_yd": 3.1, + "diff_total_yd": -4.2, + "diff_apex_ft": -1.7, + "status": "moderate", + "error_pattern": "CARRY_TOO_LONG" + }, + "s3_shot_6i_47": { + "diff_carry_yd": 6.1, + "diff_total_yd": 8.3, + "diff_apex_ft": 11.4, + "status": "moderate", + "error_pattern": "CARRY_AND_ROLLOUT_LONG" + }, + "s3_shot_6i_48": { + "diff_carry_yd": 5.3, + "diff_total_yd": 8.8, + "diff_apex_ft": 13.8, + "status": "moderate", + "error_pattern": "CARRY_AND_ROLLOUT_LONG" + }, + "s3_shot_6i_49": { + "diff_carry_yd": -2.5, + "diff_total_yd": 6.9, + "diff_apex_ft": -0.3, + "status": "moderate", + "error_pattern": "ROLLOUT_TOO_LONG" + }, + "s3_shot_6i_50": { + "diff_carry_yd": -0.9, + "diff_total_yd": -12.5, + "diff_apex_ft": 3.8, + "status": "severe", + "error_pattern": "ROLLOUT_TOO_SHORT" + }, + "s3_shot_7i_25": { + "diff_carry_yd": -0.9, + "diff_total_yd": -18.4, + "diff_apex_ft": 0.9, + "status": "severe", + "error_pattern": "ROLLOUT_TOO_SHORT" + }, + "s3_shot_7i_26": { + "diff_carry_yd": 1.5, + "diff_total_yd": -22.1, + "diff_apex_ft": 1.1, + "status": "severe", + "error_pattern": "ROLLOUT_TOO_SHORT" + }, + "s3_shot_7i_27": { + "diff_carry_yd": 1.2, + "diff_total_yd": 4.7, + "diff_apex_ft": 7.7, + "status": "pass", + "error_pattern": null + }, + "s3_shot_7i_28": { + "diff_carry_yd": 0.5, + "diff_total_yd": 1.5, + "diff_apex_ft": 8.1, + "status": "pass", + "error_pattern": null + }, + "s3_shot_7i_29": { + "diff_carry_yd": 0.1, + "diff_total_yd": -6.6, + "diff_apex_ft": -3.6, + "status": "moderate", + "error_pattern": "ROLLOUT_TOO_SHORT" + }, + "s3_shot_7i_30": { + "diff_carry_yd": -0.7, + "diff_total_yd": 1.0, + "diff_apex_ft": 5.3, + "status": "pass", + "error_pattern": null + }, + "s3_shot_7i_31": { + "diff_carry_yd": -5.2, + "diff_total_yd": -14.7, + "diff_apex_ft": -4.2, + "status": "severe", + "error_pattern": "CARRY_AND_ROLLOUT_SHORT" + }, + "s3_shot_7i_32": { + "diff_carry_yd": -2.4, + "diff_total_yd": -2.8, + "diff_apex_ft": 3.0, + "status": "pass", + "error_pattern": null + }, + "s3_shot_7i_33": { + "diff_carry_yd": -2.2, + "diff_total_yd": -1.9, + "diff_apex_ft": 4.5, + "status": "pass", + "error_pattern": null + }, + "s3_shot_7i_34": { + "diff_carry_yd": 3.6, + "diff_total_yd": 2.0, + "diff_apex_ft": 3.0, + "status": "moderate", + "error_pattern": "CARRY_TOO_LONG" + }, + "s3_shot_9i_1": { + "diff_carry_yd": -1.9, + "diff_total_yd": -13.0, + "diff_apex_ft": 1.2, + "status": "severe", + "error_pattern": "ROLLOUT_TOO_SHORT" + }, + "s3_shot_9i_2": { + "diff_carry_yd": -8.2, + "diff_total_yd": -9.2, + "diff_apex_ft": -3.1, + "status": "severe", + "error_pattern": "CARRY_AND_ROLLOUT_SHORT" + }, + "s3_shot_9i_3": { + "diff_carry_yd": -1.9, + "diff_total_yd": 1.4, + "diff_apex_ft": -5.4, + "status": "pass", + "error_pattern": null + }, + "s3_shot_9i_5": { + "diff_carry_yd": -3.0, + "diff_total_yd": -5.9, + "diff_apex_ft": -5.5, + "status": "moderate", + "error_pattern": "ROLLOUT_TOO_SHORT" + }, + "s3_shot_9i_7": { + "diff_carry_yd": 0.6, + "diff_total_yd": 1.1, + "diff_apex_ft": -4.3, + "status": "pass", + "error_pattern": null + }, + "s3_shot_9i_8": { + "diff_carry_yd": -2.3, + "diff_total_yd": 4.7, + "diff_apex_ft": -1.8, + "status": "pass", + "error_pattern": null + }, + "s3_shot_9i_9": { + "diff_carry_yd": -1.8, + "diff_total_yd": 2.3, + "diff_apex_ft": -6.3, + "status": "pass", + "error_pattern": null + }, + "s3_shot_driver_51": { + "diff_carry_yd": 10.4, + "diff_total_yd": 28.4, + "diff_apex_ft": 0.0, + "status": "severe", + "error_pattern": "CARRY_AND_ROLLOUT_LONG" + }, + "s3_shot_driver_52": { + "diff_carry_yd": 8.2, + "diff_total_yd": 23.9, + "diff_apex_ft": -2.0, + "status": "severe", + "error_pattern": "CARRY_AND_ROLLOUT_LONG" + }, + "s3_shot_driver_53": { + "diff_carry_yd": 4.5, + "diff_total_yd": 15.7, + "diff_apex_ft": -4.5, + "status": "severe", + "error_pattern": "CARRY_AND_ROLLOUT_LONG" + }, + "s3_shot_driver_54": { + "diff_carry_yd": 4.6, + "diff_total_yd": -0.7, + "diff_apex_ft": -2.5, + "status": "moderate", + "error_pattern": "CARRY_TOO_LONG" + }, + "s3_shot_driver_55": { + "diff_carry_yd": 2.0, + "diff_total_yd": 21.7, + "diff_apex_ft": 0.4, + "status": "severe", + "error_pattern": "ROLLOUT_TOO_LONG" + }, + "s3_shot_driver_56": { + "diff_carry_yd": 3.7, + "diff_total_yd": 19.6, + "diff_apex_ft": 9.4, + "status": "severe", + "error_pattern": "CARRY_AND_ROLLOUT_LONG" + }, + "s3_shot_driver_57": { + "diff_carry_yd": -5.8, + "diff_total_yd": -20.4, + "diff_apex_ft": -3.7, + "status": "severe", + "error_pattern": "CARRY_AND_ROLLOUT_SHORT" + }, + "s3_shot_driver_58": { + "diff_carry_yd": 17.0, + "diff_total_yd": 34.0, + "diff_apex_ft": -5.4, + "status": "severe", + "error_pattern": "CARRY_AND_ROLLOUT_LONG" + }, + "s3_shot_driver_59": { + "diff_carry_yd": -1.6, + "diff_total_yd": 14.4, + "diff_apex_ft": -4.2, + "status": "severe", + "error_pattern": "ROLLOUT_TOO_LONG" + }, + "s3_shot_driver_60": { + "diff_carry_yd": -0.6, + "diff_total_yd": -15.4, + "diff_apex_ft": -2.5, + "status": "severe", + "error_pattern": "ROLLOUT_TOO_SHORT" + }, + "s3_shot_pw_64": { + "diff_carry_yd": -4.7, + "diff_total_yd": 9.1, + "diff_apex_ft": -3.8, + "status": "moderate", + "error_pattern": "CARRY_TOO_SHORT" + }, + "s3_shot_pw_65": { + "diff_carry_yd": -0.6, + "diff_total_yd": 4.2, + "diff_apex_ft": -4.0, + "status": "pass", + "error_pattern": null + }, + "s3_shot_pw_66": { + "diff_carry_yd": -3.0, + "diff_total_yd": 10.8, + "diff_apex_ft": -3.9, + "status": "severe", + "error_pattern": "ROLLOUT_TOO_LONG" + }, + "s3_shot_pw_67": { + "diff_carry_yd": -0.4, + "diff_total_yd": 5.2, + "diff_apex_ft": -4.1, + "status": "moderate", + "error_pattern": "ROLLOUT_TOO_LONG" + }, + "s3_shot_pw_68": { + "diff_carry_yd": 2.9, + "diff_total_yd": 6.1, + "diff_apex_ft": -6.4, + "status": "moderate", + "error_pattern": "ROLLOUT_TOO_LONG" + }, + "s3_shot_pw_69": { + "diff_carry_yd": -3.2, + "diff_total_yd": 11.6, + "diff_apex_ft": -3.9, + "status": "severe", + "error_pattern": "CARRY_TOO_SHORT" + }, + "s4_shot_3w_31": { + "diff_carry_yd": -0.1, + "diff_total_yd": -3.6, + "diff_apex_ft": -3.6, + "status": "pass", + "error_pattern": null + }, + "s4_shot_3w_32": { + "diff_carry_yd": 5.5, + "diff_total_yd": 12.2, + "diff_apex_ft": 1.4, + "status": "severe", + "error_pattern": "CARRY_AND_ROLLOUT_LONG" + }, + "s4_shot_3w_33": { + "diff_carry_yd": 9.2, + "diff_total_yd": 13.2, + "diff_apex_ft": -8.2, + "status": "severe", + "error_pattern": "CARRY_AND_ROLLOUT_LONG" + }, + "s4_shot_3w_34": { + "diff_carry_yd": 3.6, + "diff_total_yd": 2.2, + "diff_apex_ft": -2.5, + "status": "moderate", + "error_pattern": "CARRY_TOO_LONG" + }, + "s4_shot_3w_35": { + "diff_carry_yd": 4.5, + "diff_total_yd": 2.8, + "diff_apex_ft": -3.1, + "status": "moderate", + "error_pattern": "CARRY_TOO_LONG" + }, + "s4_shot_5i_25": { + "diff_carry_yd": -2.9, + "diff_total_yd": -7.2, + "diff_apex_ft": -5.5, + "status": "moderate", + "error_pattern": "ROLLOUT_TOO_SHORT" + }, + "s4_shot_5i_26": { + "diff_carry_yd": 3.1, + "diff_total_yd": 5.0, + "diff_apex_ft": 2.9, + "status": "moderate", + "error_pattern": "CARRY_TOO_LONG" + }, + "s4_shot_5i_27": { + "diff_carry_yd": -2.0, + "diff_total_yd": 10.8, + "diff_apex_ft": -0.2, + "status": "severe", + "error_pattern": "ROLLOUT_TOO_LONG" + }, + "s4_shot_5i_28": { + "diff_carry_yd": -0.2, + "diff_total_yd": -6.9, + "diff_apex_ft": 5.0, + "status": "moderate", + "error_pattern": "ROLLOUT_TOO_SHORT" + }, + "s4_shot_5i_29": { + "diff_carry_yd": 6.3, + "diff_total_yd": 13.8, + "diff_apex_ft": 1.0, + "status": "severe", + "error_pattern": "CARRY_AND_ROLLOUT_LONG" + }, + "s4_shot_5i_30": { + "diff_carry_yd": 4.8, + "diff_total_yd": 4.1, + "diff_apex_ft": -7.1, + "status": "moderate", + "error_pattern": "CARRY_TOO_LONG" + }, + "s4_shot_6i_19": { + "diff_carry_yd": -0.5, + "diff_total_yd": -11.5, + "diff_apex_ft": 0.2, + "status": "severe", + "error_pattern": "ROLLOUT_TOO_SHORT" + }, + "s4_shot_6i_20": { + "diff_carry_yd": -0.1, + "diff_total_yd": 11.4, + "diff_apex_ft": 0.0, + "status": "severe", + "error_pattern": "ROLLOUT_TOO_LONG" + }, + "s4_shot_6i_21": { + "diff_carry_yd": 0.9, + "diff_total_yd": -1.5, + "diff_apex_ft": -6.8, + "status": "pass", + "error_pattern": null + }, + "s4_shot_6i_22": { + "diff_carry_yd": 4.5, + "diff_total_yd": 10.8, + "diff_apex_ft": 0.9, + "status": "severe", + "error_pattern": "CARRY_AND_ROLLOUT_LONG" + }, + "s4_shot_6i_23": { + "diff_carry_yd": null, + "diff_total_yd": null, + "diff_apex_ft": null, + "status": "pass", + "error_pattern": null + }, + "s4_shot_6i_24": { + "diff_carry_yd": null, + "diff_total_yd": null, + "diff_apex_ft": null, + "status": "pass", + "error_pattern": null + }, + "s4_shot_9i_13": { + "diff_carry_yd": null, + "diff_total_yd": null, + "diff_apex_ft": null, + "status": "pass", + "error_pattern": null + }, + "s4_shot_9i_14": { + "diff_carry_yd": -0.1, + "diff_total_yd": 1.2, + "diff_apex_ft": -6.4, + "status": "pass", + "error_pattern": null + }, + "s4_shot_9i_15": { + "diff_carry_yd": -2.9, + "diff_total_yd": 10.8, + "diff_apex_ft": -3.7, + "status": "severe", + "error_pattern": "ROLLOUT_TOO_LONG" + }, + "s4_shot_9i_17": { + "diff_carry_yd": -2.0, + "diff_total_yd": -16.6, + "diff_apex_ft": -0.6, + "status": "severe", + "error_pattern": "ROLLOUT_TOO_SHORT" + }, + "s4_shot_9i_18": { + "diff_carry_yd": -2.8, + "diff_total_yd": 8.7, + "diff_apex_ft": -3.5, + "status": "moderate", + "error_pattern": "ROLLOUT_TOO_LONG" + }, + "s4_shot_lw_38": { + "diff_carry_yd": -5.7, + "diff_total_yd": 2.1, + "diff_apex_ft": -4.0, + "status": "moderate", + "error_pattern": "CARRY_TOO_SHORT" + }, + "s4_shot_pw_1": { + "diff_carry_yd": -7.7, + "diff_total_yd": -14.3, + "diff_apex_ft": -0.3, + "status": "severe", + "error_pattern": "CARRY_AND_ROLLOUT_SHORT" + }, + "s4_shot_pw_10": { + "diff_carry_yd": -2.4, + "diff_total_yd": 0.4, + "diff_apex_ft": -4.2, + "status": "pass", + "error_pattern": null + }, + "s4_shot_pw_11": { + "diff_carry_yd": -2.6, + "diff_total_yd": 0.4, + "diff_apex_ft": -3.8, + "status": "pass", + "error_pattern": null + }, + "s4_shot_pw_2": { + "diff_carry_yd": -4.8, + "diff_total_yd": 4.3, + "diff_apex_ft": -1.6, + "status": "moderate", + "error_pattern": "CARRY_TOO_SHORT" + }, + "s4_shot_pw_3": { + "diff_carry_yd": -6.9, + "diff_total_yd": 3.9, + "diff_apex_ft": -3.9, + "status": "moderate", + "error_pattern": "CARRY_TOO_SHORT" + }, + "s4_shot_pw_47": { + "diff_carry_yd": -3.9, + "diff_total_yd": 4.0, + "diff_apex_ft": -1.2, + "status": "moderate", + "error_pattern": "CARRY_TOO_SHORT" + }, + "s4_shot_pw_48": { + "diff_carry_yd": -4.3, + "diff_total_yd": 2.7, + "diff_apex_ft": -1.3, + "status": "moderate", + "error_pattern": "CARRY_TOO_SHORT" + }, + "s4_shot_pw_49": { + "diff_carry_yd": -6.2, + "diff_total_yd": 4.4, + "diff_apex_ft": -1.9, + "status": "moderate", + "error_pattern": "CARRY_TOO_SHORT" + }, + "s4_shot_pw_6": { + "diff_carry_yd": -8.2, + "diff_total_yd": 7.0, + "diff_apex_ft": -3.6, + "status": "severe", + "error_pattern": "CARRY_TOO_SHORT" + }, + "s4_shot_pw_7": { + "diff_carry_yd": -2.0, + "diff_total_yd": 12.2, + "diff_apex_ft": -3.7, + "status": "severe", + "error_pattern": "ROLLOUT_TOO_LONG" + }, + "s4_shot_pw_9": { + "diff_carry_yd": null, + "diff_total_yd": null, + "diff_apex_ft": null, + "status": "pass", + "error_pattern": null + }, + "topped_test_shot": { + "diff_carry_yd": -0.7, + "diff_total_yd": 13.8, + "diff_apex_ft": -0.1, + "status": "severe", + "error_pattern": "ROLLOUT_TOO_LONG" + }, + "wedge_shot_1": { + "diff_carry_yd": -5.8, + "diff_total_yd": -1.7, + "diff_apex_ft": -2.6, + "status": "moderate", + "error_pattern": "CARRY_TOO_SHORT" + }, + "wedge_shot_2": { + "diff_carry_yd": -6.6, + "diff_total_yd": 2.1, + "diff_apex_ft": -4.4, + "status": "moderate", + "error_pattern": "CARRY_TOO_SHORT" + }, + "wedge_test_shot": { + "diff_carry_yd": -5.3, + "diff_total_yd": 3.2, + "diff_apex_ft": -3.2, + "status": "moderate", + "error_pattern": "CARRY_TOO_SHORT" + }, + "wedge_test_shot2": { + "diff_carry_yd": -5.5, + "diff_total_yd": 2.9, + "diff_apex_ft": -2.0, + "status": "moderate", + "error_pattern": "CARRY_TOO_SHORT" + }, + "wood1": { + "diff_carry_yd": 11.9, + "diff_total_yd": -4.0, + "diff_apex_ft": 3.1, + "status": "severe", + "error_pattern": "CARRY_TOO_LONG" + }, + "wood2": { + "diff_carry_yd": 3.8, + "diff_total_yd": 0.4, + "diff_apex_ft": -1.8, + "status": "moderate", + "error_pattern": "CARRY_TOO_LONG" + }, + "wood_low_test_shot": { + "diff_carry_yd": 1.3, + "diff_total_yd": 22.0, + "diff_apex_ft": 0.3, + "status": "severe", + "error_pattern": "ROLLOUT_TOO_LONG" + } + }, + "regressions": [ + { + "shot": "p_wedge_shot_1", + "was": "pass", + "now": "moderate", + "prev_total_diff": 1.7, + "curr_total_diff": 1.7 + }, + { + "shot": "s2_shot_22", + "was": "pass", + "now": "moderate", + "prev_total_diff": 1.6, + "curr_total_diff": 1.6 + }, + { + "shot": "s2_shot_24", + "was": "pass", + "now": "moderate", + "prev_total_diff": 3.4, + "curr_total_diff": 3.4 + }, + { + "shot": "s3_shot_6i_43", + "was": "pass", + "now": "moderate", + "prev_total_diff": -0.2, + "curr_total_diff": -0.2 + }, + { + "shot": "s3_shot_7i_34", + "was": "pass", + "now": "moderate", + "prev_total_diff": 2.0, + "curr_total_diff": 2.0 + }, + { + "shot": "s3_shot_driver_54", + "was": "pass", + "now": "moderate", + "prev_total_diff": -0.7, + "curr_total_diff": -0.7 + }, + { + "shot": "s4_shot_5i_30", + "was": "pass", + "now": "moderate", + "prev_total_diff": 4.1, + "curr_total_diff": 4.1 + }, + { + "shot": "s4_shot_lw_38", + "was": "pass", + "now": "moderate", + "prev_total_diff": 2.1, + "curr_total_diff": 2.1 + }, + { + "shot": "s4_shot_pw_2", + "was": "pass", + "now": "moderate", + "prev_total_diff": 4.3, + "curr_total_diff": 4.3 + }, + { + "shot": "s4_shot_pw_3", + "was": "pass", + "now": "moderate", + "prev_total_diff": 3.9, + "curr_total_diff": 3.9 + }, + { + "shot": "s4_shot_pw_47", + "was": "pass", + "now": "moderate", + "prev_total_diff": 4.0, + "curr_total_diff": 4.0 + }, + { + "shot": "s4_shot_pw_48", + "was": "pass", + "now": "moderate", + "prev_total_diff": 2.7, + "curr_total_diff": 2.7 + }, + { + "shot": "s4_shot_pw_49", + "was": "pass", + "now": "moderate", + "prev_total_diff": 4.4, + "curr_total_diff": 4.4 + }, + { + "shot": "wedge_shot_1", + "was": "pass", + "now": "moderate", + "prev_total_diff": -1.7, + "curr_total_diff": -1.7 + }, + { + "shot": "wedge_shot_2", + "was": "pass", + "now": "moderate", + "prev_total_diff": 2.1, + "curr_total_diff": 2.1 + }, + { + "shot": "wedge_test_shot", + "was": "pass", + "now": "moderate", + "prev_total_diff": 3.2, + "curr_total_diff": 3.2 + }, + { + "shot": "wedge_test_shot2", + "was": "pass", + "now": "moderate", + "prev_total_diff": 2.9, + "curr_total_diff": 2.9 + }, + { + "shot": "wood1", + "was": "pass", + "now": "severe", + "prev_total_diff": -4.0, + "curr_total_diff": -4.0 + } + ], + "conflicts": [ + "Bounce.FlightTangentialRetentionBase", + "Bounce.FlightSpinFactorMin", + "Bounce.FlightSpinFactorDivisor", + "Rollout.MidSpinMultiplierMax", + "Rollout.HighSpinMultiplierMax", + "Rollout.FrictionBlendSpeed", + "KineticFrictionMultiplier", + "Bounce.RolloutHighSpinRetention", + "Bounce.CorBaseA", + "Rollout.LowSpinMultiplierMax", + "Rollout.LowSpinThreshold", + "RollingFrictionMultiplier", + "Bounce.RolloutLowSpinRetention", + "Flight.ClMaxBase", + "Flight.CdMin", + "Flight.HighLaunchDragBoostMax", + "DragScaleMultiplier", + "LiftScaleMultiplier" + ] +} diff --git a/assets/data/calibration/history/iteration_054.json b/assets/data/calibration/history/iteration_054.json new file mode 100644 index 0000000..fc9f09c --- /dev/null +++ b/assets/data/calibration/history/iteration_054.json @@ -0,0 +1,986 @@ +{ + "iteration": 54, + "timestamp": "2026-03-14T01:46:01.456289", + "profile_overrides": {}, + "summary": { + "pass": 23, + "moderate": 41, + "severe": 65, + "no_reference": 7 + }, + "per_shot": { + "5iron": { + "diff_carry_yd": 4.8, + "diff_total_yd": 11.3, + "diff_apex_ft": 4.6, + "status": "severe", + "error_pattern": "CARRY_AND_ROLLOUT_LONG" + }, + "approach_mid_iron_test_shot": { + "diff_carry_yd": -0.6, + "diff_total_yd": 7.3, + "diff_apex_ft": -5.0, + "status": "moderate", + "error_pattern": "ROLLOUT_TOO_LONG" + }, + "bump_and_run": { + "diff_carry_yd": -9.1, + "diff_total_yd": -27.5, + "diff_apex_ft": -2.1, + "status": "severe", + "error_pattern": "CARRY_AND_ROLLOUT_SHORT" + }, + "bump_and_run_slow": { + "diff_carry_yd": null, + "diff_total_yd": null, + "diff_apex_ft": null, + "status": "pass", + "error_pattern": null + }, + "bump_test_shot": { + "diff_carry_yd": -2.1, + "diff_total_yd": 12.7, + "diff_apex_ft": -0.1, + "status": "severe", + "error_pattern": "ROLLOUT_TOO_LONG" + }, + "checked_test_shot": { + "diff_carry_yd": -2.1, + "diff_total_yd": -0.5, + "diff_apex_ft": -9.6, + "status": "pass", + "error_pattern": null + }, + "chip_test_shot": { + "diff_carry_yd": null, + "diff_total_yd": null, + "diff_apex_ft": null, + "status": "pass", + "error_pattern": null + }, + "drive_test_shot": { + "diff_carry_yd": -0.4, + "diff_total_yd": -0.6, + "diff_apex_ft": -1.1, + "status": "pass", + "error_pattern": null + }, + "driver1": { + "diff_carry_yd": -0.3, + "diff_total_yd": -26.3, + "diff_apex_ft": -0.8, + "status": "severe", + "error_pattern": "ROLLOUT_TOO_SHORT" + }, + "driver2": { + "diff_carry_yd": 7.6, + "diff_total_yd": 7.3, + "diff_apex_ft": -3.0, + "status": "severe", + "error_pattern": "CARRY_AND_ROLLOUT_LONG" + }, + "driver3": { + "diff_carry_yd": 5.1, + "diff_total_yd": 20.4, + "diff_apex_ft": 20.6, + "status": "severe", + "error_pattern": "CARRY_AND_ROLLOUT_LONG" + }, + "driver4": { + "diff_carry_yd": 6.3, + "diff_total_yd": 15.0, + "diff_apex_ft": 4.1, + "status": "severe", + "error_pattern": "CARRY_AND_ROLLOUT_LONG" + }, + "flop_test_shot": { + "diff_carry_yd": -0.2, + "diff_total_yd": 1.6, + "diff_apex_ft": -8.5, + "status": "pass", + "error_pattern": null + }, + "p_wedge_shot_1": { + "diff_carry_yd": -4.8, + "diff_total_yd": 1.7, + "diff_apex_ft": -5.5, + "status": "moderate", + "error_pattern": "CARRY_TOO_SHORT" + }, + "s2_shot_10": { + "diff_carry_yd": 3.4, + "diff_total_yd": 10.2, + "diff_apex_ft": -6.0, + "status": "severe", + "error_pattern": "CARRY_AND_ROLLOUT_LONG" + }, + "s2_shot_11": { + "diff_carry_yd": -2.6, + "diff_total_yd": 1.1, + "diff_apex_ft": -4.6, + "status": "pass", + "error_pattern": null + }, + "s2_shot_12": { + "diff_carry_yd": 4.5, + "diff_total_yd": 9.5, + "diff_apex_ft": -5.3, + "status": "moderate", + "error_pattern": "CARRY_AND_ROLLOUT_LONG" + }, + "s2_shot_13": { + "diff_carry_yd": 1.2, + "diff_total_yd": 3.2, + "diff_apex_ft": -6.1, + "status": "pass", + "error_pattern": null + }, + "s2_shot_14": { + "diff_carry_yd": -0.3, + "diff_total_yd": 1.7, + "diff_apex_ft": -6.1, + "status": "pass", + "error_pattern": null + }, + "s2_shot_15": { + "diff_carry_yd": -1.0, + "diff_total_yd": -12.7, + "diff_apex_ft": -2.0, + "status": "severe", + "error_pattern": "ROLLOUT_TOO_SHORT" + }, + "s2_shot_16": { + "diff_carry_yd": -0.3, + "diff_total_yd": 2.2, + "diff_apex_ft": -3.5, + "status": "pass", + "error_pattern": null + }, + "s2_shot_17": { + "diff_carry_yd": 5.8, + "diff_total_yd": 8.0, + "diff_apex_ft": -3.9, + "status": "moderate", + "error_pattern": "CARRY_AND_ROLLOUT_LONG" + }, + "s2_shot_18": { + "diff_carry_yd": 4.3, + "diff_total_yd": 14.0, + "diff_apex_ft": 2.6, + "status": "severe", + "error_pattern": "CARRY_AND_ROLLOUT_LONG" + }, + "s2_shot_19": { + "diff_carry_yd": 2.2, + "diff_total_yd": -6.1, + "diff_apex_ft": -1.2, + "status": "moderate", + "error_pattern": "ROLLOUT_TOO_SHORT" + }, + "s2_shot_20": { + "diff_carry_yd": 6.0, + "diff_total_yd": 11.5, + "diff_apex_ft": -2.0, + "status": "severe", + "error_pattern": "CARRY_AND_ROLLOUT_LONG" + }, + "s2_shot_21": { + "diff_carry_yd": 4.9, + "diff_total_yd": 27.7, + "diff_apex_ft": 1.7, + "status": "severe", + "error_pattern": "CARRY_AND_ROLLOUT_LONG" + }, + "s2_shot_22": { + "diff_carry_yd": 4.6, + "diff_total_yd": 1.6, + "diff_apex_ft": -1.6, + "status": "moderate", + "error_pattern": "CARRY_TOO_LONG" + }, + "s2_shot_23": { + "diff_carry_yd": 3.5, + "diff_total_yd": -19.6, + "diff_apex_ft": 0.0, + "status": "severe", + "error_pattern": "CARRY_TOO_LONG" + }, + "s2_shot_24": { + "diff_carry_yd": 4.7, + "diff_total_yd": 3.4, + "diff_apex_ft": -1.9, + "status": "moderate", + "error_pattern": "CARRY_TOO_LONG" + }, + "s2_shot_26": { + "diff_carry_yd": 1.7, + "diff_total_yd": 20.6, + "diff_apex_ft": 23.5, + "status": "severe", + "error_pattern": "ROLLOUT_TOO_LONG" + }, + "s2_shot_27": { + "diff_carry_yd": 2.6, + "diff_total_yd": 12.8, + "diff_apex_ft": 4.8, + "status": "severe", + "error_pattern": "ROLLOUT_TOO_LONG" + }, + "s2_shot_9": { + "diff_carry_yd": -3.3, + "diff_total_yd": 1.6, + "diff_apex_ft": 7.1, + "status": "moderate", + "error_pattern": "CARRY_TOO_SHORT" + }, + "s3_shot_3w_18": { + "diff_carry_yd": null, + "diff_total_yd": null, + "diff_apex_ft": null, + "status": "pass", + "error_pattern": null + }, + "s3_shot_3w_19": { + "diff_carry_yd": -0.6, + "diff_total_yd": 16.0, + "diff_apex_ft": 0.1, + "status": "severe", + "error_pattern": "ROLLOUT_TOO_LONG" + }, + "s3_shot_3w_21": { + "diff_carry_yd": 0.6, + "diff_total_yd": 15.9, + "diff_apex_ft": 0.3, + "status": "severe", + "error_pattern": "ROLLOUT_TOO_LONG" + }, + "s3_shot_3w_22": { + "diff_carry_yd": 2.6, + "diff_total_yd": 19.6, + "diff_apex_ft": 0.5, + "status": "severe", + "error_pattern": "ROLLOUT_TOO_LONG" + }, + "s3_shot_3w_23": { + "diff_carry_yd": 0.1, + "diff_total_yd": -23.3, + "diff_apex_ft": -1.3, + "status": "severe", + "error_pattern": "ROLLOUT_TOO_SHORT" + }, + "s3_shot_3w_24": { + "diff_carry_yd": 6.9, + "diff_total_yd": 28.4, + "diff_apex_ft": 1.8, + "status": "severe", + "error_pattern": "CARRY_AND_ROLLOUT_LONG" + }, + "s3_shot_5i_10": { + "diff_carry_yd": 2.5, + "diff_total_yd": -7.6, + "diff_apex_ft": 5.8, + "status": "moderate", + "error_pattern": "ROLLOUT_TOO_SHORT" + }, + "s3_shot_5i_11": { + "diff_carry_yd": -3.7, + "diff_total_yd": -17.6, + "diff_apex_ft": -1.3, + "status": "severe", + "error_pattern": "CARRY_AND_ROLLOUT_SHORT" + }, + "s3_shot_5i_12": { + "diff_carry_yd": 1.1, + "diff_total_yd": -23.5, + "diff_apex_ft": 1.1, + "status": "severe", + "error_pattern": "ROLLOUT_TOO_SHORT" + }, + "s3_shot_5i_13": { + "diff_carry_yd": 2.3, + "diff_total_yd": 10.1, + "diff_apex_ft": 0.6, + "status": "severe", + "error_pattern": "ROLLOUT_TOO_LONG" + }, + "s3_shot_5i_15": { + "diff_carry_yd": -4.6, + "diff_total_yd": 14.5, + "diff_apex_ft": -1.1, + "status": "severe", + "error_pattern": "CARRY_TOO_SHORT" + }, + "s3_shot_5i_16": { + "diff_carry_yd": 0.9, + "diff_total_yd": -21.0, + "diff_apex_ft": -0.2, + "status": "severe", + "error_pattern": "ROLLOUT_TOO_SHORT" + }, + "s3_shot_5i_17": { + "diff_carry_yd": -2.2, + "diff_total_yd": -1.7, + "diff_apex_ft": -0.3, + "status": "pass", + "error_pattern": null + }, + "s3_shot_6i_35": { + "diff_carry_yd": -5.5, + "diff_total_yd": -17.0, + "diff_apex_ft": -3.4, + "status": "severe", + "error_pattern": "CARRY_AND_ROLLOUT_SHORT" + }, + "s3_shot_6i_36": { + "diff_carry_yd": 1.7, + "diff_total_yd": -21.1, + "diff_apex_ft": 0.6, + "status": "severe", + "error_pattern": "ROLLOUT_TOO_SHORT" + }, + "s3_shot_6i_37": { + "diff_carry_yd": -3.7, + "diff_total_yd": 11.9, + "diff_apex_ft": -0.9, + "status": "severe", + "error_pattern": "CARRY_TOO_SHORT" + }, + "s3_shot_6i_38": { + "diff_carry_yd": -3.6, + "diff_total_yd": -21.7, + "diff_apex_ft": 0.1, + "status": "severe", + "error_pattern": "CARRY_AND_ROLLOUT_SHORT" + }, + "s3_shot_6i_39": { + "diff_carry_yd": -0.5, + "diff_total_yd": 6.4, + "diff_apex_ft": 0.0, + "status": "moderate", + "error_pattern": "ROLLOUT_TOO_LONG" + }, + "s3_shot_6i_40": { + "diff_carry_yd": -1.3, + "diff_total_yd": 7.7, + "diff_apex_ft": 0.1, + "status": "moderate", + "error_pattern": "ROLLOUT_TOO_LONG" + }, + "s3_shot_6i_41": { + "diff_carry_yd": -4.7, + "diff_total_yd": 12.9, + "diff_apex_ft": -1.0, + "status": "severe", + "error_pattern": "CARRY_TOO_SHORT" + }, + "s3_shot_6i_42": { + "diff_carry_yd": -1.4, + "diff_total_yd": -17.8, + "diff_apex_ft": 0.7, + "status": "severe", + "error_pattern": "ROLLOUT_TOO_SHORT" + }, + "s3_shot_6i_43": { + "diff_carry_yd": 5.6, + "diff_total_yd": -0.2, + "diff_apex_ft": 7.8, + "status": "moderate", + "error_pattern": "CARRY_TOO_LONG" + }, + "s3_shot_6i_44": { + "diff_carry_yd": -1.8, + "diff_total_yd": -28.0, + "diff_apex_ft": -1.4, + "status": "severe", + "error_pattern": "ROLLOUT_TOO_SHORT" + }, + "s3_shot_6i_45": { + "diff_carry_yd": 3.0, + "diff_total_yd": 20.4, + "diff_apex_ft": 0.5, + "status": "severe", + "error_pattern": "ROLLOUT_TOO_LONG" + }, + "s3_shot_6i_46": { + "diff_carry_yd": 3.1, + "diff_total_yd": -4.2, + "diff_apex_ft": -1.7, + "status": "moderate", + "error_pattern": "CARRY_TOO_LONG" + }, + "s3_shot_6i_47": { + "diff_carry_yd": 6.1, + "diff_total_yd": 8.3, + "diff_apex_ft": 11.4, + "status": "moderate", + "error_pattern": "CARRY_AND_ROLLOUT_LONG" + }, + "s3_shot_6i_48": { + "diff_carry_yd": 5.3, + "diff_total_yd": 8.8, + "diff_apex_ft": 13.8, + "status": "moderate", + "error_pattern": "CARRY_AND_ROLLOUT_LONG" + }, + "s3_shot_6i_49": { + "diff_carry_yd": -2.5, + "diff_total_yd": 6.9, + "diff_apex_ft": -0.3, + "status": "moderate", + "error_pattern": "ROLLOUT_TOO_LONG" + }, + "s3_shot_6i_50": { + "diff_carry_yd": -0.9, + "diff_total_yd": -12.5, + "diff_apex_ft": 3.8, + "status": "severe", + "error_pattern": "ROLLOUT_TOO_SHORT" + }, + "s3_shot_7i_25": { + "diff_carry_yd": -0.9, + "diff_total_yd": -18.4, + "diff_apex_ft": 0.9, + "status": "severe", + "error_pattern": "ROLLOUT_TOO_SHORT" + }, + "s3_shot_7i_26": { + "diff_carry_yd": 1.5, + "diff_total_yd": -22.1, + "diff_apex_ft": 1.1, + "status": "severe", + "error_pattern": "ROLLOUT_TOO_SHORT" + }, + "s3_shot_7i_27": { + "diff_carry_yd": 1.2, + "diff_total_yd": 4.7, + "diff_apex_ft": 7.7, + "status": "pass", + "error_pattern": null + }, + "s3_shot_7i_28": { + "diff_carry_yd": 0.5, + "diff_total_yd": 1.5, + "diff_apex_ft": 8.1, + "status": "pass", + "error_pattern": null + }, + "s3_shot_7i_29": { + "diff_carry_yd": 0.1, + "diff_total_yd": -6.6, + "diff_apex_ft": -3.6, + "status": "moderate", + "error_pattern": "ROLLOUT_TOO_SHORT" + }, + "s3_shot_7i_30": { + "diff_carry_yd": -0.7, + "diff_total_yd": 1.0, + "diff_apex_ft": 5.3, + "status": "pass", + "error_pattern": null + }, + "s3_shot_7i_31": { + "diff_carry_yd": -5.2, + "diff_total_yd": -14.7, + "diff_apex_ft": -4.2, + "status": "severe", + "error_pattern": "CARRY_AND_ROLLOUT_SHORT" + }, + "s3_shot_7i_32": { + "diff_carry_yd": -2.4, + "diff_total_yd": -2.8, + "diff_apex_ft": 3.0, + "status": "pass", + "error_pattern": null + }, + "s3_shot_7i_33": { + "diff_carry_yd": -2.2, + "diff_total_yd": -1.9, + "diff_apex_ft": 4.5, + "status": "pass", + "error_pattern": null + }, + "s3_shot_7i_34": { + "diff_carry_yd": 3.6, + "diff_total_yd": 2.0, + "diff_apex_ft": 3.0, + "status": "moderate", + "error_pattern": "CARRY_TOO_LONG" + }, + "s3_shot_9i_1": { + "diff_carry_yd": -1.9, + "diff_total_yd": -13.0, + "diff_apex_ft": 1.2, + "status": "severe", + "error_pattern": "ROLLOUT_TOO_SHORT" + }, + "s3_shot_9i_2": { + "diff_carry_yd": -8.2, + "diff_total_yd": -9.2, + "diff_apex_ft": -3.1, + "status": "severe", + "error_pattern": "CARRY_AND_ROLLOUT_SHORT" + }, + "s3_shot_9i_3": { + "diff_carry_yd": -1.9, + "diff_total_yd": 1.4, + "diff_apex_ft": -5.4, + "status": "pass", + "error_pattern": null + }, + "s3_shot_9i_5": { + "diff_carry_yd": -3.0, + "diff_total_yd": -5.9, + "diff_apex_ft": -5.5, + "status": "moderate", + "error_pattern": "ROLLOUT_TOO_SHORT" + }, + "s3_shot_9i_7": { + "diff_carry_yd": 0.6, + "diff_total_yd": 1.1, + "diff_apex_ft": -4.3, + "status": "pass", + "error_pattern": null + }, + "s3_shot_9i_8": { + "diff_carry_yd": -2.3, + "diff_total_yd": 4.7, + "diff_apex_ft": -1.8, + "status": "pass", + "error_pattern": null + }, + "s3_shot_9i_9": { + "diff_carry_yd": -1.8, + "diff_total_yd": 2.3, + "diff_apex_ft": -6.3, + "status": "pass", + "error_pattern": null + }, + "s3_shot_driver_51": { + "diff_carry_yd": 10.4, + "diff_total_yd": 28.4, + "diff_apex_ft": 0.0, + "status": "severe", + "error_pattern": "CARRY_AND_ROLLOUT_LONG" + }, + "s3_shot_driver_52": { + "diff_carry_yd": 8.2, + "diff_total_yd": 23.9, + "diff_apex_ft": -2.0, + "status": "severe", + "error_pattern": "CARRY_AND_ROLLOUT_LONG" + }, + "s3_shot_driver_53": { + "diff_carry_yd": 4.5, + "diff_total_yd": 15.7, + "diff_apex_ft": -4.5, + "status": "severe", + "error_pattern": "CARRY_AND_ROLLOUT_LONG" + }, + "s3_shot_driver_54": { + "diff_carry_yd": 4.6, + "diff_total_yd": -0.7, + "diff_apex_ft": -2.5, + "status": "moderate", + "error_pattern": "CARRY_TOO_LONG" + }, + "s3_shot_driver_55": { + "diff_carry_yd": 2.0, + "diff_total_yd": 21.7, + "diff_apex_ft": 0.4, + "status": "severe", + "error_pattern": "ROLLOUT_TOO_LONG" + }, + "s3_shot_driver_56": { + "diff_carry_yd": 3.7, + "diff_total_yd": 19.6, + "diff_apex_ft": 9.4, + "status": "severe", + "error_pattern": "CARRY_AND_ROLLOUT_LONG" + }, + "s3_shot_driver_57": { + "diff_carry_yd": -5.8, + "diff_total_yd": -20.4, + "diff_apex_ft": -3.7, + "status": "severe", + "error_pattern": "CARRY_AND_ROLLOUT_SHORT" + }, + "s3_shot_driver_58": { + "diff_carry_yd": 17.0, + "diff_total_yd": 34.0, + "diff_apex_ft": -5.4, + "status": "severe", + "error_pattern": "CARRY_AND_ROLLOUT_LONG" + }, + "s3_shot_driver_59": { + "diff_carry_yd": -1.6, + "diff_total_yd": 14.4, + "diff_apex_ft": -4.2, + "status": "severe", + "error_pattern": "ROLLOUT_TOO_LONG" + }, + "s3_shot_driver_60": { + "diff_carry_yd": -0.6, + "diff_total_yd": -15.4, + "diff_apex_ft": -2.5, + "status": "severe", + "error_pattern": "ROLLOUT_TOO_SHORT" + }, + "s3_shot_pw_64": { + "diff_carry_yd": -4.7, + "diff_total_yd": 9.1, + "diff_apex_ft": -3.8, + "status": "moderate", + "error_pattern": "CARRY_TOO_SHORT" + }, + "s3_shot_pw_65": { + "diff_carry_yd": -0.6, + "diff_total_yd": 4.2, + "diff_apex_ft": -4.0, + "status": "pass", + "error_pattern": null + }, + "s3_shot_pw_66": { + "diff_carry_yd": -3.0, + "diff_total_yd": 10.8, + "diff_apex_ft": -3.9, + "status": "severe", + "error_pattern": "ROLLOUT_TOO_LONG" + }, + "s3_shot_pw_67": { + "diff_carry_yd": -0.4, + "diff_total_yd": 5.2, + "diff_apex_ft": -4.1, + "status": "moderate", + "error_pattern": "ROLLOUT_TOO_LONG" + }, + "s3_shot_pw_68": { + "diff_carry_yd": 2.9, + "diff_total_yd": 6.1, + "diff_apex_ft": -6.4, + "status": "moderate", + "error_pattern": "ROLLOUT_TOO_LONG" + }, + "s3_shot_pw_69": { + "diff_carry_yd": -3.2, + "diff_total_yd": 11.6, + "diff_apex_ft": -3.9, + "status": "severe", + "error_pattern": "CARRY_TOO_SHORT" + }, + "s4_shot_3w_31": { + "diff_carry_yd": -0.1, + "diff_total_yd": -3.6, + "diff_apex_ft": -3.6, + "status": "pass", + "error_pattern": null + }, + "s4_shot_3w_32": { + "diff_carry_yd": 5.5, + "diff_total_yd": 12.2, + "diff_apex_ft": 1.4, + "status": "severe", + "error_pattern": "CARRY_AND_ROLLOUT_LONG" + }, + "s4_shot_3w_33": { + "diff_carry_yd": 9.2, + "diff_total_yd": 13.2, + "diff_apex_ft": -8.2, + "status": "severe", + "error_pattern": "CARRY_AND_ROLLOUT_LONG" + }, + "s4_shot_3w_34": { + "diff_carry_yd": 3.6, + "diff_total_yd": 2.2, + "diff_apex_ft": -2.5, + "status": "moderate", + "error_pattern": "CARRY_TOO_LONG" + }, + "s4_shot_3w_35": { + "diff_carry_yd": 4.5, + "diff_total_yd": 2.8, + "diff_apex_ft": -3.1, + "status": "moderate", + "error_pattern": "CARRY_TOO_LONG" + }, + "s4_shot_5i_25": { + "diff_carry_yd": -2.9, + "diff_total_yd": -7.2, + "diff_apex_ft": -5.5, + "status": "moderate", + "error_pattern": "ROLLOUT_TOO_SHORT" + }, + "s4_shot_5i_26": { + "diff_carry_yd": 3.1, + "diff_total_yd": 5.0, + "diff_apex_ft": 2.9, + "status": "moderate", + "error_pattern": "CARRY_TOO_LONG" + }, + "s4_shot_5i_27": { + "diff_carry_yd": -2.0, + "diff_total_yd": 10.8, + "diff_apex_ft": -0.2, + "status": "severe", + "error_pattern": "ROLLOUT_TOO_LONG" + }, + "s4_shot_5i_28": { + "diff_carry_yd": -0.2, + "diff_total_yd": -6.9, + "diff_apex_ft": 5.0, + "status": "moderate", + "error_pattern": "ROLLOUT_TOO_SHORT" + }, + "s4_shot_5i_29": { + "diff_carry_yd": 6.3, + "diff_total_yd": 13.8, + "diff_apex_ft": 1.0, + "status": "severe", + "error_pattern": "CARRY_AND_ROLLOUT_LONG" + }, + "s4_shot_5i_30": { + "diff_carry_yd": 4.8, + "diff_total_yd": 4.1, + "diff_apex_ft": -7.1, + "status": "moderate", + "error_pattern": "CARRY_TOO_LONG" + }, + "s4_shot_6i_19": { + "diff_carry_yd": -0.5, + "diff_total_yd": -11.5, + "diff_apex_ft": 0.2, + "status": "severe", + "error_pattern": "ROLLOUT_TOO_SHORT" + }, + "s4_shot_6i_20": { + "diff_carry_yd": -0.1, + "diff_total_yd": 11.4, + "diff_apex_ft": 0.0, + "status": "severe", + "error_pattern": "ROLLOUT_TOO_LONG" + }, + "s4_shot_6i_21": { + "diff_carry_yd": 0.9, + "diff_total_yd": -1.5, + "diff_apex_ft": -6.8, + "status": "pass", + "error_pattern": null + }, + "s4_shot_6i_22": { + "diff_carry_yd": 4.5, + "diff_total_yd": 10.8, + "diff_apex_ft": 0.9, + "status": "severe", + "error_pattern": "CARRY_AND_ROLLOUT_LONG" + }, + "s4_shot_6i_23": { + "diff_carry_yd": null, + "diff_total_yd": null, + "diff_apex_ft": null, + "status": "pass", + "error_pattern": null + }, + "s4_shot_6i_24": { + "diff_carry_yd": null, + "diff_total_yd": null, + "diff_apex_ft": null, + "status": "pass", + "error_pattern": null + }, + "s4_shot_9i_13": { + "diff_carry_yd": null, + "diff_total_yd": null, + "diff_apex_ft": null, + "status": "pass", + "error_pattern": null + }, + "s4_shot_9i_14": { + "diff_carry_yd": -0.1, + "diff_total_yd": 1.2, + "diff_apex_ft": -6.4, + "status": "pass", + "error_pattern": null + }, + "s4_shot_9i_15": { + "diff_carry_yd": -2.9, + "diff_total_yd": 10.8, + "diff_apex_ft": -3.7, + "status": "severe", + "error_pattern": "ROLLOUT_TOO_LONG" + }, + "s4_shot_9i_17": { + "diff_carry_yd": -2.0, + "diff_total_yd": -16.6, + "diff_apex_ft": -0.6, + "status": "severe", + "error_pattern": "ROLLOUT_TOO_SHORT" + }, + "s4_shot_9i_18": { + "diff_carry_yd": -2.8, + "diff_total_yd": 8.7, + "diff_apex_ft": -3.5, + "status": "moderate", + "error_pattern": "ROLLOUT_TOO_LONG" + }, + "s4_shot_lw_38": { + "diff_carry_yd": -5.7, + "diff_total_yd": 2.1, + "diff_apex_ft": -4.0, + "status": "moderate", + "error_pattern": "CARRY_TOO_SHORT" + }, + "s4_shot_pw_1": { + "diff_carry_yd": -7.7, + "diff_total_yd": -14.3, + "diff_apex_ft": -0.3, + "status": "severe", + "error_pattern": "CARRY_AND_ROLLOUT_SHORT" + }, + "s4_shot_pw_10": { + "diff_carry_yd": -2.4, + "diff_total_yd": 0.4, + "diff_apex_ft": -4.2, + "status": "pass", + "error_pattern": null + }, + "s4_shot_pw_11": { + "diff_carry_yd": -2.6, + "diff_total_yd": 0.4, + "diff_apex_ft": -3.8, + "status": "pass", + "error_pattern": null + }, + "s4_shot_pw_2": { + "diff_carry_yd": -4.8, + "diff_total_yd": 4.3, + "diff_apex_ft": -1.6, + "status": "moderate", + "error_pattern": "CARRY_TOO_SHORT" + }, + "s4_shot_pw_3": { + "diff_carry_yd": -6.9, + "diff_total_yd": 3.9, + "diff_apex_ft": -3.9, + "status": "moderate", + "error_pattern": "CARRY_TOO_SHORT" + }, + "s4_shot_pw_47": { + "diff_carry_yd": -3.9, + "diff_total_yd": 4.0, + "diff_apex_ft": -1.2, + "status": "moderate", + "error_pattern": "CARRY_TOO_SHORT" + }, + "s4_shot_pw_48": { + "diff_carry_yd": -4.3, + "diff_total_yd": 2.7, + "diff_apex_ft": -1.3, + "status": "moderate", + "error_pattern": "CARRY_TOO_SHORT" + }, + "s4_shot_pw_49": { + "diff_carry_yd": -6.2, + "diff_total_yd": 4.4, + "diff_apex_ft": -1.9, + "status": "moderate", + "error_pattern": "CARRY_TOO_SHORT" + }, + "s4_shot_pw_6": { + "diff_carry_yd": -8.2, + "diff_total_yd": 7.0, + "diff_apex_ft": -3.6, + "status": "severe", + "error_pattern": "CARRY_TOO_SHORT" + }, + "s4_shot_pw_7": { + "diff_carry_yd": -2.0, + "diff_total_yd": 12.2, + "diff_apex_ft": -3.7, + "status": "severe", + "error_pattern": "ROLLOUT_TOO_LONG" + }, + "s4_shot_pw_9": { + "diff_carry_yd": null, + "diff_total_yd": null, + "diff_apex_ft": null, + "status": "pass", + "error_pattern": null + }, + "topped_test_shot": { + "diff_carry_yd": -0.7, + "diff_total_yd": 13.8, + "diff_apex_ft": -0.1, + "status": "severe", + "error_pattern": "ROLLOUT_TOO_LONG" + }, + "wedge_shot_1": { + "diff_carry_yd": -5.8, + "diff_total_yd": -1.7, + "diff_apex_ft": -2.6, + "status": "moderate", + "error_pattern": "CARRY_TOO_SHORT" + }, + "wedge_shot_2": { + "diff_carry_yd": -6.6, + "diff_total_yd": 2.1, + "diff_apex_ft": -4.4, + "status": "moderate", + "error_pattern": "CARRY_TOO_SHORT" + }, + "wedge_test_shot": { + "diff_carry_yd": -5.3, + "diff_total_yd": 3.2, + "diff_apex_ft": -3.2, + "status": "moderate", + "error_pattern": "CARRY_TOO_SHORT" + }, + "wedge_test_shot2": { + "diff_carry_yd": -5.5, + "diff_total_yd": 2.9, + "diff_apex_ft": -2.0, + "status": "moderate", + "error_pattern": "CARRY_TOO_SHORT" + }, + "wood1": { + "diff_carry_yd": 11.9, + "diff_total_yd": -4.0, + "diff_apex_ft": 3.1, + "status": "severe", + "error_pattern": "CARRY_TOO_LONG" + }, + "wood2": { + "diff_carry_yd": 3.8, + "diff_total_yd": 0.4, + "diff_apex_ft": -1.8, + "status": "moderate", + "error_pattern": "CARRY_TOO_LONG" + }, + "wood_low_test_shot": { + "diff_carry_yd": 1.3, + "diff_total_yd": 22.0, + "diff_apex_ft": 0.3, + "status": "severe", + "error_pattern": "ROLLOUT_TOO_LONG" + } + }, + "regressions": [], + "conflicts": [ + "Bounce.FlightTangentialRetentionBase", + "Bounce.FlightSpinFactorMin", + "Bounce.FlightSpinFactorDivisor", + "Rollout.MidSpinMultiplierMax", + "Rollout.HighSpinMultiplierMax", + "Rollout.FrictionBlendSpeed", + "KineticFrictionMultiplier", + "Bounce.RolloutHighSpinRetention", + "Bounce.CorBaseA", + "Rollout.LowSpinMultiplierMax", + "Rollout.LowSpinThreshold", + "RollingFrictionMultiplier", + "Bounce.RolloutLowSpinRetention", + "Flight.ClMaxBase", + "Flight.CdMin", + "Flight.HighLaunchDragBoostMax", + "DragScaleMultiplier", + "LiftScaleMultiplier" + ] +} diff --git a/assets/data/calibration/history/iteration_055.json b/assets/data/calibration/history/iteration_055.json new file mode 100644 index 0000000..23b0427 --- /dev/null +++ b/assets/data/calibration/history/iteration_055.json @@ -0,0 +1,986 @@ +{ + "iteration": 55, + "timestamp": "2026-03-14T01:46:21.407629", + "profile_overrides": {}, + "summary": { + "pass": 23, + "moderate": 41, + "severe": 65, + "no_reference": 7 + }, + "per_shot": { + "5iron": { + "diff_carry_yd": 4.8, + "diff_total_yd": 11.3, + "diff_apex_ft": 4.6, + "status": "severe", + "error_pattern": "CARRY_AND_ROLLOUT_LONG" + }, + "approach_mid_iron_test_shot": { + "diff_carry_yd": -0.6, + "diff_total_yd": 7.3, + "diff_apex_ft": -5.0, + "status": "moderate", + "error_pattern": "ROLLOUT_TOO_LONG" + }, + "bump_and_run": { + "diff_carry_yd": -9.1, + "diff_total_yd": -27.5, + "diff_apex_ft": -2.1, + "status": "severe", + "error_pattern": "CARRY_AND_ROLLOUT_SHORT" + }, + "bump_and_run_slow": { + "diff_carry_yd": null, + "diff_total_yd": null, + "diff_apex_ft": null, + "status": "pass", + "error_pattern": null + }, + "bump_test_shot": { + "diff_carry_yd": -2.1, + "diff_total_yd": 12.7, + "diff_apex_ft": -0.1, + "status": "severe", + "error_pattern": "ROLLOUT_TOO_LONG" + }, + "checked_test_shot": { + "diff_carry_yd": -2.1, + "diff_total_yd": -0.5, + "diff_apex_ft": -9.6, + "status": "pass", + "error_pattern": null + }, + "chip_test_shot": { + "diff_carry_yd": null, + "diff_total_yd": null, + "diff_apex_ft": null, + "status": "pass", + "error_pattern": null + }, + "drive_test_shot": { + "diff_carry_yd": -0.4, + "diff_total_yd": -0.6, + "diff_apex_ft": -1.1, + "status": "pass", + "error_pattern": null + }, + "driver1": { + "diff_carry_yd": -0.3, + "diff_total_yd": -26.3, + "diff_apex_ft": -0.8, + "status": "severe", + "error_pattern": "ROLLOUT_TOO_SHORT" + }, + "driver2": { + "diff_carry_yd": 7.6, + "diff_total_yd": 7.3, + "diff_apex_ft": -3.0, + "status": "severe", + "error_pattern": "CARRY_AND_ROLLOUT_LONG" + }, + "driver3": { + "diff_carry_yd": 5.1, + "diff_total_yd": 20.4, + "diff_apex_ft": 20.6, + "status": "severe", + "error_pattern": "CARRY_AND_ROLLOUT_LONG" + }, + "driver4": { + "diff_carry_yd": 6.3, + "diff_total_yd": 15.0, + "diff_apex_ft": 4.1, + "status": "severe", + "error_pattern": "CARRY_AND_ROLLOUT_LONG" + }, + "flop_test_shot": { + "diff_carry_yd": -0.2, + "diff_total_yd": 1.6, + "diff_apex_ft": -8.5, + "status": "pass", + "error_pattern": null + }, + "p_wedge_shot_1": { + "diff_carry_yd": -4.8, + "diff_total_yd": 1.7, + "diff_apex_ft": -5.5, + "status": "moderate", + "error_pattern": "CARRY_TOO_SHORT" + }, + "s2_shot_10": { + "diff_carry_yd": 3.4, + "diff_total_yd": 10.2, + "diff_apex_ft": -6.0, + "status": "severe", + "error_pattern": "CARRY_AND_ROLLOUT_LONG" + }, + "s2_shot_11": { + "diff_carry_yd": -2.6, + "diff_total_yd": 1.1, + "diff_apex_ft": -4.6, + "status": "pass", + "error_pattern": null + }, + "s2_shot_12": { + "diff_carry_yd": 4.5, + "diff_total_yd": 9.5, + "diff_apex_ft": -5.3, + "status": "moderate", + "error_pattern": "CARRY_AND_ROLLOUT_LONG" + }, + "s2_shot_13": { + "diff_carry_yd": 1.2, + "diff_total_yd": 3.2, + "diff_apex_ft": -6.1, + "status": "pass", + "error_pattern": null + }, + "s2_shot_14": { + "diff_carry_yd": -0.3, + "diff_total_yd": 1.7, + "diff_apex_ft": -6.1, + "status": "pass", + "error_pattern": null + }, + "s2_shot_15": { + "diff_carry_yd": -1.0, + "diff_total_yd": -12.7, + "diff_apex_ft": -2.0, + "status": "severe", + "error_pattern": "ROLLOUT_TOO_SHORT" + }, + "s2_shot_16": { + "diff_carry_yd": -0.3, + "diff_total_yd": 2.2, + "diff_apex_ft": -3.5, + "status": "pass", + "error_pattern": null + }, + "s2_shot_17": { + "diff_carry_yd": 5.8, + "diff_total_yd": 8.0, + "diff_apex_ft": -3.9, + "status": "moderate", + "error_pattern": "CARRY_AND_ROLLOUT_LONG" + }, + "s2_shot_18": { + "diff_carry_yd": 4.3, + "diff_total_yd": 14.0, + "diff_apex_ft": 2.6, + "status": "severe", + "error_pattern": "CARRY_AND_ROLLOUT_LONG" + }, + "s2_shot_19": { + "diff_carry_yd": 2.2, + "diff_total_yd": -6.1, + "diff_apex_ft": -1.2, + "status": "moderate", + "error_pattern": "ROLLOUT_TOO_SHORT" + }, + "s2_shot_20": { + "diff_carry_yd": 6.0, + "diff_total_yd": 11.5, + "diff_apex_ft": -2.0, + "status": "severe", + "error_pattern": "CARRY_AND_ROLLOUT_LONG" + }, + "s2_shot_21": { + "diff_carry_yd": 4.9, + "diff_total_yd": 27.7, + "diff_apex_ft": 1.7, + "status": "severe", + "error_pattern": "CARRY_AND_ROLLOUT_LONG" + }, + "s2_shot_22": { + "diff_carry_yd": 4.6, + "diff_total_yd": 1.6, + "diff_apex_ft": -1.6, + "status": "moderate", + "error_pattern": "CARRY_TOO_LONG" + }, + "s2_shot_23": { + "diff_carry_yd": 3.5, + "diff_total_yd": -19.6, + "diff_apex_ft": 0.0, + "status": "severe", + "error_pattern": "CARRY_TOO_LONG" + }, + "s2_shot_24": { + "diff_carry_yd": 4.7, + "diff_total_yd": 3.4, + "diff_apex_ft": -1.9, + "status": "moderate", + "error_pattern": "CARRY_TOO_LONG" + }, + "s2_shot_26": { + "diff_carry_yd": 1.7, + "diff_total_yd": 20.6, + "diff_apex_ft": 23.5, + "status": "severe", + "error_pattern": "ROLLOUT_TOO_LONG" + }, + "s2_shot_27": { + "diff_carry_yd": 2.6, + "diff_total_yd": 12.8, + "diff_apex_ft": 4.8, + "status": "severe", + "error_pattern": "ROLLOUT_TOO_LONG" + }, + "s2_shot_9": { + "diff_carry_yd": -3.3, + "diff_total_yd": 1.6, + "diff_apex_ft": 7.1, + "status": "moderate", + "error_pattern": "CARRY_TOO_SHORT" + }, + "s3_shot_3w_18": { + "diff_carry_yd": null, + "diff_total_yd": null, + "diff_apex_ft": null, + "status": "pass", + "error_pattern": null + }, + "s3_shot_3w_19": { + "diff_carry_yd": -0.6, + "diff_total_yd": 16.0, + "diff_apex_ft": 0.1, + "status": "severe", + "error_pattern": "ROLLOUT_TOO_LONG" + }, + "s3_shot_3w_21": { + "diff_carry_yd": 0.6, + "diff_total_yd": 15.9, + "diff_apex_ft": 0.3, + "status": "severe", + "error_pattern": "ROLLOUT_TOO_LONG" + }, + "s3_shot_3w_22": { + "diff_carry_yd": 2.6, + "diff_total_yd": 19.6, + "diff_apex_ft": 0.5, + "status": "severe", + "error_pattern": "ROLLOUT_TOO_LONG" + }, + "s3_shot_3w_23": { + "diff_carry_yd": 0.1, + "diff_total_yd": -23.3, + "diff_apex_ft": -1.3, + "status": "severe", + "error_pattern": "ROLLOUT_TOO_SHORT" + }, + "s3_shot_3w_24": { + "diff_carry_yd": 6.9, + "diff_total_yd": 28.4, + "diff_apex_ft": 1.8, + "status": "severe", + "error_pattern": "CARRY_AND_ROLLOUT_LONG" + }, + "s3_shot_5i_10": { + "diff_carry_yd": 2.5, + "diff_total_yd": -7.6, + "diff_apex_ft": 5.8, + "status": "moderate", + "error_pattern": "ROLLOUT_TOO_SHORT" + }, + "s3_shot_5i_11": { + "diff_carry_yd": -3.7, + "diff_total_yd": -17.6, + "diff_apex_ft": -1.3, + "status": "severe", + "error_pattern": "CARRY_AND_ROLLOUT_SHORT" + }, + "s3_shot_5i_12": { + "diff_carry_yd": 1.1, + "diff_total_yd": -23.5, + "diff_apex_ft": 1.1, + "status": "severe", + "error_pattern": "ROLLOUT_TOO_SHORT" + }, + "s3_shot_5i_13": { + "diff_carry_yd": 2.3, + "diff_total_yd": 10.1, + "diff_apex_ft": 0.6, + "status": "severe", + "error_pattern": "ROLLOUT_TOO_LONG" + }, + "s3_shot_5i_15": { + "diff_carry_yd": -4.6, + "diff_total_yd": 14.5, + "diff_apex_ft": -1.1, + "status": "severe", + "error_pattern": "CARRY_TOO_SHORT" + }, + "s3_shot_5i_16": { + "diff_carry_yd": 0.9, + "diff_total_yd": -21.0, + "diff_apex_ft": -0.2, + "status": "severe", + "error_pattern": "ROLLOUT_TOO_SHORT" + }, + "s3_shot_5i_17": { + "diff_carry_yd": -2.2, + "diff_total_yd": -1.7, + "diff_apex_ft": -0.3, + "status": "pass", + "error_pattern": null + }, + "s3_shot_6i_35": { + "diff_carry_yd": -5.5, + "diff_total_yd": -17.0, + "diff_apex_ft": -3.4, + "status": "severe", + "error_pattern": "CARRY_AND_ROLLOUT_SHORT" + }, + "s3_shot_6i_36": { + "diff_carry_yd": 1.7, + "diff_total_yd": -21.1, + "diff_apex_ft": 0.6, + "status": "severe", + "error_pattern": "ROLLOUT_TOO_SHORT" + }, + "s3_shot_6i_37": { + "diff_carry_yd": -3.7, + "diff_total_yd": 11.9, + "diff_apex_ft": -0.9, + "status": "severe", + "error_pattern": "CARRY_TOO_SHORT" + }, + "s3_shot_6i_38": { + "diff_carry_yd": -3.6, + "diff_total_yd": -21.7, + "diff_apex_ft": 0.1, + "status": "severe", + "error_pattern": "CARRY_AND_ROLLOUT_SHORT" + }, + "s3_shot_6i_39": { + "diff_carry_yd": -0.5, + "diff_total_yd": 6.4, + "diff_apex_ft": 0.0, + "status": "moderate", + "error_pattern": "ROLLOUT_TOO_LONG" + }, + "s3_shot_6i_40": { + "diff_carry_yd": -1.3, + "diff_total_yd": 7.7, + "diff_apex_ft": 0.1, + "status": "moderate", + "error_pattern": "ROLLOUT_TOO_LONG" + }, + "s3_shot_6i_41": { + "diff_carry_yd": -4.7, + "diff_total_yd": 12.9, + "diff_apex_ft": -1.0, + "status": "severe", + "error_pattern": "CARRY_TOO_SHORT" + }, + "s3_shot_6i_42": { + "diff_carry_yd": -1.4, + "diff_total_yd": -17.8, + "diff_apex_ft": 0.7, + "status": "severe", + "error_pattern": "ROLLOUT_TOO_SHORT" + }, + "s3_shot_6i_43": { + "diff_carry_yd": 5.6, + "diff_total_yd": -0.2, + "diff_apex_ft": 7.8, + "status": "moderate", + "error_pattern": "CARRY_TOO_LONG" + }, + "s3_shot_6i_44": { + "diff_carry_yd": -1.8, + "diff_total_yd": -28.0, + "diff_apex_ft": -1.4, + "status": "severe", + "error_pattern": "ROLLOUT_TOO_SHORT" + }, + "s3_shot_6i_45": { + "diff_carry_yd": 3.0, + "diff_total_yd": 20.4, + "diff_apex_ft": 0.5, + "status": "severe", + "error_pattern": "ROLLOUT_TOO_LONG" + }, + "s3_shot_6i_46": { + "diff_carry_yd": 3.1, + "diff_total_yd": -4.2, + "diff_apex_ft": -1.7, + "status": "moderate", + "error_pattern": "CARRY_TOO_LONG" + }, + "s3_shot_6i_47": { + "diff_carry_yd": 6.1, + "diff_total_yd": 8.3, + "diff_apex_ft": 11.4, + "status": "moderate", + "error_pattern": "CARRY_AND_ROLLOUT_LONG" + }, + "s3_shot_6i_48": { + "diff_carry_yd": 5.3, + "diff_total_yd": 8.8, + "diff_apex_ft": 13.8, + "status": "moderate", + "error_pattern": "CARRY_AND_ROLLOUT_LONG" + }, + "s3_shot_6i_49": { + "diff_carry_yd": -2.5, + "diff_total_yd": 6.9, + "diff_apex_ft": -0.3, + "status": "moderate", + "error_pattern": "ROLLOUT_TOO_LONG" + }, + "s3_shot_6i_50": { + "diff_carry_yd": -0.9, + "diff_total_yd": -12.5, + "diff_apex_ft": 3.8, + "status": "severe", + "error_pattern": "ROLLOUT_TOO_SHORT" + }, + "s3_shot_7i_25": { + "diff_carry_yd": -0.9, + "diff_total_yd": -18.4, + "diff_apex_ft": 0.9, + "status": "severe", + "error_pattern": "ROLLOUT_TOO_SHORT" + }, + "s3_shot_7i_26": { + "diff_carry_yd": 1.5, + "diff_total_yd": -22.1, + "diff_apex_ft": 1.1, + "status": "severe", + "error_pattern": "ROLLOUT_TOO_SHORT" + }, + "s3_shot_7i_27": { + "diff_carry_yd": 1.2, + "diff_total_yd": 4.7, + "diff_apex_ft": 7.7, + "status": "pass", + "error_pattern": null + }, + "s3_shot_7i_28": { + "diff_carry_yd": 0.5, + "diff_total_yd": 1.5, + "diff_apex_ft": 8.1, + "status": "pass", + "error_pattern": null + }, + "s3_shot_7i_29": { + "diff_carry_yd": 0.1, + "diff_total_yd": -6.6, + "diff_apex_ft": -3.6, + "status": "moderate", + "error_pattern": "ROLLOUT_TOO_SHORT" + }, + "s3_shot_7i_30": { + "diff_carry_yd": -0.7, + "diff_total_yd": 1.0, + "diff_apex_ft": 5.3, + "status": "pass", + "error_pattern": null + }, + "s3_shot_7i_31": { + "diff_carry_yd": -5.2, + "diff_total_yd": -14.7, + "diff_apex_ft": -4.2, + "status": "severe", + "error_pattern": "CARRY_AND_ROLLOUT_SHORT" + }, + "s3_shot_7i_32": { + "diff_carry_yd": -2.4, + "diff_total_yd": -2.8, + "diff_apex_ft": 3.0, + "status": "pass", + "error_pattern": null + }, + "s3_shot_7i_33": { + "diff_carry_yd": -2.2, + "diff_total_yd": -1.9, + "diff_apex_ft": 4.5, + "status": "pass", + "error_pattern": null + }, + "s3_shot_7i_34": { + "diff_carry_yd": 3.6, + "diff_total_yd": 2.0, + "diff_apex_ft": 3.0, + "status": "moderate", + "error_pattern": "CARRY_TOO_LONG" + }, + "s3_shot_9i_1": { + "diff_carry_yd": -1.9, + "diff_total_yd": -13.0, + "diff_apex_ft": 1.2, + "status": "severe", + "error_pattern": "ROLLOUT_TOO_SHORT" + }, + "s3_shot_9i_2": { + "diff_carry_yd": -8.2, + "diff_total_yd": -9.2, + "diff_apex_ft": -3.1, + "status": "severe", + "error_pattern": "CARRY_AND_ROLLOUT_SHORT" + }, + "s3_shot_9i_3": { + "diff_carry_yd": -1.9, + "diff_total_yd": 1.4, + "diff_apex_ft": -5.4, + "status": "pass", + "error_pattern": null + }, + "s3_shot_9i_5": { + "diff_carry_yd": -3.0, + "diff_total_yd": -5.9, + "diff_apex_ft": -5.5, + "status": "moderate", + "error_pattern": "ROLLOUT_TOO_SHORT" + }, + "s3_shot_9i_7": { + "diff_carry_yd": 0.6, + "diff_total_yd": 1.1, + "diff_apex_ft": -4.3, + "status": "pass", + "error_pattern": null + }, + "s3_shot_9i_8": { + "diff_carry_yd": -2.3, + "diff_total_yd": 4.7, + "diff_apex_ft": -1.8, + "status": "pass", + "error_pattern": null + }, + "s3_shot_9i_9": { + "diff_carry_yd": -1.8, + "diff_total_yd": 2.3, + "diff_apex_ft": -6.3, + "status": "pass", + "error_pattern": null + }, + "s3_shot_driver_51": { + "diff_carry_yd": 10.4, + "diff_total_yd": 28.4, + "diff_apex_ft": 0.0, + "status": "severe", + "error_pattern": "CARRY_AND_ROLLOUT_LONG" + }, + "s3_shot_driver_52": { + "diff_carry_yd": 8.2, + "diff_total_yd": 23.9, + "diff_apex_ft": -2.0, + "status": "severe", + "error_pattern": "CARRY_AND_ROLLOUT_LONG" + }, + "s3_shot_driver_53": { + "diff_carry_yd": 4.5, + "diff_total_yd": 15.7, + "diff_apex_ft": -4.5, + "status": "severe", + "error_pattern": "CARRY_AND_ROLLOUT_LONG" + }, + "s3_shot_driver_54": { + "diff_carry_yd": 4.6, + "diff_total_yd": -0.7, + "diff_apex_ft": -2.5, + "status": "moderate", + "error_pattern": "CARRY_TOO_LONG" + }, + "s3_shot_driver_55": { + "diff_carry_yd": 2.0, + "diff_total_yd": 21.7, + "diff_apex_ft": 0.4, + "status": "severe", + "error_pattern": "ROLLOUT_TOO_LONG" + }, + "s3_shot_driver_56": { + "diff_carry_yd": 3.7, + "diff_total_yd": 19.6, + "diff_apex_ft": 9.4, + "status": "severe", + "error_pattern": "CARRY_AND_ROLLOUT_LONG" + }, + "s3_shot_driver_57": { + "diff_carry_yd": -5.8, + "diff_total_yd": -20.4, + "diff_apex_ft": -3.7, + "status": "severe", + "error_pattern": "CARRY_AND_ROLLOUT_SHORT" + }, + "s3_shot_driver_58": { + "diff_carry_yd": 17.0, + "diff_total_yd": 34.0, + "diff_apex_ft": -5.4, + "status": "severe", + "error_pattern": "CARRY_AND_ROLLOUT_LONG" + }, + "s3_shot_driver_59": { + "diff_carry_yd": -1.6, + "diff_total_yd": 14.4, + "diff_apex_ft": -4.2, + "status": "severe", + "error_pattern": "ROLLOUT_TOO_LONG" + }, + "s3_shot_driver_60": { + "diff_carry_yd": -0.6, + "diff_total_yd": -15.4, + "diff_apex_ft": -2.5, + "status": "severe", + "error_pattern": "ROLLOUT_TOO_SHORT" + }, + "s3_shot_pw_64": { + "diff_carry_yd": -4.7, + "diff_total_yd": 9.1, + "diff_apex_ft": -3.8, + "status": "moderate", + "error_pattern": "CARRY_TOO_SHORT" + }, + "s3_shot_pw_65": { + "diff_carry_yd": -0.6, + "diff_total_yd": 4.2, + "diff_apex_ft": -4.0, + "status": "pass", + "error_pattern": null + }, + "s3_shot_pw_66": { + "diff_carry_yd": -3.0, + "diff_total_yd": 10.8, + "diff_apex_ft": -3.9, + "status": "severe", + "error_pattern": "ROLLOUT_TOO_LONG" + }, + "s3_shot_pw_67": { + "diff_carry_yd": -0.4, + "diff_total_yd": 5.2, + "diff_apex_ft": -4.1, + "status": "moderate", + "error_pattern": "ROLLOUT_TOO_LONG" + }, + "s3_shot_pw_68": { + "diff_carry_yd": 2.9, + "diff_total_yd": 6.1, + "diff_apex_ft": -6.4, + "status": "moderate", + "error_pattern": "ROLLOUT_TOO_LONG" + }, + "s3_shot_pw_69": { + "diff_carry_yd": -3.2, + "diff_total_yd": 11.6, + "diff_apex_ft": -3.9, + "status": "severe", + "error_pattern": "CARRY_TOO_SHORT" + }, + "s4_shot_3w_31": { + "diff_carry_yd": -0.1, + "diff_total_yd": -3.6, + "diff_apex_ft": -3.6, + "status": "pass", + "error_pattern": null + }, + "s4_shot_3w_32": { + "diff_carry_yd": 5.5, + "diff_total_yd": 12.2, + "diff_apex_ft": 1.4, + "status": "severe", + "error_pattern": "CARRY_AND_ROLLOUT_LONG" + }, + "s4_shot_3w_33": { + "diff_carry_yd": 9.2, + "diff_total_yd": 13.2, + "diff_apex_ft": -8.2, + "status": "severe", + "error_pattern": "CARRY_AND_ROLLOUT_LONG" + }, + "s4_shot_3w_34": { + "diff_carry_yd": 3.6, + "diff_total_yd": 2.2, + "diff_apex_ft": -2.5, + "status": "moderate", + "error_pattern": "CARRY_TOO_LONG" + }, + "s4_shot_3w_35": { + "diff_carry_yd": 4.5, + "diff_total_yd": 2.8, + "diff_apex_ft": -3.1, + "status": "moderate", + "error_pattern": "CARRY_TOO_LONG" + }, + "s4_shot_5i_25": { + "diff_carry_yd": -2.9, + "diff_total_yd": -7.2, + "diff_apex_ft": -5.5, + "status": "moderate", + "error_pattern": "ROLLOUT_TOO_SHORT" + }, + "s4_shot_5i_26": { + "diff_carry_yd": 3.1, + "diff_total_yd": 5.0, + "diff_apex_ft": 2.9, + "status": "moderate", + "error_pattern": "CARRY_TOO_LONG" + }, + "s4_shot_5i_27": { + "diff_carry_yd": -2.0, + "diff_total_yd": 10.8, + "diff_apex_ft": -0.2, + "status": "severe", + "error_pattern": "ROLLOUT_TOO_LONG" + }, + "s4_shot_5i_28": { + "diff_carry_yd": -0.2, + "diff_total_yd": -6.9, + "diff_apex_ft": 5.0, + "status": "moderate", + "error_pattern": "ROLLOUT_TOO_SHORT" + }, + "s4_shot_5i_29": { + "diff_carry_yd": 6.3, + "diff_total_yd": 13.8, + "diff_apex_ft": 1.0, + "status": "severe", + "error_pattern": "CARRY_AND_ROLLOUT_LONG" + }, + "s4_shot_5i_30": { + "diff_carry_yd": 4.8, + "diff_total_yd": 4.1, + "diff_apex_ft": -7.1, + "status": "moderate", + "error_pattern": "CARRY_TOO_LONG" + }, + "s4_shot_6i_19": { + "diff_carry_yd": -0.5, + "diff_total_yd": -11.5, + "diff_apex_ft": 0.2, + "status": "severe", + "error_pattern": "ROLLOUT_TOO_SHORT" + }, + "s4_shot_6i_20": { + "diff_carry_yd": -0.1, + "diff_total_yd": 11.4, + "diff_apex_ft": 0.0, + "status": "severe", + "error_pattern": "ROLLOUT_TOO_LONG" + }, + "s4_shot_6i_21": { + "diff_carry_yd": 0.9, + "diff_total_yd": -1.5, + "diff_apex_ft": -6.8, + "status": "pass", + "error_pattern": null + }, + "s4_shot_6i_22": { + "diff_carry_yd": 4.5, + "diff_total_yd": 10.8, + "diff_apex_ft": 0.9, + "status": "severe", + "error_pattern": "CARRY_AND_ROLLOUT_LONG" + }, + "s4_shot_6i_23": { + "diff_carry_yd": null, + "diff_total_yd": null, + "diff_apex_ft": null, + "status": "pass", + "error_pattern": null + }, + "s4_shot_6i_24": { + "diff_carry_yd": null, + "diff_total_yd": null, + "diff_apex_ft": null, + "status": "pass", + "error_pattern": null + }, + "s4_shot_9i_13": { + "diff_carry_yd": null, + "diff_total_yd": null, + "diff_apex_ft": null, + "status": "pass", + "error_pattern": null + }, + "s4_shot_9i_14": { + "diff_carry_yd": -0.1, + "diff_total_yd": 1.2, + "diff_apex_ft": -6.4, + "status": "pass", + "error_pattern": null + }, + "s4_shot_9i_15": { + "diff_carry_yd": -2.9, + "diff_total_yd": 10.8, + "diff_apex_ft": -3.7, + "status": "severe", + "error_pattern": "ROLLOUT_TOO_LONG" + }, + "s4_shot_9i_17": { + "diff_carry_yd": -2.0, + "diff_total_yd": -16.6, + "diff_apex_ft": -0.6, + "status": "severe", + "error_pattern": "ROLLOUT_TOO_SHORT" + }, + "s4_shot_9i_18": { + "diff_carry_yd": -2.8, + "diff_total_yd": 8.7, + "diff_apex_ft": -3.5, + "status": "moderate", + "error_pattern": "ROLLOUT_TOO_LONG" + }, + "s4_shot_lw_38": { + "diff_carry_yd": -5.7, + "diff_total_yd": 2.1, + "diff_apex_ft": -4.0, + "status": "moderate", + "error_pattern": "CARRY_TOO_SHORT" + }, + "s4_shot_pw_1": { + "diff_carry_yd": -7.7, + "diff_total_yd": -14.3, + "diff_apex_ft": -0.3, + "status": "severe", + "error_pattern": "CARRY_AND_ROLLOUT_SHORT" + }, + "s4_shot_pw_10": { + "diff_carry_yd": -2.4, + "diff_total_yd": 0.4, + "diff_apex_ft": -4.2, + "status": "pass", + "error_pattern": null + }, + "s4_shot_pw_11": { + "diff_carry_yd": -2.6, + "diff_total_yd": 0.4, + "diff_apex_ft": -3.8, + "status": "pass", + "error_pattern": null + }, + "s4_shot_pw_2": { + "diff_carry_yd": -4.8, + "diff_total_yd": 4.3, + "diff_apex_ft": -1.6, + "status": "moderate", + "error_pattern": "CARRY_TOO_SHORT" + }, + "s4_shot_pw_3": { + "diff_carry_yd": -6.9, + "diff_total_yd": 3.9, + "diff_apex_ft": -3.9, + "status": "moderate", + "error_pattern": "CARRY_TOO_SHORT" + }, + "s4_shot_pw_47": { + "diff_carry_yd": -3.9, + "diff_total_yd": 4.0, + "diff_apex_ft": -1.2, + "status": "moderate", + "error_pattern": "CARRY_TOO_SHORT" + }, + "s4_shot_pw_48": { + "diff_carry_yd": -4.3, + "diff_total_yd": 2.7, + "diff_apex_ft": -1.3, + "status": "moderate", + "error_pattern": "CARRY_TOO_SHORT" + }, + "s4_shot_pw_49": { + "diff_carry_yd": -6.2, + "diff_total_yd": 4.4, + "diff_apex_ft": -1.9, + "status": "moderate", + "error_pattern": "CARRY_TOO_SHORT" + }, + "s4_shot_pw_6": { + "diff_carry_yd": -8.2, + "diff_total_yd": 7.0, + "diff_apex_ft": -3.6, + "status": "severe", + "error_pattern": "CARRY_TOO_SHORT" + }, + "s4_shot_pw_7": { + "diff_carry_yd": -2.0, + "diff_total_yd": 12.2, + "diff_apex_ft": -3.7, + "status": "severe", + "error_pattern": "ROLLOUT_TOO_LONG" + }, + "s4_shot_pw_9": { + "diff_carry_yd": null, + "diff_total_yd": null, + "diff_apex_ft": null, + "status": "pass", + "error_pattern": null + }, + "topped_test_shot": { + "diff_carry_yd": -0.7, + "diff_total_yd": 13.8, + "diff_apex_ft": -0.1, + "status": "severe", + "error_pattern": "ROLLOUT_TOO_LONG" + }, + "wedge_shot_1": { + "diff_carry_yd": -5.8, + "diff_total_yd": -1.7, + "diff_apex_ft": -2.6, + "status": "moderate", + "error_pattern": "CARRY_TOO_SHORT" + }, + "wedge_shot_2": { + "diff_carry_yd": -6.6, + "diff_total_yd": 2.1, + "diff_apex_ft": -4.4, + "status": "moderate", + "error_pattern": "CARRY_TOO_SHORT" + }, + "wedge_test_shot": { + "diff_carry_yd": -5.3, + "diff_total_yd": 3.2, + "diff_apex_ft": -3.2, + "status": "moderate", + "error_pattern": "CARRY_TOO_SHORT" + }, + "wedge_test_shot2": { + "diff_carry_yd": -5.5, + "diff_total_yd": 2.9, + "diff_apex_ft": -2.0, + "status": "moderate", + "error_pattern": "CARRY_TOO_SHORT" + }, + "wood1": { + "diff_carry_yd": 11.9, + "diff_total_yd": -4.0, + "diff_apex_ft": 3.1, + "status": "severe", + "error_pattern": "CARRY_TOO_LONG" + }, + "wood2": { + "diff_carry_yd": 3.8, + "diff_total_yd": 0.4, + "diff_apex_ft": -1.8, + "status": "moderate", + "error_pattern": "CARRY_TOO_LONG" + }, + "wood_low_test_shot": { + "diff_carry_yd": 1.3, + "diff_total_yd": 22.0, + "diff_apex_ft": 0.3, + "status": "severe", + "error_pattern": "ROLLOUT_TOO_LONG" + } + }, + "regressions": [], + "conflicts": [ + "Bounce.FlightTangentialRetentionBase", + "Bounce.FlightSpinFactorMin", + "Bounce.FlightSpinFactorDivisor", + "Rollout.MidSpinMultiplierMax", + "Rollout.HighSpinMultiplierMax", + "Rollout.FrictionBlendSpeed", + "KineticFrictionMultiplier", + "Bounce.RolloutHighSpinRetention", + "Bounce.CorBaseA", + "Rollout.LowSpinMultiplierMax", + "Rollout.LowSpinThreshold", + "RollingFrictionMultiplier", + "Bounce.RolloutLowSpinRetention", + "Flight.ClMaxBase", + "Flight.CdMin", + "Flight.HighLaunchDragBoostMax", + "DragScaleMultiplier", + "LiftScaleMultiplier" + ] +} diff --git a/assets/data/calibration/history/iteration_056.json b/assets/data/calibration/history/iteration_056.json new file mode 100644 index 0000000..59b4fab --- /dev/null +++ b/assets/data/calibration/history/iteration_056.json @@ -0,0 +1,986 @@ +{ + "iteration": 56, + "timestamp": "2026-03-14T01:46:38.324650", + "profile_overrides": {}, + "summary": { + "pass": 23, + "moderate": 41, + "severe": 65, + "no_reference": 7 + }, + "per_shot": { + "5iron": { + "diff_carry_yd": 4.8, + "diff_total_yd": 11.3, + "diff_apex_ft": 4.6, + "status": "severe", + "error_pattern": "CARRY_AND_ROLLOUT_LONG" + }, + "approach_mid_iron_test_shot": { + "diff_carry_yd": -0.6, + "diff_total_yd": 7.3, + "diff_apex_ft": -5.0, + "status": "moderate", + "error_pattern": "ROLLOUT_TOO_LONG" + }, + "bump_and_run": { + "diff_carry_yd": -9.1, + "diff_total_yd": -27.5, + "diff_apex_ft": -2.1, + "status": "severe", + "error_pattern": "CARRY_AND_ROLLOUT_SHORT" + }, + "bump_and_run_slow": { + "diff_carry_yd": null, + "diff_total_yd": null, + "diff_apex_ft": null, + "status": "pass", + "error_pattern": null + }, + "bump_test_shot": { + "diff_carry_yd": -2.1, + "diff_total_yd": 12.7, + "diff_apex_ft": -0.1, + "status": "severe", + "error_pattern": "ROLLOUT_TOO_LONG" + }, + "checked_test_shot": { + "diff_carry_yd": -2.1, + "diff_total_yd": -0.5, + "diff_apex_ft": -9.6, + "status": "pass", + "error_pattern": null + }, + "chip_test_shot": { + "diff_carry_yd": null, + "diff_total_yd": null, + "diff_apex_ft": null, + "status": "pass", + "error_pattern": null + }, + "drive_test_shot": { + "diff_carry_yd": -0.4, + "diff_total_yd": -0.6, + "diff_apex_ft": -1.1, + "status": "pass", + "error_pattern": null + }, + "driver1": { + "diff_carry_yd": -0.3, + "diff_total_yd": -26.3, + "diff_apex_ft": -0.8, + "status": "severe", + "error_pattern": "ROLLOUT_TOO_SHORT" + }, + "driver2": { + "diff_carry_yd": 7.6, + "diff_total_yd": 7.3, + "diff_apex_ft": -3.0, + "status": "severe", + "error_pattern": "CARRY_AND_ROLLOUT_LONG" + }, + "driver3": { + "diff_carry_yd": 5.1, + "diff_total_yd": 20.4, + "diff_apex_ft": 20.6, + "status": "severe", + "error_pattern": "CARRY_AND_ROLLOUT_LONG" + }, + "driver4": { + "diff_carry_yd": 6.3, + "diff_total_yd": 15.0, + "diff_apex_ft": 4.1, + "status": "severe", + "error_pattern": "CARRY_AND_ROLLOUT_LONG" + }, + "flop_test_shot": { + "diff_carry_yd": -0.2, + "diff_total_yd": 1.6, + "diff_apex_ft": -8.5, + "status": "pass", + "error_pattern": null + }, + "p_wedge_shot_1": { + "diff_carry_yd": -4.8, + "diff_total_yd": 1.7, + "diff_apex_ft": -5.5, + "status": "moderate", + "error_pattern": "CARRY_TOO_SHORT" + }, + "s2_shot_10": { + "diff_carry_yd": 3.4, + "diff_total_yd": 10.2, + "diff_apex_ft": -6.0, + "status": "severe", + "error_pattern": "CARRY_AND_ROLLOUT_LONG" + }, + "s2_shot_11": { + "diff_carry_yd": -2.6, + "diff_total_yd": 1.1, + "diff_apex_ft": -4.6, + "status": "pass", + "error_pattern": null + }, + "s2_shot_12": { + "diff_carry_yd": 4.5, + "diff_total_yd": 9.5, + "diff_apex_ft": -5.3, + "status": "moderate", + "error_pattern": "CARRY_AND_ROLLOUT_LONG" + }, + "s2_shot_13": { + "diff_carry_yd": 1.2, + "diff_total_yd": 3.2, + "diff_apex_ft": -6.1, + "status": "pass", + "error_pattern": null + }, + "s2_shot_14": { + "diff_carry_yd": -0.3, + "diff_total_yd": 1.7, + "diff_apex_ft": -6.1, + "status": "pass", + "error_pattern": null + }, + "s2_shot_15": { + "diff_carry_yd": -1.0, + "diff_total_yd": -12.7, + "diff_apex_ft": -2.0, + "status": "severe", + "error_pattern": "ROLLOUT_TOO_SHORT" + }, + "s2_shot_16": { + "diff_carry_yd": -0.3, + "diff_total_yd": 2.2, + "diff_apex_ft": -3.5, + "status": "pass", + "error_pattern": null + }, + "s2_shot_17": { + "diff_carry_yd": 5.8, + "diff_total_yd": 8.0, + "diff_apex_ft": -3.9, + "status": "moderate", + "error_pattern": "CARRY_AND_ROLLOUT_LONG" + }, + "s2_shot_18": { + "diff_carry_yd": 4.3, + "diff_total_yd": 14.0, + "diff_apex_ft": 2.6, + "status": "severe", + "error_pattern": "CARRY_AND_ROLLOUT_LONG" + }, + "s2_shot_19": { + "diff_carry_yd": 2.2, + "diff_total_yd": -6.1, + "diff_apex_ft": -1.2, + "status": "moderate", + "error_pattern": "ROLLOUT_TOO_SHORT" + }, + "s2_shot_20": { + "diff_carry_yd": 6.0, + "diff_total_yd": 11.5, + "diff_apex_ft": -2.0, + "status": "severe", + "error_pattern": "CARRY_AND_ROLLOUT_LONG" + }, + "s2_shot_21": { + "diff_carry_yd": 4.9, + "diff_total_yd": 27.7, + "diff_apex_ft": 1.7, + "status": "severe", + "error_pattern": "CARRY_AND_ROLLOUT_LONG" + }, + "s2_shot_22": { + "diff_carry_yd": 4.6, + "diff_total_yd": 1.6, + "diff_apex_ft": -1.6, + "status": "moderate", + "error_pattern": "CARRY_TOO_LONG" + }, + "s2_shot_23": { + "diff_carry_yd": 3.5, + "diff_total_yd": -19.6, + "diff_apex_ft": 0.0, + "status": "severe", + "error_pattern": "CARRY_TOO_LONG" + }, + "s2_shot_24": { + "diff_carry_yd": 4.7, + "diff_total_yd": 3.4, + "diff_apex_ft": -1.9, + "status": "moderate", + "error_pattern": "CARRY_TOO_LONG" + }, + "s2_shot_26": { + "diff_carry_yd": 1.7, + "diff_total_yd": 20.6, + "diff_apex_ft": 23.5, + "status": "severe", + "error_pattern": "ROLLOUT_TOO_LONG" + }, + "s2_shot_27": { + "diff_carry_yd": 2.6, + "diff_total_yd": 12.8, + "diff_apex_ft": 4.8, + "status": "severe", + "error_pattern": "ROLLOUT_TOO_LONG" + }, + "s2_shot_9": { + "diff_carry_yd": -3.3, + "diff_total_yd": 1.6, + "diff_apex_ft": 7.1, + "status": "moderate", + "error_pattern": "CARRY_TOO_SHORT" + }, + "s3_shot_3w_18": { + "diff_carry_yd": null, + "diff_total_yd": null, + "diff_apex_ft": null, + "status": "pass", + "error_pattern": null + }, + "s3_shot_3w_19": { + "diff_carry_yd": -0.6, + "diff_total_yd": 16.0, + "diff_apex_ft": 0.1, + "status": "severe", + "error_pattern": "ROLLOUT_TOO_LONG" + }, + "s3_shot_3w_21": { + "diff_carry_yd": 0.6, + "diff_total_yd": 15.9, + "diff_apex_ft": 0.3, + "status": "severe", + "error_pattern": "ROLLOUT_TOO_LONG" + }, + "s3_shot_3w_22": { + "diff_carry_yd": 2.6, + "diff_total_yd": 19.6, + "diff_apex_ft": 0.5, + "status": "severe", + "error_pattern": "ROLLOUT_TOO_LONG" + }, + "s3_shot_3w_23": { + "diff_carry_yd": 0.1, + "diff_total_yd": -23.3, + "diff_apex_ft": -1.3, + "status": "severe", + "error_pattern": "ROLLOUT_TOO_SHORT" + }, + "s3_shot_3w_24": { + "diff_carry_yd": 6.9, + "diff_total_yd": 28.4, + "diff_apex_ft": 1.8, + "status": "severe", + "error_pattern": "CARRY_AND_ROLLOUT_LONG" + }, + "s3_shot_5i_10": { + "diff_carry_yd": 2.5, + "diff_total_yd": -7.6, + "diff_apex_ft": 5.8, + "status": "moderate", + "error_pattern": "ROLLOUT_TOO_SHORT" + }, + "s3_shot_5i_11": { + "diff_carry_yd": -3.7, + "diff_total_yd": -17.6, + "diff_apex_ft": -1.3, + "status": "severe", + "error_pattern": "CARRY_AND_ROLLOUT_SHORT" + }, + "s3_shot_5i_12": { + "diff_carry_yd": 1.1, + "diff_total_yd": -23.5, + "diff_apex_ft": 1.1, + "status": "severe", + "error_pattern": "ROLLOUT_TOO_SHORT" + }, + "s3_shot_5i_13": { + "diff_carry_yd": 2.3, + "diff_total_yd": 10.1, + "diff_apex_ft": 0.6, + "status": "severe", + "error_pattern": "ROLLOUT_TOO_LONG" + }, + "s3_shot_5i_15": { + "diff_carry_yd": -4.6, + "diff_total_yd": 14.5, + "diff_apex_ft": -1.1, + "status": "severe", + "error_pattern": "CARRY_TOO_SHORT" + }, + "s3_shot_5i_16": { + "diff_carry_yd": 0.9, + "diff_total_yd": -21.0, + "diff_apex_ft": -0.2, + "status": "severe", + "error_pattern": "ROLLOUT_TOO_SHORT" + }, + "s3_shot_5i_17": { + "diff_carry_yd": -2.2, + "diff_total_yd": -1.7, + "diff_apex_ft": -0.3, + "status": "pass", + "error_pattern": null + }, + "s3_shot_6i_35": { + "diff_carry_yd": -5.5, + "diff_total_yd": -17.0, + "diff_apex_ft": -3.4, + "status": "severe", + "error_pattern": "CARRY_AND_ROLLOUT_SHORT" + }, + "s3_shot_6i_36": { + "diff_carry_yd": 1.7, + "diff_total_yd": -21.1, + "diff_apex_ft": 0.6, + "status": "severe", + "error_pattern": "ROLLOUT_TOO_SHORT" + }, + "s3_shot_6i_37": { + "diff_carry_yd": -3.7, + "diff_total_yd": 11.9, + "diff_apex_ft": -0.9, + "status": "severe", + "error_pattern": "CARRY_TOO_SHORT" + }, + "s3_shot_6i_38": { + "diff_carry_yd": -3.6, + "diff_total_yd": -21.7, + "diff_apex_ft": 0.1, + "status": "severe", + "error_pattern": "CARRY_AND_ROLLOUT_SHORT" + }, + "s3_shot_6i_39": { + "diff_carry_yd": -0.5, + "diff_total_yd": 6.4, + "diff_apex_ft": 0.0, + "status": "moderate", + "error_pattern": "ROLLOUT_TOO_LONG" + }, + "s3_shot_6i_40": { + "diff_carry_yd": -1.3, + "diff_total_yd": 7.7, + "diff_apex_ft": 0.1, + "status": "moderate", + "error_pattern": "ROLLOUT_TOO_LONG" + }, + "s3_shot_6i_41": { + "diff_carry_yd": -4.7, + "diff_total_yd": 12.9, + "diff_apex_ft": -1.0, + "status": "severe", + "error_pattern": "CARRY_TOO_SHORT" + }, + "s3_shot_6i_42": { + "diff_carry_yd": -1.4, + "diff_total_yd": -17.8, + "diff_apex_ft": 0.7, + "status": "severe", + "error_pattern": "ROLLOUT_TOO_SHORT" + }, + "s3_shot_6i_43": { + "diff_carry_yd": 5.6, + "diff_total_yd": -0.2, + "diff_apex_ft": 7.8, + "status": "moderate", + "error_pattern": "CARRY_TOO_LONG" + }, + "s3_shot_6i_44": { + "diff_carry_yd": -1.8, + "diff_total_yd": -28.0, + "diff_apex_ft": -1.4, + "status": "severe", + "error_pattern": "ROLLOUT_TOO_SHORT" + }, + "s3_shot_6i_45": { + "diff_carry_yd": 3.0, + "diff_total_yd": 20.4, + "diff_apex_ft": 0.5, + "status": "severe", + "error_pattern": "ROLLOUT_TOO_LONG" + }, + "s3_shot_6i_46": { + "diff_carry_yd": 3.1, + "diff_total_yd": -4.2, + "diff_apex_ft": -1.7, + "status": "moderate", + "error_pattern": "CARRY_TOO_LONG" + }, + "s3_shot_6i_47": { + "diff_carry_yd": 6.1, + "diff_total_yd": 8.3, + "diff_apex_ft": 11.4, + "status": "moderate", + "error_pattern": "CARRY_AND_ROLLOUT_LONG" + }, + "s3_shot_6i_48": { + "diff_carry_yd": 5.3, + "diff_total_yd": 8.8, + "diff_apex_ft": 13.8, + "status": "moderate", + "error_pattern": "CARRY_AND_ROLLOUT_LONG" + }, + "s3_shot_6i_49": { + "diff_carry_yd": -2.5, + "diff_total_yd": 6.9, + "diff_apex_ft": -0.3, + "status": "moderate", + "error_pattern": "ROLLOUT_TOO_LONG" + }, + "s3_shot_6i_50": { + "diff_carry_yd": -0.9, + "diff_total_yd": -12.5, + "diff_apex_ft": 3.8, + "status": "severe", + "error_pattern": "ROLLOUT_TOO_SHORT" + }, + "s3_shot_7i_25": { + "diff_carry_yd": -0.9, + "diff_total_yd": -18.4, + "diff_apex_ft": 0.9, + "status": "severe", + "error_pattern": "ROLLOUT_TOO_SHORT" + }, + "s3_shot_7i_26": { + "diff_carry_yd": 1.5, + "diff_total_yd": -22.1, + "diff_apex_ft": 1.1, + "status": "severe", + "error_pattern": "ROLLOUT_TOO_SHORT" + }, + "s3_shot_7i_27": { + "diff_carry_yd": 1.2, + "diff_total_yd": 4.7, + "diff_apex_ft": 7.7, + "status": "pass", + "error_pattern": null + }, + "s3_shot_7i_28": { + "diff_carry_yd": 0.5, + "diff_total_yd": 1.5, + "diff_apex_ft": 8.1, + "status": "pass", + "error_pattern": null + }, + "s3_shot_7i_29": { + "diff_carry_yd": 0.1, + "diff_total_yd": -6.6, + "diff_apex_ft": -3.6, + "status": "moderate", + "error_pattern": "ROLLOUT_TOO_SHORT" + }, + "s3_shot_7i_30": { + "diff_carry_yd": -0.7, + "diff_total_yd": 1.0, + "diff_apex_ft": 5.3, + "status": "pass", + "error_pattern": null + }, + "s3_shot_7i_31": { + "diff_carry_yd": -5.2, + "diff_total_yd": -14.7, + "diff_apex_ft": -4.2, + "status": "severe", + "error_pattern": "CARRY_AND_ROLLOUT_SHORT" + }, + "s3_shot_7i_32": { + "diff_carry_yd": -2.4, + "diff_total_yd": -2.8, + "diff_apex_ft": 3.0, + "status": "pass", + "error_pattern": null + }, + "s3_shot_7i_33": { + "diff_carry_yd": -2.2, + "diff_total_yd": -1.9, + "diff_apex_ft": 4.5, + "status": "pass", + "error_pattern": null + }, + "s3_shot_7i_34": { + "diff_carry_yd": 3.6, + "diff_total_yd": 2.0, + "diff_apex_ft": 3.0, + "status": "moderate", + "error_pattern": "CARRY_TOO_LONG" + }, + "s3_shot_9i_1": { + "diff_carry_yd": -1.9, + "diff_total_yd": -13.0, + "diff_apex_ft": 1.2, + "status": "severe", + "error_pattern": "ROLLOUT_TOO_SHORT" + }, + "s3_shot_9i_2": { + "diff_carry_yd": -8.2, + "diff_total_yd": -9.2, + "diff_apex_ft": -3.1, + "status": "severe", + "error_pattern": "CARRY_AND_ROLLOUT_SHORT" + }, + "s3_shot_9i_3": { + "diff_carry_yd": -1.9, + "diff_total_yd": 1.4, + "diff_apex_ft": -5.4, + "status": "pass", + "error_pattern": null + }, + "s3_shot_9i_5": { + "diff_carry_yd": -3.0, + "diff_total_yd": -5.9, + "diff_apex_ft": -5.5, + "status": "moderate", + "error_pattern": "ROLLOUT_TOO_SHORT" + }, + "s3_shot_9i_7": { + "diff_carry_yd": 0.6, + "diff_total_yd": 1.1, + "diff_apex_ft": -4.3, + "status": "pass", + "error_pattern": null + }, + "s3_shot_9i_8": { + "diff_carry_yd": -2.3, + "diff_total_yd": 4.7, + "diff_apex_ft": -1.8, + "status": "pass", + "error_pattern": null + }, + "s3_shot_9i_9": { + "diff_carry_yd": -1.8, + "diff_total_yd": 2.3, + "diff_apex_ft": -6.3, + "status": "pass", + "error_pattern": null + }, + "s3_shot_driver_51": { + "diff_carry_yd": 10.4, + "diff_total_yd": 28.4, + "diff_apex_ft": 0.0, + "status": "severe", + "error_pattern": "CARRY_AND_ROLLOUT_LONG" + }, + "s3_shot_driver_52": { + "diff_carry_yd": 8.2, + "diff_total_yd": 23.9, + "diff_apex_ft": -2.0, + "status": "severe", + "error_pattern": "CARRY_AND_ROLLOUT_LONG" + }, + "s3_shot_driver_53": { + "diff_carry_yd": 4.5, + "diff_total_yd": 15.7, + "diff_apex_ft": -4.5, + "status": "severe", + "error_pattern": "CARRY_AND_ROLLOUT_LONG" + }, + "s3_shot_driver_54": { + "diff_carry_yd": 4.6, + "diff_total_yd": -0.7, + "diff_apex_ft": -2.5, + "status": "moderate", + "error_pattern": "CARRY_TOO_LONG" + }, + "s3_shot_driver_55": { + "diff_carry_yd": 2.0, + "diff_total_yd": 21.7, + "diff_apex_ft": 0.4, + "status": "severe", + "error_pattern": "ROLLOUT_TOO_LONG" + }, + "s3_shot_driver_56": { + "diff_carry_yd": 3.7, + "diff_total_yd": 19.6, + "diff_apex_ft": 9.4, + "status": "severe", + "error_pattern": "CARRY_AND_ROLLOUT_LONG" + }, + "s3_shot_driver_57": { + "diff_carry_yd": -5.8, + "diff_total_yd": -20.4, + "diff_apex_ft": -3.7, + "status": "severe", + "error_pattern": "CARRY_AND_ROLLOUT_SHORT" + }, + "s3_shot_driver_58": { + "diff_carry_yd": 17.0, + "diff_total_yd": 34.0, + "diff_apex_ft": -5.4, + "status": "severe", + "error_pattern": "CARRY_AND_ROLLOUT_LONG" + }, + "s3_shot_driver_59": { + "diff_carry_yd": -1.6, + "diff_total_yd": 14.4, + "diff_apex_ft": -4.2, + "status": "severe", + "error_pattern": "ROLLOUT_TOO_LONG" + }, + "s3_shot_driver_60": { + "diff_carry_yd": -0.6, + "diff_total_yd": -15.4, + "diff_apex_ft": -2.5, + "status": "severe", + "error_pattern": "ROLLOUT_TOO_SHORT" + }, + "s3_shot_pw_64": { + "diff_carry_yd": -4.7, + "diff_total_yd": 9.1, + "diff_apex_ft": -3.8, + "status": "moderate", + "error_pattern": "CARRY_TOO_SHORT" + }, + "s3_shot_pw_65": { + "diff_carry_yd": -0.6, + "diff_total_yd": 4.2, + "diff_apex_ft": -4.0, + "status": "pass", + "error_pattern": null + }, + "s3_shot_pw_66": { + "diff_carry_yd": -3.0, + "diff_total_yd": 10.8, + "diff_apex_ft": -3.9, + "status": "severe", + "error_pattern": "ROLLOUT_TOO_LONG" + }, + "s3_shot_pw_67": { + "diff_carry_yd": -0.4, + "diff_total_yd": 5.2, + "diff_apex_ft": -4.1, + "status": "moderate", + "error_pattern": "ROLLOUT_TOO_LONG" + }, + "s3_shot_pw_68": { + "diff_carry_yd": 2.9, + "diff_total_yd": 6.1, + "diff_apex_ft": -6.4, + "status": "moderate", + "error_pattern": "ROLLOUT_TOO_LONG" + }, + "s3_shot_pw_69": { + "diff_carry_yd": -3.2, + "diff_total_yd": 11.6, + "diff_apex_ft": -3.9, + "status": "severe", + "error_pattern": "CARRY_TOO_SHORT" + }, + "s4_shot_3w_31": { + "diff_carry_yd": -0.1, + "diff_total_yd": -3.6, + "diff_apex_ft": -3.6, + "status": "pass", + "error_pattern": null + }, + "s4_shot_3w_32": { + "diff_carry_yd": 5.5, + "diff_total_yd": 12.2, + "diff_apex_ft": 1.4, + "status": "severe", + "error_pattern": "CARRY_AND_ROLLOUT_LONG" + }, + "s4_shot_3w_33": { + "diff_carry_yd": 9.2, + "diff_total_yd": 13.2, + "diff_apex_ft": -8.2, + "status": "severe", + "error_pattern": "CARRY_AND_ROLLOUT_LONG" + }, + "s4_shot_3w_34": { + "diff_carry_yd": 3.6, + "diff_total_yd": 2.2, + "diff_apex_ft": -2.5, + "status": "moderate", + "error_pattern": "CARRY_TOO_LONG" + }, + "s4_shot_3w_35": { + "diff_carry_yd": 4.5, + "diff_total_yd": 2.8, + "diff_apex_ft": -3.1, + "status": "moderate", + "error_pattern": "CARRY_TOO_LONG" + }, + "s4_shot_5i_25": { + "diff_carry_yd": -2.9, + "diff_total_yd": -7.2, + "diff_apex_ft": -5.5, + "status": "moderate", + "error_pattern": "ROLLOUT_TOO_SHORT" + }, + "s4_shot_5i_26": { + "diff_carry_yd": 3.1, + "diff_total_yd": 5.0, + "diff_apex_ft": 2.9, + "status": "moderate", + "error_pattern": "CARRY_TOO_LONG" + }, + "s4_shot_5i_27": { + "diff_carry_yd": -2.0, + "diff_total_yd": 10.8, + "diff_apex_ft": -0.2, + "status": "severe", + "error_pattern": "ROLLOUT_TOO_LONG" + }, + "s4_shot_5i_28": { + "diff_carry_yd": -0.2, + "diff_total_yd": -6.9, + "diff_apex_ft": 5.0, + "status": "moderate", + "error_pattern": "ROLLOUT_TOO_SHORT" + }, + "s4_shot_5i_29": { + "diff_carry_yd": 6.3, + "diff_total_yd": 13.8, + "diff_apex_ft": 1.0, + "status": "severe", + "error_pattern": "CARRY_AND_ROLLOUT_LONG" + }, + "s4_shot_5i_30": { + "diff_carry_yd": 4.8, + "diff_total_yd": 4.1, + "diff_apex_ft": -7.1, + "status": "moderate", + "error_pattern": "CARRY_TOO_LONG" + }, + "s4_shot_6i_19": { + "diff_carry_yd": -0.5, + "diff_total_yd": -11.5, + "diff_apex_ft": 0.2, + "status": "severe", + "error_pattern": "ROLLOUT_TOO_SHORT" + }, + "s4_shot_6i_20": { + "diff_carry_yd": -0.1, + "diff_total_yd": 11.4, + "diff_apex_ft": 0.0, + "status": "severe", + "error_pattern": "ROLLOUT_TOO_LONG" + }, + "s4_shot_6i_21": { + "diff_carry_yd": 0.9, + "diff_total_yd": -1.5, + "diff_apex_ft": -6.8, + "status": "pass", + "error_pattern": null + }, + "s4_shot_6i_22": { + "diff_carry_yd": 4.5, + "diff_total_yd": 10.8, + "diff_apex_ft": 0.9, + "status": "severe", + "error_pattern": "CARRY_AND_ROLLOUT_LONG" + }, + "s4_shot_6i_23": { + "diff_carry_yd": null, + "diff_total_yd": null, + "diff_apex_ft": null, + "status": "pass", + "error_pattern": null + }, + "s4_shot_6i_24": { + "diff_carry_yd": null, + "diff_total_yd": null, + "diff_apex_ft": null, + "status": "pass", + "error_pattern": null + }, + "s4_shot_9i_13": { + "diff_carry_yd": null, + "diff_total_yd": null, + "diff_apex_ft": null, + "status": "pass", + "error_pattern": null + }, + "s4_shot_9i_14": { + "diff_carry_yd": -0.1, + "diff_total_yd": 1.2, + "diff_apex_ft": -6.4, + "status": "pass", + "error_pattern": null + }, + "s4_shot_9i_15": { + "diff_carry_yd": -2.9, + "diff_total_yd": 10.8, + "diff_apex_ft": -3.7, + "status": "severe", + "error_pattern": "ROLLOUT_TOO_LONG" + }, + "s4_shot_9i_17": { + "diff_carry_yd": -2.0, + "diff_total_yd": -16.6, + "diff_apex_ft": -0.6, + "status": "severe", + "error_pattern": "ROLLOUT_TOO_SHORT" + }, + "s4_shot_9i_18": { + "diff_carry_yd": -2.8, + "diff_total_yd": 8.7, + "diff_apex_ft": -3.5, + "status": "moderate", + "error_pattern": "ROLLOUT_TOO_LONG" + }, + "s4_shot_lw_38": { + "diff_carry_yd": -5.7, + "diff_total_yd": 2.1, + "diff_apex_ft": -4.0, + "status": "moderate", + "error_pattern": "CARRY_TOO_SHORT" + }, + "s4_shot_pw_1": { + "diff_carry_yd": -7.7, + "diff_total_yd": -14.3, + "diff_apex_ft": -0.3, + "status": "severe", + "error_pattern": "CARRY_AND_ROLLOUT_SHORT" + }, + "s4_shot_pw_10": { + "diff_carry_yd": -2.4, + "diff_total_yd": 0.4, + "diff_apex_ft": -4.2, + "status": "pass", + "error_pattern": null + }, + "s4_shot_pw_11": { + "diff_carry_yd": -2.6, + "diff_total_yd": 0.4, + "diff_apex_ft": -3.8, + "status": "pass", + "error_pattern": null + }, + "s4_shot_pw_2": { + "diff_carry_yd": -4.8, + "diff_total_yd": 4.3, + "diff_apex_ft": -1.6, + "status": "moderate", + "error_pattern": "CARRY_TOO_SHORT" + }, + "s4_shot_pw_3": { + "diff_carry_yd": -6.9, + "diff_total_yd": 3.9, + "diff_apex_ft": -3.9, + "status": "moderate", + "error_pattern": "CARRY_TOO_SHORT" + }, + "s4_shot_pw_47": { + "diff_carry_yd": -3.9, + "diff_total_yd": 4.0, + "diff_apex_ft": -1.2, + "status": "moderate", + "error_pattern": "CARRY_TOO_SHORT" + }, + "s4_shot_pw_48": { + "diff_carry_yd": -4.3, + "diff_total_yd": 2.7, + "diff_apex_ft": -1.3, + "status": "moderate", + "error_pattern": "CARRY_TOO_SHORT" + }, + "s4_shot_pw_49": { + "diff_carry_yd": -6.2, + "diff_total_yd": 4.4, + "diff_apex_ft": -1.9, + "status": "moderate", + "error_pattern": "CARRY_TOO_SHORT" + }, + "s4_shot_pw_6": { + "diff_carry_yd": -8.2, + "diff_total_yd": 7.0, + "diff_apex_ft": -3.6, + "status": "severe", + "error_pattern": "CARRY_TOO_SHORT" + }, + "s4_shot_pw_7": { + "diff_carry_yd": -2.0, + "diff_total_yd": 12.2, + "diff_apex_ft": -3.7, + "status": "severe", + "error_pattern": "ROLLOUT_TOO_LONG" + }, + "s4_shot_pw_9": { + "diff_carry_yd": null, + "diff_total_yd": null, + "diff_apex_ft": null, + "status": "pass", + "error_pattern": null + }, + "topped_test_shot": { + "diff_carry_yd": -0.7, + "diff_total_yd": 13.8, + "diff_apex_ft": -0.1, + "status": "severe", + "error_pattern": "ROLLOUT_TOO_LONG" + }, + "wedge_shot_1": { + "diff_carry_yd": -5.8, + "diff_total_yd": -1.7, + "diff_apex_ft": -2.6, + "status": "moderate", + "error_pattern": "CARRY_TOO_SHORT" + }, + "wedge_shot_2": { + "diff_carry_yd": -6.6, + "diff_total_yd": 2.1, + "diff_apex_ft": -4.4, + "status": "moderate", + "error_pattern": "CARRY_TOO_SHORT" + }, + "wedge_test_shot": { + "diff_carry_yd": -5.3, + "diff_total_yd": 3.2, + "diff_apex_ft": -3.2, + "status": "moderate", + "error_pattern": "CARRY_TOO_SHORT" + }, + "wedge_test_shot2": { + "diff_carry_yd": -5.5, + "diff_total_yd": 2.9, + "diff_apex_ft": -2.0, + "status": "moderate", + "error_pattern": "CARRY_TOO_SHORT" + }, + "wood1": { + "diff_carry_yd": 11.9, + "diff_total_yd": -4.0, + "diff_apex_ft": 3.1, + "status": "severe", + "error_pattern": "CARRY_TOO_LONG" + }, + "wood2": { + "diff_carry_yd": 3.8, + "diff_total_yd": 0.4, + "diff_apex_ft": -1.8, + "status": "moderate", + "error_pattern": "CARRY_TOO_LONG" + }, + "wood_low_test_shot": { + "diff_carry_yd": 1.3, + "diff_total_yd": 22.0, + "diff_apex_ft": 0.3, + "status": "severe", + "error_pattern": "ROLLOUT_TOO_LONG" + } + }, + "regressions": [], + "conflicts": [ + "Bounce.FlightTangentialRetentionBase", + "Bounce.FlightSpinFactorMin", + "Bounce.FlightSpinFactorDivisor", + "Rollout.MidSpinMultiplierMax", + "Rollout.HighSpinMultiplierMax", + "Rollout.FrictionBlendSpeed", + "KineticFrictionMultiplier", + "Bounce.RolloutHighSpinRetention", + "Bounce.CorBaseA", + "Rollout.LowSpinMultiplierMax", + "Rollout.LowSpinThreshold", + "RollingFrictionMultiplier", + "Bounce.RolloutLowSpinRetention", + "Flight.ClMaxBase", + "Flight.CdMin", + "Flight.HighLaunchDragBoostMax", + "DragScaleMultiplier", + "LiftScaleMultiplier" + ] +} diff --git a/assets/data/calibration/history/iteration_057.json b/assets/data/calibration/history/iteration_057.json new file mode 100644 index 0000000..ef8633a --- /dev/null +++ b/assets/data/calibration/history/iteration_057.json @@ -0,0 +1,986 @@ +{ + "iteration": 57, + "timestamp": "2026-03-14T02:25:21.467314", + "profile_overrides": {}, + "summary": { + "pass": 23, + "moderate": 41, + "severe": 65, + "no_reference": 7 + }, + "per_shot": { + "5iron": { + "diff_carry_yd": 4.8, + "diff_total_yd": 11.3, + "diff_apex_ft": 4.6, + "status": "severe", + "error_pattern": "CARRY_AND_ROLLOUT_LONG" + }, + "approach_mid_iron_test_shot": { + "diff_carry_yd": -0.6, + "diff_total_yd": 7.3, + "diff_apex_ft": -5.0, + "status": "moderate", + "error_pattern": "ROLLOUT_TOO_LONG" + }, + "bump_and_run": { + "diff_carry_yd": -9.1, + "diff_total_yd": -27.5, + "diff_apex_ft": -2.1, + "status": "severe", + "error_pattern": "CARRY_AND_ROLLOUT_SHORT" + }, + "bump_and_run_slow": { + "diff_carry_yd": null, + "diff_total_yd": null, + "diff_apex_ft": null, + "status": "pass", + "error_pattern": null + }, + "bump_test_shot": { + "diff_carry_yd": -2.1, + "diff_total_yd": 12.7, + "diff_apex_ft": -0.1, + "status": "severe", + "error_pattern": "ROLLOUT_TOO_LONG" + }, + "checked_test_shot": { + "diff_carry_yd": -2.1, + "diff_total_yd": -0.5, + "diff_apex_ft": -9.6, + "status": "pass", + "error_pattern": null + }, + "chip_test_shot": { + "diff_carry_yd": null, + "diff_total_yd": null, + "diff_apex_ft": null, + "status": "pass", + "error_pattern": null + }, + "drive_test_shot": { + "diff_carry_yd": -0.4, + "diff_total_yd": -0.6, + "diff_apex_ft": -1.1, + "status": "pass", + "error_pattern": null + }, + "driver1": { + "diff_carry_yd": -0.3, + "diff_total_yd": -26.3, + "diff_apex_ft": -0.8, + "status": "severe", + "error_pattern": "ROLLOUT_TOO_SHORT" + }, + "driver2": { + "diff_carry_yd": 7.6, + "diff_total_yd": 7.3, + "diff_apex_ft": -3.0, + "status": "severe", + "error_pattern": "CARRY_AND_ROLLOUT_LONG" + }, + "driver3": { + "diff_carry_yd": 5.1, + "diff_total_yd": 20.4, + "diff_apex_ft": 20.6, + "status": "severe", + "error_pattern": "CARRY_AND_ROLLOUT_LONG" + }, + "driver4": { + "diff_carry_yd": 6.3, + "diff_total_yd": 15.0, + "diff_apex_ft": 4.1, + "status": "severe", + "error_pattern": "CARRY_AND_ROLLOUT_LONG" + }, + "flop_test_shot": { + "diff_carry_yd": -0.2, + "diff_total_yd": 1.6, + "diff_apex_ft": -8.5, + "status": "pass", + "error_pattern": null + }, + "p_wedge_shot_1": { + "diff_carry_yd": -4.8, + "diff_total_yd": 1.7, + "diff_apex_ft": -5.5, + "status": "moderate", + "error_pattern": "CARRY_TOO_SHORT" + }, + "s2_shot_10": { + "diff_carry_yd": 3.4, + "diff_total_yd": 10.2, + "diff_apex_ft": -6.0, + "status": "severe", + "error_pattern": "CARRY_AND_ROLLOUT_LONG" + }, + "s2_shot_11": { + "diff_carry_yd": -2.6, + "diff_total_yd": 1.1, + "diff_apex_ft": -4.6, + "status": "pass", + "error_pattern": null + }, + "s2_shot_12": { + "diff_carry_yd": 4.5, + "diff_total_yd": 9.5, + "diff_apex_ft": -5.3, + "status": "moderate", + "error_pattern": "CARRY_AND_ROLLOUT_LONG" + }, + "s2_shot_13": { + "diff_carry_yd": 1.2, + "diff_total_yd": 3.2, + "diff_apex_ft": -6.1, + "status": "pass", + "error_pattern": null + }, + "s2_shot_14": { + "diff_carry_yd": -0.3, + "diff_total_yd": 1.7, + "diff_apex_ft": -6.1, + "status": "pass", + "error_pattern": null + }, + "s2_shot_15": { + "diff_carry_yd": -1.0, + "diff_total_yd": -12.7, + "diff_apex_ft": -2.0, + "status": "severe", + "error_pattern": "ROLLOUT_TOO_SHORT" + }, + "s2_shot_16": { + "diff_carry_yd": -0.3, + "diff_total_yd": 2.2, + "diff_apex_ft": -3.5, + "status": "pass", + "error_pattern": null + }, + "s2_shot_17": { + "diff_carry_yd": 5.8, + "diff_total_yd": 8.0, + "diff_apex_ft": -3.9, + "status": "moderate", + "error_pattern": "CARRY_AND_ROLLOUT_LONG" + }, + "s2_shot_18": { + "diff_carry_yd": 4.3, + "diff_total_yd": 14.0, + "diff_apex_ft": 2.6, + "status": "severe", + "error_pattern": "CARRY_AND_ROLLOUT_LONG" + }, + "s2_shot_19": { + "diff_carry_yd": 2.2, + "diff_total_yd": -6.1, + "diff_apex_ft": -1.2, + "status": "moderate", + "error_pattern": "ROLLOUT_TOO_SHORT" + }, + "s2_shot_20": { + "diff_carry_yd": 6.0, + "diff_total_yd": 11.5, + "diff_apex_ft": -2.0, + "status": "severe", + "error_pattern": "CARRY_AND_ROLLOUT_LONG" + }, + "s2_shot_21": { + "diff_carry_yd": 4.9, + "diff_total_yd": 27.7, + "diff_apex_ft": 1.7, + "status": "severe", + "error_pattern": "CARRY_AND_ROLLOUT_LONG" + }, + "s2_shot_22": { + "diff_carry_yd": 4.6, + "diff_total_yd": 1.6, + "diff_apex_ft": -1.6, + "status": "moderate", + "error_pattern": "CARRY_TOO_LONG" + }, + "s2_shot_23": { + "diff_carry_yd": 3.5, + "diff_total_yd": -19.6, + "diff_apex_ft": 0.0, + "status": "severe", + "error_pattern": "CARRY_TOO_LONG" + }, + "s2_shot_24": { + "diff_carry_yd": 4.7, + "diff_total_yd": 3.4, + "diff_apex_ft": -1.9, + "status": "moderate", + "error_pattern": "CARRY_TOO_LONG" + }, + "s2_shot_26": { + "diff_carry_yd": 1.7, + "diff_total_yd": 20.6, + "diff_apex_ft": 23.5, + "status": "severe", + "error_pattern": "ROLLOUT_TOO_LONG" + }, + "s2_shot_27": { + "diff_carry_yd": 2.6, + "diff_total_yd": 12.8, + "diff_apex_ft": 4.8, + "status": "severe", + "error_pattern": "ROLLOUT_TOO_LONG" + }, + "s2_shot_9": { + "diff_carry_yd": -3.3, + "diff_total_yd": 1.6, + "diff_apex_ft": 7.1, + "status": "moderate", + "error_pattern": "CARRY_TOO_SHORT" + }, + "s3_shot_3w_18": { + "diff_carry_yd": null, + "diff_total_yd": null, + "diff_apex_ft": null, + "status": "pass", + "error_pattern": null + }, + "s3_shot_3w_19": { + "diff_carry_yd": -0.6, + "diff_total_yd": 16.0, + "diff_apex_ft": 0.1, + "status": "severe", + "error_pattern": "ROLLOUT_TOO_LONG" + }, + "s3_shot_3w_21": { + "diff_carry_yd": 0.6, + "diff_total_yd": 15.9, + "diff_apex_ft": 0.3, + "status": "severe", + "error_pattern": "ROLLOUT_TOO_LONG" + }, + "s3_shot_3w_22": { + "diff_carry_yd": 2.6, + "diff_total_yd": 19.6, + "diff_apex_ft": 0.5, + "status": "severe", + "error_pattern": "ROLLOUT_TOO_LONG" + }, + "s3_shot_3w_23": { + "diff_carry_yd": 0.1, + "diff_total_yd": -23.3, + "diff_apex_ft": -1.3, + "status": "severe", + "error_pattern": "ROLLOUT_TOO_SHORT" + }, + "s3_shot_3w_24": { + "diff_carry_yd": 6.9, + "diff_total_yd": 28.4, + "diff_apex_ft": 1.8, + "status": "severe", + "error_pattern": "CARRY_AND_ROLLOUT_LONG" + }, + "s3_shot_5i_10": { + "diff_carry_yd": 2.5, + "diff_total_yd": -7.6, + "diff_apex_ft": 5.8, + "status": "moderate", + "error_pattern": "ROLLOUT_TOO_SHORT" + }, + "s3_shot_5i_11": { + "diff_carry_yd": -3.7, + "diff_total_yd": -17.6, + "diff_apex_ft": -1.3, + "status": "severe", + "error_pattern": "CARRY_AND_ROLLOUT_SHORT" + }, + "s3_shot_5i_12": { + "diff_carry_yd": 1.1, + "diff_total_yd": -23.5, + "diff_apex_ft": 1.1, + "status": "severe", + "error_pattern": "ROLLOUT_TOO_SHORT" + }, + "s3_shot_5i_13": { + "diff_carry_yd": 2.3, + "diff_total_yd": 10.1, + "diff_apex_ft": 0.6, + "status": "severe", + "error_pattern": "ROLLOUT_TOO_LONG" + }, + "s3_shot_5i_15": { + "diff_carry_yd": -4.6, + "diff_total_yd": 14.5, + "diff_apex_ft": -1.1, + "status": "severe", + "error_pattern": "CARRY_TOO_SHORT" + }, + "s3_shot_5i_16": { + "diff_carry_yd": 0.9, + "diff_total_yd": -21.0, + "diff_apex_ft": -0.2, + "status": "severe", + "error_pattern": "ROLLOUT_TOO_SHORT" + }, + "s3_shot_5i_17": { + "diff_carry_yd": -2.2, + "diff_total_yd": -1.7, + "diff_apex_ft": -0.3, + "status": "pass", + "error_pattern": null + }, + "s3_shot_6i_35": { + "diff_carry_yd": -5.5, + "diff_total_yd": -17.0, + "diff_apex_ft": -3.4, + "status": "severe", + "error_pattern": "CARRY_AND_ROLLOUT_SHORT" + }, + "s3_shot_6i_36": { + "diff_carry_yd": 1.7, + "diff_total_yd": -21.1, + "diff_apex_ft": 0.6, + "status": "severe", + "error_pattern": "ROLLOUT_TOO_SHORT" + }, + "s3_shot_6i_37": { + "diff_carry_yd": -3.7, + "diff_total_yd": 11.9, + "diff_apex_ft": -0.9, + "status": "severe", + "error_pattern": "CARRY_TOO_SHORT" + }, + "s3_shot_6i_38": { + "diff_carry_yd": -3.6, + "diff_total_yd": -21.7, + "diff_apex_ft": 0.1, + "status": "severe", + "error_pattern": "CARRY_AND_ROLLOUT_SHORT" + }, + "s3_shot_6i_39": { + "diff_carry_yd": -0.5, + "diff_total_yd": 6.4, + "diff_apex_ft": 0.0, + "status": "moderate", + "error_pattern": "ROLLOUT_TOO_LONG" + }, + "s3_shot_6i_40": { + "diff_carry_yd": -1.3, + "diff_total_yd": 7.7, + "diff_apex_ft": 0.1, + "status": "moderate", + "error_pattern": "ROLLOUT_TOO_LONG" + }, + "s3_shot_6i_41": { + "diff_carry_yd": -4.7, + "diff_total_yd": 12.9, + "diff_apex_ft": -1.0, + "status": "severe", + "error_pattern": "CARRY_TOO_SHORT" + }, + "s3_shot_6i_42": { + "diff_carry_yd": -1.4, + "diff_total_yd": -17.8, + "diff_apex_ft": 0.7, + "status": "severe", + "error_pattern": "ROLLOUT_TOO_SHORT" + }, + "s3_shot_6i_43": { + "diff_carry_yd": 5.6, + "diff_total_yd": -0.2, + "diff_apex_ft": 7.8, + "status": "moderate", + "error_pattern": "CARRY_TOO_LONG" + }, + "s3_shot_6i_44": { + "diff_carry_yd": -1.8, + "diff_total_yd": -28.0, + "diff_apex_ft": -1.4, + "status": "severe", + "error_pattern": "ROLLOUT_TOO_SHORT" + }, + "s3_shot_6i_45": { + "diff_carry_yd": 3.0, + "diff_total_yd": 20.4, + "diff_apex_ft": 0.5, + "status": "severe", + "error_pattern": "ROLLOUT_TOO_LONG" + }, + "s3_shot_6i_46": { + "diff_carry_yd": 3.1, + "diff_total_yd": -4.2, + "diff_apex_ft": -1.7, + "status": "moderate", + "error_pattern": "CARRY_TOO_LONG" + }, + "s3_shot_6i_47": { + "diff_carry_yd": 6.1, + "diff_total_yd": 8.3, + "diff_apex_ft": 11.4, + "status": "moderate", + "error_pattern": "CARRY_AND_ROLLOUT_LONG" + }, + "s3_shot_6i_48": { + "diff_carry_yd": 5.3, + "diff_total_yd": 8.8, + "diff_apex_ft": 13.8, + "status": "moderate", + "error_pattern": "CARRY_AND_ROLLOUT_LONG" + }, + "s3_shot_6i_49": { + "diff_carry_yd": -2.5, + "diff_total_yd": 6.9, + "diff_apex_ft": -0.3, + "status": "moderate", + "error_pattern": "ROLLOUT_TOO_LONG" + }, + "s3_shot_6i_50": { + "diff_carry_yd": -0.9, + "diff_total_yd": -12.5, + "diff_apex_ft": 3.8, + "status": "severe", + "error_pattern": "ROLLOUT_TOO_SHORT" + }, + "s3_shot_7i_25": { + "diff_carry_yd": -0.9, + "diff_total_yd": -18.4, + "diff_apex_ft": 0.9, + "status": "severe", + "error_pattern": "ROLLOUT_TOO_SHORT" + }, + "s3_shot_7i_26": { + "diff_carry_yd": 1.5, + "diff_total_yd": -22.1, + "diff_apex_ft": 1.1, + "status": "severe", + "error_pattern": "ROLLOUT_TOO_SHORT" + }, + "s3_shot_7i_27": { + "diff_carry_yd": 1.2, + "diff_total_yd": 4.7, + "diff_apex_ft": 7.7, + "status": "pass", + "error_pattern": null + }, + "s3_shot_7i_28": { + "diff_carry_yd": 0.5, + "diff_total_yd": 1.5, + "diff_apex_ft": 8.1, + "status": "pass", + "error_pattern": null + }, + "s3_shot_7i_29": { + "diff_carry_yd": 0.1, + "diff_total_yd": -6.6, + "diff_apex_ft": -3.6, + "status": "moderate", + "error_pattern": "ROLLOUT_TOO_SHORT" + }, + "s3_shot_7i_30": { + "diff_carry_yd": -0.7, + "diff_total_yd": 1.0, + "diff_apex_ft": 5.3, + "status": "pass", + "error_pattern": null + }, + "s3_shot_7i_31": { + "diff_carry_yd": -5.2, + "diff_total_yd": -14.7, + "diff_apex_ft": -4.2, + "status": "severe", + "error_pattern": "CARRY_AND_ROLLOUT_SHORT" + }, + "s3_shot_7i_32": { + "diff_carry_yd": -2.4, + "diff_total_yd": -2.8, + "diff_apex_ft": 3.0, + "status": "pass", + "error_pattern": null + }, + "s3_shot_7i_33": { + "diff_carry_yd": -2.2, + "diff_total_yd": -1.9, + "diff_apex_ft": 4.5, + "status": "pass", + "error_pattern": null + }, + "s3_shot_7i_34": { + "diff_carry_yd": 3.6, + "diff_total_yd": 2.0, + "diff_apex_ft": 3.0, + "status": "moderate", + "error_pattern": "CARRY_TOO_LONG" + }, + "s3_shot_9i_1": { + "diff_carry_yd": -1.9, + "diff_total_yd": -13.0, + "diff_apex_ft": 1.2, + "status": "severe", + "error_pattern": "ROLLOUT_TOO_SHORT" + }, + "s3_shot_9i_2": { + "diff_carry_yd": -8.2, + "diff_total_yd": -9.2, + "diff_apex_ft": -3.1, + "status": "severe", + "error_pattern": "CARRY_AND_ROLLOUT_SHORT" + }, + "s3_shot_9i_3": { + "diff_carry_yd": -1.9, + "diff_total_yd": 1.4, + "diff_apex_ft": -5.4, + "status": "pass", + "error_pattern": null + }, + "s3_shot_9i_5": { + "diff_carry_yd": -3.0, + "diff_total_yd": -5.9, + "diff_apex_ft": -5.5, + "status": "moderate", + "error_pattern": "ROLLOUT_TOO_SHORT" + }, + "s3_shot_9i_7": { + "diff_carry_yd": 0.6, + "diff_total_yd": 1.1, + "diff_apex_ft": -4.3, + "status": "pass", + "error_pattern": null + }, + "s3_shot_9i_8": { + "diff_carry_yd": -2.3, + "diff_total_yd": 4.7, + "diff_apex_ft": -1.8, + "status": "pass", + "error_pattern": null + }, + "s3_shot_9i_9": { + "diff_carry_yd": -1.8, + "diff_total_yd": 2.3, + "diff_apex_ft": -6.3, + "status": "pass", + "error_pattern": null + }, + "s3_shot_driver_51": { + "diff_carry_yd": 10.4, + "diff_total_yd": 28.4, + "diff_apex_ft": 0.0, + "status": "severe", + "error_pattern": "CARRY_AND_ROLLOUT_LONG" + }, + "s3_shot_driver_52": { + "diff_carry_yd": 8.2, + "diff_total_yd": 23.9, + "diff_apex_ft": -2.0, + "status": "severe", + "error_pattern": "CARRY_AND_ROLLOUT_LONG" + }, + "s3_shot_driver_53": { + "diff_carry_yd": 4.5, + "diff_total_yd": 15.7, + "diff_apex_ft": -4.5, + "status": "severe", + "error_pattern": "CARRY_AND_ROLLOUT_LONG" + }, + "s3_shot_driver_54": { + "diff_carry_yd": 4.6, + "diff_total_yd": -0.7, + "diff_apex_ft": -2.5, + "status": "moderate", + "error_pattern": "CARRY_TOO_LONG" + }, + "s3_shot_driver_55": { + "diff_carry_yd": 2.0, + "diff_total_yd": 21.7, + "diff_apex_ft": 0.4, + "status": "severe", + "error_pattern": "ROLLOUT_TOO_LONG" + }, + "s3_shot_driver_56": { + "diff_carry_yd": 3.7, + "diff_total_yd": 19.6, + "diff_apex_ft": 9.4, + "status": "severe", + "error_pattern": "CARRY_AND_ROLLOUT_LONG" + }, + "s3_shot_driver_57": { + "diff_carry_yd": -5.8, + "diff_total_yd": -20.4, + "diff_apex_ft": -3.7, + "status": "severe", + "error_pattern": "CARRY_AND_ROLLOUT_SHORT" + }, + "s3_shot_driver_58": { + "diff_carry_yd": 17.0, + "diff_total_yd": 34.0, + "diff_apex_ft": -5.4, + "status": "severe", + "error_pattern": "CARRY_AND_ROLLOUT_LONG" + }, + "s3_shot_driver_59": { + "diff_carry_yd": -1.6, + "diff_total_yd": 14.4, + "diff_apex_ft": -4.2, + "status": "severe", + "error_pattern": "ROLLOUT_TOO_LONG" + }, + "s3_shot_driver_60": { + "diff_carry_yd": -0.6, + "diff_total_yd": -15.4, + "diff_apex_ft": -2.5, + "status": "severe", + "error_pattern": "ROLLOUT_TOO_SHORT" + }, + "s3_shot_pw_64": { + "diff_carry_yd": -4.7, + "diff_total_yd": 9.1, + "diff_apex_ft": -3.8, + "status": "moderate", + "error_pattern": "CARRY_TOO_SHORT" + }, + "s3_shot_pw_65": { + "diff_carry_yd": -0.6, + "diff_total_yd": 4.2, + "diff_apex_ft": -4.0, + "status": "pass", + "error_pattern": null + }, + "s3_shot_pw_66": { + "diff_carry_yd": -3.0, + "diff_total_yd": 10.8, + "diff_apex_ft": -3.9, + "status": "severe", + "error_pattern": "ROLLOUT_TOO_LONG" + }, + "s3_shot_pw_67": { + "diff_carry_yd": -0.4, + "diff_total_yd": 5.2, + "diff_apex_ft": -4.1, + "status": "moderate", + "error_pattern": "ROLLOUT_TOO_LONG" + }, + "s3_shot_pw_68": { + "diff_carry_yd": 2.9, + "diff_total_yd": 6.1, + "diff_apex_ft": -6.4, + "status": "moderate", + "error_pattern": "ROLLOUT_TOO_LONG" + }, + "s3_shot_pw_69": { + "diff_carry_yd": -3.2, + "diff_total_yd": 11.6, + "diff_apex_ft": -3.9, + "status": "severe", + "error_pattern": "CARRY_TOO_SHORT" + }, + "s4_shot_3w_31": { + "diff_carry_yd": -0.1, + "diff_total_yd": -3.6, + "diff_apex_ft": -3.6, + "status": "pass", + "error_pattern": null + }, + "s4_shot_3w_32": { + "diff_carry_yd": 5.5, + "diff_total_yd": 12.2, + "diff_apex_ft": 1.4, + "status": "severe", + "error_pattern": "CARRY_AND_ROLLOUT_LONG" + }, + "s4_shot_3w_33": { + "diff_carry_yd": 9.2, + "diff_total_yd": 13.2, + "diff_apex_ft": -8.2, + "status": "severe", + "error_pattern": "CARRY_AND_ROLLOUT_LONG" + }, + "s4_shot_3w_34": { + "diff_carry_yd": 3.6, + "diff_total_yd": 2.2, + "diff_apex_ft": -2.5, + "status": "moderate", + "error_pattern": "CARRY_TOO_LONG" + }, + "s4_shot_3w_35": { + "diff_carry_yd": 4.5, + "diff_total_yd": 2.8, + "diff_apex_ft": -3.1, + "status": "moderate", + "error_pattern": "CARRY_TOO_LONG" + }, + "s4_shot_5i_25": { + "diff_carry_yd": -2.9, + "diff_total_yd": -7.2, + "diff_apex_ft": -5.5, + "status": "moderate", + "error_pattern": "ROLLOUT_TOO_SHORT" + }, + "s4_shot_5i_26": { + "diff_carry_yd": 3.1, + "diff_total_yd": 5.0, + "diff_apex_ft": 2.9, + "status": "moderate", + "error_pattern": "CARRY_TOO_LONG" + }, + "s4_shot_5i_27": { + "diff_carry_yd": -2.0, + "diff_total_yd": 10.8, + "diff_apex_ft": -0.2, + "status": "severe", + "error_pattern": "ROLLOUT_TOO_LONG" + }, + "s4_shot_5i_28": { + "diff_carry_yd": -0.2, + "diff_total_yd": -6.9, + "diff_apex_ft": 5.0, + "status": "moderate", + "error_pattern": "ROLLOUT_TOO_SHORT" + }, + "s4_shot_5i_29": { + "diff_carry_yd": 6.3, + "diff_total_yd": 13.8, + "diff_apex_ft": 1.0, + "status": "severe", + "error_pattern": "CARRY_AND_ROLLOUT_LONG" + }, + "s4_shot_5i_30": { + "diff_carry_yd": 4.8, + "diff_total_yd": 4.1, + "diff_apex_ft": -7.1, + "status": "moderate", + "error_pattern": "CARRY_TOO_LONG" + }, + "s4_shot_6i_19": { + "diff_carry_yd": -0.5, + "diff_total_yd": -11.5, + "diff_apex_ft": 0.2, + "status": "severe", + "error_pattern": "ROLLOUT_TOO_SHORT" + }, + "s4_shot_6i_20": { + "diff_carry_yd": -0.1, + "diff_total_yd": 11.4, + "diff_apex_ft": 0.0, + "status": "severe", + "error_pattern": "ROLLOUT_TOO_LONG" + }, + "s4_shot_6i_21": { + "diff_carry_yd": 0.9, + "diff_total_yd": -1.5, + "diff_apex_ft": -6.8, + "status": "pass", + "error_pattern": null + }, + "s4_shot_6i_22": { + "diff_carry_yd": 4.5, + "diff_total_yd": 10.8, + "diff_apex_ft": 0.9, + "status": "severe", + "error_pattern": "CARRY_AND_ROLLOUT_LONG" + }, + "s4_shot_6i_23": { + "diff_carry_yd": null, + "diff_total_yd": null, + "diff_apex_ft": null, + "status": "pass", + "error_pattern": null + }, + "s4_shot_6i_24": { + "diff_carry_yd": null, + "diff_total_yd": null, + "diff_apex_ft": null, + "status": "pass", + "error_pattern": null + }, + "s4_shot_9i_13": { + "diff_carry_yd": null, + "diff_total_yd": null, + "diff_apex_ft": null, + "status": "pass", + "error_pattern": null + }, + "s4_shot_9i_14": { + "diff_carry_yd": -0.1, + "diff_total_yd": 1.2, + "diff_apex_ft": -6.4, + "status": "pass", + "error_pattern": null + }, + "s4_shot_9i_15": { + "diff_carry_yd": -2.9, + "diff_total_yd": 10.8, + "diff_apex_ft": -3.7, + "status": "severe", + "error_pattern": "ROLLOUT_TOO_LONG" + }, + "s4_shot_9i_17": { + "diff_carry_yd": -2.0, + "diff_total_yd": -16.6, + "diff_apex_ft": -0.6, + "status": "severe", + "error_pattern": "ROLLOUT_TOO_SHORT" + }, + "s4_shot_9i_18": { + "diff_carry_yd": -2.8, + "diff_total_yd": 8.7, + "diff_apex_ft": -3.5, + "status": "moderate", + "error_pattern": "ROLLOUT_TOO_LONG" + }, + "s4_shot_lw_38": { + "diff_carry_yd": -5.7, + "diff_total_yd": 2.1, + "diff_apex_ft": -4.0, + "status": "moderate", + "error_pattern": "CARRY_TOO_SHORT" + }, + "s4_shot_pw_1": { + "diff_carry_yd": -7.7, + "diff_total_yd": -14.3, + "diff_apex_ft": -0.3, + "status": "severe", + "error_pattern": "CARRY_AND_ROLLOUT_SHORT" + }, + "s4_shot_pw_10": { + "diff_carry_yd": -2.4, + "diff_total_yd": 0.4, + "diff_apex_ft": -4.2, + "status": "pass", + "error_pattern": null + }, + "s4_shot_pw_11": { + "diff_carry_yd": -2.6, + "diff_total_yd": 0.4, + "diff_apex_ft": -3.8, + "status": "pass", + "error_pattern": null + }, + "s4_shot_pw_2": { + "diff_carry_yd": -4.8, + "diff_total_yd": 4.3, + "diff_apex_ft": -1.6, + "status": "moderate", + "error_pattern": "CARRY_TOO_SHORT" + }, + "s4_shot_pw_3": { + "diff_carry_yd": -6.9, + "diff_total_yd": 3.9, + "diff_apex_ft": -3.9, + "status": "moderate", + "error_pattern": "CARRY_TOO_SHORT" + }, + "s4_shot_pw_47": { + "diff_carry_yd": -3.9, + "diff_total_yd": 4.0, + "diff_apex_ft": -1.2, + "status": "moderate", + "error_pattern": "CARRY_TOO_SHORT" + }, + "s4_shot_pw_48": { + "diff_carry_yd": -4.3, + "diff_total_yd": 2.7, + "diff_apex_ft": -1.3, + "status": "moderate", + "error_pattern": "CARRY_TOO_SHORT" + }, + "s4_shot_pw_49": { + "diff_carry_yd": -6.2, + "diff_total_yd": 4.4, + "diff_apex_ft": -1.9, + "status": "moderate", + "error_pattern": "CARRY_TOO_SHORT" + }, + "s4_shot_pw_6": { + "diff_carry_yd": -8.2, + "diff_total_yd": 7.0, + "diff_apex_ft": -3.6, + "status": "severe", + "error_pattern": "CARRY_TOO_SHORT" + }, + "s4_shot_pw_7": { + "diff_carry_yd": -2.0, + "diff_total_yd": 12.2, + "diff_apex_ft": -3.7, + "status": "severe", + "error_pattern": "ROLLOUT_TOO_LONG" + }, + "s4_shot_pw_9": { + "diff_carry_yd": null, + "diff_total_yd": null, + "diff_apex_ft": null, + "status": "pass", + "error_pattern": null + }, + "topped_test_shot": { + "diff_carry_yd": -0.7, + "diff_total_yd": 13.8, + "diff_apex_ft": -0.1, + "status": "severe", + "error_pattern": "ROLLOUT_TOO_LONG" + }, + "wedge_shot_1": { + "diff_carry_yd": -5.8, + "diff_total_yd": -1.7, + "diff_apex_ft": -2.6, + "status": "moderate", + "error_pattern": "CARRY_TOO_SHORT" + }, + "wedge_shot_2": { + "diff_carry_yd": -6.6, + "diff_total_yd": 2.1, + "diff_apex_ft": -4.4, + "status": "moderate", + "error_pattern": "CARRY_TOO_SHORT" + }, + "wedge_test_shot": { + "diff_carry_yd": -5.3, + "diff_total_yd": 3.2, + "diff_apex_ft": -3.2, + "status": "moderate", + "error_pattern": "CARRY_TOO_SHORT" + }, + "wedge_test_shot2": { + "diff_carry_yd": -5.5, + "diff_total_yd": 2.9, + "diff_apex_ft": -2.0, + "status": "moderate", + "error_pattern": "CARRY_TOO_SHORT" + }, + "wood1": { + "diff_carry_yd": 11.9, + "diff_total_yd": -4.0, + "diff_apex_ft": 3.1, + "status": "severe", + "error_pattern": "CARRY_TOO_LONG" + }, + "wood2": { + "diff_carry_yd": 3.8, + "diff_total_yd": 0.4, + "diff_apex_ft": -1.8, + "status": "moderate", + "error_pattern": "CARRY_TOO_LONG" + }, + "wood_low_test_shot": { + "diff_carry_yd": 1.3, + "diff_total_yd": 22.0, + "diff_apex_ft": 0.3, + "status": "severe", + "error_pattern": "ROLLOUT_TOO_LONG" + } + }, + "regressions": [], + "conflicts": [ + "Bounce.FlightTangentialRetentionBase", + "Bounce.FlightSpinFactorMin", + "Bounce.FlightSpinFactorDivisor", + "Rollout.MidSpinMultiplierMax", + "Rollout.HighSpinMultiplierMax", + "Rollout.FrictionBlendSpeed", + "KineticFrictionMultiplier", + "Bounce.RolloutHighSpinRetention", + "Bounce.CorBaseA", + "Rollout.LowSpinMultiplierMax", + "Rollout.LowSpinThreshold", + "RollingFrictionMultiplier", + "Bounce.RolloutLowSpinRetention", + "Flight.ClMaxBase", + "Flight.CdMin", + "Flight.HighLaunchDragBoostMax", + "DragScaleMultiplier", + "LiftScaleMultiplier" + ] +} diff --git a/assets/data/calibration/history/iteration_058.json b/assets/data/calibration/history/iteration_058.json new file mode 100644 index 0000000..4d23205 --- /dev/null +++ b/assets/data/calibration/history/iteration_058.json @@ -0,0 +1,986 @@ +{ + "iteration": 58, + "timestamp": "2026-03-14T02:25:28.104226", + "profile_overrides": {}, + "summary": { + "pass": 23, + "moderate": 41, + "severe": 65, + "no_reference": 7 + }, + "per_shot": { + "5iron": { + "diff_carry_yd": 4.8, + "diff_total_yd": 11.3, + "diff_apex_ft": 4.6, + "status": "severe", + "error_pattern": "CARRY_AND_ROLLOUT_LONG" + }, + "approach_mid_iron_test_shot": { + "diff_carry_yd": -0.6, + "diff_total_yd": 7.3, + "diff_apex_ft": -5.0, + "status": "moderate", + "error_pattern": "ROLLOUT_TOO_LONG" + }, + "bump_and_run": { + "diff_carry_yd": -9.1, + "diff_total_yd": -27.5, + "diff_apex_ft": -2.1, + "status": "severe", + "error_pattern": "CARRY_AND_ROLLOUT_SHORT" + }, + "bump_and_run_slow": { + "diff_carry_yd": null, + "diff_total_yd": null, + "diff_apex_ft": null, + "status": "pass", + "error_pattern": null + }, + "bump_test_shot": { + "diff_carry_yd": -2.1, + "diff_total_yd": 12.7, + "diff_apex_ft": -0.1, + "status": "severe", + "error_pattern": "ROLLOUT_TOO_LONG" + }, + "checked_test_shot": { + "diff_carry_yd": -2.1, + "diff_total_yd": -0.5, + "diff_apex_ft": -9.6, + "status": "pass", + "error_pattern": null + }, + "chip_test_shot": { + "diff_carry_yd": null, + "diff_total_yd": null, + "diff_apex_ft": null, + "status": "pass", + "error_pattern": null + }, + "drive_test_shot": { + "diff_carry_yd": -0.4, + "diff_total_yd": -0.6, + "diff_apex_ft": -1.1, + "status": "pass", + "error_pattern": null + }, + "driver1": { + "diff_carry_yd": -0.3, + "diff_total_yd": -26.3, + "diff_apex_ft": -0.8, + "status": "severe", + "error_pattern": "ROLLOUT_TOO_SHORT" + }, + "driver2": { + "diff_carry_yd": 7.6, + "diff_total_yd": 7.3, + "diff_apex_ft": -3.0, + "status": "severe", + "error_pattern": "CARRY_AND_ROLLOUT_LONG" + }, + "driver3": { + "diff_carry_yd": 5.1, + "diff_total_yd": 20.4, + "diff_apex_ft": 20.6, + "status": "severe", + "error_pattern": "CARRY_AND_ROLLOUT_LONG" + }, + "driver4": { + "diff_carry_yd": 6.3, + "diff_total_yd": 15.0, + "diff_apex_ft": 4.1, + "status": "severe", + "error_pattern": "CARRY_AND_ROLLOUT_LONG" + }, + "flop_test_shot": { + "diff_carry_yd": -0.2, + "diff_total_yd": 1.6, + "diff_apex_ft": -8.5, + "status": "pass", + "error_pattern": null + }, + "p_wedge_shot_1": { + "diff_carry_yd": -4.8, + "diff_total_yd": 1.7, + "diff_apex_ft": -5.5, + "status": "moderate", + "error_pattern": "CARRY_TOO_SHORT" + }, + "s2_shot_10": { + "diff_carry_yd": 3.4, + "diff_total_yd": 10.2, + "diff_apex_ft": -6.0, + "status": "severe", + "error_pattern": "CARRY_AND_ROLLOUT_LONG" + }, + "s2_shot_11": { + "diff_carry_yd": -2.6, + "diff_total_yd": 1.1, + "diff_apex_ft": -4.6, + "status": "pass", + "error_pattern": null + }, + "s2_shot_12": { + "diff_carry_yd": 4.5, + "diff_total_yd": 9.5, + "diff_apex_ft": -5.3, + "status": "moderate", + "error_pattern": "CARRY_AND_ROLLOUT_LONG" + }, + "s2_shot_13": { + "diff_carry_yd": 1.2, + "diff_total_yd": 3.2, + "diff_apex_ft": -6.1, + "status": "pass", + "error_pattern": null + }, + "s2_shot_14": { + "diff_carry_yd": -0.3, + "diff_total_yd": 1.7, + "diff_apex_ft": -6.1, + "status": "pass", + "error_pattern": null + }, + "s2_shot_15": { + "diff_carry_yd": -1.0, + "diff_total_yd": -12.7, + "diff_apex_ft": -2.0, + "status": "severe", + "error_pattern": "ROLLOUT_TOO_SHORT" + }, + "s2_shot_16": { + "diff_carry_yd": -0.3, + "diff_total_yd": 2.2, + "diff_apex_ft": -3.5, + "status": "pass", + "error_pattern": null + }, + "s2_shot_17": { + "diff_carry_yd": 5.8, + "diff_total_yd": 8.0, + "diff_apex_ft": -3.9, + "status": "moderate", + "error_pattern": "CARRY_AND_ROLLOUT_LONG" + }, + "s2_shot_18": { + "diff_carry_yd": 4.3, + "diff_total_yd": 14.0, + "diff_apex_ft": 2.6, + "status": "severe", + "error_pattern": "CARRY_AND_ROLLOUT_LONG" + }, + "s2_shot_19": { + "diff_carry_yd": 2.2, + "diff_total_yd": -6.1, + "diff_apex_ft": -1.2, + "status": "moderate", + "error_pattern": "ROLLOUT_TOO_SHORT" + }, + "s2_shot_20": { + "diff_carry_yd": 6.0, + "diff_total_yd": 11.5, + "diff_apex_ft": -2.0, + "status": "severe", + "error_pattern": "CARRY_AND_ROLLOUT_LONG" + }, + "s2_shot_21": { + "diff_carry_yd": 4.9, + "diff_total_yd": 27.7, + "diff_apex_ft": 1.7, + "status": "severe", + "error_pattern": "CARRY_AND_ROLLOUT_LONG" + }, + "s2_shot_22": { + "diff_carry_yd": 4.6, + "diff_total_yd": 1.6, + "diff_apex_ft": -1.6, + "status": "moderate", + "error_pattern": "CARRY_TOO_LONG" + }, + "s2_shot_23": { + "diff_carry_yd": 3.5, + "diff_total_yd": -19.6, + "diff_apex_ft": 0.0, + "status": "severe", + "error_pattern": "CARRY_TOO_LONG" + }, + "s2_shot_24": { + "diff_carry_yd": 4.7, + "diff_total_yd": 3.4, + "diff_apex_ft": -1.9, + "status": "moderate", + "error_pattern": "CARRY_TOO_LONG" + }, + "s2_shot_26": { + "diff_carry_yd": 1.7, + "diff_total_yd": 20.6, + "diff_apex_ft": 23.5, + "status": "severe", + "error_pattern": "ROLLOUT_TOO_LONG" + }, + "s2_shot_27": { + "diff_carry_yd": 2.6, + "diff_total_yd": 12.8, + "diff_apex_ft": 4.8, + "status": "severe", + "error_pattern": "ROLLOUT_TOO_LONG" + }, + "s2_shot_9": { + "diff_carry_yd": -3.3, + "diff_total_yd": 1.6, + "diff_apex_ft": 7.1, + "status": "moderate", + "error_pattern": "CARRY_TOO_SHORT" + }, + "s3_shot_3w_18": { + "diff_carry_yd": null, + "diff_total_yd": null, + "diff_apex_ft": null, + "status": "pass", + "error_pattern": null + }, + "s3_shot_3w_19": { + "diff_carry_yd": -0.6, + "diff_total_yd": 16.0, + "diff_apex_ft": 0.1, + "status": "severe", + "error_pattern": "ROLLOUT_TOO_LONG" + }, + "s3_shot_3w_21": { + "diff_carry_yd": 0.6, + "diff_total_yd": 15.9, + "diff_apex_ft": 0.3, + "status": "severe", + "error_pattern": "ROLLOUT_TOO_LONG" + }, + "s3_shot_3w_22": { + "diff_carry_yd": 2.6, + "diff_total_yd": 19.6, + "diff_apex_ft": 0.5, + "status": "severe", + "error_pattern": "ROLLOUT_TOO_LONG" + }, + "s3_shot_3w_23": { + "diff_carry_yd": 0.1, + "diff_total_yd": -23.3, + "diff_apex_ft": -1.3, + "status": "severe", + "error_pattern": "ROLLOUT_TOO_SHORT" + }, + "s3_shot_3w_24": { + "diff_carry_yd": 6.9, + "diff_total_yd": 28.4, + "diff_apex_ft": 1.8, + "status": "severe", + "error_pattern": "CARRY_AND_ROLLOUT_LONG" + }, + "s3_shot_5i_10": { + "diff_carry_yd": 2.5, + "diff_total_yd": -7.6, + "diff_apex_ft": 5.8, + "status": "moderate", + "error_pattern": "ROLLOUT_TOO_SHORT" + }, + "s3_shot_5i_11": { + "diff_carry_yd": -3.7, + "diff_total_yd": -17.6, + "diff_apex_ft": -1.3, + "status": "severe", + "error_pattern": "CARRY_AND_ROLLOUT_SHORT" + }, + "s3_shot_5i_12": { + "diff_carry_yd": 1.1, + "diff_total_yd": -23.5, + "diff_apex_ft": 1.1, + "status": "severe", + "error_pattern": "ROLLOUT_TOO_SHORT" + }, + "s3_shot_5i_13": { + "diff_carry_yd": 2.3, + "diff_total_yd": 10.1, + "diff_apex_ft": 0.6, + "status": "severe", + "error_pattern": "ROLLOUT_TOO_LONG" + }, + "s3_shot_5i_15": { + "diff_carry_yd": -4.6, + "diff_total_yd": 14.5, + "diff_apex_ft": -1.1, + "status": "severe", + "error_pattern": "CARRY_TOO_SHORT" + }, + "s3_shot_5i_16": { + "diff_carry_yd": 0.9, + "diff_total_yd": -21.0, + "diff_apex_ft": -0.2, + "status": "severe", + "error_pattern": "ROLLOUT_TOO_SHORT" + }, + "s3_shot_5i_17": { + "diff_carry_yd": -2.2, + "diff_total_yd": -1.7, + "diff_apex_ft": -0.3, + "status": "pass", + "error_pattern": null + }, + "s3_shot_6i_35": { + "diff_carry_yd": -5.5, + "diff_total_yd": -17.0, + "diff_apex_ft": -3.4, + "status": "severe", + "error_pattern": "CARRY_AND_ROLLOUT_SHORT" + }, + "s3_shot_6i_36": { + "diff_carry_yd": 1.7, + "diff_total_yd": -21.1, + "diff_apex_ft": 0.6, + "status": "severe", + "error_pattern": "ROLLOUT_TOO_SHORT" + }, + "s3_shot_6i_37": { + "diff_carry_yd": -3.7, + "diff_total_yd": 11.9, + "diff_apex_ft": -0.9, + "status": "severe", + "error_pattern": "CARRY_TOO_SHORT" + }, + "s3_shot_6i_38": { + "diff_carry_yd": -3.6, + "diff_total_yd": -21.7, + "diff_apex_ft": 0.1, + "status": "severe", + "error_pattern": "CARRY_AND_ROLLOUT_SHORT" + }, + "s3_shot_6i_39": { + "diff_carry_yd": -0.5, + "diff_total_yd": 6.4, + "diff_apex_ft": 0.0, + "status": "moderate", + "error_pattern": "ROLLOUT_TOO_LONG" + }, + "s3_shot_6i_40": { + "diff_carry_yd": -1.3, + "diff_total_yd": 7.7, + "diff_apex_ft": 0.1, + "status": "moderate", + "error_pattern": "ROLLOUT_TOO_LONG" + }, + "s3_shot_6i_41": { + "diff_carry_yd": -4.7, + "diff_total_yd": 12.9, + "diff_apex_ft": -1.0, + "status": "severe", + "error_pattern": "CARRY_TOO_SHORT" + }, + "s3_shot_6i_42": { + "diff_carry_yd": -1.4, + "diff_total_yd": -17.8, + "diff_apex_ft": 0.7, + "status": "severe", + "error_pattern": "ROLLOUT_TOO_SHORT" + }, + "s3_shot_6i_43": { + "diff_carry_yd": 5.6, + "diff_total_yd": -0.2, + "diff_apex_ft": 7.8, + "status": "moderate", + "error_pattern": "CARRY_TOO_LONG" + }, + "s3_shot_6i_44": { + "diff_carry_yd": -1.8, + "diff_total_yd": -28.0, + "diff_apex_ft": -1.4, + "status": "severe", + "error_pattern": "ROLLOUT_TOO_SHORT" + }, + "s3_shot_6i_45": { + "diff_carry_yd": 3.0, + "diff_total_yd": 20.4, + "diff_apex_ft": 0.5, + "status": "severe", + "error_pattern": "ROLLOUT_TOO_LONG" + }, + "s3_shot_6i_46": { + "diff_carry_yd": 3.1, + "diff_total_yd": -4.2, + "diff_apex_ft": -1.7, + "status": "moderate", + "error_pattern": "CARRY_TOO_LONG" + }, + "s3_shot_6i_47": { + "diff_carry_yd": 6.1, + "diff_total_yd": 8.3, + "diff_apex_ft": 11.4, + "status": "moderate", + "error_pattern": "CARRY_AND_ROLLOUT_LONG" + }, + "s3_shot_6i_48": { + "diff_carry_yd": 5.3, + "diff_total_yd": 8.8, + "diff_apex_ft": 13.8, + "status": "moderate", + "error_pattern": "CARRY_AND_ROLLOUT_LONG" + }, + "s3_shot_6i_49": { + "diff_carry_yd": -2.5, + "diff_total_yd": 6.9, + "diff_apex_ft": -0.3, + "status": "moderate", + "error_pattern": "ROLLOUT_TOO_LONG" + }, + "s3_shot_6i_50": { + "diff_carry_yd": -0.9, + "diff_total_yd": -12.5, + "diff_apex_ft": 3.8, + "status": "severe", + "error_pattern": "ROLLOUT_TOO_SHORT" + }, + "s3_shot_7i_25": { + "diff_carry_yd": -0.9, + "diff_total_yd": -18.4, + "diff_apex_ft": 0.9, + "status": "severe", + "error_pattern": "ROLLOUT_TOO_SHORT" + }, + "s3_shot_7i_26": { + "diff_carry_yd": 1.5, + "diff_total_yd": -22.1, + "diff_apex_ft": 1.1, + "status": "severe", + "error_pattern": "ROLLOUT_TOO_SHORT" + }, + "s3_shot_7i_27": { + "diff_carry_yd": 1.2, + "diff_total_yd": 4.7, + "diff_apex_ft": 7.7, + "status": "pass", + "error_pattern": null + }, + "s3_shot_7i_28": { + "diff_carry_yd": 0.5, + "diff_total_yd": 1.5, + "diff_apex_ft": 8.1, + "status": "pass", + "error_pattern": null + }, + "s3_shot_7i_29": { + "diff_carry_yd": 0.1, + "diff_total_yd": -6.6, + "diff_apex_ft": -3.6, + "status": "moderate", + "error_pattern": "ROLLOUT_TOO_SHORT" + }, + "s3_shot_7i_30": { + "diff_carry_yd": -0.7, + "diff_total_yd": 1.0, + "diff_apex_ft": 5.3, + "status": "pass", + "error_pattern": null + }, + "s3_shot_7i_31": { + "diff_carry_yd": -5.2, + "diff_total_yd": -14.7, + "diff_apex_ft": -4.2, + "status": "severe", + "error_pattern": "CARRY_AND_ROLLOUT_SHORT" + }, + "s3_shot_7i_32": { + "diff_carry_yd": -2.4, + "diff_total_yd": -2.8, + "diff_apex_ft": 3.0, + "status": "pass", + "error_pattern": null + }, + "s3_shot_7i_33": { + "diff_carry_yd": -2.2, + "diff_total_yd": -1.9, + "diff_apex_ft": 4.5, + "status": "pass", + "error_pattern": null + }, + "s3_shot_7i_34": { + "diff_carry_yd": 3.6, + "diff_total_yd": 2.0, + "diff_apex_ft": 3.0, + "status": "moderate", + "error_pattern": "CARRY_TOO_LONG" + }, + "s3_shot_9i_1": { + "diff_carry_yd": -1.9, + "diff_total_yd": -13.0, + "diff_apex_ft": 1.2, + "status": "severe", + "error_pattern": "ROLLOUT_TOO_SHORT" + }, + "s3_shot_9i_2": { + "diff_carry_yd": -8.2, + "diff_total_yd": -9.2, + "diff_apex_ft": -3.1, + "status": "severe", + "error_pattern": "CARRY_AND_ROLLOUT_SHORT" + }, + "s3_shot_9i_3": { + "diff_carry_yd": -1.9, + "diff_total_yd": 1.4, + "diff_apex_ft": -5.4, + "status": "pass", + "error_pattern": null + }, + "s3_shot_9i_5": { + "diff_carry_yd": -3.0, + "diff_total_yd": -5.9, + "diff_apex_ft": -5.5, + "status": "moderate", + "error_pattern": "ROLLOUT_TOO_SHORT" + }, + "s3_shot_9i_7": { + "diff_carry_yd": 0.6, + "diff_total_yd": 1.1, + "diff_apex_ft": -4.3, + "status": "pass", + "error_pattern": null + }, + "s3_shot_9i_8": { + "diff_carry_yd": -2.3, + "diff_total_yd": 4.7, + "diff_apex_ft": -1.8, + "status": "pass", + "error_pattern": null + }, + "s3_shot_9i_9": { + "diff_carry_yd": -1.8, + "diff_total_yd": 2.3, + "diff_apex_ft": -6.3, + "status": "pass", + "error_pattern": null + }, + "s3_shot_driver_51": { + "diff_carry_yd": 10.4, + "diff_total_yd": 28.4, + "diff_apex_ft": 0.0, + "status": "severe", + "error_pattern": "CARRY_AND_ROLLOUT_LONG" + }, + "s3_shot_driver_52": { + "diff_carry_yd": 8.2, + "diff_total_yd": 23.9, + "diff_apex_ft": -2.0, + "status": "severe", + "error_pattern": "CARRY_AND_ROLLOUT_LONG" + }, + "s3_shot_driver_53": { + "diff_carry_yd": 4.5, + "diff_total_yd": 15.7, + "diff_apex_ft": -4.5, + "status": "severe", + "error_pattern": "CARRY_AND_ROLLOUT_LONG" + }, + "s3_shot_driver_54": { + "diff_carry_yd": 4.6, + "diff_total_yd": -0.7, + "diff_apex_ft": -2.5, + "status": "moderate", + "error_pattern": "CARRY_TOO_LONG" + }, + "s3_shot_driver_55": { + "diff_carry_yd": 2.0, + "diff_total_yd": 21.7, + "diff_apex_ft": 0.4, + "status": "severe", + "error_pattern": "ROLLOUT_TOO_LONG" + }, + "s3_shot_driver_56": { + "diff_carry_yd": 3.7, + "diff_total_yd": 19.6, + "diff_apex_ft": 9.4, + "status": "severe", + "error_pattern": "CARRY_AND_ROLLOUT_LONG" + }, + "s3_shot_driver_57": { + "diff_carry_yd": -5.8, + "diff_total_yd": -20.4, + "diff_apex_ft": -3.7, + "status": "severe", + "error_pattern": "CARRY_AND_ROLLOUT_SHORT" + }, + "s3_shot_driver_58": { + "diff_carry_yd": 17.0, + "diff_total_yd": 34.0, + "diff_apex_ft": -5.4, + "status": "severe", + "error_pattern": "CARRY_AND_ROLLOUT_LONG" + }, + "s3_shot_driver_59": { + "diff_carry_yd": -1.6, + "diff_total_yd": 14.4, + "diff_apex_ft": -4.2, + "status": "severe", + "error_pattern": "ROLLOUT_TOO_LONG" + }, + "s3_shot_driver_60": { + "diff_carry_yd": -0.6, + "diff_total_yd": -15.4, + "diff_apex_ft": -2.5, + "status": "severe", + "error_pattern": "ROLLOUT_TOO_SHORT" + }, + "s3_shot_pw_64": { + "diff_carry_yd": -4.7, + "diff_total_yd": 9.1, + "diff_apex_ft": -3.8, + "status": "moderate", + "error_pattern": "CARRY_TOO_SHORT" + }, + "s3_shot_pw_65": { + "diff_carry_yd": -0.6, + "diff_total_yd": 4.2, + "diff_apex_ft": -4.0, + "status": "pass", + "error_pattern": null + }, + "s3_shot_pw_66": { + "diff_carry_yd": -3.0, + "diff_total_yd": 10.8, + "diff_apex_ft": -3.9, + "status": "severe", + "error_pattern": "ROLLOUT_TOO_LONG" + }, + "s3_shot_pw_67": { + "diff_carry_yd": -0.4, + "diff_total_yd": 5.2, + "diff_apex_ft": -4.1, + "status": "moderate", + "error_pattern": "ROLLOUT_TOO_LONG" + }, + "s3_shot_pw_68": { + "diff_carry_yd": 2.9, + "diff_total_yd": 6.1, + "diff_apex_ft": -6.4, + "status": "moderate", + "error_pattern": "ROLLOUT_TOO_LONG" + }, + "s3_shot_pw_69": { + "diff_carry_yd": -3.2, + "diff_total_yd": 11.6, + "diff_apex_ft": -3.9, + "status": "severe", + "error_pattern": "CARRY_TOO_SHORT" + }, + "s4_shot_3w_31": { + "diff_carry_yd": -0.1, + "diff_total_yd": -3.6, + "diff_apex_ft": -3.6, + "status": "pass", + "error_pattern": null + }, + "s4_shot_3w_32": { + "diff_carry_yd": 5.5, + "diff_total_yd": 12.2, + "diff_apex_ft": 1.4, + "status": "severe", + "error_pattern": "CARRY_AND_ROLLOUT_LONG" + }, + "s4_shot_3w_33": { + "diff_carry_yd": 9.2, + "diff_total_yd": 13.2, + "diff_apex_ft": -8.2, + "status": "severe", + "error_pattern": "CARRY_AND_ROLLOUT_LONG" + }, + "s4_shot_3w_34": { + "diff_carry_yd": 3.6, + "diff_total_yd": 2.2, + "diff_apex_ft": -2.5, + "status": "moderate", + "error_pattern": "CARRY_TOO_LONG" + }, + "s4_shot_3w_35": { + "diff_carry_yd": 4.5, + "diff_total_yd": 2.8, + "diff_apex_ft": -3.1, + "status": "moderate", + "error_pattern": "CARRY_TOO_LONG" + }, + "s4_shot_5i_25": { + "diff_carry_yd": -2.9, + "diff_total_yd": -7.2, + "diff_apex_ft": -5.5, + "status": "moderate", + "error_pattern": "ROLLOUT_TOO_SHORT" + }, + "s4_shot_5i_26": { + "diff_carry_yd": 3.1, + "diff_total_yd": 5.0, + "diff_apex_ft": 2.9, + "status": "moderate", + "error_pattern": "CARRY_TOO_LONG" + }, + "s4_shot_5i_27": { + "diff_carry_yd": -2.0, + "diff_total_yd": 10.8, + "diff_apex_ft": -0.2, + "status": "severe", + "error_pattern": "ROLLOUT_TOO_LONG" + }, + "s4_shot_5i_28": { + "diff_carry_yd": -0.2, + "diff_total_yd": -6.9, + "diff_apex_ft": 5.0, + "status": "moderate", + "error_pattern": "ROLLOUT_TOO_SHORT" + }, + "s4_shot_5i_29": { + "diff_carry_yd": 6.3, + "diff_total_yd": 13.8, + "diff_apex_ft": 1.0, + "status": "severe", + "error_pattern": "CARRY_AND_ROLLOUT_LONG" + }, + "s4_shot_5i_30": { + "diff_carry_yd": 4.8, + "diff_total_yd": 4.1, + "diff_apex_ft": -7.1, + "status": "moderate", + "error_pattern": "CARRY_TOO_LONG" + }, + "s4_shot_6i_19": { + "diff_carry_yd": -0.5, + "diff_total_yd": -11.5, + "diff_apex_ft": 0.2, + "status": "severe", + "error_pattern": "ROLLOUT_TOO_SHORT" + }, + "s4_shot_6i_20": { + "diff_carry_yd": -0.1, + "diff_total_yd": 11.4, + "diff_apex_ft": 0.0, + "status": "severe", + "error_pattern": "ROLLOUT_TOO_LONG" + }, + "s4_shot_6i_21": { + "diff_carry_yd": 0.9, + "diff_total_yd": -1.5, + "diff_apex_ft": -6.8, + "status": "pass", + "error_pattern": null + }, + "s4_shot_6i_22": { + "diff_carry_yd": 4.5, + "diff_total_yd": 10.8, + "diff_apex_ft": 0.9, + "status": "severe", + "error_pattern": "CARRY_AND_ROLLOUT_LONG" + }, + "s4_shot_6i_23": { + "diff_carry_yd": null, + "diff_total_yd": null, + "diff_apex_ft": null, + "status": "pass", + "error_pattern": null + }, + "s4_shot_6i_24": { + "diff_carry_yd": null, + "diff_total_yd": null, + "diff_apex_ft": null, + "status": "pass", + "error_pattern": null + }, + "s4_shot_9i_13": { + "diff_carry_yd": null, + "diff_total_yd": null, + "diff_apex_ft": null, + "status": "pass", + "error_pattern": null + }, + "s4_shot_9i_14": { + "diff_carry_yd": -0.1, + "diff_total_yd": 1.2, + "diff_apex_ft": -6.4, + "status": "pass", + "error_pattern": null + }, + "s4_shot_9i_15": { + "diff_carry_yd": -2.9, + "diff_total_yd": 10.8, + "diff_apex_ft": -3.7, + "status": "severe", + "error_pattern": "ROLLOUT_TOO_LONG" + }, + "s4_shot_9i_17": { + "diff_carry_yd": -2.0, + "diff_total_yd": -16.6, + "diff_apex_ft": -0.6, + "status": "severe", + "error_pattern": "ROLLOUT_TOO_SHORT" + }, + "s4_shot_9i_18": { + "diff_carry_yd": -2.8, + "diff_total_yd": 8.7, + "diff_apex_ft": -3.5, + "status": "moderate", + "error_pattern": "ROLLOUT_TOO_LONG" + }, + "s4_shot_lw_38": { + "diff_carry_yd": -5.7, + "diff_total_yd": 2.1, + "diff_apex_ft": -4.0, + "status": "moderate", + "error_pattern": "CARRY_TOO_SHORT" + }, + "s4_shot_pw_1": { + "diff_carry_yd": -7.7, + "diff_total_yd": -14.3, + "diff_apex_ft": -0.3, + "status": "severe", + "error_pattern": "CARRY_AND_ROLLOUT_SHORT" + }, + "s4_shot_pw_10": { + "diff_carry_yd": -2.4, + "diff_total_yd": 0.4, + "diff_apex_ft": -4.2, + "status": "pass", + "error_pattern": null + }, + "s4_shot_pw_11": { + "diff_carry_yd": -2.6, + "diff_total_yd": 0.4, + "diff_apex_ft": -3.8, + "status": "pass", + "error_pattern": null + }, + "s4_shot_pw_2": { + "diff_carry_yd": -4.8, + "diff_total_yd": 4.3, + "diff_apex_ft": -1.6, + "status": "moderate", + "error_pattern": "CARRY_TOO_SHORT" + }, + "s4_shot_pw_3": { + "diff_carry_yd": -6.9, + "diff_total_yd": 3.9, + "diff_apex_ft": -3.9, + "status": "moderate", + "error_pattern": "CARRY_TOO_SHORT" + }, + "s4_shot_pw_47": { + "diff_carry_yd": -3.9, + "diff_total_yd": 4.0, + "diff_apex_ft": -1.2, + "status": "moderate", + "error_pattern": "CARRY_TOO_SHORT" + }, + "s4_shot_pw_48": { + "diff_carry_yd": -4.3, + "diff_total_yd": 2.7, + "diff_apex_ft": -1.3, + "status": "moderate", + "error_pattern": "CARRY_TOO_SHORT" + }, + "s4_shot_pw_49": { + "diff_carry_yd": -6.2, + "diff_total_yd": 4.4, + "diff_apex_ft": -1.9, + "status": "moderate", + "error_pattern": "CARRY_TOO_SHORT" + }, + "s4_shot_pw_6": { + "diff_carry_yd": -8.2, + "diff_total_yd": 7.0, + "diff_apex_ft": -3.6, + "status": "severe", + "error_pattern": "CARRY_TOO_SHORT" + }, + "s4_shot_pw_7": { + "diff_carry_yd": -2.0, + "diff_total_yd": 12.2, + "diff_apex_ft": -3.7, + "status": "severe", + "error_pattern": "ROLLOUT_TOO_LONG" + }, + "s4_shot_pw_9": { + "diff_carry_yd": null, + "diff_total_yd": null, + "diff_apex_ft": null, + "status": "pass", + "error_pattern": null + }, + "topped_test_shot": { + "diff_carry_yd": -0.7, + "diff_total_yd": 13.8, + "diff_apex_ft": -0.1, + "status": "severe", + "error_pattern": "ROLLOUT_TOO_LONG" + }, + "wedge_shot_1": { + "diff_carry_yd": -5.8, + "diff_total_yd": -1.7, + "diff_apex_ft": -2.6, + "status": "moderate", + "error_pattern": "CARRY_TOO_SHORT" + }, + "wedge_shot_2": { + "diff_carry_yd": -6.6, + "diff_total_yd": 2.1, + "diff_apex_ft": -4.4, + "status": "moderate", + "error_pattern": "CARRY_TOO_SHORT" + }, + "wedge_test_shot": { + "diff_carry_yd": -5.3, + "diff_total_yd": 3.2, + "diff_apex_ft": -3.2, + "status": "moderate", + "error_pattern": "CARRY_TOO_SHORT" + }, + "wedge_test_shot2": { + "diff_carry_yd": -5.5, + "diff_total_yd": 2.9, + "diff_apex_ft": -2.0, + "status": "moderate", + "error_pattern": "CARRY_TOO_SHORT" + }, + "wood1": { + "diff_carry_yd": 11.9, + "diff_total_yd": -4.0, + "diff_apex_ft": 3.1, + "status": "severe", + "error_pattern": "CARRY_TOO_LONG" + }, + "wood2": { + "diff_carry_yd": 3.8, + "diff_total_yd": 0.4, + "diff_apex_ft": -1.8, + "status": "moderate", + "error_pattern": "CARRY_TOO_LONG" + }, + "wood_low_test_shot": { + "diff_carry_yd": 1.3, + "diff_total_yd": 22.0, + "diff_apex_ft": 0.3, + "status": "severe", + "error_pattern": "ROLLOUT_TOO_LONG" + } + }, + "regressions": [], + "conflicts": [ + "Bounce.FlightTangentialRetentionBase", + "Bounce.FlightSpinFactorMin", + "Bounce.FlightSpinFactorDivisor", + "Rollout.MidSpinMultiplierMax", + "Rollout.HighSpinMultiplierMax", + "Rollout.FrictionBlendSpeed", + "KineticFrictionMultiplier", + "Bounce.RolloutHighSpinRetention", + "Bounce.CorBaseA", + "Rollout.LowSpinMultiplierMax", + "Rollout.LowSpinThreshold", + "RollingFrictionMultiplier", + "Bounce.RolloutLowSpinRetention", + "Flight.ClMaxBase", + "Flight.CdMin", + "Flight.HighLaunchDragBoostMax", + "DragScaleMultiplier", + "LiftScaleMultiplier" + ] +} diff --git a/assets/data/calibration/history/iteration_059.json b/assets/data/calibration/history/iteration_059.json new file mode 100644 index 0000000..fd38bbf --- /dev/null +++ b/assets/data/calibration/history/iteration_059.json @@ -0,0 +1,986 @@ +{ + "iteration": 59, + "timestamp": "2026-03-14T02:26:19.394218", + "profile_overrides": {}, + "summary": { + "pass": 23, + "moderate": 41, + "severe": 65, + "no_reference": 7 + }, + "per_shot": { + "5iron": { + "diff_carry_yd": 4.8, + "diff_total_yd": 11.3, + "diff_apex_ft": 4.6, + "status": "severe", + "error_pattern": "CARRY_AND_ROLLOUT_LONG" + }, + "approach_mid_iron_test_shot": { + "diff_carry_yd": -0.6, + "diff_total_yd": 7.3, + "diff_apex_ft": -5.0, + "status": "moderate", + "error_pattern": "ROLLOUT_TOO_LONG" + }, + "bump_and_run": { + "diff_carry_yd": -9.1, + "diff_total_yd": -27.5, + "diff_apex_ft": -2.1, + "status": "severe", + "error_pattern": "CARRY_AND_ROLLOUT_SHORT" + }, + "bump_and_run_slow": { + "diff_carry_yd": null, + "diff_total_yd": null, + "diff_apex_ft": null, + "status": "pass", + "error_pattern": null + }, + "bump_test_shot": { + "diff_carry_yd": -2.1, + "diff_total_yd": 12.7, + "diff_apex_ft": -0.1, + "status": "severe", + "error_pattern": "ROLLOUT_TOO_LONG" + }, + "checked_test_shot": { + "diff_carry_yd": -2.1, + "diff_total_yd": -0.5, + "diff_apex_ft": -9.6, + "status": "pass", + "error_pattern": null + }, + "chip_test_shot": { + "diff_carry_yd": null, + "diff_total_yd": null, + "diff_apex_ft": null, + "status": "pass", + "error_pattern": null + }, + "drive_test_shot": { + "diff_carry_yd": -0.4, + "diff_total_yd": -0.6, + "diff_apex_ft": -1.1, + "status": "pass", + "error_pattern": null + }, + "driver1": { + "diff_carry_yd": -0.3, + "diff_total_yd": -26.3, + "diff_apex_ft": -0.8, + "status": "severe", + "error_pattern": "ROLLOUT_TOO_SHORT" + }, + "driver2": { + "diff_carry_yd": 7.6, + "diff_total_yd": 7.3, + "diff_apex_ft": -3.0, + "status": "severe", + "error_pattern": "CARRY_AND_ROLLOUT_LONG" + }, + "driver3": { + "diff_carry_yd": 5.1, + "diff_total_yd": 20.4, + "diff_apex_ft": 20.6, + "status": "severe", + "error_pattern": "CARRY_AND_ROLLOUT_LONG" + }, + "driver4": { + "diff_carry_yd": 6.3, + "diff_total_yd": 15.0, + "diff_apex_ft": 4.1, + "status": "severe", + "error_pattern": "CARRY_AND_ROLLOUT_LONG" + }, + "flop_test_shot": { + "diff_carry_yd": -0.2, + "diff_total_yd": 1.6, + "diff_apex_ft": -8.5, + "status": "pass", + "error_pattern": null + }, + "p_wedge_shot_1": { + "diff_carry_yd": -4.8, + "diff_total_yd": 1.7, + "diff_apex_ft": -5.5, + "status": "moderate", + "error_pattern": "CARRY_TOO_SHORT" + }, + "s2_shot_10": { + "diff_carry_yd": 3.4, + "diff_total_yd": 10.2, + "diff_apex_ft": -6.0, + "status": "severe", + "error_pattern": "CARRY_AND_ROLLOUT_LONG" + }, + "s2_shot_11": { + "diff_carry_yd": -2.6, + "diff_total_yd": 1.1, + "diff_apex_ft": -4.6, + "status": "pass", + "error_pattern": null + }, + "s2_shot_12": { + "diff_carry_yd": 4.5, + "diff_total_yd": 9.5, + "diff_apex_ft": -5.3, + "status": "moderate", + "error_pattern": "CARRY_AND_ROLLOUT_LONG" + }, + "s2_shot_13": { + "diff_carry_yd": 1.2, + "diff_total_yd": 3.2, + "diff_apex_ft": -6.1, + "status": "pass", + "error_pattern": null + }, + "s2_shot_14": { + "diff_carry_yd": -0.3, + "diff_total_yd": 1.7, + "diff_apex_ft": -6.1, + "status": "pass", + "error_pattern": null + }, + "s2_shot_15": { + "diff_carry_yd": -1.0, + "diff_total_yd": -12.7, + "diff_apex_ft": -2.0, + "status": "severe", + "error_pattern": "ROLLOUT_TOO_SHORT" + }, + "s2_shot_16": { + "diff_carry_yd": -0.3, + "diff_total_yd": 2.2, + "diff_apex_ft": -3.5, + "status": "pass", + "error_pattern": null + }, + "s2_shot_17": { + "diff_carry_yd": 5.8, + "diff_total_yd": 8.0, + "diff_apex_ft": -3.9, + "status": "moderate", + "error_pattern": "CARRY_AND_ROLLOUT_LONG" + }, + "s2_shot_18": { + "diff_carry_yd": 4.3, + "diff_total_yd": 14.0, + "diff_apex_ft": 2.6, + "status": "severe", + "error_pattern": "CARRY_AND_ROLLOUT_LONG" + }, + "s2_shot_19": { + "diff_carry_yd": 2.2, + "diff_total_yd": -6.1, + "diff_apex_ft": -1.2, + "status": "moderate", + "error_pattern": "ROLLOUT_TOO_SHORT" + }, + "s2_shot_20": { + "diff_carry_yd": 6.0, + "diff_total_yd": 11.5, + "diff_apex_ft": -2.0, + "status": "severe", + "error_pattern": "CARRY_AND_ROLLOUT_LONG" + }, + "s2_shot_21": { + "diff_carry_yd": 4.9, + "diff_total_yd": 27.7, + "diff_apex_ft": 1.7, + "status": "severe", + "error_pattern": "CARRY_AND_ROLLOUT_LONG" + }, + "s2_shot_22": { + "diff_carry_yd": 4.6, + "diff_total_yd": 1.6, + "diff_apex_ft": -1.6, + "status": "moderate", + "error_pattern": "CARRY_TOO_LONG" + }, + "s2_shot_23": { + "diff_carry_yd": 3.5, + "diff_total_yd": -19.6, + "diff_apex_ft": 0.0, + "status": "severe", + "error_pattern": "CARRY_TOO_LONG" + }, + "s2_shot_24": { + "diff_carry_yd": 4.7, + "diff_total_yd": 3.4, + "diff_apex_ft": -1.9, + "status": "moderate", + "error_pattern": "CARRY_TOO_LONG" + }, + "s2_shot_26": { + "diff_carry_yd": 1.7, + "diff_total_yd": 20.6, + "diff_apex_ft": 23.5, + "status": "severe", + "error_pattern": "ROLLOUT_TOO_LONG" + }, + "s2_shot_27": { + "diff_carry_yd": 2.6, + "diff_total_yd": 12.8, + "diff_apex_ft": 4.8, + "status": "severe", + "error_pattern": "ROLLOUT_TOO_LONG" + }, + "s2_shot_9": { + "diff_carry_yd": -3.3, + "diff_total_yd": 1.6, + "diff_apex_ft": 7.1, + "status": "moderate", + "error_pattern": "CARRY_TOO_SHORT" + }, + "s3_shot_3w_18": { + "diff_carry_yd": null, + "diff_total_yd": null, + "diff_apex_ft": null, + "status": "pass", + "error_pattern": null + }, + "s3_shot_3w_19": { + "diff_carry_yd": -0.6, + "diff_total_yd": 16.0, + "diff_apex_ft": 0.1, + "status": "severe", + "error_pattern": "ROLLOUT_TOO_LONG" + }, + "s3_shot_3w_21": { + "diff_carry_yd": 0.6, + "diff_total_yd": 15.9, + "diff_apex_ft": 0.3, + "status": "severe", + "error_pattern": "ROLLOUT_TOO_LONG" + }, + "s3_shot_3w_22": { + "diff_carry_yd": 2.6, + "diff_total_yd": 19.6, + "diff_apex_ft": 0.5, + "status": "severe", + "error_pattern": "ROLLOUT_TOO_LONG" + }, + "s3_shot_3w_23": { + "diff_carry_yd": 0.1, + "diff_total_yd": -23.3, + "diff_apex_ft": -1.3, + "status": "severe", + "error_pattern": "ROLLOUT_TOO_SHORT" + }, + "s3_shot_3w_24": { + "diff_carry_yd": 6.9, + "diff_total_yd": 28.4, + "diff_apex_ft": 1.8, + "status": "severe", + "error_pattern": "CARRY_AND_ROLLOUT_LONG" + }, + "s3_shot_5i_10": { + "diff_carry_yd": 2.5, + "diff_total_yd": -7.6, + "diff_apex_ft": 5.8, + "status": "moderate", + "error_pattern": "ROLLOUT_TOO_SHORT" + }, + "s3_shot_5i_11": { + "diff_carry_yd": -3.7, + "diff_total_yd": -17.6, + "diff_apex_ft": -1.3, + "status": "severe", + "error_pattern": "CARRY_AND_ROLLOUT_SHORT" + }, + "s3_shot_5i_12": { + "diff_carry_yd": 1.1, + "diff_total_yd": -23.5, + "diff_apex_ft": 1.1, + "status": "severe", + "error_pattern": "ROLLOUT_TOO_SHORT" + }, + "s3_shot_5i_13": { + "diff_carry_yd": 2.3, + "diff_total_yd": 10.1, + "diff_apex_ft": 0.6, + "status": "severe", + "error_pattern": "ROLLOUT_TOO_LONG" + }, + "s3_shot_5i_15": { + "diff_carry_yd": -4.6, + "diff_total_yd": 14.5, + "diff_apex_ft": -1.1, + "status": "severe", + "error_pattern": "CARRY_TOO_SHORT" + }, + "s3_shot_5i_16": { + "diff_carry_yd": 0.9, + "diff_total_yd": -21.0, + "diff_apex_ft": -0.2, + "status": "severe", + "error_pattern": "ROLLOUT_TOO_SHORT" + }, + "s3_shot_5i_17": { + "diff_carry_yd": -2.2, + "diff_total_yd": -1.7, + "diff_apex_ft": -0.3, + "status": "pass", + "error_pattern": null + }, + "s3_shot_6i_35": { + "diff_carry_yd": -5.5, + "diff_total_yd": -17.0, + "diff_apex_ft": -3.4, + "status": "severe", + "error_pattern": "CARRY_AND_ROLLOUT_SHORT" + }, + "s3_shot_6i_36": { + "diff_carry_yd": 1.7, + "diff_total_yd": -21.1, + "diff_apex_ft": 0.6, + "status": "severe", + "error_pattern": "ROLLOUT_TOO_SHORT" + }, + "s3_shot_6i_37": { + "diff_carry_yd": -3.7, + "diff_total_yd": 11.9, + "diff_apex_ft": -0.9, + "status": "severe", + "error_pattern": "CARRY_TOO_SHORT" + }, + "s3_shot_6i_38": { + "diff_carry_yd": -3.6, + "diff_total_yd": -21.7, + "diff_apex_ft": 0.1, + "status": "severe", + "error_pattern": "CARRY_AND_ROLLOUT_SHORT" + }, + "s3_shot_6i_39": { + "diff_carry_yd": -0.5, + "diff_total_yd": 6.4, + "diff_apex_ft": 0.0, + "status": "moderate", + "error_pattern": "ROLLOUT_TOO_LONG" + }, + "s3_shot_6i_40": { + "diff_carry_yd": -1.3, + "diff_total_yd": 7.7, + "diff_apex_ft": 0.1, + "status": "moderate", + "error_pattern": "ROLLOUT_TOO_LONG" + }, + "s3_shot_6i_41": { + "diff_carry_yd": -4.7, + "diff_total_yd": 12.9, + "diff_apex_ft": -1.0, + "status": "severe", + "error_pattern": "CARRY_TOO_SHORT" + }, + "s3_shot_6i_42": { + "diff_carry_yd": -1.4, + "diff_total_yd": -17.8, + "diff_apex_ft": 0.7, + "status": "severe", + "error_pattern": "ROLLOUT_TOO_SHORT" + }, + "s3_shot_6i_43": { + "diff_carry_yd": 5.6, + "diff_total_yd": -0.2, + "diff_apex_ft": 7.8, + "status": "moderate", + "error_pattern": "CARRY_TOO_LONG" + }, + "s3_shot_6i_44": { + "diff_carry_yd": -1.8, + "diff_total_yd": -28.0, + "diff_apex_ft": -1.4, + "status": "severe", + "error_pattern": "ROLLOUT_TOO_SHORT" + }, + "s3_shot_6i_45": { + "diff_carry_yd": 3.0, + "diff_total_yd": 20.4, + "diff_apex_ft": 0.5, + "status": "severe", + "error_pattern": "ROLLOUT_TOO_LONG" + }, + "s3_shot_6i_46": { + "diff_carry_yd": 3.1, + "diff_total_yd": -4.2, + "diff_apex_ft": -1.7, + "status": "moderate", + "error_pattern": "CARRY_TOO_LONG" + }, + "s3_shot_6i_47": { + "diff_carry_yd": 6.1, + "diff_total_yd": 8.3, + "diff_apex_ft": 11.4, + "status": "moderate", + "error_pattern": "CARRY_AND_ROLLOUT_LONG" + }, + "s3_shot_6i_48": { + "diff_carry_yd": 5.3, + "diff_total_yd": 8.8, + "diff_apex_ft": 13.8, + "status": "moderate", + "error_pattern": "CARRY_AND_ROLLOUT_LONG" + }, + "s3_shot_6i_49": { + "diff_carry_yd": -2.5, + "diff_total_yd": 6.9, + "diff_apex_ft": -0.3, + "status": "moderate", + "error_pattern": "ROLLOUT_TOO_LONG" + }, + "s3_shot_6i_50": { + "diff_carry_yd": -0.9, + "diff_total_yd": -12.5, + "diff_apex_ft": 3.8, + "status": "severe", + "error_pattern": "ROLLOUT_TOO_SHORT" + }, + "s3_shot_7i_25": { + "diff_carry_yd": -0.9, + "diff_total_yd": -18.4, + "diff_apex_ft": 0.9, + "status": "severe", + "error_pattern": "ROLLOUT_TOO_SHORT" + }, + "s3_shot_7i_26": { + "diff_carry_yd": 1.5, + "diff_total_yd": -22.1, + "diff_apex_ft": 1.1, + "status": "severe", + "error_pattern": "ROLLOUT_TOO_SHORT" + }, + "s3_shot_7i_27": { + "diff_carry_yd": 1.2, + "diff_total_yd": 4.7, + "diff_apex_ft": 7.7, + "status": "pass", + "error_pattern": null + }, + "s3_shot_7i_28": { + "diff_carry_yd": 0.5, + "diff_total_yd": 1.5, + "diff_apex_ft": 8.1, + "status": "pass", + "error_pattern": null + }, + "s3_shot_7i_29": { + "diff_carry_yd": 0.1, + "diff_total_yd": -6.6, + "diff_apex_ft": -3.6, + "status": "moderate", + "error_pattern": "ROLLOUT_TOO_SHORT" + }, + "s3_shot_7i_30": { + "diff_carry_yd": -0.7, + "diff_total_yd": 1.0, + "diff_apex_ft": 5.3, + "status": "pass", + "error_pattern": null + }, + "s3_shot_7i_31": { + "diff_carry_yd": -5.2, + "diff_total_yd": -14.7, + "diff_apex_ft": -4.2, + "status": "severe", + "error_pattern": "CARRY_AND_ROLLOUT_SHORT" + }, + "s3_shot_7i_32": { + "diff_carry_yd": -2.4, + "diff_total_yd": -2.8, + "diff_apex_ft": 3.0, + "status": "pass", + "error_pattern": null + }, + "s3_shot_7i_33": { + "diff_carry_yd": -2.2, + "diff_total_yd": -1.9, + "diff_apex_ft": 4.5, + "status": "pass", + "error_pattern": null + }, + "s3_shot_7i_34": { + "diff_carry_yd": 3.6, + "diff_total_yd": 2.0, + "diff_apex_ft": 3.0, + "status": "moderate", + "error_pattern": "CARRY_TOO_LONG" + }, + "s3_shot_9i_1": { + "diff_carry_yd": -1.9, + "diff_total_yd": -13.0, + "diff_apex_ft": 1.2, + "status": "severe", + "error_pattern": "ROLLOUT_TOO_SHORT" + }, + "s3_shot_9i_2": { + "diff_carry_yd": -8.2, + "diff_total_yd": -9.2, + "diff_apex_ft": -3.1, + "status": "severe", + "error_pattern": "CARRY_AND_ROLLOUT_SHORT" + }, + "s3_shot_9i_3": { + "diff_carry_yd": -1.9, + "diff_total_yd": 1.4, + "diff_apex_ft": -5.4, + "status": "pass", + "error_pattern": null + }, + "s3_shot_9i_5": { + "diff_carry_yd": -3.0, + "diff_total_yd": -5.9, + "diff_apex_ft": -5.5, + "status": "moderate", + "error_pattern": "ROLLOUT_TOO_SHORT" + }, + "s3_shot_9i_7": { + "diff_carry_yd": 0.6, + "diff_total_yd": 1.1, + "diff_apex_ft": -4.3, + "status": "pass", + "error_pattern": null + }, + "s3_shot_9i_8": { + "diff_carry_yd": -2.3, + "diff_total_yd": 4.7, + "diff_apex_ft": -1.8, + "status": "pass", + "error_pattern": null + }, + "s3_shot_9i_9": { + "diff_carry_yd": -1.8, + "diff_total_yd": 2.3, + "diff_apex_ft": -6.3, + "status": "pass", + "error_pattern": null + }, + "s3_shot_driver_51": { + "diff_carry_yd": 10.4, + "diff_total_yd": 28.4, + "diff_apex_ft": 0.0, + "status": "severe", + "error_pattern": "CARRY_AND_ROLLOUT_LONG" + }, + "s3_shot_driver_52": { + "diff_carry_yd": 8.2, + "diff_total_yd": 23.9, + "diff_apex_ft": -2.0, + "status": "severe", + "error_pattern": "CARRY_AND_ROLLOUT_LONG" + }, + "s3_shot_driver_53": { + "diff_carry_yd": 4.5, + "diff_total_yd": 15.7, + "diff_apex_ft": -4.5, + "status": "severe", + "error_pattern": "CARRY_AND_ROLLOUT_LONG" + }, + "s3_shot_driver_54": { + "diff_carry_yd": 4.6, + "diff_total_yd": -0.7, + "diff_apex_ft": -2.5, + "status": "moderate", + "error_pattern": "CARRY_TOO_LONG" + }, + "s3_shot_driver_55": { + "diff_carry_yd": 2.0, + "diff_total_yd": 21.7, + "diff_apex_ft": 0.4, + "status": "severe", + "error_pattern": "ROLLOUT_TOO_LONG" + }, + "s3_shot_driver_56": { + "diff_carry_yd": 3.7, + "diff_total_yd": 19.6, + "diff_apex_ft": 9.4, + "status": "severe", + "error_pattern": "CARRY_AND_ROLLOUT_LONG" + }, + "s3_shot_driver_57": { + "diff_carry_yd": -5.8, + "diff_total_yd": -20.4, + "diff_apex_ft": -3.7, + "status": "severe", + "error_pattern": "CARRY_AND_ROLLOUT_SHORT" + }, + "s3_shot_driver_58": { + "diff_carry_yd": 17.0, + "diff_total_yd": 34.0, + "diff_apex_ft": -5.4, + "status": "severe", + "error_pattern": "CARRY_AND_ROLLOUT_LONG" + }, + "s3_shot_driver_59": { + "diff_carry_yd": -1.6, + "diff_total_yd": 14.4, + "diff_apex_ft": -4.2, + "status": "severe", + "error_pattern": "ROLLOUT_TOO_LONG" + }, + "s3_shot_driver_60": { + "diff_carry_yd": -0.6, + "diff_total_yd": -15.4, + "diff_apex_ft": -2.5, + "status": "severe", + "error_pattern": "ROLLOUT_TOO_SHORT" + }, + "s3_shot_pw_64": { + "diff_carry_yd": -4.7, + "diff_total_yd": 9.1, + "diff_apex_ft": -3.8, + "status": "moderate", + "error_pattern": "CARRY_TOO_SHORT" + }, + "s3_shot_pw_65": { + "diff_carry_yd": -0.6, + "diff_total_yd": 4.2, + "diff_apex_ft": -4.0, + "status": "pass", + "error_pattern": null + }, + "s3_shot_pw_66": { + "diff_carry_yd": -3.0, + "diff_total_yd": 10.8, + "diff_apex_ft": -3.9, + "status": "severe", + "error_pattern": "ROLLOUT_TOO_LONG" + }, + "s3_shot_pw_67": { + "diff_carry_yd": -0.4, + "diff_total_yd": 5.2, + "diff_apex_ft": -4.1, + "status": "moderate", + "error_pattern": "ROLLOUT_TOO_LONG" + }, + "s3_shot_pw_68": { + "diff_carry_yd": 2.9, + "diff_total_yd": 6.1, + "diff_apex_ft": -6.4, + "status": "moderate", + "error_pattern": "ROLLOUT_TOO_LONG" + }, + "s3_shot_pw_69": { + "diff_carry_yd": -3.2, + "diff_total_yd": 11.6, + "diff_apex_ft": -3.9, + "status": "severe", + "error_pattern": "CARRY_TOO_SHORT" + }, + "s4_shot_3w_31": { + "diff_carry_yd": -0.1, + "diff_total_yd": -3.6, + "diff_apex_ft": -3.6, + "status": "pass", + "error_pattern": null + }, + "s4_shot_3w_32": { + "diff_carry_yd": 5.5, + "diff_total_yd": 12.2, + "diff_apex_ft": 1.4, + "status": "severe", + "error_pattern": "CARRY_AND_ROLLOUT_LONG" + }, + "s4_shot_3w_33": { + "diff_carry_yd": 9.2, + "diff_total_yd": 13.2, + "diff_apex_ft": -8.2, + "status": "severe", + "error_pattern": "CARRY_AND_ROLLOUT_LONG" + }, + "s4_shot_3w_34": { + "diff_carry_yd": 3.6, + "diff_total_yd": 2.2, + "diff_apex_ft": -2.5, + "status": "moderate", + "error_pattern": "CARRY_TOO_LONG" + }, + "s4_shot_3w_35": { + "diff_carry_yd": 4.5, + "diff_total_yd": 2.8, + "diff_apex_ft": -3.1, + "status": "moderate", + "error_pattern": "CARRY_TOO_LONG" + }, + "s4_shot_5i_25": { + "diff_carry_yd": -2.9, + "diff_total_yd": -7.2, + "diff_apex_ft": -5.5, + "status": "moderate", + "error_pattern": "ROLLOUT_TOO_SHORT" + }, + "s4_shot_5i_26": { + "diff_carry_yd": 3.1, + "diff_total_yd": 5.0, + "diff_apex_ft": 2.9, + "status": "moderate", + "error_pattern": "CARRY_TOO_LONG" + }, + "s4_shot_5i_27": { + "diff_carry_yd": -2.0, + "diff_total_yd": 10.8, + "diff_apex_ft": -0.2, + "status": "severe", + "error_pattern": "ROLLOUT_TOO_LONG" + }, + "s4_shot_5i_28": { + "diff_carry_yd": -0.2, + "diff_total_yd": -6.9, + "diff_apex_ft": 5.0, + "status": "moderate", + "error_pattern": "ROLLOUT_TOO_SHORT" + }, + "s4_shot_5i_29": { + "diff_carry_yd": 6.3, + "diff_total_yd": 13.8, + "diff_apex_ft": 1.0, + "status": "severe", + "error_pattern": "CARRY_AND_ROLLOUT_LONG" + }, + "s4_shot_5i_30": { + "diff_carry_yd": 4.8, + "diff_total_yd": 4.1, + "diff_apex_ft": -7.1, + "status": "moderate", + "error_pattern": "CARRY_TOO_LONG" + }, + "s4_shot_6i_19": { + "diff_carry_yd": -0.5, + "diff_total_yd": -11.5, + "diff_apex_ft": 0.2, + "status": "severe", + "error_pattern": "ROLLOUT_TOO_SHORT" + }, + "s4_shot_6i_20": { + "diff_carry_yd": -0.1, + "diff_total_yd": 11.4, + "diff_apex_ft": 0.0, + "status": "severe", + "error_pattern": "ROLLOUT_TOO_LONG" + }, + "s4_shot_6i_21": { + "diff_carry_yd": 0.9, + "diff_total_yd": -1.5, + "diff_apex_ft": -6.8, + "status": "pass", + "error_pattern": null + }, + "s4_shot_6i_22": { + "diff_carry_yd": 4.5, + "diff_total_yd": 10.8, + "diff_apex_ft": 0.9, + "status": "severe", + "error_pattern": "CARRY_AND_ROLLOUT_LONG" + }, + "s4_shot_6i_23": { + "diff_carry_yd": null, + "diff_total_yd": null, + "diff_apex_ft": null, + "status": "pass", + "error_pattern": null + }, + "s4_shot_6i_24": { + "diff_carry_yd": null, + "diff_total_yd": null, + "diff_apex_ft": null, + "status": "pass", + "error_pattern": null + }, + "s4_shot_9i_13": { + "diff_carry_yd": null, + "diff_total_yd": null, + "diff_apex_ft": null, + "status": "pass", + "error_pattern": null + }, + "s4_shot_9i_14": { + "diff_carry_yd": -0.1, + "diff_total_yd": 1.2, + "diff_apex_ft": -6.4, + "status": "pass", + "error_pattern": null + }, + "s4_shot_9i_15": { + "diff_carry_yd": -2.9, + "diff_total_yd": 10.8, + "diff_apex_ft": -3.7, + "status": "severe", + "error_pattern": "ROLLOUT_TOO_LONG" + }, + "s4_shot_9i_17": { + "diff_carry_yd": -2.0, + "diff_total_yd": -16.6, + "diff_apex_ft": -0.6, + "status": "severe", + "error_pattern": "ROLLOUT_TOO_SHORT" + }, + "s4_shot_9i_18": { + "diff_carry_yd": -2.8, + "diff_total_yd": 8.7, + "diff_apex_ft": -3.5, + "status": "moderate", + "error_pattern": "ROLLOUT_TOO_LONG" + }, + "s4_shot_lw_38": { + "diff_carry_yd": -5.7, + "diff_total_yd": 2.1, + "diff_apex_ft": -4.0, + "status": "moderate", + "error_pattern": "CARRY_TOO_SHORT" + }, + "s4_shot_pw_1": { + "diff_carry_yd": -7.7, + "diff_total_yd": -14.3, + "diff_apex_ft": -0.3, + "status": "severe", + "error_pattern": "CARRY_AND_ROLLOUT_SHORT" + }, + "s4_shot_pw_10": { + "diff_carry_yd": -2.4, + "diff_total_yd": 0.4, + "diff_apex_ft": -4.2, + "status": "pass", + "error_pattern": null + }, + "s4_shot_pw_11": { + "diff_carry_yd": -2.6, + "diff_total_yd": 0.4, + "diff_apex_ft": -3.8, + "status": "pass", + "error_pattern": null + }, + "s4_shot_pw_2": { + "diff_carry_yd": -4.8, + "diff_total_yd": 4.3, + "diff_apex_ft": -1.6, + "status": "moderate", + "error_pattern": "CARRY_TOO_SHORT" + }, + "s4_shot_pw_3": { + "diff_carry_yd": -6.9, + "diff_total_yd": 3.9, + "diff_apex_ft": -3.9, + "status": "moderate", + "error_pattern": "CARRY_TOO_SHORT" + }, + "s4_shot_pw_47": { + "diff_carry_yd": -3.9, + "diff_total_yd": 4.0, + "diff_apex_ft": -1.2, + "status": "moderate", + "error_pattern": "CARRY_TOO_SHORT" + }, + "s4_shot_pw_48": { + "diff_carry_yd": -4.3, + "diff_total_yd": 2.7, + "diff_apex_ft": -1.3, + "status": "moderate", + "error_pattern": "CARRY_TOO_SHORT" + }, + "s4_shot_pw_49": { + "diff_carry_yd": -6.2, + "diff_total_yd": 4.4, + "diff_apex_ft": -1.9, + "status": "moderate", + "error_pattern": "CARRY_TOO_SHORT" + }, + "s4_shot_pw_6": { + "diff_carry_yd": -8.2, + "diff_total_yd": 7.0, + "diff_apex_ft": -3.6, + "status": "severe", + "error_pattern": "CARRY_TOO_SHORT" + }, + "s4_shot_pw_7": { + "diff_carry_yd": -2.0, + "diff_total_yd": 12.2, + "diff_apex_ft": -3.7, + "status": "severe", + "error_pattern": "ROLLOUT_TOO_LONG" + }, + "s4_shot_pw_9": { + "diff_carry_yd": null, + "diff_total_yd": null, + "diff_apex_ft": null, + "status": "pass", + "error_pattern": null + }, + "topped_test_shot": { + "diff_carry_yd": -0.7, + "diff_total_yd": 13.8, + "diff_apex_ft": -0.1, + "status": "severe", + "error_pattern": "ROLLOUT_TOO_LONG" + }, + "wedge_shot_1": { + "diff_carry_yd": -5.8, + "diff_total_yd": -1.7, + "diff_apex_ft": -2.6, + "status": "moderate", + "error_pattern": "CARRY_TOO_SHORT" + }, + "wedge_shot_2": { + "diff_carry_yd": -6.6, + "diff_total_yd": 2.1, + "diff_apex_ft": -4.4, + "status": "moderate", + "error_pattern": "CARRY_TOO_SHORT" + }, + "wedge_test_shot": { + "diff_carry_yd": -5.3, + "diff_total_yd": 3.2, + "diff_apex_ft": -3.2, + "status": "moderate", + "error_pattern": "CARRY_TOO_SHORT" + }, + "wedge_test_shot2": { + "diff_carry_yd": -5.5, + "diff_total_yd": 2.9, + "diff_apex_ft": -2.0, + "status": "moderate", + "error_pattern": "CARRY_TOO_SHORT" + }, + "wood1": { + "diff_carry_yd": 11.9, + "diff_total_yd": -4.0, + "diff_apex_ft": 3.1, + "status": "severe", + "error_pattern": "CARRY_TOO_LONG" + }, + "wood2": { + "diff_carry_yd": 3.8, + "diff_total_yd": 0.4, + "diff_apex_ft": -1.8, + "status": "moderate", + "error_pattern": "CARRY_TOO_LONG" + }, + "wood_low_test_shot": { + "diff_carry_yd": 1.3, + "diff_total_yd": 22.0, + "diff_apex_ft": 0.3, + "status": "severe", + "error_pattern": "ROLLOUT_TOO_LONG" + } + }, + "regressions": [], + "conflicts": [ + "Bounce.FlightTangentialRetentionBase", + "Bounce.FlightSpinFactorMin", + "Bounce.FlightSpinFactorDivisor", + "Rollout.MidSpinMultiplierMax", + "Rollout.HighSpinMultiplierMax", + "Rollout.FrictionBlendSpeed", + "KineticFrictionMultiplier", + "Bounce.RolloutHighSpinRetention", + "Bounce.CorBaseA", + "Rollout.LowSpinMultiplierMax", + "Rollout.LowSpinThreshold", + "RollingFrictionMultiplier", + "Bounce.RolloutLowSpinRetention", + "Flight.ClMaxBase", + "Flight.CdMin", + "Flight.HighLaunchDragBoostMax", + "DragScaleMultiplier", + "LiftScaleMultiplier" + ] +} diff --git a/assets/data/calibration/history/iteration_060.json b/assets/data/calibration/history/iteration_060.json new file mode 100644 index 0000000..1e88e72 --- /dev/null +++ b/assets/data/calibration/history/iteration_060.json @@ -0,0 +1,1093 @@ +{ + "iteration": 60, + "timestamp": "2026-03-14T02:47:40.988588", + "profile_overrides": { + "DragScaleMultiplier": 1.01, + "Flight": { + "CdMin": 0.223, + "HighLaunchDragVlaStartDeg": 24.5, + "HighLaunchDragVlaFullDeg": 31.5, + "HighLaunchDragBoostMax": 1.24, + "SpinDragProgressiveCapSrStart": 0.33, + "SpinDragProgressiveCapSrEnd": 0.5, + "SpinDragProgressiveCapBoostMax": 0.25, + "HighReMidSpinGain": 16.0, + "MidSpinClBoostSrStart": 0.17, + "MidSpinClBoostSrEnd": 0.31, + "MidSpinClBoostMax": 0.5 + }, + "RegimeScaleOverrides": { + "C-S0": { + "DragScaleMultiplier": 0.76, + "LiftScaleMultiplier": 1.14 + }, + "C-S0-V1-P0": { + "DragScaleMultiplier": 0.68, + "LiftScaleMultiplier": 1.05 + }, + "I-S1-V2": { + "DragScaleMultiplier": 0.85, + "LiftScaleMultiplier": 1.1 + }, + "I-S1-V3": { + "DragScaleMultiplier": 0.87, + "LiftScaleMultiplier": 1.08 + }, + "I-S1-V1": { + "DragScaleMultiplier": 0.92, + "LiftScaleMultiplier": 1.05 + }, + "I-S1-V0-P1": { + "DragScaleMultiplier": 1.06 + }, + "W-S1-V3": { + "DragScaleMultiplier": 0.86, + "LiftScaleMultiplier": 1.08 + }, + "I-S3-V2-P3": { + "DragScaleMultiplier": 1.08, + "LiftScaleMultiplier": 0.96 + }, + "I-S2-V2-P3": { + "DragScaleMultiplier": 1.04 + }, + "D-S3-V1": { + "DragScaleMultiplier": 1.04, + "LiftScaleMultiplier": 0.99 + }, + "D-S4-V1": { + "DragScaleMultiplier": 1.04 + }, + "W-S2-V3-P4": { + "DragScaleMultiplier": 1.06, + "LiftScaleMultiplier": 0.97 + } + } + }, + "summary": { + "pass": 31, + "moderate": 44, + "severe": 54, + "no_reference": 7 + }, + "per_shot": { + "5iron": { + "diff_carry_yd": 4.8, + "diff_total_yd": 11.3, + "diff_apex_ft": 4.6, + "status": "severe", + "error_pattern": "CARRY_AND_ROLLOUT_LONG" + }, + "approach_mid_iron_test_shot": { + "diff_carry_yd": -0.6, + "diff_total_yd": 7.3, + "diff_apex_ft": -5.0, + "status": "moderate", + "error_pattern": "ROLLOUT_TOO_LONG" + }, + "bump_and_run": { + "diff_carry_yd": -7.2, + "diff_total_yd": -25.7, + "diff_apex_ft": -1.7, + "status": "severe", + "error_pattern": "CARRY_AND_ROLLOUT_SHORT" + }, + "bump_and_run_slow": { + "diff_carry_yd": null, + "diff_total_yd": null, + "diff_apex_ft": null, + "status": "pass", + "error_pattern": null + }, + "bump_test_shot": { + "diff_carry_yd": -2.1, + "diff_total_yd": 12.7, + "diff_apex_ft": -0.1, + "status": "severe", + "error_pattern": "ROLLOUT_TOO_LONG" + }, + "checked_test_shot": { + "diff_carry_yd": -2.1, + "diff_total_yd": -0.5, + "diff_apex_ft": -9.6, + "status": "pass", + "error_pattern": null + }, + "chip_test_shot": { + "diff_carry_yd": null, + "diff_total_yd": null, + "diff_apex_ft": null, + "status": "pass", + "error_pattern": null + }, + "drive_test_shot": { + "diff_carry_yd": -6.1, + "diff_total_yd": -5.9, + "diff_apex_ft": -2.8, + "status": "moderate", + "error_pattern": "CARRY_AND_ROLLOUT_SHORT" + }, + "driver1": { + "diff_carry_yd": -0.3, + "diff_total_yd": -26.3, + "diff_apex_ft": -0.8, + "status": "severe", + "error_pattern": "ROLLOUT_TOO_SHORT" + }, + "driver2": { + "diff_carry_yd": 2.8, + "diff_total_yd": 2.9, + "diff_apex_ft": -4.3, + "status": "pass", + "error_pattern": null + }, + "driver3": { + "diff_carry_yd": 0.9, + "diff_total_yd": 15.9, + "diff_apex_ft": 17.6, + "status": "severe", + "error_pattern": "ROLLOUT_TOO_LONG" + }, + "driver4": { + "diff_carry_yd": 1.3, + "diff_total_yd": 9.3, + "diff_apex_ft": 2.4, + "status": "moderate", + "error_pattern": "ROLLOUT_TOO_LONG" + }, + "flop_test_shot": { + "diff_carry_yd": -0.2, + "diff_total_yd": 1.6, + "diff_apex_ft": -8.5, + "status": "pass", + "error_pattern": null + }, + "p_wedge_shot_1": { + "diff_carry_yd": 1.7, + "diff_total_yd": 8.1, + "diff_apex_ft": -1.5, + "status": "moderate", + "error_pattern": "ROLLOUT_TOO_LONG" + }, + "s2_shot_10": { + "diff_carry_yd": 3.4, + "diff_total_yd": 10.2, + "diff_apex_ft": -6.0, + "status": "severe", + "error_pattern": "CARRY_AND_ROLLOUT_LONG" + }, + "s2_shot_11": { + "diff_carry_yd": 4.5, + "diff_total_yd": 9.2, + "diff_apex_ft": 0.0, + "status": "moderate", + "error_pattern": "CARRY_AND_ROLLOUT_LONG" + }, + "s2_shot_12": { + "diff_carry_yd": 2.0, + "diff_total_yd": 6.0, + "diff_apex_ft": -6.2, + "status": "moderate", + "error_pattern": "ROLLOUT_TOO_LONG" + }, + "s2_shot_13": { + "diff_carry_yd": -1.1, + "diff_total_yd": 0.7, + "diff_apex_ft": -6.9, + "status": "pass", + "error_pattern": null + }, + "s2_shot_14": { + "diff_carry_yd": -2.3, + "diff_total_yd": -0.4, + "diff_apex_ft": -6.6, + "status": "pass", + "error_pattern": null + }, + "s2_shot_15": { + "diff_carry_yd": -1.0, + "diff_total_yd": -12.7, + "diff_apex_ft": -2.0, + "status": "severe", + "error_pattern": "ROLLOUT_TOO_SHORT" + }, + "s2_shot_16": { + "diff_carry_yd": -0.3, + "diff_total_yd": 2.2, + "diff_apex_ft": -3.5, + "status": "pass", + "error_pattern": null + }, + "s2_shot_17": { + "diff_carry_yd": 0.9, + "diff_total_yd": 4.7, + "diff_apex_ft": -5.1, + "status": "pass", + "error_pattern": null + }, + "s2_shot_18": { + "diff_carry_yd": -2.1, + "diff_total_yd": 7.2, + "diff_apex_ft": -3.5, + "status": "moderate", + "error_pattern": "ROLLOUT_TOO_LONG" + }, + "s2_shot_19": { + "diff_carry_yd": -2.1, + "diff_total_yd": -10.5, + "diff_apex_ft": -2.2, + "status": "severe", + "error_pattern": "ROLLOUT_TOO_SHORT" + }, + "s2_shot_20": { + "diff_carry_yd": 1.5, + "diff_total_yd": 7.5, + "diff_apex_ft": -3.0, + "status": "moderate", + "error_pattern": "ROLLOUT_TOO_LONG" + }, + "s2_shot_21": { + "diff_carry_yd": 4.9, + "diff_total_yd": 27.7, + "diff_apex_ft": 1.7, + "status": "severe", + "error_pattern": "CARRY_AND_ROLLOUT_LONG" + }, + "s2_shot_22": { + "diff_carry_yd": 0.6, + "diff_total_yd": -2.4, + "diff_apex_ft": -2.7, + "status": "pass", + "error_pattern": null + }, + "s2_shot_23": { + "diff_carry_yd": 3.5, + "diff_total_yd": -19.6, + "diff_apex_ft": 0.0, + "status": "severe", + "error_pattern": "CARRY_TOO_LONG" + }, + "s2_shot_24": { + "diff_carry_yd": 0.5, + "diff_total_yd": -1.5, + "diff_apex_ft": -3.0, + "status": "pass", + "error_pattern": null + }, + "s2_shot_26": { + "diff_carry_yd": 1.7, + "diff_total_yd": 20.6, + "diff_apex_ft": 23.5, + "status": "severe", + "error_pattern": "ROLLOUT_TOO_LONG" + }, + "s2_shot_27": { + "diff_carry_yd": -1.4, + "diff_total_yd": 9.2, + "diff_apex_ft": 3.2, + "status": "moderate", + "error_pattern": "ROLLOUT_TOO_LONG" + }, + "s2_shot_9": { + "diff_carry_yd": -3.3, + "diff_total_yd": 1.6, + "diff_apex_ft": 7.1, + "status": "moderate", + "error_pattern": "CARRY_TOO_SHORT" + }, + "s3_shot_3w_18": { + "diff_carry_yd": null, + "diff_total_yd": null, + "diff_apex_ft": null, + "status": "pass", + "error_pattern": null + }, + "s3_shot_3w_19": { + "diff_carry_yd": -0.6, + "diff_total_yd": 16.0, + "diff_apex_ft": 0.1, + "status": "severe", + "error_pattern": "ROLLOUT_TOO_LONG" + }, + "s3_shot_3w_21": { + "diff_carry_yd": 0.6, + "diff_total_yd": 15.9, + "diff_apex_ft": 0.3, + "status": "severe", + "error_pattern": "ROLLOUT_TOO_LONG" + }, + "s3_shot_3w_22": { + "diff_carry_yd": 2.6, + "diff_total_yd": 19.6, + "diff_apex_ft": 0.5, + "status": "severe", + "error_pattern": "ROLLOUT_TOO_LONG" + }, + "s3_shot_3w_23": { + "diff_carry_yd": 0.1, + "diff_total_yd": -23.3, + "diff_apex_ft": -1.3, + "status": "severe", + "error_pattern": "ROLLOUT_TOO_SHORT" + }, + "s3_shot_3w_24": { + "diff_carry_yd": 6.9, + "diff_total_yd": 28.4, + "diff_apex_ft": 1.8, + "status": "severe", + "error_pattern": "CARRY_AND_ROLLOUT_LONG" + }, + "s3_shot_5i_10": { + "diff_carry_yd": 2.5, + "diff_total_yd": -7.6, + "diff_apex_ft": 5.8, + "status": "moderate", + "error_pattern": "ROLLOUT_TOO_SHORT" + }, + "s3_shot_5i_11": { + "diff_carry_yd": -3.7, + "diff_total_yd": -17.6, + "diff_apex_ft": -1.3, + "status": "severe", + "error_pattern": "CARRY_AND_ROLLOUT_SHORT" + }, + "s3_shot_5i_12": { + "diff_carry_yd": 3.9, + "diff_total_yd": -20.7, + "diff_apex_ft": 1.7, + "status": "severe", + "error_pattern": "CARRY_TOO_LONG" + }, + "s3_shot_5i_13": { + "diff_carry_yd": 0.9, + "diff_total_yd": 8.0, + "diff_apex_ft": 0.5, + "status": "moderate", + "error_pattern": "ROLLOUT_TOO_LONG" + }, + "s3_shot_5i_15": { + "diff_carry_yd": -4.6, + "diff_total_yd": 14.5, + "diff_apex_ft": -1.1, + "status": "severe", + "error_pattern": "CARRY_TOO_SHORT" + }, + "s3_shot_5i_16": { + "diff_carry_yd": 0.9, + "diff_total_yd": -21.0, + "diff_apex_ft": -0.2, + "status": "severe", + "error_pattern": "ROLLOUT_TOO_SHORT" + }, + "s3_shot_5i_17": { + "diff_carry_yd": 0.6, + "diff_total_yd": 2.8, + "diff_apex_ft": 0.0, + "status": "pass", + "error_pattern": null + }, + "s3_shot_6i_35": { + "diff_carry_yd": -1.1, + "diff_total_yd": -12.5, + "diff_apex_ft": -2.0, + "status": "severe", + "error_pattern": "ROLLOUT_TOO_SHORT" + }, + "s3_shot_6i_36": { + "diff_carry_yd": 6.2, + "diff_total_yd": -16.5, + "diff_apex_ft": 1.5, + "status": "severe", + "error_pattern": "CARRY_TOO_LONG" + }, + "s3_shot_6i_37": { + "diff_carry_yd": -1.0, + "diff_total_yd": 15.7, + "diff_apex_ft": -0.4, + "status": "severe", + "error_pattern": "ROLLOUT_TOO_LONG" + }, + "s3_shot_6i_38": { + "diff_carry_yd": 0.1, + "diff_total_yd": -18.0, + "diff_apex_ft": 1.0, + "status": "severe", + "error_pattern": "ROLLOUT_TOO_SHORT" + }, + "s3_shot_6i_39": { + "diff_carry_yd": -0.8, + "diff_total_yd": 5.7, + "diff_apex_ft": 0.0, + "status": "moderate", + "error_pattern": "ROLLOUT_TOO_LONG" + }, + "s3_shot_6i_40": { + "diff_carry_yd": -1.6, + "diff_total_yd": 7.0, + "diff_apex_ft": 0.1, + "status": "moderate", + "error_pattern": "ROLLOUT_TOO_LONG" + }, + "s3_shot_6i_41": { + "diff_carry_yd": -5.7, + "diff_total_yd": 11.0, + "diff_apex_ft": -1.1, + "status": "severe", + "error_pattern": "CARRY_TOO_SHORT" + }, + "s3_shot_6i_42": { + "diff_carry_yd": 2.7, + "diff_total_yd": -13.5, + "diff_apex_ft": 2.1, + "status": "severe", + "error_pattern": "ROLLOUT_TOO_SHORT" + }, + "s3_shot_6i_43": { + "diff_carry_yd": 5.6, + "diff_total_yd": -0.2, + "diff_apex_ft": 7.8, + "status": "moderate", + "error_pattern": "CARRY_TOO_LONG" + }, + "s3_shot_6i_44": { + "diff_carry_yd": -1.8, + "diff_total_yd": -28.0, + "diff_apex_ft": -1.4, + "status": "severe", + "error_pattern": "ROLLOUT_TOO_SHORT" + }, + "s3_shot_6i_45": { + "diff_carry_yd": 3.0, + "diff_total_yd": 20.4, + "diff_apex_ft": 0.5, + "status": "severe", + "error_pattern": "ROLLOUT_TOO_LONG" + }, + "s3_shot_6i_46": { + "diff_carry_yd": -1.0, + "diff_total_yd": -8.5, + "diff_apex_ft": -3.0, + "status": "moderate", + "error_pattern": "ROLLOUT_TOO_SHORT" + }, + "s3_shot_6i_47": { + "diff_carry_yd": 6.1, + "diff_total_yd": 8.3, + "diff_apex_ft": 11.4, + "status": "moderate", + "error_pattern": "CARRY_AND_ROLLOUT_LONG" + }, + "s3_shot_6i_48": { + "diff_carry_yd": 5.3, + "diff_total_yd": 8.8, + "diff_apex_ft": 13.8, + "status": "moderate", + "error_pattern": "CARRY_AND_ROLLOUT_LONG" + }, + "s3_shot_6i_49": { + "diff_carry_yd": -3.0, + "diff_total_yd": 5.9, + "diff_apex_ft": -0.3, + "status": "moderate", + "error_pattern": "ROLLOUT_TOO_LONG" + }, + "s3_shot_6i_50": { + "diff_carry_yd": 3.8, + "diff_total_yd": -7.0, + "diff_apex_ft": 5.9, + "status": "moderate", + "error_pattern": "CARRY_TOO_LONG" + }, + "s3_shot_7i_25": { + "diff_carry_yd": 3.4, + "diff_total_yd": -14.1, + "diff_apex_ft": 2.0, + "status": "severe", + "error_pattern": "CARRY_TOO_LONG" + }, + "s3_shot_7i_26": { + "diff_carry_yd": 4.3, + "diff_total_yd": -19.4, + "diff_apex_ft": 1.7, + "status": "severe", + "error_pattern": "CARRY_TOO_LONG" + }, + "s3_shot_7i_27": { + "diff_carry_yd": 1.2, + "diff_total_yd": 4.7, + "diff_apex_ft": 7.7, + "status": "pass", + "error_pattern": null + }, + "s3_shot_7i_28": { + "diff_carry_yd": 0.5, + "diff_total_yd": 1.5, + "diff_apex_ft": 8.1, + "status": "pass", + "error_pattern": null + }, + "s3_shot_7i_29": { + "diff_carry_yd": 0.1, + "diff_total_yd": -6.6, + "diff_apex_ft": -3.6, + "status": "moderate", + "error_pattern": "ROLLOUT_TOO_SHORT" + }, + "s3_shot_7i_30": { + "diff_carry_yd": -0.7, + "diff_total_yd": 1.0, + "diff_apex_ft": 5.3, + "status": "pass", + "error_pattern": null + }, + "s3_shot_7i_31": { + "diff_carry_yd": -1.5, + "diff_total_yd": -10.9, + "diff_apex_ft": -3.2, + "status": "severe", + "error_pattern": "ROLLOUT_TOO_SHORT" + }, + "s3_shot_7i_32": { + "diff_carry_yd": -2.4, + "diff_total_yd": -2.8, + "diff_apex_ft": 3.0, + "status": "pass", + "error_pattern": null + }, + "s3_shot_7i_33": { + "diff_carry_yd": -2.2, + "diff_total_yd": -1.9, + "diff_apex_ft": 4.5, + "status": "pass", + "error_pattern": null + }, + "s3_shot_7i_34": { + "diff_carry_yd": 3.6, + "diff_total_yd": 2.0, + "diff_apex_ft": 3.0, + "status": "moderate", + "error_pattern": "CARRY_TOO_LONG" + }, + "s3_shot_9i_1": { + "diff_carry_yd": -1.9, + "diff_total_yd": -13.0, + "diff_apex_ft": 1.2, + "status": "severe", + "error_pattern": "ROLLOUT_TOO_SHORT" + }, + "s3_shot_9i_2": { + "diff_carry_yd": -3.0, + "diff_total_yd": -3.3, + "diff_apex_ft": -0.5, + "status": "pass", + "error_pattern": null + }, + "s3_shot_9i_3": { + "diff_carry_yd": -1.9, + "diff_total_yd": 1.4, + "diff_apex_ft": -5.4, + "status": "pass", + "error_pattern": null + }, + "s3_shot_9i_5": { + "diff_carry_yd": 6.2, + "diff_total_yd": 4.0, + "diff_apex_ft": -1.9, + "status": "moderate", + "error_pattern": "CARRY_TOO_LONG" + }, + "s3_shot_9i_7": { + "diff_carry_yd": 10.7, + "diff_total_yd": 11.7, + "diff_apex_ft": 0.7, + "status": "severe", + "error_pattern": "CARRY_AND_ROLLOUT_LONG" + }, + "s3_shot_9i_8": { + "diff_carry_yd": -2.3, + "diff_total_yd": 4.7, + "diff_apex_ft": -1.8, + "status": "pass", + "error_pattern": null + }, + "s3_shot_9i_9": { + "diff_carry_yd": -1.8, + "diff_total_yd": 2.3, + "diff_apex_ft": -6.3, + "status": "pass", + "error_pattern": null + }, + "s3_shot_driver_51": { + "diff_carry_yd": 3.2, + "diff_total_yd": 19.2, + "diff_apex_ft": -7.9, + "status": "severe", + "error_pattern": "CARRY_AND_ROLLOUT_LONG" + }, + "s3_shot_driver_52": { + "diff_carry_yd": 3.7, + "diff_total_yd": 18.3, + "diff_apex_ft": -6.6, + "status": "severe", + "error_pattern": "CARRY_AND_ROLLOUT_LONG" + }, + "s3_shot_driver_53": { + "diff_carry_yd": 0.1, + "diff_total_yd": 10.3, + "diff_apex_ft": -8.4, + "status": "severe", + "error_pattern": "ROLLOUT_TOO_LONG" + }, + "s3_shot_driver_54": { + "diff_carry_yd": 0.5, + "diff_total_yd": -4.9, + "diff_apex_ft": -3.5, + "status": "pass", + "error_pattern": null + }, + "s3_shot_driver_55": { + "diff_carry_yd": 2.0, + "diff_total_yd": 21.7, + "diff_apex_ft": 0.4, + "status": "severe", + "error_pattern": "ROLLOUT_TOO_LONG" + }, + "s3_shot_driver_56": { + "diff_carry_yd": -0.8, + "diff_total_yd": 13.7, + "diff_apex_ft": 7.2, + "status": "severe", + "error_pattern": "ROLLOUT_TOO_LONG" + }, + "s3_shot_driver_57": { + "diff_carry_yd": -8.9, + "diff_total_yd": -23.5, + "diff_apex_ft": -4.3, + "status": "severe", + "error_pattern": "CARRY_AND_ROLLOUT_SHORT" + }, + "s3_shot_driver_58": { + "diff_carry_yd": 9.3, + "diff_total_yd": 24.5, + "diff_apex_ft": -13.0, + "status": "severe", + "error_pattern": "CARRY_AND_ROLLOUT_LONG" + }, + "s3_shot_driver_59": { + "diff_carry_yd": -1.6, + "diff_total_yd": 14.4, + "diff_apex_ft": -4.2, + "status": "severe", + "error_pattern": "ROLLOUT_TOO_LONG" + }, + "s3_shot_driver_60": { + "diff_carry_yd": -0.6, + "diff_total_yd": -15.4, + "diff_apex_ft": -2.5, + "status": "severe", + "error_pattern": "ROLLOUT_TOO_SHORT" + }, + "s3_shot_pw_64": { + "diff_carry_yd": 0.1, + "diff_total_yd": 2.5, + "diff_apex_ft": -1.3, + "status": "pass", + "error_pattern": null + }, + "s3_shot_pw_65": { + "diff_carry_yd": 6.9, + "diff_total_yd": 13.1, + "diff_apex_ft": 1.0, + "status": "severe", + "error_pattern": "CARRY_AND_ROLLOUT_LONG" + }, + "s3_shot_pw_66": { + "diff_carry_yd": 3.6, + "diff_total_yd": 6.3, + "diff_apex_ft": -0.1, + "status": "moderate", + "error_pattern": "CARRY_AND_ROLLOUT_LONG" + }, + "s3_shot_pw_67": { + "diff_carry_yd": 7.1, + "diff_total_yd": 14.1, + "diff_apex_ft": 0.5, + "status": "severe", + "error_pattern": "CARRY_AND_ROLLOUT_LONG" + }, + "s3_shot_pw_68": { + "diff_carry_yd": 0.6, + "diff_total_yd": 3.9, + "diff_apex_ft": -7.0, + "status": "pass", + "error_pattern": null + }, + "s3_shot_pw_69": { + "diff_carry_yd": 3.9, + "diff_total_yd": 3.3, + "diff_apex_ft": -0.8, + "status": "moderate", + "error_pattern": "CARRY_TOO_LONG" + }, + "s4_shot_3w_31": { + "diff_carry_yd": -0.1, + "diff_total_yd": -3.6, + "diff_apex_ft": -3.6, + "status": "pass", + "error_pattern": null + }, + "s4_shot_3w_32": { + "diff_carry_yd": -1.7, + "diff_total_yd": 4.4, + "diff_apex_ft": -4.3, + "status": "pass", + "error_pattern": null + }, + "s4_shot_3w_33": { + "diff_carry_yd": 6.4, + "diff_total_yd": 9.6, + "diff_apex_ft": -9.1, + "status": "moderate", + "error_pattern": "CARRY_AND_ROLLOUT_LONG" + }, + "s4_shot_3w_34": { + "diff_carry_yd": -0.7, + "diff_total_yd": -2.0, + "diff_apex_ft": -3.9, + "status": "pass", + "error_pattern": null + }, + "s4_shot_3w_35": { + "diff_carry_yd": -0.2, + "diff_total_yd": -2.7, + "diff_apex_ft": -4.7, + "status": "pass", + "error_pattern": null + }, + "s4_shot_5i_25": { + "diff_carry_yd": -2.9, + "diff_total_yd": -7.2, + "diff_apex_ft": -5.5, + "status": "moderate", + "error_pattern": "ROLLOUT_TOO_SHORT" + }, + "s4_shot_5i_26": { + "diff_carry_yd": 3.1, + "diff_total_yd": 5.0, + "diff_apex_ft": 2.9, + "status": "moderate", + "error_pattern": "CARRY_TOO_LONG" + }, + "s4_shot_5i_27": { + "diff_carry_yd": -2.0, + "diff_total_yd": 10.8, + "diff_apex_ft": -0.2, + "status": "severe", + "error_pattern": "ROLLOUT_TOO_LONG" + }, + "s4_shot_5i_28": { + "diff_carry_yd": -0.2, + "diff_total_yd": -6.9, + "diff_apex_ft": 5.0, + "status": "moderate", + "error_pattern": "ROLLOUT_TOO_SHORT" + }, + "s4_shot_5i_29": { + "diff_carry_yd": 5.2, + "diff_total_yd": 12.4, + "diff_apex_ft": 0.9, + "status": "severe", + "error_pattern": "CARRY_AND_ROLLOUT_LONG" + }, + "s4_shot_5i_30": { + "diff_carry_yd": 2.4, + "diff_total_yd": 1.6, + "diff_apex_ft": -7.8, + "status": "pass", + "error_pattern": null + }, + "s4_shot_6i_19": { + "diff_carry_yd": -0.5, + "diff_total_yd": -11.5, + "diff_apex_ft": 0.2, + "status": "severe", + "error_pattern": "ROLLOUT_TOO_SHORT" + }, + "s4_shot_6i_20": { + "diff_carry_yd": -0.1, + "diff_total_yd": 11.4, + "diff_apex_ft": 0.0, + "status": "severe", + "error_pattern": "ROLLOUT_TOO_LONG" + }, + "s4_shot_6i_21": { + "diff_carry_yd": 0.9, + "diff_total_yd": -1.5, + "diff_apex_ft": -6.8, + "status": "pass", + "error_pattern": null + }, + "s4_shot_6i_22": { + "diff_carry_yd": 3.4, + "diff_total_yd": 8.6, + "diff_apex_ft": 0.8, + "status": "moderate", + "error_pattern": "CARRY_AND_ROLLOUT_LONG" + }, + "s4_shot_6i_23": { + "diff_carry_yd": null, + "diff_total_yd": null, + "diff_apex_ft": null, + "status": "pass", + "error_pattern": null + }, + "s4_shot_6i_24": { + "diff_carry_yd": null, + "diff_total_yd": null, + "diff_apex_ft": null, + "status": "pass", + "error_pattern": null + }, + "s4_shot_9i_13": { + "diff_carry_yd": null, + "diff_total_yd": null, + "diff_apex_ft": null, + "status": "pass", + "error_pattern": null + }, + "s4_shot_9i_14": { + "diff_carry_yd": -2.1, + "diff_total_yd": -0.4, + "diff_apex_ft": -7.0, + "status": "pass", + "error_pattern": null + }, + "s4_shot_9i_15": { + "diff_carry_yd": 5.2, + "diff_total_yd": 5.3, + "diff_apex_ft": 0.2, + "status": "moderate", + "error_pattern": "CARRY_AND_ROLLOUT_LONG" + }, + "s4_shot_9i_17": { + "diff_carry_yd": 2.1, + "diff_total_yd": -12.5, + "diff_apex_ft": 0.6, + "status": "severe", + "error_pattern": "ROLLOUT_TOO_SHORT" + }, + "s4_shot_9i_18": { + "diff_carry_yd": 5.0, + "diff_total_yd": 4.6, + "diff_apex_ft": 0.1, + "status": "moderate", + "error_pattern": "CARRY_TOO_LONG" + }, + "s4_shot_lw_38": { + "diff_carry_yd": -2.8, + "diff_total_yd": 6.5, + "diff_apex_ft": -2.2, + "status": "moderate", + "error_pattern": "ROLLOUT_TOO_LONG" + }, + "s4_shot_pw_1": { + "diff_carry_yd": -2.8, + "diff_total_yd": -8.5, + "diff_apex_ft": 2.1, + "status": "moderate", + "error_pattern": "ROLLOUT_TOO_SHORT" + }, + "s4_shot_pw_10": { + "diff_carry_yd": 4.0, + "diff_total_yd": 7.7, + "diff_apex_ft": -0.9, + "status": "moderate", + "error_pattern": "CARRY_AND_ROLLOUT_LONG" + }, + "s4_shot_pw_11": { + "diff_carry_yd": 3.9, + "diff_total_yd": 7.8, + "diff_apex_ft": -0.2, + "status": "moderate", + "error_pattern": "CARRY_AND_ROLLOUT_LONG" + }, + "s4_shot_pw_2": { + "diff_carry_yd": -0.8, + "diff_total_yd": 7.7, + "diff_apex_ft": -0.2, + "status": "moderate", + "error_pattern": "ROLLOUT_TOO_LONG" + }, + "s4_shot_pw_3": { + "diff_carry_yd": -2.6, + "diff_total_yd": 9.9, + "diff_apex_ft": -1.6, + "status": "moderate", + "error_pattern": "ROLLOUT_TOO_LONG" + }, + "s4_shot_pw_47": { + "diff_carry_yd": -1.4, + "diff_total_yd": 8.2, + "diff_apex_ft": -0.3, + "status": "moderate", + "error_pattern": "ROLLOUT_TOO_LONG" + }, + "s4_shot_pw_48": { + "diff_carry_yd": -1.6, + "diff_total_yd": 7.0, + "diff_apex_ft": -0.4, + "status": "moderate", + "error_pattern": "ROLLOUT_TOO_LONG" + }, + "s4_shot_pw_49": { + "diff_carry_yd": -3.0, + "diff_total_yd": 9.4, + "diff_apex_ft": -0.6, + "status": "moderate", + "error_pattern": "ROLLOUT_TOO_LONG" + }, + "s4_shot_pw_6": { + "diff_carry_yd": -4.1, + "diff_total_yd": -3.4, + "diff_apex_ft": -1.6, + "status": "moderate", + "error_pattern": "CARRY_TOO_SHORT" + }, + "s4_shot_pw_7": { + "diff_carry_yd": 4.9, + "diff_total_yd": 6.7, + "diff_apex_ft": -0.1, + "status": "moderate", + "error_pattern": "CARRY_AND_ROLLOUT_LONG" + }, + "s4_shot_pw_9": { + "diff_carry_yd": null, + "diff_total_yd": null, + "diff_apex_ft": null, + "status": "pass", + "error_pattern": null + }, + "topped_test_shot": { + "diff_carry_yd": -0.7, + "diff_total_yd": 13.8, + "diff_apex_ft": -0.1, + "status": "severe", + "error_pattern": "ROLLOUT_TOO_LONG" + }, + "wedge_shot_1": { + "diff_carry_yd": -2.5, + "diff_total_yd": 4.6, + "diff_apex_ft": -1.2, + "status": "pass", + "error_pattern": null + }, + "wedge_shot_2": { + "diff_carry_yd": -2.7, + "diff_total_yd": 7.9, + "diff_apex_ft": -1.9, + "status": "moderate", + "error_pattern": "ROLLOUT_TOO_LONG" + }, + "wedge_test_shot": { + "diff_carry_yd": 0.3, + "diff_total_yd": 10.7, + "diff_apex_ft": -1.0, + "status": "severe", + "error_pattern": "ROLLOUT_TOO_LONG" + }, + "wedge_test_shot2": { + "diff_carry_yd": -0.5, + "diff_total_yd": 10.1, + "diff_apex_ft": 0.0, + "status": "severe", + "error_pattern": "ROLLOUT_TOO_LONG" + }, + "wood1": { + "diff_carry_yd": 11.9, + "diff_total_yd": -4.0, + "diff_apex_ft": 3.1, + "status": "severe", + "error_pattern": "CARRY_TOO_LONG" + }, + "wood2": { + "diff_carry_yd": -0.4, + "diff_total_yd": -4.8, + "diff_apex_ft": -3.3, + "status": "pass", + "error_pattern": null + }, + "wood_low_test_shot": { + "diff_carry_yd": 1.3, + "diff_total_yd": 22.0, + "diff_apex_ft": 0.3, + "status": "severe", + "error_pattern": "ROLLOUT_TOO_LONG" + } + }, + "regressions": [ + { + "shot": "drive_test_shot", + "was": "pass", + "now": "moderate", + "prev_total_diff": -0.6, + "curr_total_diff": -5.9 + }, + { + "shot": "s2_shot_11", + "was": "pass", + "now": "moderate", + "prev_total_diff": 1.1, + "curr_total_diff": 9.2 + }, + { + "shot": "s3_shot_9i_7", + "was": "pass", + "now": "severe", + "prev_total_diff": 1.1, + "curr_total_diff": 11.7 + }, + { + "shot": "s3_shot_pw_65", + "was": "pass", + "now": "severe", + "prev_total_diff": 4.2, + "curr_total_diff": 13.1 + }, + { + "shot": "s4_shot_pw_10", + "was": "pass", + "now": "moderate", + "prev_total_diff": 0.4, + "curr_total_diff": 7.7 + }, + { + "shot": "s4_shot_pw_11", + "was": "pass", + "now": "moderate", + "prev_total_diff": 0.4, + "curr_total_diff": 7.8 + } + ], + "conflicts": [ + "Bounce.FlightTangentialRetentionBase", + "Bounce.FlightSpinFactorMin", + "Bounce.FlightSpinFactorDivisor", + "Rollout.MidSpinMultiplierMax", + "Rollout.HighSpinMultiplierMax", + "Rollout.FrictionBlendSpeed", + "KineticFrictionMultiplier", + "Bounce.RolloutHighSpinRetention", + "Bounce.CorBaseA", + "Rollout.LowSpinMultiplierMax", + "Rollout.LowSpinThreshold", + "RollingFrictionMultiplier", + "Bounce.RolloutLowSpinRetention", + "Rollout.ChipVelocityScaleMin", + "Rollout.ChipVelocityScaleMax", + "Flight.ClMaxBase", + "Flight.CdMin", + "DragScaleMultiplier", + "LiftScaleMultiplier", + "Flight.HighLaunchDragBoostMax" + ] +} diff --git a/assets/data/calibration/history/iteration_061.json b/assets/data/calibration/history/iteration_061.json new file mode 100644 index 0000000..2d994cb --- /dev/null +++ b/assets/data/calibration/history/iteration_061.json @@ -0,0 +1,1070 @@ +{ + "iteration": 61, + "timestamp": "2026-03-14T02:53:31.673129", + "profile_overrides": { + "DragScaleMultiplier": 1.01, + "Flight": { + "CdMin": 0.223, + "HighLaunchDragVlaStartDeg": 24.5, + "HighLaunchDragVlaFullDeg": 31.5, + "HighLaunchDragBoostMax": 1.24, + "SpinDragProgressiveCapSrStart": 0.33, + "SpinDragProgressiveCapSrEnd": 0.5, + "SpinDragProgressiveCapBoostMax": 0.25, + "HighReMidSpinGain": 16.0, + "MidSpinClBoostSrStart": 0.17, + "MidSpinClBoostSrEnd": 0.31, + "MidSpinClBoostMax": 0.5 + }, + "RegimeScaleOverrides": { + "C-S0": { + "DragScaleMultiplier": 0.7, + "LiftScaleMultiplier": 1.2 + }, + "C-S0-V1-P0": { + "DragScaleMultiplier": 0.55, + "LiftScaleMultiplier": 1.15 + }, + "I-S1-V2-P1": { + "DragScaleMultiplier": 0.84, + "LiftScaleMultiplier": 1.1 + }, + "I-S1-V2-P2": { + "DragScaleMultiplier": 0.9, + "LiftScaleMultiplier": 1.06 + }, + "I-S1-V3-P2": { + "DragScaleMultiplier": 0.83, + "LiftScaleMultiplier": 1.1 + }, + "I-S1-V3-P3": { + "DragScaleMultiplier": 0.97, + "LiftScaleMultiplier": 1.02 + }, + "I-S1-V1-P2": { + "DragScaleMultiplier": 0.96, + "LiftScaleMultiplier": 1.02 + }, + "W-S1-V3-P3": { + "DragScaleMultiplier": 0.9, + "LiftScaleMultiplier": 1.06 + }, + "I-S3-V2-P3": { + "DragScaleMultiplier": 1.08, + "LiftScaleMultiplier": 0.96 + }, + "I-S2-V2-P3": { + "DragScaleMultiplier": 1.04 + }, + "D-S3-V1": { + "DragScaleMultiplier": 1.04, + "LiftScaleMultiplier": 0.99 + }, + "D-S4-V1": { + "DragScaleMultiplier": 1.04 + }, + "W-S2-V3-P4": { + "DragScaleMultiplier": 1.06, + "LiftScaleMultiplier": 0.97 + } + } + }, + "summary": { + "pass": 37, + "moderate": 35, + "severe": 57, + "no_reference": 7 + }, + "per_shot": { + "5iron": { + "diff_carry_yd": 4.8, + "diff_total_yd": 11.3, + "diff_apex_ft": 4.6, + "status": "severe", + "error_pattern": "CARRY_AND_ROLLOUT_LONG" + }, + "approach_mid_iron_test_shot": { + "diff_carry_yd": -0.6, + "diff_total_yd": 7.3, + "diff_apex_ft": -5.0, + "status": "moderate", + "error_pattern": "ROLLOUT_TOO_LONG" + }, + "bump_and_run": { + "diff_carry_yd": -6.1, + "diff_total_yd": -24.6, + "diff_apex_ft": -1.5, + "status": "severe", + "error_pattern": "CARRY_AND_ROLLOUT_SHORT" + }, + "bump_and_run_slow": { + "diff_carry_yd": null, + "diff_total_yd": null, + "diff_apex_ft": null, + "status": "pass", + "error_pattern": null + }, + "bump_test_shot": { + "diff_carry_yd": -2.1, + "diff_total_yd": 12.7, + "diff_apex_ft": -0.1, + "status": "severe", + "error_pattern": "ROLLOUT_TOO_LONG" + }, + "checked_test_shot": { + "diff_carry_yd": -2.1, + "diff_total_yd": -0.5, + "diff_apex_ft": -9.6, + "status": "pass", + "error_pattern": null + }, + "chip_test_shot": { + "diff_carry_yd": null, + "diff_total_yd": null, + "diff_apex_ft": null, + "status": "pass", + "error_pattern": null + }, + "drive_test_shot": { + "diff_carry_yd": -6.1, + "diff_total_yd": -5.9, + "diff_apex_ft": -2.8, + "status": "moderate", + "error_pattern": "CARRY_AND_ROLLOUT_SHORT" + }, + "driver1": { + "diff_carry_yd": -0.3, + "diff_total_yd": -26.3, + "diff_apex_ft": -0.8, + "status": "severe", + "error_pattern": "ROLLOUT_TOO_SHORT" + }, + "driver2": { + "diff_carry_yd": 2.8, + "diff_total_yd": 2.9, + "diff_apex_ft": -4.3, + "status": "pass", + "error_pattern": null + }, + "driver3": { + "diff_carry_yd": 0.9, + "diff_total_yd": 15.9, + "diff_apex_ft": 17.6, + "status": "severe", + "error_pattern": "ROLLOUT_TOO_LONG" + }, + "driver4": { + "diff_carry_yd": 1.3, + "diff_total_yd": 9.3, + "diff_apex_ft": 2.4, + "status": "moderate", + "error_pattern": "ROLLOUT_TOO_LONG" + }, + "flop_test_shot": { + "diff_carry_yd": -0.2, + "diff_total_yd": 1.6, + "diff_apex_ft": -8.5, + "status": "pass", + "error_pattern": null + }, + "p_wedge_shot_1": { + "diff_carry_yd": 3.9, + "diff_total_yd": 12.3, + "diff_apex_ft": -0.2, + "status": "severe", + "error_pattern": "CARRY_AND_ROLLOUT_LONG" + }, + "s2_shot_10": { + "diff_carry_yd": 3.4, + "diff_total_yd": 10.2, + "diff_apex_ft": -6.0, + "status": "severe", + "error_pattern": "CARRY_AND_ROLLOUT_LONG" + }, + "s2_shot_11": { + "diff_carry_yd": -1.1, + "diff_total_yd": 2.8, + "diff_apex_ft": -3.6, + "status": "pass", + "error_pattern": null + }, + "s2_shot_12": { + "diff_carry_yd": 2.0, + "diff_total_yd": 6.0, + "diff_apex_ft": -6.2, + "status": "moderate", + "error_pattern": "ROLLOUT_TOO_LONG" + }, + "s2_shot_13": { + "diff_carry_yd": -1.1, + "diff_total_yd": 0.7, + "diff_apex_ft": -6.9, + "status": "pass", + "error_pattern": null + }, + "s2_shot_14": { + "diff_carry_yd": -2.3, + "diff_total_yd": -0.4, + "diff_apex_ft": -6.6, + "status": "pass", + "error_pattern": null + }, + "s2_shot_15": { + "diff_carry_yd": -1.0, + "diff_total_yd": -12.7, + "diff_apex_ft": -2.0, + "status": "severe", + "error_pattern": "ROLLOUT_TOO_SHORT" + }, + "s2_shot_16": { + "diff_carry_yd": -0.3, + "diff_total_yd": 2.2, + "diff_apex_ft": -3.5, + "status": "pass", + "error_pattern": null + }, + "s2_shot_17": { + "diff_carry_yd": 0.9, + "diff_total_yd": 4.7, + "diff_apex_ft": -5.1, + "status": "pass", + "error_pattern": null + }, + "s2_shot_18": { + "diff_carry_yd": -2.1, + "diff_total_yd": 7.2, + "diff_apex_ft": -3.5, + "status": "moderate", + "error_pattern": "ROLLOUT_TOO_LONG" + }, + "s2_shot_19": { + "diff_carry_yd": -2.1, + "diff_total_yd": -10.5, + "diff_apex_ft": -2.2, + "status": "severe", + "error_pattern": "ROLLOUT_TOO_SHORT" + }, + "s2_shot_20": { + "diff_carry_yd": 1.5, + "diff_total_yd": 7.5, + "diff_apex_ft": -3.0, + "status": "moderate", + "error_pattern": "ROLLOUT_TOO_LONG" + }, + "s2_shot_21": { + "diff_carry_yd": 4.9, + "diff_total_yd": 27.7, + "diff_apex_ft": 1.7, + "status": "severe", + "error_pattern": "CARRY_AND_ROLLOUT_LONG" + }, + "s2_shot_22": { + "diff_carry_yd": 0.6, + "diff_total_yd": -2.4, + "diff_apex_ft": -2.7, + "status": "pass", + "error_pattern": null + }, + "s2_shot_23": { + "diff_carry_yd": 3.5, + "diff_total_yd": -19.6, + "diff_apex_ft": 0.0, + "status": "severe", + "error_pattern": "CARRY_TOO_LONG" + }, + "s2_shot_24": { + "diff_carry_yd": 0.5, + "diff_total_yd": -1.5, + "diff_apex_ft": -3.0, + "status": "pass", + "error_pattern": null + }, + "s2_shot_26": { + "diff_carry_yd": 1.7, + "diff_total_yd": 20.6, + "diff_apex_ft": 23.5, + "status": "severe", + "error_pattern": "ROLLOUT_TOO_LONG" + }, + "s2_shot_27": { + "diff_carry_yd": -1.4, + "diff_total_yd": 9.2, + "diff_apex_ft": 3.2, + "status": "moderate", + "error_pattern": "ROLLOUT_TOO_LONG" + }, + "s2_shot_9": { + "diff_carry_yd": -3.3, + "diff_total_yd": 1.6, + "diff_apex_ft": 7.1, + "status": "moderate", + "error_pattern": "CARRY_TOO_SHORT" + }, + "s3_shot_3w_18": { + "diff_carry_yd": null, + "diff_total_yd": null, + "diff_apex_ft": null, + "status": "pass", + "error_pattern": null + }, + "s3_shot_3w_19": { + "diff_carry_yd": -0.6, + "diff_total_yd": 16.0, + "diff_apex_ft": 0.1, + "status": "severe", + "error_pattern": "ROLLOUT_TOO_LONG" + }, + "s3_shot_3w_21": { + "diff_carry_yd": 0.6, + "diff_total_yd": 15.9, + "diff_apex_ft": 0.3, + "status": "severe", + "error_pattern": "ROLLOUT_TOO_LONG" + }, + "s3_shot_3w_22": { + "diff_carry_yd": 2.6, + "diff_total_yd": 19.6, + "diff_apex_ft": 0.5, + "status": "severe", + "error_pattern": "ROLLOUT_TOO_LONG" + }, + "s3_shot_3w_23": { + "diff_carry_yd": 0.1, + "diff_total_yd": -23.3, + "diff_apex_ft": -1.3, + "status": "severe", + "error_pattern": "ROLLOUT_TOO_SHORT" + }, + "s3_shot_3w_24": { + "diff_carry_yd": 6.9, + "diff_total_yd": 28.4, + "diff_apex_ft": 1.8, + "status": "severe", + "error_pattern": "CARRY_AND_ROLLOUT_LONG" + }, + "s3_shot_5i_10": { + "diff_carry_yd": 2.5, + "diff_total_yd": -7.6, + "diff_apex_ft": 5.8, + "status": "moderate", + "error_pattern": "ROLLOUT_TOO_SHORT" + }, + "s3_shot_5i_11": { + "diff_carry_yd": -3.7, + "diff_total_yd": -17.6, + "diff_apex_ft": -1.3, + "status": "severe", + "error_pattern": "CARRY_AND_ROLLOUT_SHORT" + }, + "s3_shot_5i_12": { + "diff_carry_yd": 1.1, + "diff_total_yd": -23.5, + "diff_apex_ft": 1.1, + "status": "severe", + "error_pattern": "ROLLOUT_TOO_SHORT" + }, + "s3_shot_5i_13": { + "diff_carry_yd": 2.3, + "diff_total_yd": 10.1, + "diff_apex_ft": 0.6, + "status": "severe", + "error_pattern": "ROLLOUT_TOO_LONG" + }, + "s3_shot_5i_15": { + "diff_carry_yd": -4.6, + "diff_total_yd": 14.5, + "diff_apex_ft": -1.1, + "status": "severe", + "error_pattern": "CARRY_TOO_SHORT" + }, + "s3_shot_5i_16": { + "diff_carry_yd": 0.9, + "diff_total_yd": -21.0, + "diff_apex_ft": -0.2, + "status": "severe", + "error_pattern": "ROLLOUT_TOO_SHORT" + }, + "s3_shot_5i_17": { + "diff_carry_yd": 1.6, + "diff_total_yd": 4.3, + "diff_apex_ft": 0.2, + "status": "pass", + "error_pattern": null + }, + "s3_shot_6i_35": { + "diff_carry_yd": -3.5, + "diff_total_yd": -14.9, + "diff_apex_ft": -2.8, + "status": "severe", + "error_pattern": "CARRY_AND_ROLLOUT_SHORT" + }, + "s3_shot_6i_36": { + "diff_carry_yd": 3.7, + "diff_total_yd": -19.2, + "diff_apex_ft": 1.0, + "status": "severe", + "error_pattern": "CARRY_TOO_LONG" + }, + "s3_shot_6i_37": { + "diff_carry_yd": -3.7, + "diff_total_yd": 11.9, + "diff_apex_ft": -0.9, + "status": "severe", + "error_pattern": "CARRY_TOO_SHORT" + }, + "s3_shot_6i_38": { + "diff_carry_yd": -3.6, + "diff_total_yd": -21.7, + "diff_apex_ft": 0.1, + "status": "severe", + "error_pattern": "CARRY_AND_ROLLOUT_SHORT" + }, + "s3_shot_6i_39": { + "diff_carry_yd": -0.5, + "diff_total_yd": 6.4, + "diff_apex_ft": 0.0, + "status": "moderate", + "error_pattern": "ROLLOUT_TOO_LONG" + }, + "s3_shot_6i_40": { + "diff_carry_yd": -1.3, + "diff_total_yd": 7.7, + "diff_apex_ft": 0.1, + "status": "moderate", + "error_pattern": "ROLLOUT_TOO_LONG" + }, + "s3_shot_6i_41": { + "diff_carry_yd": -4.7, + "diff_total_yd": 12.9, + "diff_apex_ft": -1.0, + "status": "severe", + "error_pattern": "CARRY_TOO_SHORT" + }, + "s3_shot_6i_42": { + "diff_carry_yd": 0.5, + "diff_total_yd": -15.8, + "diff_apex_ft": 1.3, + "status": "severe", + "error_pattern": "ROLLOUT_TOO_SHORT" + }, + "s3_shot_6i_43": { + "diff_carry_yd": 5.6, + "diff_total_yd": -0.2, + "diff_apex_ft": 7.8, + "status": "moderate", + "error_pattern": "CARRY_TOO_LONG" + }, + "s3_shot_6i_44": { + "diff_carry_yd": -1.8, + "diff_total_yd": -28.0, + "diff_apex_ft": -1.4, + "status": "severe", + "error_pattern": "ROLLOUT_TOO_SHORT" + }, + "s3_shot_6i_45": { + "diff_carry_yd": 3.0, + "diff_total_yd": 20.4, + "diff_apex_ft": 0.5, + "status": "severe", + "error_pattern": "ROLLOUT_TOO_LONG" + }, + "s3_shot_6i_46": { + "diff_carry_yd": -1.0, + "diff_total_yd": -8.5, + "diff_apex_ft": -3.0, + "status": "moderate", + "error_pattern": "ROLLOUT_TOO_SHORT" + }, + "s3_shot_6i_47": { + "diff_carry_yd": 6.1, + "diff_total_yd": 8.3, + "diff_apex_ft": 11.4, + "status": "moderate", + "error_pattern": "CARRY_AND_ROLLOUT_LONG" + }, + "s3_shot_6i_48": { + "diff_carry_yd": 5.3, + "diff_total_yd": 8.8, + "diff_apex_ft": 13.8, + "status": "moderate", + "error_pattern": "CARRY_AND_ROLLOUT_LONG" + }, + "s3_shot_6i_49": { + "diff_carry_yd": -2.5, + "diff_total_yd": 6.9, + "diff_apex_ft": -0.3, + "status": "moderate", + "error_pattern": "ROLLOUT_TOO_LONG" + }, + "s3_shot_6i_50": { + "diff_carry_yd": -0.9, + "diff_total_yd": -12.5, + "diff_apex_ft": 3.8, + "status": "severe", + "error_pattern": "ROLLOUT_TOO_SHORT" + }, + "s3_shot_7i_25": { + "diff_carry_yd": -0.9, + "diff_total_yd": -18.4, + "diff_apex_ft": 0.9, + "status": "severe", + "error_pattern": "ROLLOUT_TOO_SHORT" + }, + "s3_shot_7i_26": { + "diff_carry_yd": 1.5, + "diff_total_yd": -22.1, + "diff_apex_ft": 1.1, + "status": "severe", + "error_pattern": "ROLLOUT_TOO_SHORT" + }, + "s3_shot_7i_27": { + "diff_carry_yd": 1.2, + "diff_total_yd": 4.7, + "diff_apex_ft": 7.7, + "status": "pass", + "error_pattern": null + }, + "s3_shot_7i_28": { + "diff_carry_yd": 0.5, + "diff_total_yd": 1.5, + "diff_apex_ft": 8.1, + "status": "pass", + "error_pattern": null + }, + "s3_shot_7i_29": { + "diff_carry_yd": 0.1, + "diff_total_yd": -6.6, + "diff_apex_ft": -3.6, + "status": "moderate", + "error_pattern": "ROLLOUT_TOO_SHORT" + }, + "s3_shot_7i_30": { + "diff_carry_yd": -0.7, + "diff_total_yd": 1.0, + "diff_apex_ft": 5.3, + "status": "pass", + "error_pattern": null + }, + "s3_shot_7i_31": { + "diff_carry_yd": -3.4, + "diff_total_yd": -12.9, + "diff_apex_ft": -3.7, + "status": "severe", + "error_pattern": "CARRY_AND_ROLLOUT_SHORT" + }, + "s3_shot_7i_32": { + "diff_carry_yd": -2.4, + "diff_total_yd": -2.8, + "diff_apex_ft": 3.0, + "status": "pass", + "error_pattern": null + }, + "s3_shot_7i_33": { + "diff_carry_yd": -2.2, + "diff_total_yd": -1.9, + "diff_apex_ft": 4.5, + "status": "pass", + "error_pattern": null + }, + "s3_shot_7i_34": { + "diff_carry_yd": 3.6, + "diff_total_yd": 2.0, + "diff_apex_ft": 3.0, + "status": "moderate", + "error_pattern": "CARRY_TOO_LONG" + }, + "s3_shot_9i_1": { + "diff_carry_yd": -1.9, + "diff_total_yd": -13.0, + "diff_apex_ft": 1.2, + "status": "severe", + "error_pattern": "ROLLOUT_TOO_SHORT" + }, + "s3_shot_9i_2": { + "diff_carry_yd": -4.9, + "diff_total_yd": -5.5, + "diff_apex_ft": -1.5, + "status": "moderate", + "error_pattern": "CARRY_AND_ROLLOUT_SHORT" + }, + "s3_shot_9i_3": { + "diff_carry_yd": -1.9, + "diff_total_yd": 1.4, + "diff_apex_ft": -5.4, + "status": "pass", + "error_pattern": null + }, + "s3_shot_9i_5": { + "diff_carry_yd": 2.7, + "diff_total_yd": 0.1, + "diff_apex_ft": -3.4, + "status": "pass", + "error_pattern": null + }, + "s3_shot_9i_7": { + "diff_carry_yd": 0.6, + "diff_total_yd": 1.1, + "diff_apex_ft": -4.3, + "status": "pass", + "error_pattern": null + }, + "s3_shot_9i_8": { + "diff_carry_yd": -2.3, + "diff_total_yd": 4.7, + "diff_apex_ft": -1.8, + "status": "pass", + "error_pattern": null + }, + "s3_shot_9i_9": { + "diff_carry_yd": -1.8, + "diff_total_yd": 2.3, + "diff_apex_ft": -6.3, + "status": "pass", + "error_pattern": null + }, + "s3_shot_driver_51": { + "diff_carry_yd": 3.2, + "diff_total_yd": 19.2, + "diff_apex_ft": -7.9, + "status": "severe", + "error_pattern": "CARRY_AND_ROLLOUT_LONG" + }, + "s3_shot_driver_52": { + "diff_carry_yd": 3.7, + "diff_total_yd": 18.3, + "diff_apex_ft": -6.6, + "status": "severe", + "error_pattern": "CARRY_AND_ROLLOUT_LONG" + }, + "s3_shot_driver_53": { + "diff_carry_yd": 0.1, + "diff_total_yd": 10.3, + "diff_apex_ft": -8.4, + "status": "severe", + "error_pattern": "ROLLOUT_TOO_LONG" + }, + "s3_shot_driver_54": { + "diff_carry_yd": 0.5, + "diff_total_yd": -4.9, + "diff_apex_ft": -3.5, + "status": "pass", + "error_pattern": null + }, + "s3_shot_driver_55": { + "diff_carry_yd": 2.0, + "diff_total_yd": 21.7, + "diff_apex_ft": 0.4, + "status": "severe", + "error_pattern": "ROLLOUT_TOO_LONG" + }, + "s3_shot_driver_56": { + "diff_carry_yd": -0.8, + "diff_total_yd": 13.7, + "diff_apex_ft": 7.2, + "status": "severe", + "error_pattern": "ROLLOUT_TOO_LONG" + }, + "s3_shot_driver_57": { + "diff_carry_yd": -8.9, + "diff_total_yd": -23.5, + "diff_apex_ft": -4.3, + "status": "severe", + "error_pattern": "CARRY_AND_ROLLOUT_SHORT" + }, + "s3_shot_driver_58": { + "diff_carry_yd": 9.3, + "diff_total_yd": 24.5, + "diff_apex_ft": -13.0, + "status": "severe", + "error_pattern": "CARRY_AND_ROLLOUT_LONG" + }, + "s3_shot_driver_59": { + "diff_carry_yd": -1.6, + "diff_total_yd": 14.4, + "diff_apex_ft": -4.2, + "status": "severe", + "error_pattern": "ROLLOUT_TOO_LONG" + }, + "s3_shot_driver_60": { + "diff_carry_yd": -0.6, + "diff_total_yd": -15.4, + "diff_apex_ft": -2.5, + "status": "severe", + "error_pattern": "ROLLOUT_TOO_SHORT" + }, + "s3_shot_pw_64": { + "diff_carry_yd": 1.6, + "diff_total_yd": 4.9, + "diff_apex_ft": -0.5, + "status": "pass", + "error_pattern": null + }, + "s3_shot_pw_65": { + "diff_carry_yd": 1.0, + "diff_total_yd": 6.2, + "diff_apex_ft": -2.9, + "status": "moderate", + "error_pattern": "ROLLOUT_TOO_LONG" + }, + "s3_shot_pw_66": { + "diff_carry_yd": -1.6, + "diff_total_yd": 0.9, + "diff_apex_ft": -3.0, + "status": "pass", + "error_pattern": null + }, + "s3_shot_pw_67": { + "diff_carry_yd": 1.3, + "diff_total_yd": 7.2, + "diff_apex_ft": -3.1, + "status": "moderate", + "error_pattern": "ROLLOUT_TOO_LONG" + }, + "s3_shot_pw_68": { + "diff_carry_yd": 0.6, + "diff_total_yd": 3.9, + "diff_apex_ft": -7.0, + "status": "pass", + "error_pattern": null + }, + "s3_shot_pw_69": { + "diff_carry_yd": -3.2, + "diff_total_yd": 11.6, + "diff_apex_ft": -3.9, + "status": "severe", + "error_pattern": "CARRY_TOO_SHORT" + }, + "s4_shot_3w_31": { + "diff_carry_yd": -0.1, + "diff_total_yd": -3.6, + "diff_apex_ft": -3.6, + "status": "pass", + "error_pattern": null + }, + "s4_shot_3w_32": { + "diff_carry_yd": -1.7, + "diff_total_yd": 4.4, + "diff_apex_ft": -4.3, + "status": "pass", + "error_pattern": null + }, + "s4_shot_3w_33": { + "diff_carry_yd": 6.4, + "diff_total_yd": 9.6, + "diff_apex_ft": -9.1, + "status": "moderate", + "error_pattern": "CARRY_AND_ROLLOUT_LONG" + }, + "s4_shot_3w_34": { + "diff_carry_yd": -0.7, + "diff_total_yd": -2.0, + "diff_apex_ft": -3.9, + "status": "pass", + "error_pattern": null + }, + "s4_shot_3w_35": { + "diff_carry_yd": -0.2, + "diff_total_yd": -2.7, + "diff_apex_ft": -4.7, + "status": "pass", + "error_pattern": null + }, + "s4_shot_5i_25": { + "diff_carry_yd": -2.9, + "diff_total_yd": -7.2, + "diff_apex_ft": -5.5, + "status": "moderate", + "error_pattern": "ROLLOUT_TOO_SHORT" + }, + "s4_shot_5i_26": { + "diff_carry_yd": 3.1, + "diff_total_yd": 5.0, + "diff_apex_ft": 2.9, + "status": "moderate", + "error_pattern": "CARRY_TOO_LONG" + }, + "s4_shot_5i_27": { + "diff_carry_yd": -2.0, + "diff_total_yd": 10.8, + "diff_apex_ft": -0.2, + "status": "severe", + "error_pattern": "ROLLOUT_TOO_LONG" + }, + "s4_shot_5i_28": { + "diff_carry_yd": -0.2, + "diff_total_yd": -6.9, + "diff_apex_ft": 5.0, + "status": "moderate", + "error_pattern": "ROLLOUT_TOO_SHORT" + }, + "s4_shot_5i_29": { + "diff_carry_yd": 6.3, + "diff_total_yd": 13.8, + "diff_apex_ft": 1.0, + "status": "severe", + "error_pattern": "CARRY_AND_ROLLOUT_LONG" + }, + "s4_shot_5i_30": { + "diff_carry_yd": 2.4, + "diff_total_yd": 1.6, + "diff_apex_ft": -7.8, + "status": "pass", + "error_pattern": null + }, + "s4_shot_6i_19": { + "diff_carry_yd": -0.5, + "diff_total_yd": -11.5, + "diff_apex_ft": 0.2, + "status": "severe", + "error_pattern": "ROLLOUT_TOO_SHORT" + }, + "s4_shot_6i_20": { + "diff_carry_yd": -0.1, + "diff_total_yd": 11.4, + "diff_apex_ft": 0.0, + "status": "severe", + "error_pattern": "ROLLOUT_TOO_LONG" + }, + "s4_shot_6i_21": { + "diff_carry_yd": 0.9, + "diff_total_yd": -1.5, + "diff_apex_ft": -6.8, + "status": "pass", + "error_pattern": null + }, + "s4_shot_6i_22": { + "diff_carry_yd": 4.5, + "diff_total_yd": 10.8, + "diff_apex_ft": 0.9, + "status": "severe", + "error_pattern": "CARRY_AND_ROLLOUT_LONG" + }, + "s4_shot_6i_23": { + "diff_carry_yd": null, + "diff_total_yd": null, + "diff_apex_ft": null, + "status": "pass", + "error_pattern": null + }, + "s4_shot_6i_24": { + "diff_carry_yd": null, + "diff_total_yd": null, + "diff_apex_ft": null, + "status": "pass", + "error_pattern": null + }, + "s4_shot_9i_13": { + "diff_carry_yd": null, + "diff_total_yd": null, + "diff_apex_ft": null, + "status": "pass", + "error_pattern": null + }, + "s4_shot_9i_14": { + "diff_carry_yd": -2.1, + "diff_total_yd": -0.4, + "diff_apex_ft": -7.0, + "status": "pass", + "error_pattern": null + }, + "s4_shot_9i_15": { + "diff_carry_yd": -2.9, + "diff_total_yd": 10.8, + "diff_apex_ft": -3.7, + "status": "severe", + "error_pattern": "ROLLOUT_TOO_LONG" + }, + "s4_shot_9i_17": { + "diff_carry_yd": -0.2, + "diff_total_yd": -14.8, + "diff_apex_ft": -0.1, + "status": "severe", + "error_pattern": "ROLLOUT_TOO_SHORT" + }, + "s4_shot_9i_18": { + "diff_carry_yd": -2.8, + "diff_total_yd": 8.7, + "diff_apex_ft": -3.5, + "status": "moderate", + "error_pattern": "ROLLOUT_TOO_LONG" + }, + "s4_shot_lw_38": { + "diff_carry_yd": -1.9, + "diff_total_yd": 7.8, + "diff_apex_ft": -1.6, + "status": "moderate", + "error_pattern": "ROLLOUT_TOO_LONG" + }, + "s4_shot_pw_1": { + "diff_carry_yd": -2.6, + "diff_total_yd": -8.4, + "diff_apex_ft": 2.1, + "status": "moderate", + "error_pattern": "ROLLOUT_TOO_SHORT" + }, + "s4_shot_pw_10": { + "diff_carry_yd": -1.1, + "diff_total_yd": 1.9, + "diff_apex_ft": -3.4, + "status": "pass", + "error_pattern": null + }, + "s4_shot_pw_11": { + "diff_carry_yd": -1.1, + "diff_total_yd": 1.5, + "diff_apex_ft": -3.0, + "status": "pass", + "error_pattern": null + }, + "s4_shot_pw_2": { + "diff_carry_yd": 0.4, + "diff_total_yd": 12.2, + "diff_apex_ft": 0.4, + "status": "severe", + "error_pattern": "ROLLOUT_TOO_LONG" + }, + "s4_shot_pw_3": { + "diff_carry_yd": -3.8, + "diff_total_yd": 8.1, + "diff_apex_ft": -2.3, + "status": "moderate", + "error_pattern": "CARRY_TOO_SHORT" + }, + "s4_shot_pw_47": { + "diff_carry_yd": -0.6, + "diff_total_yd": 9.5, + "diff_apex_ft": 0.0, + "status": "moderate", + "error_pattern": "ROLLOUT_TOO_LONG" + }, + "s4_shot_pw_48": { + "diff_carry_yd": -0.7, + "diff_total_yd": 8.4, + "diff_apex_ft": 0.0, + "status": "moderate", + "error_pattern": "ROLLOUT_TOO_LONG" + }, + "s4_shot_pw_49": { + "diff_carry_yd": -4.2, + "diff_total_yd": 4.6, + "diff_apex_ft": -1.1, + "status": "moderate", + "error_pattern": "CARRY_TOO_SHORT" + }, + "s4_shot_pw_6": { + "diff_carry_yd": -2.9, + "diff_total_yd": -1.9, + "diff_apex_ft": -1.0, + "status": "pass", + "error_pattern": null + }, + "s4_shot_pw_7": { + "diff_carry_yd": -0.5, + "diff_total_yd": 0.7, + "diff_apex_ft": -2.9, + "status": "pass", + "error_pattern": null + }, + "s4_shot_pw_9": { + "diff_carry_yd": null, + "diff_total_yd": null, + "diff_apex_ft": null, + "status": "pass", + "error_pattern": null + }, + "topped_test_shot": { + "diff_carry_yd": -0.7, + "diff_total_yd": 13.8, + "diff_apex_ft": -0.1, + "status": "severe", + "error_pattern": "ROLLOUT_TOO_LONG" + }, + "wedge_shot_1": { + "diff_carry_yd": -1.5, + "diff_total_yd": 6.2, + "diff_apex_ft": -0.8, + "status": "moderate", + "error_pattern": "ROLLOUT_TOO_LONG" + }, + "wedge_shot_2": { + "diff_carry_yd": -1.5, + "diff_total_yd": 9.6, + "diff_apex_ft": -1.1, + "status": "moderate", + "error_pattern": "ROLLOUT_TOO_LONG" + }, + "wedge_test_shot": { + "diff_carry_yd": -5.3, + "diff_total_yd": 3.2, + "diff_apex_ft": -3.2, + "status": "moderate", + "error_pattern": "CARRY_TOO_SHORT" + }, + "wedge_test_shot2": { + "diff_carry_yd": 1.1, + "diff_total_yd": 12.4, + "diff_apex_ft": 0.8, + "status": "severe", + "error_pattern": "ROLLOUT_TOO_LONG" + }, + "wood1": { + "diff_carry_yd": 11.9, + "diff_total_yd": -4.0, + "diff_apex_ft": 3.1, + "status": "severe", + "error_pattern": "CARRY_TOO_LONG" + }, + "wood2": { + "diff_carry_yd": -0.4, + "diff_total_yd": -4.8, + "diff_apex_ft": -3.3, + "status": "pass", + "error_pattern": null + }, + "wood_low_test_shot": { + "diff_carry_yd": 1.3, + "diff_total_yd": 22.0, + "diff_apex_ft": 0.3, + "status": "severe", + "error_pattern": "ROLLOUT_TOO_LONG" + } + }, + "regressions": [ + { + "shot": "s3_shot_9i_2", + "was": "pass", + "now": "moderate", + "prev_total_diff": -3.3, + "curr_total_diff": -5.5 + }, + { + "shot": "wedge_shot_1", + "was": "pass", + "now": "moderate", + "prev_total_diff": 4.6, + "curr_total_diff": 6.2 + } + ], + "conflicts": [ + "Bounce.FlightTangentialRetentionBase", + "Bounce.FlightSpinFactorMin", + "Bounce.FlightSpinFactorDivisor", + "Rollout.MidSpinMultiplierMax", + "Rollout.HighSpinMultiplierMax", + "Rollout.FrictionBlendSpeed", + "KineticFrictionMultiplier", + "Bounce.RolloutHighSpinRetention", + "Bounce.CorBaseA", + "Rollout.LowSpinMultiplierMax", + "Rollout.LowSpinThreshold", + "RollingFrictionMultiplier", + "Bounce.RolloutLowSpinRetention", + "Rollout.ChipVelocityScaleMin", + "Rollout.ChipVelocityScaleMax", + "Flight.ClMaxBase", + "Flight.CdMin", + "DragScaleMultiplier", + "LiftScaleMultiplier", + "Flight.HighLaunchDragBoostMax" + ] +} diff --git a/assets/data/calibration/history/iteration_062.json b/assets/data/calibration/history/iteration_062.json new file mode 100644 index 0000000..4305698 --- /dev/null +++ b/assets/data/calibration/history/iteration_062.json @@ -0,0 +1,1171 @@ +{ + "iteration": 62, + "timestamp": "2026-03-14T03:02:01.183471", + "profile_overrides": {}, + "summary": { + "pass": 17, + "moderate": 45, + "severe": 67, + "no_reference": 7 + }, + "per_shot": { + "5iron": { + "diff_carry_yd": 0.4, + "diff_total_yd": 1.3, + "diff_apex_ft": -8.1, + "status": "pass", + "error_pattern": null + }, + "approach_mid_iron_test_shot": { + "diff_carry_yd": -0.5, + "diff_total_yd": 5.2, + "diff_apex_ft": -7.3, + "status": "moderate", + "error_pattern": "ROLLOUT_TOO_LONG" + }, + "bump_and_run": { + "diff_carry_yd": -9.1, + "diff_total_yd": -27.5, + "diff_apex_ft": -2.1, + "status": "severe", + "error_pattern": "CARRY_AND_ROLLOUT_SHORT" + }, + "bump_and_run_slow": { + "diff_carry_yd": null, + "diff_total_yd": null, + "diff_apex_ft": null, + "status": "pass", + "error_pattern": null + }, + "bump_test_shot": { + "diff_carry_yd": -2.1, + "diff_total_yd": 12.8, + "diff_apex_ft": -0.1, + "status": "severe", + "error_pattern": "ROLLOUT_TOO_LONG" + }, + "checked_test_shot": { + "diff_carry_yd": 0.9, + "diff_total_yd": 2.9, + "diff_apex_ft": -7.6, + "status": "pass", + "error_pattern": null + }, + "chip_test_shot": { + "diff_carry_yd": null, + "diff_total_yd": null, + "diff_apex_ft": null, + "status": "pass", + "error_pattern": null + }, + "drive_test_shot": { + "diff_carry_yd": 1.0, + "diff_total_yd": 0.8, + "diff_apex_ft": -0.6, + "status": "pass", + "error_pattern": null + }, + "driver1": { + "diff_carry_yd": 0.3, + "diff_total_yd": -25.7, + "diff_apex_ft": -0.7, + "status": "severe", + "error_pattern": "ROLLOUT_TOO_SHORT" + }, + "driver2": { + "diff_carry_yd": 6.6, + "diff_total_yd": 4.5, + "diff_apex_ft": -5.3, + "status": "moderate", + "error_pattern": "CARRY_TOO_LONG" + }, + "driver3": { + "diff_carry_yd": 3.2, + "diff_total_yd": 6.7, + "diff_apex_ft": -9.0, + "status": "moderate", + "error_pattern": "CARRY_AND_ROLLOUT_LONG" + }, + "driver4": { + "diff_carry_yd": 3.7, + "diff_total_yd": 6.7, + "diff_apex_ft": -7.7, + "status": "moderate", + "error_pattern": "CARRY_AND_ROLLOUT_LONG" + }, + "flop_test_shot": { + "diff_carry_yd": 1.3, + "diff_total_yd": 3.2, + "diff_apex_ft": -7.3, + "status": "pass", + "error_pattern": null + }, + "p_wedge_shot_1": { + "diff_carry_yd": -4.4, + "diff_total_yd": 1.9, + "diff_apex_ft": -5.7, + "status": "moderate", + "error_pattern": "CARRY_TOO_SHORT" + }, + "s2_shot_10": { + "diff_carry_yd": 7.0, + "diff_total_yd": 13.8, + "diff_apex_ft": -5.1, + "status": "severe", + "error_pattern": "CARRY_AND_ROLLOUT_LONG" + }, + "s2_shot_11": { + "diff_carry_yd": 8.1, + "diff_total_yd": 12.4, + "diff_apex_ft": -0.3, + "status": "severe", + "error_pattern": "CARRY_AND_ROLLOUT_LONG" + }, + "s2_shot_12": { + "diff_carry_yd": 13.1, + "diff_total_yd": 18.4, + "diff_apex_ft": -2.8, + "status": "severe", + "error_pattern": "CARRY_AND_ROLLOUT_LONG" + }, + "s2_shot_13": { + "diff_carry_yd": 1.1, + "diff_total_yd": 2.7, + "diff_apex_ft": -7.3, + "status": "pass", + "error_pattern": null + }, + "s2_shot_14": { + "diff_carry_yd": 0.2, + "diff_total_yd": 1.7, + "diff_apex_ft": -6.2, + "status": "pass", + "error_pattern": null + }, + "s2_shot_15": { + "diff_carry_yd": -5.6, + "diff_total_yd": -17.5, + "diff_apex_ft": -4.7, + "status": "severe", + "error_pattern": "CARRY_AND_ROLLOUT_SHORT" + }, + "s2_shot_16": { + "diff_carry_yd": -2.0, + "diff_total_yd": -1.0, + "diff_apex_ft": -7.4, + "status": "pass", + "error_pattern": null + }, + "s2_shot_17": { + "diff_carry_yd": 5.3, + "diff_total_yd": 6.9, + "diff_apex_ft": -6.5, + "status": "moderate", + "error_pattern": "CARRY_AND_ROLLOUT_LONG" + }, + "s2_shot_18": { + "diff_carry_yd": 3.8, + "diff_total_yd": 12.8, + "diff_apex_ft": -8.6, + "status": "severe", + "error_pattern": "CARRY_AND_ROLLOUT_LONG" + }, + "s2_shot_19": { + "diff_carry_yd": 3.3, + "diff_total_yd": -4.4, + "diff_apex_ft": -0.9, + "status": "moderate", + "error_pattern": "CARRY_TOO_LONG" + }, + "s2_shot_20": { + "diff_carry_yd": 4.7, + "diff_total_yd": 6.6, + "diff_apex_ft": -6.7, + "status": "moderate", + "error_pattern": "CARRY_AND_ROLLOUT_LONG" + }, + "s2_shot_21": { + "diff_carry_yd": 5.8, + "diff_total_yd": 28.8, + "diff_apex_ft": 1.8, + "status": "severe", + "error_pattern": "CARRY_AND_ROLLOUT_LONG" + }, + "s2_shot_22": { + "diff_carry_yd": 5.1, + "diff_total_yd": 2.6, + "diff_apex_ft": -2.2, + "status": "moderate", + "error_pattern": "CARRY_TOO_LONG" + }, + "s2_shot_23": { + "diff_carry_yd": 3.5, + "diff_total_yd": -19.6, + "diff_apex_ft": -0.3, + "status": "severe", + "error_pattern": "CARRY_TOO_LONG" + }, + "s2_shot_24": { + "diff_carry_yd": 4.8, + "diff_total_yd": 3.0, + "diff_apex_ft": -2.6, + "status": "moderate", + "error_pattern": "CARRY_TOO_LONG" + }, + "s2_shot_26": { + "diff_carry_yd": 2.0, + "diff_total_yd": 11.1, + "diff_apex_ft": -9.0, + "status": "severe", + "error_pattern": "ROLLOUT_TOO_LONG" + }, + "s2_shot_27": { + "diff_carry_yd": 1.2, + "diff_total_yd": 5.6, + "diff_apex_ft": -6.8, + "status": "moderate", + "error_pattern": "ROLLOUT_TOO_LONG" + }, + "s2_shot_9": { + "diff_carry_yd": -7.8, + "diff_total_yd": -6.7, + "diff_apex_ft": -5.8, + "status": "severe", + "error_pattern": "CARRY_AND_ROLLOUT_SHORT" + }, + "s3_shot_3w_18": { + "diff_carry_yd": null, + "diff_total_yd": null, + "diff_apex_ft": null, + "status": "pass", + "error_pattern": null + }, + "s3_shot_3w_19": { + "diff_carry_yd": -0.1, + "diff_total_yd": 16.7, + "diff_apex_ft": 0.1, + "status": "severe", + "error_pattern": "ROLLOUT_TOO_LONG" + }, + "s3_shot_3w_21": { + "diff_carry_yd": 1.1, + "diff_total_yd": 16.6, + "diff_apex_ft": 0.3, + "status": "severe", + "error_pattern": "ROLLOUT_TOO_LONG" + }, + "s3_shot_3w_22": { + "diff_carry_yd": 2.8, + "diff_total_yd": 20.0, + "diff_apex_ft": 0.4, + "status": "severe", + "error_pattern": "ROLLOUT_TOO_LONG" + }, + "s3_shot_3w_23": { + "diff_carry_yd": 0.3, + "diff_total_yd": -23.2, + "diff_apex_ft": -1.5, + "status": "severe", + "error_pattern": "ROLLOUT_TOO_SHORT" + }, + "s3_shot_3w_24": { + "diff_carry_yd": 7.6, + "diff_total_yd": 29.3, + "diff_apex_ft": 1.8, + "status": "severe", + "error_pattern": "CARRY_AND_ROLLOUT_LONG" + }, + "s3_shot_5i_10": { + "diff_carry_yd": -8.3, + "diff_total_yd": -21.7, + "diff_apex_ft": -4.3, + "status": "severe", + "error_pattern": "CARRY_AND_ROLLOUT_SHORT" + }, + "s3_shot_5i_11": { + "diff_carry_yd": -6.4, + "diff_total_yd": -21.1, + "diff_apex_ft": -3.4, + "status": "severe", + "error_pattern": "CARRY_AND_ROLLOUT_SHORT" + }, + "s3_shot_5i_12": { + "diff_carry_yd": -6.7, + "diff_total_yd": 5.6, + "diff_apex_ft": -1.3, + "status": "moderate", + "error_pattern": "CARRY_TOO_SHORT" + }, + "s3_shot_5i_13": { + "diff_carry_yd": -7.5, + "diff_total_yd": 0.8, + "diff_apex_ft": -1.2, + "status": "severe", + "error_pattern": "CARRY_TOO_SHORT" + }, + "s3_shot_5i_15": { + "diff_carry_yd": -5.2, + "diff_total_yd": 14.2, + "diff_apex_ft": -1.3, + "status": "severe", + "error_pattern": "CARRY_TOO_SHORT" + }, + "s3_shot_5i_16": { + "diff_carry_yd": -8.1, + "diff_total_yd": 13.1, + "diff_apex_ft": -3.4, + "status": "severe", + "error_pattern": "CARRY_TOO_SHORT" + }, + "s3_shot_5i_17": { + "diff_carry_yd": -1.3, + "diff_total_yd": -0.1, + "diff_apex_ft": -0.2, + "status": "pass", + "error_pattern": null + }, + "s3_shot_6i_35": { + "diff_carry_yd": -7.3, + "diff_total_yd": -18.9, + "diff_apex_ft": -4.5, + "status": "severe", + "error_pattern": "CARRY_AND_ROLLOUT_SHORT" + }, + "s3_shot_6i_36": { + "diff_carry_yd": -7.4, + "diff_total_yd": 4.8, + "diff_apex_ft": -1.9, + "status": "severe", + "error_pattern": "CARRY_TOO_SHORT" + }, + "s3_shot_6i_37": { + "diff_carry_yd": -5.9, + "diff_total_yd": 10.3, + "diff_apex_ft": -1.4, + "status": "severe", + "error_pattern": "CARRY_TOO_SHORT" + }, + "s3_shot_6i_38": { + "diff_carry_yd": -8.1, + "diff_total_yd": -26.7, + "diff_apex_ft": -2.3, + "status": "severe", + "error_pattern": "CARRY_AND_ROLLOUT_SHORT" + }, + "s3_shot_6i_39": { + "diff_carry_yd": -2.6, + "diff_total_yd": 4.6, + "diff_apex_ft": -0.2, + "status": "pass", + "error_pattern": null + }, + "s3_shot_6i_40": { + "diff_carry_yd": -3.3, + "diff_total_yd": 6.0, + "diff_apex_ft": -0.2, + "status": "moderate", + "error_pattern": "CARRY_TOO_SHORT" + }, + "s3_shot_6i_41": { + "diff_carry_yd": -5.5, + "diff_total_yd": 12.4, + "diff_apex_ft": -1.2, + "status": "severe", + "error_pattern": "CARRY_TOO_SHORT" + }, + "s3_shot_6i_42": { + "diff_carry_yd": -8.5, + "diff_total_yd": -25.6, + "diff_apex_ft": -2.8, + "status": "severe", + "error_pattern": "CARRY_AND_ROLLOUT_SHORT" + }, + "s3_shot_6i_43": { + "diff_carry_yd": -6.6, + "diff_total_yd": -17.7, + "diff_apex_ft": -6.1, + "status": "severe", + "error_pattern": "CARRY_AND_ROLLOUT_SHORT" + }, + "s3_shot_6i_44": { + "diff_carry_yd": -1.2, + "diff_total_yd": -27.4, + "diff_apex_ft": -1.3, + "status": "severe", + "error_pattern": "ROLLOUT_TOO_SHORT" + }, + "s3_shot_6i_45": { + "diff_carry_yd": 3.2, + "diff_total_yd": 20.8, + "diff_apex_ft": 0.5, + "status": "severe", + "error_pattern": "CARRY_AND_ROLLOUT_LONG" + }, + "s3_shot_6i_46": { + "diff_carry_yd": 3.1, + "diff_total_yd": -4.9, + "diff_apex_ft": -2.2, + "status": "moderate", + "error_pattern": "CARRY_TOO_LONG" + }, + "s3_shot_6i_47": { + "diff_carry_yd": -4.3, + "diff_total_yd": -9.2, + "diff_apex_ft": -7.3, + "status": "moderate", + "error_pattern": "CARRY_AND_ROLLOUT_SHORT" + }, + "s3_shot_6i_48": { + "diff_carry_yd": -4.0, + "diff_total_yd": -7.8, + "diff_apex_ft": -7.2, + "status": "moderate", + "error_pattern": "CARRY_AND_ROLLOUT_SHORT" + }, + "s3_shot_6i_49": { + "diff_carry_yd": -3.4, + "diff_total_yd": 6.3, + "diff_apex_ft": -0.4, + "status": "moderate", + "error_pattern": "CARRY_TOO_SHORT" + }, + "s3_shot_6i_50": { + "diff_carry_yd": -9.4, + "diff_total_yd": -23.4, + "diff_apex_ft": -3.8, + "status": "severe", + "error_pattern": "CARRY_AND_ROLLOUT_SHORT" + }, + "s3_shot_7i_25": { + "diff_carry_yd": -7.3, + "diff_total_yd": -25.5, + "diff_apex_ft": -2.6, + "status": "severe", + "error_pattern": "CARRY_AND_ROLLOUT_SHORT" + }, + "s3_shot_7i_26": { + "diff_carry_yd": -5.8, + "diff_total_yd": 5.3, + "diff_apex_ft": -1.2, + "status": "moderate", + "error_pattern": "CARRY_TOO_SHORT" + }, + "s3_shot_7i_27": { + "diff_carry_yd": -6.2, + "diff_total_yd": -9.1, + "diff_apex_ft": -6.7, + "status": "moderate", + "error_pattern": "CARRY_AND_ROLLOUT_SHORT" + }, + "s3_shot_7i_28": { + "diff_carry_yd": -7.7, + "diff_total_yd": -12.9, + "diff_apex_ft": -5.8, + "status": "severe", + "error_pattern": "CARRY_AND_ROLLOUT_SHORT" + }, + "s3_shot_7i_29": { + "diff_carry_yd": -1.1, + "diff_total_yd": -8.6, + "diff_apex_ft": -5.0, + "status": "moderate", + "error_pattern": "ROLLOUT_TOO_SHORT" + }, + "s3_shot_7i_30": { + "diff_carry_yd": -7.5, + "diff_total_yd": -10.9, + "diff_apex_ft": -6.3, + "status": "severe", + "error_pattern": "CARRY_AND_ROLLOUT_SHORT" + }, + "s3_shot_7i_31": { + "diff_carry_yd": -4.7, + "diff_total_yd": -14.2, + "diff_apex_ft": -4.2, + "status": "severe", + "error_pattern": "CARRY_AND_ROLLOUT_SHORT" + }, + "s3_shot_7i_32": { + "diff_carry_yd": -7.4, + "diff_total_yd": -12.3, + "diff_apex_ft": -5.2, + "status": "severe", + "error_pattern": "CARRY_AND_ROLLOUT_SHORT" + }, + "s3_shot_7i_33": { + "diff_carry_yd": -8.0, + "diff_total_yd": -12.8, + "diff_apex_ft": -5.4, + "status": "severe", + "error_pattern": "CARRY_AND_ROLLOUT_SHORT" + }, + "s3_shot_7i_34": { + "diff_carry_yd": -3.0, + "diff_total_yd": -8.1, + "diff_apex_ft": -6.4, + "status": "moderate", + "error_pattern": "ROLLOUT_TOO_SHORT" + }, + "s3_shot_9i_1": { + "diff_carry_yd": -7.3, + "diff_total_yd": -20.5, + "diff_apex_ft": -3.8, + "status": "severe", + "error_pattern": "CARRY_AND_ROLLOUT_SHORT" + }, + "s3_shot_9i_2": { + "diff_carry_yd": -8.4, + "diff_total_yd": -10.1, + "diff_apex_ft": -3.7, + "status": "severe", + "error_pattern": "CARRY_AND_ROLLOUT_SHORT" + }, + "s3_shot_9i_3": { + "diff_carry_yd": -2.0, + "diff_total_yd": 0.2, + "diff_apex_ft": -6.7, + "status": "pass", + "error_pattern": null + }, + "s3_shot_9i_5": { + "diff_carry_yd": -2.7, + "diff_total_yd": -5.5, + "diff_apex_ft": -5.7, + "status": "moderate", + "error_pattern": "ROLLOUT_TOO_SHORT" + }, + "s3_shot_9i_7": { + "diff_carry_yd": 8.6, + "diff_total_yd": 9.2, + "diff_apex_ft": -2.3, + "status": "severe", + "error_pattern": "CARRY_AND_ROLLOUT_LONG" + }, + "s3_shot_9i_8": { + "diff_carry_yd": -3.3, + "diff_total_yd": 1.5, + "diff_apex_ft": -7.4, + "status": "moderate", + "error_pattern": "CARRY_TOO_SHORT" + }, + "s3_shot_9i_9": { + "diff_carry_yd": -1.6, + "diff_total_yd": 2.3, + "diff_apex_ft": -6.9, + "status": "pass", + "error_pattern": null + }, + "s3_shot_driver_51": { + "diff_carry_yd": 11.9, + "diff_total_yd": 27.7, + "diff_apex_ft": -8.5, + "status": "severe", + "error_pattern": "CARRY_AND_ROLLOUT_LONG" + }, + "s3_shot_driver_52": { + "diff_carry_yd": 23.1, + "diff_total_yd": 40.7, + "diff_apex_ft": 6.8, + "status": "severe", + "error_pattern": "CARRY_AND_ROLLOUT_LONG" + }, + "s3_shot_driver_53": { + "diff_carry_yd": 22.4, + "diff_total_yd": 35.3, + "diff_apex_ft": 5.2, + "status": "severe", + "error_pattern": "CARRY_AND_ROLLOUT_LONG" + }, + "s3_shot_driver_54": { + "diff_carry_yd": 4.1, + "diff_total_yd": -1.8, + "diff_apex_ft": -3.6, + "status": "moderate", + "error_pattern": "CARRY_TOO_LONG" + }, + "s3_shot_driver_55": { + "diff_carry_yd": 2.5, + "diff_total_yd": 22.6, + "diff_apex_ft": 0.4, + "status": "severe", + "error_pattern": "ROLLOUT_TOO_LONG" + }, + "s3_shot_driver_56": { + "diff_carry_yd": 3.1, + "diff_total_yd": 10.4, + "diff_apex_ft": -7.9, + "status": "severe", + "error_pattern": "CARRY_AND_ROLLOUT_LONG" + }, + "s3_shot_driver_57": { + "diff_carry_yd": -5.1, + "diff_total_yd": -19.7, + "diff_apex_ft": -3.5, + "status": "severe", + "error_pattern": "CARRY_AND_ROLLOUT_SHORT" + }, + "s3_shot_driver_58": { + "diff_carry_yd": 18.4, + "diff_total_yd": 35.3, + "diff_apex_ft": -6.4, + "status": "severe", + "error_pattern": "CARRY_AND_ROLLOUT_LONG" + }, + "s3_shot_driver_59": { + "diff_carry_yd": 5.8, + "diff_total_yd": 25.8, + "diff_apex_ft": 2.3, + "status": "severe", + "error_pattern": "CARRY_AND_ROLLOUT_LONG" + }, + "s3_shot_driver_60": { + "diff_carry_yd": -1.9, + "diff_total_yd": -16.9, + "diff_apex_ft": -3.4, + "status": "severe", + "error_pattern": "ROLLOUT_TOO_SHORT" + }, + "s3_shot_pw_64": { + "diff_carry_yd": -1.3, + "diff_total_yd": 13.7, + "diff_apex_ft": -2.9, + "status": "severe", + "error_pattern": "ROLLOUT_TOO_LONG" + }, + "s3_shot_pw_65": { + "diff_carry_yd": 8.9, + "diff_total_yd": 14.4, + "diff_apex_ft": -0.4, + "status": "severe", + "error_pattern": "CARRY_AND_ROLLOUT_LONG" + }, + "s3_shot_pw_66": { + "diff_carry_yd": 5.3, + "diff_total_yd": 8.0, + "diff_apex_ft": -1.1, + "status": "moderate", + "error_pattern": "CARRY_AND_ROLLOUT_LONG" + }, + "s3_shot_pw_67": { + "diff_carry_yd": 6.6, + "diff_total_yd": 12.6, + "diff_apex_ft": -2.0, + "status": "severe", + "error_pattern": "CARRY_AND_ROLLOUT_LONG" + }, + "s3_shot_pw_68": { + "diff_carry_yd": 7.4, + "diff_total_yd": 10.2, + "diff_apex_ft": -5.3, + "status": "severe", + "error_pattern": "CARRY_AND_ROLLOUT_LONG" + }, + "s3_shot_pw_69": { + "diff_carry_yd": 0.9, + "diff_total_yd": -0.3, + "diff_apex_ft": -3.0, + "status": "pass", + "error_pattern": null + }, + "s4_shot_3w_31": { + "diff_carry_yd": -0.8, + "diff_total_yd": -4.6, + "diff_apex_ft": -5.2, + "status": "pass", + "error_pattern": null + }, + "s4_shot_3w_32": { + "diff_carry_yd": 3.4, + "diff_total_yd": 8.8, + "diff_apex_ft": -9.0, + "status": "moderate", + "error_pattern": "CARRY_AND_ROLLOUT_LONG" + }, + "s4_shot_3w_33": { + "diff_carry_yd": 11.9, + "diff_total_yd": 16.1, + "diff_apex_ft": -7.6, + "status": "severe", + "error_pattern": "CARRY_AND_ROLLOUT_LONG" + }, + "s4_shot_3w_34": { + "diff_carry_yd": 3.1, + "diff_total_yd": -0.1, + "diff_apex_ft": -3.9, + "status": "moderate", + "error_pattern": "CARRY_TOO_LONG" + }, + "s4_shot_3w_35": { + "diff_carry_yd": 3.7, + "diff_total_yd": 1.0, + "diff_apex_ft": -4.9, + "status": "moderate", + "error_pattern": "CARRY_TOO_LONG" + }, + "s4_shot_5i_25": { + "diff_carry_yd": -3.8, + "diff_total_yd": -8.2, + "diff_apex_ft": -6.4, + "status": "moderate", + "error_pattern": "CARRY_AND_ROLLOUT_SHORT" + }, + "s4_shot_5i_26": { + "diff_carry_yd": -1.7, + "diff_total_yd": -4.2, + "diff_apex_ft": -6.7, + "status": "pass", + "error_pattern": null + }, + "s4_shot_5i_27": { + "diff_carry_yd": -2.2, + "diff_total_yd": 10.7, + "diff_apex_ft": -0.3, + "status": "severe", + "error_pattern": "ROLLOUT_TOO_LONG" + }, + "s4_shot_5i_28": { + "diff_carry_yd": -8.8, + "diff_total_yd": -19.4, + "diff_apex_ft": -4.8, + "status": "severe", + "error_pattern": "CARRY_AND_ROLLOUT_SHORT" + }, + "s4_shot_5i_29": { + "diff_carry_yd": -6.6, + "diff_total_yd": 2.4, + "diff_apex_ft": -0.7, + "status": "moderate", + "error_pattern": "CARRY_TOO_SHORT" + }, + "s4_shot_5i_30": { + "diff_carry_yd": 5.2, + "diff_total_yd": 4.5, + "diff_apex_ft": -7.2, + "status": "moderate", + "error_pattern": "CARRY_TOO_LONG" + }, + "s4_shot_6i_19": { + "diff_carry_yd": -7.3, + "diff_total_yd": -19.2, + "diff_apex_ft": -4.7, + "status": "severe", + "error_pattern": "CARRY_AND_ROLLOUT_SHORT" + }, + "s4_shot_6i_20": { + "diff_carry_yd": -9.0, + "diff_total_yd": 3.3, + "diff_apex_ft": -2.2, + "status": "severe", + "error_pattern": "CARRY_TOO_SHORT" + }, + "s4_shot_6i_21": { + "diff_carry_yd": 1.1, + "diff_total_yd": -1.2, + "diff_apex_ft": -6.9, + "status": "pass", + "error_pattern": null + }, + "s4_shot_6i_22": { + "diff_carry_yd": -6.1, + "diff_total_yd": 1.4, + "diff_apex_ft": -0.9, + "status": "moderate", + "error_pattern": "CARRY_TOO_SHORT" + }, + "s4_shot_6i_23": { + "diff_carry_yd": null, + "diff_total_yd": null, + "diff_apex_ft": null, + "status": "pass", + "error_pattern": null + }, + "s4_shot_6i_24": { + "diff_carry_yd": null, + "diff_total_yd": null, + "diff_apex_ft": null, + "status": "pass", + "error_pattern": null + }, + "s4_shot_9i_13": { + "diff_carry_yd": null, + "diff_total_yd": null, + "diff_apex_ft": null, + "status": "pass", + "error_pattern": null + }, + "s4_shot_9i_14": { + "diff_carry_yd": 0.5, + "diff_total_yd": 2.4, + "diff_apex_ft": -6.4, + "status": "pass", + "error_pattern": null + }, + "s4_shot_9i_15": { + "diff_carry_yd": 5.5, + "diff_total_yd": 5.1, + "diff_apex_ft": -1.4, + "status": "moderate", + "error_pattern": "CARRY_AND_ROLLOUT_LONG" + }, + "s4_shot_9i_17": { + "diff_carry_yd": -6.0, + "diff_total_yd": -20.8, + "diff_apex_ft": -2.8, + "status": "severe", + "error_pattern": "CARRY_AND_ROLLOUT_SHORT" + }, + "s4_shot_9i_18": { + "diff_carry_yd": 3.8, + "diff_total_yd": 3.0, + "diff_apex_ft": -1.8, + "status": "moderate", + "error_pattern": "CARRY_TOO_LONG" + }, + "s4_shot_lw_38": { + "diff_carry_yd": -3.7, + "diff_total_yd": 3.5, + "diff_apex_ft": -2.9, + "status": "moderate", + "error_pattern": "CARRY_TOO_SHORT" + }, + "s4_shot_pw_1": { + "diff_carry_yd": -10.3, + "diff_total_yd": -17.8, + "diff_apex_ft": -3.3, + "status": "severe", + "error_pattern": "CARRY_AND_ROLLOUT_SHORT" + }, + "s4_shot_pw_10": { + "diff_carry_yd": 2.5, + "diff_total_yd": 5.4, + "diff_apex_ft": -2.9, + "status": "moderate", + "error_pattern": "ROLLOUT_TOO_LONG" + }, + "s4_shot_pw_11": { + "diff_carry_yd": 4.2, + "diff_total_yd": 6.8, + "diff_apex_ft": -1.8, + "status": "moderate", + "error_pattern": "CARRY_AND_ROLLOUT_LONG" + }, + "s4_shot_pw_2": { + "diff_carry_yd": -3.6, + "diff_total_yd": 6.1, + "diff_apex_ft": -1.3, + "status": "moderate", + "error_pattern": "CARRY_TOO_SHORT" + }, + "s4_shot_pw_3": { + "diff_carry_yd": -0.3, + "diff_total_yd": 10.7, + "diff_apex_ft": -1.7, + "status": "severe", + "error_pattern": "ROLLOUT_TOO_LONG" + }, + "s4_shot_pw_47": { + "diff_carry_yd": -3.0, + "diff_total_yd": 5.6, + "diff_apex_ft": -1.0, + "status": "moderate", + "error_pattern": "ROLLOUT_TOO_LONG" + }, + "s4_shot_pw_48": { + "diff_carry_yd": -2.5, + "diff_total_yd": 5.6, + "diff_apex_ft": -0.9, + "status": "moderate", + "error_pattern": "ROLLOUT_TOO_LONG" + }, + "s4_shot_pw_49": { + "diff_carry_yd": -5.8, + "diff_total_yd": 5.0, + "diff_apex_ft": -1.8, + "status": "moderate", + "error_pattern": "CARRY_TOO_SHORT" + }, + "s4_shot_pw_6": { + "diff_carry_yd": -8.0, + "diff_total_yd": 4.5, + "diff_apex_ft": -3.6, + "status": "severe", + "error_pattern": "CARRY_TOO_SHORT" + }, + "s4_shot_pw_7": { + "diff_carry_yd": 5.6, + "diff_total_yd": 6.8, + "diff_apex_ft": -1.5, + "status": "moderate", + "error_pattern": "CARRY_AND_ROLLOUT_LONG" + }, + "s4_shot_pw_9": { + "diff_carry_yd": null, + "diff_total_yd": null, + "diff_apex_ft": null, + "status": "pass", + "error_pattern": null + }, + "topped_test_shot": { + "diff_carry_yd": -0.9, + "diff_total_yd": 13.8, + "diff_apex_ft": -0.1, + "status": "severe", + "error_pattern": "ROLLOUT_TOO_LONG" + }, + "wedge_shot_1": { + "diff_carry_yd": -2.8, + "diff_total_yd": 4.3, + "diff_apex_ft": -1.7, + "status": "pass", + "error_pattern": null + }, + "wedge_shot_2": { + "diff_carry_yd": -3.3, + "diff_total_yd": 6.9, + "diff_apex_ft": -2.7, + "status": "moderate", + "error_pattern": "CARRY_TOO_SHORT" + }, + "wedge_test_shot": { + "diff_carry_yd": 0.6, + "diff_total_yd": 11.5, + "diff_apex_ft": -1.7, + "status": "severe", + "error_pattern": "ROLLOUT_TOO_LONG" + }, + "wedge_test_shot2": { + "diff_carry_yd": -2.2, + "diff_total_yd": 7.7, + "diff_apex_ft": -1.1, + "status": "moderate", + "error_pattern": "ROLLOUT_TOO_LONG" + }, + "wood1": { + "diff_carry_yd": 2.4, + "diff_total_yd": -14.3, + "diff_apex_ft": -3.3, + "status": "severe", + "error_pattern": "ROLLOUT_TOO_SHORT" + }, + "wood2": { + "diff_carry_yd": 4.0, + "diff_total_yd": -0.5, + "diff_apex_ft": -2.3, + "status": "moderate", + "error_pattern": "CARRY_TOO_LONG" + }, + "wood_low_test_shot": { + "diff_carry_yd": 1.8, + "diff_total_yd": 22.9, + "diff_apex_ft": 0.4, + "status": "severe", + "error_pattern": "ROLLOUT_TOO_LONG" + } + }, + "regressions": [ + { + "shot": "driver2", + "was": "pass", + "now": "moderate", + "prev_total_diff": 2.9, + "curr_total_diff": 4.5 + }, + { + "shot": "s2_shot_11", + "was": "pass", + "now": "severe", + "prev_total_diff": 2.8, + "curr_total_diff": 12.4 + }, + { + "shot": "s2_shot_17", + "was": "pass", + "now": "moderate", + "prev_total_diff": 4.7, + "curr_total_diff": 6.9 + }, + { + "shot": "s2_shot_22", + "was": "pass", + "now": "moderate", + "prev_total_diff": -2.4, + "curr_total_diff": 2.6 + }, + { + "shot": "s2_shot_24", + "was": "pass", + "now": "moderate", + "prev_total_diff": -1.5, + "curr_total_diff": 3.0 + }, + { + "shot": "s3_shot_7i_27", + "was": "pass", + "now": "moderate", + "prev_total_diff": 4.7, + "curr_total_diff": -9.1 + }, + { + "shot": "s3_shot_7i_28", + "was": "pass", + "now": "severe", + "prev_total_diff": 1.5, + "curr_total_diff": -12.9 + }, + { + "shot": "s3_shot_7i_30", + "was": "pass", + "now": "severe", + "prev_total_diff": 1.0, + "curr_total_diff": -10.9 + }, + { + "shot": "s3_shot_7i_32", + "was": "pass", + "now": "severe", + "prev_total_diff": -2.8, + "curr_total_diff": -12.3 + }, + { + "shot": "s3_shot_7i_33", + "was": "pass", + "now": "severe", + "prev_total_diff": -1.9, + "curr_total_diff": -12.8 + }, + { + "shot": "s3_shot_9i_5", + "was": "pass", + "now": "moderate", + "prev_total_diff": 0.1, + "curr_total_diff": -5.5 + }, + { + "shot": "s3_shot_9i_7", + "was": "pass", + "now": "severe", + "prev_total_diff": 1.1, + "curr_total_diff": 9.2 + }, + { + "shot": "s3_shot_9i_8", + "was": "pass", + "now": "moderate", + "prev_total_diff": 4.7, + "curr_total_diff": 1.5 + }, + { + "shot": "s3_shot_driver_54", + "was": "pass", + "now": "moderate", + "prev_total_diff": -4.9, + "curr_total_diff": -1.8 + }, + { + "shot": "s3_shot_pw_64", + "was": "pass", + "now": "severe", + "prev_total_diff": 4.9, + "curr_total_diff": 13.7 + }, + { + "shot": "s3_shot_pw_66", + "was": "pass", + "now": "moderate", + "prev_total_diff": 0.9, + "curr_total_diff": 8.0 + }, + { + "shot": "s3_shot_pw_68", + "was": "pass", + "now": "severe", + "prev_total_diff": 3.9, + "curr_total_diff": 10.2 + }, + { + "shot": "s4_shot_3w_32", + "was": "pass", + "now": "moderate", + "prev_total_diff": 4.4, + "curr_total_diff": 8.8 + }, + { + "shot": "s4_shot_3w_34", + "was": "pass", + "now": "moderate", + "prev_total_diff": -2.0, + "curr_total_diff": -0.1 + }, + { + "shot": "s4_shot_3w_35", + "was": "pass", + "now": "moderate", + "prev_total_diff": -2.7, + "curr_total_diff": 1.0 + }, + { + "shot": "s4_shot_5i_30", + "was": "pass", + "now": "moderate", + "prev_total_diff": 1.6, + "curr_total_diff": 4.5 + }, + { + "shot": "s4_shot_pw_10", + "was": "pass", + "now": "moderate", + "prev_total_diff": 1.9, + "curr_total_diff": 5.4 + }, + { + "shot": "s4_shot_pw_11", + "was": "pass", + "now": "moderate", + "prev_total_diff": 1.5, + "curr_total_diff": 6.8 + }, + { + "shot": "s4_shot_pw_6", + "was": "pass", + "now": "severe", + "prev_total_diff": -1.9, + "curr_total_diff": 4.5 + }, + { + "shot": "s4_shot_pw_7", + "was": "pass", + "now": "moderate", + "prev_total_diff": 0.7, + "curr_total_diff": 6.8 + }, + { + "shot": "wood2", + "was": "pass", + "now": "moderate", + "prev_total_diff": -4.8, + "curr_total_diff": -0.5 + } + ], + "conflicts": [ + "Bounce.FlightTangentialRetentionBase", + "Bounce.FlightSpinFactorMin", + "Bounce.FlightSpinFactorDivisor", + "Rollout.MidSpinMultiplierMax", + "Rollout.HighSpinMultiplierMax", + "Rollout.FrictionBlendSpeed", + "KineticFrictionMultiplier", + "Bounce.RolloutHighSpinRetention", + "Bounce.CorBaseA", + "Rollout.LowSpinMultiplierMax", + "Rollout.LowSpinThreshold", + "RollingFrictionMultiplier", + "Bounce.RolloutLowSpinRetention", + "Flight.ClMaxBase", + "Flight.CdMin", + "DragScaleMultiplier", + "LiftScaleMultiplier", + "Flight.HighLaunchDragBoostMax", + "Rollout.ChipVelocityScaleMin", + "Rollout.ChipVelocityScaleMax" + ] +} diff --git a/assets/data/calibration/history/iteration_063.json b/assets/data/calibration/history/iteration_063.json new file mode 100644 index 0000000..6e55ab4 --- /dev/null +++ b/assets/data/calibration/history/iteration_063.json @@ -0,0 +1,1031 @@ +{ + "iteration": 63, + "timestamp": "2026-03-14T03:05:57.055822", + "profile_overrides": {}, + "summary": { + "pass": 37, + "moderate": 35, + "severe": 57, + "no_reference": 7 + }, + "per_shot": { + "5iron": { + "diff_carry_yd": 4.8, + "diff_total_yd": 11.3, + "diff_apex_ft": 4.6, + "status": "severe", + "error_pattern": "CARRY_AND_ROLLOUT_LONG" + }, + "approach_mid_iron_test_shot": { + "diff_carry_yd": -0.6, + "diff_total_yd": 7.3, + "diff_apex_ft": -5.0, + "status": "moderate", + "error_pattern": "ROLLOUT_TOO_LONG" + }, + "bump_and_run": { + "diff_carry_yd": -6.1, + "diff_total_yd": -24.6, + "diff_apex_ft": -1.5, + "status": "severe", + "error_pattern": "CARRY_AND_ROLLOUT_SHORT" + }, + "bump_and_run_slow": { + "diff_carry_yd": null, + "diff_total_yd": null, + "diff_apex_ft": null, + "status": "pass", + "error_pattern": null + }, + "bump_test_shot": { + "diff_carry_yd": -2.1, + "diff_total_yd": 12.7, + "diff_apex_ft": -0.1, + "status": "severe", + "error_pattern": "ROLLOUT_TOO_LONG" + }, + "checked_test_shot": { + "diff_carry_yd": -2.1, + "diff_total_yd": -0.5, + "diff_apex_ft": -9.6, + "status": "pass", + "error_pattern": null + }, + "chip_test_shot": { + "diff_carry_yd": null, + "diff_total_yd": null, + "diff_apex_ft": null, + "status": "pass", + "error_pattern": null + }, + "drive_test_shot": { + "diff_carry_yd": -6.1, + "diff_total_yd": -5.9, + "diff_apex_ft": -2.8, + "status": "moderate", + "error_pattern": "CARRY_AND_ROLLOUT_SHORT" + }, + "driver1": { + "diff_carry_yd": -0.3, + "diff_total_yd": -26.3, + "diff_apex_ft": -0.8, + "status": "severe", + "error_pattern": "ROLLOUT_TOO_SHORT" + }, + "driver2": { + "diff_carry_yd": 2.8, + "diff_total_yd": 2.9, + "diff_apex_ft": -4.3, + "status": "pass", + "error_pattern": null + }, + "driver3": { + "diff_carry_yd": 0.9, + "diff_total_yd": 15.9, + "diff_apex_ft": 17.6, + "status": "severe", + "error_pattern": "ROLLOUT_TOO_LONG" + }, + "driver4": { + "diff_carry_yd": 1.3, + "diff_total_yd": 9.3, + "diff_apex_ft": 2.4, + "status": "moderate", + "error_pattern": "ROLLOUT_TOO_LONG" + }, + "flop_test_shot": { + "diff_carry_yd": -0.2, + "diff_total_yd": 1.6, + "diff_apex_ft": -8.5, + "status": "pass", + "error_pattern": null + }, + "p_wedge_shot_1": { + "diff_carry_yd": 3.9, + "diff_total_yd": 12.3, + "diff_apex_ft": -0.2, + "status": "severe", + "error_pattern": "CARRY_AND_ROLLOUT_LONG" + }, + "s2_shot_10": { + "diff_carry_yd": 3.4, + "diff_total_yd": 10.2, + "diff_apex_ft": -6.0, + "status": "severe", + "error_pattern": "CARRY_AND_ROLLOUT_LONG" + }, + "s2_shot_11": { + "diff_carry_yd": -1.1, + "diff_total_yd": 2.8, + "diff_apex_ft": -3.6, + "status": "pass", + "error_pattern": null + }, + "s2_shot_12": { + "diff_carry_yd": 2.0, + "diff_total_yd": 6.0, + "diff_apex_ft": -6.2, + "status": "moderate", + "error_pattern": "ROLLOUT_TOO_LONG" + }, + "s2_shot_13": { + "diff_carry_yd": -1.1, + "diff_total_yd": 0.7, + "diff_apex_ft": -6.9, + "status": "pass", + "error_pattern": null + }, + "s2_shot_14": { + "diff_carry_yd": -2.3, + "diff_total_yd": -0.4, + "diff_apex_ft": -6.6, + "status": "pass", + "error_pattern": null + }, + "s2_shot_15": { + "diff_carry_yd": -1.0, + "diff_total_yd": -12.7, + "diff_apex_ft": -2.0, + "status": "severe", + "error_pattern": "ROLLOUT_TOO_SHORT" + }, + "s2_shot_16": { + "diff_carry_yd": -0.3, + "diff_total_yd": 2.2, + "diff_apex_ft": -3.5, + "status": "pass", + "error_pattern": null + }, + "s2_shot_17": { + "diff_carry_yd": 0.9, + "diff_total_yd": 4.7, + "diff_apex_ft": -5.1, + "status": "pass", + "error_pattern": null + }, + "s2_shot_18": { + "diff_carry_yd": -2.1, + "diff_total_yd": 7.2, + "diff_apex_ft": -3.5, + "status": "moderate", + "error_pattern": "ROLLOUT_TOO_LONG" + }, + "s2_shot_19": { + "diff_carry_yd": -2.1, + "diff_total_yd": -10.5, + "diff_apex_ft": -2.2, + "status": "severe", + "error_pattern": "ROLLOUT_TOO_SHORT" + }, + "s2_shot_20": { + "diff_carry_yd": 1.5, + "diff_total_yd": 7.5, + "diff_apex_ft": -3.0, + "status": "moderate", + "error_pattern": "ROLLOUT_TOO_LONG" + }, + "s2_shot_21": { + "diff_carry_yd": 4.9, + "diff_total_yd": 27.7, + "diff_apex_ft": 1.7, + "status": "severe", + "error_pattern": "CARRY_AND_ROLLOUT_LONG" + }, + "s2_shot_22": { + "diff_carry_yd": 0.6, + "diff_total_yd": -2.4, + "diff_apex_ft": -2.7, + "status": "pass", + "error_pattern": null + }, + "s2_shot_23": { + "diff_carry_yd": 3.5, + "diff_total_yd": -19.6, + "diff_apex_ft": 0.0, + "status": "severe", + "error_pattern": "CARRY_TOO_LONG" + }, + "s2_shot_24": { + "diff_carry_yd": 0.5, + "diff_total_yd": -1.5, + "diff_apex_ft": -3.0, + "status": "pass", + "error_pattern": null + }, + "s2_shot_26": { + "diff_carry_yd": 1.7, + "diff_total_yd": 20.6, + "diff_apex_ft": 23.5, + "status": "severe", + "error_pattern": "ROLLOUT_TOO_LONG" + }, + "s2_shot_27": { + "diff_carry_yd": -1.4, + "diff_total_yd": 9.2, + "diff_apex_ft": 3.2, + "status": "moderate", + "error_pattern": "ROLLOUT_TOO_LONG" + }, + "s2_shot_9": { + "diff_carry_yd": -3.3, + "diff_total_yd": 1.6, + "diff_apex_ft": 7.1, + "status": "moderate", + "error_pattern": "CARRY_TOO_SHORT" + }, + "s3_shot_3w_18": { + "diff_carry_yd": null, + "diff_total_yd": null, + "diff_apex_ft": null, + "status": "pass", + "error_pattern": null + }, + "s3_shot_3w_19": { + "diff_carry_yd": -0.6, + "diff_total_yd": 16.0, + "diff_apex_ft": 0.1, + "status": "severe", + "error_pattern": "ROLLOUT_TOO_LONG" + }, + "s3_shot_3w_21": { + "diff_carry_yd": 0.6, + "diff_total_yd": 15.9, + "diff_apex_ft": 0.3, + "status": "severe", + "error_pattern": "ROLLOUT_TOO_LONG" + }, + "s3_shot_3w_22": { + "diff_carry_yd": 2.6, + "diff_total_yd": 19.6, + "diff_apex_ft": 0.5, + "status": "severe", + "error_pattern": "ROLLOUT_TOO_LONG" + }, + "s3_shot_3w_23": { + "diff_carry_yd": 0.1, + "diff_total_yd": -23.3, + "diff_apex_ft": -1.3, + "status": "severe", + "error_pattern": "ROLLOUT_TOO_SHORT" + }, + "s3_shot_3w_24": { + "diff_carry_yd": 6.9, + "diff_total_yd": 28.4, + "diff_apex_ft": 1.8, + "status": "severe", + "error_pattern": "CARRY_AND_ROLLOUT_LONG" + }, + "s3_shot_5i_10": { + "diff_carry_yd": 2.5, + "diff_total_yd": -7.6, + "diff_apex_ft": 5.8, + "status": "moderate", + "error_pattern": "ROLLOUT_TOO_SHORT" + }, + "s3_shot_5i_11": { + "diff_carry_yd": -3.7, + "diff_total_yd": -17.6, + "diff_apex_ft": -1.3, + "status": "severe", + "error_pattern": "CARRY_AND_ROLLOUT_SHORT" + }, + "s3_shot_5i_12": { + "diff_carry_yd": 1.1, + "diff_total_yd": -23.5, + "diff_apex_ft": 1.1, + "status": "severe", + "error_pattern": "ROLLOUT_TOO_SHORT" + }, + "s3_shot_5i_13": { + "diff_carry_yd": 2.3, + "diff_total_yd": 10.1, + "diff_apex_ft": 0.6, + "status": "severe", + "error_pattern": "ROLLOUT_TOO_LONG" + }, + "s3_shot_5i_15": { + "diff_carry_yd": -4.6, + "diff_total_yd": 14.5, + "diff_apex_ft": -1.1, + "status": "severe", + "error_pattern": "CARRY_TOO_SHORT" + }, + "s3_shot_5i_16": { + "diff_carry_yd": 0.9, + "diff_total_yd": -21.0, + "diff_apex_ft": -0.2, + "status": "severe", + "error_pattern": "ROLLOUT_TOO_SHORT" + }, + "s3_shot_5i_17": { + "diff_carry_yd": 1.6, + "diff_total_yd": 4.3, + "diff_apex_ft": 0.2, + "status": "pass", + "error_pattern": null + }, + "s3_shot_6i_35": { + "diff_carry_yd": -3.5, + "diff_total_yd": -14.9, + "diff_apex_ft": -2.8, + "status": "severe", + "error_pattern": "CARRY_AND_ROLLOUT_SHORT" + }, + "s3_shot_6i_36": { + "diff_carry_yd": 3.7, + "diff_total_yd": -19.2, + "diff_apex_ft": 1.0, + "status": "severe", + "error_pattern": "CARRY_TOO_LONG" + }, + "s3_shot_6i_37": { + "diff_carry_yd": -3.7, + "diff_total_yd": 11.9, + "diff_apex_ft": -0.9, + "status": "severe", + "error_pattern": "CARRY_TOO_SHORT" + }, + "s3_shot_6i_38": { + "diff_carry_yd": -3.6, + "diff_total_yd": -21.7, + "diff_apex_ft": 0.1, + "status": "severe", + "error_pattern": "CARRY_AND_ROLLOUT_SHORT" + }, + "s3_shot_6i_39": { + "diff_carry_yd": -0.5, + "diff_total_yd": 6.4, + "diff_apex_ft": 0.0, + "status": "moderate", + "error_pattern": "ROLLOUT_TOO_LONG" + }, + "s3_shot_6i_40": { + "diff_carry_yd": -1.3, + "diff_total_yd": 7.7, + "diff_apex_ft": 0.1, + "status": "moderate", + "error_pattern": "ROLLOUT_TOO_LONG" + }, + "s3_shot_6i_41": { + "diff_carry_yd": -4.7, + "diff_total_yd": 12.9, + "diff_apex_ft": -1.0, + "status": "severe", + "error_pattern": "CARRY_TOO_SHORT" + }, + "s3_shot_6i_42": { + "diff_carry_yd": 0.5, + "diff_total_yd": -15.8, + "diff_apex_ft": 1.3, + "status": "severe", + "error_pattern": "ROLLOUT_TOO_SHORT" + }, + "s3_shot_6i_43": { + "diff_carry_yd": 5.6, + "diff_total_yd": -0.2, + "diff_apex_ft": 7.8, + "status": "moderate", + "error_pattern": "CARRY_TOO_LONG" + }, + "s3_shot_6i_44": { + "diff_carry_yd": -1.8, + "diff_total_yd": -28.0, + "diff_apex_ft": -1.4, + "status": "severe", + "error_pattern": "ROLLOUT_TOO_SHORT" + }, + "s3_shot_6i_45": { + "diff_carry_yd": 3.0, + "diff_total_yd": 20.4, + "diff_apex_ft": 0.5, + "status": "severe", + "error_pattern": "ROLLOUT_TOO_LONG" + }, + "s3_shot_6i_46": { + "diff_carry_yd": -1.0, + "diff_total_yd": -8.5, + "diff_apex_ft": -3.0, + "status": "moderate", + "error_pattern": "ROLLOUT_TOO_SHORT" + }, + "s3_shot_6i_47": { + "diff_carry_yd": 6.1, + "diff_total_yd": 8.3, + "diff_apex_ft": 11.4, + "status": "moderate", + "error_pattern": "CARRY_AND_ROLLOUT_LONG" + }, + "s3_shot_6i_48": { + "diff_carry_yd": 5.3, + "diff_total_yd": 8.8, + "diff_apex_ft": 13.8, + "status": "moderate", + "error_pattern": "CARRY_AND_ROLLOUT_LONG" + }, + "s3_shot_6i_49": { + "diff_carry_yd": -2.5, + "diff_total_yd": 6.9, + "diff_apex_ft": -0.3, + "status": "moderate", + "error_pattern": "ROLLOUT_TOO_LONG" + }, + "s3_shot_6i_50": { + "diff_carry_yd": -0.9, + "diff_total_yd": -12.5, + "diff_apex_ft": 3.8, + "status": "severe", + "error_pattern": "ROLLOUT_TOO_SHORT" + }, + "s3_shot_7i_25": { + "diff_carry_yd": -0.9, + "diff_total_yd": -18.4, + "diff_apex_ft": 0.9, + "status": "severe", + "error_pattern": "ROLLOUT_TOO_SHORT" + }, + "s3_shot_7i_26": { + "diff_carry_yd": 1.5, + "diff_total_yd": -22.1, + "diff_apex_ft": 1.1, + "status": "severe", + "error_pattern": "ROLLOUT_TOO_SHORT" + }, + "s3_shot_7i_27": { + "diff_carry_yd": 1.2, + "diff_total_yd": 4.7, + "diff_apex_ft": 7.7, + "status": "pass", + "error_pattern": null + }, + "s3_shot_7i_28": { + "diff_carry_yd": 0.5, + "diff_total_yd": 1.5, + "diff_apex_ft": 8.1, + "status": "pass", + "error_pattern": null + }, + "s3_shot_7i_29": { + "diff_carry_yd": 0.1, + "diff_total_yd": -6.6, + "diff_apex_ft": -3.6, + "status": "moderate", + "error_pattern": "ROLLOUT_TOO_SHORT" + }, + "s3_shot_7i_30": { + "diff_carry_yd": -0.7, + "diff_total_yd": 1.0, + "diff_apex_ft": 5.3, + "status": "pass", + "error_pattern": null + }, + "s3_shot_7i_31": { + "diff_carry_yd": -3.4, + "diff_total_yd": -12.9, + "diff_apex_ft": -3.7, + "status": "severe", + "error_pattern": "CARRY_AND_ROLLOUT_SHORT" + }, + "s3_shot_7i_32": { + "diff_carry_yd": -2.4, + "diff_total_yd": -2.8, + "diff_apex_ft": 3.0, + "status": "pass", + "error_pattern": null + }, + "s3_shot_7i_33": { + "diff_carry_yd": -2.2, + "diff_total_yd": -1.9, + "diff_apex_ft": 4.5, + "status": "pass", + "error_pattern": null + }, + "s3_shot_7i_34": { + "diff_carry_yd": 3.6, + "diff_total_yd": 2.0, + "diff_apex_ft": 3.0, + "status": "moderate", + "error_pattern": "CARRY_TOO_LONG" + }, + "s3_shot_9i_1": { + "diff_carry_yd": -1.9, + "diff_total_yd": -13.0, + "diff_apex_ft": 1.2, + "status": "severe", + "error_pattern": "ROLLOUT_TOO_SHORT" + }, + "s3_shot_9i_2": { + "diff_carry_yd": -4.9, + "diff_total_yd": -5.5, + "diff_apex_ft": -1.5, + "status": "moderate", + "error_pattern": "CARRY_AND_ROLLOUT_SHORT" + }, + "s3_shot_9i_3": { + "diff_carry_yd": -1.9, + "diff_total_yd": 1.4, + "diff_apex_ft": -5.4, + "status": "pass", + "error_pattern": null + }, + "s3_shot_9i_5": { + "diff_carry_yd": 2.7, + "diff_total_yd": 0.1, + "diff_apex_ft": -3.4, + "status": "pass", + "error_pattern": null + }, + "s3_shot_9i_7": { + "diff_carry_yd": 0.6, + "diff_total_yd": 1.1, + "diff_apex_ft": -4.3, + "status": "pass", + "error_pattern": null + }, + "s3_shot_9i_8": { + "diff_carry_yd": -2.3, + "diff_total_yd": 4.7, + "diff_apex_ft": -1.8, + "status": "pass", + "error_pattern": null + }, + "s3_shot_9i_9": { + "diff_carry_yd": -1.8, + "diff_total_yd": 2.3, + "diff_apex_ft": -6.3, + "status": "pass", + "error_pattern": null + }, + "s3_shot_driver_51": { + "diff_carry_yd": 3.2, + "diff_total_yd": 19.2, + "diff_apex_ft": -7.9, + "status": "severe", + "error_pattern": "CARRY_AND_ROLLOUT_LONG" + }, + "s3_shot_driver_52": { + "diff_carry_yd": 3.7, + "diff_total_yd": 18.3, + "diff_apex_ft": -6.6, + "status": "severe", + "error_pattern": "CARRY_AND_ROLLOUT_LONG" + }, + "s3_shot_driver_53": { + "diff_carry_yd": 0.1, + "diff_total_yd": 10.3, + "diff_apex_ft": -8.4, + "status": "severe", + "error_pattern": "ROLLOUT_TOO_LONG" + }, + "s3_shot_driver_54": { + "diff_carry_yd": 0.5, + "diff_total_yd": -4.9, + "diff_apex_ft": -3.5, + "status": "pass", + "error_pattern": null + }, + "s3_shot_driver_55": { + "diff_carry_yd": 2.0, + "diff_total_yd": 21.7, + "diff_apex_ft": 0.4, + "status": "severe", + "error_pattern": "ROLLOUT_TOO_LONG" + }, + "s3_shot_driver_56": { + "diff_carry_yd": -0.8, + "diff_total_yd": 13.7, + "diff_apex_ft": 7.2, + "status": "severe", + "error_pattern": "ROLLOUT_TOO_LONG" + }, + "s3_shot_driver_57": { + "diff_carry_yd": -8.9, + "diff_total_yd": -23.5, + "diff_apex_ft": -4.3, + "status": "severe", + "error_pattern": "CARRY_AND_ROLLOUT_SHORT" + }, + "s3_shot_driver_58": { + "diff_carry_yd": 9.3, + "diff_total_yd": 24.5, + "diff_apex_ft": -13.0, + "status": "severe", + "error_pattern": "CARRY_AND_ROLLOUT_LONG" + }, + "s3_shot_driver_59": { + "diff_carry_yd": -1.6, + "diff_total_yd": 14.4, + "diff_apex_ft": -4.2, + "status": "severe", + "error_pattern": "ROLLOUT_TOO_LONG" + }, + "s3_shot_driver_60": { + "diff_carry_yd": -0.6, + "diff_total_yd": -15.4, + "diff_apex_ft": -2.5, + "status": "severe", + "error_pattern": "ROLLOUT_TOO_SHORT" + }, + "s3_shot_pw_64": { + "diff_carry_yd": 1.6, + "diff_total_yd": 4.9, + "diff_apex_ft": -0.5, + "status": "pass", + "error_pattern": null + }, + "s3_shot_pw_65": { + "diff_carry_yd": 1.0, + "diff_total_yd": 6.2, + "diff_apex_ft": -2.9, + "status": "moderate", + "error_pattern": "ROLLOUT_TOO_LONG" + }, + "s3_shot_pw_66": { + "diff_carry_yd": -1.6, + "diff_total_yd": 0.9, + "diff_apex_ft": -3.0, + "status": "pass", + "error_pattern": null + }, + "s3_shot_pw_67": { + "diff_carry_yd": 1.3, + "diff_total_yd": 7.2, + "diff_apex_ft": -3.1, + "status": "moderate", + "error_pattern": "ROLLOUT_TOO_LONG" + }, + "s3_shot_pw_68": { + "diff_carry_yd": 0.6, + "diff_total_yd": 3.9, + "diff_apex_ft": -7.0, + "status": "pass", + "error_pattern": null + }, + "s3_shot_pw_69": { + "diff_carry_yd": -3.2, + "diff_total_yd": 11.6, + "diff_apex_ft": -3.9, + "status": "severe", + "error_pattern": "CARRY_TOO_SHORT" + }, + "s4_shot_3w_31": { + "diff_carry_yd": -0.1, + "diff_total_yd": -3.6, + "diff_apex_ft": -3.6, + "status": "pass", + "error_pattern": null + }, + "s4_shot_3w_32": { + "diff_carry_yd": -1.7, + "diff_total_yd": 4.4, + "diff_apex_ft": -4.3, + "status": "pass", + "error_pattern": null + }, + "s4_shot_3w_33": { + "diff_carry_yd": 6.4, + "diff_total_yd": 9.6, + "diff_apex_ft": -9.1, + "status": "moderate", + "error_pattern": "CARRY_AND_ROLLOUT_LONG" + }, + "s4_shot_3w_34": { + "diff_carry_yd": -0.7, + "diff_total_yd": -2.0, + "diff_apex_ft": -3.9, + "status": "pass", + "error_pattern": null + }, + "s4_shot_3w_35": { + "diff_carry_yd": -0.2, + "diff_total_yd": -2.7, + "diff_apex_ft": -4.7, + "status": "pass", + "error_pattern": null + }, + "s4_shot_5i_25": { + "diff_carry_yd": -2.9, + "diff_total_yd": -7.2, + "diff_apex_ft": -5.5, + "status": "moderate", + "error_pattern": "ROLLOUT_TOO_SHORT" + }, + "s4_shot_5i_26": { + "diff_carry_yd": 3.1, + "diff_total_yd": 5.0, + "diff_apex_ft": 2.9, + "status": "moderate", + "error_pattern": "CARRY_TOO_LONG" + }, + "s4_shot_5i_27": { + "diff_carry_yd": -2.0, + "diff_total_yd": 10.8, + "diff_apex_ft": -0.2, + "status": "severe", + "error_pattern": "ROLLOUT_TOO_LONG" + }, + "s4_shot_5i_28": { + "diff_carry_yd": -0.2, + "diff_total_yd": -6.9, + "diff_apex_ft": 5.0, + "status": "moderate", + "error_pattern": "ROLLOUT_TOO_SHORT" + }, + "s4_shot_5i_29": { + "diff_carry_yd": 6.3, + "diff_total_yd": 13.8, + "diff_apex_ft": 1.0, + "status": "severe", + "error_pattern": "CARRY_AND_ROLLOUT_LONG" + }, + "s4_shot_5i_30": { + "diff_carry_yd": 2.4, + "diff_total_yd": 1.6, + "diff_apex_ft": -7.8, + "status": "pass", + "error_pattern": null + }, + "s4_shot_6i_19": { + "diff_carry_yd": -0.5, + "diff_total_yd": -11.5, + "diff_apex_ft": 0.2, + "status": "severe", + "error_pattern": "ROLLOUT_TOO_SHORT" + }, + "s4_shot_6i_20": { + "diff_carry_yd": -0.1, + "diff_total_yd": 11.4, + "diff_apex_ft": 0.0, + "status": "severe", + "error_pattern": "ROLLOUT_TOO_LONG" + }, + "s4_shot_6i_21": { + "diff_carry_yd": 0.9, + "diff_total_yd": -1.5, + "diff_apex_ft": -6.8, + "status": "pass", + "error_pattern": null + }, + "s4_shot_6i_22": { + "diff_carry_yd": 4.5, + "diff_total_yd": 10.8, + "diff_apex_ft": 0.9, + "status": "severe", + "error_pattern": "CARRY_AND_ROLLOUT_LONG" + }, + "s4_shot_6i_23": { + "diff_carry_yd": null, + "diff_total_yd": null, + "diff_apex_ft": null, + "status": "pass", + "error_pattern": null + }, + "s4_shot_6i_24": { + "diff_carry_yd": null, + "diff_total_yd": null, + "diff_apex_ft": null, + "status": "pass", + "error_pattern": null + }, + "s4_shot_9i_13": { + "diff_carry_yd": null, + "diff_total_yd": null, + "diff_apex_ft": null, + "status": "pass", + "error_pattern": null + }, + "s4_shot_9i_14": { + "diff_carry_yd": -2.1, + "diff_total_yd": -0.4, + "diff_apex_ft": -7.0, + "status": "pass", + "error_pattern": null + }, + "s4_shot_9i_15": { + "diff_carry_yd": -2.9, + "diff_total_yd": 10.8, + "diff_apex_ft": -3.7, + "status": "severe", + "error_pattern": "ROLLOUT_TOO_LONG" + }, + "s4_shot_9i_17": { + "diff_carry_yd": -0.2, + "diff_total_yd": -14.8, + "diff_apex_ft": -0.1, + "status": "severe", + "error_pattern": "ROLLOUT_TOO_SHORT" + }, + "s4_shot_9i_18": { + "diff_carry_yd": -2.8, + "diff_total_yd": 8.7, + "diff_apex_ft": -3.5, + "status": "moderate", + "error_pattern": "ROLLOUT_TOO_LONG" + }, + "s4_shot_lw_38": { + "diff_carry_yd": -1.9, + "diff_total_yd": 7.8, + "diff_apex_ft": -1.6, + "status": "moderate", + "error_pattern": "ROLLOUT_TOO_LONG" + }, + "s4_shot_pw_1": { + "diff_carry_yd": -2.6, + "diff_total_yd": -8.4, + "diff_apex_ft": 2.1, + "status": "moderate", + "error_pattern": "ROLLOUT_TOO_SHORT" + }, + "s4_shot_pw_10": { + "diff_carry_yd": -1.1, + "diff_total_yd": 1.9, + "diff_apex_ft": -3.4, + "status": "pass", + "error_pattern": null + }, + "s4_shot_pw_11": { + "diff_carry_yd": -1.1, + "diff_total_yd": 1.5, + "diff_apex_ft": -3.0, + "status": "pass", + "error_pattern": null + }, + "s4_shot_pw_2": { + "diff_carry_yd": 0.4, + "diff_total_yd": 12.2, + "diff_apex_ft": 0.4, + "status": "severe", + "error_pattern": "ROLLOUT_TOO_LONG" + }, + "s4_shot_pw_3": { + "diff_carry_yd": -3.8, + "diff_total_yd": 8.1, + "diff_apex_ft": -2.3, + "status": "moderate", + "error_pattern": "CARRY_TOO_SHORT" + }, + "s4_shot_pw_47": { + "diff_carry_yd": -0.6, + "diff_total_yd": 9.5, + "diff_apex_ft": 0.0, + "status": "moderate", + "error_pattern": "ROLLOUT_TOO_LONG" + }, + "s4_shot_pw_48": { + "diff_carry_yd": -0.7, + "diff_total_yd": 8.4, + "diff_apex_ft": 0.0, + "status": "moderate", + "error_pattern": "ROLLOUT_TOO_LONG" + }, + "s4_shot_pw_49": { + "diff_carry_yd": -4.2, + "diff_total_yd": 4.6, + "diff_apex_ft": -1.1, + "status": "moderate", + "error_pattern": "CARRY_TOO_SHORT" + }, + "s4_shot_pw_6": { + "diff_carry_yd": -2.9, + "diff_total_yd": -1.9, + "diff_apex_ft": -1.0, + "status": "pass", + "error_pattern": null + }, + "s4_shot_pw_7": { + "diff_carry_yd": -0.5, + "diff_total_yd": 0.7, + "diff_apex_ft": -2.9, + "status": "pass", + "error_pattern": null + }, + "s4_shot_pw_9": { + "diff_carry_yd": null, + "diff_total_yd": null, + "diff_apex_ft": null, + "status": "pass", + "error_pattern": null + }, + "topped_test_shot": { + "diff_carry_yd": -0.7, + "diff_total_yd": 13.8, + "diff_apex_ft": -0.1, + "status": "severe", + "error_pattern": "ROLLOUT_TOO_LONG" + }, + "wedge_shot_1": { + "diff_carry_yd": -1.5, + "diff_total_yd": 6.2, + "diff_apex_ft": -0.8, + "status": "moderate", + "error_pattern": "ROLLOUT_TOO_LONG" + }, + "wedge_shot_2": { + "diff_carry_yd": -1.5, + "diff_total_yd": 9.6, + "diff_apex_ft": -1.1, + "status": "moderate", + "error_pattern": "ROLLOUT_TOO_LONG" + }, + "wedge_test_shot": { + "diff_carry_yd": -5.3, + "diff_total_yd": 3.2, + "diff_apex_ft": -3.2, + "status": "moderate", + "error_pattern": "CARRY_TOO_SHORT" + }, + "wedge_test_shot2": { + "diff_carry_yd": 1.1, + "diff_total_yd": 12.4, + "diff_apex_ft": 0.8, + "status": "severe", + "error_pattern": "ROLLOUT_TOO_LONG" + }, + "wood1": { + "diff_carry_yd": 11.9, + "diff_total_yd": -4.0, + "diff_apex_ft": 3.1, + "status": "severe", + "error_pattern": "CARRY_TOO_LONG" + }, + "wood2": { + "diff_carry_yd": -0.4, + "diff_total_yd": -4.8, + "diff_apex_ft": -3.3, + "status": "pass", + "error_pattern": null + }, + "wood_low_test_shot": { + "diff_carry_yd": 1.3, + "diff_total_yd": 22.0, + "diff_apex_ft": 0.3, + "status": "severe", + "error_pattern": "ROLLOUT_TOO_LONG" + } + }, + "regressions": [ + { + "shot": "5iron", + "was": "pass", + "now": "severe", + "prev_total_diff": 1.3, + "curr_total_diff": 11.3 + }, + { + "shot": "drive_test_shot", + "was": "pass", + "now": "moderate", + "prev_total_diff": 0.8, + "curr_total_diff": -5.9 + }, + { + "shot": "s3_shot_6i_39", + "was": "pass", + "now": "moderate", + "prev_total_diff": 4.6, + "curr_total_diff": 6.4 + }, + { + "shot": "s3_shot_pw_69", + "was": "pass", + "now": "severe", + "prev_total_diff": -0.3, + "curr_total_diff": 11.6 + }, + { + "shot": "s4_shot_5i_26", + "was": "pass", + "now": "moderate", + "prev_total_diff": -4.2, + "curr_total_diff": 5.0 + }, + { + "shot": "wedge_shot_1", + "was": "pass", + "now": "moderate", + "prev_total_diff": 4.3, + "curr_total_diff": 6.2 + } + ], + "conflicts": [ + "Bounce.FlightTangentialRetentionBase", + "Bounce.FlightSpinFactorMin", + "Bounce.FlightSpinFactorDivisor", + "Rollout.MidSpinMultiplierMax", + "Rollout.HighSpinMultiplierMax", + "Rollout.FrictionBlendSpeed", + "KineticFrictionMultiplier", + "Bounce.RolloutHighSpinRetention", + "Bounce.CorBaseA", + "Rollout.LowSpinMultiplierMax", + "Rollout.LowSpinThreshold", + "RollingFrictionMultiplier", + "Bounce.RolloutLowSpinRetention", + "Rollout.ChipVelocityScaleMin", + "Rollout.ChipVelocityScaleMax", + "Flight.ClMaxBase", + "Flight.CdMin", + "DragScaleMultiplier", + "LiftScaleMultiplier", + "Flight.HighLaunchDragBoostMax" + ] +} diff --git a/assets/data/calibration/history/iteration_064.json b/assets/data/calibration/history/iteration_064.json new file mode 100644 index 0000000..46b1264 --- /dev/null +++ b/assets/data/calibration/history/iteration_064.json @@ -0,0 +1,988 @@ +{ + "iteration": 64, + "timestamp": "2026-03-14T03:10:58.804648", + "profile_overrides": {}, + "summary": { + "pass": 37, + "moderate": 35, + "severe": 57, + "no_reference": 7 + }, + "per_shot": { + "5iron": { + "diff_carry_yd": 4.8, + "diff_total_yd": 11.3, + "diff_apex_ft": 4.6, + "status": "severe", + "error_pattern": "CARRY_AND_ROLLOUT_LONG" + }, + "approach_mid_iron_test_shot": { + "diff_carry_yd": -0.6, + "diff_total_yd": 7.3, + "diff_apex_ft": -5.0, + "status": "moderate", + "error_pattern": "ROLLOUT_TOO_LONG" + }, + "bump_and_run": { + "diff_carry_yd": -6.1, + "diff_total_yd": -24.6, + "diff_apex_ft": -1.5, + "status": "severe", + "error_pattern": "CARRY_AND_ROLLOUT_SHORT" + }, + "bump_and_run_slow": { + "diff_carry_yd": null, + "diff_total_yd": null, + "diff_apex_ft": null, + "status": "pass", + "error_pattern": null + }, + "bump_test_shot": { + "diff_carry_yd": -2.1, + "diff_total_yd": 12.7, + "diff_apex_ft": -0.1, + "status": "severe", + "error_pattern": "ROLLOUT_TOO_LONG" + }, + "checked_test_shot": { + "diff_carry_yd": -2.1, + "diff_total_yd": -0.5, + "diff_apex_ft": -9.6, + "status": "pass", + "error_pattern": null + }, + "chip_test_shot": { + "diff_carry_yd": null, + "diff_total_yd": null, + "diff_apex_ft": null, + "status": "pass", + "error_pattern": null + }, + "drive_test_shot": { + "diff_carry_yd": -6.1, + "diff_total_yd": -5.9, + "diff_apex_ft": -2.8, + "status": "moderate", + "error_pattern": "CARRY_AND_ROLLOUT_SHORT" + }, + "driver1": { + "diff_carry_yd": -0.3, + "diff_total_yd": -26.3, + "diff_apex_ft": -0.8, + "status": "severe", + "error_pattern": "ROLLOUT_TOO_SHORT" + }, + "driver2": { + "diff_carry_yd": 2.8, + "diff_total_yd": 2.9, + "diff_apex_ft": -4.3, + "status": "pass", + "error_pattern": null + }, + "driver3": { + "diff_carry_yd": 0.9, + "diff_total_yd": 15.9, + "diff_apex_ft": 17.6, + "status": "severe", + "error_pattern": "ROLLOUT_TOO_LONG" + }, + "driver4": { + "diff_carry_yd": 1.3, + "diff_total_yd": 9.3, + "diff_apex_ft": 2.4, + "status": "moderate", + "error_pattern": "ROLLOUT_TOO_LONG" + }, + "flop_test_shot": { + "diff_carry_yd": -0.2, + "diff_total_yd": 1.6, + "diff_apex_ft": -8.5, + "status": "pass", + "error_pattern": null + }, + "p_wedge_shot_1": { + "diff_carry_yd": 3.9, + "diff_total_yd": 12.3, + "diff_apex_ft": -0.2, + "status": "severe", + "error_pattern": "CARRY_AND_ROLLOUT_LONG" + }, + "s2_shot_10": { + "diff_carry_yd": 3.4, + "diff_total_yd": 10.2, + "diff_apex_ft": -6.0, + "status": "severe", + "error_pattern": "CARRY_AND_ROLLOUT_LONG" + }, + "s2_shot_11": { + "diff_carry_yd": -1.1, + "diff_total_yd": 2.8, + "diff_apex_ft": -3.6, + "status": "pass", + "error_pattern": null + }, + "s2_shot_12": { + "diff_carry_yd": 2.0, + "diff_total_yd": 6.0, + "diff_apex_ft": -6.2, + "status": "moderate", + "error_pattern": "ROLLOUT_TOO_LONG" + }, + "s2_shot_13": { + "diff_carry_yd": -1.1, + "diff_total_yd": 0.7, + "diff_apex_ft": -6.9, + "status": "pass", + "error_pattern": null + }, + "s2_shot_14": { + "diff_carry_yd": -2.3, + "diff_total_yd": -0.4, + "diff_apex_ft": -6.6, + "status": "pass", + "error_pattern": null + }, + "s2_shot_15": { + "diff_carry_yd": -1.0, + "diff_total_yd": -12.7, + "diff_apex_ft": -2.0, + "status": "severe", + "error_pattern": "ROLLOUT_TOO_SHORT" + }, + "s2_shot_16": { + "diff_carry_yd": -0.3, + "diff_total_yd": 2.2, + "diff_apex_ft": -3.5, + "status": "pass", + "error_pattern": null + }, + "s2_shot_17": { + "diff_carry_yd": 0.9, + "diff_total_yd": 4.7, + "diff_apex_ft": -5.1, + "status": "pass", + "error_pattern": null + }, + "s2_shot_18": { + "diff_carry_yd": -2.1, + "diff_total_yd": 7.2, + "diff_apex_ft": -3.5, + "status": "moderate", + "error_pattern": "ROLLOUT_TOO_LONG" + }, + "s2_shot_19": { + "diff_carry_yd": -2.1, + "diff_total_yd": -10.5, + "diff_apex_ft": -2.2, + "status": "severe", + "error_pattern": "ROLLOUT_TOO_SHORT" + }, + "s2_shot_20": { + "diff_carry_yd": 1.5, + "diff_total_yd": 7.5, + "diff_apex_ft": -3.0, + "status": "moderate", + "error_pattern": "ROLLOUT_TOO_LONG" + }, + "s2_shot_21": { + "diff_carry_yd": 4.9, + "diff_total_yd": 27.7, + "diff_apex_ft": 1.7, + "status": "severe", + "error_pattern": "CARRY_AND_ROLLOUT_LONG" + }, + "s2_shot_22": { + "diff_carry_yd": 0.6, + "diff_total_yd": -2.4, + "diff_apex_ft": -2.7, + "status": "pass", + "error_pattern": null + }, + "s2_shot_23": { + "diff_carry_yd": 3.5, + "diff_total_yd": -19.6, + "diff_apex_ft": 0.0, + "status": "severe", + "error_pattern": "CARRY_TOO_LONG" + }, + "s2_shot_24": { + "diff_carry_yd": 0.5, + "diff_total_yd": -1.5, + "diff_apex_ft": -3.0, + "status": "pass", + "error_pattern": null + }, + "s2_shot_26": { + "diff_carry_yd": 1.7, + "diff_total_yd": 20.6, + "diff_apex_ft": 23.5, + "status": "severe", + "error_pattern": "ROLLOUT_TOO_LONG" + }, + "s2_shot_27": { + "diff_carry_yd": -1.4, + "diff_total_yd": 9.2, + "diff_apex_ft": 3.2, + "status": "moderate", + "error_pattern": "ROLLOUT_TOO_LONG" + }, + "s2_shot_9": { + "diff_carry_yd": -3.3, + "diff_total_yd": 1.6, + "diff_apex_ft": 7.1, + "status": "moderate", + "error_pattern": "CARRY_TOO_SHORT" + }, + "s3_shot_3w_18": { + "diff_carry_yd": null, + "diff_total_yd": null, + "diff_apex_ft": null, + "status": "pass", + "error_pattern": null + }, + "s3_shot_3w_19": { + "diff_carry_yd": -0.6, + "diff_total_yd": 16.0, + "diff_apex_ft": 0.1, + "status": "severe", + "error_pattern": "ROLLOUT_TOO_LONG" + }, + "s3_shot_3w_21": { + "diff_carry_yd": 0.6, + "diff_total_yd": 15.9, + "diff_apex_ft": 0.3, + "status": "severe", + "error_pattern": "ROLLOUT_TOO_LONG" + }, + "s3_shot_3w_22": { + "diff_carry_yd": 2.6, + "diff_total_yd": 19.6, + "diff_apex_ft": 0.5, + "status": "severe", + "error_pattern": "ROLLOUT_TOO_LONG" + }, + "s3_shot_3w_23": { + "diff_carry_yd": 0.1, + "diff_total_yd": -23.3, + "diff_apex_ft": -1.3, + "status": "severe", + "error_pattern": "ROLLOUT_TOO_SHORT" + }, + "s3_shot_3w_24": { + "diff_carry_yd": 6.9, + "diff_total_yd": 28.4, + "diff_apex_ft": 1.8, + "status": "severe", + "error_pattern": "CARRY_AND_ROLLOUT_LONG" + }, + "s3_shot_5i_10": { + "diff_carry_yd": 2.5, + "diff_total_yd": -7.6, + "diff_apex_ft": 5.8, + "status": "moderate", + "error_pattern": "ROLLOUT_TOO_SHORT" + }, + "s3_shot_5i_11": { + "diff_carry_yd": -3.7, + "diff_total_yd": -17.6, + "diff_apex_ft": -1.3, + "status": "severe", + "error_pattern": "CARRY_AND_ROLLOUT_SHORT" + }, + "s3_shot_5i_12": { + "diff_carry_yd": 1.1, + "diff_total_yd": -23.5, + "diff_apex_ft": 1.1, + "status": "severe", + "error_pattern": "ROLLOUT_TOO_SHORT" + }, + "s3_shot_5i_13": { + "diff_carry_yd": 2.3, + "diff_total_yd": 10.1, + "diff_apex_ft": 0.6, + "status": "severe", + "error_pattern": "ROLLOUT_TOO_LONG" + }, + "s3_shot_5i_15": { + "diff_carry_yd": -4.6, + "diff_total_yd": 14.5, + "diff_apex_ft": -1.1, + "status": "severe", + "error_pattern": "CARRY_TOO_SHORT" + }, + "s3_shot_5i_16": { + "diff_carry_yd": 0.9, + "diff_total_yd": -21.0, + "diff_apex_ft": -0.2, + "status": "severe", + "error_pattern": "ROLLOUT_TOO_SHORT" + }, + "s3_shot_5i_17": { + "diff_carry_yd": 1.6, + "diff_total_yd": 4.3, + "diff_apex_ft": 0.2, + "status": "pass", + "error_pattern": null + }, + "s3_shot_6i_35": { + "diff_carry_yd": -3.5, + "diff_total_yd": -14.9, + "diff_apex_ft": -2.8, + "status": "severe", + "error_pattern": "CARRY_AND_ROLLOUT_SHORT" + }, + "s3_shot_6i_36": { + "diff_carry_yd": 3.7, + "diff_total_yd": -19.2, + "diff_apex_ft": 1.0, + "status": "severe", + "error_pattern": "CARRY_TOO_LONG" + }, + "s3_shot_6i_37": { + "diff_carry_yd": -3.7, + "diff_total_yd": 11.9, + "diff_apex_ft": -0.9, + "status": "severe", + "error_pattern": "CARRY_TOO_SHORT" + }, + "s3_shot_6i_38": { + "diff_carry_yd": -3.6, + "diff_total_yd": -21.7, + "diff_apex_ft": 0.1, + "status": "severe", + "error_pattern": "CARRY_AND_ROLLOUT_SHORT" + }, + "s3_shot_6i_39": { + "diff_carry_yd": -0.5, + "diff_total_yd": 6.4, + "diff_apex_ft": 0.0, + "status": "moderate", + "error_pattern": "ROLLOUT_TOO_LONG" + }, + "s3_shot_6i_40": { + "diff_carry_yd": -1.3, + "diff_total_yd": 7.7, + "diff_apex_ft": 0.1, + "status": "moderate", + "error_pattern": "ROLLOUT_TOO_LONG" + }, + "s3_shot_6i_41": { + "diff_carry_yd": -4.7, + "diff_total_yd": 12.9, + "diff_apex_ft": -1.0, + "status": "severe", + "error_pattern": "CARRY_TOO_SHORT" + }, + "s3_shot_6i_42": { + "diff_carry_yd": 0.5, + "diff_total_yd": -15.8, + "diff_apex_ft": 1.3, + "status": "severe", + "error_pattern": "ROLLOUT_TOO_SHORT" + }, + "s3_shot_6i_43": { + "diff_carry_yd": 5.6, + "diff_total_yd": -0.2, + "diff_apex_ft": 7.8, + "status": "moderate", + "error_pattern": "CARRY_TOO_LONG" + }, + "s3_shot_6i_44": { + "diff_carry_yd": -1.8, + "diff_total_yd": -28.0, + "diff_apex_ft": -1.4, + "status": "severe", + "error_pattern": "ROLLOUT_TOO_SHORT" + }, + "s3_shot_6i_45": { + "diff_carry_yd": 3.0, + "diff_total_yd": 20.4, + "diff_apex_ft": 0.5, + "status": "severe", + "error_pattern": "ROLLOUT_TOO_LONG" + }, + "s3_shot_6i_46": { + "diff_carry_yd": -1.0, + "diff_total_yd": -8.5, + "diff_apex_ft": -3.0, + "status": "moderate", + "error_pattern": "ROLLOUT_TOO_SHORT" + }, + "s3_shot_6i_47": { + "diff_carry_yd": 6.1, + "diff_total_yd": 8.3, + "diff_apex_ft": 11.4, + "status": "moderate", + "error_pattern": "CARRY_AND_ROLLOUT_LONG" + }, + "s3_shot_6i_48": { + "diff_carry_yd": 5.3, + "diff_total_yd": 8.8, + "diff_apex_ft": 13.8, + "status": "moderate", + "error_pattern": "CARRY_AND_ROLLOUT_LONG" + }, + "s3_shot_6i_49": { + "diff_carry_yd": -2.5, + "diff_total_yd": 6.9, + "diff_apex_ft": -0.3, + "status": "moderate", + "error_pattern": "ROLLOUT_TOO_LONG" + }, + "s3_shot_6i_50": { + "diff_carry_yd": -0.9, + "diff_total_yd": -12.5, + "diff_apex_ft": 3.8, + "status": "severe", + "error_pattern": "ROLLOUT_TOO_SHORT" + }, + "s3_shot_7i_25": { + "diff_carry_yd": -0.9, + "diff_total_yd": -18.4, + "diff_apex_ft": 0.9, + "status": "severe", + "error_pattern": "ROLLOUT_TOO_SHORT" + }, + "s3_shot_7i_26": { + "diff_carry_yd": 1.5, + "diff_total_yd": -22.1, + "diff_apex_ft": 1.1, + "status": "severe", + "error_pattern": "ROLLOUT_TOO_SHORT" + }, + "s3_shot_7i_27": { + "diff_carry_yd": 1.2, + "diff_total_yd": 4.7, + "diff_apex_ft": 7.7, + "status": "pass", + "error_pattern": null + }, + "s3_shot_7i_28": { + "diff_carry_yd": 0.5, + "diff_total_yd": 1.5, + "diff_apex_ft": 8.1, + "status": "pass", + "error_pattern": null + }, + "s3_shot_7i_29": { + "diff_carry_yd": 0.1, + "diff_total_yd": -6.6, + "diff_apex_ft": -3.6, + "status": "moderate", + "error_pattern": "ROLLOUT_TOO_SHORT" + }, + "s3_shot_7i_30": { + "diff_carry_yd": -0.7, + "diff_total_yd": 1.0, + "diff_apex_ft": 5.3, + "status": "pass", + "error_pattern": null + }, + "s3_shot_7i_31": { + "diff_carry_yd": -3.4, + "diff_total_yd": -12.9, + "diff_apex_ft": -3.7, + "status": "severe", + "error_pattern": "CARRY_AND_ROLLOUT_SHORT" + }, + "s3_shot_7i_32": { + "diff_carry_yd": -2.4, + "diff_total_yd": -2.8, + "diff_apex_ft": 3.0, + "status": "pass", + "error_pattern": null + }, + "s3_shot_7i_33": { + "diff_carry_yd": -2.2, + "diff_total_yd": -1.9, + "diff_apex_ft": 4.5, + "status": "pass", + "error_pattern": null + }, + "s3_shot_7i_34": { + "diff_carry_yd": 3.6, + "diff_total_yd": 2.0, + "diff_apex_ft": 3.0, + "status": "moderate", + "error_pattern": "CARRY_TOO_LONG" + }, + "s3_shot_9i_1": { + "diff_carry_yd": -1.9, + "diff_total_yd": -13.0, + "diff_apex_ft": 1.2, + "status": "severe", + "error_pattern": "ROLLOUT_TOO_SHORT" + }, + "s3_shot_9i_2": { + "diff_carry_yd": -4.9, + "diff_total_yd": -5.5, + "diff_apex_ft": -1.5, + "status": "moderate", + "error_pattern": "CARRY_AND_ROLLOUT_SHORT" + }, + "s3_shot_9i_3": { + "diff_carry_yd": -1.9, + "diff_total_yd": 1.4, + "diff_apex_ft": -5.4, + "status": "pass", + "error_pattern": null + }, + "s3_shot_9i_5": { + "diff_carry_yd": 2.7, + "diff_total_yd": 0.1, + "diff_apex_ft": -3.4, + "status": "pass", + "error_pattern": null + }, + "s3_shot_9i_7": { + "diff_carry_yd": 0.6, + "diff_total_yd": 1.1, + "diff_apex_ft": -4.3, + "status": "pass", + "error_pattern": null + }, + "s3_shot_9i_8": { + "diff_carry_yd": -2.3, + "diff_total_yd": 4.7, + "diff_apex_ft": -1.8, + "status": "pass", + "error_pattern": null + }, + "s3_shot_9i_9": { + "diff_carry_yd": -1.8, + "diff_total_yd": 2.3, + "diff_apex_ft": -6.3, + "status": "pass", + "error_pattern": null + }, + "s3_shot_driver_51": { + "diff_carry_yd": 3.2, + "diff_total_yd": 19.2, + "diff_apex_ft": -7.9, + "status": "severe", + "error_pattern": "CARRY_AND_ROLLOUT_LONG" + }, + "s3_shot_driver_52": { + "diff_carry_yd": 3.7, + "diff_total_yd": 18.3, + "diff_apex_ft": -6.6, + "status": "severe", + "error_pattern": "CARRY_AND_ROLLOUT_LONG" + }, + "s3_shot_driver_53": { + "diff_carry_yd": 0.1, + "diff_total_yd": 10.3, + "diff_apex_ft": -8.4, + "status": "severe", + "error_pattern": "ROLLOUT_TOO_LONG" + }, + "s3_shot_driver_54": { + "diff_carry_yd": 0.5, + "diff_total_yd": -4.9, + "diff_apex_ft": -3.5, + "status": "pass", + "error_pattern": null + }, + "s3_shot_driver_55": { + "diff_carry_yd": 2.0, + "diff_total_yd": 21.7, + "diff_apex_ft": 0.4, + "status": "severe", + "error_pattern": "ROLLOUT_TOO_LONG" + }, + "s3_shot_driver_56": { + "diff_carry_yd": -0.8, + "diff_total_yd": 13.7, + "diff_apex_ft": 7.2, + "status": "severe", + "error_pattern": "ROLLOUT_TOO_LONG" + }, + "s3_shot_driver_57": { + "diff_carry_yd": -8.9, + "diff_total_yd": -23.5, + "diff_apex_ft": -4.3, + "status": "severe", + "error_pattern": "CARRY_AND_ROLLOUT_SHORT" + }, + "s3_shot_driver_58": { + "diff_carry_yd": 9.3, + "diff_total_yd": 24.5, + "diff_apex_ft": -13.0, + "status": "severe", + "error_pattern": "CARRY_AND_ROLLOUT_LONG" + }, + "s3_shot_driver_59": { + "diff_carry_yd": -1.6, + "diff_total_yd": 14.4, + "diff_apex_ft": -4.2, + "status": "severe", + "error_pattern": "ROLLOUT_TOO_LONG" + }, + "s3_shot_driver_60": { + "diff_carry_yd": -0.6, + "diff_total_yd": -15.4, + "diff_apex_ft": -2.5, + "status": "severe", + "error_pattern": "ROLLOUT_TOO_SHORT" + }, + "s3_shot_pw_64": { + "diff_carry_yd": 1.6, + "diff_total_yd": 4.9, + "diff_apex_ft": -0.5, + "status": "pass", + "error_pattern": null + }, + "s3_shot_pw_65": { + "diff_carry_yd": 1.0, + "diff_total_yd": 6.2, + "diff_apex_ft": -2.9, + "status": "moderate", + "error_pattern": "ROLLOUT_TOO_LONG" + }, + "s3_shot_pw_66": { + "diff_carry_yd": -1.6, + "diff_total_yd": 0.9, + "diff_apex_ft": -3.0, + "status": "pass", + "error_pattern": null + }, + "s3_shot_pw_67": { + "diff_carry_yd": 1.3, + "diff_total_yd": 7.2, + "diff_apex_ft": -3.1, + "status": "moderate", + "error_pattern": "ROLLOUT_TOO_LONG" + }, + "s3_shot_pw_68": { + "diff_carry_yd": 0.6, + "diff_total_yd": 3.9, + "diff_apex_ft": -7.0, + "status": "pass", + "error_pattern": null + }, + "s3_shot_pw_69": { + "diff_carry_yd": -3.2, + "diff_total_yd": 11.6, + "diff_apex_ft": -3.9, + "status": "severe", + "error_pattern": "CARRY_TOO_SHORT" + }, + "s4_shot_3w_31": { + "diff_carry_yd": -0.1, + "diff_total_yd": -3.6, + "diff_apex_ft": -3.6, + "status": "pass", + "error_pattern": null + }, + "s4_shot_3w_32": { + "diff_carry_yd": -1.7, + "diff_total_yd": 4.4, + "diff_apex_ft": -4.3, + "status": "pass", + "error_pattern": null + }, + "s4_shot_3w_33": { + "diff_carry_yd": 6.4, + "diff_total_yd": 9.6, + "diff_apex_ft": -9.1, + "status": "moderate", + "error_pattern": "CARRY_AND_ROLLOUT_LONG" + }, + "s4_shot_3w_34": { + "diff_carry_yd": -0.7, + "diff_total_yd": -2.0, + "diff_apex_ft": -3.9, + "status": "pass", + "error_pattern": null + }, + "s4_shot_3w_35": { + "diff_carry_yd": -0.2, + "diff_total_yd": -2.7, + "diff_apex_ft": -4.7, + "status": "pass", + "error_pattern": null + }, + "s4_shot_5i_25": { + "diff_carry_yd": -2.9, + "diff_total_yd": -7.2, + "diff_apex_ft": -5.5, + "status": "moderate", + "error_pattern": "ROLLOUT_TOO_SHORT" + }, + "s4_shot_5i_26": { + "diff_carry_yd": 3.1, + "diff_total_yd": 5.0, + "diff_apex_ft": 2.9, + "status": "moderate", + "error_pattern": "CARRY_TOO_LONG" + }, + "s4_shot_5i_27": { + "diff_carry_yd": -2.0, + "diff_total_yd": 10.8, + "diff_apex_ft": -0.2, + "status": "severe", + "error_pattern": "ROLLOUT_TOO_LONG" + }, + "s4_shot_5i_28": { + "diff_carry_yd": -0.2, + "diff_total_yd": -6.9, + "diff_apex_ft": 5.0, + "status": "moderate", + "error_pattern": "ROLLOUT_TOO_SHORT" + }, + "s4_shot_5i_29": { + "diff_carry_yd": 6.3, + "diff_total_yd": 13.8, + "diff_apex_ft": 1.0, + "status": "severe", + "error_pattern": "CARRY_AND_ROLLOUT_LONG" + }, + "s4_shot_5i_30": { + "diff_carry_yd": 2.4, + "diff_total_yd": 1.6, + "diff_apex_ft": -7.8, + "status": "pass", + "error_pattern": null + }, + "s4_shot_6i_19": { + "diff_carry_yd": -0.5, + "diff_total_yd": -11.5, + "diff_apex_ft": 0.2, + "status": "severe", + "error_pattern": "ROLLOUT_TOO_SHORT" + }, + "s4_shot_6i_20": { + "diff_carry_yd": -0.1, + "diff_total_yd": 11.4, + "diff_apex_ft": 0.0, + "status": "severe", + "error_pattern": "ROLLOUT_TOO_LONG" + }, + "s4_shot_6i_21": { + "diff_carry_yd": 0.9, + "diff_total_yd": -1.5, + "diff_apex_ft": -6.8, + "status": "pass", + "error_pattern": null + }, + "s4_shot_6i_22": { + "diff_carry_yd": 4.5, + "diff_total_yd": 10.8, + "diff_apex_ft": 0.9, + "status": "severe", + "error_pattern": "CARRY_AND_ROLLOUT_LONG" + }, + "s4_shot_6i_23": { + "diff_carry_yd": null, + "diff_total_yd": null, + "diff_apex_ft": null, + "status": "pass", + "error_pattern": null + }, + "s4_shot_6i_24": { + "diff_carry_yd": null, + "diff_total_yd": null, + "diff_apex_ft": null, + "status": "pass", + "error_pattern": null + }, + "s4_shot_9i_13": { + "diff_carry_yd": null, + "diff_total_yd": null, + "diff_apex_ft": null, + "status": "pass", + "error_pattern": null + }, + "s4_shot_9i_14": { + "diff_carry_yd": -2.1, + "diff_total_yd": -0.4, + "diff_apex_ft": -7.0, + "status": "pass", + "error_pattern": null + }, + "s4_shot_9i_15": { + "diff_carry_yd": -2.9, + "diff_total_yd": 10.8, + "diff_apex_ft": -3.7, + "status": "severe", + "error_pattern": "ROLLOUT_TOO_LONG" + }, + "s4_shot_9i_17": { + "diff_carry_yd": -0.2, + "diff_total_yd": -14.8, + "diff_apex_ft": -0.1, + "status": "severe", + "error_pattern": "ROLLOUT_TOO_SHORT" + }, + "s4_shot_9i_18": { + "diff_carry_yd": -2.8, + "diff_total_yd": 8.7, + "diff_apex_ft": -3.5, + "status": "moderate", + "error_pattern": "ROLLOUT_TOO_LONG" + }, + "s4_shot_lw_38": { + "diff_carry_yd": -1.9, + "diff_total_yd": 7.8, + "diff_apex_ft": -1.6, + "status": "moderate", + "error_pattern": "ROLLOUT_TOO_LONG" + }, + "s4_shot_pw_1": { + "diff_carry_yd": -2.6, + "diff_total_yd": -8.4, + "diff_apex_ft": 2.1, + "status": "moderate", + "error_pattern": "ROLLOUT_TOO_SHORT" + }, + "s4_shot_pw_10": { + "diff_carry_yd": -1.1, + "diff_total_yd": 1.9, + "diff_apex_ft": -3.4, + "status": "pass", + "error_pattern": null + }, + "s4_shot_pw_11": { + "diff_carry_yd": -1.1, + "diff_total_yd": 1.5, + "diff_apex_ft": -3.0, + "status": "pass", + "error_pattern": null + }, + "s4_shot_pw_2": { + "diff_carry_yd": 0.4, + "diff_total_yd": 12.2, + "diff_apex_ft": 0.4, + "status": "severe", + "error_pattern": "ROLLOUT_TOO_LONG" + }, + "s4_shot_pw_3": { + "diff_carry_yd": -3.8, + "diff_total_yd": 8.1, + "diff_apex_ft": -2.3, + "status": "moderate", + "error_pattern": "CARRY_TOO_SHORT" + }, + "s4_shot_pw_47": { + "diff_carry_yd": -0.6, + "diff_total_yd": 9.5, + "diff_apex_ft": 0.0, + "status": "moderate", + "error_pattern": "ROLLOUT_TOO_LONG" + }, + "s4_shot_pw_48": { + "diff_carry_yd": -0.7, + "diff_total_yd": 8.4, + "diff_apex_ft": 0.0, + "status": "moderate", + "error_pattern": "ROLLOUT_TOO_LONG" + }, + "s4_shot_pw_49": { + "diff_carry_yd": -4.2, + "diff_total_yd": 4.6, + "diff_apex_ft": -1.1, + "status": "moderate", + "error_pattern": "CARRY_TOO_SHORT" + }, + "s4_shot_pw_6": { + "diff_carry_yd": -2.9, + "diff_total_yd": -1.9, + "diff_apex_ft": -1.0, + "status": "pass", + "error_pattern": null + }, + "s4_shot_pw_7": { + "diff_carry_yd": -0.5, + "diff_total_yd": 0.7, + "diff_apex_ft": -2.9, + "status": "pass", + "error_pattern": null + }, + "s4_shot_pw_9": { + "diff_carry_yd": null, + "diff_total_yd": null, + "diff_apex_ft": null, + "status": "pass", + "error_pattern": null + }, + "topped_test_shot": { + "diff_carry_yd": -0.7, + "diff_total_yd": 13.8, + "diff_apex_ft": -0.1, + "status": "severe", + "error_pattern": "ROLLOUT_TOO_LONG" + }, + "wedge_shot_1": { + "diff_carry_yd": -1.5, + "diff_total_yd": 6.2, + "diff_apex_ft": -0.8, + "status": "moderate", + "error_pattern": "ROLLOUT_TOO_LONG" + }, + "wedge_shot_2": { + "diff_carry_yd": -1.5, + "diff_total_yd": 9.6, + "diff_apex_ft": -1.1, + "status": "moderate", + "error_pattern": "ROLLOUT_TOO_LONG" + }, + "wedge_test_shot": { + "diff_carry_yd": -5.3, + "diff_total_yd": 3.2, + "diff_apex_ft": -3.2, + "status": "moderate", + "error_pattern": "CARRY_TOO_SHORT" + }, + "wedge_test_shot2": { + "diff_carry_yd": 1.1, + "diff_total_yd": 12.4, + "diff_apex_ft": 0.8, + "status": "severe", + "error_pattern": "ROLLOUT_TOO_LONG" + }, + "wood1": { + "diff_carry_yd": 11.9, + "diff_total_yd": -4.0, + "diff_apex_ft": 3.1, + "status": "severe", + "error_pattern": "CARRY_TOO_LONG" + }, + "wood2": { + "diff_carry_yd": -0.4, + "diff_total_yd": -4.8, + "diff_apex_ft": -3.3, + "status": "pass", + "error_pattern": null + }, + "wood_low_test_shot": { + "diff_carry_yd": 1.3, + "diff_total_yd": 22.0, + "diff_apex_ft": 0.3, + "status": "severe", + "error_pattern": "ROLLOUT_TOO_LONG" + } + }, + "regressions": [], + "conflicts": [ + "Bounce.FlightTangentialRetentionBase", + "Bounce.FlightSpinFactorMin", + "Bounce.FlightSpinFactorDivisor", + "Rollout.MidSpinMultiplierMax", + "Rollout.HighSpinMultiplierMax", + "Rollout.FrictionBlendSpeed", + "KineticFrictionMultiplier", + "Bounce.RolloutHighSpinRetention", + "Bounce.CorBaseA", + "Rollout.LowSpinMultiplierMax", + "Rollout.LowSpinThreshold", + "RollingFrictionMultiplier", + "Bounce.RolloutLowSpinRetention", + "Rollout.ChipVelocityScaleMin", + "Rollout.ChipVelocityScaleMax", + "Flight.ClMaxBase", + "Flight.CdMin", + "DragScaleMultiplier", + "LiftScaleMultiplier", + "Flight.HighLaunchDragBoostMax" + ] +} diff --git a/assets/data/calibration/history/iteration_065.json b/assets/data/calibration/history/iteration_065.json new file mode 100644 index 0000000..71f2a12 --- /dev/null +++ b/assets/data/calibration/history/iteration_065.json @@ -0,0 +1,988 @@ +{ + "iteration": 65, + "timestamp": "2026-03-14T03:15:07.388821", + "profile_overrides": {}, + "summary": { + "pass": 37, + "moderate": 35, + "severe": 57, + "no_reference": 7 + }, + "per_shot": { + "5iron": { + "diff_carry_yd": 4.8, + "diff_total_yd": 11.3, + "diff_apex_ft": 4.6, + "status": "severe", + "error_pattern": "CARRY_AND_ROLLOUT_LONG" + }, + "approach_mid_iron_test_shot": { + "diff_carry_yd": -0.6, + "diff_total_yd": 7.3, + "diff_apex_ft": -5.0, + "status": "moderate", + "error_pattern": "ROLLOUT_TOO_LONG" + }, + "bump_and_run": { + "diff_carry_yd": -6.1, + "diff_total_yd": -24.6, + "diff_apex_ft": -1.5, + "status": "severe", + "error_pattern": "CARRY_AND_ROLLOUT_SHORT" + }, + "bump_and_run_slow": { + "diff_carry_yd": null, + "diff_total_yd": null, + "diff_apex_ft": null, + "status": "pass", + "error_pattern": null + }, + "bump_test_shot": { + "diff_carry_yd": -2.1, + "diff_total_yd": 12.7, + "diff_apex_ft": -0.1, + "status": "severe", + "error_pattern": "ROLLOUT_TOO_LONG" + }, + "checked_test_shot": { + "diff_carry_yd": -2.1, + "diff_total_yd": -0.5, + "diff_apex_ft": -9.6, + "status": "pass", + "error_pattern": null + }, + "chip_test_shot": { + "diff_carry_yd": null, + "diff_total_yd": null, + "diff_apex_ft": null, + "status": "pass", + "error_pattern": null + }, + "drive_test_shot": { + "diff_carry_yd": -6.1, + "diff_total_yd": -5.9, + "diff_apex_ft": -2.8, + "status": "moderate", + "error_pattern": "CARRY_AND_ROLLOUT_SHORT" + }, + "driver1": { + "diff_carry_yd": -0.3, + "diff_total_yd": -26.3, + "diff_apex_ft": -0.8, + "status": "severe", + "error_pattern": "ROLLOUT_TOO_SHORT" + }, + "driver2": { + "diff_carry_yd": 2.8, + "diff_total_yd": 2.9, + "diff_apex_ft": -4.3, + "status": "pass", + "error_pattern": null + }, + "driver3": { + "diff_carry_yd": 0.9, + "diff_total_yd": 15.9, + "diff_apex_ft": 17.6, + "status": "severe", + "error_pattern": "ROLLOUT_TOO_LONG" + }, + "driver4": { + "diff_carry_yd": 1.3, + "diff_total_yd": 9.3, + "diff_apex_ft": 2.4, + "status": "moderate", + "error_pattern": "ROLLOUT_TOO_LONG" + }, + "flop_test_shot": { + "diff_carry_yd": -0.2, + "diff_total_yd": 1.6, + "diff_apex_ft": -8.5, + "status": "pass", + "error_pattern": null + }, + "p_wedge_shot_1": { + "diff_carry_yd": 3.9, + "diff_total_yd": 12.3, + "diff_apex_ft": -0.2, + "status": "severe", + "error_pattern": "CARRY_AND_ROLLOUT_LONG" + }, + "s2_shot_10": { + "diff_carry_yd": 3.4, + "diff_total_yd": 10.2, + "diff_apex_ft": -6.0, + "status": "severe", + "error_pattern": "CARRY_AND_ROLLOUT_LONG" + }, + "s2_shot_11": { + "diff_carry_yd": -1.1, + "diff_total_yd": 2.8, + "diff_apex_ft": -3.6, + "status": "pass", + "error_pattern": null + }, + "s2_shot_12": { + "diff_carry_yd": 2.0, + "diff_total_yd": 6.0, + "diff_apex_ft": -6.2, + "status": "moderate", + "error_pattern": "ROLLOUT_TOO_LONG" + }, + "s2_shot_13": { + "diff_carry_yd": -1.1, + "diff_total_yd": 0.7, + "diff_apex_ft": -6.9, + "status": "pass", + "error_pattern": null + }, + "s2_shot_14": { + "diff_carry_yd": -2.3, + "diff_total_yd": -0.4, + "diff_apex_ft": -6.6, + "status": "pass", + "error_pattern": null + }, + "s2_shot_15": { + "diff_carry_yd": -1.0, + "diff_total_yd": -12.7, + "diff_apex_ft": -2.0, + "status": "severe", + "error_pattern": "ROLLOUT_TOO_SHORT" + }, + "s2_shot_16": { + "diff_carry_yd": -0.3, + "diff_total_yd": 2.2, + "diff_apex_ft": -3.5, + "status": "pass", + "error_pattern": null + }, + "s2_shot_17": { + "diff_carry_yd": 0.9, + "diff_total_yd": 4.7, + "diff_apex_ft": -5.1, + "status": "pass", + "error_pattern": null + }, + "s2_shot_18": { + "diff_carry_yd": -2.1, + "diff_total_yd": 7.2, + "diff_apex_ft": -3.5, + "status": "moderate", + "error_pattern": "ROLLOUT_TOO_LONG" + }, + "s2_shot_19": { + "diff_carry_yd": -2.1, + "diff_total_yd": -10.5, + "diff_apex_ft": -2.2, + "status": "severe", + "error_pattern": "ROLLOUT_TOO_SHORT" + }, + "s2_shot_20": { + "diff_carry_yd": 1.5, + "diff_total_yd": 7.5, + "diff_apex_ft": -3.0, + "status": "moderate", + "error_pattern": "ROLLOUT_TOO_LONG" + }, + "s2_shot_21": { + "diff_carry_yd": 4.9, + "diff_total_yd": 27.7, + "diff_apex_ft": 1.7, + "status": "severe", + "error_pattern": "CARRY_AND_ROLLOUT_LONG" + }, + "s2_shot_22": { + "diff_carry_yd": 0.6, + "diff_total_yd": -2.4, + "diff_apex_ft": -2.7, + "status": "pass", + "error_pattern": null + }, + "s2_shot_23": { + "diff_carry_yd": 3.5, + "diff_total_yd": -19.6, + "diff_apex_ft": 0.0, + "status": "severe", + "error_pattern": "CARRY_TOO_LONG" + }, + "s2_shot_24": { + "diff_carry_yd": 0.5, + "diff_total_yd": -1.5, + "diff_apex_ft": -3.0, + "status": "pass", + "error_pattern": null + }, + "s2_shot_26": { + "diff_carry_yd": 1.7, + "diff_total_yd": 20.6, + "diff_apex_ft": 23.5, + "status": "severe", + "error_pattern": "ROLLOUT_TOO_LONG" + }, + "s2_shot_27": { + "diff_carry_yd": -1.4, + "diff_total_yd": 9.2, + "diff_apex_ft": 3.2, + "status": "moderate", + "error_pattern": "ROLLOUT_TOO_LONG" + }, + "s2_shot_9": { + "diff_carry_yd": -3.3, + "diff_total_yd": 1.6, + "diff_apex_ft": 7.1, + "status": "moderate", + "error_pattern": "CARRY_TOO_SHORT" + }, + "s3_shot_3w_18": { + "diff_carry_yd": null, + "diff_total_yd": null, + "diff_apex_ft": null, + "status": "pass", + "error_pattern": null + }, + "s3_shot_3w_19": { + "diff_carry_yd": -0.6, + "diff_total_yd": 16.0, + "diff_apex_ft": 0.1, + "status": "severe", + "error_pattern": "ROLLOUT_TOO_LONG" + }, + "s3_shot_3w_21": { + "diff_carry_yd": 0.6, + "diff_total_yd": 15.9, + "diff_apex_ft": 0.3, + "status": "severe", + "error_pattern": "ROLLOUT_TOO_LONG" + }, + "s3_shot_3w_22": { + "diff_carry_yd": 2.6, + "diff_total_yd": 19.6, + "diff_apex_ft": 0.5, + "status": "severe", + "error_pattern": "ROLLOUT_TOO_LONG" + }, + "s3_shot_3w_23": { + "diff_carry_yd": 0.1, + "diff_total_yd": -23.3, + "diff_apex_ft": -1.3, + "status": "severe", + "error_pattern": "ROLLOUT_TOO_SHORT" + }, + "s3_shot_3w_24": { + "diff_carry_yd": 6.9, + "diff_total_yd": 28.4, + "diff_apex_ft": 1.8, + "status": "severe", + "error_pattern": "CARRY_AND_ROLLOUT_LONG" + }, + "s3_shot_5i_10": { + "diff_carry_yd": 2.5, + "diff_total_yd": -7.6, + "diff_apex_ft": 5.8, + "status": "moderate", + "error_pattern": "ROLLOUT_TOO_SHORT" + }, + "s3_shot_5i_11": { + "diff_carry_yd": -3.7, + "diff_total_yd": -17.6, + "diff_apex_ft": -1.3, + "status": "severe", + "error_pattern": "CARRY_AND_ROLLOUT_SHORT" + }, + "s3_shot_5i_12": { + "diff_carry_yd": 1.1, + "diff_total_yd": -23.5, + "diff_apex_ft": 1.1, + "status": "severe", + "error_pattern": "ROLLOUT_TOO_SHORT" + }, + "s3_shot_5i_13": { + "diff_carry_yd": 2.3, + "diff_total_yd": 10.1, + "diff_apex_ft": 0.6, + "status": "severe", + "error_pattern": "ROLLOUT_TOO_LONG" + }, + "s3_shot_5i_15": { + "diff_carry_yd": -4.6, + "diff_total_yd": 14.5, + "diff_apex_ft": -1.1, + "status": "severe", + "error_pattern": "CARRY_TOO_SHORT" + }, + "s3_shot_5i_16": { + "diff_carry_yd": 0.9, + "diff_total_yd": -21.0, + "diff_apex_ft": -0.2, + "status": "severe", + "error_pattern": "ROLLOUT_TOO_SHORT" + }, + "s3_shot_5i_17": { + "diff_carry_yd": 1.6, + "diff_total_yd": 4.3, + "diff_apex_ft": 0.2, + "status": "pass", + "error_pattern": null + }, + "s3_shot_6i_35": { + "diff_carry_yd": -3.5, + "diff_total_yd": -14.9, + "diff_apex_ft": -2.8, + "status": "severe", + "error_pattern": "CARRY_AND_ROLLOUT_SHORT" + }, + "s3_shot_6i_36": { + "diff_carry_yd": 3.7, + "diff_total_yd": -19.2, + "diff_apex_ft": 1.0, + "status": "severe", + "error_pattern": "CARRY_TOO_LONG" + }, + "s3_shot_6i_37": { + "diff_carry_yd": -3.7, + "diff_total_yd": 11.9, + "diff_apex_ft": -0.9, + "status": "severe", + "error_pattern": "CARRY_TOO_SHORT" + }, + "s3_shot_6i_38": { + "diff_carry_yd": -3.6, + "diff_total_yd": -21.7, + "diff_apex_ft": 0.1, + "status": "severe", + "error_pattern": "CARRY_AND_ROLLOUT_SHORT" + }, + "s3_shot_6i_39": { + "diff_carry_yd": -0.5, + "diff_total_yd": 6.4, + "diff_apex_ft": 0.0, + "status": "moderate", + "error_pattern": "ROLLOUT_TOO_LONG" + }, + "s3_shot_6i_40": { + "diff_carry_yd": -1.3, + "diff_total_yd": 7.7, + "diff_apex_ft": 0.1, + "status": "moderate", + "error_pattern": "ROLLOUT_TOO_LONG" + }, + "s3_shot_6i_41": { + "diff_carry_yd": -4.7, + "diff_total_yd": 12.9, + "diff_apex_ft": -1.0, + "status": "severe", + "error_pattern": "CARRY_TOO_SHORT" + }, + "s3_shot_6i_42": { + "diff_carry_yd": 0.5, + "diff_total_yd": -15.8, + "diff_apex_ft": 1.3, + "status": "severe", + "error_pattern": "ROLLOUT_TOO_SHORT" + }, + "s3_shot_6i_43": { + "diff_carry_yd": 5.6, + "diff_total_yd": -0.2, + "diff_apex_ft": 7.8, + "status": "moderate", + "error_pattern": "CARRY_TOO_LONG" + }, + "s3_shot_6i_44": { + "diff_carry_yd": -1.8, + "diff_total_yd": -28.0, + "diff_apex_ft": -1.4, + "status": "severe", + "error_pattern": "ROLLOUT_TOO_SHORT" + }, + "s3_shot_6i_45": { + "diff_carry_yd": 3.0, + "diff_total_yd": 20.4, + "diff_apex_ft": 0.5, + "status": "severe", + "error_pattern": "ROLLOUT_TOO_LONG" + }, + "s3_shot_6i_46": { + "diff_carry_yd": -1.0, + "diff_total_yd": -8.5, + "diff_apex_ft": -3.0, + "status": "moderate", + "error_pattern": "ROLLOUT_TOO_SHORT" + }, + "s3_shot_6i_47": { + "diff_carry_yd": 6.1, + "diff_total_yd": 8.3, + "diff_apex_ft": 11.4, + "status": "moderate", + "error_pattern": "CARRY_AND_ROLLOUT_LONG" + }, + "s3_shot_6i_48": { + "diff_carry_yd": 5.3, + "diff_total_yd": 8.8, + "diff_apex_ft": 13.8, + "status": "moderate", + "error_pattern": "CARRY_AND_ROLLOUT_LONG" + }, + "s3_shot_6i_49": { + "diff_carry_yd": -2.5, + "diff_total_yd": 6.9, + "diff_apex_ft": -0.3, + "status": "moderate", + "error_pattern": "ROLLOUT_TOO_LONG" + }, + "s3_shot_6i_50": { + "diff_carry_yd": -0.9, + "diff_total_yd": -12.5, + "diff_apex_ft": 3.8, + "status": "severe", + "error_pattern": "ROLLOUT_TOO_SHORT" + }, + "s3_shot_7i_25": { + "diff_carry_yd": -0.9, + "diff_total_yd": -18.4, + "diff_apex_ft": 0.9, + "status": "severe", + "error_pattern": "ROLLOUT_TOO_SHORT" + }, + "s3_shot_7i_26": { + "diff_carry_yd": 1.5, + "diff_total_yd": -22.1, + "diff_apex_ft": 1.1, + "status": "severe", + "error_pattern": "ROLLOUT_TOO_SHORT" + }, + "s3_shot_7i_27": { + "diff_carry_yd": 1.2, + "diff_total_yd": 4.7, + "diff_apex_ft": 7.7, + "status": "pass", + "error_pattern": null + }, + "s3_shot_7i_28": { + "diff_carry_yd": 0.5, + "diff_total_yd": 1.5, + "diff_apex_ft": 8.1, + "status": "pass", + "error_pattern": null + }, + "s3_shot_7i_29": { + "diff_carry_yd": 0.1, + "diff_total_yd": -6.6, + "diff_apex_ft": -3.6, + "status": "moderate", + "error_pattern": "ROLLOUT_TOO_SHORT" + }, + "s3_shot_7i_30": { + "diff_carry_yd": -0.7, + "diff_total_yd": 1.0, + "diff_apex_ft": 5.3, + "status": "pass", + "error_pattern": null + }, + "s3_shot_7i_31": { + "diff_carry_yd": -3.4, + "diff_total_yd": -12.9, + "diff_apex_ft": -3.7, + "status": "severe", + "error_pattern": "CARRY_AND_ROLLOUT_SHORT" + }, + "s3_shot_7i_32": { + "diff_carry_yd": -2.4, + "diff_total_yd": -2.8, + "diff_apex_ft": 3.0, + "status": "pass", + "error_pattern": null + }, + "s3_shot_7i_33": { + "diff_carry_yd": -2.2, + "diff_total_yd": -1.9, + "diff_apex_ft": 4.5, + "status": "pass", + "error_pattern": null + }, + "s3_shot_7i_34": { + "diff_carry_yd": 3.6, + "diff_total_yd": 2.0, + "diff_apex_ft": 3.0, + "status": "moderate", + "error_pattern": "CARRY_TOO_LONG" + }, + "s3_shot_9i_1": { + "diff_carry_yd": -1.9, + "diff_total_yd": -13.0, + "diff_apex_ft": 1.2, + "status": "severe", + "error_pattern": "ROLLOUT_TOO_SHORT" + }, + "s3_shot_9i_2": { + "diff_carry_yd": -4.9, + "diff_total_yd": -5.5, + "diff_apex_ft": -1.5, + "status": "moderate", + "error_pattern": "CARRY_AND_ROLLOUT_SHORT" + }, + "s3_shot_9i_3": { + "diff_carry_yd": -1.9, + "diff_total_yd": 1.4, + "diff_apex_ft": -5.4, + "status": "pass", + "error_pattern": null + }, + "s3_shot_9i_5": { + "diff_carry_yd": 2.7, + "diff_total_yd": 0.1, + "diff_apex_ft": -3.4, + "status": "pass", + "error_pattern": null + }, + "s3_shot_9i_7": { + "diff_carry_yd": 0.6, + "diff_total_yd": 1.1, + "diff_apex_ft": -4.3, + "status": "pass", + "error_pattern": null + }, + "s3_shot_9i_8": { + "diff_carry_yd": -2.3, + "diff_total_yd": 4.7, + "diff_apex_ft": -1.8, + "status": "pass", + "error_pattern": null + }, + "s3_shot_9i_9": { + "diff_carry_yd": -1.8, + "diff_total_yd": 2.3, + "diff_apex_ft": -6.3, + "status": "pass", + "error_pattern": null + }, + "s3_shot_driver_51": { + "diff_carry_yd": 3.2, + "diff_total_yd": 19.2, + "diff_apex_ft": -7.9, + "status": "severe", + "error_pattern": "CARRY_AND_ROLLOUT_LONG" + }, + "s3_shot_driver_52": { + "diff_carry_yd": 3.7, + "diff_total_yd": 18.3, + "diff_apex_ft": -6.6, + "status": "severe", + "error_pattern": "CARRY_AND_ROLLOUT_LONG" + }, + "s3_shot_driver_53": { + "diff_carry_yd": 0.1, + "diff_total_yd": 10.3, + "diff_apex_ft": -8.4, + "status": "severe", + "error_pattern": "ROLLOUT_TOO_LONG" + }, + "s3_shot_driver_54": { + "diff_carry_yd": 0.5, + "diff_total_yd": -4.9, + "diff_apex_ft": -3.5, + "status": "pass", + "error_pattern": null + }, + "s3_shot_driver_55": { + "diff_carry_yd": 2.0, + "diff_total_yd": 21.7, + "diff_apex_ft": 0.4, + "status": "severe", + "error_pattern": "ROLLOUT_TOO_LONG" + }, + "s3_shot_driver_56": { + "diff_carry_yd": -0.8, + "diff_total_yd": 13.7, + "diff_apex_ft": 7.2, + "status": "severe", + "error_pattern": "ROLLOUT_TOO_LONG" + }, + "s3_shot_driver_57": { + "diff_carry_yd": -8.9, + "diff_total_yd": -23.5, + "diff_apex_ft": -4.3, + "status": "severe", + "error_pattern": "CARRY_AND_ROLLOUT_SHORT" + }, + "s3_shot_driver_58": { + "diff_carry_yd": 9.3, + "diff_total_yd": 24.5, + "diff_apex_ft": -13.0, + "status": "severe", + "error_pattern": "CARRY_AND_ROLLOUT_LONG" + }, + "s3_shot_driver_59": { + "diff_carry_yd": -1.6, + "diff_total_yd": 14.4, + "diff_apex_ft": -4.2, + "status": "severe", + "error_pattern": "ROLLOUT_TOO_LONG" + }, + "s3_shot_driver_60": { + "diff_carry_yd": -0.6, + "diff_total_yd": -15.4, + "diff_apex_ft": -2.5, + "status": "severe", + "error_pattern": "ROLLOUT_TOO_SHORT" + }, + "s3_shot_pw_64": { + "diff_carry_yd": 1.6, + "diff_total_yd": 4.9, + "diff_apex_ft": -0.5, + "status": "pass", + "error_pattern": null + }, + "s3_shot_pw_65": { + "diff_carry_yd": 1.0, + "diff_total_yd": 6.2, + "diff_apex_ft": -2.9, + "status": "moderate", + "error_pattern": "ROLLOUT_TOO_LONG" + }, + "s3_shot_pw_66": { + "diff_carry_yd": -1.6, + "diff_total_yd": 0.9, + "diff_apex_ft": -3.0, + "status": "pass", + "error_pattern": null + }, + "s3_shot_pw_67": { + "diff_carry_yd": 1.3, + "diff_total_yd": 7.2, + "diff_apex_ft": -3.1, + "status": "moderate", + "error_pattern": "ROLLOUT_TOO_LONG" + }, + "s3_shot_pw_68": { + "diff_carry_yd": 0.6, + "diff_total_yd": 3.9, + "diff_apex_ft": -7.0, + "status": "pass", + "error_pattern": null + }, + "s3_shot_pw_69": { + "diff_carry_yd": -3.2, + "diff_total_yd": 11.6, + "diff_apex_ft": -3.9, + "status": "severe", + "error_pattern": "CARRY_TOO_SHORT" + }, + "s4_shot_3w_31": { + "diff_carry_yd": -0.1, + "diff_total_yd": -3.6, + "diff_apex_ft": -3.6, + "status": "pass", + "error_pattern": null + }, + "s4_shot_3w_32": { + "diff_carry_yd": -1.7, + "diff_total_yd": 4.4, + "diff_apex_ft": -4.3, + "status": "pass", + "error_pattern": null + }, + "s4_shot_3w_33": { + "diff_carry_yd": 6.4, + "diff_total_yd": 9.6, + "diff_apex_ft": -9.1, + "status": "moderate", + "error_pattern": "CARRY_AND_ROLLOUT_LONG" + }, + "s4_shot_3w_34": { + "diff_carry_yd": -0.7, + "diff_total_yd": -2.0, + "diff_apex_ft": -3.9, + "status": "pass", + "error_pattern": null + }, + "s4_shot_3w_35": { + "diff_carry_yd": -0.2, + "diff_total_yd": -2.7, + "diff_apex_ft": -4.7, + "status": "pass", + "error_pattern": null + }, + "s4_shot_5i_25": { + "diff_carry_yd": -2.9, + "diff_total_yd": -7.2, + "diff_apex_ft": -5.5, + "status": "moderate", + "error_pattern": "ROLLOUT_TOO_SHORT" + }, + "s4_shot_5i_26": { + "diff_carry_yd": 3.1, + "diff_total_yd": 5.0, + "diff_apex_ft": 2.9, + "status": "moderate", + "error_pattern": "CARRY_TOO_LONG" + }, + "s4_shot_5i_27": { + "diff_carry_yd": -2.0, + "diff_total_yd": 10.8, + "diff_apex_ft": -0.2, + "status": "severe", + "error_pattern": "ROLLOUT_TOO_LONG" + }, + "s4_shot_5i_28": { + "diff_carry_yd": -0.2, + "diff_total_yd": -6.9, + "diff_apex_ft": 5.0, + "status": "moderate", + "error_pattern": "ROLLOUT_TOO_SHORT" + }, + "s4_shot_5i_29": { + "diff_carry_yd": 6.3, + "diff_total_yd": 13.8, + "diff_apex_ft": 1.0, + "status": "severe", + "error_pattern": "CARRY_AND_ROLLOUT_LONG" + }, + "s4_shot_5i_30": { + "diff_carry_yd": 2.4, + "diff_total_yd": 1.6, + "diff_apex_ft": -7.8, + "status": "pass", + "error_pattern": null + }, + "s4_shot_6i_19": { + "diff_carry_yd": -0.5, + "diff_total_yd": -11.5, + "diff_apex_ft": 0.2, + "status": "severe", + "error_pattern": "ROLLOUT_TOO_SHORT" + }, + "s4_shot_6i_20": { + "diff_carry_yd": -0.1, + "diff_total_yd": 11.4, + "diff_apex_ft": 0.0, + "status": "severe", + "error_pattern": "ROLLOUT_TOO_LONG" + }, + "s4_shot_6i_21": { + "diff_carry_yd": 0.9, + "diff_total_yd": -1.5, + "diff_apex_ft": -6.8, + "status": "pass", + "error_pattern": null + }, + "s4_shot_6i_22": { + "diff_carry_yd": 4.5, + "diff_total_yd": 10.8, + "diff_apex_ft": 0.9, + "status": "severe", + "error_pattern": "CARRY_AND_ROLLOUT_LONG" + }, + "s4_shot_6i_23": { + "diff_carry_yd": null, + "diff_total_yd": null, + "diff_apex_ft": null, + "status": "pass", + "error_pattern": null + }, + "s4_shot_6i_24": { + "diff_carry_yd": null, + "diff_total_yd": null, + "diff_apex_ft": null, + "status": "pass", + "error_pattern": null + }, + "s4_shot_9i_13": { + "diff_carry_yd": null, + "diff_total_yd": null, + "diff_apex_ft": null, + "status": "pass", + "error_pattern": null + }, + "s4_shot_9i_14": { + "diff_carry_yd": -2.1, + "diff_total_yd": -0.4, + "diff_apex_ft": -7.0, + "status": "pass", + "error_pattern": null + }, + "s4_shot_9i_15": { + "diff_carry_yd": -2.9, + "diff_total_yd": 10.8, + "diff_apex_ft": -3.7, + "status": "severe", + "error_pattern": "ROLLOUT_TOO_LONG" + }, + "s4_shot_9i_17": { + "diff_carry_yd": -0.2, + "diff_total_yd": -14.8, + "diff_apex_ft": -0.1, + "status": "severe", + "error_pattern": "ROLLOUT_TOO_SHORT" + }, + "s4_shot_9i_18": { + "diff_carry_yd": -2.8, + "diff_total_yd": 8.7, + "diff_apex_ft": -3.5, + "status": "moderate", + "error_pattern": "ROLLOUT_TOO_LONG" + }, + "s4_shot_lw_38": { + "diff_carry_yd": -1.9, + "diff_total_yd": 7.8, + "diff_apex_ft": -1.6, + "status": "moderate", + "error_pattern": "ROLLOUT_TOO_LONG" + }, + "s4_shot_pw_1": { + "diff_carry_yd": -2.6, + "diff_total_yd": -8.4, + "diff_apex_ft": 2.1, + "status": "moderate", + "error_pattern": "ROLLOUT_TOO_SHORT" + }, + "s4_shot_pw_10": { + "diff_carry_yd": -1.1, + "diff_total_yd": 1.9, + "diff_apex_ft": -3.4, + "status": "pass", + "error_pattern": null + }, + "s4_shot_pw_11": { + "diff_carry_yd": -1.1, + "diff_total_yd": 1.5, + "diff_apex_ft": -3.0, + "status": "pass", + "error_pattern": null + }, + "s4_shot_pw_2": { + "diff_carry_yd": 0.4, + "diff_total_yd": 12.2, + "diff_apex_ft": 0.4, + "status": "severe", + "error_pattern": "ROLLOUT_TOO_LONG" + }, + "s4_shot_pw_3": { + "diff_carry_yd": -3.8, + "diff_total_yd": 8.1, + "diff_apex_ft": -2.3, + "status": "moderate", + "error_pattern": "CARRY_TOO_SHORT" + }, + "s4_shot_pw_47": { + "diff_carry_yd": -0.6, + "diff_total_yd": 9.5, + "diff_apex_ft": 0.0, + "status": "moderate", + "error_pattern": "ROLLOUT_TOO_LONG" + }, + "s4_shot_pw_48": { + "diff_carry_yd": -0.7, + "diff_total_yd": 8.4, + "diff_apex_ft": 0.0, + "status": "moderate", + "error_pattern": "ROLLOUT_TOO_LONG" + }, + "s4_shot_pw_49": { + "diff_carry_yd": -4.2, + "diff_total_yd": 4.6, + "diff_apex_ft": -1.1, + "status": "moderate", + "error_pattern": "CARRY_TOO_SHORT" + }, + "s4_shot_pw_6": { + "diff_carry_yd": -2.9, + "diff_total_yd": -1.9, + "diff_apex_ft": -1.0, + "status": "pass", + "error_pattern": null + }, + "s4_shot_pw_7": { + "diff_carry_yd": -0.5, + "diff_total_yd": 0.7, + "diff_apex_ft": -2.9, + "status": "pass", + "error_pattern": null + }, + "s4_shot_pw_9": { + "diff_carry_yd": null, + "diff_total_yd": null, + "diff_apex_ft": null, + "status": "pass", + "error_pattern": null + }, + "topped_test_shot": { + "diff_carry_yd": -0.7, + "diff_total_yd": 13.8, + "diff_apex_ft": -0.1, + "status": "severe", + "error_pattern": "ROLLOUT_TOO_LONG" + }, + "wedge_shot_1": { + "diff_carry_yd": -1.5, + "diff_total_yd": 6.2, + "diff_apex_ft": -0.8, + "status": "moderate", + "error_pattern": "ROLLOUT_TOO_LONG" + }, + "wedge_shot_2": { + "diff_carry_yd": -1.5, + "diff_total_yd": 9.6, + "diff_apex_ft": -1.1, + "status": "moderate", + "error_pattern": "ROLLOUT_TOO_LONG" + }, + "wedge_test_shot": { + "diff_carry_yd": -5.3, + "diff_total_yd": 3.2, + "diff_apex_ft": -3.2, + "status": "moderate", + "error_pattern": "CARRY_TOO_SHORT" + }, + "wedge_test_shot2": { + "diff_carry_yd": 1.1, + "diff_total_yd": 12.4, + "diff_apex_ft": 0.8, + "status": "severe", + "error_pattern": "ROLLOUT_TOO_LONG" + }, + "wood1": { + "diff_carry_yd": 11.9, + "diff_total_yd": -4.0, + "diff_apex_ft": 3.1, + "status": "severe", + "error_pattern": "CARRY_TOO_LONG" + }, + "wood2": { + "diff_carry_yd": -0.4, + "diff_total_yd": -4.8, + "diff_apex_ft": -3.3, + "status": "pass", + "error_pattern": null + }, + "wood_low_test_shot": { + "diff_carry_yd": 1.3, + "diff_total_yd": 22.0, + "diff_apex_ft": 0.3, + "status": "severe", + "error_pattern": "ROLLOUT_TOO_LONG" + } + }, + "regressions": [], + "conflicts": [ + "Bounce.FlightTangentialRetentionBase", + "Bounce.FlightSpinFactorMin", + "Bounce.FlightSpinFactorDivisor", + "Rollout.MidSpinMultiplierMax", + "Rollout.HighSpinMultiplierMax", + "Rollout.FrictionBlendSpeed", + "KineticFrictionMultiplier", + "Bounce.RolloutHighSpinRetention", + "Bounce.CorBaseA", + "Rollout.LowSpinMultiplierMax", + "Rollout.LowSpinThreshold", + "RollingFrictionMultiplier", + "Bounce.RolloutLowSpinRetention", + "Rollout.ChipVelocityScaleMin", + "Rollout.ChipVelocityScaleMax", + "Flight.ClMaxBase", + "Flight.CdMin", + "DragScaleMultiplier", + "LiftScaleMultiplier", + "Flight.HighLaunchDragBoostMax" + ] +} diff --git a/assets/data/calibration/history/iteration_066.json b/assets/data/calibration/history/iteration_066.json new file mode 100644 index 0000000..67f35dc --- /dev/null +++ b/assets/data/calibration/history/iteration_066.json @@ -0,0 +1,967 @@ +{ + "iteration": 66, + "timestamp": "2026-03-14T03:44:25.982916", + "profile_overrides": {}, + "summary": { + "pass": 0, + "moderate": 0, + "severe": 0, + "no_reference": 136 + }, + "per_shot": { + "5iron": { + "diff_carry_yd": null, + "diff_total_yd": null, + "diff_apex_ft": null, + "status": "pass", + "error_pattern": null + }, + "approach_mid_iron_test_shot": { + "diff_carry_yd": null, + "diff_total_yd": null, + "diff_apex_ft": null, + "status": "pass", + "error_pattern": null + }, + "bump_and_run": { + "diff_carry_yd": null, + "diff_total_yd": null, + "diff_apex_ft": null, + "status": "pass", + "error_pattern": null + }, + "bump_and_run_slow": { + "diff_carry_yd": null, + "diff_total_yd": null, + "diff_apex_ft": null, + "status": "pass", + "error_pattern": null + }, + "bump_test_shot": { + "diff_carry_yd": null, + "diff_total_yd": null, + "diff_apex_ft": null, + "status": "pass", + "error_pattern": null + }, + "checked_test_shot": { + "diff_carry_yd": null, + "diff_total_yd": null, + "diff_apex_ft": null, + "status": "pass", + "error_pattern": null + }, + "chip_test_shot": { + "diff_carry_yd": null, + "diff_total_yd": null, + "diff_apex_ft": null, + "status": "pass", + "error_pattern": null + }, + "drive_test_shot": { + "diff_carry_yd": null, + "diff_total_yd": null, + "diff_apex_ft": null, + "status": "pass", + "error_pattern": null + }, + "driver1": { + "diff_carry_yd": null, + "diff_total_yd": null, + "diff_apex_ft": null, + "status": "pass", + "error_pattern": null + }, + "driver2": { + "diff_carry_yd": null, + "diff_total_yd": null, + "diff_apex_ft": null, + "status": "pass", + "error_pattern": null + }, + "driver3": { + "diff_carry_yd": null, + "diff_total_yd": null, + "diff_apex_ft": null, + "status": "pass", + "error_pattern": null + }, + "driver4": { + "diff_carry_yd": null, + "diff_total_yd": null, + "diff_apex_ft": null, + "status": "pass", + "error_pattern": null + }, + "flop_test_shot": { + "diff_carry_yd": null, + "diff_total_yd": null, + "diff_apex_ft": null, + "status": "pass", + "error_pattern": null + }, + "p_wedge_shot_1": { + "diff_carry_yd": null, + "diff_total_yd": null, + "diff_apex_ft": null, + "status": "pass", + "error_pattern": null + }, + "s2_shot_10": { + "diff_carry_yd": null, + "diff_total_yd": null, + "diff_apex_ft": null, + "status": "pass", + "error_pattern": null + }, + "s2_shot_11": { + "diff_carry_yd": null, + "diff_total_yd": null, + "diff_apex_ft": null, + "status": "pass", + "error_pattern": null + }, + "s2_shot_12": { + "diff_carry_yd": null, + "diff_total_yd": null, + "diff_apex_ft": null, + "status": "pass", + "error_pattern": null + }, + "s2_shot_13": { + "diff_carry_yd": null, + "diff_total_yd": null, + "diff_apex_ft": null, + "status": "pass", + "error_pattern": null + }, + "s2_shot_14": { + "diff_carry_yd": null, + "diff_total_yd": null, + "diff_apex_ft": null, + "status": "pass", + "error_pattern": null + }, + "s2_shot_15": { + "diff_carry_yd": null, + "diff_total_yd": null, + "diff_apex_ft": null, + "status": "pass", + "error_pattern": null + }, + "s2_shot_16": { + "diff_carry_yd": null, + "diff_total_yd": null, + "diff_apex_ft": null, + "status": "pass", + "error_pattern": null + }, + "s2_shot_17": { + "diff_carry_yd": null, + "diff_total_yd": null, + "diff_apex_ft": null, + "status": "pass", + "error_pattern": null + }, + "s2_shot_18": { + "diff_carry_yd": null, + "diff_total_yd": null, + "diff_apex_ft": null, + "status": "pass", + "error_pattern": null + }, + "s2_shot_19": { + "diff_carry_yd": null, + "diff_total_yd": null, + "diff_apex_ft": null, + "status": "pass", + "error_pattern": null + }, + "s2_shot_20": { + "diff_carry_yd": null, + "diff_total_yd": null, + "diff_apex_ft": null, + "status": "pass", + "error_pattern": null + }, + "s2_shot_21": { + "diff_carry_yd": null, + "diff_total_yd": null, + "diff_apex_ft": null, + "status": "pass", + "error_pattern": null + }, + "s2_shot_22": { + "diff_carry_yd": null, + "diff_total_yd": null, + "diff_apex_ft": null, + "status": "pass", + "error_pattern": null + }, + "s2_shot_23": { + "diff_carry_yd": null, + "diff_total_yd": null, + "diff_apex_ft": null, + "status": "pass", + "error_pattern": null + }, + "s2_shot_24": { + "diff_carry_yd": null, + "diff_total_yd": null, + "diff_apex_ft": null, + "status": "pass", + "error_pattern": null + }, + "s2_shot_26": { + "diff_carry_yd": null, + "diff_total_yd": null, + "diff_apex_ft": null, + "status": "pass", + "error_pattern": null + }, + "s2_shot_27": { + "diff_carry_yd": null, + "diff_total_yd": null, + "diff_apex_ft": null, + "status": "pass", + "error_pattern": null + }, + "s2_shot_9": { + "diff_carry_yd": null, + "diff_total_yd": null, + "diff_apex_ft": null, + "status": "pass", + "error_pattern": null + }, + "s3_shot_3w_18": { + "diff_carry_yd": null, + "diff_total_yd": null, + "diff_apex_ft": null, + "status": "pass", + "error_pattern": null + }, + "s3_shot_3w_19": { + "diff_carry_yd": null, + "diff_total_yd": null, + "diff_apex_ft": null, + "status": "pass", + "error_pattern": null + }, + "s3_shot_3w_21": { + "diff_carry_yd": null, + "diff_total_yd": null, + "diff_apex_ft": null, + "status": "pass", + "error_pattern": null + }, + "s3_shot_3w_22": { + "diff_carry_yd": null, + "diff_total_yd": null, + "diff_apex_ft": null, + "status": "pass", + "error_pattern": null + }, + "s3_shot_3w_23": { + "diff_carry_yd": null, + "diff_total_yd": null, + "diff_apex_ft": null, + "status": "pass", + "error_pattern": null + }, + "s3_shot_3w_24": { + "diff_carry_yd": null, + "diff_total_yd": null, + "diff_apex_ft": null, + "status": "pass", + "error_pattern": null + }, + "s3_shot_5i_10": { + "diff_carry_yd": null, + "diff_total_yd": null, + "diff_apex_ft": null, + "status": "pass", + "error_pattern": null + }, + "s3_shot_5i_11": { + "diff_carry_yd": null, + "diff_total_yd": null, + "diff_apex_ft": null, + "status": "pass", + "error_pattern": null + }, + "s3_shot_5i_12": { + "diff_carry_yd": null, + "diff_total_yd": null, + "diff_apex_ft": null, + "status": "pass", + "error_pattern": null + }, + "s3_shot_5i_13": { + "diff_carry_yd": null, + "diff_total_yd": null, + "diff_apex_ft": null, + "status": "pass", + "error_pattern": null + }, + "s3_shot_5i_15": { + "diff_carry_yd": null, + "diff_total_yd": null, + "diff_apex_ft": null, + "status": "pass", + "error_pattern": null + }, + "s3_shot_5i_16": { + "diff_carry_yd": null, + "diff_total_yd": null, + "diff_apex_ft": null, + "status": "pass", + "error_pattern": null + }, + "s3_shot_5i_17": { + "diff_carry_yd": null, + "diff_total_yd": null, + "diff_apex_ft": null, + "status": "pass", + "error_pattern": null + }, + "s3_shot_6i_35": { + "diff_carry_yd": null, + "diff_total_yd": null, + "diff_apex_ft": null, + "status": "pass", + "error_pattern": null + }, + "s3_shot_6i_36": { + "diff_carry_yd": null, + "diff_total_yd": null, + "diff_apex_ft": null, + "status": "pass", + "error_pattern": null + }, + "s3_shot_6i_37": { + "diff_carry_yd": null, + "diff_total_yd": null, + "diff_apex_ft": null, + "status": "pass", + "error_pattern": null + }, + "s3_shot_6i_38": { + "diff_carry_yd": null, + "diff_total_yd": null, + "diff_apex_ft": null, + "status": "pass", + "error_pattern": null + }, + "s3_shot_6i_39": { + "diff_carry_yd": null, + "diff_total_yd": null, + "diff_apex_ft": null, + "status": "pass", + "error_pattern": null + }, + "s3_shot_6i_40": { + "diff_carry_yd": null, + "diff_total_yd": null, + "diff_apex_ft": null, + "status": "pass", + "error_pattern": null + }, + "s3_shot_6i_41": { + "diff_carry_yd": null, + "diff_total_yd": null, + "diff_apex_ft": null, + "status": "pass", + "error_pattern": null + }, + "s3_shot_6i_42": { + "diff_carry_yd": null, + "diff_total_yd": null, + "diff_apex_ft": null, + "status": "pass", + "error_pattern": null + }, + "s3_shot_6i_43": { + "diff_carry_yd": null, + "diff_total_yd": null, + "diff_apex_ft": null, + "status": "pass", + "error_pattern": null + }, + "s3_shot_6i_44": { + "diff_carry_yd": null, + "diff_total_yd": null, + "diff_apex_ft": null, + "status": "pass", + "error_pattern": null + }, + "s3_shot_6i_45": { + "diff_carry_yd": null, + "diff_total_yd": null, + "diff_apex_ft": null, + "status": "pass", + "error_pattern": null + }, + "s3_shot_6i_46": { + "diff_carry_yd": null, + "diff_total_yd": null, + "diff_apex_ft": null, + "status": "pass", + "error_pattern": null + }, + "s3_shot_6i_47": { + "diff_carry_yd": null, + "diff_total_yd": null, + "diff_apex_ft": null, + "status": "pass", + "error_pattern": null + }, + "s3_shot_6i_48": { + "diff_carry_yd": null, + "diff_total_yd": null, + "diff_apex_ft": null, + "status": "pass", + "error_pattern": null + }, + "s3_shot_6i_49": { + "diff_carry_yd": null, + "diff_total_yd": null, + "diff_apex_ft": null, + "status": "pass", + "error_pattern": null + }, + "s3_shot_6i_50": { + "diff_carry_yd": null, + "diff_total_yd": null, + "diff_apex_ft": null, + "status": "pass", + "error_pattern": null + }, + "s3_shot_7i_25": { + "diff_carry_yd": null, + "diff_total_yd": null, + "diff_apex_ft": null, + "status": "pass", + "error_pattern": null + }, + "s3_shot_7i_26": { + "diff_carry_yd": null, + "diff_total_yd": null, + "diff_apex_ft": null, + "status": "pass", + "error_pattern": null + }, + "s3_shot_7i_27": { + "diff_carry_yd": null, + "diff_total_yd": null, + "diff_apex_ft": null, + "status": "pass", + "error_pattern": null + }, + "s3_shot_7i_28": { + "diff_carry_yd": null, + "diff_total_yd": null, + "diff_apex_ft": null, + "status": "pass", + "error_pattern": null + }, + "s3_shot_7i_29": { + "diff_carry_yd": null, + "diff_total_yd": null, + "diff_apex_ft": null, + "status": "pass", + "error_pattern": null + }, + "s3_shot_7i_30": { + "diff_carry_yd": null, + "diff_total_yd": null, + "diff_apex_ft": null, + "status": "pass", + "error_pattern": null + }, + "s3_shot_7i_31": { + "diff_carry_yd": null, + "diff_total_yd": null, + "diff_apex_ft": null, + "status": "pass", + "error_pattern": null + }, + "s3_shot_7i_32": { + "diff_carry_yd": null, + "diff_total_yd": null, + "diff_apex_ft": null, + "status": "pass", + "error_pattern": null + }, + "s3_shot_7i_33": { + "diff_carry_yd": null, + "diff_total_yd": null, + "diff_apex_ft": null, + "status": "pass", + "error_pattern": null + }, + "s3_shot_7i_34": { + "diff_carry_yd": null, + "diff_total_yd": null, + "diff_apex_ft": null, + "status": "pass", + "error_pattern": null + }, + "s3_shot_9i_1": { + "diff_carry_yd": null, + "diff_total_yd": null, + "diff_apex_ft": null, + "status": "pass", + "error_pattern": null + }, + "s3_shot_9i_2": { + "diff_carry_yd": null, + "diff_total_yd": null, + "diff_apex_ft": null, + "status": "pass", + "error_pattern": null + }, + "s3_shot_9i_3": { + "diff_carry_yd": null, + "diff_total_yd": null, + "diff_apex_ft": null, + "status": "pass", + "error_pattern": null + }, + "s3_shot_9i_5": { + "diff_carry_yd": null, + "diff_total_yd": null, + "diff_apex_ft": null, + "status": "pass", + "error_pattern": null + }, + "s3_shot_9i_7": { + "diff_carry_yd": null, + "diff_total_yd": null, + "diff_apex_ft": null, + "status": "pass", + "error_pattern": null + }, + "s3_shot_9i_8": { + "diff_carry_yd": null, + "diff_total_yd": null, + "diff_apex_ft": null, + "status": "pass", + "error_pattern": null + }, + "s3_shot_9i_9": { + "diff_carry_yd": null, + "diff_total_yd": null, + "diff_apex_ft": null, + "status": "pass", + "error_pattern": null + }, + "s3_shot_driver_51": { + "diff_carry_yd": null, + "diff_total_yd": null, + "diff_apex_ft": null, + "status": "pass", + "error_pattern": null + }, + "s3_shot_driver_52": { + "diff_carry_yd": null, + "diff_total_yd": null, + "diff_apex_ft": null, + "status": "pass", + "error_pattern": null + }, + "s3_shot_driver_53": { + "diff_carry_yd": null, + "diff_total_yd": null, + "diff_apex_ft": null, + "status": "pass", + "error_pattern": null + }, + "s3_shot_driver_54": { + "diff_carry_yd": null, + "diff_total_yd": null, + "diff_apex_ft": null, + "status": "pass", + "error_pattern": null + }, + "s3_shot_driver_55": { + "diff_carry_yd": null, + "diff_total_yd": null, + "diff_apex_ft": null, + "status": "pass", + "error_pattern": null + }, + "s3_shot_driver_56": { + "diff_carry_yd": null, + "diff_total_yd": null, + "diff_apex_ft": null, + "status": "pass", + "error_pattern": null + }, + "s3_shot_driver_57": { + "diff_carry_yd": null, + "diff_total_yd": null, + "diff_apex_ft": null, + "status": "pass", + "error_pattern": null + }, + "s3_shot_driver_58": { + "diff_carry_yd": null, + "diff_total_yd": null, + "diff_apex_ft": null, + "status": "pass", + "error_pattern": null + }, + "s3_shot_driver_59": { + "diff_carry_yd": null, + "diff_total_yd": null, + "diff_apex_ft": null, + "status": "pass", + "error_pattern": null + }, + "s3_shot_driver_60": { + "diff_carry_yd": null, + "diff_total_yd": null, + "diff_apex_ft": null, + "status": "pass", + "error_pattern": null + }, + "s3_shot_pw_64": { + "diff_carry_yd": null, + "diff_total_yd": null, + "diff_apex_ft": null, + "status": "pass", + "error_pattern": null + }, + "s3_shot_pw_65": { + "diff_carry_yd": null, + "diff_total_yd": null, + "diff_apex_ft": null, + "status": "pass", + "error_pattern": null + }, + "s3_shot_pw_66": { + "diff_carry_yd": null, + "diff_total_yd": null, + "diff_apex_ft": null, + "status": "pass", + "error_pattern": null + }, + "s3_shot_pw_67": { + "diff_carry_yd": null, + "diff_total_yd": null, + "diff_apex_ft": null, + "status": "pass", + "error_pattern": null + }, + "s3_shot_pw_68": { + "diff_carry_yd": null, + "diff_total_yd": null, + "diff_apex_ft": null, + "status": "pass", + "error_pattern": null + }, + "s3_shot_pw_69": { + "diff_carry_yd": null, + "diff_total_yd": null, + "diff_apex_ft": null, + "status": "pass", + "error_pattern": null + }, + "s4_shot_3w_31": { + "diff_carry_yd": null, + "diff_total_yd": null, + "diff_apex_ft": null, + "status": "pass", + "error_pattern": null + }, + "s4_shot_3w_32": { + "diff_carry_yd": null, + "diff_total_yd": null, + "diff_apex_ft": null, + "status": "pass", + "error_pattern": null + }, + "s4_shot_3w_33": { + "diff_carry_yd": null, + "diff_total_yd": null, + "diff_apex_ft": null, + "status": "pass", + "error_pattern": null + }, + "s4_shot_3w_34": { + "diff_carry_yd": null, + "diff_total_yd": null, + "diff_apex_ft": null, + "status": "pass", + "error_pattern": null + }, + "s4_shot_3w_35": { + "diff_carry_yd": null, + "diff_total_yd": null, + "diff_apex_ft": null, + "status": "pass", + "error_pattern": null + }, + "s4_shot_5i_25": { + "diff_carry_yd": null, + "diff_total_yd": null, + "diff_apex_ft": null, + "status": "pass", + "error_pattern": null + }, + "s4_shot_5i_26": { + "diff_carry_yd": null, + "diff_total_yd": null, + "diff_apex_ft": null, + "status": "pass", + "error_pattern": null + }, + "s4_shot_5i_27": { + "diff_carry_yd": null, + "diff_total_yd": null, + "diff_apex_ft": null, + "status": "pass", + "error_pattern": null + }, + "s4_shot_5i_28": { + "diff_carry_yd": null, + "diff_total_yd": null, + "diff_apex_ft": null, + "status": "pass", + "error_pattern": null + }, + "s4_shot_5i_29": { + "diff_carry_yd": null, + "diff_total_yd": null, + "diff_apex_ft": null, + "status": "pass", + "error_pattern": null + }, + "s4_shot_5i_30": { + "diff_carry_yd": null, + "diff_total_yd": null, + "diff_apex_ft": null, + "status": "pass", + "error_pattern": null + }, + "s4_shot_6i_19": { + "diff_carry_yd": null, + "diff_total_yd": null, + "diff_apex_ft": null, + "status": "pass", + "error_pattern": null + }, + "s4_shot_6i_20": { + "diff_carry_yd": null, + "diff_total_yd": null, + "diff_apex_ft": null, + "status": "pass", + "error_pattern": null + }, + "s4_shot_6i_21": { + "diff_carry_yd": null, + "diff_total_yd": null, + "diff_apex_ft": null, + "status": "pass", + "error_pattern": null + }, + "s4_shot_6i_22": { + "diff_carry_yd": null, + "diff_total_yd": null, + "diff_apex_ft": null, + "status": "pass", + "error_pattern": null + }, + "s4_shot_6i_23": { + "diff_carry_yd": null, + "diff_total_yd": null, + "diff_apex_ft": null, + "status": "pass", + "error_pattern": null + }, + "s4_shot_6i_24": { + "diff_carry_yd": null, + "diff_total_yd": null, + "diff_apex_ft": null, + "status": "pass", + "error_pattern": null + }, + "s4_shot_9i_13": { + "diff_carry_yd": null, + "diff_total_yd": null, + "diff_apex_ft": null, + "status": "pass", + "error_pattern": null + }, + "s4_shot_9i_14": { + "diff_carry_yd": null, + "diff_total_yd": null, + "diff_apex_ft": null, + "status": "pass", + "error_pattern": null + }, + "s4_shot_9i_15": { + "diff_carry_yd": null, + "diff_total_yd": null, + "diff_apex_ft": null, + "status": "pass", + "error_pattern": null + }, + "s4_shot_9i_17": { + "diff_carry_yd": null, + "diff_total_yd": null, + "diff_apex_ft": null, + "status": "pass", + "error_pattern": null + }, + "s4_shot_9i_18": { + "diff_carry_yd": null, + "diff_total_yd": null, + "diff_apex_ft": null, + "status": "pass", + "error_pattern": null + }, + "s4_shot_lw_38": { + "diff_carry_yd": null, + "diff_total_yd": null, + "diff_apex_ft": null, + "status": "pass", + "error_pattern": null + }, + "s4_shot_pw_1": { + "diff_carry_yd": null, + "diff_total_yd": null, + "diff_apex_ft": null, + "status": "pass", + "error_pattern": null + }, + "s4_shot_pw_10": { + "diff_carry_yd": null, + "diff_total_yd": null, + "diff_apex_ft": null, + "status": "pass", + "error_pattern": null + }, + "s4_shot_pw_11": { + "diff_carry_yd": null, + "diff_total_yd": null, + "diff_apex_ft": null, + "status": "pass", + "error_pattern": null + }, + "s4_shot_pw_2": { + "diff_carry_yd": null, + "diff_total_yd": null, + "diff_apex_ft": null, + "status": "pass", + "error_pattern": null + }, + "s4_shot_pw_3": { + "diff_carry_yd": null, + "diff_total_yd": null, + "diff_apex_ft": null, + "status": "pass", + "error_pattern": null + }, + "s4_shot_pw_47": { + "diff_carry_yd": null, + "diff_total_yd": null, + "diff_apex_ft": null, + "status": "pass", + "error_pattern": null + }, + "s4_shot_pw_48": { + "diff_carry_yd": null, + "diff_total_yd": null, + "diff_apex_ft": null, + "status": "pass", + "error_pattern": null + }, + "s4_shot_pw_49": { + "diff_carry_yd": null, + "diff_total_yd": null, + "diff_apex_ft": null, + "status": "pass", + "error_pattern": null + }, + "s4_shot_pw_6": { + "diff_carry_yd": null, + "diff_total_yd": null, + "diff_apex_ft": null, + "status": "pass", + "error_pattern": null + }, + "s4_shot_pw_7": { + "diff_carry_yd": null, + "diff_total_yd": null, + "diff_apex_ft": null, + "status": "pass", + "error_pattern": null + }, + "s4_shot_pw_9": { + "diff_carry_yd": null, + "diff_total_yd": null, + "diff_apex_ft": null, + "status": "pass", + "error_pattern": null + }, + "topped_test_shot": { + "diff_carry_yd": null, + "diff_total_yd": null, + "diff_apex_ft": null, + "status": "pass", + "error_pattern": null + }, + "wedge_shot_1": { + "diff_carry_yd": null, + "diff_total_yd": null, + "diff_apex_ft": null, + "status": "pass", + "error_pattern": null + }, + "wedge_shot_2": { + "diff_carry_yd": null, + "diff_total_yd": null, + "diff_apex_ft": null, + "status": "pass", + "error_pattern": null + }, + "wedge_test_shot": { + "diff_carry_yd": null, + "diff_total_yd": null, + "diff_apex_ft": null, + "status": "pass", + "error_pattern": null + }, + "wedge_test_shot2": { + "diff_carry_yd": null, + "diff_total_yd": null, + "diff_apex_ft": null, + "status": "pass", + "error_pattern": null + }, + "wood1": { + "diff_carry_yd": null, + "diff_total_yd": null, + "diff_apex_ft": null, + "status": "pass", + "error_pattern": null + }, + "wood2": { + "diff_carry_yd": null, + "diff_total_yd": null, + "diff_apex_ft": null, + "status": "pass", + "error_pattern": null + }, + "wood_low_test_shot": { + "diff_carry_yd": null, + "diff_total_yd": null, + "diff_apex_ft": null, + "status": "pass", + "error_pattern": null + } + }, + "regressions": [], + "conflicts": [] +} diff --git a/assets/data/calibration/history/iteration_067.json b/assets/data/calibration/history/iteration_067.json new file mode 100644 index 0000000..9df1132 --- /dev/null +++ b/assets/data/calibration/history/iteration_067.json @@ -0,0 +1,1647 @@ +{ + "iteration": 67, + "timestamp": "2026-03-14T03:45:06.330610", + "profile_overrides": {}, + "summary": { + "pass": 35, + "moderate": 36, + "severe": 58, + "no_reference": 7 + }, + "per_shot": { + "5iron": { + "diff_carry_yd": 4.8, + "diff_total_yd": 11.3, + "diff_apex_ft": 4.6, + "status": "severe", + "error_pattern": "CARRY_AND_ROLLOUT_LONG" + }, + "approach_mid_iron_test_shot": { + "diff_carry_yd": -0.6, + "diff_total_yd": 7.3, + "diff_apex_ft": -5.0, + "status": "moderate", + "error_pattern": "ROLLOUT_TOO_LONG" + }, + "bump_and_run": { + "diff_carry_yd": -6.1, + "diff_total_yd": -24.6, + "diff_apex_ft": -1.5, + "status": "severe", + "error_pattern": "CARRY_AND_ROLLOUT_SHORT" + }, + "bump_and_run_slow": { + "diff_carry_yd": null, + "diff_total_yd": null, + "diff_apex_ft": null, + "status": "pass", + "error_pattern": null + }, + "bump_test_shot": { + "diff_carry_yd": -2.1, + "diff_total_yd": 12.7, + "diff_apex_ft": -0.1, + "status": "severe", + "error_pattern": "ROLLOUT_TOO_LONG" + }, + "checked_test_shot": { + "diff_carry_yd": -2.1, + "diff_total_yd": -0.5, + "diff_apex_ft": -9.6, + "status": "pass", + "error_pattern": null + }, + "chip_test_shot": { + "diff_carry_yd": null, + "diff_total_yd": null, + "diff_apex_ft": null, + "status": "pass", + "error_pattern": null + }, + "drive_test_shot": { + "diff_carry_yd": -6.1, + "diff_total_yd": -5.9, + "diff_apex_ft": -2.8, + "status": "moderate", + "error_pattern": "CARRY_AND_ROLLOUT_SHORT" + }, + "driver1": { + "diff_carry_yd": -0.3, + "diff_total_yd": -26.3, + "diff_apex_ft": -0.8, + "status": "severe", + "error_pattern": "ROLLOUT_TOO_SHORT" + }, + "driver2": { + "diff_carry_yd": 2.8, + "diff_total_yd": 2.9, + "diff_apex_ft": -4.3, + "status": "pass", + "error_pattern": null + }, + "driver3": { + "diff_carry_yd": 0.9, + "diff_total_yd": 15.9, + "diff_apex_ft": 17.6, + "status": "severe", + "error_pattern": "ROLLOUT_TOO_LONG" + }, + "driver4": { + "diff_carry_yd": 1.3, + "diff_total_yd": 9.3, + "diff_apex_ft": 2.4, + "status": "moderate", + "error_pattern": "ROLLOUT_TOO_LONG" + }, + "flop_test_shot": { + "diff_carry_yd": -0.2, + "diff_total_yd": 1.6, + "diff_apex_ft": -8.5, + "status": "pass", + "error_pattern": null + }, + "p_wedge_shot_1": { + "diff_carry_yd": 1.2, + "diff_total_yd": 8.8, + "diff_apex_ft": -2.2, + "status": "moderate", + "error_pattern": "ROLLOUT_TOO_LONG" + }, + "s2_shot_10": { + "diff_carry_yd": 3.4, + "diff_total_yd": 10.2, + "diff_apex_ft": -6.0, + "status": "severe", + "error_pattern": "CARRY_AND_ROLLOUT_LONG" + }, + "s2_shot_11": { + "diff_carry_yd": -2.6, + "diff_total_yd": 1.1, + "diff_apex_ft": -4.6, + "status": "pass", + "error_pattern": null + }, + "s2_shot_12": { + "diff_carry_yd": 2.0, + "diff_total_yd": 6.0, + "diff_apex_ft": -6.2, + "status": "moderate", + "error_pattern": "ROLLOUT_TOO_LONG" + }, + "s2_shot_13": { + "diff_carry_yd": -1.1, + "diff_total_yd": 0.7, + "diff_apex_ft": -6.9, + "status": "pass", + "error_pattern": null + }, + "s2_shot_14": { + "diff_carry_yd": -2.3, + "diff_total_yd": -0.4, + "diff_apex_ft": -6.6, + "status": "pass", + "error_pattern": null + }, + "s2_shot_15": { + "diff_carry_yd": -1.0, + "diff_total_yd": -12.7, + "diff_apex_ft": -2.0, + "status": "severe", + "error_pattern": "ROLLOUT_TOO_SHORT" + }, + "s2_shot_16": { + "diff_carry_yd": -0.3, + "diff_total_yd": 2.2, + "diff_apex_ft": -3.5, + "status": "pass", + "error_pattern": null + }, + "s2_shot_17": { + "diff_carry_yd": 0.9, + "diff_total_yd": 4.7, + "diff_apex_ft": -5.1, + "status": "pass", + "error_pattern": null + }, + "s2_shot_18": { + "diff_carry_yd": -2.1, + "diff_total_yd": 7.2, + "diff_apex_ft": -3.5, + "status": "moderate", + "error_pattern": "ROLLOUT_TOO_LONG" + }, + "s2_shot_19": { + "diff_carry_yd": -2.1, + "diff_total_yd": -10.5, + "diff_apex_ft": -2.2, + "status": "severe", + "error_pattern": "ROLLOUT_TOO_SHORT" + }, + "s2_shot_20": { + "diff_carry_yd": 1.5, + "diff_total_yd": 7.5, + "diff_apex_ft": -3.0, + "status": "moderate", + "error_pattern": "ROLLOUT_TOO_LONG" + }, + "s2_shot_21": { + "diff_carry_yd": 4.9, + "diff_total_yd": 27.7, + "diff_apex_ft": 1.7, + "status": "severe", + "error_pattern": "CARRY_AND_ROLLOUT_LONG" + }, + "s2_shot_22": { + "diff_carry_yd": 0.6, + "diff_total_yd": -2.4, + "diff_apex_ft": -2.7, + "status": "pass", + "error_pattern": null + }, + "s2_shot_23": { + "diff_carry_yd": 3.5, + "diff_total_yd": -19.6, + "diff_apex_ft": 0.0, + "status": "severe", + "error_pattern": "CARRY_TOO_LONG" + }, + "s2_shot_24": { + "diff_carry_yd": 0.5, + "diff_total_yd": -1.5, + "diff_apex_ft": -3.0, + "status": "pass", + "error_pattern": null + }, + "s2_shot_26": { + "diff_carry_yd": 1.7, + "diff_total_yd": 20.6, + "diff_apex_ft": 23.5, + "status": "severe", + "error_pattern": "ROLLOUT_TOO_LONG" + }, + "s2_shot_27": { + "diff_carry_yd": -1.4, + "diff_total_yd": 9.2, + "diff_apex_ft": 3.2, + "status": "moderate", + "error_pattern": "ROLLOUT_TOO_LONG" + }, + "s2_shot_9": { + "diff_carry_yd": -3.3, + "diff_total_yd": 1.6, + "diff_apex_ft": 7.1, + "status": "moderate", + "error_pattern": "CARRY_TOO_SHORT" + }, + "s3_shot_3w_18": { + "diff_carry_yd": null, + "diff_total_yd": null, + "diff_apex_ft": null, + "status": "pass", + "error_pattern": null + }, + "s3_shot_3w_19": { + "diff_carry_yd": -0.6, + "diff_total_yd": 16.0, + "diff_apex_ft": 0.1, + "status": "severe", + "error_pattern": "ROLLOUT_TOO_LONG" + }, + "s3_shot_3w_21": { + "diff_carry_yd": 0.6, + "diff_total_yd": 15.9, + "diff_apex_ft": 0.3, + "status": "severe", + "error_pattern": "ROLLOUT_TOO_LONG" + }, + "s3_shot_3w_22": { + "diff_carry_yd": 2.6, + "diff_total_yd": 19.6, + "diff_apex_ft": 0.5, + "status": "severe", + "error_pattern": "ROLLOUT_TOO_LONG" + }, + "s3_shot_3w_23": { + "diff_carry_yd": 0.1, + "diff_total_yd": -23.3, + "diff_apex_ft": -1.3, + "status": "severe", + "error_pattern": "ROLLOUT_TOO_SHORT" + }, + "s3_shot_3w_24": { + "diff_carry_yd": 6.9, + "diff_total_yd": 28.4, + "diff_apex_ft": 1.8, + "status": "severe", + "error_pattern": "CARRY_AND_ROLLOUT_LONG" + }, + "s3_shot_5i_10": { + "diff_carry_yd": 2.5, + "diff_total_yd": -7.6, + "diff_apex_ft": 5.8, + "status": "moderate", + "error_pattern": "ROLLOUT_TOO_SHORT" + }, + "s3_shot_5i_11": { + "diff_carry_yd": -3.7, + "diff_total_yd": -17.6, + "diff_apex_ft": -1.3, + "status": "severe", + "error_pattern": "CARRY_AND_ROLLOUT_SHORT" + }, + "s3_shot_5i_12": { + "diff_carry_yd": 1.1, + "diff_total_yd": -23.5, + "diff_apex_ft": 1.1, + "status": "severe", + "error_pattern": "ROLLOUT_TOO_SHORT" + }, + "s3_shot_5i_13": { + "diff_carry_yd": 2.3, + "diff_total_yd": 10.1, + "diff_apex_ft": 0.6, + "status": "severe", + "error_pattern": "ROLLOUT_TOO_LONG" + }, + "s3_shot_5i_15": { + "diff_carry_yd": -4.6, + "diff_total_yd": 14.5, + "diff_apex_ft": -1.1, + "status": "severe", + "error_pattern": "CARRY_TOO_SHORT" + }, + "s3_shot_5i_16": { + "diff_carry_yd": 0.9, + "diff_total_yd": -21.0, + "diff_apex_ft": -0.2, + "status": "severe", + "error_pattern": "ROLLOUT_TOO_SHORT" + }, + "s3_shot_5i_17": { + "diff_carry_yd": 1.6, + "diff_total_yd": 4.3, + "diff_apex_ft": 0.2, + "status": "pass", + "error_pattern": null + }, + "s3_shot_6i_35": { + "diff_carry_yd": -4.4, + "diff_total_yd": -15.9, + "diff_apex_ft": -3.1, + "status": "severe", + "error_pattern": "CARRY_AND_ROLLOUT_SHORT" + }, + "s3_shot_6i_36": { + "diff_carry_yd": 2.8, + "diff_total_yd": -20.0, + "diff_apex_ft": 0.8, + "status": "severe", + "error_pattern": "ROLLOUT_TOO_SHORT" + }, + "s3_shot_6i_37": { + "diff_carry_yd": -3.7, + "diff_total_yd": 11.9, + "diff_apex_ft": -0.9, + "status": "severe", + "error_pattern": "CARRY_TOO_SHORT" + }, + "s3_shot_6i_38": { + "diff_carry_yd": -3.6, + "diff_total_yd": -21.7, + "diff_apex_ft": 0.1, + "status": "severe", + "error_pattern": "CARRY_AND_ROLLOUT_SHORT" + }, + "s3_shot_6i_39": { + "diff_carry_yd": -0.5, + "diff_total_yd": 6.4, + "diff_apex_ft": 0.0, + "status": "moderate", + "error_pattern": "ROLLOUT_TOO_LONG" + }, + "s3_shot_6i_40": { + "diff_carry_yd": -1.3, + "diff_total_yd": 7.7, + "diff_apex_ft": 0.1, + "status": "moderate", + "error_pattern": "ROLLOUT_TOO_LONG" + }, + "s3_shot_6i_41": { + "diff_carry_yd": -4.7, + "diff_total_yd": 12.9, + "diff_apex_ft": -1.0, + "status": "severe", + "error_pattern": "CARRY_TOO_SHORT" + }, + "s3_shot_6i_42": { + "diff_carry_yd": -0.4, + "diff_total_yd": -16.7, + "diff_apex_ft": 1.0, + "status": "severe", + "error_pattern": "ROLLOUT_TOO_SHORT" + }, + "s3_shot_6i_43": { + "diff_carry_yd": 5.6, + "diff_total_yd": -0.2, + "diff_apex_ft": 7.8, + "status": "moderate", + "error_pattern": "CARRY_TOO_LONG" + }, + "s3_shot_6i_44": { + "diff_carry_yd": -1.8, + "diff_total_yd": -28.0, + "diff_apex_ft": -1.4, + "status": "severe", + "error_pattern": "ROLLOUT_TOO_SHORT" + }, + "s3_shot_6i_45": { + "diff_carry_yd": 3.0, + "diff_total_yd": 20.4, + "diff_apex_ft": 0.5, + "status": "severe", + "error_pattern": "ROLLOUT_TOO_LONG" + }, + "s3_shot_6i_46": { + "diff_carry_yd": -1.0, + "diff_total_yd": -8.5, + "diff_apex_ft": -3.0, + "status": "moderate", + "error_pattern": "ROLLOUT_TOO_SHORT" + }, + "s3_shot_6i_47": { + "diff_carry_yd": 6.1, + "diff_total_yd": 8.3, + "diff_apex_ft": 11.4, + "status": "moderate", + "error_pattern": "CARRY_AND_ROLLOUT_LONG" + }, + "s3_shot_6i_48": { + "diff_carry_yd": 5.3, + "diff_total_yd": 8.8, + "diff_apex_ft": 13.8, + "status": "moderate", + "error_pattern": "CARRY_AND_ROLLOUT_LONG" + }, + "s3_shot_6i_49": { + "diff_carry_yd": -2.5, + "diff_total_yd": 6.9, + "diff_apex_ft": -0.3, + "status": "moderate", + "error_pattern": "ROLLOUT_TOO_LONG" + }, + "s3_shot_6i_50": { + "diff_carry_yd": -0.9, + "diff_total_yd": -12.5, + "diff_apex_ft": 3.8, + "status": "severe", + "error_pattern": "ROLLOUT_TOO_SHORT" + }, + "s3_shot_7i_25": { + "diff_carry_yd": -0.9, + "diff_total_yd": -18.4, + "diff_apex_ft": 0.9, + "status": "severe", + "error_pattern": "ROLLOUT_TOO_SHORT" + }, + "s3_shot_7i_26": { + "diff_carry_yd": 1.5, + "diff_total_yd": -22.1, + "diff_apex_ft": 1.1, + "status": "severe", + "error_pattern": "ROLLOUT_TOO_SHORT" + }, + "s3_shot_7i_27": { + "diff_carry_yd": 1.2, + "diff_total_yd": 4.7, + "diff_apex_ft": 7.7, + "status": "pass", + "error_pattern": null + }, + "s3_shot_7i_28": { + "diff_carry_yd": 0.5, + "diff_total_yd": 1.5, + "diff_apex_ft": 8.1, + "status": "pass", + "error_pattern": null + }, + "s3_shot_7i_29": { + "diff_carry_yd": 0.1, + "diff_total_yd": -6.6, + "diff_apex_ft": -3.6, + "status": "moderate", + "error_pattern": "ROLLOUT_TOO_SHORT" + }, + "s3_shot_7i_30": { + "diff_carry_yd": -0.7, + "diff_total_yd": 1.0, + "diff_apex_ft": 5.3, + "status": "pass", + "error_pattern": null + }, + "s3_shot_7i_31": { + "diff_carry_yd": -4.3, + "diff_total_yd": -13.8, + "diff_apex_ft": -4.0, + "status": "severe", + "error_pattern": "CARRY_AND_ROLLOUT_SHORT" + }, + "s3_shot_7i_32": { + "diff_carry_yd": -2.4, + "diff_total_yd": -2.8, + "diff_apex_ft": 3.0, + "status": "pass", + "error_pattern": null + }, + "s3_shot_7i_33": { + "diff_carry_yd": -2.2, + "diff_total_yd": -1.9, + "diff_apex_ft": 4.5, + "status": "pass", + "error_pattern": null + }, + "s3_shot_7i_34": { + "diff_carry_yd": 3.6, + "diff_total_yd": 2.0, + "diff_apex_ft": 3.0, + "status": "moderate", + "error_pattern": "CARRY_TOO_LONG" + }, + "s3_shot_9i_1": { + "diff_carry_yd": -1.9, + "diff_total_yd": -13.0, + "diff_apex_ft": 1.2, + "status": "severe", + "error_pattern": "ROLLOUT_TOO_SHORT" + }, + "s3_shot_9i_2": { + "diff_carry_yd": -3.4, + "diff_total_yd": -3.7, + "diff_apex_ft": -0.6, + "status": "moderate", + "error_pattern": "CARRY_TOO_SHORT" + }, + "s3_shot_9i_3": { + "diff_carry_yd": -1.9, + "diff_total_yd": 1.4, + "diff_apex_ft": -5.4, + "status": "pass", + "error_pattern": null + }, + "s3_shot_9i_5": { + "diff_carry_yd": 0.3, + "diff_total_yd": -2.4, + "diff_apex_ft": -4.4, + "status": "pass", + "error_pattern": null + }, + "s3_shot_9i_7": { + "diff_carry_yd": 0.6, + "diff_total_yd": 1.1, + "diff_apex_ft": -4.3, + "status": "pass", + "error_pattern": null + }, + "s3_shot_9i_8": { + "diff_carry_yd": -2.3, + "diff_total_yd": 4.7, + "diff_apex_ft": -1.8, + "status": "pass", + "error_pattern": null + }, + "s3_shot_9i_9": { + "diff_carry_yd": -1.8, + "diff_total_yd": 2.3, + "diff_apex_ft": -6.3, + "status": "pass", + "error_pattern": null + }, + "s3_shot_driver_51": { + "diff_carry_yd": 3.2, + "diff_total_yd": 19.2, + "diff_apex_ft": -7.9, + "status": "severe", + "error_pattern": "CARRY_AND_ROLLOUT_LONG" + }, + "s3_shot_driver_52": { + "diff_carry_yd": 3.7, + "diff_total_yd": 18.3, + "diff_apex_ft": -6.6, + "status": "severe", + "error_pattern": "CARRY_AND_ROLLOUT_LONG" + }, + "s3_shot_driver_53": { + "diff_carry_yd": 0.1, + "diff_total_yd": 10.3, + "diff_apex_ft": -8.4, + "status": "severe", + "error_pattern": "ROLLOUT_TOO_LONG" + }, + "s3_shot_driver_54": { + "diff_carry_yd": 0.5, + "diff_total_yd": -4.9, + "diff_apex_ft": -3.5, + "status": "pass", + "error_pattern": null + }, + "s3_shot_driver_55": { + "diff_carry_yd": 2.0, + "diff_total_yd": 21.7, + "diff_apex_ft": 0.4, + "status": "severe", + "error_pattern": "ROLLOUT_TOO_LONG" + }, + "s3_shot_driver_56": { + "diff_carry_yd": -0.8, + "diff_total_yd": 13.7, + "diff_apex_ft": 7.2, + "status": "severe", + "error_pattern": "ROLLOUT_TOO_LONG" + }, + "s3_shot_driver_57": { + "diff_carry_yd": -8.9, + "diff_total_yd": -23.5, + "diff_apex_ft": -4.3, + "status": "severe", + "error_pattern": "CARRY_AND_ROLLOUT_SHORT" + }, + "s3_shot_driver_58": { + "diff_carry_yd": 9.3, + "diff_total_yd": 24.5, + "diff_apex_ft": -13.0, + "status": "severe", + "error_pattern": "CARRY_AND_ROLLOUT_LONG" + }, + "s3_shot_driver_59": { + "diff_carry_yd": -1.6, + "diff_total_yd": 14.4, + "diff_apex_ft": -4.2, + "status": "severe", + "error_pattern": "ROLLOUT_TOO_LONG" + }, + "s3_shot_driver_60": { + "diff_carry_yd": -0.6, + "diff_total_yd": -15.4, + "diff_apex_ft": -2.5, + "status": "severe", + "error_pattern": "ROLLOUT_TOO_SHORT" + }, + "s3_shot_pw_64": { + "diff_carry_yd": 3.4, + "diff_total_yd": 6.3, + "diff_apex_ft": 0.6, + "status": "moderate", + "error_pattern": "CARRY_AND_ROLLOUT_LONG" + }, + "s3_shot_pw_65": { + "diff_carry_yd": -0.6, + "diff_total_yd": 4.2, + "diff_apex_ft": -4.0, + "status": "pass", + "error_pattern": null + }, + "s3_shot_pw_66": { + "diff_carry_yd": -3.0, + "diff_total_yd": 10.8, + "diff_apex_ft": -3.9, + "status": "severe", + "error_pattern": "ROLLOUT_TOO_LONG" + }, + "s3_shot_pw_67": { + "diff_carry_yd": -0.4, + "diff_total_yd": 5.2, + "diff_apex_ft": -4.1, + "status": "moderate", + "error_pattern": "ROLLOUT_TOO_LONG" + }, + "s3_shot_pw_68": { + "diff_carry_yd": 0.6, + "diff_total_yd": 3.9, + "diff_apex_ft": -7.0, + "status": "pass", + "error_pattern": null + }, + "s3_shot_pw_69": { + "diff_carry_yd": -3.2, + "diff_total_yd": 11.6, + "diff_apex_ft": -3.9, + "status": "severe", + "error_pattern": "CARRY_TOO_SHORT" + }, + "s4_shot_3w_31": { + "diff_carry_yd": -0.1, + "diff_total_yd": -3.6, + "diff_apex_ft": -3.6, + "status": "pass", + "error_pattern": null + }, + "s4_shot_3w_32": { + "diff_carry_yd": -1.7, + "diff_total_yd": 4.4, + "diff_apex_ft": -4.3, + "status": "pass", + "error_pattern": null + }, + "s4_shot_3w_33": { + "diff_carry_yd": 6.4, + "diff_total_yd": 9.6, + "diff_apex_ft": -9.1, + "status": "moderate", + "error_pattern": "CARRY_AND_ROLLOUT_LONG" + }, + "s4_shot_3w_34": { + "diff_carry_yd": -0.7, + "diff_total_yd": -2.0, + "diff_apex_ft": -3.9, + "status": "pass", + "error_pattern": null + }, + "s4_shot_3w_35": { + "diff_carry_yd": -0.2, + "diff_total_yd": -2.7, + "diff_apex_ft": -4.7, + "status": "pass", + "error_pattern": null + }, + "s4_shot_5i_25": { + "diff_carry_yd": -2.9, + "diff_total_yd": -7.2, + "diff_apex_ft": -5.5, + "status": "moderate", + "error_pattern": "ROLLOUT_TOO_SHORT" + }, + "s4_shot_5i_26": { + "diff_carry_yd": 3.1, + "diff_total_yd": 5.0, + "diff_apex_ft": 2.9, + "status": "moderate", + "error_pattern": "CARRY_TOO_LONG" + }, + "s4_shot_5i_27": { + "diff_carry_yd": -2.0, + "diff_total_yd": 10.8, + "diff_apex_ft": -0.2, + "status": "severe", + "error_pattern": "ROLLOUT_TOO_LONG" + }, + "s4_shot_5i_28": { + "diff_carry_yd": -0.2, + "diff_total_yd": -6.9, + "diff_apex_ft": 5.0, + "status": "moderate", + "error_pattern": "ROLLOUT_TOO_SHORT" + }, + "s4_shot_5i_29": { + "diff_carry_yd": 6.3, + "diff_total_yd": 13.8, + "diff_apex_ft": 1.0, + "status": "severe", + "error_pattern": "CARRY_AND_ROLLOUT_LONG" + }, + "s4_shot_5i_30": { + "diff_carry_yd": 2.4, + "diff_total_yd": 1.6, + "diff_apex_ft": -7.8, + "status": "pass", + "error_pattern": null + }, + "s4_shot_6i_19": { + "diff_carry_yd": -0.5, + "diff_total_yd": -11.5, + "diff_apex_ft": 0.2, + "status": "severe", + "error_pattern": "ROLLOUT_TOO_SHORT" + }, + "s4_shot_6i_20": { + "diff_carry_yd": -0.1, + "diff_total_yd": 11.4, + "diff_apex_ft": 0.0, + "status": "severe", + "error_pattern": "ROLLOUT_TOO_LONG" + }, + "s4_shot_6i_21": { + "diff_carry_yd": 0.9, + "diff_total_yd": -1.5, + "diff_apex_ft": -6.8, + "status": "pass", + "error_pattern": null + }, + "s4_shot_6i_22": { + "diff_carry_yd": 4.5, + "diff_total_yd": 10.8, + "diff_apex_ft": 0.9, + "status": "severe", + "error_pattern": "CARRY_AND_ROLLOUT_LONG" + }, + "s4_shot_6i_23": { + "diff_carry_yd": null, + "diff_total_yd": null, + "diff_apex_ft": null, + "status": "pass", + "error_pattern": null + }, + "s4_shot_6i_24": { + "diff_carry_yd": null, + "diff_total_yd": null, + "diff_apex_ft": null, + "status": "pass", + "error_pattern": null + }, + "s4_shot_9i_13": { + "diff_carry_yd": null, + "diff_total_yd": null, + "diff_apex_ft": null, + "status": "pass", + "error_pattern": null + }, + "s4_shot_9i_14": { + "diff_carry_yd": -2.1, + "diff_total_yd": -0.4, + "diff_apex_ft": -7.0, + "status": "pass", + "error_pattern": null + }, + "s4_shot_9i_15": { + "diff_carry_yd": -2.9, + "diff_total_yd": 10.8, + "diff_apex_ft": -3.7, + "status": "severe", + "error_pattern": "ROLLOUT_TOO_LONG" + }, + "s4_shot_9i_17": { + "diff_carry_yd": -1.1, + "diff_total_yd": -15.7, + "diff_apex_ft": -0.3, + "status": "severe", + "error_pattern": "ROLLOUT_TOO_SHORT" + }, + "s4_shot_9i_18": { + "diff_carry_yd": -2.8, + "diff_total_yd": 8.7, + "diff_apex_ft": -3.5, + "status": "moderate", + "error_pattern": "ROLLOUT_TOO_LONG" + }, + "s4_shot_lw_38": { + "diff_carry_yd": -1.9, + "diff_total_yd": 7.8, + "diff_apex_ft": -1.6, + "status": "moderate", + "error_pattern": "ROLLOUT_TOO_LONG" + }, + "s4_shot_pw_1": { + "diff_carry_yd": -1.0, + "diff_total_yd": -6.7, + "diff_apex_ft": 3.1, + "status": "moderate", + "error_pattern": "ROLLOUT_TOO_SHORT" + }, + "s4_shot_pw_10": { + "diff_carry_yd": -2.4, + "diff_total_yd": 0.4, + "diff_apex_ft": -4.2, + "status": "pass", + "error_pattern": null + }, + "s4_shot_pw_11": { + "diff_carry_yd": -2.6, + "diff_total_yd": 0.4, + "diff_apex_ft": -3.8, + "status": "pass", + "error_pattern": null + }, + "s4_shot_pw_2": { + "diff_carry_yd": 0.4, + "diff_total_yd": 12.2, + "diff_apex_ft": 0.4, + "status": "severe", + "error_pattern": "ROLLOUT_TOO_LONG" + }, + "s4_shot_pw_3": { + "diff_carry_yd": -2.9, + "diff_total_yd": 9.4, + "diff_apex_ft": -1.7, + "status": "moderate", + "error_pattern": "ROLLOUT_TOO_LONG" + }, + "s4_shot_pw_47": { + "diff_carry_yd": -0.6, + "diff_total_yd": 9.5, + "diff_apex_ft": 0.0, + "status": "moderate", + "error_pattern": "ROLLOUT_TOO_LONG" + }, + "s4_shot_pw_48": { + "diff_carry_yd": -0.7, + "diff_total_yd": 8.4, + "diff_apex_ft": 0.0, + "status": "moderate", + "error_pattern": "ROLLOUT_TOO_LONG" + }, + "s4_shot_pw_49": { + "diff_carry_yd": -3.2, + "diff_total_yd": 9.0, + "diff_apex_ft": -0.7, + "status": "moderate", + "error_pattern": "CARRY_TOO_SHORT" + }, + "s4_shot_pw_6": { + "diff_carry_yd": -1.3, + "diff_total_yd": -0.1, + "diff_apex_ft": -0.1, + "status": "pass", + "error_pattern": null + }, + "s4_shot_pw_7": { + "diff_carry_yd": -2.0, + "diff_total_yd": 12.2, + "diff_apex_ft": -3.7, + "status": "severe", + "error_pattern": "ROLLOUT_TOO_LONG" + }, + "s4_shot_pw_9": { + "diff_carry_yd": null, + "diff_total_yd": null, + "diff_apex_ft": null, + "status": "pass", + "error_pattern": null + }, + "topped_test_shot": { + "diff_carry_yd": -0.7, + "diff_total_yd": 13.8, + "diff_apex_ft": -0.1, + "status": "severe", + "error_pattern": "ROLLOUT_TOO_LONG" + }, + "wedge_shot_1": { + "diff_carry_yd": -1.5, + "diff_total_yd": 6.2, + "diff_apex_ft": -0.8, + "status": "moderate", + "error_pattern": "ROLLOUT_TOO_LONG" + }, + "wedge_shot_2": { + "diff_carry_yd": -1.5, + "diff_total_yd": 9.6, + "diff_apex_ft": -1.1, + "status": "moderate", + "error_pattern": "ROLLOUT_TOO_LONG" + }, + "wedge_test_shot": { + "diff_carry_yd": -5.3, + "diff_total_yd": 3.2, + "diff_apex_ft": -3.2, + "status": "moderate", + "error_pattern": "CARRY_TOO_SHORT" + }, + "wedge_test_shot2": { + "diff_carry_yd": 1.1, + "diff_total_yd": 12.4, + "diff_apex_ft": 0.8, + "status": "severe", + "error_pattern": "ROLLOUT_TOO_LONG" + }, + "wood1": { + "diff_carry_yd": 11.9, + "diff_total_yd": -4.0, + "diff_apex_ft": 3.1, + "status": "severe", + "error_pattern": "CARRY_TOO_LONG" + }, + "wood2": { + "diff_carry_yd": -0.4, + "diff_total_yd": -4.8, + "diff_apex_ft": -3.3, + "status": "pass", + "error_pattern": null + }, + "wood_low_test_shot": { + "diff_carry_yd": 1.3, + "diff_total_yd": 22.0, + "diff_apex_ft": 0.3, + "status": "severe", + "error_pattern": "ROLLOUT_TOO_LONG" + } + }, + "regressions": [ + { + "shot": "5iron", + "was": "pass", + "now": "severe", + "prev_total_diff": null, + "curr_total_diff": 11.3 + }, + { + "shot": "approach_mid_iron_test_shot", + "was": "pass", + "now": "moderate", + "prev_total_diff": null, + "curr_total_diff": 7.3 + }, + { + "shot": "bump_and_run", + "was": "pass", + "now": "severe", + "prev_total_diff": null, + "curr_total_diff": -24.6 + }, + { + "shot": "bump_test_shot", + "was": "pass", + "now": "severe", + "prev_total_diff": null, + "curr_total_diff": 12.7 + }, + { + "shot": "drive_test_shot", + "was": "pass", + "now": "moderate", + "prev_total_diff": null, + "curr_total_diff": -5.9 + }, + { + "shot": "driver1", + "was": "pass", + "now": "severe", + "prev_total_diff": null, + "curr_total_diff": -26.3 + }, + { + "shot": "driver3", + "was": "pass", + "now": "severe", + "prev_total_diff": null, + "curr_total_diff": 15.9 + }, + { + "shot": "driver4", + "was": "pass", + "now": "moderate", + "prev_total_diff": null, + "curr_total_diff": 9.3 + }, + { + "shot": "p_wedge_shot_1", + "was": "pass", + "now": "moderate", + "prev_total_diff": null, + "curr_total_diff": 8.8 + }, + { + "shot": "s2_shot_10", + "was": "pass", + "now": "severe", + "prev_total_diff": null, + "curr_total_diff": 10.2 + }, + { + "shot": "s2_shot_12", + "was": "pass", + "now": "moderate", + "prev_total_diff": null, + "curr_total_diff": 6.0 + }, + { + "shot": "s2_shot_15", + "was": "pass", + "now": "severe", + "prev_total_diff": null, + "curr_total_diff": -12.7 + }, + { + "shot": "s2_shot_18", + "was": "pass", + "now": "moderate", + "prev_total_diff": null, + "curr_total_diff": 7.2 + }, + { + "shot": "s2_shot_19", + "was": "pass", + "now": "severe", + "prev_total_diff": null, + "curr_total_diff": -10.5 + }, + { + "shot": "s2_shot_20", + "was": "pass", + "now": "moderate", + "prev_total_diff": null, + "curr_total_diff": 7.5 + }, + { + "shot": "s2_shot_21", + "was": "pass", + "now": "severe", + "prev_total_diff": null, + "curr_total_diff": 27.7 + }, + { + "shot": "s2_shot_23", + "was": "pass", + "now": "severe", + "prev_total_diff": null, + "curr_total_diff": -19.6 + }, + { + "shot": "s2_shot_26", + "was": "pass", + "now": "severe", + "prev_total_diff": null, + "curr_total_diff": 20.6 + }, + { + "shot": "s2_shot_27", + "was": "pass", + "now": "moderate", + "prev_total_diff": null, + "curr_total_diff": 9.2 + }, + { + "shot": "s2_shot_9", + "was": "pass", + "now": "moderate", + "prev_total_diff": null, + "curr_total_diff": 1.6 + }, + { + "shot": "s3_shot_3w_19", + "was": "pass", + "now": "severe", + "prev_total_diff": null, + "curr_total_diff": 16.0 + }, + { + "shot": "s3_shot_3w_21", + "was": "pass", + "now": "severe", + "prev_total_diff": null, + "curr_total_diff": 15.9 + }, + { + "shot": "s3_shot_3w_22", + "was": "pass", + "now": "severe", + "prev_total_diff": null, + "curr_total_diff": 19.6 + }, + { + "shot": "s3_shot_3w_23", + "was": "pass", + "now": "severe", + "prev_total_diff": null, + "curr_total_diff": -23.3 + }, + { + "shot": "s3_shot_3w_24", + "was": "pass", + "now": "severe", + "prev_total_diff": null, + "curr_total_diff": 28.4 + }, + { + "shot": "s3_shot_5i_10", + "was": "pass", + "now": "moderate", + "prev_total_diff": null, + "curr_total_diff": -7.6 + }, + { + "shot": "s3_shot_5i_11", + "was": "pass", + "now": "severe", + "prev_total_diff": null, + "curr_total_diff": -17.6 + }, + { + "shot": "s3_shot_5i_12", + "was": "pass", + "now": "severe", + "prev_total_diff": null, + "curr_total_diff": -23.5 + }, + { + "shot": "s3_shot_5i_13", + "was": "pass", + "now": "severe", + "prev_total_diff": null, + "curr_total_diff": 10.1 + }, + { + "shot": "s3_shot_5i_15", + "was": "pass", + "now": "severe", + "prev_total_diff": null, + "curr_total_diff": 14.5 + }, + { + "shot": "s3_shot_5i_16", + "was": "pass", + "now": "severe", + "prev_total_diff": null, + "curr_total_diff": -21.0 + }, + { + "shot": "s3_shot_6i_35", + "was": "pass", + "now": "severe", + "prev_total_diff": null, + "curr_total_diff": -15.9 + }, + { + "shot": "s3_shot_6i_36", + "was": "pass", + "now": "severe", + "prev_total_diff": null, + "curr_total_diff": -20.0 + }, + { + "shot": "s3_shot_6i_37", + "was": "pass", + "now": "severe", + "prev_total_diff": null, + "curr_total_diff": 11.9 + }, + { + "shot": "s3_shot_6i_38", + "was": "pass", + "now": "severe", + "prev_total_diff": null, + "curr_total_diff": -21.7 + }, + { + "shot": "s3_shot_6i_39", + "was": "pass", + "now": "moderate", + "prev_total_diff": null, + "curr_total_diff": 6.4 + }, + { + "shot": "s3_shot_6i_40", + "was": "pass", + "now": "moderate", + "prev_total_diff": null, + "curr_total_diff": 7.7 + }, + { + "shot": "s3_shot_6i_41", + "was": "pass", + "now": "severe", + "prev_total_diff": null, + "curr_total_diff": 12.9 + }, + { + "shot": "s3_shot_6i_42", + "was": "pass", + "now": "severe", + "prev_total_diff": null, + "curr_total_diff": -16.7 + }, + { + "shot": "s3_shot_6i_43", + "was": "pass", + "now": "moderate", + "prev_total_diff": null, + "curr_total_diff": -0.2 + }, + { + "shot": "s3_shot_6i_44", + "was": "pass", + "now": "severe", + "prev_total_diff": null, + "curr_total_diff": -28.0 + }, + { + "shot": "s3_shot_6i_45", + "was": "pass", + "now": "severe", + "prev_total_diff": null, + "curr_total_diff": 20.4 + }, + { + "shot": "s3_shot_6i_46", + "was": "pass", + "now": "moderate", + "prev_total_diff": null, + "curr_total_diff": -8.5 + }, + { + "shot": "s3_shot_6i_47", + "was": "pass", + "now": "moderate", + "prev_total_diff": null, + "curr_total_diff": 8.3 + }, + { + "shot": "s3_shot_6i_48", + "was": "pass", + "now": "moderate", + "prev_total_diff": null, + "curr_total_diff": 8.8 + }, + { + "shot": "s3_shot_6i_49", + "was": "pass", + "now": "moderate", + "prev_total_diff": null, + "curr_total_diff": 6.9 + }, + { + "shot": "s3_shot_6i_50", + "was": "pass", + "now": "severe", + "prev_total_diff": null, + "curr_total_diff": -12.5 + }, + { + "shot": "s3_shot_7i_25", + "was": "pass", + "now": "severe", + "prev_total_diff": null, + "curr_total_diff": -18.4 + }, + { + "shot": "s3_shot_7i_26", + "was": "pass", + "now": "severe", + "prev_total_diff": null, + "curr_total_diff": -22.1 + }, + { + "shot": "s3_shot_7i_29", + "was": "pass", + "now": "moderate", + "prev_total_diff": null, + "curr_total_diff": -6.6 + }, + { + "shot": "s3_shot_7i_31", + "was": "pass", + "now": "severe", + "prev_total_diff": null, + "curr_total_diff": -13.8 + }, + { + "shot": "s3_shot_7i_34", + "was": "pass", + "now": "moderate", + "prev_total_diff": null, + "curr_total_diff": 2.0 + }, + { + "shot": "s3_shot_9i_1", + "was": "pass", + "now": "severe", + "prev_total_diff": null, + "curr_total_diff": -13.0 + }, + { + "shot": "s3_shot_9i_2", + "was": "pass", + "now": "moderate", + "prev_total_diff": null, + "curr_total_diff": -3.7 + }, + { + "shot": "s3_shot_driver_51", + "was": "pass", + "now": "severe", + "prev_total_diff": null, + "curr_total_diff": 19.2 + }, + { + "shot": "s3_shot_driver_52", + "was": "pass", + "now": "severe", + "prev_total_diff": null, + "curr_total_diff": 18.3 + }, + { + "shot": "s3_shot_driver_53", + "was": "pass", + "now": "severe", + "prev_total_diff": null, + "curr_total_diff": 10.3 + }, + { + "shot": "s3_shot_driver_55", + "was": "pass", + "now": "severe", + "prev_total_diff": null, + "curr_total_diff": 21.7 + }, + { + "shot": "s3_shot_driver_56", + "was": "pass", + "now": "severe", + "prev_total_diff": null, + "curr_total_diff": 13.7 + }, + { + "shot": "s3_shot_driver_57", + "was": "pass", + "now": "severe", + "prev_total_diff": null, + "curr_total_diff": -23.5 + }, + { + "shot": "s3_shot_driver_58", + "was": "pass", + "now": "severe", + "prev_total_diff": null, + "curr_total_diff": 24.5 + }, + { + "shot": "s3_shot_driver_59", + "was": "pass", + "now": "severe", + "prev_total_diff": null, + "curr_total_diff": 14.4 + }, + { + "shot": "s3_shot_driver_60", + "was": "pass", + "now": "severe", + "prev_total_diff": null, + "curr_total_diff": -15.4 + }, + { + "shot": "s3_shot_pw_64", + "was": "pass", + "now": "moderate", + "prev_total_diff": null, + "curr_total_diff": 6.3 + }, + { + "shot": "s3_shot_pw_66", + "was": "pass", + "now": "severe", + "prev_total_diff": null, + "curr_total_diff": 10.8 + }, + { + "shot": "s3_shot_pw_67", + "was": "pass", + "now": "moderate", + "prev_total_diff": null, + "curr_total_diff": 5.2 + }, + { + "shot": "s3_shot_pw_69", + "was": "pass", + "now": "severe", + "prev_total_diff": null, + "curr_total_diff": 11.6 + }, + { + "shot": "s4_shot_3w_33", + "was": "pass", + "now": "moderate", + "prev_total_diff": null, + "curr_total_diff": 9.6 + }, + { + "shot": "s4_shot_5i_25", + "was": "pass", + "now": "moderate", + "prev_total_diff": null, + "curr_total_diff": -7.2 + }, + { + "shot": "s4_shot_5i_26", + "was": "pass", + "now": "moderate", + "prev_total_diff": null, + "curr_total_diff": 5.0 + }, + { + "shot": "s4_shot_5i_27", + "was": "pass", + "now": "severe", + "prev_total_diff": null, + "curr_total_diff": 10.8 + }, + { + "shot": "s4_shot_5i_28", + "was": "pass", + "now": "moderate", + "prev_total_diff": null, + "curr_total_diff": -6.9 + }, + { + "shot": "s4_shot_5i_29", + "was": "pass", + "now": "severe", + "prev_total_diff": null, + "curr_total_diff": 13.8 + }, + { + "shot": "s4_shot_6i_19", + "was": "pass", + "now": "severe", + "prev_total_diff": null, + "curr_total_diff": -11.5 + }, + { + "shot": "s4_shot_6i_20", + "was": "pass", + "now": "severe", + "prev_total_diff": null, + "curr_total_diff": 11.4 + }, + { + "shot": "s4_shot_6i_22", + "was": "pass", + "now": "severe", + "prev_total_diff": null, + "curr_total_diff": 10.8 + }, + { + "shot": "s4_shot_9i_15", + "was": "pass", + "now": "severe", + "prev_total_diff": null, + "curr_total_diff": 10.8 + }, + { + "shot": "s4_shot_9i_17", + "was": "pass", + "now": "severe", + "prev_total_diff": null, + "curr_total_diff": -15.7 + }, + { + "shot": "s4_shot_9i_18", + "was": "pass", + "now": "moderate", + "prev_total_diff": null, + "curr_total_diff": 8.7 + }, + { + "shot": "s4_shot_lw_38", + "was": "pass", + "now": "moderate", + "prev_total_diff": null, + "curr_total_diff": 7.8 + }, + { + "shot": "s4_shot_pw_1", + "was": "pass", + "now": "moderate", + "prev_total_diff": null, + "curr_total_diff": -6.7 + }, + { + "shot": "s4_shot_pw_2", + "was": "pass", + "now": "severe", + "prev_total_diff": null, + "curr_total_diff": 12.2 + }, + { + "shot": "s4_shot_pw_3", + "was": "pass", + "now": "moderate", + "prev_total_diff": null, + "curr_total_diff": 9.4 + }, + { + "shot": "s4_shot_pw_47", + "was": "pass", + "now": "moderate", + "prev_total_diff": null, + "curr_total_diff": 9.5 + }, + { + "shot": "s4_shot_pw_48", + "was": "pass", + "now": "moderate", + "prev_total_diff": null, + "curr_total_diff": 8.4 + }, + { + "shot": "s4_shot_pw_49", + "was": "pass", + "now": "moderate", + "prev_total_diff": null, + "curr_total_diff": 9.0 + }, + { + "shot": "s4_shot_pw_7", + "was": "pass", + "now": "severe", + "prev_total_diff": null, + "curr_total_diff": 12.2 + }, + { + "shot": "topped_test_shot", + "was": "pass", + "now": "severe", + "prev_total_diff": null, + "curr_total_diff": 13.8 + }, + { + "shot": "wedge_shot_1", + "was": "pass", + "now": "moderate", + "prev_total_diff": null, + "curr_total_diff": 6.2 + }, + { + "shot": "wedge_shot_2", + "was": "pass", + "now": "moderate", + "prev_total_diff": null, + "curr_total_diff": 9.6 + }, + { + "shot": "wedge_test_shot", + "was": "pass", + "now": "moderate", + "prev_total_diff": null, + "curr_total_diff": 3.2 + }, + { + "shot": "wedge_test_shot2", + "was": "pass", + "now": "severe", + "prev_total_diff": null, + "curr_total_diff": 12.4 + }, + { + "shot": "wood1", + "was": "pass", + "now": "severe", + "prev_total_diff": null, + "curr_total_diff": -4.0 + }, + { + "shot": "wood_low_test_shot", + "was": "pass", + "now": "severe", + "prev_total_diff": null, + "curr_total_diff": 22.0 + } + ], + "conflicts": [ + "Bounce.FlightTangentialRetentionBase", + "Bounce.FlightSpinFactorMin", + "Bounce.FlightSpinFactorDivisor", + "Rollout.MidSpinMultiplierMax", + "Rollout.HighSpinMultiplierMax", + "Rollout.FrictionBlendSpeed", + "KineticFrictionMultiplier", + "Bounce.RolloutHighSpinRetention", + "Bounce.CorBaseA", + "Rollout.LowSpinMultiplierMax", + "Rollout.LowSpinThreshold", + "RollingFrictionMultiplier", + "Bounce.RolloutLowSpinRetention", + "Rollout.ChipVelocityScaleMin", + "Rollout.ChipVelocityScaleMax", + "Flight.ClMaxBase", + "Flight.CdMin", + "DragScaleMultiplier", + "LiftScaleMultiplier", + "Flight.HighLaunchDragBoostMax" + ] +} diff --git a/assets/data/calibration/history/iteration_068.json b/assets/data/calibration/history/iteration_068.json new file mode 100644 index 0000000..156e67c --- /dev/null +++ b/assets/data/calibration/history/iteration_068.json @@ -0,0 +1,1038 @@ +{ + "iteration": 68, + "timestamp": "2026-03-14T03:47:57.513661", + "profile_overrides": {}, + "summary": { + "pass": 32, + "moderate": 36, + "severe": 61, + "no_reference": 7 + }, + "per_shot": { + "5iron": { + "diff_carry_yd": 4.8, + "diff_total_yd": 11.3, + "diff_apex_ft": 4.6, + "status": "severe", + "error_pattern": "CARRY_AND_ROLLOUT_LONG" + }, + "approach_mid_iron_test_shot": { + "diff_carry_yd": -0.6, + "diff_total_yd": 7.3, + "diff_apex_ft": -5.0, + "status": "moderate", + "error_pattern": "ROLLOUT_TOO_LONG" + }, + "bump_and_run": { + "diff_carry_yd": -6.1, + "diff_total_yd": -24.6, + "diff_apex_ft": -1.5, + "status": "severe", + "error_pattern": "CARRY_AND_ROLLOUT_SHORT" + }, + "bump_and_run_slow": { + "diff_carry_yd": null, + "diff_total_yd": null, + "diff_apex_ft": null, + "status": "pass", + "error_pattern": null + }, + "bump_test_shot": { + "diff_carry_yd": -2.1, + "diff_total_yd": 12.7, + "diff_apex_ft": -0.1, + "status": "severe", + "error_pattern": "ROLLOUT_TOO_LONG" + }, + "checked_test_shot": { + "diff_carry_yd": -2.1, + "diff_total_yd": -0.5, + "diff_apex_ft": -9.6, + "status": "pass", + "error_pattern": null + }, + "chip_test_shot": { + "diff_carry_yd": null, + "diff_total_yd": null, + "diff_apex_ft": null, + "status": "pass", + "error_pattern": null + }, + "drive_test_shot": { + "diff_carry_yd": 8.8, + "diff_total_yd": 10.6, + "diff_apex_ft": 4.5, + "status": "severe", + "error_pattern": "CARRY_AND_ROLLOUT_LONG" + }, + "driver1": { + "diff_carry_yd": -0.3, + "diff_total_yd": -26.3, + "diff_apex_ft": -0.8, + "status": "severe", + "error_pattern": "ROLLOUT_TOO_SHORT" + }, + "driver2": { + "diff_carry_yd": 7.6, + "diff_total_yd": 7.3, + "diff_apex_ft": -3.0, + "status": "severe", + "error_pattern": "CARRY_AND_ROLLOUT_LONG" + }, + "driver3": { + "diff_carry_yd": 0.9, + "diff_total_yd": 15.9, + "diff_apex_ft": 17.6, + "status": "severe", + "error_pattern": "ROLLOUT_TOO_LONG" + }, + "driver4": { + "diff_carry_yd": 1.3, + "diff_total_yd": 9.3, + "diff_apex_ft": 2.4, + "status": "moderate", + "error_pattern": "ROLLOUT_TOO_LONG" + }, + "flop_test_shot": { + "diff_carry_yd": -0.2, + "diff_total_yd": 1.6, + "diff_apex_ft": -8.5, + "status": "pass", + "error_pattern": null + }, + "p_wedge_shot_1": { + "diff_carry_yd": 1.2, + "diff_total_yd": 8.8, + "diff_apex_ft": -2.2, + "status": "moderate", + "error_pattern": "ROLLOUT_TOO_LONG" + }, + "s2_shot_10": { + "diff_carry_yd": 3.4, + "diff_total_yd": 10.2, + "diff_apex_ft": -6.0, + "status": "severe", + "error_pattern": "CARRY_AND_ROLLOUT_LONG" + }, + "s2_shot_11": { + "diff_carry_yd": -2.6, + "diff_total_yd": 1.1, + "diff_apex_ft": -4.6, + "status": "pass", + "error_pattern": null + }, + "s2_shot_12": { + "diff_carry_yd": 2.0, + "diff_total_yd": 6.0, + "diff_apex_ft": -6.2, + "status": "moderate", + "error_pattern": "ROLLOUT_TOO_LONG" + }, + "s2_shot_13": { + "diff_carry_yd": -1.1, + "diff_total_yd": 0.7, + "diff_apex_ft": -6.9, + "status": "pass", + "error_pattern": null + }, + "s2_shot_14": { + "diff_carry_yd": -2.3, + "diff_total_yd": -0.4, + "diff_apex_ft": -6.6, + "status": "pass", + "error_pattern": null + }, + "s2_shot_15": { + "diff_carry_yd": -1.0, + "diff_total_yd": -12.7, + "diff_apex_ft": -2.0, + "status": "severe", + "error_pattern": "ROLLOUT_TOO_SHORT" + }, + "s2_shot_16": { + "diff_carry_yd": -0.3, + "diff_total_yd": 2.2, + "diff_apex_ft": -3.5, + "status": "pass", + "error_pattern": null + }, + "s2_shot_17": { + "diff_carry_yd": 5.8, + "diff_total_yd": 8.0, + "diff_apex_ft": -3.9, + "status": "moderate", + "error_pattern": "CARRY_AND_ROLLOUT_LONG" + }, + "s2_shot_18": { + "diff_carry_yd": -3.7, + "diff_total_yd": 7.0, + "diff_apex_ft": -4.9, + "status": "moderate", + "error_pattern": "CARRY_TOO_SHORT" + }, + "s2_shot_19": { + "diff_carry_yd": 2.2, + "diff_total_yd": -6.1, + "diff_apex_ft": -1.2, + "status": "moderate", + "error_pattern": "ROLLOUT_TOO_SHORT" + }, + "s2_shot_20": { + "diff_carry_yd": 6.0, + "diff_total_yd": 11.5, + "diff_apex_ft": -2.0, + "status": "severe", + "error_pattern": "CARRY_AND_ROLLOUT_LONG" + }, + "s2_shot_21": { + "diff_carry_yd": 4.9, + "diff_total_yd": 27.7, + "diff_apex_ft": 1.7, + "status": "severe", + "error_pattern": "CARRY_AND_ROLLOUT_LONG" + }, + "s2_shot_22": { + "diff_carry_yd": 4.6, + "diff_total_yd": 1.6, + "diff_apex_ft": -1.6, + "status": "moderate", + "error_pattern": "CARRY_TOO_LONG" + }, + "s2_shot_23": { + "diff_carry_yd": -4.0, + "diff_total_yd": -27.1, + "diff_apex_ft": -2.0, + "status": "severe", + "error_pattern": "CARRY_AND_ROLLOUT_SHORT" + }, + "s2_shot_24": { + "diff_carry_yd": 4.7, + "diff_total_yd": 3.4, + "diff_apex_ft": -1.9, + "status": "moderate", + "error_pattern": "CARRY_TOO_LONG" + }, + "s2_shot_26": { + "diff_carry_yd": 1.7, + "diff_total_yd": 20.6, + "diff_apex_ft": 23.5, + "status": "severe", + "error_pattern": "ROLLOUT_TOO_LONG" + }, + "s2_shot_27": { + "diff_carry_yd": -1.4, + "diff_total_yd": 9.2, + "diff_apex_ft": 3.2, + "status": "moderate", + "error_pattern": "ROLLOUT_TOO_LONG" + }, + "s2_shot_9": { + "diff_carry_yd": -3.3, + "diff_total_yd": 1.6, + "diff_apex_ft": 7.1, + "status": "moderate", + "error_pattern": "CARRY_TOO_SHORT" + }, + "s3_shot_3w_18": { + "diff_carry_yd": null, + "diff_total_yd": null, + "diff_apex_ft": null, + "status": "pass", + "error_pattern": null + }, + "s3_shot_3w_19": { + "diff_carry_yd": -0.6, + "diff_total_yd": 16.0, + "diff_apex_ft": 0.1, + "status": "severe", + "error_pattern": "ROLLOUT_TOO_LONG" + }, + "s3_shot_3w_21": { + "diff_carry_yd": 0.6, + "diff_total_yd": 15.9, + "diff_apex_ft": 0.3, + "status": "severe", + "error_pattern": "ROLLOUT_TOO_LONG" + }, + "s3_shot_3w_22": { + "diff_carry_yd": 2.6, + "diff_total_yd": 19.6, + "diff_apex_ft": 0.5, + "status": "severe", + "error_pattern": "ROLLOUT_TOO_LONG" + }, + "s3_shot_3w_23": { + "diff_carry_yd": 0.1, + "diff_total_yd": -23.3, + "diff_apex_ft": -1.3, + "status": "severe", + "error_pattern": "ROLLOUT_TOO_SHORT" + }, + "s3_shot_3w_24": { + "diff_carry_yd": -0.9, + "diff_total_yd": 20.2, + "diff_apex_ft": 0.1, + "status": "severe", + "error_pattern": "ROLLOUT_TOO_LONG" + }, + "s3_shot_5i_10": { + "diff_carry_yd": 2.5, + "diff_total_yd": -7.6, + "diff_apex_ft": 5.8, + "status": "moderate", + "error_pattern": "ROLLOUT_TOO_SHORT" + }, + "s3_shot_5i_11": { + "diff_carry_yd": -1.5, + "diff_total_yd": -15.4, + "diff_apex_ft": -0.7, + "status": "severe", + "error_pattern": "ROLLOUT_TOO_SHORT" + }, + "s3_shot_5i_12": { + "diff_carry_yd": 1.1, + "diff_total_yd": -23.5, + "diff_apex_ft": 1.1, + "status": "severe", + "error_pattern": "ROLLOUT_TOO_SHORT" + }, + "s3_shot_5i_13": { + "diff_carry_yd": 2.3, + "diff_total_yd": 10.1, + "diff_apex_ft": 0.6, + "status": "severe", + "error_pattern": "ROLLOUT_TOO_LONG" + }, + "s3_shot_5i_15": { + "diff_carry_yd": -4.6, + "diff_total_yd": 14.5, + "diff_apex_ft": -1.1, + "status": "severe", + "error_pattern": "CARRY_TOO_SHORT" + }, + "s3_shot_5i_16": { + "diff_carry_yd": 0.9, + "diff_total_yd": -21.0, + "diff_apex_ft": -0.2, + "status": "severe", + "error_pattern": "ROLLOUT_TOO_SHORT" + }, + "s3_shot_5i_17": { + "diff_carry_yd": 1.6, + "diff_total_yd": 4.3, + "diff_apex_ft": 0.2, + "status": "pass", + "error_pattern": null + }, + "s3_shot_6i_35": { + "diff_carry_yd": -4.4, + "diff_total_yd": -15.9, + "diff_apex_ft": -3.1, + "status": "severe", + "error_pattern": "CARRY_AND_ROLLOUT_SHORT" + }, + "s3_shot_6i_36": { + "diff_carry_yd": 2.8, + "diff_total_yd": -20.0, + "diff_apex_ft": 0.8, + "status": "severe", + "error_pattern": "ROLLOUT_TOO_SHORT" + }, + "s3_shot_6i_37": { + "diff_carry_yd": -3.7, + "diff_total_yd": 11.9, + "diff_apex_ft": -0.9, + "status": "severe", + "error_pattern": "CARRY_TOO_SHORT" + }, + "s3_shot_6i_38": { + "diff_carry_yd": -3.6, + "diff_total_yd": -21.7, + "diff_apex_ft": 0.1, + "status": "severe", + "error_pattern": "CARRY_AND_ROLLOUT_SHORT" + }, + "s3_shot_6i_39": { + "diff_carry_yd": -0.5, + "diff_total_yd": 6.4, + "diff_apex_ft": 0.0, + "status": "moderate", + "error_pattern": "ROLLOUT_TOO_LONG" + }, + "s3_shot_6i_40": { + "diff_carry_yd": -1.3, + "diff_total_yd": 7.7, + "diff_apex_ft": 0.1, + "status": "moderate", + "error_pattern": "ROLLOUT_TOO_LONG" + }, + "s3_shot_6i_41": { + "diff_carry_yd": -4.7, + "diff_total_yd": 12.9, + "diff_apex_ft": -1.0, + "status": "severe", + "error_pattern": "CARRY_TOO_SHORT" + }, + "s3_shot_6i_42": { + "diff_carry_yd": -0.4, + "diff_total_yd": -16.7, + "diff_apex_ft": 1.0, + "status": "severe", + "error_pattern": "ROLLOUT_TOO_SHORT" + }, + "s3_shot_6i_43": { + "diff_carry_yd": 5.6, + "diff_total_yd": -0.2, + "diff_apex_ft": 7.8, + "status": "moderate", + "error_pattern": "CARRY_TOO_LONG" + }, + "s3_shot_6i_44": { + "diff_carry_yd": -1.8, + "diff_total_yd": -28.0, + "diff_apex_ft": -1.4, + "status": "severe", + "error_pattern": "ROLLOUT_TOO_SHORT" + }, + "s3_shot_6i_45": { + "diff_carry_yd": 3.0, + "diff_total_yd": 20.4, + "diff_apex_ft": 0.5, + "status": "severe", + "error_pattern": "ROLLOUT_TOO_LONG" + }, + "s3_shot_6i_46": { + "diff_carry_yd": -1.0, + "diff_total_yd": -8.5, + "diff_apex_ft": -3.0, + "status": "moderate", + "error_pattern": "ROLLOUT_TOO_SHORT" + }, + "s3_shot_6i_47": { + "diff_carry_yd": 6.1, + "diff_total_yd": 8.3, + "diff_apex_ft": 11.4, + "status": "moderate", + "error_pattern": "CARRY_AND_ROLLOUT_LONG" + }, + "s3_shot_6i_48": { + "diff_carry_yd": 5.3, + "diff_total_yd": 8.8, + "diff_apex_ft": 13.8, + "status": "moderate", + "error_pattern": "CARRY_AND_ROLLOUT_LONG" + }, + "s3_shot_6i_49": { + "diff_carry_yd": -2.5, + "diff_total_yd": 6.9, + "diff_apex_ft": -0.3, + "status": "moderate", + "error_pattern": "ROLLOUT_TOO_LONG" + }, + "s3_shot_6i_50": { + "diff_carry_yd": -0.9, + "diff_total_yd": -12.5, + "diff_apex_ft": 3.8, + "status": "severe", + "error_pattern": "ROLLOUT_TOO_SHORT" + }, + "s3_shot_7i_25": { + "diff_carry_yd": -0.9, + "diff_total_yd": -18.4, + "diff_apex_ft": 0.9, + "status": "severe", + "error_pattern": "ROLLOUT_TOO_SHORT" + }, + "s3_shot_7i_26": { + "diff_carry_yd": 1.5, + "diff_total_yd": -22.1, + "diff_apex_ft": 1.1, + "status": "severe", + "error_pattern": "ROLLOUT_TOO_SHORT" + }, + "s3_shot_7i_27": { + "diff_carry_yd": 1.2, + "diff_total_yd": 4.7, + "diff_apex_ft": 7.7, + "status": "pass", + "error_pattern": null + }, + "s3_shot_7i_28": { + "diff_carry_yd": 0.5, + "diff_total_yd": 1.5, + "diff_apex_ft": 8.1, + "status": "pass", + "error_pattern": null + }, + "s3_shot_7i_29": { + "diff_carry_yd": 0.1, + "diff_total_yd": -6.6, + "diff_apex_ft": -3.6, + "status": "moderate", + "error_pattern": "ROLLOUT_TOO_SHORT" + }, + "s3_shot_7i_30": { + "diff_carry_yd": -0.7, + "diff_total_yd": 1.0, + "diff_apex_ft": 5.3, + "status": "pass", + "error_pattern": null + }, + "s3_shot_7i_31": { + "diff_carry_yd": -4.3, + "diff_total_yd": -13.8, + "diff_apex_ft": -4.0, + "status": "severe", + "error_pattern": "CARRY_AND_ROLLOUT_SHORT" + }, + "s3_shot_7i_32": { + "diff_carry_yd": -0.3, + "diff_total_yd": -1.4, + "diff_apex_ft": 4.1, + "status": "pass", + "error_pattern": null + }, + "s3_shot_7i_33": { + "diff_carry_yd": -0.1, + "diff_total_yd": -0.5, + "diff_apex_ft": 5.8, + "status": "pass", + "error_pattern": null + }, + "s3_shot_7i_34": { + "diff_carry_yd": 3.6, + "diff_total_yd": 2.0, + "diff_apex_ft": 3.0, + "status": "moderate", + "error_pattern": "CARRY_TOO_LONG" + }, + "s3_shot_9i_1": { + "diff_carry_yd": 0.2, + "diff_total_yd": -10.5, + "diff_apex_ft": 1.9, + "status": "severe", + "error_pattern": "ROLLOUT_TOO_SHORT" + }, + "s3_shot_9i_2": { + "diff_carry_yd": -1.9, + "diff_total_yd": -2.0, + "diff_apex_ft": 0.2, + "status": "pass", + "error_pattern": null + }, + "s3_shot_9i_3": { + "diff_carry_yd": -1.9, + "diff_total_yd": 1.4, + "diff_apex_ft": -5.4, + "status": "pass", + "error_pattern": null + }, + "s3_shot_9i_5": { + "diff_carry_yd": 0.3, + "diff_total_yd": -2.4, + "diff_apex_ft": -4.4, + "status": "pass", + "error_pattern": null + }, + "s3_shot_9i_7": { + "diff_carry_yd": 4.2, + "diff_total_yd": 4.9, + "diff_apex_ft": -2.7, + "status": "moderate", + "error_pattern": "CARRY_TOO_LONG" + }, + "s3_shot_9i_8": { + "diff_carry_yd": -2.3, + "diff_total_yd": 4.7, + "diff_apex_ft": -1.8, + "status": "pass", + "error_pattern": null + }, + "s3_shot_9i_9": { + "diff_carry_yd": -1.8, + "diff_total_yd": 2.3, + "diff_apex_ft": -6.3, + "status": "pass", + "error_pattern": null + }, + "s3_shot_driver_51": { + "diff_carry_yd": 1.6, + "diff_total_yd": 16.1, + "diff_apex_ft": -9.7, + "status": "severe", + "error_pattern": "ROLLOUT_TOO_LONG" + }, + "s3_shot_driver_52": { + "diff_carry_yd": 3.7, + "diff_total_yd": 18.3, + "diff_apex_ft": -6.6, + "status": "severe", + "error_pattern": "CARRY_AND_ROLLOUT_LONG" + }, + "s3_shot_driver_53": { + "diff_carry_yd": 0.1, + "diff_total_yd": 10.3, + "diff_apex_ft": -8.4, + "status": "severe", + "error_pattern": "ROLLOUT_TOO_LONG" + }, + "s3_shot_driver_54": { + "diff_carry_yd": 4.6, + "diff_total_yd": -0.7, + "diff_apex_ft": -2.5, + "status": "moderate", + "error_pattern": "CARRY_TOO_LONG" + }, + "s3_shot_driver_55": { + "diff_carry_yd": 2.0, + "diff_total_yd": 21.7, + "diff_apex_ft": 0.4, + "status": "severe", + "error_pattern": "ROLLOUT_TOO_LONG" + }, + "s3_shot_driver_56": { + "diff_carry_yd": -0.8, + "diff_total_yd": 13.7, + "diff_apex_ft": 7.2, + "status": "severe", + "error_pattern": "ROLLOUT_TOO_LONG" + }, + "s3_shot_driver_57": { + "diff_carry_yd": -0.5, + "diff_total_yd": -14.7, + "diff_apex_ft": -1.6, + "status": "severe", + "error_pattern": "ROLLOUT_TOO_SHORT" + }, + "s3_shot_driver_58": { + "diff_carry_yd": 7.5, + "diff_total_yd": 24.4, + "diff_apex_ft": -14.8, + "status": "severe", + "error_pattern": "CARRY_AND_ROLLOUT_LONG" + }, + "s3_shot_driver_59": { + "diff_carry_yd": -1.6, + "diff_total_yd": 14.4, + "diff_apex_ft": -4.2, + "status": "severe", + "error_pattern": "ROLLOUT_TOO_LONG" + }, + "s3_shot_driver_60": { + "diff_carry_yd": -0.6, + "diff_total_yd": -15.4, + "diff_apex_ft": -2.5, + "status": "severe", + "error_pattern": "ROLLOUT_TOO_SHORT" + }, + "s3_shot_pw_64": { + "diff_carry_yd": 3.4, + "diff_total_yd": 6.3, + "diff_apex_ft": 0.6, + "status": "moderate", + "error_pattern": "CARRY_AND_ROLLOUT_LONG" + }, + "s3_shot_pw_65": { + "diff_carry_yd": -0.6, + "diff_total_yd": 4.2, + "diff_apex_ft": -4.0, + "status": "pass", + "error_pattern": null + }, + "s3_shot_pw_66": { + "diff_carry_yd": -3.0, + "diff_total_yd": 10.8, + "diff_apex_ft": -3.9, + "status": "severe", + "error_pattern": "ROLLOUT_TOO_LONG" + }, + "s3_shot_pw_67": { + "diff_carry_yd": -0.4, + "diff_total_yd": 5.2, + "diff_apex_ft": -4.1, + "status": "moderate", + "error_pattern": "ROLLOUT_TOO_LONG" + }, + "s3_shot_pw_68": { + "diff_carry_yd": 0.6, + "diff_total_yd": 3.9, + "diff_apex_ft": -7.0, + "status": "pass", + "error_pattern": null + }, + "s3_shot_pw_69": { + "diff_carry_yd": -0.6, + "diff_total_yd": -1.6, + "diff_apex_ft": -2.9, + "status": "pass", + "error_pattern": null + }, + "s4_shot_3w_31": { + "diff_carry_yd": -0.1, + "diff_total_yd": -3.6, + "diff_apex_ft": -3.6, + "status": "pass", + "error_pattern": null + }, + "s4_shot_3w_32": { + "diff_carry_yd": -3.2, + "diff_total_yd": 2.5, + "diff_apex_ft": -5.6, + "status": "moderate", + "error_pattern": "CARRY_TOO_SHORT" + }, + "s4_shot_3w_33": { + "diff_carry_yd": 6.4, + "diff_total_yd": 9.6, + "diff_apex_ft": -9.1, + "status": "moderate", + "error_pattern": "CARRY_AND_ROLLOUT_LONG" + }, + "s4_shot_3w_34": { + "diff_carry_yd": -0.7, + "diff_total_yd": -2.0, + "diff_apex_ft": -3.9, + "status": "pass", + "error_pattern": null + }, + "s4_shot_3w_35": { + "diff_carry_yd": -0.2, + "diff_total_yd": -2.7, + "diff_apex_ft": -4.7, + "status": "pass", + "error_pattern": null + }, + "s4_shot_5i_25": { + "diff_carry_yd": -2.9, + "diff_total_yd": -7.2, + "diff_apex_ft": -5.5, + "status": "moderate", + "error_pattern": "ROLLOUT_TOO_SHORT" + }, + "s4_shot_5i_26": { + "diff_carry_yd": 3.1, + "diff_total_yd": 5.0, + "diff_apex_ft": 2.9, + "status": "moderate", + "error_pattern": "CARRY_TOO_LONG" + }, + "s4_shot_5i_27": { + "diff_carry_yd": -2.0, + "diff_total_yd": 10.8, + "diff_apex_ft": -0.2, + "status": "severe", + "error_pattern": "ROLLOUT_TOO_LONG" + }, + "s4_shot_5i_28": { + "diff_carry_yd": -0.2, + "diff_total_yd": -6.9, + "diff_apex_ft": 5.0, + "status": "moderate", + "error_pattern": "ROLLOUT_TOO_SHORT" + }, + "s4_shot_5i_29": { + "diff_carry_yd": 6.3, + "diff_total_yd": 13.8, + "diff_apex_ft": 1.0, + "status": "severe", + "error_pattern": "CARRY_AND_ROLLOUT_LONG" + }, + "s4_shot_5i_30": { + "diff_carry_yd": 2.4, + "diff_total_yd": 1.6, + "diff_apex_ft": -7.8, + "status": "pass", + "error_pattern": null + }, + "s4_shot_6i_19": { + "diff_carry_yd": -0.5, + "diff_total_yd": -11.5, + "diff_apex_ft": 0.2, + "status": "severe", + "error_pattern": "ROLLOUT_TOO_SHORT" + }, + "s4_shot_6i_20": { + "diff_carry_yd": -0.1, + "diff_total_yd": 11.4, + "diff_apex_ft": 0.0, + "status": "severe", + "error_pattern": "ROLLOUT_TOO_LONG" + }, + "s4_shot_6i_21": { + "diff_carry_yd": 0.9, + "diff_total_yd": -1.5, + "diff_apex_ft": -6.8, + "status": "pass", + "error_pattern": null + }, + "s4_shot_6i_22": { + "diff_carry_yd": 4.5, + "diff_total_yd": 10.8, + "diff_apex_ft": 0.9, + "status": "severe", + "error_pattern": "CARRY_AND_ROLLOUT_LONG" + }, + "s4_shot_6i_23": { + "diff_carry_yd": null, + "diff_total_yd": null, + "diff_apex_ft": null, + "status": "pass", + "error_pattern": null + }, + "s4_shot_6i_24": { + "diff_carry_yd": null, + "diff_total_yd": null, + "diff_apex_ft": null, + "status": "pass", + "error_pattern": null + }, + "s4_shot_9i_13": { + "diff_carry_yd": null, + "diff_total_yd": null, + "diff_apex_ft": null, + "status": "pass", + "error_pattern": null + }, + "s4_shot_9i_14": { + "diff_carry_yd": -2.1, + "diff_total_yd": -0.4, + "diff_apex_ft": -7.0, + "status": "pass", + "error_pattern": null + }, + "s4_shot_9i_15": { + "diff_carry_yd": 0.0, + "diff_total_yd": -0.3, + "diff_apex_ft": -2.4, + "status": "pass", + "error_pattern": null + }, + "s4_shot_9i_17": { + "diff_carry_yd": -1.1, + "diff_total_yd": -15.7, + "diff_apex_ft": -0.3, + "status": "severe", + "error_pattern": "ROLLOUT_TOO_SHORT" + }, + "s4_shot_9i_18": { + "diff_carry_yd": 0.0, + "diff_total_yd": -0.8, + "diff_apex_ft": -2.3, + "status": "pass", + "error_pattern": null + }, + "s4_shot_lw_38": { + "diff_carry_yd": -1.9, + "diff_total_yd": 7.8, + "diff_apex_ft": -1.6, + "status": "moderate", + "error_pattern": "ROLLOUT_TOO_LONG" + }, + "s4_shot_pw_1": { + "diff_carry_yd": -1.0, + "diff_total_yd": -6.7, + "diff_apex_ft": 3.1, + "status": "moderate", + "error_pattern": "ROLLOUT_TOO_SHORT" + }, + "s4_shot_pw_10": { + "diff_carry_yd": -2.4, + "diff_total_yd": 0.4, + "diff_apex_ft": -4.2, + "status": "pass", + "error_pattern": null + }, + "s4_shot_pw_11": { + "diff_carry_yd": -2.6, + "diff_total_yd": 0.4, + "diff_apex_ft": -3.8, + "status": "pass", + "error_pattern": null + }, + "s4_shot_pw_2": { + "diff_carry_yd": 0.4, + "diff_total_yd": 12.2, + "diff_apex_ft": 0.4, + "status": "severe", + "error_pattern": "ROLLOUT_TOO_LONG" + }, + "s4_shot_pw_3": { + "diff_carry_yd": -1.5, + "diff_total_yd": 11.3, + "diff_apex_ft": -1.1, + "status": "severe", + "error_pattern": "ROLLOUT_TOO_LONG" + }, + "s4_shot_pw_47": { + "diff_carry_yd": -0.6, + "diff_total_yd": 9.5, + "diff_apex_ft": 0.0, + "status": "moderate", + "error_pattern": "ROLLOUT_TOO_LONG" + }, + "s4_shot_pw_48": { + "diff_carry_yd": -0.7, + "diff_total_yd": 8.4, + "diff_apex_ft": 0.0, + "status": "moderate", + "error_pattern": "ROLLOUT_TOO_LONG" + }, + "s4_shot_pw_49": { + "diff_carry_yd": -2.2, + "diff_total_yd": 10.6, + "diff_apex_ft": -0.3, + "status": "severe", + "error_pattern": "ROLLOUT_TOO_LONG" + }, + "s4_shot_pw_6": { + "diff_carry_yd": -1.3, + "diff_total_yd": -0.1, + "diff_apex_ft": -0.1, + "status": "pass", + "error_pattern": null + }, + "s4_shot_pw_7": { + "diff_carry_yd": -2.0, + "diff_total_yd": 12.2, + "diff_apex_ft": -3.7, + "status": "severe", + "error_pattern": "ROLLOUT_TOO_LONG" + }, + "s4_shot_pw_9": { + "diff_carry_yd": null, + "diff_total_yd": null, + "diff_apex_ft": null, + "status": "pass", + "error_pattern": null + }, + "topped_test_shot": { + "diff_carry_yd": -0.7, + "diff_total_yd": 13.8, + "diff_apex_ft": -0.1, + "status": "severe", + "error_pattern": "ROLLOUT_TOO_LONG" + }, + "wedge_shot_1": { + "diff_carry_yd": -1.5, + "diff_total_yd": 6.2, + "diff_apex_ft": -0.8, + "status": "moderate", + "error_pattern": "ROLLOUT_TOO_LONG" + }, + "wedge_shot_2": { + "diff_carry_yd": -1.5, + "diff_total_yd": 9.6, + "diff_apex_ft": -1.1, + "status": "moderate", + "error_pattern": "ROLLOUT_TOO_LONG" + }, + "wedge_test_shot": { + "diff_carry_yd": 1.5, + "diff_total_yd": 12.4, + "diff_apex_ft": -0.5, + "status": "severe", + "error_pattern": "ROLLOUT_TOO_LONG" + }, + "wedge_test_shot2": { + "diff_carry_yd": 1.1, + "diff_total_yd": 12.4, + "diff_apex_ft": 0.8, + "status": "severe", + "error_pattern": "ROLLOUT_TOO_LONG" + }, + "wood1": { + "diff_carry_yd": 11.9, + "diff_total_yd": -4.0, + "diff_apex_ft": 3.1, + "status": "severe", + "error_pattern": "CARRY_TOO_LONG" + }, + "wood2": { + "diff_carry_yd": -0.4, + "diff_total_yd": -4.8, + "diff_apex_ft": -3.3, + "status": "pass", + "error_pattern": null + }, + "wood_low_test_shot": { + "diff_carry_yd": 1.3, + "diff_total_yd": 22.0, + "diff_apex_ft": 0.3, + "status": "severe", + "error_pattern": "ROLLOUT_TOO_LONG" + } + }, + "regressions": [ + { + "shot": "driver2", + "was": "pass", + "now": "severe", + "prev_total_diff": 2.9, + "curr_total_diff": 7.3 + }, + { + "shot": "s2_shot_17", + "was": "pass", + "now": "moderate", + "prev_total_diff": 4.7, + "curr_total_diff": 8.0 + }, + { + "shot": "s2_shot_22", + "was": "pass", + "now": "moderate", + "prev_total_diff": -2.4, + "curr_total_diff": 1.6 + }, + { + "shot": "s2_shot_24", + "was": "pass", + "now": "moderate", + "prev_total_diff": -1.5, + "curr_total_diff": 3.4 + }, + { + "shot": "s3_shot_9i_7", + "was": "pass", + "now": "moderate", + "prev_total_diff": 1.1, + "curr_total_diff": 4.9 + }, + { + "shot": "s3_shot_driver_54", + "was": "pass", + "now": "moderate", + "prev_total_diff": -4.9, + "curr_total_diff": -0.7 + }, + { + "shot": "s4_shot_3w_32", + "was": "pass", + "now": "moderate", + "prev_total_diff": 4.4, + "curr_total_diff": 2.5 + } + ], + "conflicts": [ + "Bounce.FlightTangentialRetentionBase", + "Bounce.FlightSpinFactorMin", + "Bounce.FlightSpinFactorDivisor", + "Rollout.MidSpinMultiplierMax", + "Rollout.HighSpinMultiplierMax", + "Rollout.FrictionBlendSpeed", + "KineticFrictionMultiplier", + "Bounce.RolloutHighSpinRetention", + "Bounce.CorBaseA", + "Rollout.LowSpinMultiplierMax", + "Rollout.LowSpinThreshold", + "RollingFrictionMultiplier", + "Bounce.RolloutLowSpinRetention", + "Rollout.ChipVelocityScaleMin", + "Rollout.ChipVelocityScaleMax", + "Flight.ClMaxBase", + "Flight.CdMin", + "Flight.HighLaunchDragBoostMax", + "DragScaleMultiplier", + "LiftScaleMultiplier" + ] +} diff --git a/assets/data/calibration/history/iteration_069.json b/assets/data/calibration/history/iteration_069.json new file mode 100644 index 0000000..b0f526d --- /dev/null +++ b/assets/data/calibration/history/iteration_069.json @@ -0,0 +1,1003 @@ +{ + "iteration": 69, + "timestamp": "2026-03-14T03:50:21.326343", + "profile_overrides": {}, + "summary": { + "pass": 37, + "moderate": 31, + "severe": 61, + "no_reference": 7 + }, + "per_shot": { + "5iron": { + "diff_carry_yd": 4.8, + "diff_total_yd": 11.3, + "diff_apex_ft": 4.6, + "status": "severe", + "error_pattern": "CARRY_AND_ROLLOUT_LONG" + }, + "approach_mid_iron_test_shot": { + "diff_carry_yd": -0.6, + "diff_total_yd": 7.3, + "diff_apex_ft": -5.0, + "status": "moderate", + "error_pattern": "ROLLOUT_TOO_LONG" + }, + "bump_and_run": { + "diff_carry_yd": -6.1, + "diff_total_yd": -24.6, + "diff_apex_ft": -1.5, + "status": "severe", + "error_pattern": "CARRY_AND_ROLLOUT_SHORT" + }, + "bump_and_run_slow": { + "diff_carry_yd": null, + "diff_total_yd": null, + "diff_apex_ft": null, + "status": "pass", + "error_pattern": null + }, + "bump_test_shot": { + "diff_carry_yd": -2.1, + "diff_total_yd": 12.7, + "diff_apex_ft": -0.1, + "status": "severe", + "error_pattern": "ROLLOUT_TOO_LONG" + }, + "checked_test_shot": { + "diff_carry_yd": -2.1, + "diff_total_yd": -0.5, + "diff_apex_ft": -9.6, + "status": "pass", + "error_pattern": null + }, + "chip_test_shot": { + "diff_carry_yd": null, + "diff_total_yd": null, + "diff_apex_ft": null, + "status": "pass", + "error_pattern": null + }, + "drive_test_shot": { + "diff_carry_yd": 4.1, + "diff_total_yd": 4.6, + "diff_apex_ft": 1.6, + "status": "moderate", + "error_pattern": "CARRY_TOO_LONG" + }, + "driver1": { + "diff_carry_yd": -0.3, + "diff_total_yd": -26.3, + "diff_apex_ft": -0.8, + "status": "severe", + "error_pattern": "ROLLOUT_TOO_SHORT" + }, + "driver2": { + "diff_carry_yd": 2.8, + "diff_total_yd": 2.9, + "diff_apex_ft": -4.3, + "status": "pass", + "error_pattern": null + }, + "driver3": { + "diff_carry_yd": 0.9, + "diff_total_yd": 15.9, + "diff_apex_ft": 17.6, + "status": "severe", + "error_pattern": "ROLLOUT_TOO_LONG" + }, + "driver4": { + "diff_carry_yd": 1.3, + "diff_total_yd": 9.3, + "diff_apex_ft": 2.4, + "status": "moderate", + "error_pattern": "ROLLOUT_TOO_LONG" + }, + "flop_test_shot": { + "diff_carry_yd": -0.2, + "diff_total_yd": 1.6, + "diff_apex_ft": -8.5, + "status": "pass", + "error_pattern": null + }, + "p_wedge_shot_1": { + "diff_carry_yd": 1.2, + "diff_total_yd": 8.8, + "diff_apex_ft": -2.2, + "status": "moderate", + "error_pattern": "ROLLOUT_TOO_LONG" + }, + "s2_shot_10": { + "diff_carry_yd": 3.4, + "diff_total_yd": 10.2, + "diff_apex_ft": -6.0, + "status": "severe", + "error_pattern": "CARRY_AND_ROLLOUT_LONG" + }, + "s2_shot_11": { + "diff_carry_yd": -2.6, + "diff_total_yd": 1.1, + "diff_apex_ft": -4.6, + "status": "pass", + "error_pattern": null + }, + "s2_shot_12": { + "diff_carry_yd": 2.0, + "diff_total_yd": 6.0, + "diff_apex_ft": -6.2, + "status": "moderate", + "error_pattern": "ROLLOUT_TOO_LONG" + }, + "s2_shot_13": { + "diff_carry_yd": -1.1, + "diff_total_yd": 0.7, + "diff_apex_ft": -6.9, + "status": "pass", + "error_pattern": null + }, + "s2_shot_14": { + "diff_carry_yd": -2.3, + "diff_total_yd": -0.4, + "diff_apex_ft": -6.6, + "status": "pass", + "error_pattern": null + }, + "s2_shot_15": { + "diff_carry_yd": -1.0, + "diff_total_yd": -12.7, + "diff_apex_ft": -2.0, + "status": "severe", + "error_pattern": "ROLLOUT_TOO_SHORT" + }, + "s2_shot_16": { + "diff_carry_yd": -0.3, + "diff_total_yd": 2.2, + "diff_apex_ft": -3.5, + "status": "pass", + "error_pattern": null + }, + "s2_shot_17": { + "diff_carry_yd": 0.9, + "diff_total_yd": 4.7, + "diff_apex_ft": -5.1, + "status": "pass", + "error_pattern": null + }, + "s2_shot_18": { + "diff_carry_yd": -2.1, + "diff_total_yd": 7.2, + "diff_apex_ft": -3.5, + "status": "moderate", + "error_pattern": "ROLLOUT_TOO_LONG" + }, + "s2_shot_19": { + "diff_carry_yd": -2.1, + "diff_total_yd": -10.5, + "diff_apex_ft": -2.2, + "status": "severe", + "error_pattern": "ROLLOUT_TOO_SHORT" + }, + "s2_shot_20": { + "diff_carry_yd": 1.5, + "diff_total_yd": 7.5, + "diff_apex_ft": -3.0, + "status": "moderate", + "error_pattern": "ROLLOUT_TOO_LONG" + }, + "s2_shot_21": { + "diff_carry_yd": 4.9, + "diff_total_yd": 27.7, + "diff_apex_ft": 1.7, + "status": "severe", + "error_pattern": "CARRY_AND_ROLLOUT_LONG" + }, + "s2_shot_22": { + "diff_carry_yd": 0.6, + "diff_total_yd": -2.4, + "diff_apex_ft": -2.7, + "status": "pass", + "error_pattern": null + }, + "s2_shot_23": { + "diff_carry_yd": -0.8, + "diff_total_yd": -23.9, + "diff_apex_ft": -1.2, + "status": "severe", + "error_pattern": "ROLLOUT_TOO_SHORT" + }, + "s2_shot_24": { + "diff_carry_yd": 0.5, + "diff_total_yd": -1.5, + "diff_apex_ft": -3.0, + "status": "pass", + "error_pattern": null + }, + "s2_shot_26": { + "diff_carry_yd": 1.7, + "diff_total_yd": 20.6, + "diff_apex_ft": 23.5, + "status": "severe", + "error_pattern": "ROLLOUT_TOO_LONG" + }, + "s2_shot_27": { + "diff_carry_yd": -1.4, + "diff_total_yd": 9.2, + "diff_apex_ft": 3.2, + "status": "moderate", + "error_pattern": "ROLLOUT_TOO_LONG" + }, + "s2_shot_9": { + "diff_carry_yd": -3.3, + "diff_total_yd": 1.6, + "diff_apex_ft": 7.1, + "status": "moderate", + "error_pattern": "CARRY_TOO_SHORT" + }, + "s3_shot_3w_18": { + "diff_carry_yd": null, + "diff_total_yd": null, + "diff_apex_ft": null, + "status": "pass", + "error_pattern": null + }, + "s3_shot_3w_19": { + "diff_carry_yd": -0.6, + "diff_total_yd": 16.0, + "diff_apex_ft": 0.1, + "status": "severe", + "error_pattern": "ROLLOUT_TOO_LONG" + }, + "s3_shot_3w_21": { + "diff_carry_yd": 0.6, + "diff_total_yd": 15.9, + "diff_apex_ft": 0.3, + "status": "severe", + "error_pattern": "ROLLOUT_TOO_LONG" + }, + "s3_shot_3w_22": { + "diff_carry_yd": 2.6, + "diff_total_yd": 19.6, + "diff_apex_ft": 0.5, + "status": "severe", + "error_pattern": "ROLLOUT_TOO_LONG" + }, + "s3_shot_3w_23": { + "diff_carry_yd": 0.1, + "diff_total_yd": -23.3, + "diff_apex_ft": -1.3, + "status": "severe", + "error_pattern": "ROLLOUT_TOO_SHORT" + }, + "s3_shot_3w_24": { + "diff_carry_yd": 2.3, + "diff_total_yd": 23.8, + "diff_apex_ft": 0.7, + "status": "severe", + "error_pattern": "ROLLOUT_TOO_LONG" + }, + "s3_shot_5i_10": { + "diff_carry_yd": 2.5, + "diff_total_yd": -7.6, + "diff_apex_ft": 5.8, + "status": "moderate", + "error_pattern": "ROLLOUT_TOO_SHORT" + }, + "s3_shot_5i_11": { + "diff_carry_yd": -1.5, + "diff_total_yd": -15.4, + "diff_apex_ft": -0.7, + "status": "severe", + "error_pattern": "ROLLOUT_TOO_SHORT" + }, + "s3_shot_5i_12": { + "diff_carry_yd": 1.1, + "diff_total_yd": -23.5, + "diff_apex_ft": 1.1, + "status": "severe", + "error_pattern": "ROLLOUT_TOO_SHORT" + }, + "s3_shot_5i_13": { + "diff_carry_yd": 2.3, + "diff_total_yd": 10.1, + "diff_apex_ft": 0.6, + "status": "severe", + "error_pattern": "ROLLOUT_TOO_LONG" + }, + "s3_shot_5i_15": { + "diff_carry_yd": -4.6, + "diff_total_yd": 14.5, + "diff_apex_ft": -1.1, + "status": "severe", + "error_pattern": "CARRY_TOO_SHORT" + }, + "s3_shot_5i_16": { + "diff_carry_yd": 0.9, + "diff_total_yd": -21.0, + "diff_apex_ft": -0.2, + "status": "severe", + "error_pattern": "ROLLOUT_TOO_SHORT" + }, + "s3_shot_5i_17": { + "diff_carry_yd": 1.6, + "diff_total_yd": 4.3, + "diff_apex_ft": 0.2, + "status": "pass", + "error_pattern": null + }, + "s3_shot_6i_35": { + "diff_carry_yd": -4.4, + "diff_total_yd": -15.9, + "diff_apex_ft": -3.1, + "status": "severe", + "error_pattern": "CARRY_AND_ROLLOUT_SHORT" + }, + "s3_shot_6i_36": { + "diff_carry_yd": 2.8, + "diff_total_yd": -20.0, + "diff_apex_ft": 0.8, + "status": "severe", + "error_pattern": "ROLLOUT_TOO_SHORT" + }, + "s3_shot_6i_37": { + "diff_carry_yd": -3.7, + "diff_total_yd": 11.9, + "diff_apex_ft": -0.9, + "status": "severe", + "error_pattern": "CARRY_TOO_SHORT" + }, + "s3_shot_6i_38": { + "diff_carry_yd": -3.6, + "diff_total_yd": -21.7, + "diff_apex_ft": 0.1, + "status": "severe", + "error_pattern": "CARRY_AND_ROLLOUT_SHORT" + }, + "s3_shot_6i_39": { + "diff_carry_yd": -0.5, + "diff_total_yd": 6.4, + "diff_apex_ft": 0.0, + "status": "moderate", + "error_pattern": "ROLLOUT_TOO_LONG" + }, + "s3_shot_6i_40": { + "diff_carry_yd": -1.3, + "diff_total_yd": 7.7, + "diff_apex_ft": 0.1, + "status": "moderate", + "error_pattern": "ROLLOUT_TOO_LONG" + }, + "s3_shot_6i_41": { + "diff_carry_yd": -4.7, + "diff_total_yd": 12.9, + "diff_apex_ft": -1.0, + "status": "severe", + "error_pattern": "CARRY_TOO_SHORT" + }, + "s3_shot_6i_42": { + "diff_carry_yd": -0.4, + "diff_total_yd": -16.7, + "diff_apex_ft": 1.0, + "status": "severe", + "error_pattern": "ROLLOUT_TOO_SHORT" + }, + "s3_shot_6i_43": { + "diff_carry_yd": 5.6, + "diff_total_yd": -0.2, + "diff_apex_ft": 7.8, + "status": "moderate", + "error_pattern": "CARRY_TOO_LONG" + }, + "s3_shot_6i_44": { + "diff_carry_yd": -1.8, + "diff_total_yd": -28.0, + "diff_apex_ft": -1.4, + "status": "severe", + "error_pattern": "ROLLOUT_TOO_SHORT" + }, + "s3_shot_6i_45": { + "diff_carry_yd": 3.0, + "diff_total_yd": 20.4, + "diff_apex_ft": 0.5, + "status": "severe", + "error_pattern": "ROLLOUT_TOO_LONG" + }, + "s3_shot_6i_46": { + "diff_carry_yd": -1.0, + "diff_total_yd": -8.5, + "diff_apex_ft": -3.0, + "status": "moderate", + "error_pattern": "ROLLOUT_TOO_SHORT" + }, + "s3_shot_6i_47": { + "diff_carry_yd": 6.1, + "diff_total_yd": 8.3, + "diff_apex_ft": 11.4, + "status": "moderate", + "error_pattern": "CARRY_AND_ROLLOUT_LONG" + }, + "s3_shot_6i_48": { + "diff_carry_yd": 5.3, + "diff_total_yd": 8.8, + "diff_apex_ft": 13.8, + "status": "moderate", + "error_pattern": "CARRY_AND_ROLLOUT_LONG" + }, + "s3_shot_6i_49": { + "diff_carry_yd": -2.5, + "diff_total_yd": 6.9, + "diff_apex_ft": -0.3, + "status": "moderate", + "error_pattern": "ROLLOUT_TOO_LONG" + }, + "s3_shot_6i_50": { + "diff_carry_yd": -0.9, + "diff_total_yd": -12.5, + "diff_apex_ft": 3.8, + "status": "severe", + "error_pattern": "ROLLOUT_TOO_SHORT" + }, + "s3_shot_7i_25": { + "diff_carry_yd": -0.9, + "diff_total_yd": -18.4, + "diff_apex_ft": 0.9, + "status": "severe", + "error_pattern": "ROLLOUT_TOO_SHORT" + }, + "s3_shot_7i_26": { + "diff_carry_yd": 1.5, + "diff_total_yd": -22.1, + "diff_apex_ft": 1.1, + "status": "severe", + "error_pattern": "ROLLOUT_TOO_SHORT" + }, + "s3_shot_7i_27": { + "diff_carry_yd": 1.2, + "diff_total_yd": 4.7, + "diff_apex_ft": 7.7, + "status": "pass", + "error_pattern": null + }, + "s3_shot_7i_28": { + "diff_carry_yd": 0.5, + "diff_total_yd": 1.5, + "diff_apex_ft": 8.1, + "status": "pass", + "error_pattern": null + }, + "s3_shot_7i_29": { + "diff_carry_yd": 0.1, + "diff_total_yd": -6.6, + "diff_apex_ft": -3.6, + "status": "moderate", + "error_pattern": "ROLLOUT_TOO_SHORT" + }, + "s3_shot_7i_30": { + "diff_carry_yd": -0.7, + "diff_total_yd": 1.0, + "diff_apex_ft": 5.3, + "status": "pass", + "error_pattern": null + }, + "s3_shot_7i_31": { + "diff_carry_yd": -4.3, + "diff_total_yd": -13.8, + "diff_apex_ft": -4.0, + "status": "severe", + "error_pattern": "CARRY_AND_ROLLOUT_SHORT" + }, + "s3_shot_7i_32": { + "diff_carry_yd": -0.3, + "diff_total_yd": -1.4, + "diff_apex_ft": 4.1, + "status": "pass", + "error_pattern": null + }, + "s3_shot_7i_33": { + "diff_carry_yd": -0.1, + "diff_total_yd": -0.5, + "diff_apex_ft": 5.8, + "status": "pass", + "error_pattern": null + }, + "s3_shot_7i_34": { + "diff_carry_yd": 3.6, + "diff_total_yd": 2.0, + "diff_apex_ft": 3.0, + "status": "moderate", + "error_pattern": "CARRY_TOO_LONG" + }, + "s3_shot_9i_1": { + "diff_carry_yd": 0.2, + "diff_total_yd": -10.5, + "diff_apex_ft": 1.9, + "status": "severe", + "error_pattern": "ROLLOUT_TOO_SHORT" + }, + "s3_shot_9i_2": { + "diff_carry_yd": -1.9, + "diff_total_yd": -2.0, + "diff_apex_ft": 0.2, + "status": "pass", + "error_pattern": null + }, + "s3_shot_9i_3": { + "diff_carry_yd": -1.9, + "diff_total_yd": 1.4, + "diff_apex_ft": -5.4, + "status": "pass", + "error_pattern": null + }, + "s3_shot_9i_5": { + "diff_carry_yd": 0.3, + "diff_total_yd": -2.4, + "diff_apex_ft": -4.4, + "status": "pass", + "error_pattern": null + }, + "s3_shot_9i_7": { + "diff_carry_yd": 2.3, + "diff_total_yd": 2.9, + "diff_apex_ft": -3.6, + "status": "pass", + "error_pattern": null + }, + "s3_shot_9i_8": { + "diff_carry_yd": -2.3, + "diff_total_yd": 4.7, + "diff_apex_ft": -1.8, + "status": "pass", + "error_pattern": null + }, + "s3_shot_9i_9": { + "diff_carry_yd": -1.8, + "diff_total_yd": 2.3, + "diff_apex_ft": -6.3, + "status": "pass", + "error_pattern": null + }, + "s3_shot_driver_51": { + "diff_carry_yd": 3.2, + "diff_total_yd": 19.2, + "diff_apex_ft": -7.9, + "status": "severe", + "error_pattern": "CARRY_AND_ROLLOUT_LONG" + }, + "s3_shot_driver_52": { + "diff_carry_yd": 3.7, + "diff_total_yd": 18.3, + "diff_apex_ft": -6.6, + "status": "severe", + "error_pattern": "CARRY_AND_ROLLOUT_LONG" + }, + "s3_shot_driver_53": { + "diff_carry_yd": 0.1, + "diff_total_yd": 10.3, + "diff_apex_ft": -8.4, + "status": "severe", + "error_pattern": "ROLLOUT_TOO_LONG" + }, + "s3_shot_driver_54": { + "diff_carry_yd": 0.5, + "diff_total_yd": -4.9, + "diff_apex_ft": -3.5, + "status": "pass", + "error_pattern": null + }, + "s3_shot_driver_55": { + "diff_carry_yd": 2.0, + "diff_total_yd": 21.7, + "diff_apex_ft": 0.4, + "status": "severe", + "error_pattern": "ROLLOUT_TOO_LONG" + }, + "s3_shot_driver_56": { + "diff_carry_yd": -0.8, + "diff_total_yd": 13.7, + "diff_apex_ft": 7.2, + "status": "severe", + "error_pattern": "ROLLOUT_TOO_LONG" + }, + "s3_shot_driver_57": { + "diff_carry_yd": -3.3, + "diff_total_yd": -17.7, + "diff_apex_ft": -2.7, + "status": "severe", + "error_pattern": "CARRY_AND_ROLLOUT_SHORT" + }, + "s3_shot_driver_58": { + "diff_carry_yd": 9.3, + "diff_total_yd": 24.5, + "diff_apex_ft": -13.0, + "status": "severe", + "error_pattern": "CARRY_AND_ROLLOUT_LONG" + }, + "s3_shot_driver_59": { + "diff_carry_yd": -1.6, + "diff_total_yd": 14.4, + "diff_apex_ft": -4.2, + "status": "severe", + "error_pattern": "ROLLOUT_TOO_LONG" + }, + "s3_shot_driver_60": { + "diff_carry_yd": -0.6, + "diff_total_yd": -15.4, + "diff_apex_ft": -2.5, + "status": "severe", + "error_pattern": "ROLLOUT_TOO_SHORT" + }, + "s3_shot_pw_64": { + "diff_carry_yd": 3.4, + "diff_total_yd": 6.3, + "diff_apex_ft": 0.6, + "status": "moderate", + "error_pattern": "CARRY_AND_ROLLOUT_LONG" + }, + "s3_shot_pw_65": { + "diff_carry_yd": -0.6, + "diff_total_yd": 4.2, + "diff_apex_ft": -4.0, + "status": "pass", + "error_pattern": null + }, + "s3_shot_pw_66": { + "diff_carry_yd": -3.0, + "diff_total_yd": 10.8, + "diff_apex_ft": -3.9, + "status": "severe", + "error_pattern": "ROLLOUT_TOO_LONG" + }, + "s3_shot_pw_67": { + "diff_carry_yd": -0.4, + "diff_total_yd": 5.2, + "diff_apex_ft": -4.1, + "status": "moderate", + "error_pattern": "ROLLOUT_TOO_LONG" + }, + "s3_shot_pw_68": { + "diff_carry_yd": 0.6, + "diff_total_yd": 3.9, + "diff_apex_ft": -7.0, + "status": "pass", + "error_pattern": null + }, + "s3_shot_pw_69": { + "diff_carry_yd": -2.0, + "diff_total_yd": -3.1, + "diff_apex_ft": -3.5, + "status": "pass", + "error_pattern": null + }, + "s4_shot_3w_31": { + "diff_carry_yd": -0.1, + "diff_total_yd": -3.6, + "diff_apex_ft": -3.6, + "status": "pass", + "error_pattern": null + }, + "s4_shot_3w_32": { + "diff_carry_yd": -1.7, + "diff_total_yd": 4.4, + "diff_apex_ft": -4.3, + "status": "pass", + "error_pattern": null + }, + "s4_shot_3w_33": { + "diff_carry_yd": 6.4, + "diff_total_yd": 9.6, + "diff_apex_ft": -9.1, + "status": "moderate", + "error_pattern": "CARRY_AND_ROLLOUT_LONG" + }, + "s4_shot_3w_34": { + "diff_carry_yd": -0.7, + "diff_total_yd": -2.0, + "diff_apex_ft": -3.9, + "status": "pass", + "error_pattern": null + }, + "s4_shot_3w_35": { + "diff_carry_yd": -0.2, + "diff_total_yd": -2.7, + "diff_apex_ft": -4.7, + "status": "pass", + "error_pattern": null + }, + "s4_shot_5i_25": { + "diff_carry_yd": -2.9, + "diff_total_yd": -7.2, + "diff_apex_ft": -5.5, + "status": "moderate", + "error_pattern": "ROLLOUT_TOO_SHORT" + }, + "s4_shot_5i_26": { + "diff_carry_yd": 3.1, + "diff_total_yd": 5.0, + "diff_apex_ft": 2.9, + "status": "moderate", + "error_pattern": "CARRY_TOO_LONG" + }, + "s4_shot_5i_27": { + "diff_carry_yd": -2.0, + "diff_total_yd": 10.8, + "diff_apex_ft": -0.2, + "status": "severe", + "error_pattern": "ROLLOUT_TOO_LONG" + }, + "s4_shot_5i_28": { + "diff_carry_yd": -0.2, + "diff_total_yd": -6.9, + "diff_apex_ft": 5.0, + "status": "moderate", + "error_pattern": "ROLLOUT_TOO_SHORT" + }, + "s4_shot_5i_29": { + "diff_carry_yd": 6.3, + "diff_total_yd": 13.8, + "diff_apex_ft": 1.0, + "status": "severe", + "error_pattern": "CARRY_AND_ROLLOUT_LONG" + }, + "s4_shot_5i_30": { + "diff_carry_yd": 2.4, + "diff_total_yd": 1.6, + "diff_apex_ft": -7.8, + "status": "pass", + "error_pattern": null + }, + "s4_shot_6i_19": { + "diff_carry_yd": -0.5, + "diff_total_yd": -11.5, + "diff_apex_ft": 0.2, + "status": "severe", + "error_pattern": "ROLLOUT_TOO_SHORT" + }, + "s4_shot_6i_20": { + "diff_carry_yd": -0.1, + "diff_total_yd": 11.4, + "diff_apex_ft": 0.0, + "status": "severe", + "error_pattern": "ROLLOUT_TOO_LONG" + }, + "s4_shot_6i_21": { + "diff_carry_yd": 0.9, + "diff_total_yd": -1.5, + "diff_apex_ft": -6.8, + "status": "pass", + "error_pattern": null + }, + "s4_shot_6i_22": { + "diff_carry_yd": 4.5, + "diff_total_yd": 10.8, + "diff_apex_ft": 0.9, + "status": "severe", + "error_pattern": "CARRY_AND_ROLLOUT_LONG" + }, + "s4_shot_6i_23": { + "diff_carry_yd": null, + "diff_total_yd": null, + "diff_apex_ft": null, + "status": "pass", + "error_pattern": null + }, + "s4_shot_6i_24": { + "diff_carry_yd": null, + "diff_total_yd": null, + "diff_apex_ft": null, + "status": "pass", + "error_pattern": null + }, + "s4_shot_9i_13": { + "diff_carry_yd": null, + "diff_total_yd": null, + "diff_apex_ft": null, + "status": "pass", + "error_pattern": null + }, + "s4_shot_9i_14": { + "diff_carry_yd": -2.1, + "diff_total_yd": -0.4, + "diff_apex_ft": -7.0, + "status": "pass", + "error_pattern": null + }, + "s4_shot_9i_15": { + "diff_carry_yd": -1.5, + "diff_total_yd": 12.6, + "diff_apex_ft": -3.2, + "status": "severe", + "error_pattern": "ROLLOUT_TOO_LONG" + }, + "s4_shot_9i_17": { + "diff_carry_yd": -1.1, + "diff_total_yd": -15.7, + "diff_apex_ft": -0.3, + "status": "severe", + "error_pattern": "ROLLOUT_TOO_SHORT" + }, + "s4_shot_9i_18": { + "diff_carry_yd": -1.6, + "diff_total_yd": 12.8, + "diff_apex_ft": -3.0, + "status": "severe", + "error_pattern": "ROLLOUT_TOO_LONG" + }, + "s4_shot_lw_38": { + "diff_carry_yd": -1.9, + "diff_total_yd": 7.8, + "diff_apex_ft": -1.6, + "status": "moderate", + "error_pattern": "ROLLOUT_TOO_LONG" + }, + "s4_shot_pw_1": { + "diff_carry_yd": -1.0, + "diff_total_yd": -6.7, + "diff_apex_ft": 3.1, + "status": "moderate", + "error_pattern": "ROLLOUT_TOO_SHORT" + }, + "s4_shot_pw_10": { + "diff_carry_yd": -2.4, + "diff_total_yd": 0.4, + "diff_apex_ft": -4.2, + "status": "pass", + "error_pattern": null + }, + "s4_shot_pw_11": { + "diff_carry_yd": -2.6, + "diff_total_yd": 0.4, + "diff_apex_ft": -3.8, + "status": "pass", + "error_pattern": null + }, + "s4_shot_pw_2": { + "diff_carry_yd": 0.4, + "diff_total_yd": 12.2, + "diff_apex_ft": 0.4, + "status": "severe", + "error_pattern": "ROLLOUT_TOO_LONG" + }, + "s4_shot_pw_3": { + "diff_carry_yd": -1.5, + "diff_total_yd": 11.3, + "diff_apex_ft": -1.1, + "status": "severe", + "error_pattern": "ROLLOUT_TOO_LONG" + }, + "s4_shot_pw_47": { + "diff_carry_yd": -0.6, + "diff_total_yd": 9.5, + "diff_apex_ft": 0.0, + "status": "moderate", + "error_pattern": "ROLLOUT_TOO_LONG" + }, + "s4_shot_pw_48": { + "diff_carry_yd": -0.7, + "diff_total_yd": 8.4, + "diff_apex_ft": 0.0, + "status": "moderate", + "error_pattern": "ROLLOUT_TOO_LONG" + }, + "s4_shot_pw_49": { + "diff_carry_yd": -2.2, + "diff_total_yd": 10.6, + "diff_apex_ft": -0.3, + "status": "severe", + "error_pattern": "ROLLOUT_TOO_LONG" + }, + "s4_shot_pw_6": { + "diff_carry_yd": -1.3, + "diff_total_yd": -0.1, + "diff_apex_ft": -0.1, + "status": "pass", + "error_pattern": null + }, + "s4_shot_pw_7": { + "diff_carry_yd": -2.0, + "diff_total_yd": 12.2, + "diff_apex_ft": -3.7, + "status": "severe", + "error_pattern": "ROLLOUT_TOO_LONG" + }, + "s4_shot_pw_9": { + "diff_carry_yd": null, + "diff_total_yd": null, + "diff_apex_ft": null, + "status": "pass", + "error_pattern": null + }, + "topped_test_shot": { + "diff_carry_yd": -0.7, + "diff_total_yd": 13.8, + "diff_apex_ft": -0.1, + "status": "severe", + "error_pattern": "ROLLOUT_TOO_LONG" + }, + "wedge_shot_1": { + "diff_carry_yd": -1.5, + "diff_total_yd": 6.2, + "diff_apex_ft": -0.8, + "status": "moderate", + "error_pattern": "ROLLOUT_TOO_LONG" + }, + "wedge_shot_2": { + "diff_carry_yd": -1.5, + "diff_total_yd": 9.6, + "diff_apex_ft": -1.1, + "status": "moderate", + "error_pattern": "ROLLOUT_TOO_LONG" + }, + "wedge_test_shot": { + "diff_carry_yd": 0.5, + "diff_total_yd": 11.0, + "diff_apex_ft": -0.9, + "status": "severe", + "error_pattern": "ROLLOUT_TOO_LONG" + }, + "wedge_test_shot2": { + "diff_carry_yd": 1.1, + "diff_total_yd": 12.4, + "diff_apex_ft": 0.8, + "status": "severe", + "error_pattern": "ROLLOUT_TOO_LONG" + }, + "wood1": { + "diff_carry_yd": 11.9, + "diff_total_yd": -4.0, + "diff_apex_ft": 3.1, + "status": "severe", + "error_pattern": "CARRY_TOO_LONG" + }, + "wood2": { + "diff_carry_yd": -0.4, + "diff_total_yd": -4.8, + "diff_apex_ft": -3.3, + "status": "pass", + "error_pattern": null + }, + "wood_low_test_shot": { + "diff_carry_yd": 1.3, + "diff_total_yd": 22.0, + "diff_apex_ft": 0.3, + "status": "severe", + "error_pattern": "ROLLOUT_TOO_LONG" + } + }, + "regressions": [ + { + "shot": "s4_shot_9i_15", + "was": "pass", + "now": "severe", + "prev_total_diff": -0.3, + "curr_total_diff": 12.6 + }, + { + "shot": "s4_shot_9i_18", + "was": "pass", + "now": "severe", + "prev_total_diff": -0.8, + "curr_total_diff": 12.8 + } + ], + "conflicts": [ + "Bounce.FlightTangentialRetentionBase", + "Bounce.FlightSpinFactorMin", + "Bounce.FlightSpinFactorDivisor", + "Rollout.MidSpinMultiplierMax", + "Rollout.HighSpinMultiplierMax", + "Rollout.FrictionBlendSpeed", + "KineticFrictionMultiplier", + "Bounce.RolloutHighSpinRetention", + "Bounce.CorBaseA", + "Rollout.LowSpinMultiplierMax", + "Rollout.LowSpinThreshold", + "RollingFrictionMultiplier", + "Bounce.RolloutLowSpinRetention", + "Flight.ClMaxBase", + "Flight.CdMin", + "DragScaleMultiplier", + "LiftScaleMultiplier", + "Rollout.ChipVelocityScaleMin", + "Rollout.ChipVelocityScaleMax", + "Flight.HighLaunchDragBoostMax" + ] +} diff --git a/assets/data/calibration/history/iteration_070.json b/assets/data/calibration/history/iteration_070.json new file mode 100644 index 0000000..2097d09 --- /dev/null +++ b/assets/data/calibration/history/iteration_070.json @@ -0,0 +1,988 @@ +{ + "iteration": 70, + "timestamp": "2026-03-14T03:51:21.060880", + "profile_overrides": {}, + "summary": { + "pass": 37, + "moderate": 31, + "severe": 61, + "no_reference": 7 + }, + "per_shot": { + "5iron": { + "diff_carry_yd": 4.8, + "diff_total_yd": 11.3, + "diff_apex_ft": 4.6, + "status": "severe", + "error_pattern": "CARRY_AND_ROLLOUT_LONG" + }, + "approach_mid_iron_test_shot": { + "diff_carry_yd": -0.6, + "diff_total_yd": 7.3, + "diff_apex_ft": -5.0, + "status": "moderate", + "error_pattern": "ROLLOUT_TOO_LONG" + }, + "bump_and_run": { + "diff_carry_yd": -6.1, + "diff_total_yd": -24.6, + "diff_apex_ft": -1.5, + "status": "severe", + "error_pattern": "CARRY_AND_ROLLOUT_SHORT" + }, + "bump_and_run_slow": { + "diff_carry_yd": null, + "diff_total_yd": null, + "diff_apex_ft": null, + "status": "pass", + "error_pattern": null + }, + "bump_test_shot": { + "diff_carry_yd": -2.1, + "diff_total_yd": 12.7, + "diff_apex_ft": -0.1, + "status": "severe", + "error_pattern": "ROLLOUT_TOO_LONG" + }, + "checked_test_shot": { + "diff_carry_yd": -2.1, + "diff_total_yd": -0.5, + "diff_apex_ft": -9.6, + "status": "pass", + "error_pattern": null + }, + "chip_test_shot": { + "diff_carry_yd": null, + "diff_total_yd": null, + "diff_apex_ft": null, + "status": "pass", + "error_pattern": null + }, + "drive_test_shot": { + "diff_carry_yd": 4.1, + "diff_total_yd": 4.6, + "diff_apex_ft": 1.6, + "status": "moderate", + "error_pattern": "CARRY_TOO_LONG" + }, + "driver1": { + "diff_carry_yd": -0.3, + "diff_total_yd": -26.3, + "diff_apex_ft": -0.8, + "status": "severe", + "error_pattern": "ROLLOUT_TOO_SHORT" + }, + "driver2": { + "diff_carry_yd": 2.8, + "diff_total_yd": 2.9, + "diff_apex_ft": -4.3, + "status": "pass", + "error_pattern": null + }, + "driver3": { + "diff_carry_yd": 0.9, + "diff_total_yd": 15.9, + "diff_apex_ft": 17.6, + "status": "severe", + "error_pattern": "ROLLOUT_TOO_LONG" + }, + "driver4": { + "diff_carry_yd": 1.3, + "diff_total_yd": 9.3, + "diff_apex_ft": 2.4, + "status": "moderate", + "error_pattern": "ROLLOUT_TOO_LONG" + }, + "flop_test_shot": { + "diff_carry_yd": -0.2, + "diff_total_yd": 1.6, + "diff_apex_ft": -8.5, + "status": "pass", + "error_pattern": null + }, + "p_wedge_shot_1": { + "diff_carry_yd": 1.2, + "diff_total_yd": 8.8, + "diff_apex_ft": -2.2, + "status": "moderate", + "error_pattern": "ROLLOUT_TOO_LONG" + }, + "s2_shot_10": { + "diff_carry_yd": 3.4, + "diff_total_yd": 10.2, + "diff_apex_ft": -6.0, + "status": "severe", + "error_pattern": "CARRY_AND_ROLLOUT_LONG" + }, + "s2_shot_11": { + "diff_carry_yd": -2.6, + "diff_total_yd": 1.1, + "diff_apex_ft": -4.6, + "status": "pass", + "error_pattern": null + }, + "s2_shot_12": { + "diff_carry_yd": 2.0, + "diff_total_yd": 6.0, + "diff_apex_ft": -6.2, + "status": "moderate", + "error_pattern": "ROLLOUT_TOO_LONG" + }, + "s2_shot_13": { + "diff_carry_yd": -1.1, + "diff_total_yd": 0.7, + "diff_apex_ft": -6.9, + "status": "pass", + "error_pattern": null + }, + "s2_shot_14": { + "diff_carry_yd": -2.3, + "diff_total_yd": -0.4, + "diff_apex_ft": -6.6, + "status": "pass", + "error_pattern": null + }, + "s2_shot_15": { + "diff_carry_yd": -1.0, + "diff_total_yd": -12.7, + "diff_apex_ft": -2.0, + "status": "severe", + "error_pattern": "ROLLOUT_TOO_SHORT" + }, + "s2_shot_16": { + "diff_carry_yd": -0.3, + "diff_total_yd": 2.2, + "diff_apex_ft": -3.5, + "status": "pass", + "error_pattern": null + }, + "s2_shot_17": { + "diff_carry_yd": 0.9, + "diff_total_yd": 4.7, + "diff_apex_ft": -5.1, + "status": "pass", + "error_pattern": null + }, + "s2_shot_18": { + "diff_carry_yd": -2.1, + "diff_total_yd": 7.2, + "diff_apex_ft": -3.5, + "status": "moderate", + "error_pattern": "ROLLOUT_TOO_LONG" + }, + "s2_shot_19": { + "diff_carry_yd": -2.1, + "diff_total_yd": -10.5, + "diff_apex_ft": -2.2, + "status": "severe", + "error_pattern": "ROLLOUT_TOO_SHORT" + }, + "s2_shot_20": { + "diff_carry_yd": 1.5, + "diff_total_yd": 7.5, + "diff_apex_ft": -3.0, + "status": "moderate", + "error_pattern": "ROLLOUT_TOO_LONG" + }, + "s2_shot_21": { + "diff_carry_yd": 4.9, + "diff_total_yd": 27.7, + "diff_apex_ft": 1.7, + "status": "severe", + "error_pattern": "CARRY_AND_ROLLOUT_LONG" + }, + "s2_shot_22": { + "diff_carry_yd": 0.6, + "diff_total_yd": -2.4, + "diff_apex_ft": -2.7, + "status": "pass", + "error_pattern": null + }, + "s2_shot_23": { + "diff_carry_yd": -0.8, + "diff_total_yd": -23.9, + "diff_apex_ft": -1.2, + "status": "severe", + "error_pattern": "ROLLOUT_TOO_SHORT" + }, + "s2_shot_24": { + "diff_carry_yd": 0.5, + "diff_total_yd": -1.5, + "diff_apex_ft": -3.0, + "status": "pass", + "error_pattern": null + }, + "s2_shot_26": { + "diff_carry_yd": 1.7, + "diff_total_yd": 20.6, + "diff_apex_ft": 23.5, + "status": "severe", + "error_pattern": "ROLLOUT_TOO_LONG" + }, + "s2_shot_27": { + "diff_carry_yd": -1.4, + "diff_total_yd": 9.2, + "diff_apex_ft": 3.2, + "status": "moderate", + "error_pattern": "ROLLOUT_TOO_LONG" + }, + "s2_shot_9": { + "diff_carry_yd": -3.3, + "diff_total_yd": 1.6, + "diff_apex_ft": 7.1, + "status": "moderate", + "error_pattern": "CARRY_TOO_SHORT" + }, + "s3_shot_3w_18": { + "diff_carry_yd": null, + "diff_total_yd": null, + "diff_apex_ft": null, + "status": "pass", + "error_pattern": null + }, + "s3_shot_3w_19": { + "diff_carry_yd": -0.6, + "diff_total_yd": 16.0, + "diff_apex_ft": 0.1, + "status": "severe", + "error_pattern": "ROLLOUT_TOO_LONG" + }, + "s3_shot_3w_21": { + "diff_carry_yd": 0.6, + "diff_total_yd": 15.9, + "diff_apex_ft": 0.3, + "status": "severe", + "error_pattern": "ROLLOUT_TOO_LONG" + }, + "s3_shot_3w_22": { + "diff_carry_yd": 2.6, + "diff_total_yd": 19.6, + "diff_apex_ft": 0.5, + "status": "severe", + "error_pattern": "ROLLOUT_TOO_LONG" + }, + "s3_shot_3w_23": { + "diff_carry_yd": 0.1, + "diff_total_yd": -23.3, + "diff_apex_ft": -1.3, + "status": "severe", + "error_pattern": "ROLLOUT_TOO_SHORT" + }, + "s3_shot_3w_24": { + "diff_carry_yd": 2.3, + "diff_total_yd": 23.8, + "diff_apex_ft": 0.7, + "status": "severe", + "error_pattern": "ROLLOUT_TOO_LONG" + }, + "s3_shot_5i_10": { + "diff_carry_yd": 2.5, + "diff_total_yd": -7.6, + "diff_apex_ft": 5.8, + "status": "moderate", + "error_pattern": "ROLLOUT_TOO_SHORT" + }, + "s3_shot_5i_11": { + "diff_carry_yd": -1.5, + "diff_total_yd": -15.4, + "diff_apex_ft": -0.7, + "status": "severe", + "error_pattern": "ROLLOUT_TOO_SHORT" + }, + "s3_shot_5i_12": { + "diff_carry_yd": 1.1, + "diff_total_yd": -23.5, + "diff_apex_ft": 1.1, + "status": "severe", + "error_pattern": "ROLLOUT_TOO_SHORT" + }, + "s3_shot_5i_13": { + "diff_carry_yd": 2.3, + "diff_total_yd": 10.1, + "diff_apex_ft": 0.6, + "status": "severe", + "error_pattern": "ROLLOUT_TOO_LONG" + }, + "s3_shot_5i_15": { + "diff_carry_yd": -4.6, + "diff_total_yd": 14.5, + "diff_apex_ft": -1.1, + "status": "severe", + "error_pattern": "CARRY_TOO_SHORT" + }, + "s3_shot_5i_16": { + "diff_carry_yd": 0.9, + "diff_total_yd": -21.0, + "diff_apex_ft": -0.2, + "status": "severe", + "error_pattern": "ROLLOUT_TOO_SHORT" + }, + "s3_shot_5i_17": { + "diff_carry_yd": 1.6, + "diff_total_yd": 4.3, + "diff_apex_ft": 0.2, + "status": "pass", + "error_pattern": null + }, + "s3_shot_6i_35": { + "diff_carry_yd": -4.4, + "diff_total_yd": -15.9, + "diff_apex_ft": -3.1, + "status": "severe", + "error_pattern": "CARRY_AND_ROLLOUT_SHORT" + }, + "s3_shot_6i_36": { + "diff_carry_yd": 2.8, + "diff_total_yd": -20.0, + "diff_apex_ft": 0.8, + "status": "severe", + "error_pattern": "ROLLOUT_TOO_SHORT" + }, + "s3_shot_6i_37": { + "diff_carry_yd": -3.7, + "diff_total_yd": 11.9, + "diff_apex_ft": -0.9, + "status": "severe", + "error_pattern": "CARRY_TOO_SHORT" + }, + "s3_shot_6i_38": { + "diff_carry_yd": -3.6, + "diff_total_yd": -21.7, + "diff_apex_ft": 0.1, + "status": "severe", + "error_pattern": "CARRY_AND_ROLLOUT_SHORT" + }, + "s3_shot_6i_39": { + "diff_carry_yd": -0.5, + "diff_total_yd": 6.4, + "diff_apex_ft": 0.0, + "status": "moderate", + "error_pattern": "ROLLOUT_TOO_LONG" + }, + "s3_shot_6i_40": { + "diff_carry_yd": -1.3, + "diff_total_yd": 7.7, + "diff_apex_ft": 0.1, + "status": "moderate", + "error_pattern": "ROLLOUT_TOO_LONG" + }, + "s3_shot_6i_41": { + "diff_carry_yd": -4.7, + "diff_total_yd": 12.9, + "diff_apex_ft": -1.0, + "status": "severe", + "error_pattern": "CARRY_TOO_SHORT" + }, + "s3_shot_6i_42": { + "diff_carry_yd": -0.4, + "diff_total_yd": -16.7, + "diff_apex_ft": 1.0, + "status": "severe", + "error_pattern": "ROLLOUT_TOO_SHORT" + }, + "s3_shot_6i_43": { + "diff_carry_yd": 5.6, + "diff_total_yd": -0.2, + "diff_apex_ft": 7.8, + "status": "moderate", + "error_pattern": "CARRY_TOO_LONG" + }, + "s3_shot_6i_44": { + "diff_carry_yd": -1.8, + "diff_total_yd": -28.0, + "diff_apex_ft": -1.4, + "status": "severe", + "error_pattern": "ROLLOUT_TOO_SHORT" + }, + "s3_shot_6i_45": { + "diff_carry_yd": 3.0, + "diff_total_yd": 20.4, + "diff_apex_ft": 0.5, + "status": "severe", + "error_pattern": "ROLLOUT_TOO_LONG" + }, + "s3_shot_6i_46": { + "diff_carry_yd": -1.0, + "diff_total_yd": -8.5, + "diff_apex_ft": -3.0, + "status": "moderate", + "error_pattern": "ROLLOUT_TOO_SHORT" + }, + "s3_shot_6i_47": { + "diff_carry_yd": 6.1, + "diff_total_yd": 8.3, + "diff_apex_ft": 11.4, + "status": "moderate", + "error_pattern": "CARRY_AND_ROLLOUT_LONG" + }, + "s3_shot_6i_48": { + "diff_carry_yd": 5.3, + "diff_total_yd": 8.8, + "diff_apex_ft": 13.8, + "status": "moderate", + "error_pattern": "CARRY_AND_ROLLOUT_LONG" + }, + "s3_shot_6i_49": { + "diff_carry_yd": -2.5, + "diff_total_yd": 6.9, + "diff_apex_ft": -0.3, + "status": "moderate", + "error_pattern": "ROLLOUT_TOO_LONG" + }, + "s3_shot_6i_50": { + "diff_carry_yd": -0.9, + "diff_total_yd": -12.5, + "diff_apex_ft": 3.8, + "status": "severe", + "error_pattern": "ROLLOUT_TOO_SHORT" + }, + "s3_shot_7i_25": { + "diff_carry_yd": -0.9, + "diff_total_yd": -18.4, + "diff_apex_ft": 0.9, + "status": "severe", + "error_pattern": "ROLLOUT_TOO_SHORT" + }, + "s3_shot_7i_26": { + "diff_carry_yd": 1.5, + "diff_total_yd": -22.1, + "diff_apex_ft": 1.1, + "status": "severe", + "error_pattern": "ROLLOUT_TOO_SHORT" + }, + "s3_shot_7i_27": { + "diff_carry_yd": 1.2, + "diff_total_yd": 4.7, + "diff_apex_ft": 7.7, + "status": "pass", + "error_pattern": null + }, + "s3_shot_7i_28": { + "diff_carry_yd": 0.5, + "diff_total_yd": 1.5, + "diff_apex_ft": 8.1, + "status": "pass", + "error_pattern": null + }, + "s3_shot_7i_29": { + "diff_carry_yd": 0.1, + "diff_total_yd": -6.6, + "diff_apex_ft": -3.6, + "status": "moderate", + "error_pattern": "ROLLOUT_TOO_SHORT" + }, + "s3_shot_7i_30": { + "diff_carry_yd": -0.7, + "diff_total_yd": 1.0, + "diff_apex_ft": 5.3, + "status": "pass", + "error_pattern": null + }, + "s3_shot_7i_31": { + "diff_carry_yd": -4.3, + "diff_total_yd": -13.8, + "diff_apex_ft": -4.0, + "status": "severe", + "error_pattern": "CARRY_AND_ROLLOUT_SHORT" + }, + "s3_shot_7i_32": { + "diff_carry_yd": -0.3, + "diff_total_yd": -1.4, + "diff_apex_ft": 4.1, + "status": "pass", + "error_pattern": null + }, + "s3_shot_7i_33": { + "diff_carry_yd": -0.1, + "diff_total_yd": -0.5, + "diff_apex_ft": 5.8, + "status": "pass", + "error_pattern": null + }, + "s3_shot_7i_34": { + "diff_carry_yd": 3.6, + "diff_total_yd": 2.0, + "diff_apex_ft": 3.0, + "status": "moderate", + "error_pattern": "CARRY_TOO_LONG" + }, + "s3_shot_9i_1": { + "diff_carry_yd": 0.2, + "diff_total_yd": -10.5, + "diff_apex_ft": 1.9, + "status": "severe", + "error_pattern": "ROLLOUT_TOO_SHORT" + }, + "s3_shot_9i_2": { + "diff_carry_yd": -1.9, + "diff_total_yd": -2.0, + "diff_apex_ft": 0.2, + "status": "pass", + "error_pattern": null + }, + "s3_shot_9i_3": { + "diff_carry_yd": -1.9, + "diff_total_yd": 1.4, + "diff_apex_ft": -5.4, + "status": "pass", + "error_pattern": null + }, + "s3_shot_9i_5": { + "diff_carry_yd": 0.3, + "diff_total_yd": -2.4, + "diff_apex_ft": -4.4, + "status": "pass", + "error_pattern": null + }, + "s3_shot_9i_7": { + "diff_carry_yd": 2.3, + "diff_total_yd": 2.9, + "diff_apex_ft": -3.6, + "status": "pass", + "error_pattern": null + }, + "s3_shot_9i_8": { + "diff_carry_yd": -2.3, + "diff_total_yd": 4.7, + "diff_apex_ft": -1.8, + "status": "pass", + "error_pattern": null + }, + "s3_shot_9i_9": { + "diff_carry_yd": -1.8, + "diff_total_yd": 2.3, + "diff_apex_ft": -6.3, + "status": "pass", + "error_pattern": null + }, + "s3_shot_driver_51": { + "diff_carry_yd": 3.2, + "diff_total_yd": 19.2, + "diff_apex_ft": -7.9, + "status": "severe", + "error_pattern": "CARRY_AND_ROLLOUT_LONG" + }, + "s3_shot_driver_52": { + "diff_carry_yd": 3.7, + "diff_total_yd": 18.3, + "diff_apex_ft": -6.6, + "status": "severe", + "error_pattern": "CARRY_AND_ROLLOUT_LONG" + }, + "s3_shot_driver_53": { + "diff_carry_yd": 0.1, + "diff_total_yd": 10.3, + "diff_apex_ft": -8.4, + "status": "severe", + "error_pattern": "ROLLOUT_TOO_LONG" + }, + "s3_shot_driver_54": { + "diff_carry_yd": 0.5, + "diff_total_yd": -4.9, + "diff_apex_ft": -3.5, + "status": "pass", + "error_pattern": null + }, + "s3_shot_driver_55": { + "diff_carry_yd": 2.0, + "diff_total_yd": 21.7, + "diff_apex_ft": 0.4, + "status": "severe", + "error_pattern": "ROLLOUT_TOO_LONG" + }, + "s3_shot_driver_56": { + "diff_carry_yd": -0.8, + "diff_total_yd": 13.7, + "diff_apex_ft": 7.2, + "status": "severe", + "error_pattern": "ROLLOUT_TOO_LONG" + }, + "s3_shot_driver_57": { + "diff_carry_yd": -3.3, + "diff_total_yd": -17.7, + "diff_apex_ft": -2.7, + "status": "severe", + "error_pattern": "CARRY_AND_ROLLOUT_SHORT" + }, + "s3_shot_driver_58": { + "diff_carry_yd": 9.3, + "diff_total_yd": 24.5, + "diff_apex_ft": -13.0, + "status": "severe", + "error_pattern": "CARRY_AND_ROLLOUT_LONG" + }, + "s3_shot_driver_59": { + "diff_carry_yd": -1.6, + "diff_total_yd": 14.4, + "diff_apex_ft": -4.2, + "status": "severe", + "error_pattern": "ROLLOUT_TOO_LONG" + }, + "s3_shot_driver_60": { + "diff_carry_yd": -0.6, + "diff_total_yd": -15.4, + "diff_apex_ft": -2.5, + "status": "severe", + "error_pattern": "ROLLOUT_TOO_SHORT" + }, + "s3_shot_pw_64": { + "diff_carry_yd": 3.4, + "diff_total_yd": 6.3, + "diff_apex_ft": 0.6, + "status": "moderate", + "error_pattern": "CARRY_AND_ROLLOUT_LONG" + }, + "s3_shot_pw_65": { + "diff_carry_yd": -0.6, + "diff_total_yd": 4.2, + "diff_apex_ft": -4.0, + "status": "pass", + "error_pattern": null + }, + "s3_shot_pw_66": { + "diff_carry_yd": -3.0, + "diff_total_yd": 10.8, + "diff_apex_ft": -3.9, + "status": "severe", + "error_pattern": "ROLLOUT_TOO_LONG" + }, + "s3_shot_pw_67": { + "diff_carry_yd": -0.4, + "diff_total_yd": 5.2, + "diff_apex_ft": -4.1, + "status": "moderate", + "error_pattern": "ROLLOUT_TOO_LONG" + }, + "s3_shot_pw_68": { + "diff_carry_yd": 0.6, + "diff_total_yd": 3.9, + "diff_apex_ft": -7.0, + "status": "pass", + "error_pattern": null + }, + "s3_shot_pw_69": { + "diff_carry_yd": -2.0, + "diff_total_yd": -3.1, + "diff_apex_ft": -3.5, + "status": "pass", + "error_pattern": null + }, + "s4_shot_3w_31": { + "diff_carry_yd": -0.1, + "diff_total_yd": -3.6, + "diff_apex_ft": -3.6, + "status": "pass", + "error_pattern": null + }, + "s4_shot_3w_32": { + "diff_carry_yd": -1.7, + "diff_total_yd": 4.4, + "diff_apex_ft": -4.3, + "status": "pass", + "error_pattern": null + }, + "s4_shot_3w_33": { + "diff_carry_yd": 6.4, + "diff_total_yd": 9.6, + "diff_apex_ft": -9.1, + "status": "moderate", + "error_pattern": "CARRY_AND_ROLLOUT_LONG" + }, + "s4_shot_3w_34": { + "diff_carry_yd": -0.7, + "diff_total_yd": -2.0, + "diff_apex_ft": -3.9, + "status": "pass", + "error_pattern": null + }, + "s4_shot_3w_35": { + "diff_carry_yd": -0.2, + "diff_total_yd": -2.7, + "diff_apex_ft": -4.7, + "status": "pass", + "error_pattern": null + }, + "s4_shot_5i_25": { + "diff_carry_yd": -2.9, + "diff_total_yd": -7.2, + "diff_apex_ft": -5.5, + "status": "moderate", + "error_pattern": "ROLLOUT_TOO_SHORT" + }, + "s4_shot_5i_26": { + "diff_carry_yd": 3.1, + "diff_total_yd": 5.0, + "diff_apex_ft": 2.9, + "status": "moderate", + "error_pattern": "CARRY_TOO_LONG" + }, + "s4_shot_5i_27": { + "diff_carry_yd": -2.0, + "diff_total_yd": 10.8, + "diff_apex_ft": -0.2, + "status": "severe", + "error_pattern": "ROLLOUT_TOO_LONG" + }, + "s4_shot_5i_28": { + "diff_carry_yd": -0.2, + "diff_total_yd": -6.9, + "diff_apex_ft": 5.0, + "status": "moderate", + "error_pattern": "ROLLOUT_TOO_SHORT" + }, + "s4_shot_5i_29": { + "diff_carry_yd": 6.3, + "diff_total_yd": 13.8, + "diff_apex_ft": 1.0, + "status": "severe", + "error_pattern": "CARRY_AND_ROLLOUT_LONG" + }, + "s4_shot_5i_30": { + "diff_carry_yd": 2.4, + "diff_total_yd": 1.6, + "diff_apex_ft": -7.8, + "status": "pass", + "error_pattern": null + }, + "s4_shot_6i_19": { + "diff_carry_yd": -0.5, + "diff_total_yd": -11.5, + "diff_apex_ft": 0.2, + "status": "severe", + "error_pattern": "ROLLOUT_TOO_SHORT" + }, + "s4_shot_6i_20": { + "diff_carry_yd": -0.1, + "diff_total_yd": 11.4, + "diff_apex_ft": 0.0, + "status": "severe", + "error_pattern": "ROLLOUT_TOO_LONG" + }, + "s4_shot_6i_21": { + "diff_carry_yd": 0.9, + "diff_total_yd": -1.5, + "diff_apex_ft": -6.8, + "status": "pass", + "error_pattern": null + }, + "s4_shot_6i_22": { + "diff_carry_yd": 4.5, + "diff_total_yd": 10.8, + "diff_apex_ft": 0.9, + "status": "severe", + "error_pattern": "CARRY_AND_ROLLOUT_LONG" + }, + "s4_shot_6i_23": { + "diff_carry_yd": null, + "diff_total_yd": null, + "diff_apex_ft": null, + "status": "pass", + "error_pattern": null + }, + "s4_shot_6i_24": { + "diff_carry_yd": null, + "diff_total_yd": null, + "diff_apex_ft": null, + "status": "pass", + "error_pattern": null + }, + "s4_shot_9i_13": { + "diff_carry_yd": null, + "diff_total_yd": null, + "diff_apex_ft": null, + "status": "pass", + "error_pattern": null + }, + "s4_shot_9i_14": { + "diff_carry_yd": -2.1, + "diff_total_yd": -0.4, + "diff_apex_ft": -7.0, + "status": "pass", + "error_pattern": null + }, + "s4_shot_9i_15": { + "diff_carry_yd": -1.5, + "diff_total_yd": 12.6, + "diff_apex_ft": -3.2, + "status": "severe", + "error_pattern": "ROLLOUT_TOO_LONG" + }, + "s4_shot_9i_17": { + "diff_carry_yd": -1.1, + "diff_total_yd": -15.7, + "diff_apex_ft": -0.3, + "status": "severe", + "error_pattern": "ROLLOUT_TOO_SHORT" + }, + "s4_shot_9i_18": { + "diff_carry_yd": -1.6, + "diff_total_yd": 12.8, + "diff_apex_ft": -3.0, + "status": "severe", + "error_pattern": "ROLLOUT_TOO_LONG" + }, + "s4_shot_lw_38": { + "diff_carry_yd": -1.9, + "diff_total_yd": 7.8, + "diff_apex_ft": -1.6, + "status": "moderate", + "error_pattern": "ROLLOUT_TOO_LONG" + }, + "s4_shot_pw_1": { + "diff_carry_yd": -1.0, + "diff_total_yd": -6.7, + "diff_apex_ft": 3.1, + "status": "moderate", + "error_pattern": "ROLLOUT_TOO_SHORT" + }, + "s4_shot_pw_10": { + "diff_carry_yd": -2.4, + "diff_total_yd": 0.4, + "diff_apex_ft": -4.2, + "status": "pass", + "error_pattern": null + }, + "s4_shot_pw_11": { + "diff_carry_yd": -2.6, + "diff_total_yd": 0.4, + "diff_apex_ft": -3.8, + "status": "pass", + "error_pattern": null + }, + "s4_shot_pw_2": { + "diff_carry_yd": 0.4, + "diff_total_yd": 12.2, + "diff_apex_ft": 0.4, + "status": "severe", + "error_pattern": "ROLLOUT_TOO_LONG" + }, + "s4_shot_pw_3": { + "diff_carry_yd": -1.5, + "diff_total_yd": 11.3, + "diff_apex_ft": -1.1, + "status": "severe", + "error_pattern": "ROLLOUT_TOO_LONG" + }, + "s4_shot_pw_47": { + "diff_carry_yd": -0.6, + "diff_total_yd": 9.5, + "diff_apex_ft": 0.0, + "status": "moderate", + "error_pattern": "ROLLOUT_TOO_LONG" + }, + "s4_shot_pw_48": { + "diff_carry_yd": -0.7, + "diff_total_yd": 8.4, + "diff_apex_ft": 0.0, + "status": "moderate", + "error_pattern": "ROLLOUT_TOO_LONG" + }, + "s4_shot_pw_49": { + "diff_carry_yd": -2.2, + "diff_total_yd": 10.6, + "diff_apex_ft": -0.3, + "status": "severe", + "error_pattern": "ROLLOUT_TOO_LONG" + }, + "s4_shot_pw_6": { + "diff_carry_yd": -1.3, + "diff_total_yd": -0.1, + "diff_apex_ft": -0.1, + "status": "pass", + "error_pattern": null + }, + "s4_shot_pw_7": { + "diff_carry_yd": -2.0, + "diff_total_yd": 12.2, + "diff_apex_ft": -3.7, + "status": "severe", + "error_pattern": "ROLLOUT_TOO_LONG" + }, + "s4_shot_pw_9": { + "diff_carry_yd": null, + "diff_total_yd": null, + "diff_apex_ft": null, + "status": "pass", + "error_pattern": null + }, + "topped_test_shot": { + "diff_carry_yd": -0.7, + "diff_total_yd": 13.8, + "diff_apex_ft": -0.1, + "status": "severe", + "error_pattern": "ROLLOUT_TOO_LONG" + }, + "wedge_shot_1": { + "diff_carry_yd": -1.5, + "diff_total_yd": 6.2, + "diff_apex_ft": -0.8, + "status": "moderate", + "error_pattern": "ROLLOUT_TOO_LONG" + }, + "wedge_shot_2": { + "diff_carry_yd": -1.5, + "diff_total_yd": 9.6, + "diff_apex_ft": -1.1, + "status": "moderate", + "error_pattern": "ROLLOUT_TOO_LONG" + }, + "wedge_test_shot": { + "diff_carry_yd": 1.5, + "diff_total_yd": 12.4, + "diff_apex_ft": -0.5, + "status": "severe", + "error_pattern": "ROLLOUT_TOO_LONG" + }, + "wedge_test_shot2": { + "diff_carry_yd": 1.1, + "diff_total_yd": 12.4, + "diff_apex_ft": 0.8, + "status": "severe", + "error_pattern": "ROLLOUT_TOO_LONG" + }, + "wood1": { + "diff_carry_yd": 11.9, + "diff_total_yd": -4.0, + "diff_apex_ft": 3.1, + "status": "severe", + "error_pattern": "CARRY_TOO_LONG" + }, + "wood2": { + "diff_carry_yd": -0.4, + "diff_total_yd": -4.8, + "diff_apex_ft": -3.3, + "status": "pass", + "error_pattern": null + }, + "wood_low_test_shot": { + "diff_carry_yd": 1.3, + "diff_total_yd": 22.0, + "diff_apex_ft": 0.3, + "status": "severe", + "error_pattern": "ROLLOUT_TOO_LONG" + } + }, + "regressions": [], + "conflicts": [ + "Bounce.FlightTangentialRetentionBase", + "Bounce.FlightSpinFactorMin", + "Bounce.FlightSpinFactorDivisor", + "Rollout.MidSpinMultiplierMax", + "Rollout.HighSpinMultiplierMax", + "Rollout.FrictionBlendSpeed", + "KineticFrictionMultiplier", + "Bounce.RolloutHighSpinRetention", + "Bounce.CorBaseA", + "Rollout.LowSpinMultiplierMax", + "Rollout.LowSpinThreshold", + "RollingFrictionMultiplier", + "Bounce.RolloutLowSpinRetention", + "Flight.ClMaxBase", + "Flight.CdMin", + "DragScaleMultiplier", + "LiftScaleMultiplier", + "Rollout.ChipVelocityScaleMin", + "Rollout.ChipVelocityScaleMax", + "Flight.HighLaunchDragBoostMax" + ] +} diff --git a/assets/data/calibration/history/iteration_071.json b/assets/data/calibration/history/iteration_071.json new file mode 100644 index 0000000..451ea45 --- /dev/null +++ b/assets/data/calibration/history/iteration_071.json @@ -0,0 +1,996 @@ +{ + "iteration": 71, + "timestamp": "2026-03-14T03:54:47.946258", + "profile_overrides": {}, + "summary": { + "pass": 38, + "moderate": 31, + "severe": 60, + "no_reference": 7 + }, + "per_shot": { + "5iron": { + "diff_carry_yd": 4.8, + "diff_total_yd": 11.3, + "diff_apex_ft": 4.6, + "status": "severe", + "error_pattern": "CARRY_AND_ROLLOUT_LONG" + }, + "approach_mid_iron_test_shot": { + "diff_carry_yd": -0.6, + "diff_total_yd": 7.3, + "diff_apex_ft": -5.0, + "status": "moderate", + "error_pattern": "ROLLOUT_TOO_LONG" + }, + "bump_and_run": { + "diff_carry_yd": -6.1, + "diff_total_yd": -24.6, + "diff_apex_ft": -1.5, + "status": "severe", + "error_pattern": "CARRY_AND_ROLLOUT_SHORT" + }, + "bump_and_run_slow": { + "diff_carry_yd": null, + "diff_total_yd": null, + "diff_apex_ft": null, + "status": "pass", + "error_pattern": null + }, + "bump_test_shot": { + "diff_carry_yd": -1.7, + "diff_total_yd": 13.2, + "diff_apex_ft": -0.1, + "status": "severe", + "error_pattern": "ROLLOUT_TOO_LONG" + }, + "checked_test_shot": { + "diff_carry_yd": -2.1, + "diff_total_yd": -0.5, + "diff_apex_ft": -9.6, + "status": "pass", + "error_pattern": null + }, + "chip_test_shot": { + "diff_carry_yd": null, + "diff_total_yd": null, + "diff_apex_ft": null, + "status": "pass", + "error_pattern": null + }, + "drive_test_shot": { + "diff_carry_yd": 4.1, + "diff_total_yd": 4.6, + "diff_apex_ft": 1.6, + "status": "moderate", + "error_pattern": "CARRY_TOO_LONG" + }, + "driver1": { + "diff_carry_yd": -0.3, + "diff_total_yd": -26.3, + "diff_apex_ft": -0.8, + "status": "severe", + "error_pattern": "ROLLOUT_TOO_SHORT" + }, + "driver2": { + "diff_carry_yd": 2.8, + "diff_total_yd": 2.9, + "diff_apex_ft": -4.3, + "status": "pass", + "error_pattern": null + }, + "driver3": { + "diff_carry_yd": 0.9, + "diff_total_yd": 15.9, + "diff_apex_ft": 17.6, + "status": "severe", + "error_pattern": "ROLLOUT_TOO_LONG" + }, + "driver4": { + "diff_carry_yd": 1.3, + "diff_total_yd": 9.3, + "diff_apex_ft": 2.4, + "status": "moderate", + "error_pattern": "ROLLOUT_TOO_LONG" + }, + "flop_test_shot": { + "diff_carry_yd": -0.2, + "diff_total_yd": 1.6, + "diff_apex_ft": -8.5, + "status": "pass", + "error_pattern": null + }, + "p_wedge_shot_1": { + "diff_carry_yd": 1.2, + "diff_total_yd": 8.8, + "diff_apex_ft": -2.2, + "status": "moderate", + "error_pattern": "ROLLOUT_TOO_LONG" + }, + "s2_shot_10": { + "diff_carry_yd": 3.4, + "diff_total_yd": 10.2, + "diff_apex_ft": -6.0, + "status": "severe", + "error_pattern": "CARRY_AND_ROLLOUT_LONG" + }, + "s2_shot_11": { + "diff_carry_yd": -1.1, + "diff_total_yd": 2.8, + "diff_apex_ft": -3.6, + "status": "pass", + "error_pattern": null + }, + "s2_shot_12": { + "diff_carry_yd": 2.0, + "diff_total_yd": 6.0, + "diff_apex_ft": -6.2, + "status": "moderate", + "error_pattern": "ROLLOUT_TOO_LONG" + }, + "s2_shot_13": { + "diff_carry_yd": -1.1, + "diff_total_yd": 0.7, + "diff_apex_ft": -6.9, + "status": "pass", + "error_pattern": null + }, + "s2_shot_14": { + "diff_carry_yd": -2.3, + "diff_total_yd": -0.4, + "diff_apex_ft": -6.6, + "status": "pass", + "error_pattern": null + }, + "s2_shot_15": { + "diff_carry_yd": -1.0, + "diff_total_yd": -12.7, + "diff_apex_ft": -2.0, + "status": "severe", + "error_pattern": "ROLLOUT_TOO_SHORT" + }, + "s2_shot_16": { + "diff_carry_yd": -0.3, + "diff_total_yd": 2.2, + "diff_apex_ft": -3.5, + "status": "pass", + "error_pattern": null + }, + "s2_shot_17": { + "diff_carry_yd": 0.9, + "diff_total_yd": 4.7, + "diff_apex_ft": -5.1, + "status": "pass", + "error_pattern": null + }, + "s2_shot_18": { + "diff_carry_yd": -2.1, + "diff_total_yd": 7.2, + "diff_apex_ft": -3.5, + "status": "moderate", + "error_pattern": "ROLLOUT_TOO_LONG" + }, + "s2_shot_19": { + "diff_carry_yd": -2.1, + "diff_total_yd": -10.5, + "diff_apex_ft": -2.2, + "status": "severe", + "error_pattern": "ROLLOUT_TOO_SHORT" + }, + "s2_shot_20": { + "diff_carry_yd": 1.5, + "diff_total_yd": 7.5, + "diff_apex_ft": -3.0, + "status": "moderate", + "error_pattern": "ROLLOUT_TOO_LONG" + }, + "s2_shot_21": { + "diff_carry_yd": 4.9, + "diff_total_yd": 27.7, + "diff_apex_ft": 1.7, + "status": "severe", + "error_pattern": "CARRY_AND_ROLLOUT_LONG" + }, + "s2_shot_22": { + "diff_carry_yd": 0.6, + "diff_total_yd": -2.4, + "diff_apex_ft": -2.7, + "status": "pass", + "error_pattern": null + }, + "s2_shot_23": { + "diff_carry_yd": -0.8, + "diff_total_yd": -23.9, + "diff_apex_ft": -1.2, + "status": "severe", + "error_pattern": "ROLLOUT_TOO_SHORT" + }, + "s2_shot_24": { + "diff_carry_yd": 0.5, + "diff_total_yd": -1.5, + "diff_apex_ft": -3.0, + "status": "pass", + "error_pattern": null + }, + "s2_shot_26": { + "diff_carry_yd": 1.7, + "diff_total_yd": 20.6, + "diff_apex_ft": 23.5, + "status": "severe", + "error_pattern": "ROLLOUT_TOO_LONG" + }, + "s2_shot_27": { + "diff_carry_yd": -1.4, + "diff_total_yd": 9.2, + "diff_apex_ft": 3.2, + "status": "moderate", + "error_pattern": "ROLLOUT_TOO_LONG" + }, + "s2_shot_9": { + "diff_carry_yd": -3.3, + "diff_total_yd": 1.6, + "diff_apex_ft": 7.1, + "status": "moderate", + "error_pattern": "CARRY_TOO_SHORT" + }, + "s3_shot_3w_18": { + "diff_carry_yd": null, + "diff_total_yd": null, + "diff_apex_ft": null, + "status": "pass", + "error_pattern": null + }, + "s3_shot_3w_19": { + "diff_carry_yd": -0.6, + "diff_total_yd": 16.0, + "diff_apex_ft": 0.1, + "status": "severe", + "error_pattern": "ROLLOUT_TOO_LONG" + }, + "s3_shot_3w_21": { + "diff_carry_yd": 0.6, + "diff_total_yd": 15.9, + "diff_apex_ft": 0.3, + "status": "severe", + "error_pattern": "ROLLOUT_TOO_LONG" + }, + "s3_shot_3w_22": { + "diff_carry_yd": 2.6, + "diff_total_yd": 19.6, + "diff_apex_ft": 0.5, + "status": "severe", + "error_pattern": "ROLLOUT_TOO_LONG" + }, + "s3_shot_3w_23": { + "diff_carry_yd": 0.1, + "diff_total_yd": -23.3, + "diff_apex_ft": -1.3, + "status": "severe", + "error_pattern": "ROLLOUT_TOO_SHORT" + }, + "s3_shot_3w_24": { + "diff_carry_yd": 2.3, + "diff_total_yd": 23.8, + "diff_apex_ft": 0.7, + "status": "severe", + "error_pattern": "ROLLOUT_TOO_LONG" + }, + "s3_shot_5i_10": { + "diff_carry_yd": 2.5, + "diff_total_yd": -7.6, + "diff_apex_ft": 5.8, + "status": "moderate", + "error_pattern": "ROLLOUT_TOO_SHORT" + }, + "s3_shot_5i_11": { + "diff_carry_yd": -1.5, + "diff_total_yd": -15.4, + "diff_apex_ft": -0.7, + "status": "severe", + "error_pattern": "ROLLOUT_TOO_SHORT" + }, + "s3_shot_5i_12": { + "diff_carry_yd": 1.1, + "diff_total_yd": -23.5, + "diff_apex_ft": 1.1, + "status": "severe", + "error_pattern": "ROLLOUT_TOO_SHORT" + }, + "s3_shot_5i_13": { + "diff_carry_yd": 2.3, + "diff_total_yd": 10.1, + "diff_apex_ft": 0.6, + "status": "severe", + "error_pattern": "ROLLOUT_TOO_LONG" + }, + "s3_shot_5i_15": { + "diff_carry_yd": -4.6, + "diff_total_yd": 14.5, + "diff_apex_ft": -1.1, + "status": "severe", + "error_pattern": "CARRY_TOO_SHORT" + }, + "s3_shot_5i_16": { + "diff_carry_yd": 0.9, + "diff_total_yd": -21.0, + "diff_apex_ft": -0.2, + "status": "severe", + "error_pattern": "ROLLOUT_TOO_SHORT" + }, + "s3_shot_5i_17": { + "diff_carry_yd": 1.6, + "diff_total_yd": 4.3, + "diff_apex_ft": 0.2, + "status": "pass", + "error_pattern": null + }, + "s3_shot_6i_35": { + "diff_carry_yd": -4.4, + "diff_total_yd": -15.9, + "diff_apex_ft": -3.1, + "status": "severe", + "error_pattern": "CARRY_AND_ROLLOUT_SHORT" + }, + "s3_shot_6i_36": { + "diff_carry_yd": 2.8, + "diff_total_yd": -20.0, + "diff_apex_ft": 0.8, + "status": "severe", + "error_pattern": "ROLLOUT_TOO_SHORT" + }, + "s3_shot_6i_37": { + "diff_carry_yd": -3.7, + "diff_total_yd": 11.9, + "diff_apex_ft": -0.9, + "status": "severe", + "error_pattern": "CARRY_TOO_SHORT" + }, + "s3_shot_6i_38": { + "diff_carry_yd": -3.6, + "diff_total_yd": -21.7, + "diff_apex_ft": 0.1, + "status": "severe", + "error_pattern": "CARRY_AND_ROLLOUT_SHORT" + }, + "s3_shot_6i_39": { + "diff_carry_yd": 0.0, + "diff_total_yd": 7.2, + "diff_apex_ft": 0.1, + "status": "moderate", + "error_pattern": "ROLLOUT_TOO_LONG" + }, + "s3_shot_6i_40": { + "diff_carry_yd": -0.7, + "diff_total_yd": 8.6, + "diff_apex_ft": 0.1, + "status": "moderate", + "error_pattern": "ROLLOUT_TOO_LONG" + }, + "s3_shot_6i_41": { + "diff_carry_yd": -4.7, + "diff_total_yd": 12.9, + "diff_apex_ft": -1.0, + "status": "severe", + "error_pattern": "CARRY_TOO_SHORT" + }, + "s3_shot_6i_42": { + "diff_carry_yd": -0.4, + "diff_total_yd": -16.7, + "diff_apex_ft": 1.0, + "status": "severe", + "error_pattern": "ROLLOUT_TOO_SHORT" + }, + "s3_shot_6i_43": { + "diff_carry_yd": 5.6, + "diff_total_yd": -0.2, + "diff_apex_ft": 7.8, + "status": "moderate", + "error_pattern": "CARRY_TOO_LONG" + }, + "s3_shot_6i_44": { + "diff_carry_yd": -1.8, + "diff_total_yd": -28.0, + "diff_apex_ft": -1.4, + "status": "severe", + "error_pattern": "ROLLOUT_TOO_SHORT" + }, + "s3_shot_6i_45": { + "diff_carry_yd": 3.0, + "diff_total_yd": 20.4, + "diff_apex_ft": 0.5, + "status": "severe", + "error_pattern": "ROLLOUT_TOO_LONG" + }, + "s3_shot_6i_46": { + "diff_carry_yd": -1.0, + "diff_total_yd": -8.5, + "diff_apex_ft": -3.0, + "status": "moderate", + "error_pattern": "ROLLOUT_TOO_SHORT" + }, + "s3_shot_6i_47": { + "diff_carry_yd": 6.1, + "diff_total_yd": 8.3, + "diff_apex_ft": 11.4, + "status": "moderate", + "error_pattern": "CARRY_AND_ROLLOUT_LONG" + }, + "s3_shot_6i_48": { + "diff_carry_yd": 5.3, + "diff_total_yd": 8.8, + "diff_apex_ft": 13.8, + "status": "moderate", + "error_pattern": "CARRY_AND_ROLLOUT_LONG" + }, + "s3_shot_6i_49": { + "diff_carry_yd": -1.6, + "diff_total_yd": 8.3, + "diff_apex_ft": -0.2, + "status": "moderate", + "error_pattern": "ROLLOUT_TOO_LONG" + }, + "s3_shot_6i_50": { + "diff_carry_yd": -0.9, + "diff_total_yd": -12.5, + "diff_apex_ft": 3.8, + "status": "severe", + "error_pattern": "ROLLOUT_TOO_SHORT" + }, + "s3_shot_7i_25": { + "diff_carry_yd": -0.9, + "diff_total_yd": -18.4, + "diff_apex_ft": 0.9, + "status": "severe", + "error_pattern": "ROLLOUT_TOO_SHORT" + }, + "s3_shot_7i_26": { + "diff_carry_yd": 1.5, + "diff_total_yd": -22.1, + "diff_apex_ft": 1.1, + "status": "severe", + "error_pattern": "ROLLOUT_TOO_SHORT" + }, + "s3_shot_7i_27": { + "diff_carry_yd": 1.2, + "diff_total_yd": 4.7, + "diff_apex_ft": 7.7, + "status": "pass", + "error_pattern": null + }, + "s3_shot_7i_28": { + "diff_carry_yd": 0.5, + "diff_total_yd": 1.5, + "diff_apex_ft": 8.1, + "status": "pass", + "error_pattern": null + }, + "s3_shot_7i_29": { + "diff_carry_yd": 0.1, + "diff_total_yd": -6.6, + "diff_apex_ft": -3.6, + "status": "moderate", + "error_pattern": "ROLLOUT_TOO_SHORT" + }, + "s3_shot_7i_30": { + "diff_carry_yd": -0.7, + "diff_total_yd": 1.0, + "diff_apex_ft": 5.3, + "status": "pass", + "error_pattern": null + }, + "s3_shot_7i_31": { + "diff_carry_yd": -4.3, + "diff_total_yd": -13.8, + "diff_apex_ft": -4.0, + "status": "severe", + "error_pattern": "CARRY_AND_ROLLOUT_SHORT" + }, + "s3_shot_7i_32": { + "diff_carry_yd": -0.3, + "diff_total_yd": -1.4, + "diff_apex_ft": 4.1, + "status": "pass", + "error_pattern": null + }, + "s3_shot_7i_33": { + "diff_carry_yd": -0.1, + "diff_total_yd": -0.5, + "diff_apex_ft": 5.8, + "status": "pass", + "error_pattern": null + }, + "s3_shot_7i_34": { + "diff_carry_yd": 3.6, + "diff_total_yd": 2.0, + "diff_apex_ft": 3.0, + "status": "moderate", + "error_pattern": "CARRY_TOO_LONG" + }, + "s3_shot_9i_1": { + "diff_carry_yd": 0.2, + "diff_total_yd": -10.5, + "diff_apex_ft": 1.9, + "status": "severe", + "error_pattern": "ROLLOUT_TOO_SHORT" + }, + "s3_shot_9i_2": { + "diff_carry_yd": -1.9, + "diff_total_yd": -2.0, + "diff_apex_ft": 0.2, + "status": "pass", + "error_pattern": null + }, + "s3_shot_9i_3": { + "diff_carry_yd": -1.9, + "diff_total_yd": 1.4, + "diff_apex_ft": -5.4, + "status": "pass", + "error_pattern": null + }, + "s3_shot_9i_5": { + "diff_carry_yd": 0.3, + "diff_total_yd": -2.4, + "diff_apex_ft": -4.4, + "status": "pass", + "error_pattern": null + }, + "s3_shot_9i_7": { + "diff_carry_yd": 2.3, + "diff_total_yd": 2.9, + "diff_apex_ft": -3.6, + "status": "pass", + "error_pattern": null + }, + "s3_shot_9i_8": { + "diff_carry_yd": -2.3, + "diff_total_yd": 4.7, + "diff_apex_ft": -1.8, + "status": "pass", + "error_pattern": null + }, + "s3_shot_9i_9": { + "diff_carry_yd": -1.8, + "diff_total_yd": 2.3, + "diff_apex_ft": -6.3, + "status": "pass", + "error_pattern": null + }, + "s3_shot_driver_51": { + "diff_carry_yd": 3.2, + "diff_total_yd": 19.2, + "diff_apex_ft": -7.9, + "status": "severe", + "error_pattern": "CARRY_AND_ROLLOUT_LONG" + }, + "s3_shot_driver_52": { + "diff_carry_yd": 3.7, + "diff_total_yd": 18.3, + "diff_apex_ft": -6.6, + "status": "severe", + "error_pattern": "CARRY_AND_ROLLOUT_LONG" + }, + "s3_shot_driver_53": { + "diff_carry_yd": 0.1, + "diff_total_yd": 10.3, + "diff_apex_ft": -8.4, + "status": "severe", + "error_pattern": "ROLLOUT_TOO_LONG" + }, + "s3_shot_driver_54": { + "diff_carry_yd": 0.5, + "diff_total_yd": -4.9, + "diff_apex_ft": -3.5, + "status": "pass", + "error_pattern": null + }, + "s3_shot_driver_55": { + "diff_carry_yd": 2.0, + "diff_total_yd": 21.7, + "diff_apex_ft": 0.4, + "status": "severe", + "error_pattern": "ROLLOUT_TOO_LONG" + }, + "s3_shot_driver_56": { + "diff_carry_yd": -0.8, + "diff_total_yd": 13.7, + "diff_apex_ft": 7.2, + "status": "severe", + "error_pattern": "ROLLOUT_TOO_LONG" + }, + "s3_shot_driver_57": { + "diff_carry_yd": -3.3, + "diff_total_yd": -17.7, + "diff_apex_ft": -2.7, + "status": "severe", + "error_pattern": "CARRY_AND_ROLLOUT_SHORT" + }, + "s3_shot_driver_58": { + "diff_carry_yd": 9.3, + "diff_total_yd": 24.5, + "diff_apex_ft": -13.0, + "status": "severe", + "error_pattern": "CARRY_AND_ROLLOUT_LONG" + }, + "s3_shot_driver_59": { + "diff_carry_yd": -1.6, + "diff_total_yd": 14.4, + "diff_apex_ft": -4.2, + "status": "severe", + "error_pattern": "ROLLOUT_TOO_LONG" + }, + "s3_shot_driver_60": { + "diff_carry_yd": -0.6, + "diff_total_yd": -15.4, + "diff_apex_ft": -2.5, + "status": "severe", + "error_pattern": "ROLLOUT_TOO_SHORT" + }, + "s3_shot_pw_64": { + "diff_carry_yd": 3.4, + "diff_total_yd": 6.3, + "diff_apex_ft": 0.6, + "status": "moderate", + "error_pattern": "CARRY_AND_ROLLOUT_LONG" + }, + "s3_shot_pw_65": { + "diff_carry_yd": 1.0, + "diff_total_yd": 6.2, + "diff_apex_ft": -2.9, + "status": "moderate", + "error_pattern": "ROLLOUT_TOO_LONG" + }, + "s3_shot_pw_66": { + "diff_carry_yd": -1.6, + "diff_total_yd": 0.9, + "diff_apex_ft": -3.0, + "status": "pass", + "error_pattern": null + }, + "s3_shot_pw_67": { + "diff_carry_yd": 1.3, + "diff_total_yd": 7.2, + "diff_apex_ft": -3.1, + "status": "moderate", + "error_pattern": "ROLLOUT_TOO_LONG" + }, + "s3_shot_pw_68": { + "diff_carry_yd": 0.6, + "diff_total_yd": 3.9, + "diff_apex_ft": -7.0, + "status": "pass", + "error_pattern": null + }, + "s3_shot_pw_69": { + "diff_carry_yd": -2.0, + "diff_total_yd": -3.1, + "diff_apex_ft": -3.5, + "status": "pass", + "error_pattern": null + }, + "s4_shot_3w_31": { + "diff_carry_yd": -0.1, + "diff_total_yd": -3.6, + "diff_apex_ft": -3.6, + "status": "pass", + "error_pattern": null + }, + "s4_shot_3w_32": { + "diff_carry_yd": -1.7, + "diff_total_yd": 4.4, + "diff_apex_ft": -4.3, + "status": "pass", + "error_pattern": null + }, + "s4_shot_3w_33": { + "diff_carry_yd": 6.4, + "diff_total_yd": 9.6, + "diff_apex_ft": -9.1, + "status": "moderate", + "error_pattern": "CARRY_AND_ROLLOUT_LONG" + }, + "s4_shot_3w_34": { + "diff_carry_yd": -0.7, + "diff_total_yd": -2.0, + "diff_apex_ft": -3.9, + "status": "pass", + "error_pattern": null + }, + "s4_shot_3w_35": { + "diff_carry_yd": -0.2, + "diff_total_yd": -2.7, + "diff_apex_ft": -4.7, + "status": "pass", + "error_pattern": null + }, + "s4_shot_5i_25": { + "diff_carry_yd": -2.9, + "diff_total_yd": -7.2, + "diff_apex_ft": -5.5, + "status": "moderate", + "error_pattern": "ROLLOUT_TOO_SHORT" + }, + "s4_shot_5i_26": { + "diff_carry_yd": 3.1, + "diff_total_yd": 5.0, + "diff_apex_ft": 2.9, + "status": "moderate", + "error_pattern": "CARRY_TOO_LONG" + }, + "s4_shot_5i_27": { + "diff_carry_yd": -1.0, + "diff_total_yd": 12.0, + "diff_apex_ft": -0.1, + "status": "severe", + "error_pattern": "ROLLOUT_TOO_LONG" + }, + "s4_shot_5i_28": { + "diff_carry_yd": -0.2, + "diff_total_yd": -6.9, + "diff_apex_ft": 5.0, + "status": "moderate", + "error_pattern": "ROLLOUT_TOO_SHORT" + }, + "s4_shot_5i_29": { + "diff_carry_yd": 6.3, + "diff_total_yd": 13.8, + "diff_apex_ft": 1.0, + "status": "severe", + "error_pattern": "CARRY_AND_ROLLOUT_LONG" + }, + "s4_shot_5i_30": { + "diff_carry_yd": 2.4, + "diff_total_yd": 1.6, + "diff_apex_ft": -7.8, + "status": "pass", + "error_pattern": null + }, + "s4_shot_6i_19": { + "diff_carry_yd": -0.5, + "diff_total_yd": -11.5, + "diff_apex_ft": 0.2, + "status": "severe", + "error_pattern": "ROLLOUT_TOO_SHORT" + }, + "s4_shot_6i_20": { + "diff_carry_yd": -0.1, + "diff_total_yd": 11.4, + "diff_apex_ft": 0.0, + "status": "severe", + "error_pattern": "ROLLOUT_TOO_LONG" + }, + "s4_shot_6i_21": { + "diff_carry_yd": 0.9, + "diff_total_yd": -1.5, + "diff_apex_ft": -6.8, + "status": "pass", + "error_pattern": null + }, + "s4_shot_6i_22": { + "diff_carry_yd": 4.5, + "diff_total_yd": 10.8, + "diff_apex_ft": 0.9, + "status": "severe", + "error_pattern": "CARRY_AND_ROLLOUT_LONG" + }, + "s4_shot_6i_23": { + "diff_carry_yd": null, + "diff_total_yd": null, + "diff_apex_ft": null, + "status": "pass", + "error_pattern": null + }, + "s4_shot_6i_24": { + "diff_carry_yd": null, + "diff_total_yd": null, + "diff_apex_ft": null, + "status": "pass", + "error_pattern": null + }, + "s4_shot_9i_13": { + "diff_carry_yd": null, + "diff_total_yd": null, + "diff_apex_ft": null, + "status": "pass", + "error_pattern": null + }, + "s4_shot_9i_14": { + "diff_carry_yd": -2.1, + "diff_total_yd": -0.4, + "diff_apex_ft": -7.0, + "status": "pass", + "error_pattern": null + }, + "s4_shot_9i_15": { + "diff_carry_yd": -1.5, + "diff_total_yd": 12.6, + "diff_apex_ft": -3.2, + "status": "severe", + "error_pattern": "ROLLOUT_TOO_LONG" + }, + "s4_shot_9i_17": { + "diff_carry_yd": -1.1, + "diff_total_yd": -15.7, + "diff_apex_ft": -0.3, + "status": "severe", + "error_pattern": "ROLLOUT_TOO_SHORT" + }, + "s4_shot_9i_18": { + "diff_carry_yd": -1.6, + "diff_total_yd": 12.8, + "diff_apex_ft": -3.0, + "status": "severe", + "error_pattern": "ROLLOUT_TOO_LONG" + }, + "s4_shot_lw_38": { + "diff_carry_yd": -1.1, + "diff_total_yd": 9.0, + "diff_apex_ft": -1.1, + "status": "moderate", + "error_pattern": "ROLLOUT_TOO_LONG" + }, + "s4_shot_pw_1": { + "diff_carry_yd": -1.0, + "diff_total_yd": -6.7, + "diff_apex_ft": 3.1, + "status": "moderate", + "error_pattern": "ROLLOUT_TOO_SHORT" + }, + "s4_shot_pw_10": { + "diff_carry_yd": -1.1, + "diff_total_yd": 1.9, + "diff_apex_ft": -3.4, + "status": "pass", + "error_pattern": null + }, + "s4_shot_pw_11": { + "diff_carry_yd": -1.1, + "diff_total_yd": 1.5, + "diff_apex_ft": -3.0, + "status": "pass", + "error_pattern": null + }, + "s4_shot_pw_2": { + "diff_carry_yd": 0.4, + "diff_total_yd": 12.2, + "diff_apex_ft": 0.4, + "status": "severe", + "error_pattern": "ROLLOUT_TOO_LONG" + }, + "s4_shot_pw_3": { + "diff_carry_yd": -1.5, + "diff_total_yd": 11.3, + "diff_apex_ft": -1.1, + "status": "severe", + "error_pattern": "ROLLOUT_TOO_LONG" + }, + "s4_shot_pw_47": { + "diff_carry_yd": -0.6, + "diff_total_yd": 9.5, + "diff_apex_ft": 0.0, + "status": "moderate", + "error_pattern": "ROLLOUT_TOO_LONG" + }, + "s4_shot_pw_48": { + "diff_carry_yd": -0.7, + "diff_total_yd": 8.4, + "diff_apex_ft": 0.0, + "status": "moderate", + "error_pattern": "ROLLOUT_TOO_LONG" + }, + "s4_shot_pw_49": { + "diff_carry_yd": -2.2, + "diff_total_yd": 10.6, + "diff_apex_ft": -0.3, + "status": "severe", + "error_pattern": "ROLLOUT_TOO_LONG" + }, + "s4_shot_pw_6": { + "diff_carry_yd": -1.3, + "diff_total_yd": -0.1, + "diff_apex_ft": -0.1, + "status": "pass", + "error_pattern": null + }, + "s4_shot_pw_7": { + "diff_carry_yd": -0.5, + "diff_total_yd": 0.7, + "diff_apex_ft": -2.9, + "status": "pass", + "error_pattern": null + }, + "s4_shot_pw_9": { + "diff_carry_yd": null, + "diff_total_yd": null, + "diff_apex_ft": null, + "status": "pass", + "error_pattern": null + }, + "topped_test_shot": { + "diff_carry_yd": -0.7, + "diff_total_yd": 13.8, + "diff_apex_ft": -0.1, + "status": "severe", + "error_pattern": "ROLLOUT_TOO_LONG" + }, + "wedge_shot_1": { + "diff_carry_yd": -1.5, + "diff_total_yd": 6.2, + "diff_apex_ft": -0.8, + "status": "moderate", + "error_pattern": "ROLLOUT_TOO_LONG" + }, + "wedge_shot_2": { + "diff_carry_yd": -0.4, + "diff_total_yd": 11.1, + "diff_apex_ft": -0.4, + "status": "severe", + "error_pattern": "ROLLOUT_TOO_LONG" + }, + "wedge_test_shot": { + "diff_carry_yd": 1.5, + "diff_total_yd": 12.4, + "diff_apex_ft": -0.5, + "status": "severe", + "error_pattern": "ROLLOUT_TOO_LONG" + }, + "wedge_test_shot2": { + "diff_carry_yd": 1.1, + "diff_total_yd": 12.4, + "diff_apex_ft": 0.8, + "status": "severe", + "error_pattern": "ROLLOUT_TOO_LONG" + }, + "wood1": { + "diff_carry_yd": 11.9, + "diff_total_yd": -4.0, + "diff_apex_ft": 3.1, + "status": "severe", + "error_pattern": "CARRY_TOO_LONG" + }, + "wood2": { + "diff_carry_yd": -0.4, + "diff_total_yd": -4.8, + "diff_apex_ft": -3.3, + "status": "pass", + "error_pattern": null + }, + "wood_low_test_shot": { + "diff_carry_yd": 1.3, + "diff_total_yd": 22.0, + "diff_apex_ft": 0.3, + "status": "severe", + "error_pattern": "ROLLOUT_TOO_LONG" + } + }, + "regressions": [ + { + "shot": "s3_shot_pw_65", + "was": "pass", + "now": "moderate", + "prev_total_diff": 4.2, + "curr_total_diff": 6.2 + } + ], + "conflicts": [ + "Bounce.FlightTangentialRetentionBase", + "Bounce.FlightSpinFactorMin", + "Bounce.FlightSpinFactorDivisor", + "Rollout.MidSpinMultiplierMax", + "Rollout.HighSpinMultiplierMax", + "Rollout.FrictionBlendSpeed", + "KineticFrictionMultiplier", + "Bounce.RolloutHighSpinRetention", + "Bounce.CorBaseA", + "Rollout.LowSpinMultiplierMax", + "Rollout.LowSpinThreshold", + "RollingFrictionMultiplier", + "Bounce.RolloutLowSpinRetention", + "Flight.ClMaxBase", + "Flight.CdMin", + "DragScaleMultiplier", + "LiftScaleMultiplier", + "Rollout.ChipVelocityScaleMin", + "Rollout.ChipVelocityScaleMax", + "Flight.HighLaunchDragBoostMax" + ] +} diff --git a/assets/data/calibration/history/iteration_072.json b/assets/data/calibration/history/iteration_072.json new file mode 100644 index 0000000..81b4fd0 --- /dev/null +++ b/assets/data/calibration/history/iteration_072.json @@ -0,0 +1,988 @@ +{ + "iteration": 72, + "timestamp": "2026-03-14T03:57:03.716112", + "profile_overrides": {}, + "summary": { + "pass": 38, + "moderate": 31, + "severe": 60, + "no_reference": 7 + }, + "per_shot": { + "5iron": { + "diff_carry_yd": 4.8, + "diff_total_yd": 11.3, + "diff_apex_ft": 4.6, + "status": "severe", + "error_pattern": "CARRY_AND_ROLLOUT_LONG" + }, + "approach_mid_iron_test_shot": { + "diff_carry_yd": -0.6, + "diff_total_yd": 7.3, + "diff_apex_ft": -5.0, + "status": "moderate", + "error_pattern": "ROLLOUT_TOO_LONG" + }, + "bump_and_run": { + "diff_carry_yd": -6.1, + "diff_total_yd": -24.6, + "diff_apex_ft": -1.5, + "status": "severe", + "error_pattern": "CARRY_AND_ROLLOUT_SHORT" + }, + "bump_and_run_slow": { + "diff_carry_yd": null, + "diff_total_yd": null, + "diff_apex_ft": null, + "status": "pass", + "error_pattern": null + }, + "bump_test_shot": { + "diff_carry_yd": -1.7, + "diff_total_yd": 13.2, + "diff_apex_ft": -0.1, + "status": "severe", + "error_pattern": "ROLLOUT_TOO_LONG" + }, + "checked_test_shot": { + "diff_carry_yd": -2.1, + "diff_total_yd": -0.5, + "diff_apex_ft": -9.6, + "status": "pass", + "error_pattern": null + }, + "chip_test_shot": { + "diff_carry_yd": null, + "diff_total_yd": null, + "diff_apex_ft": null, + "status": "pass", + "error_pattern": null + }, + "drive_test_shot": { + "diff_carry_yd": 4.1, + "diff_total_yd": 4.6, + "diff_apex_ft": 1.6, + "status": "moderate", + "error_pattern": "CARRY_TOO_LONG" + }, + "driver1": { + "diff_carry_yd": -0.3, + "diff_total_yd": -26.3, + "diff_apex_ft": -0.8, + "status": "severe", + "error_pattern": "ROLLOUT_TOO_SHORT" + }, + "driver2": { + "diff_carry_yd": 2.8, + "diff_total_yd": 2.9, + "diff_apex_ft": -4.3, + "status": "pass", + "error_pattern": null + }, + "driver3": { + "diff_carry_yd": 0.9, + "diff_total_yd": 15.9, + "diff_apex_ft": 17.6, + "status": "severe", + "error_pattern": "ROLLOUT_TOO_LONG" + }, + "driver4": { + "diff_carry_yd": 1.3, + "diff_total_yd": 9.3, + "diff_apex_ft": 2.4, + "status": "moderate", + "error_pattern": "ROLLOUT_TOO_LONG" + }, + "flop_test_shot": { + "diff_carry_yd": -0.2, + "diff_total_yd": 1.6, + "diff_apex_ft": -8.5, + "status": "pass", + "error_pattern": null + }, + "p_wedge_shot_1": { + "diff_carry_yd": 1.2, + "diff_total_yd": 8.8, + "diff_apex_ft": -2.2, + "status": "moderate", + "error_pattern": "ROLLOUT_TOO_LONG" + }, + "s2_shot_10": { + "diff_carry_yd": 3.4, + "diff_total_yd": 10.2, + "diff_apex_ft": -6.0, + "status": "severe", + "error_pattern": "CARRY_AND_ROLLOUT_LONG" + }, + "s2_shot_11": { + "diff_carry_yd": -1.1, + "diff_total_yd": 2.8, + "diff_apex_ft": -3.6, + "status": "pass", + "error_pattern": null + }, + "s2_shot_12": { + "diff_carry_yd": 2.0, + "diff_total_yd": 6.0, + "diff_apex_ft": -6.2, + "status": "moderate", + "error_pattern": "ROLLOUT_TOO_LONG" + }, + "s2_shot_13": { + "diff_carry_yd": -1.1, + "diff_total_yd": 0.7, + "diff_apex_ft": -6.9, + "status": "pass", + "error_pattern": null + }, + "s2_shot_14": { + "diff_carry_yd": -2.3, + "diff_total_yd": -0.4, + "diff_apex_ft": -6.6, + "status": "pass", + "error_pattern": null + }, + "s2_shot_15": { + "diff_carry_yd": -1.0, + "diff_total_yd": -12.7, + "diff_apex_ft": -2.0, + "status": "severe", + "error_pattern": "ROLLOUT_TOO_SHORT" + }, + "s2_shot_16": { + "diff_carry_yd": -0.3, + "diff_total_yd": 2.2, + "diff_apex_ft": -3.5, + "status": "pass", + "error_pattern": null + }, + "s2_shot_17": { + "diff_carry_yd": 0.9, + "diff_total_yd": 4.7, + "diff_apex_ft": -5.1, + "status": "pass", + "error_pattern": null + }, + "s2_shot_18": { + "diff_carry_yd": -2.1, + "diff_total_yd": 7.2, + "diff_apex_ft": -3.5, + "status": "moderate", + "error_pattern": "ROLLOUT_TOO_LONG" + }, + "s2_shot_19": { + "diff_carry_yd": -2.1, + "diff_total_yd": -10.5, + "diff_apex_ft": -2.2, + "status": "severe", + "error_pattern": "ROLLOUT_TOO_SHORT" + }, + "s2_shot_20": { + "diff_carry_yd": 1.5, + "diff_total_yd": 7.5, + "diff_apex_ft": -3.0, + "status": "moderate", + "error_pattern": "ROLLOUT_TOO_LONG" + }, + "s2_shot_21": { + "diff_carry_yd": 4.9, + "diff_total_yd": 27.7, + "diff_apex_ft": 1.7, + "status": "severe", + "error_pattern": "CARRY_AND_ROLLOUT_LONG" + }, + "s2_shot_22": { + "diff_carry_yd": 0.6, + "diff_total_yd": -2.4, + "diff_apex_ft": -2.7, + "status": "pass", + "error_pattern": null + }, + "s2_shot_23": { + "diff_carry_yd": -0.8, + "diff_total_yd": -23.9, + "diff_apex_ft": -1.2, + "status": "severe", + "error_pattern": "ROLLOUT_TOO_SHORT" + }, + "s2_shot_24": { + "diff_carry_yd": 0.5, + "diff_total_yd": -1.5, + "diff_apex_ft": -3.0, + "status": "pass", + "error_pattern": null + }, + "s2_shot_26": { + "diff_carry_yd": 1.7, + "diff_total_yd": 20.6, + "diff_apex_ft": 23.5, + "status": "severe", + "error_pattern": "ROLLOUT_TOO_LONG" + }, + "s2_shot_27": { + "diff_carry_yd": -1.4, + "diff_total_yd": 9.2, + "diff_apex_ft": 3.2, + "status": "moderate", + "error_pattern": "ROLLOUT_TOO_LONG" + }, + "s2_shot_9": { + "diff_carry_yd": -3.3, + "diff_total_yd": 1.6, + "diff_apex_ft": 7.1, + "status": "moderate", + "error_pattern": "CARRY_TOO_SHORT" + }, + "s3_shot_3w_18": { + "diff_carry_yd": null, + "diff_total_yd": null, + "diff_apex_ft": null, + "status": "pass", + "error_pattern": null + }, + "s3_shot_3w_19": { + "diff_carry_yd": -0.6, + "diff_total_yd": 16.0, + "diff_apex_ft": 0.1, + "status": "severe", + "error_pattern": "ROLLOUT_TOO_LONG" + }, + "s3_shot_3w_21": { + "diff_carry_yd": 0.6, + "diff_total_yd": 15.9, + "diff_apex_ft": 0.3, + "status": "severe", + "error_pattern": "ROLLOUT_TOO_LONG" + }, + "s3_shot_3w_22": { + "diff_carry_yd": 2.6, + "diff_total_yd": 19.6, + "diff_apex_ft": 0.5, + "status": "severe", + "error_pattern": "ROLLOUT_TOO_LONG" + }, + "s3_shot_3w_23": { + "diff_carry_yd": 0.1, + "diff_total_yd": -23.3, + "diff_apex_ft": -1.3, + "status": "severe", + "error_pattern": "ROLLOUT_TOO_SHORT" + }, + "s3_shot_3w_24": { + "diff_carry_yd": 2.3, + "diff_total_yd": 23.8, + "diff_apex_ft": 0.7, + "status": "severe", + "error_pattern": "ROLLOUT_TOO_LONG" + }, + "s3_shot_5i_10": { + "diff_carry_yd": 2.5, + "diff_total_yd": -7.6, + "diff_apex_ft": 5.8, + "status": "moderate", + "error_pattern": "ROLLOUT_TOO_SHORT" + }, + "s3_shot_5i_11": { + "diff_carry_yd": -1.5, + "diff_total_yd": -15.4, + "diff_apex_ft": -0.7, + "status": "severe", + "error_pattern": "ROLLOUT_TOO_SHORT" + }, + "s3_shot_5i_12": { + "diff_carry_yd": 1.1, + "diff_total_yd": -23.5, + "diff_apex_ft": 1.1, + "status": "severe", + "error_pattern": "ROLLOUT_TOO_SHORT" + }, + "s3_shot_5i_13": { + "diff_carry_yd": 2.3, + "diff_total_yd": 10.1, + "diff_apex_ft": 0.6, + "status": "severe", + "error_pattern": "ROLLOUT_TOO_LONG" + }, + "s3_shot_5i_15": { + "diff_carry_yd": -4.6, + "diff_total_yd": 14.5, + "diff_apex_ft": -1.1, + "status": "severe", + "error_pattern": "CARRY_TOO_SHORT" + }, + "s3_shot_5i_16": { + "diff_carry_yd": 0.9, + "diff_total_yd": -21.0, + "diff_apex_ft": -0.2, + "status": "severe", + "error_pattern": "ROLLOUT_TOO_SHORT" + }, + "s3_shot_5i_17": { + "diff_carry_yd": 1.6, + "diff_total_yd": 4.3, + "diff_apex_ft": 0.2, + "status": "pass", + "error_pattern": null + }, + "s3_shot_6i_35": { + "diff_carry_yd": -4.4, + "diff_total_yd": -15.9, + "diff_apex_ft": -3.1, + "status": "severe", + "error_pattern": "CARRY_AND_ROLLOUT_SHORT" + }, + "s3_shot_6i_36": { + "diff_carry_yd": 2.8, + "diff_total_yd": -20.0, + "diff_apex_ft": 0.8, + "status": "severe", + "error_pattern": "ROLLOUT_TOO_SHORT" + }, + "s3_shot_6i_37": { + "diff_carry_yd": -3.7, + "diff_total_yd": 11.9, + "diff_apex_ft": -0.9, + "status": "severe", + "error_pattern": "CARRY_TOO_SHORT" + }, + "s3_shot_6i_38": { + "diff_carry_yd": -3.6, + "diff_total_yd": -21.7, + "diff_apex_ft": 0.1, + "status": "severe", + "error_pattern": "CARRY_AND_ROLLOUT_SHORT" + }, + "s3_shot_6i_39": { + "diff_carry_yd": 0.0, + "diff_total_yd": 7.2, + "diff_apex_ft": 0.1, + "status": "moderate", + "error_pattern": "ROLLOUT_TOO_LONG" + }, + "s3_shot_6i_40": { + "diff_carry_yd": -0.7, + "diff_total_yd": 8.6, + "diff_apex_ft": 0.1, + "status": "moderate", + "error_pattern": "ROLLOUT_TOO_LONG" + }, + "s3_shot_6i_41": { + "diff_carry_yd": -4.7, + "diff_total_yd": 12.9, + "diff_apex_ft": -1.0, + "status": "severe", + "error_pattern": "CARRY_TOO_SHORT" + }, + "s3_shot_6i_42": { + "diff_carry_yd": -0.4, + "diff_total_yd": -16.7, + "diff_apex_ft": 1.0, + "status": "severe", + "error_pattern": "ROLLOUT_TOO_SHORT" + }, + "s3_shot_6i_43": { + "diff_carry_yd": 5.6, + "diff_total_yd": -0.2, + "diff_apex_ft": 7.8, + "status": "moderate", + "error_pattern": "CARRY_TOO_LONG" + }, + "s3_shot_6i_44": { + "diff_carry_yd": -1.8, + "diff_total_yd": -28.0, + "diff_apex_ft": -1.4, + "status": "severe", + "error_pattern": "ROLLOUT_TOO_SHORT" + }, + "s3_shot_6i_45": { + "diff_carry_yd": 3.0, + "diff_total_yd": 20.4, + "diff_apex_ft": 0.5, + "status": "severe", + "error_pattern": "ROLLOUT_TOO_LONG" + }, + "s3_shot_6i_46": { + "diff_carry_yd": -1.0, + "diff_total_yd": -8.5, + "diff_apex_ft": -3.0, + "status": "moderate", + "error_pattern": "ROLLOUT_TOO_SHORT" + }, + "s3_shot_6i_47": { + "diff_carry_yd": 6.1, + "diff_total_yd": 8.3, + "diff_apex_ft": 11.4, + "status": "moderate", + "error_pattern": "CARRY_AND_ROLLOUT_LONG" + }, + "s3_shot_6i_48": { + "diff_carry_yd": 5.3, + "diff_total_yd": 8.8, + "diff_apex_ft": 13.8, + "status": "moderate", + "error_pattern": "CARRY_AND_ROLLOUT_LONG" + }, + "s3_shot_6i_49": { + "diff_carry_yd": -1.6, + "diff_total_yd": 8.3, + "diff_apex_ft": -0.2, + "status": "moderate", + "error_pattern": "ROLLOUT_TOO_LONG" + }, + "s3_shot_6i_50": { + "diff_carry_yd": -0.9, + "diff_total_yd": -12.5, + "diff_apex_ft": 3.8, + "status": "severe", + "error_pattern": "ROLLOUT_TOO_SHORT" + }, + "s3_shot_7i_25": { + "diff_carry_yd": -0.9, + "diff_total_yd": -18.4, + "diff_apex_ft": 0.9, + "status": "severe", + "error_pattern": "ROLLOUT_TOO_SHORT" + }, + "s3_shot_7i_26": { + "diff_carry_yd": 1.5, + "diff_total_yd": -22.1, + "diff_apex_ft": 1.1, + "status": "severe", + "error_pattern": "ROLLOUT_TOO_SHORT" + }, + "s3_shot_7i_27": { + "diff_carry_yd": 1.2, + "diff_total_yd": 4.7, + "diff_apex_ft": 7.7, + "status": "pass", + "error_pattern": null + }, + "s3_shot_7i_28": { + "diff_carry_yd": 0.5, + "diff_total_yd": 1.5, + "diff_apex_ft": 8.1, + "status": "pass", + "error_pattern": null + }, + "s3_shot_7i_29": { + "diff_carry_yd": 0.1, + "diff_total_yd": -6.6, + "diff_apex_ft": -3.6, + "status": "moderate", + "error_pattern": "ROLLOUT_TOO_SHORT" + }, + "s3_shot_7i_30": { + "diff_carry_yd": -0.7, + "diff_total_yd": 1.0, + "diff_apex_ft": 5.3, + "status": "pass", + "error_pattern": null + }, + "s3_shot_7i_31": { + "diff_carry_yd": -4.3, + "diff_total_yd": -13.8, + "diff_apex_ft": -4.0, + "status": "severe", + "error_pattern": "CARRY_AND_ROLLOUT_SHORT" + }, + "s3_shot_7i_32": { + "diff_carry_yd": -0.3, + "diff_total_yd": -1.4, + "diff_apex_ft": 4.1, + "status": "pass", + "error_pattern": null + }, + "s3_shot_7i_33": { + "diff_carry_yd": -0.1, + "diff_total_yd": -0.5, + "diff_apex_ft": 5.8, + "status": "pass", + "error_pattern": null + }, + "s3_shot_7i_34": { + "diff_carry_yd": 3.6, + "diff_total_yd": 2.0, + "diff_apex_ft": 3.0, + "status": "moderate", + "error_pattern": "CARRY_TOO_LONG" + }, + "s3_shot_9i_1": { + "diff_carry_yd": 0.2, + "diff_total_yd": -10.5, + "diff_apex_ft": 1.9, + "status": "severe", + "error_pattern": "ROLLOUT_TOO_SHORT" + }, + "s3_shot_9i_2": { + "diff_carry_yd": -1.9, + "diff_total_yd": -2.0, + "diff_apex_ft": 0.2, + "status": "pass", + "error_pattern": null + }, + "s3_shot_9i_3": { + "diff_carry_yd": -1.9, + "diff_total_yd": 1.4, + "diff_apex_ft": -5.4, + "status": "pass", + "error_pattern": null + }, + "s3_shot_9i_5": { + "diff_carry_yd": 0.3, + "diff_total_yd": -2.4, + "diff_apex_ft": -4.4, + "status": "pass", + "error_pattern": null + }, + "s3_shot_9i_7": { + "diff_carry_yd": 2.3, + "diff_total_yd": 2.9, + "diff_apex_ft": -3.6, + "status": "pass", + "error_pattern": null + }, + "s3_shot_9i_8": { + "diff_carry_yd": -2.3, + "diff_total_yd": 4.7, + "diff_apex_ft": -1.8, + "status": "pass", + "error_pattern": null + }, + "s3_shot_9i_9": { + "diff_carry_yd": -1.8, + "diff_total_yd": 2.3, + "diff_apex_ft": -6.3, + "status": "pass", + "error_pattern": null + }, + "s3_shot_driver_51": { + "diff_carry_yd": 3.2, + "diff_total_yd": 19.2, + "diff_apex_ft": -7.9, + "status": "severe", + "error_pattern": "CARRY_AND_ROLLOUT_LONG" + }, + "s3_shot_driver_52": { + "diff_carry_yd": 3.7, + "diff_total_yd": 18.3, + "diff_apex_ft": -6.6, + "status": "severe", + "error_pattern": "CARRY_AND_ROLLOUT_LONG" + }, + "s3_shot_driver_53": { + "diff_carry_yd": 0.1, + "diff_total_yd": 10.3, + "diff_apex_ft": -8.4, + "status": "severe", + "error_pattern": "ROLLOUT_TOO_LONG" + }, + "s3_shot_driver_54": { + "diff_carry_yd": 0.5, + "diff_total_yd": -4.9, + "diff_apex_ft": -3.5, + "status": "pass", + "error_pattern": null + }, + "s3_shot_driver_55": { + "diff_carry_yd": 2.0, + "diff_total_yd": 21.7, + "diff_apex_ft": 0.4, + "status": "severe", + "error_pattern": "ROLLOUT_TOO_LONG" + }, + "s3_shot_driver_56": { + "diff_carry_yd": -0.8, + "diff_total_yd": 13.7, + "diff_apex_ft": 7.2, + "status": "severe", + "error_pattern": "ROLLOUT_TOO_LONG" + }, + "s3_shot_driver_57": { + "diff_carry_yd": -3.3, + "diff_total_yd": -17.7, + "diff_apex_ft": -2.7, + "status": "severe", + "error_pattern": "CARRY_AND_ROLLOUT_SHORT" + }, + "s3_shot_driver_58": { + "diff_carry_yd": 9.3, + "diff_total_yd": 24.5, + "diff_apex_ft": -13.0, + "status": "severe", + "error_pattern": "CARRY_AND_ROLLOUT_LONG" + }, + "s3_shot_driver_59": { + "diff_carry_yd": -1.6, + "diff_total_yd": 14.4, + "diff_apex_ft": -4.2, + "status": "severe", + "error_pattern": "ROLLOUT_TOO_LONG" + }, + "s3_shot_driver_60": { + "diff_carry_yd": -0.6, + "diff_total_yd": -15.4, + "diff_apex_ft": -2.5, + "status": "severe", + "error_pattern": "ROLLOUT_TOO_SHORT" + }, + "s3_shot_pw_64": { + "diff_carry_yd": 3.4, + "diff_total_yd": 6.3, + "diff_apex_ft": 0.6, + "status": "moderate", + "error_pattern": "CARRY_AND_ROLLOUT_LONG" + }, + "s3_shot_pw_65": { + "diff_carry_yd": 1.0, + "diff_total_yd": 6.2, + "diff_apex_ft": -2.9, + "status": "moderate", + "error_pattern": "ROLLOUT_TOO_LONG" + }, + "s3_shot_pw_66": { + "diff_carry_yd": -1.6, + "diff_total_yd": 0.9, + "diff_apex_ft": -3.0, + "status": "pass", + "error_pattern": null + }, + "s3_shot_pw_67": { + "diff_carry_yd": 1.3, + "diff_total_yd": 7.2, + "diff_apex_ft": -3.1, + "status": "moderate", + "error_pattern": "ROLLOUT_TOO_LONG" + }, + "s3_shot_pw_68": { + "diff_carry_yd": 0.6, + "diff_total_yd": 3.9, + "diff_apex_ft": -7.0, + "status": "pass", + "error_pattern": null + }, + "s3_shot_pw_69": { + "diff_carry_yd": -2.0, + "diff_total_yd": -3.1, + "diff_apex_ft": -3.5, + "status": "pass", + "error_pattern": null + }, + "s4_shot_3w_31": { + "diff_carry_yd": -0.1, + "diff_total_yd": -3.6, + "diff_apex_ft": -3.6, + "status": "pass", + "error_pattern": null + }, + "s4_shot_3w_32": { + "diff_carry_yd": -1.7, + "diff_total_yd": 4.4, + "diff_apex_ft": -4.3, + "status": "pass", + "error_pattern": null + }, + "s4_shot_3w_33": { + "diff_carry_yd": 6.4, + "diff_total_yd": 9.6, + "diff_apex_ft": -9.1, + "status": "moderate", + "error_pattern": "CARRY_AND_ROLLOUT_LONG" + }, + "s4_shot_3w_34": { + "diff_carry_yd": -0.7, + "diff_total_yd": -2.0, + "diff_apex_ft": -3.9, + "status": "pass", + "error_pattern": null + }, + "s4_shot_3w_35": { + "diff_carry_yd": -0.2, + "diff_total_yd": -2.7, + "diff_apex_ft": -4.7, + "status": "pass", + "error_pattern": null + }, + "s4_shot_5i_25": { + "diff_carry_yd": -2.9, + "diff_total_yd": -7.2, + "diff_apex_ft": -5.5, + "status": "moderate", + "error_pattern": "ROLLOUT_TOO_SHORT" + }, + "s4_shot_5i_26": { + "diff_carry_yd": 3.1, + "diff_total_yd": 5.0, + "diff_apex_ft": 2.9, + "status": "moderate", + "error_pattern": "CARRY_TOO_LONG" + }, + "s4_shot_5i_27": { + "diff_carry_yd": -1.0, + "diff_total_yd": 12.0, + "diff_apex_ft": -0.1, + "status": "severe", + "error_pattern": "ROLLOUT_TOO_LONG" + }, + "s4_shot_5i_28": { + "diff_carry_yd": -0.2, + "diff_total_yd": -6.9, + "diff_apex_ft": 5.0, + "status": "moderate", + "error_pattern": "ROLLOUT_TOO_SHORT" + }, + "s4_shot_5i_29": { + "diff_carry_yd": 6.3, + "diff_total_yd": 13.8, + "diff_apex_ft": 1.0, + "status": "severe", + "error_pattern": "CARRY_AND_ROLLOUT_LONG" + }, + "s4_shot_5i_30": { + "diff_carry_yd": 2.4, + "diff_total_yd": 1.6, + "diff_apex_ft": -7.8, + "status": "pass", + "error_pattern": null + }, + "s4_shot_6i_19": { + "diff_carry_yd": -0.5, + "diff_total_yd": -11.5, + "diff_apex_ft": 0.2, + "status": "severe", + "error_pattern": "ROLLOUT_TOO_SHORT" + }, + "s4_shot_6i_20": { + "diff_carry_yd": -0.1, + "diff_total_yd": 11.4, + "diff_apex_ft": 0.0, + "status": "severe", + "error_pattern": "ROLLOUT_TOO_LONG" + }, + "s4_shot_6i_21": { + "diff_carry_yd": 0.9, + "diff_total_yd": -1.5, + "diff_apex_ft": -6.8, + "status": "pass", + "error_pattern": null + }, + "s4_shot_6i_22": { + "diff_carry_yd": 4.5, + "diff_total_yd": 10.8, + "diff_apex_ft": 0.9, + "status": "severe", + "error_pattern": "CARRY_AND_ROLLOUT_LONG" + }, + "s4_shot_6i_23": { + "diff_carry_yd": null, + "diff_total_yd": null, + "diff_apex_ft": null, + "status": "pass", + "error_pattern": null + }, + "s4_shot_6i_24": { + "diff_carry_yd": null, + "diff_total_yd": null, + "diff_apex_ft": null, + "status": "pass", + "error_pattern": null + }, + "s4_shot_9i_13": { + "diff_carry_yd": null, + "diff_total_yd": null, + "diff_apex_ft": null, + "status": "pass", + "error_pattern": null + }, + "s4_shot_9i_14": { + "diff_carry_yd": -2.1, + "diff_total_yd": -0.4, + "diff_apex_ft": -7.0, + "status": "pass", + "error_pattern": null + }, + "s4_shot_9i_15": { + "diff_carry_yd": -1.5, + "diff_total_yd": 12.6, + "diff_apex_ft": -3.2, + "status": "severe", + "error_pattern": "ROLLOUT_TOO_LONG" + }, + "s4_shot_9i_17": { + "diff_carry_yd": -1.1, + "diff_total_yd": -15.7, + "diff_apex_ft": -0.3, + "status": "severe", + "error_pattern": "ROLLOUT_TOO_SHORT" + }, + "s4_shot_9i_18": { + "diff_carry_yd": -1.6, + "diff_total_yd": 12.8, + "diff_apex_ft": -3.0, + "status": "severe", + "error_pattern": "ROLLOUT_TOO_LONG" + }, + "s4_shot_lw_38": { + "diff_carry_yd": -1.1, + "diff_total_yd": 9.0, + "diff_apex_ft": -1.1, + "status": "moderate", + "error_pattern": "ROLLOUT_TOO_LONG" + }, + "s4_shot_pw_1": { + "diff_carry_yd": -1.0, + "diff_total_yd": -6.7, + "diff_apex_ft": 3.1, + "status": "moderate", + "error_pattern": "ROLLOUT_TOO_SHORT" + }, + "s4_shot_pw_10": { + "diff_carry_yd": -1.1, + "diff_total_yd": 1.9, + "diff_apex_ft": -3.4, + "status": "pass", + "error_pattern": null + }, + "s4_shot_pw_11": { + "diff_carry_yd": -1.1, + "diff_total_yd": 1.5, + "diff_apex_ft": -3.0, + "status": "pass", + "error_pattern": null + }, + "s4_shot_pw_2": { + "diff_carry_yd": 0.4, + "diff_total_yd": 12.2, + "diff_apex_ft": 0.4, + "status": "severe", + "error_pattern": "ROLLOUT_TOO_LONG" + }, + "s4_shot_pw_3": { + "diff_carry_yd": -1.5, + "diff_total_yd": 11.3, + "diff_apex_ft": -1.1, + "status": "severe", + "error_pattern": "ROLLOUT_TOO_LONG" + }, + "s4_shot_pw_47": { + "diff_carry_yd": -0.6, + "diff_total_yd": 9.5, + "diff_apex_ft": 0.0, + "status": "moderate", + "error_pattern": "ROLLOUT_TOO_LONG" + }, + "s4_shot_pw_48": { + "diff_carry_yd": -0.7, + "diff_total_yd": 8.4, + "diff_apex_ft": 0.0, + "status": "moderate", + "error_pattern": "ROLLOUT_TOO_LONG" + }, + "s4_shot_pw_49": { + "diff_carry_yd": -2.2, + "diff_total_yd": 10.6, + "diff_apex_ft": -0.3, + "status": "severe", + "error_pattern": "ROLLOUT_TOO_LONG" + }, + "s4_shot_pw_6": { + "diff_carry_yd": -1.3, + "diff_total_yd": -0.1, + "diff_apex_ft": -0.1, + "status": "pass", + "error_pattern": null + }, + "s4_shot_pw_7": { + "diff_carry_yd": -0.5, + "diff_total_yd": 0.7, + "diff_apex_ft": -2.9, + "status": "pass", + "error_pattern": null + }, + "s4_shot_pw_9": { + "diff_carry_yd": null, + "diff_total_yd": null, + "diff_apex_ft": null, + "status": "pass", + "error_pattern": null + }, + "topped_test_shot": { + "diff_carry_yd": -0.7, + "diff_total_yd": 13.8, + "diff_apex_ft": -0.1, + "status": "severe", + "error_pattern": "ROLLOUT_TOO_LONG" + }, + "wedge_shot_1": { + "diff_carry_yd": -1.5, + "diff_total_yd": 6.2, + "diff_apex_ft": -0.8, + "status": "moderate", + "error_pattern": "ROLLOUT_TOO_LONG" + }, + "wedge_shot_2": { + "diff_carry_yd": -0.4, + "diff_total_yd": 11.1, + "diff_apex_ft": -0.4, + "status": "severe", + "error_pattern": "ROLLOUT_TOO_LONG" + }, + "wedge_test_shot": { + "diff_carry_yd": 1.5, + "diff_total_yd": 12.4, + "diff_apex_ft": -0.5, + "status": "severe", + "error_pattern": "ROLLOUT_TOO_LONG" + }, + "wedge_test_shot2": { + "diff_carry_yd": 1.1, + "diff_total_yd": 12.4, + "diff_apex_ft": 0.8, + "status": "severe", + "error_pattern": "ROLLOUT_TOO_LONG" + }, + "wood1": { + "diff_carry_yd": 11.9, + "diff_total_yd": -4.0, + "diff_apex_ft": 3.1, + "status": "severe", + "error_pattern": "CARRY_TOO_LONG" + }, + "wood2": { + "diff_carry_yd": -0.4, + "diff_total_yd": -4.8, + "diff_apex_ft": -3.3, + "status": "pass", + "error_pattern": null + }, + "wood_low_test_shot": { + "diff_carry_yd": 1.3, + "diff_total_yd": 22.0, + "diff_apex_ft": 0.3, + "status": "severe", + "error_pattern": "ROLLOUT_TOO_LONG" + } + }, + "regressions": [], + "conflicts": [ + "Bounce.FlightTangentialRetentionBase", + "Bounce.FlightSpinFactorMin", + "Bounce.FlightSpinFactorDivisor", + "Rollout.MidSpinMultiplierMax", + "Rollout.HighSpinMultiplierMax", + "Rollout.FrictionBlendSpeed", + "KineticFrictionMultiplier", + "Bounce.RolloutHighSpinRetention", + "Bounce.CorBaseA", + "Rollout.LowSpinMultiplierMax", + "Rollout.LowSpinThreshold", + "RollingFrictionMultiplier", + "Bounce.RolloutLowSpinRetention", + "Flight.ClMaxBase", + "Flight.CdMin", + "DragScaleMultiplier", + "LiftScaleMultiplier", + "Rollout.ChipVelocityScaleMin", + "Rollout.ChipVelocityScaleMax", + "Flight.HighLaunchDragBoostMax" + ] +} diff --git a/assets/data/calibration/physics.csv b/assets/data/calibration/physics.csv index e42f57b..fe1eb45 100644 --- a/assets/data/calibration/physics.csv +++ b/assets/data/calibration/physics.csv @@ -1,103 +1,137 @@ shot_name,filename,speed_mph,vla_deg,hla_deg,total_spin_rpm,spin_axis_deg,backspin_rpm,sidespin_rpm,carry_yd,total_yd,rollout_yd,apex_ft,hang_time_s,landing_speed_mps,landing_angle_deg,initial_re,initial_spin_ratio,initial_cd,initial_cl,peak_cl,carry_only_yd -5iron,5iron.json,102.10,17.40,1.50,5391.0,12.30,5266.0,1151.0,143.7,154.3,10.7,64.6,4.86,23.86,45.06,124951.4,0.263855,0.223365,0.298854,0.298854,143.7 -approach_mid_iron_test_shot,approach_mid_iron_test_shot.json,93.90,22.90,-2.60,5375.0,2.00,5375.0,0.0,125.8,136.4,10.6,64.6,4.66,22.98,47.03,114916.1,0.286081,0.227772,0.251433,0.268000,125.8 -bump_and_run,bump_and_run.json,58.27,15.57,-0.85,1850.1,2.31,1700.4,75.7,34.7,34.5,-0.2,8.0,1.43,20.83,18.52,71314.6,0.145977,0.336605,0.122924,0.122924,34.7 -bump_and_run_slow,bump_and_run_slow.json,30.27,15.57,-0.85,1850.1,2.31,1700.4,75.7,10.0,27.1,17.0,2.2,0.73,12.54,16.52,37047.8,0.280996,0.484456,0.002156,0.002156,10.0 -bump_test_shot,bump_test_shot.json,78.27,5.57,-0.85,1850.1,2.31,1700.4,75.7,36.9,86.8,49.9,3.0,1.05,29.99,6.63,95790.9,0.108677,0.227686,0.175567,0.175567,36.9 -checked_test_shot,checked_test_shot.json,75.05,38.50,1.35,10700.8,5.74,10500.8,699.3,77.0,78.6,1.6,70.8,4.44,20.11,56.54,91853.0,0.700778,0.336003,0.256092,0.310183,77.0 -chip_test_shot,chip_test_shot.json,24.68,17.94,20.35,3203.9,-0.00,3203.9,0.0,7.6,16.6,9.0,1.9,0.68,10.40,18.56,30200.0,0.648877,0.477282,0.000085,0.000085,7.6 -drive_test_shot,drive_test_shot.json,150.00,12.50,1.50,2335.0,-9.90,2300.0,-400.0,245.0,256.8,11.8,80.0,5.76,30.70,33.64,183572.1,0.077783,0.207210,0.148598,0.153033,245.0 -driver1,driver1.json,124.00,9.40,-9.50,2322.0,-24.80,2107.9,-973.2,158.3,158.3,-0.0,29.5,3.60,32.70,18.37,151752.9,0.093576,0.202282,0.160723,0.161429,158.3 -driver2,driver2.json,124.60,13.20,-6.80,3994.0,-6.10,3971.3,-423.5,193.7,200.9,7.2,63.1,5.18,27.51,33.12,152487.2,0.160192,0.215946,0.192784,0.194989,193.7 -driver3,driver3.json,119.10,16.00,-8.90,4935.0,-9.40,4868.9,-806.3,180.3,201.8,21.5,99.6,5.98,25.82,54.11,145756.2,0.207095,0.225115,0.264888,0.317581,180.3 -driver4,driver4.json,119.00,15.50,-10.20,4454.0,-7.80,4412.0,-608.1,183.3,197.2,13.9,78.2,5.50,26.17,44.36,145633.8,0.187047,0.218968,0.216627,0.248903,183.3 -flop_test_shot,flop_test_shot.json,68.05,45.00,0.45,12000.0,0.84,12000.0,140.3,62.7,63.1,0.4,69.2,4.27,19.49,59.71,83286.3,0.881310,0.370633,0.244725,0.287960,62.7 -p_wedge_shot_1,p_wedge_shot_1.json,82.28,26.46,-3.15,4946.5,6.74,4912.3,580.3,100.2,109.5,9.3,55.1,4.17,21.54,47.23,100689.8,0.300469,0.248684,0.227664,0.268000,100.2 -topped_test_shot,topped_test_shot.json,91.78,5.00,-0.89,2195.3,16.20,2108.2,612.3,55.6,109.2,53.6,4.2,1.38,33.45,6.60,112323.8,0.119540,0.202761,0.190066,0.190066,55.6 -wedge_shot_1,wedge_shot_1.json,48.66,28.96,-1.27,5683.7,11.12,5577.0,1096.3,37.5,46.2,8.7,18.9,2.26,15.99,37.17,59555.9,0.583711,0.506866,0.287990,0.287990,37.5 -wedge_shot_2,wedge_shot_2.json,51.83,37.03,2.37,5652.0,9.08,5581.2,891.7,43.0,52.8,9.9,31.1,2.85,16.64,47.81,63425.0,0.545045,0.470013,0.288228,0.288228,43.0 -wedge_test_shot,wedge_test_shot.json,66.40,23.20,-1.40,6449.0,7.10,6399.0,793.0,65.6,79.4,13.8,28.0,3.00,18.64,35.24,81261.2,0.485321,0.335470,0.274986,0.310648,65.6 -wedge_test_shot2,wedge_test_shot2.json,54.70,26.80,1.60,4976.0,5.70,4951.0,494.0,46.8,60.8,14.0,22.4,2.54,17.08,36.63,66942.6,0.454603,0.417682,0.308404,0.311338,46.8 -wood1,wood1.json,124.20,6.70,-8.10,4528.0,4.80,4512.0,378.0,178.2,178.7,0.5,36.0,4.41,28.19,23.22,151997.7,0.182197,0.221541,0.224204,0.231332,178.2 -wood2,wood2.json,118.80,14.50,-3.30,3026.0,11.20,2968.0,586.0,180.4,186.8,6.3,57.7,4.83,28.10,31.22,145389.1,0.127270,0.204394,0.179735,0.181207,180.4 -wood_low_test_shot,wood_low_test_shot.json,114.46,6.95,-0.63,1932.5,-1.42,1931.9,-47.8,124.4,181.8,57.4,16.1,2.81,33.82,12.64,140079.8,0.084380,0.194759,0.165532,0.165574,124.4 -s2_shot_10,shot_10.json,89.70,25.51,-3.13,6446.1,6.16,6408.9,691.6,119.1,127.1,8.0,66.2,4.75,22.19,47.57,109779.2,0.359143,0.236864,0.228748,0.288595,119.1 -s2_shot_11,shot_11.json,78.51,29.59,4.31,7349.8,10.69,7222.3,1363.2,91.3,95.6,4.3,59.6,4.32,20.40,48.70,96081.2,0.467873,0.285922,0.274776,0.306881,91.3 -s2_shot_12,shot_12.json,90.80,24.49,-3.88,7260.6,4.91,7233.9,621.5,120.6,125.9,5.2,66.4,4.83,21.91,46.82,111117.8,0.399648,0.249116,0.243274,0.311297,120.6 -s2_shot_13,shot_13.json,95.22,19.62,-1.09,5609.6,12.20,5482.8,1185.8,127.1,131.7,4.6,52.5,4.35,23.25,39.40,116536.1,0.294416,0.226563,0.235762,0.270463,127.1 -s2_shot_14,shot_14.json,87.13,22.37,-2.00,5660.3,11.37,5549.3,1115.6,111.1,115.3,4.2,50.0,4.15,22.18,40.65,106633.6,0.324668,0.237516,0.224737,0.268176,111.1 -s2_shot_15,shot_15.json,88.14,14.21,-0.32,4985.2,19.37,4703.0,1653.5,100.7,100.8,0.1,27.0,3.24,23.79,25.51,107862.6,0.282684,0.235665,0.258753,0.281165,100.7 -s2_shot_16,shot_16.json,94.07,19.14,-5.93,5291.1,4.96,5271.3,457.7,124.7,130.3,5.6,52.1,4.32,23.13,40.62,115119.9,0.281118,0.227609,0.262224,0.273136,124.7 -s2_shot_17,shot_17.json,122.92,14.40,-1.33,4119.1,6.69,4091.0,480.2,191.2,199.5,8.4,68.2,5.28,27.12,36.19,150434.8,0.167473,0.216547,0.195165,0.199550,191.2 -s2_shot_18,shot_18.json,105.67,20.50,-1.72,5666.8,8.18,5609.2,806.3,151.9,166.0,14.2,83.5,5.37,24.34,51.47,129323.3,0.268011,0.223441,0.290900,0.290900,151.9 -s2_shot_19,shot_19.json,128.59,12.54,-8.40,2513.7,5.13,2503.6,224.6,197.8,204.3,6.5,56.4,4.88,29.73,28.77,157373.2,0.097695,0.206058,0.163440,0.165204,197.8 -s2_shot_20,shot_20.json,120.88,15.02,-2.96,4245.1,9.62,4185.4,709.5,186.6,196.4,9.8,70.5,5.30,26.73,38.53,147934.6,0.175515,0.217146,0.199410,0.212815,186.6 -s2_shot_21,shot_21.json,127.35,7.24,-11.46,2320.9,-19.47,2188.2,-773.4,160.7,215.3,54.6,24.9,3.53,33.40,16.13,155855.5,0.091079,0.204241,0.169690,0.170459,160.7 -s2_shot_22,shot_22.json,123.29,14.01,-6.11,3104.1,9.97,3057.3,537.3,191.1,199.0,7.9,61.6,5.03,28.32,31.83,150883.1,0.125832,0.207300,0.179061,0.180859,191.1 -s2_shot_23,shot_23.json,125.52,8.64,-14.33,3062.5,-23.87,2800.5,-1239.4,166.1,166.1,-0.0,31.1,3.83,31.68,19.20,153607.5,0.121944,0.208148,0.180025,0.180941,166.1 -s2_shot_24,shot_24.json,121.48,14.53,-11.23,3172.9,-6.80,3150.6,-375.5,188.7,195.5,6.8,63.0,5.06,27.97,32.75,148670.3,0.130533,0.206931,0.181227,0.183037,188.7 -s2_shot_26,shot_26.json,116.97,18.42,-2.02,5035.4,9.70,4963.4,848.2,173.3,197.3,24.0,112.3,6.17,25.92,58.01,143143.6,0.215155,0.226139,0.284498,0.319321,173.3 -s2_shot_27,shot_27.json,112.96,17.59,-2.26,4291.5,12.21,4194.4,907.8,168.1,183.4,15.2,78.6,5.31,25.81,46.45,138244.2,0.189868,0.215786,0.222482,0.261454,168.1 -s2_shot_9,shot_9.json,94.41,20.07,2.40,4020.4,16.33,3858.1,1130.8,123.7,136.0,12.3,62.1,4.47,23.57,46.46,115543.8,0.212823,0.223713,0.279055,0.314843,123.7 -s3_shot_3w_18,shot_3w_18.json,47.91,45.81,33.98,7491.0,30.00,6487.4,3745.5,36.7,41.7,4.9,34.7,2.95,16.10,54.61,58633.5,0.781418,0.569061,0.273498,0.273498,36.7 -s3_shot_3w_19,shot_3w_19.json,121.33,5.59,-4.84,1661.5,-11.89,1625.9,-342.2,120.5,182.5,62.0,12.3,2.53,36.70,10.00,148481.0,0.068442,0.197251,0.151288,0.151438,120.5 -s3_shot_3w_21,shot_3w_21.json,119.40,5.31,-3.43,1759.7,-10.46,1730.5,-319.5,115.7,177.1,61.3,11.2,2.44,36.62,9.45,146120.2,0.073659,0.196519,0.156580,0.156660,115.7 -s3_shot_3w_22,shot_3w_22.json,108.89,5.62,-7.25,2500.8,-1.78,2499.6,-77.5,106.3,161.5,55.2,11.0,2.44,33.74,10.12,133261.1,0.114780,0.196784,0.187398,0.187398,106.3 -s3_shot_3w_23,shot_3w_23.json,115.83,8.90,-0.78,2804.3,2.19,2802.2,107.3,148.5,148.2,-0.2,26.8,3.56,30.87,18.14,141755.6,0.120995,0.201268,0.178166,0.178473,148.5 -s3_shot_3w_24,shot_3w_24.json,123.42,6.29,-5.42,2751.6,-13.27,2678.1,-631.8,153.8,206.3,52.5,21.7,3.44,32.73,15.04,151037.8,0.111429,0.204726,0.185432,0.185915,153.8 -s3_shot_5i_10,shot_5i_10.json,87.96,14.22,1.21,4064.7,8.41,4021.0,594.4,106.1,109.6,3.5,34.3,3.59,23.03,34.08,107642.0,0.230959,0.235986,0.312469,0.319148,106.1 -s3_shot_5i_11,shot_5i_11.json,90.59,14.45,-0.21,3360.4,7.80,3329.3,456.2,105.6,106.9,1.4,28.5,3.26,25.16,26.29,110866.8,0.185386,0.219679,0.213438,0.218752,105.6 -s3_shot_5i_12,shot_5i_12.json,74.19,10.23,-1.67,3321.4,15.75,3196.7,901.5,59.6,58.4,-1.1,10.5,2.01,23.70,17.43,90789.2,0.223756,0.276466,0.301989,0.305482,59.6 -s3_shot_5i_13,shot_5i_13.json,75.04,8.01,2.53,3921.4,3.42,3914.4,234.0,56.5,89.0,32.5,7.4,1.83,24.58,12.26,91830.0,0.261184,0.272955,0.303437,0.305909,56.5 -s3_shot_5i_15,shot_5i_15.json,86.90,9.35,-4.02,2508.9,-4.94,2499.6,-216.2,74.1,121.3,47.2,11.0,2.08,28.55,13.08,106345.9,0.144296,0.214825,0.187102,0.187102,74.1 -s3_shot_5i_16,shot_5i_16.json,97.99,9.13,-2.08,3775.9,1.68,3774.3,110.7,110.2,109.2,-1.0,19.5,3.01,27.62,17.58,119926.2,0.192576,0.215013,0.229128,0.229955,110.2 -s3_shot_5i_17,shot_5i_17.json,56.46,9.97,24.15,5178.3,29.12,4523.9,2519.7,28.6,45.0,16.5,4.2,1.18,20.23,12.26,69096.2,0.458380,0.402994,0.309595,0.311075,28.6 -s3_shot_6i_35,shot_6i_35.json,80.55,15.35,-1.30,4667.1,-0.03,4667.1,-2.8,84.9,84.9,0.0,23.1,2.92,22.73,25.52,98572.3,0.289590,0.253612,0.244343,0.268976,84.9 -s3_shot_6i_36,shot_6i_36.json,78.86,10.40,16.08,4166.0,25.12,3771.9,1768.7,69.9,68.3,-1.6,12.4,2.27,24.22,16.75,96505.8,0.264030,0.258934,0.298537,0.298652,69.9 -s3_shot_6i_37,shot_6i_37.json,82.57,10.16,11.01,3041.1,25.35,2748.4,1301.8,67.9,109.4,41.5,11.0,2.03,26.95,14.28,101052.9,0.184068,0.234572,0.211057,0.211332,67.9 -s3_shot_6i_38,shot_6i_38.json,79.12,13.35,3.04,3186.9,11.59,3121.9,640.2,76.0,76.2,0.2,18.1,2.53,23.84,23.45,96827.7,0.201308,0.249920,0.250057,0.258223,76.0 -s3_shot_6i_39,shot_6i_39.json,60.98,6.14,10.35,3284.8,22.03,3044.9,1232.2,23.5,53.7,30.3,2.1,0.86,23.39,7.64,74625.7,0.269219,0.351554,0.288673,0.291348,23.5 -s3_shot_6i_40,shot_6i_40.json,62.11,6.80,27.01,2768.0,30.00,2397.2,1384.0,25.0,58.9,33.9,2.6,0.90,23.67,8.85,76009.9,0.222738,0.343045,0.300173,0.300559,25.0 -s3_shot_6i_41,shot_6i_41.json,82.53,9.88,-2.28,2620.2,13.56,2547.1,614.5,66.7,111.1,44.4,10.3,1.97,27.41,13.39,100996.8,0.158675,0.227492,0.192268,0.192269,66.7 -s3_shot_6i_42,shot_6i_42.json,77.19,13.14,-3.42,4057.2,4.14,4046.6,293.2,75.5,75.5,-0.0,18.3,2.63,22.59,23.99,94471.3,0.262673,0.264689,0.300938,0.300938,75.5 -s3_shot_6i_43,shot_6i_43.json,94.06,13.88,-4.68,4616.2,1.70,4614.2,137.0,123.7,129.5,5.7,43.1,4.12,23.23,37.74,115112.4,0.245275,0.227614,0.319007,0.319007,123.7 -s3_shot_6i_44,shot_6i_44.json,114.96,9.46,-6.67,2314.5,15.10,2234.6,602.8,141.1,140.8,-0.3,25.3,3.34,31.77,17.37,140686.5,0.100621,0.197318,0.165322,0.165551,141.1 -s3_shot_6i_45,shot_6i_45.json,109.32,6.42,-9.00,2509.9,-10.87,2464.9,-473.5,113.1,166.5,53.4,13.5,2.63,33.03,11.70,133784.2,0.114749,0.196925,0.187380,0.187381,113.1 -s3_shot_6i_46,shot_6i_46.json,116.33,13.65,0.34,3007.9,10.67,2955.8,557.1,171.1,175.8,4.6,50.1,4.53,28.25,28.55,142368.0,0.129223,0.203147,0.180634,0.181714,171.1 -s3_shot_6i_47,shot_6i_47.json,99.48,14.78,-2.86,4810.7,4.69,4794.6,393.7,138.2,148.5,10.3,56.8,4.64,23.60,43.56,121740.5,0.241695,0.224018,0.319265,0.319321,138.2 -s3_shot_6i_48,shot_6i_48.json,101.73,15.23,-3.03,4631.0,4.26,4618.2,344.4,143.2,154.6,11.4,63.1,4.83,23.90,45.83,124502.8,0.227503,0.223418,0.307983,0.319321,143.2 -s3_shot_6i_49,shot_6i_49.json,71.25,7.70,16.05,2624.7,30.00,2273.0,1312.3,37.4,77.3,39.9,4.2,1.20,26.22,9.47,87197.7,0.184102,0.274179,0.211348,0.211348,37.4 -s3_shot_6i_50,shot_6i_50.json,82.80,14.85,-1.42,3783.4,2.81,3778.8,185.4,92.8,95.3,2.6,29.5,3.23,22.65,32.23,101335.6,0.228355,0.247284,0.309186,0.318160,92.8 -s3_shot_7i_25,shot_7i_25.json,83.34,13.18,2.98,3409.5,17.79,3246.5,1041.7,86.4,86.8,0.4,21.0,2.80,24.19,24.28,101997.9,0.204455,0.239178,0.258137,0.266132,86.4 -s3_shot_7i_26,shot_7i_26.json,73.37,10.85,15.40,3560.9,30.00,3083.8,1780.4,58.4,57.5,-1.0,10.7,2.00,23.45,17.67,89787.0,0.242568,0.279987,0.319319,0.319321,58.4 -s3_shot_7i_27,shot_7i_27.json,93.74,17.06,-1.45,4611.6,2.63,4606.7,211.8,124.1,132.6,8.4,54.0,4.37,23.10,43.53,114719.5,0.245870,0.227933,0.318841,0.318841,124.1 -s3_shot_7i_28,shot_7i_28.json,92.09,16.41,-3.60,4216.7,-0.44,4216.6,-32.4,119.1,126.8,7.7,48.9,4.15,23.11,41.48,112696.8,0.228852,0.229779,0.309859,0.319321,119.1 -s3_shot_7i_29,shot_7i_29.json,107.59,13.82,-6.05,3633.3,4.72,3621.0,298.7,149.4,152.5,3.1,42.8,4.18,26.85,28.20,131669.7,0.168773,0.207825,0.195575,0.196678,149.4 -s3_shot_7i_30,shot_7i_30.json,90.17,17.56,-3.83,4508.5,-0.21,4508.5,-16.5,115.2,123.2,8.0,48.6,4.11,22.75,41.66,110355.9,0.249879,0.232360,0.316829,0.316829,115.2 -s3_shot_7i_31,shot_7i_31.json,76.36,17.52,-0.54,5122.2,1.84,5119.5,164.7,80.2,80.2,-0.0,24.3,2.94,21.68,27.18,93445.7,0.335263,0.264659,0.225889,0.268000,80.2 -s3_shot_7i_32,shot_7i_32.json,93.10,16.96,-1.03,3762.5,4.20,3752.4,275.6,119.4,127.6,8.2,45.6,3.98,23.95,38.50,113935.9,0.201982,0.221595,0.251784,0.278687,119.4 -s3_shot_7i_33,shot_7i_33.json,92.36,16.96,-0.58,3851.7,2.81,3847.1,188.9,118.1,126.7,8.6,46.7,4.02,23.60,39.60,113026.5,0.208434,0.224441,0.268276,0.297243,118.1 -s3_shot_7i_34,shot_7i_34.json,104.19,14.67,-4.63,4081.2,1.90,4079.0,135.0,146.9,153.2,6.3,51.3,4.49,25.08,37.02,127515.3,0.195758,0.214592,0.236115,0.255285,146.9 -s3_shot_9i_1,shot_9i_1.json,88.98,15.10,-0.50,3563.2,11.26,3494.6,695.8,105.3,108.2,2.9,32.1,3.42,24.11,30.94,108898.1,0.200130,0.226454,0.247047,0.261228,105.3 -s3_shot_9i_2,shot_9i_2.json,71.29,23.93,5.51,4085.5,8.31,4042.7,590.2,74.1,78.3,4.3,33.8,3.18,20.15,39.23,87241.3,0.286429,0.289562,0.250705,0.268796,74.1 -s3_shot_9i_3,shot_9i_3.json,90.11,21.67,2.80,5243.0,11.20,5143.3,1018.1,115.9,121.8,5.9,52.4,4.23,22.62,42.09,110277.5,0.290796,0.232455,0.242056,0.268000,115.9 -s3_shot_9i_5,shot_9i_5.json,84.02,19.37,3.82,5352.1,11.48,5245.0,1065.2,100.1,101.7,1.6,36.3,3.59,22.21,33.44,102827.9,0.318347,0.244171,0.224019,0.268000,100.1 -s3_shot_9i_7,shot_9i_7.json,83.03,22.51,5.26,7008.5,9.70,6908.3,1181.2,102.2,104.2,2.0,47.3,4.09,20.95,40.06,101607.9,0.421882,0.272085,0.254654,0.311339,102.2 -s3_shot_9i_8,shot_9i_8.json,92.21,21.95,-6.31,5042.3,0.73,5041.8,64.2,121.3,130.5,9.2,61.1,4.51,22.86,46.52,112846.1,0.273294,0.229631,0.279723,0.279723,121.3 -s3_shot_9i_9,shot_9i_9.json,90.06,22.14,-3.09,5351.1,1.21,5349.9,113.3,116.9,123.0,6.2,54.0,4.30,22.54,42.88,110212.5,0.296965,0.232535,0.231941,0.268000,116.9 -s3_shot_driver_51,shot_driver_51.json,116.17,21.74,2.17,6409.0,3.23,6398.8,360.7,174.3,193.9,19.6,109.3,6.16,25.54,56.27,142164.9,0.275733,0.228395,0.274312,0.274312,174.3 -s3_shot_driver_52,shot_driver_52.json,102.11,31.33,3.09,8442.2,6.26,8391.8,921.1,133.9,149.4,15.5,117.9,6.13,24.16,60.49,124959.2,0.413216,0.245899,0.250095,0.301073,133.9 -s3_shot_driver_53,shot_driver_53.json,97.23,30.63,2.23,8925.8,5.99,8877.1,931.1,124.1,135.0,10.9,102.0,5.69,23.10,56.94,118995.0,0.458786,0.265083,0.272631,0.310595,124.1 -s3_shot_driver_54,shot_driver_54.json,121.50,12.88,-5.26,3410.9,-9.97,3359.4,-590.5,183.6,188.7,5.1,54.3,4.79,28.21,29.58,148697.8,0.140300,0.208998,0.185406,0.186904,183.6 -s3_shot_driver_55,shot_driver_55.json,117.48,7.48,-8.33,2150.0,-27.19,1912.4,-982.4,128.1,184.4,56.3,17.6,2.86,34.26,13.30,143773.2,0.091462,0.197519,0.168768,0.168932,128.1 -s3_shot_driver_56,shot_driver_56.json,118.70,17.12,-1.80,4553.8,2.81,4548.4,222.9,181.4,201.6,20.2,92.9,5.78,26.15,50.62,145271.0,0.191729,0.220111,0.226607,0.281042,181.4 -s3_shot_driver_57,shot_driver_57.json,120.93,14.10,-5.16,1544.1,-7.96,1529.2,-213.7,172.5,177.3,4.8,47.4,4.23,30.71,26.13,147990.8,0.063815,0.196505,0.135395,0.136410,172.5 -s3_shot_driver_58,shot_driver_58.json,119.27,23.59,2.48,7093.4,3.26,7081.9,403.5,181.2,200.9,19.8,120.9,6.49,25.88,57.65,145965.8,0.297231,0.230714,0.231575,0.268541,181.2 -s3_shot_driver_59,shot_driver_59.json,80.96,44.91,8.87,6735.0,12.36,6578.8,1442.0,82.8,100.9,18.1,104.0,5.29,22.79,66.05,99079.0,0.415764,0.270301,0.251426,0.310684,82.8 -s3_shot_driver_60,shot_driver_60.json,107.39,11.67,-8.62,3268.6,-14.80,3160.1,-835.0,138.5,138.9,0.4,31.6,3.65,28.48,22.04,131422.8,0.152117,0.203783,0.189954,0.190320,138.5 -s3_shot_pw_64,shot_pw_64.json,69.63,28.57,0.16,5327.2,5.10,5306.2,473.4,75.7,92.0,16.3,42.7,3.64,19.40,45.17,85210.2,0.382385,0.293489,0.235700,0.308511,75.7 -s3_shot_pw_65,shot_pw_65.json,81.25,28.38,2.89,6959.4,9.38,6866.3,1134.7,98.4,104.1,5.7,61.8,4.47,20.80,48.82,99433.7,0.428086,0.274904,0.257944,0.311155,98.4 -s3_shot_pw_66,shot_pw_66.json,75.71,27.32,-1.17,6605.0,3.99,6589.0,460.1,87.1,102.1,15.0,49.8,4.00,19.95,45.08,92652.6,0.436020,0.278812,0.262117,0.311327,87.1 -s3_shot_pw_67,shot_pw_67.json,81.66,28.12,6.34,6509.6,12.74,6349.4,1435.1,100.0,106.8,6.7,61.0,4.46,20.93,48.83,99936.4,0.398402,0.263562,0.242678,0.311339,100.0 -s3_shot_pw_68,shot_pw_68.json,88.55,23.37,-0.05,6637.4,6.04,6600.5,698.8,116.1,120.2,4.1,57.2,4.48,21.93,42.94,108370.9,0.374608,0.243285,0.232885,0.292326,116.1 -s3_shot_pw_69,shot_pw_69.json,74.06,23.61,0.18,5880.4,8.45,5816.5,864.4,83.2,84.9,1.7,37.4,3.54,20.04,38.24,90634.2,0.396828,0.275008,0.241935,0.304135,83.2 +5iron,5iron.json,102.10,17.40,1.50,5391.0,12.30,5266.0,1151.0,142.9,153.5,10.6,64.2,4.84,23.77,45.13,124951.4,0.263855,0.225599,0.298854,0.298854,142.9 +approach_mid_iron_test_shot,approach_mid_iron_test_shot.json,93.90,22.90,-2.60,5375.0,2.00,5375.0,0.0,125.2,135.8,10.6,64.3,4.65,22.88,47.14,114916.1,0.286081,0.230050,0.251433,0.268000,125.2 +bump_and_run,bump_and_run.json,58.27,15.57,-0.85,1850.1,2.31,1700.4,75.7,37.7,37.4,-0.3,8.6,1.48,22.95,17.85,71314.6,0.145977,0.186984,0.141363,0.141363,37.7 +bump_and_run_slow,bump_and_run_slow.json,30.27,15.57,-0.85,1850.1,2.31,1700.4,75.7,10.2,28.2,18.0,2.2,0.73,12.95,15.97,37047.8,0.280996,0.269116,0.002479,0.002479,10.2 +bump_test_shot,bump_test_shot.json,78.27,5.57,-0.85,1850.1,2.31,1700.4,75.7,37.3,87.2,49.9,3.0,1.06,30.04,6.58,95790.9,0.108677,0.223064,0.179078,0.179078,37.3 +checked_test_shot,checked_test_shot.json,75.05,38.50,1.35,10700.8,5.74,10500.8,699.3,75.5,77.0,1.5,69.9,4.40,19.89,56.97,91853.0,0.700778,0.350675,0.256092,0.307493,75.5 +chip_test_shot,chip_test_shot.json,24.68,17.94,20.35,3203.9,-0.00,3203.9,0.0,7.8,17.1,9.3,1.9,0.69,10.59,18.67,30200.0,0.648877,0.337439,0.000102,0.000102,7.8 +drive_test_shot,drive_test_shot.json,150.00,12.50,1.50,2335.0,-9.90,2300.0,-400.0,248.1,260.6,12.5,82.2,5.86,30.71,34.16,183572.1,0.077783,0.205097,0.151570,0.155955,248.1 +driver1,driver1.json,124.00,9.40,-9.50,2322.0,-24.80,2107.9,-973.2,157.7,157.7,-0.0,29.4,3.59,32.57,18.43,151752.9,0.093576,0.204304,0.160723,0.161503,157.7 +driver2,driver2.json,124.60,13.20,-6.80,3994.0,-6.10,3971.3,-423.5,187.6,195.2,7.6,61.5,5.07,26.88,34.21,152487.2,0.160192,0.226830,0.192784,0.195740,187.6 +driver3,driver3.json,119.10,16.00,-8.90,4935.0,-9.40,4868.9,-806.3,175.0,194.4,19.4,96.1,5.86,25.15,54.60,145756.2,0.207095,0.236460,0.262239,0.316011,175.0 +driver4,driver4.json,119.00,15.50,-10.20,4454.0,-7.80,4412.0,-608.1,176.9,190.2,13.3,76.2,5.38,25.54,45.70,145633.8,0.187047,0.230004,0.214461,0.257810,176.9 +flop_test_shot,flop_test_shot.json,68.05,45.00,0.45,12000.0,0.84,12000.0,140.3,61.6,61.9,0.3,68.3,4.23,19.26,60.07,83286.3,0.881310,0.386817,0.244725,0.287767,61.6 +p_wedge_shot_1,p_wedge_shot_1.json,82.28,26.46,-3.15,4946.5,6.74,4912.3,580.3,105.7,116.1,10.5,58.3,4.32,22.52,47.02,100689.8,0.300469,0.221031,0.241324,0.284080,105.7 +topped_test_shot,topped_test_shot.json,91.78,5.00,-0.89,2195.3,16.20,2108.2,612.3,55.5,109.1,53.5,4.2,1.38,33.38,6.64,112323.8,0.119540,0.204789,0.190066,0.190066,55.5 +wedge_shot_1,wedge_shot_1.json,48.66,28.96,-1.27,5683.7,11.12,5577.0,1096.3,41.1,53.1,11.9,20.5,2.40,16.94,35.87,59555.9,0.583711,0.370369,0.345588,0.345588,41.1 +wedge_shot_2,wedge_shot_2.json,51.83,37.03,2.37,5652.0,9.08,5581.2,891.7,48.7,61.2,12.6,34.9,3.08,18.07,45.46,63425.0,0.545045,0.310119,0.360285,0.360285,48.7 +wedge_test_shot,wedge_test_shot.json,66.40,23.20,-1.40,6449.0,7.10,6399.0,793.0,72.1,88.2,16.1,30.7,3.23,19.72,34.46,81261.2,0.485321,0.277836,0.307984,0.348699,72.1 +wedge_test_shot2,wedge_test_shot2.json,54.70,26.80,1.60,4976.0,5.70,4951.0,494.0,53.3,70.1,16.8,25.2,2.79,18.38,35.72,66942.6,0.454603,0.295301,0.370085,0.373606,53.3 +wood1,wood1.json,124.20,6.70,-8.10,4528.0,4.80,4512.0,378.0,177.4,177.9,0.5,35.9,4.40,28.04,23.36,151997.7,0.182197,0.223756,0.224204,0.232002,177.4 +wood2,wood2.json,118.80,14.50,-3.30,3026.0,11.20,2968.0,586.0,175.2,181.3,6.1,56.0,4.73,27.51,31.44,145389.1,0.127270,0.214696,0.177938,0.179994,175.2 +wood_low_test_shot,wood_low_test_shot.json,114.46,6.95,-0.63,1932.5,-1.42,1931.9,-47.8,123.9,180.9,57.0,16.0,2.80,33.72,12.66,140079.8,0.084380,0.196706,0.165532,0.165595,123.9 +s2_shot_10,shot_10.json,89.70,25.51,-3.13,6446.1,6.16,6408.9,691.6,118.5,126.6,8.0,66.0,4.74,22.09,47.71,109779.2,0.359143,0.239233,0.228748,0.289487,118.5 +s2_shot_11,shot_11.json,78.51,29.59,4.31,7349.8,10.69,7222.3,1363.2,91.9,96.4,4.5,60.4,4.35,20.50,48.85,96081.2,0.467873,0.280118,0.280271,0.312453,91.9 +s2_shot_12,shot_12.json,90.80,24.49,-3.88,7260.6,4.91,7233.9,621.5,117.4,122.4,5.0,65.3,4.78,21.40,47.51,111117.8,0.399648,0.261671,0.243274,0.311339,117.4 +s2_shot_13,shot_13.json,95.22,19.62,-1.09,5609.6,12.20,5482.8,1185.8,124.2,129.4,5.3,51.5,4.30,22.75,40.06,116536.1,0.294416,0.237982,0.235762,0.268000,124.2 +s2_shot_14,shot_14.json,87.13,22.37,-2.00,5660.3,11.37,5549.3,1115.6,108.6,113.3,4.7,49.3,4.11,21.71,41.10,106633.6,0.324668,0.249486,0.224737,0.268798,108.6 +s2_shot_15,shot_15.json,88.14,14.21,-0.32,4985.2,19.37,4703.0,1653.5,100.3,100.4,0.1,26.9,3.23,23.71,25.64,107862.6,0.282684,0.238022,0.258753,0.279747,100.3 +s2_shot_16,shot_16.json,94.07,19.14,-5.93,5291.1,4.96,5271.3,457.7,124.0,130.3,6.3,51.8,4.30,23.02,40.64,115119.9,0.281118,0.229885,0.262224,0.274710,124.0 +s2_shot_17,shot_17.json,122.92,14.40,-1.33,4119.1,6.69,4091.0,480.2,184.9,195.0,10.1,66.7,5.17,26.48,37.47,150434.8,0.167473,0.227461,0.195165,0.202703,184.9 +s2_shot_18,shot_18.json,105.67,20.50,-1.72,5666.8,8.18,5609.2,806.3,144.7,156.6,11.9,76.9,5.13,23.31,50.68,129323.3,0.268011,0.243729,0.279264,0.279264,144.7 +s2_shot_19,shot_19.json,128.59,12.54,-8.40,2513.7,5.13,2503.6,224.6,192.4,198.2,5.8,55.1,4.79,29.05,29.04,157373.2,0.097695,0.216443,0.163440,0.165833,192.4 +s2_shot_20,shot_20.json,120.88,15.02,-2.96,4245.1,9.62,4185.4,709.5,180.9,192.8,12.0,69.3,5.22,26.07,40.19,147934.6,0.175515,0.228090,0.199410,0.219559,180.9 +s2_shot_21,shot_21.json,127.35,7.24,-11.46,2320.9,-19.47,2188.2,-773.4,159.8,214.2,54.4,24.8,3.52,33.30,16.10,155855.5,0.091079,0.206284,0.169690,0.170540,159.8 +s2_shot_22,shot_22.json,123.29,14.01,-6.11,3104.1,9.97,3057.3,537.3,186.0,193.1,7.1,60.3,4.95,27.66,32.33,150883.1,0.125832,0.217748,0.179061,0.181530,186.0 +s2_shot_23,shot_23.json,125.52,8.64,-14.33,3062.5,-23.87,2800.5,-1239.4,161.1,161.1,-0.0,29.8,3.73,31.42,19.03,153607.5,0.121944,0.216536,0.176424,0.177656,161.1 +s2_shot_24,shot_24.json,121.48,14.53,-11.23,3172.9,-6.80,3150.6,-375.5,183.5,191.3,7.8,61.6,4.98,27.32,33.50,148670.3,0.130533,0.217361,0.181227,0.183728,183.5 +s2_shot_26,shot_26.json,116.97,18.42,-2.02,5035.4,9.70,4963.4,848.2,172.4,194.8,22.4,111.6,6.15,25.80,58.18,143143.6,0.215155,0.228401,0.284498,0.319321,172.4 +s2_shot_27,shot_27.json,112.96,17.59,-2.26,4291.5,12.21,4194.4,907.8,163.1,178.8,15.7,76.8,5.22,25.19,47.60,138244.2,0.189868,0.226662,0.220257,0.270480,163.1 +s2_shot_9,shot_9.json,94.41,20.07,2.40,4020.4,16.33,3858.1,1130.8,123.2,134.1,10.9,61.9,4.46,23.47,46.60,115543.8,0.212823,0.225950,0.279055,0.315344,123.2 +s3_shot_3w_18,shot_3w_18.json,47.91,45.81,33.98,7491.0,30.00,6487.4,3745.5,40.4,46.1,5.7,37.7,3.10,17.34,52.71,58633.5,0.781418,0.386042,0.341873,0.350207,40.4 +s3_shot_3w_19,shot_3w_19.json,121.33,5.59,-4.84,1661.5,-11.89,1625.9,-342.2,120.0,181.8,61.8,12.3,2.52,36.61,10.00,148481.0,0.068442,0.199224,0.151288,0.151476,120.0 +s3_shot_3w_21,shot_3w_21.json,119.40,5.31,-3.43,1759.7,-10.46,1730.5,-319.5,115.2,176.4,61.2,11.2,2.43,36.54,9.44,146120.2,0.073659,0.198484,0.156580,0.156688,115.2 +s3_shot_3w_22,shot_3w_22.json,108.89,5.62,-7.25,2500.8,-1.78,2499.6,-77.5,105.8,160.9,55.1,11.0,2.43,33.66,10.12,133261.1,0.114780,0.198752,0.187398,0.187398,105.8 +s3_shot_3w_23,shot_3w_23.json,115.83,8.90,-0.78,2804.3,2.19,2802.2,107.3,147.8,147.6,-0.2,26.7,3.55,30.75,18.21,141755.6,0.120995,0.203281,0.178166,0.178525,147.8 +s3_shot_3w_24,shot_3w_24.json,123.42,6.29,-5.42,2751.6,-13.27,2678.1,-631.8,148.2,200.5,52.3,20.5,3.32,32.61,14.69,151037.8,0.111429,0.212976,0.181723,0.182469,148.2 +s3_shot_5i_10,shot_5i_10.json,87.96,14.22,1.21,4064.7,8.41,4021.0,594.4,105.6,109.1,3.5,34.2,3.58,22.94,34.20,107642.0,0.230959,0.238346,0.312469,0.319245,105.6 +s3_shot_5i_11,shot_5i_11.json,90.59,14.45,-0.21,3360.4,7.80,3329.3,456.2,107.3,108.7,1.4,29.1,3.31,25.29,26.42,110866.8,0.185386,0.215219,0.217706,0.221973,107.3 +s3_shot_5i_12,shot_5i_12.json,74.19,10.23,-1.67,3321.4,15.75,3196.7,901.5,59.5,58.4,-1.1,10.5,2.01,23.63,17.60,90789.2,0.223756,0.279231,0.301989,0.305937,59.5 +s3_shot_5i_13,shot_5i_13.json,75.04,8.01,2.53,3921.4,3.42,3914.4,234.0,56.2,89.0,32.7,7.4,1.83,24.53,12.25,91830.0,0.261184,0.275684,0.303437,0.305052,56.2 +s3_shot_5i_15,shot_5i_15.json,86.90,9.35,-4.02,2508.9,-4.94,2499.6,-216.2,74.0,121.1,47.1,11.0,2.08,28.46,13.15,106345.9,0.144296,0.216973,0.187102,0.187102,74.0 +s3_shot_5i_16,shot_5i_16.json,97.99,9.13,-2.08,3775.9,1.68,3774.3,110.7,110.0,109.0,-1.0,19.5,3.01,27.49,17.69,119926.2,0.192576,0.217163,0.229128,0.230270,110.0 +s3_shot_5i_17,shot_5i_17.json,56.46,9.97,24.15,5178.3,29.12,4523.9,2519.7,32.2,51.2,19.0,4.7,1.30,21.32,11.92,69096.2,0.458380,0.284917,0.371513,0.371514,32.2 +s3_shot_6i_35,shot_6i_35.json,80.55,15.35,-1.30,4667.1,-0.03,4667.1,-2.8,85.6,85.6,0.0,23.3,2.94,22.78,25.69,98572.3,0.289590,0.251025,0.246786,0.271918,85.6 +s3_shot_6i_36,shot_6i_36.json,78.86,10.40,16.08,4166.0,25.12,3771.9,1768.7,70.6,69.1,-1.5,12.6,2.29,24.22,16.90,96505.8,0.264030,0.256293,0.301522,0.302485,70.6 +s3_shot_6i_37,shot_6i_37.json,82.57,10.16,11.01,3041.1,25.35,2748.4,1301.8,67.8,109.1,41.3,10.9,2.03,26.86,14.36,101052.9,0.184068,0.236918,0.211057,0.211467,67.8 +s3_shot_6i_38,shot_6i_38.json,79.12,13.35,3.04,3186.9,11.59,3121.9,640.2,75.6,75.8,0.2,18.1,2.53,23.76,23.52,96827.7,0.201308,0.252420,0.250057,0.259093,75.6 +s3_shot_6i_39,shot_6i_39.json,60.98,6.14,10.35,3284.8,22.03,3044.9,1232.2,24.0,54.5,30.5,2.2,0.88,23.50,7.61,74625.7,0.269219,0.333765,0.300220,0.303546,24.0 +s3_shot_6i_40,shot_6i_40.json,62.11,6.80,27.01,2768.0,30.00,2397.2,1384.0,25.5,59.7,34.2,2.6,0.92,23.80,8.84,76009.9,0.222738,0.325687,0.312180,0.312363,25.5 +s3_shot_6i_41,shot_6i_41.json,82.53,9.88,-2.28,2620.2,13.56,2547.1,614.5,66.6,110.8,44.2,10.3,1.97,27.33,13.45,100996.8,0.158675,0.229767,0.192268,0.192274,66.6 +s3_shot_6i_42,shot_6i_42.json,77.19,13.14,-3.42,4057.2,4.14,4046.6,293.2,76.2,76.2,-0.0,18.5,2.65,22.62,24.21,94471.3,0.262673,0.261989,0.303947,0.303947,76.2 +s3_shot_6i_43,shot_6i_43.json,94.06,13.88,-4.68,4616.2,1.70,4614.2,137.0,122.9,128.4,5.6,42.8,4.09,23.12,37.60,115112.4,0.245275,0.229891,0.319007,0.319007,122.9 +s3_shot_6i_44,shot_6i_44.json,114.96,9.46,-6.67,2314.5,15.10,2234.6,602.8,140.5,140.2,-0.3,25.2,3.33,31.66,17.41,140686.5,0.100621,0.199291,0.165322,0.165596,140.5 +s3_shot_6i_45,shot_6i_45.json,109.32,6.42,-9.00,2509.9,-10.87,2464.9,-473.5,112.6,165.8,53.2,13.4,2.63,32.94,11.72,133784.2,0.114749,0.198894,0.187380,0.187385,112.6 +s3_shot_6i_46,shot_6i_46.json,116.33,13.65,0.34,3007.9,10.67,2955.8,557.1,166.3,170.8,4.5,48.6,4.43,27.68,28.77,142368.0,0.129223,0.213385,0.178828,0.180417,166.3 +s3_shot_6i_47,shot_6i_47.json,99.48,14.78,-2.86,4810.7,4.69,4794.6,393.7,137.3,146.0,8.7,56.4,4.62,23.48,43.48,121740.5,0.241695,0.226258,0.319265,0.319321,137.3 +s3_shot_6i_48,shot_6i_48.json,101.73,15.23,-3.03,4631.0,4.26,4618.2,344.4,142.4,152.3,9.9,62.7,4.81,23.80,45.91,124502.8,0.227503,0.225652,0.307983,0.319321,142.4 +s3_shot_6i_49,shot_6i_49.json,71.25,7.70,16.05,2624.7,30.00,2273.0,1312.3,38.3,78.6,40.3,4.3,1.23,26.40,9.47,87197.7,0.184102,0.260305,0.219802,0.219802,38.3 +s3_shot_6i_50,shot_6i_50.json,82.80,14.85,-1.42,3783.4,2.81,3778.8,185.4,92.3,94.9,2.6,29.4,3.23,22.56,32.31,101335.6,0.228355,0.249757,0.309186,0.318391,92.3 +s3_shot_7i_25,shot_7i_25.json,83.34,13.18,2.98,3409.5,17.79,3246.5,1041.7,86.0,86.4,0.4,21.0,2.79,24.10,24.39,101997.9,0.204455,0.241569,0.258137,0.267072,86.0 +s3_shot_7i_26,shot_7i_26.json,73.37,10.85,15.40,3560.9,30.00,3083.8,1780.4,58.1,57.2,-1.0,10.7,1.99,23.40,17.63,89787.0,0.242568,0.282787,0.319319,0.319321,58.1 +s3_shot_7i_27,shot_7i_27.json,93.74,17.06,-1.45,4611.6,2.63,4606.7,211.8,123.5,133.0,9.6,53.7,4.35,22.99,43.52,114719.5,0.245870,0.230213,0.318841,0.318841,123.5 +s3_shot_7i_28,shot_7i_28.json,92.09,16.41,-3.60,4216.7,-0.44,4216.6,-32.4,118.4,127.1,8.7,48.7,4.13,23.00,41.49,112696.8,0.228852,0.232077,0.309859,0.319321,118.4 +s3_shot_7i_29,shot_7i_29.json,107.59,13.82,-6.05,3633.3,4.72,3621.0,298.7,148.5,151.7,3.1,42.7,4.16,26.73,28.34,131669.7,0.168773,0.209903,0.195575,0.196851,148.5 +s3_shot_7i_30,shot_7i_30.json,90.17,17.56,-3.83,4508.5,-0.21,4508.5,-16.5,114.7,122.7,7.9,48.4,4.10,22.66,41.77,110355.9,0.249879,0.234684,0.316829,0.316829,114.7 +s3_shot_7i_31,shot_7i_31.json,76.36,17.52,-0.54,5122.2,1.84,5119.5,164.7,80.7,80.7,0.0,24.4,2.96,21.73,27.21,93445.7,0.335263,0.261959,0.228148,0.270680,80.7 +s3_shot_7i_32,shot_7i_32.json,93.10,16.96,-1.03,3762.5,4.20,3752.4,275.6,120.9,128.4,7.5,46.6,4.03,24.12,38.67,113935.9,0.201982,0.217096,0.256820,0.281727,120.9 +s3_shot_7i_33,shot_7i_33.json,92.36,16.96,-0.58,3851.7,2.81,3847.1,188.9,119.6,127.5,7.8,47.8,4.07,23.77,39.83,113026.5,0.208434,0.219885,0.273641,0.301195,119.6 +s3_shot_7i_34,shot_7i_34.json,104.19,14.67,-4.63,4081.2,1.90,4079.0,135.0,146.1,152.6,6.5,51.2,4.48,24.97,37.41,127515.3,0.195758,0.216738,0.236115,0.257062,146.1 +s3_shot_9i_1,shot_9i_1.json,88.98,15.10,-0.50,3563.2,11.26,3494.6,695.8,106.9,110.3,3.4,32.7,3.47,24.25,31.08,108898.1,0.200130,0.221857,0.251988,0.264353,106.9 +s3_shot_9i_2,shot_9i_2.json,71.29,23.93,5.51,4085.5,8.31,4042.7,590.2,80.2,85.4,5.2,37.0,3.36,21.39,39.13,87241.3,0.286429,0.239815,0.283297,0.307327,80.2 +s3_shot_9i_3,shot_9i_3.json,90.11,21.67,2.80,5243.0,11.20,5143.3,1018.1,115.4,122.1,6.8,52.3,4.22,22.52,42.19,110277.5,0.290796,0.234780,0.242056,0.268000,115.4 +s3_shot_9i_5,shot_9i_5.json,84.02,19.37,3.82,5352.1,11.48,5245.0,1065.2,103.0,104.8,1.8,37.4,3.68,22.59,33.50,102827.9,0.318347,0.231816,0.230740,0.276040,103.0 +s3_shot_9i_7,shot_9i_7.json,83.03,22.51,5.26,7008.5,9.70,6908.3,1181.2,103.4,105.5,2.0,47.9,4.12,21.13,39.90,101607.9,0.421882,0.266562,0.257201,0.314452,103.4 +s3_shot_9i_8,shot_9i_8.json,92.21,21.95,-6.31,5042.3,0.73,5041.8,64.2,120.6,131.1,10.5,60.8,4.49,22.75,46.49,112846.1,0.273294,0.231927,0.279723,0.279723,120.6 +s3_shot_9i_9,shot_9i_9.json,90.06,22.14,-3.09,5351.1,1.21,5349.9,113.3,116.3,123.4,7.0,53.8,4.29,22.44,42.98,110212.5,0.296965,0.234860,0.231941,0.268000,116.3 +s3_shot_driver_51,shot_driver_51.json,116.17,21.74,2.17,6409.0,3.23,6398.8,360.7,166.1,183.5,17.5,100.8,5.89,24.33,55.99,142164.9,0.275733,0.249134,0.263339,0.263339,166.1 +s3_shot_driver_52,shot_driver_52.json,102.11,31.33,3.09,8442.2,6.26,8391.8,921.1,128.2,142.4,14.2,112.7,5.94,23.38,60.81,124959.2,0.413216,0.263259,0.242592,0.290834,128.2 +s3_shot_driver_53,shot_driver_53.json,97.23,30.63,2.23,8925.8,5.99,8877.1,931.1,117.7,127.4,9.7,97.4,5.50,22.31,57.75,118995.0,0.458786,0.283797,0.264452,0.300780,117.7 +s3_shot_driver_54,shot_driver_54.json,121.50,12.88,-5.26,3410.9,-9.97,3359.4,-590.5,178.7,183.8,5.1,53.0,4.72,27.55,30.03,148697.8,0.140300,0.219531,0.185406,0.187519,178.7 +s3_shot_driver_55,shot_driver_55.json,117.48,7.48,-8.33,2150.0,-27.19,1912.4,-982.4,127.6,183.5,56.0,17.6,2.85,34.16,13.31,143773.2,0.091462,0.199494,0.168768,0.168971,127.6 +s3_shot_driver_56,shot_driver_56.json,118.70,17.12,-1.80,4553.8,2.81,4548.4,222.9,175.8,194.6,18.8,90.4,5.68,25.47,51.68,145271.0,0.191729,0.231205,0.224341,0.289075,175.8 +s3_shot_driver_57,shot_driver_57.json,120.93,14.10,-5.16,1544.1,-7.96,1529.2,-213.7,174.3,179.3,5.0,48.2,4.28,30.72,26.27,147990.8,0.063815,0.194500,0.138103,0.139058,174.3 +s3_shot_driver_58,shot_driver_58.json,119.27,23.59,2.48,7093.4,3.26,7081.9,403.5,172.5,188.4,15.9,112.7,6.24,24.68,58.02,145965.8,0.297231,0.251663,0.222312,0.260007,172.5 +s3_shot_driver_59,shot_driver_59.json,80.96,44.91,8.87,6735.0,12.36,6578.8,1442.0,82.1,97.6,15.5,103.6,5.28,22.70,66.22,99079.0,0.415764,0.273004,0.251426,0.310718,82.1 +s3_shot_driver_60,shot_driver_60.json,107.39,11.67,-8.62,3268.6,-14.80,3160.1,-835.0,137.9,138.4,0.5,31.5,3.64,28.36,22.12,131422.8,0.152117,0.205821,0.189954,0.190379,137.9 +s3_shot_pw_64,shot_pw_64.json,69.63,28.57,0.16,5327.2,5.10,5306.2,473.4,83.5,88.7,5.2,47.0,3.89,20.82,44.79,85210.2,0.382385,0.234175,0.268698,0.338377,83.5 +s3_shot_pw_65,shot_pw_65.json,81.25,28.38,2.89,6959.4,9.38,6866.3,1134.7,99.5,105.6,6.0,62.7,4.52,20.96,48.94,99433.7,0.428086,0.269323,0.263103,0.317428,99.5 +s3_shot_pw_66,shot_pw_66.json,75.71,27.32,-1.17,6605.0,3.99,6589.0,460.1,88.1,91.7,3.6,50.5,4.04,20.09,45.12,92652.6,0.436020,0.273152,0.267359,0.317564,88.1 +s3_shot_pw_67,shot_pw_67.json,81.66,28.12,6.34,6509.6,12.74,6349.4,1435.1,101.3,108.3,7.1,61.9,4.51,21.11,48.97,99936.4,0.398402,0.258212,0.247532,0.317566,101.3 +s3_shot_pw_68,shot_pw_68.json,88.55,23.37,-0.05,6637.4,6.04,6600.5,698.8,113.3,118.0,4.6,56.4,4.44,21.43,43.68,108370.9,0.374608,0.255547,0.232885,0.296867,113.3 +s3_shot_pw_69,shot_pw_69.json,74.06,23.61,0.18,5880.4,8.45,5816.5,864.4,84.0,85.7,1.7,37.7,3.56,20.18,38.00,90634.2,0.396828,0.269425,0.244354,0.305900,84.0 +s4_shot_3w_31,shot_3w_31.json,106.87,15.70,-2.35,3662.0,8.88,3618.1,565.0,150.2,155.2,5.0,50.1,4.38,26.18,32.87,130789.1,0.171252,0.210355,0.196436,0.200255,150.2 +s4_shot_3w_32,shot_3w_32.json,105.45,18.52,-1.38,5714.3,2.28,5709.8,227.6,144.3,153.2,8.9,67.6,4.91,23.20,46.53,129048.7,0.270835,0.243692,0.273641,0.273641,144.3 +s4_shot_3w_33,shot_3w_33.json,99.72,20.51,0.54,6997.1,1.55,6994.5,189.5,138.4,143.0,4.7,63.7,4.87,22.76,42.75,122038.2,0.350680,0.237215,0.227464,0.278167,138.4 +s4_shot_3w_34,shot_3w_34.json,114.64,15.34,2.39,3501.5,12.77,3414.9,773.8,165.9,173.4,7.5,56.4,4.68,26.62,33.88,140301.3,0.152646,0.217562,0.188244,0.190495,165.9 +s4_shot_3w_35,shot_3w_35.json,117.92,14.40,3.60,3735.1,13.26,3635.5,856.4,171.7,177.5,5.8,56.4,4.74,26.78,33.08,144310.5,0.158303,0.221196,0.190219,0.192587,171.7 +s4_shot_5i_25,shot_5i_25.json,89.08,16.71,1.13,5261.8,6.18,5231.2,566.6,107.9,108.9,1.0,34.6,3.60,23.08,30.58,109019.3,0.295205,0.236399,0.234521,0.273054,107.9 +s4_shot_5i_26,shot_5i_26.json,106.31,15.46,-3.63,4114.0,3.40,4106.7,244.1,151.8,160.9,9.1,57.4,4.68,25.10,39.73,130101.2,0.193407,0.216315,0.230481,0.255329,151.8 +s4_shot_5i_27,shot_5i_27.json,84.90,6.99,5.73,2262.9,30.00,1959.8,1131.5,54.3,104.1,49.8,5.7,1.48,30.64,8.91,103903.1,0.133209,0.211751,0.197827,0.197827,54.3 +s4_shot_5i_28,shot_5i_28.json,86.01,15.91,-1.64,4178.9,1.01,4178.3,73.4,102.9,107.7,4.8,37.2,3.63,22.47,36.73,105257.7,0.242831,0.242165,0.319320,0.319320,102.9 +s4_shot_5i_29,shot_5i_29.json,76.23,6.14,0.67,3695.3,-0.00,3695.3,-0.0,52.5,87.1,34.6,5.3,1.64,25.70,9.42,93294.5,0.242265,0.270941,0.319309,0.319310,52.5 +s4_shot_5i_30,shot_5i_30.json,96.81,18.19,0.71,6358.2,17.49,6064.2,1911.0,127.1,129.3,2.2,47.7,4.23,23.07,35.36,118483.3,0.328220,0.236739,0.225130,0.268019,127.1 +s4_shot_6i_19,shot_6i_19.json,85.61,14.70,2.87,4622.8,10.94,4538.9,877.1,98.4,99.3,1.0,28.8,3.32,22.89,29.41,104776.4,0.269858,0.243007,0.287102,0.287102,98.4 +s4_shot_6i_20,shot_6i_20.json,78.84,9.70,-0.74,4288.8,-0.00,4288.8,-0.0,69.3,101.0,31.6,11.5,2.23,24.22,15.61,96487.2,0.271870,0.261574,0.282824,0.293463,69.3 +s4_shot_6i_21,shot_6i_21.json,91.87,17.75,0.67,5966.8,11.46,5847.9,1185.3,117.3,118.6,1.3,40.8,3.93,23.10,32.56,112434.3,0.324590,0.232345,0.224728,0.268222,117.3 +s4_shot_6i_22,shot_6i_22.json,76.88,7.65,14.36,3780.1,30.00,3273.7,1890.1,55.3,89.6,34.3,6.9,1.74,25.52,11.28,94085.4,0.245740,0.268499,0.318880,0.319321,55.3 +s4_shot_6i_23,shot_6i_23.json,86.70,15.37,2.75,4195.9,11.91,4105.6,865.6,103.5,107.2,3.7,35.9,3.60,22.64,35.43,106106.9,0.241865,0.240738,0.319281,0.319321,103.5 +s4_shot_6i_24,shot_6i_24.json,90.75,14.84,2.98,5270.3,14.94,5092.1,1358.6,107.9,108.2,0.3,30.6,3.45,23.78,27.04,111064.3,0.290235,0.233842,0.243109,0.272754,107.9 +s4_shot_9i_13,shot_9i_13.json,73.08,12.51,11.29,4978.8,21.31,4638.4,1809.5,60.0,57.8,-2.3,11.7,2.07,23.32,16.82,89438.4,0.340482,0.273923,0.228699,0.270680,60.0 +s4_shot_9i_14,shot_9i_14.json,87.13,22.10,0.34,5730.4,4.69,5711.2,468.2,109.1,113.5,4.4,48.8,4.12,21.69,40.83,106627.5,0.328706,0.249496,0.225184,0.269441,109.1 +s4_shot_9i_15,shot_9i_15.json,75.35,23.70,-1.27,6790.0,2.92,6781.2,346.1,86.2,101.9,15.7,40.7,3.71,19.97,39.38,92212.3,0.450373,0.277300,0.272009,0.314452,86.2 +s4_shot_9i_17,shot_9i_17.json,79.41,14.92,16.37,4369.2,30.00,3783.8,2184.6,79.8,79.9,0.1,21.1,2.74,23.04,24.61,97178.2,0.274993,0.254523,0.278723,0.285411,79.8 +s4_shot_9i_18,shot_9i_18.json,74.62,23.60,2.52,6418.0,6.12,6381.4,684.4,85.0,101.6,16.5,39.3,3.65,19.97,38.77,91326.6,0.429824,0.274144,0.261453,0.314452,85.0 +s4_shot_lw_38,shot_lw_38.json,47.61,37.82,6.06,5608.6,5.60,5581.8,546.9,41.3,52.4,11.1,29.4,2.78,17.09,45.18,58260.0,0.588807,0.364352,0.359933,0.359933,41.3 +s4_shot_pw_1,shot_pw_1.json,69.84,20.07,-0.58,3577.0,7.98,3542.3,496.5,73.8,77.0,3.2,29.3,2.97,21.76,34.40,85474.1,0.255959,0.239780,0.354474,0.354474,73.8 +s4_shot_pw_10,shot_pw_10.json,76.33,26.80,0.65,5988.6,4.90,5966.7,511.9,90.4,95.1,4.7,49.4,4.03,20.35,44.92,93415.5,0.392099,0.262301,0.244565,0.315508,90.4 +s4_shot_pw_11,shot_pw_11.json,76.26,27.35,-0.63,6296.3,5.22,6270.2,573.0,90.0,94.0,4.0,51.2,4.09,20.25,45.82,93324.9,0.412650,0.266668,0.254797,0.317566,90.0 +s4_shot_pw_2,shot_pw_2.json,53.25,24.98,0.23,4085.0,3.00,4079.4,213.9,48.9,68.2,19.3,20.6,2.50,18.35,33.53,65162.3,0.383432,0.289828,0.329518,0.342645,48.9 +s4_shot_pw_3,shot_pw_3.json,62.81,31.15,6.57,6128.8,6.31,6091.7,673.2,65.8,79.9,14.1,40.7,3.48,19.10,44.14,76871.8,0.487637,0.301908,0.302122,0.337086,65.8 +s4_shot_pw_47,shot_pw_47.json,46.66,24.60,2.26,3699.1,-0.00,3699.1,-0.0,36.8,54.7,17.9,14.6,2.06,16.98,30.73,57108.3,0.396174,0.339646,0.335698,0.346855,36.8 +s4_shot_pw_48,shot_pw_48.json,46.55,25.52,3.83,4318.4,0.58,4318.2,43.5,37.2,52.9,15.7,15.6,2.12,16.78,31.25,56972.9,0.463607,0.358866,0.372870,0.373606,37.2 +s4_shot_pw_49,shot_pw_49.json,60.30,22.56,3.45,4043.8,4.96,4028.7,350.0,57.1,78.6,21.5,22.5,2.62,19.39,33.16,73793.9,0.335170,0.291302,0.279107,0.303080,57.1 +s4_shot_pw_6,shot_pw_6.json,68.69,26.10,1.07,4148.8,8.23,4106.0,593.9,77.1,83.0,5.9,38.5,3.40,21.03,41.09,84067.5,0.301843,0.241605,0.258018,0.305520,77.1 +s4_shot_pw_7,shot_pw_7.json,76.85,25.20,3.72,6565.2,8.16,6498.7,931.8,90.6,93.3,2.7,46.6,3.96,20.22,42.43,94049.7,0.426955,0.269427,0.262492,0.317566,90.6 +s4_shot_pw_9,shot_pw_9.json,76.60,28.64,4.92,7133.1,5.71,7097.7,709.7,88.9,92.6,3.7,54.9,4.18,20.21,46.98,93747.4,0.465384,0.279386,0.279820,0.312403,88.9 diff --git a/assets/data/calibration/shot_diff_analysis.csv b/assets/data/calibration/shot_diff_analysis.csv index cd1cad6..2fdf3a8 100644 --- a/assets/data/calibration/shot_diff_analysis.csv +++ b/assets/data/calibration/shot_diff_analysis.csv @@ -1,103 +1,137 @@ -shot_name,speed_mph,vla_deg,hla_deg,total_spin_rpm,spin_axis_deg,physics_carry_yd,flightscope_carry_yd,diff_carry_yd,physics_carry_raw_yd,diff_carry_raw_yd,physics_total_yd,flightscope_total_yd,diff_total_yd,rollout_physics_yd,rollout_flightscope_yd,diff_rollout_yd,physics_apex_ft,flightscope_apex_ft,diff_apex_ft,carry_exception_regime,carry_exception_offset_yd,carry_exception_source,carry_exception_applied,status -5iron,102.1,17.4,1.5,5391,12.3,139.7,138.1,1.6,143.7,5.6,154.3,142.2,12.1,14.6,4.1,10.5,64.6,59.6,5.0,I-S2-V1-P2,4.0,regime,true,severe -approach_mid_iron_test_shot,93.9,22.9,-2.6,5375,2.0,125.8,125.8,0.0,125.8,0.0,136.4,128.5,7.9,10.6,2.7,7.9,64.6,69.3,-4.7,I-S2-V2-P2,,,false,moderate -bump_and_run,58.3,15.6,-0.8,1850,2.3,43.7,43.8,-0.1,34.7,-9.1,34.5,62.0,-27.5,-9.2,18.2,-27.4,8.0,10.1,-2.1,C-S0-V1-P0,-9.0,shot,true,severe -bump_and_run_slow,30.3,15.6,-0.8,1850,2.3,10.0,,,10.0,,27.1,,,17.1,,,2.2,,,C-S0-V1-P0,,,false, -bump_test_shot,78.3,5.6,-0.8,1850,2.3,39.0,39.0,0.0,36.9,-2.1,86.8,74.0,12.8,47.8,35.0,12.8,3.0,3.1,-0.1,I-S1-V0-P0,-2.1,shot,true,severe -checked_test_shot,75.0,38.5,1.4,10701,5.7,77.0,77.6,-0.6,77.0,-0.6,78.6,77.5,1.1,1.6,-0.1,1.7,70.8,79.5,-8.7,W-S1-V4-P4,,,false,pass -chip_test_shot,24.7,17.9,20.4,3204,-0.0,7.6,,,7.6,,16.6,,,9.0,,,1.9,,,C-S0-V1-P1,,,false, -drive_test_shot,150.0,12.5,1.5,2335,-9.9,245.0,244.0,1.0,245.0,1.0,256.8,256.0,0.8,11.8,12.0,-0.2,80.0,80.6,-0.6,D-S4-V1-P0,,,false,pass -driver1,124.0,9.4,-9.5,2322,-24.8,158.3,158.0,0.3,158.3,0.3,158.3,184.0,-25.7,0.0,26.0,-26.0,29.5,30.2,-0.7,D-S4-V0-P0,,,false,severe -driver2,124.6,13.2,-6.8,3994,-6.1,187.3,184.8,2.5,193.7,8.9,200.9,192.3,8.6,13.6,7.5,6.1,63.1,65.8,-2.7,D-S4-V1-P1,6.4,regime,true,moderate -driver3,119.1,16.0,-8.9,4935,-9.4,173.3,174.1,-0.8,180.3,6.2,201.8,178.5,23.3,28.5,4.4,24.1,99.6,78.5,21.1,D-S3-V1-P2,7.0,regime,true,severe -driver4,119.0,15.5,-10.2,4454,-7.8,176.3,175.6,0.7,183.3,7.7,197.2,180.9,16.3,20.9,5.3,15.6,78.2,73.8,4.4,D-S3-V1-P2,7.0,regime,true,severe -flop_test_shot,68.0,45.0,0.5,12000,0.8,62.7,61.8,0.9,62.7,0.9,63.1,60.3,2.8,0.4,-1.5,1.9,69.2,76.8,-7.6,W-S1-V4-P4,,,false,pass -p_wedge_shot_1,82.3,26.5,-3.1,4946,6.7,104.5,104.5,0.0,100.2,-4.3,109.5,107.3,2.2,5.0,2.8,2.2,55.1,60.5,-5.4,I-S1-V3-P2,-4.3,shot,true,pass -s2_shot_10,89.7,25.5,-3.1,6446,6.2,115.1,115.1,0.0,119.1,4.0,127.1,116.4,10.7,12.0,1.3,10.7,66.2,72.0,-5.8,I-S2-V3-P3,4.0,regime,true,severe -s2_shot_11,78.5,29.6,4.3,7350,10.7,93.0,93.0,0.0,91.3,-1.7,95.6,93.6,2.0,2.6,0.6,2.0,59.6,64.0,-4.4,I-S1-V3-P3,-1.7,shot,true,pass -s2_shot_12,90.8,24.5,-3.9,7261,4.9,117.1,115.4,1.7,120.6,5.2,125.9,116.4,9.5,8.8,1.0,7.8,66.4,71.5,-5.1,I-S2-V2-P3,3.5,regime,true,moderate -s2_shot_13,95.2,19.6,-1.1,5610,12.2,123.6,125.3,-1.7,127.1,1.8,131.7,128.7,3.0,8.1,3.4,4.7,52.5,58.4,-5.9,I-S2-V2-P3,3.5,regime,true,pass -s2_shot_14,87.1,22.4,-2.0,5660,11.4,111.1,110.9,0.2,111.1,0.2,115.3,113.7,1.6,4.2,2.8,1.4,50.0,55.9,-5.9,I-S2-V2-P3,,,false,pass -s2_shot_15,88.1,14.2,-0.3,4985,19.4,100.7,101.3,-0.6,100.7,-0.6,100.8,113.1,-12.3,0.1,11.8,-11.7,27.0,28.9,-1.9,I-S2-V1-P2,,,false,severe -s2_shot_16,94.1,19.1,-5.9,5291,5.0,124.7,124.3,0.4,124.7,0.4,130.3,128.1,2.2,5.6,3.8,1.8,52.1,55.3,-3.2,I-S2-V2-P2,,,false,pass -s2_shot_17,122.9,14.4,-1.3,4119,6.7,184.0,184.0,0.0,191.2,7.2,199.5,190.3,9.2,15.5,6.3,9.2,68.2,71.8,-3.6,D-S4-V1-P2,7.2,regime,true,moderate -s2_shot_18,105.7,20.5,-1.7,5667,8.2,147.9,146.8,1.1,151.9,5.1,166.0,149.4,16.6,18.1,2.6,15.5,83.5,80.4,3.1,I-S3-V2-P3,4.0,regime,true,severe -s2_shot_19,128.6,12.5,-8.4,2514,5.1,191.4,194.5,-3.1,197.8,3.3,204.3,208.7,-4.4,12.9,14.2,-1.3,56.4,57.3,-0.9,D-S4-V1-P1,6.4,regime,true,moderate -s2_shot_20,120.9,15.0,-3.0,4245,9.6,179.6,179.4,0.2,186.6,7.2,196.4,185.3,11.1,16.8,5.9,10.9,70.5,72.3,-1.8,D-S4-V1-P2,7.0,regime,true,severe -s2_shot_21,127.3,7.2,-11.5,2321,-19.5,160.7,154.9,5.8,160.7,5.8,215.3,186.5,28.8,54.6,31.6,23.0,24.9,23.1,1.8,D-S4-V0-P0,,,false,severe -s2_shot_22,123.3,14.0,-6.1,3104,10.0,184.7,185.4,-0.7,191.1,5.7,199.0,195.5,3.5,14.3,10.1,4.2,61.6,63.0,-1.4,D-S4-V1-P1,6.4,regime,true,pass -s2_shot_23,125.5,8.6,-14.3,3062,-23.9,159.1,161.9,-2.8,166.1,4.2,166.1,185.0,-18.9,7.0,23.1,-16.1,31.1,31.0,0.1,D-S4-V0-P1,7.0,regime,true,severe -s2_shot_24,121.5,14.5,-11.2,3173,-6.8,182.3,183.0,-0.7,188.7,5.7,195.5,192.8,2.7,13.2,9.8,3.4,63.0,64.6,-1.6,D-S4-V1-P1,6.4,regime,true,pass -s2_shot_26,117.0,18.4,-2.0,5035,9.7,173.3,170.7,2.6,173.3,2.6,197.3,174.2,23.1,24.0,3.5,20.5,112.3,88.1,24.2,I-S3-V2-P2,,,false,severe -s2_shot_27,113.0,17.6,-2.3,4292,12.2,161.1,164.5,-3.4,168.1,3.6,183.4,169.6,13.8,22.3,5.1,17.2,78.6,73.6,5.0,D-S3-V1-P2,7.0,regime,true,severe -s2_shot_9,94.4,20.1,2.4,4020,16.3,123.7,126.5,-2.8,123.7,-2.8,136.0,132.5,3.5,12.3,6.0,6.3,62.1,54.8,7.3,I-S2-V2-P2,,,false,pass -s3_shot_3w_18,47.9,45.8,34.0,7491,30.0,36.7,,,36.7,,41.7,,,5.0,,,34.7,,,C-S0-V4-P3,,,false, -s3_shot_3w_19,121.3,5.6,-4.8,1662,-11.9,120.5,120.6,-0.1,120.5,-0.1,182.5,165.8,16.7,62.0,45.2,16.8,12.3,12.2,0.1,D-S4-V0-P0,,,false,severe -s3_shot_3w_21,119.4,5.3,-3.4,1760,-10.5,115.7,114.6,1.1,115.7,1.1,177.1,160.5,16.6,61.4,45.9,15.5,11.2,10.9,0.3,D-S3-V0-P0,,,false,severe -s3_shot_3w_22,108.9,5.6,-7.2,2501,-1.8,103.2,103.2,0.0,106.3,3.1,161.5,141.3,20.2,58.3,38.1,20.2,11.0,10.5,0.5,I-S3-V0-P1,3.1,shot,true,severe -s3_shot_3w_23,115.8,8.9,-0.8,2804,2.2,148.5,147.7,0.8,148.5,0.8,148.2,170.9,-22.7,-0.3,23.2,-23.5,26.8,28.0,-1.2,D-S3-V0-P1,,,false,severe -s3_shot_3w_24,123.4,6.3,-5.4,2752,-13.3,149.8,145.9,3.9,153.8,7.9,206.3,176.7,29.6,56.5,30.8,25.7,21.7,19.8,1.9,D-S4-V0-P1,4.0,regime,true,severe -s3_shot_5i_10,88.0,14.2,1.2,4065,8.4,103.1,103.1,0.0,106.1,3.0,109.6,116.7,-7.1,6.5,13.6,-7.1,34.3,28.4,5.9,I-S2-V1-P2,3.0,shot,true,moderate -s3_shot_5i_11,90.6,14.4,-0.2,3360,7.8,108.8,108.8,0.0,105.6,-3.2,106.9,124.1,-17.2,-1.9,15.3,-17.2,28.5,29.8,-1.3,I-S2-V1-P1,-3.2,shot,true,severe -s3_shot_5i_12,74.2,10.2,-1.7,3321,15.8,59.6,58.4,1.2,59.6,1.2,58.4,81.9,-23.5,-1.2,23.5,-24.7,10.5,9.4,1.1,I-S1-V1-P1,,,false,severe -s3_shot_5i_13,75.0,8.0,2.5,3921,3.4,53.9,53.9,0.0,56.5,2.6,89.0,78.9,10.1,35.1,25.0,10.1,7.4,6.8,0.6,I-S1-V0-P1,2.6,shot,true,severe -s3_shot_5i_15,86.9,9.3,-4.0,2509,-4.9,78.6,78.6,0.0,74.1,-4.5,121.3,106.6,14.7,42.7,28.0,14.7,11.0,12.1,-1.1,I-S2-V0-P1,-4.5,shot,true,severe -s3_shot_5i_16,98.0,9.1,-2.1,3776,1.7,110.2,109.1,1.1,110.2,1.1,109.2,130.0,-20.8,-1.0,20.9,-21.9,19.5,19.7,-0.2,I-S2-V0-P1,,,false,severe -s3_shot_5i_17,56.5,10.0,24.1,5178,29.1,30.6,30.6,0.0,28.6,-2.0,45.0,46.9,-1.9,14.4,16.3,-1.9,4.2,4.5,-0.3,C-S0-V1-P2,-2.0,shot,true,pass -s3_shot_6i_35,80.5,15.3,-1.3,4667,-0.0,90.0,90.0,0.0,84.9,-5.1,84.9,101.5,-16.6,-5.1,11.5,-16.6,23.1,26.4,-3.3,I-S1-V1-P2,-5.1,shot,true,severe -s3_shot_6i_36,78.9,10.4,16.1,4166,25.1,67.8,67.8,0.0,69.9,2.1,68.3,89.1,-20.8,0.5,21.3,-20.8,12.4,11.8,0.6,I-S1-V1-P2,2.1,shot,true,severe -s3_shot_6i_37,82.6,10.2,11.0,3041,25.4,71.5,71.5,0.0,67.9,-3.6,109.4,97.2,12.2,37.9,25.7,12.2,11.0,11.8,-0.8,I-S1-V1-P1,-3.6,shot,true,severe -s3_shot_6i_38,79.1,13.3,3.0,3187,11.6,79.2,79.2,0.0,76.0,-3.2,76.2,97.5,-21.3,-3.0,18.3,-21.3,18.1,18.0,0.1,I-S1-V1-P1,-3.2,shot,true,severe -s3_shot_6i_39,61.0,6.1,10.3,3285,22.0,23.5,24.0,-0.5,23.5,-0.5,53.7,47.3,6.4,30.2,23.3,6.9,2.1,2.1,0.0,I-S1-V0-P1,,,false,moderate -s3_shot_6i_40,62.1,6.8,27.0,2768,30.0,25.0,26.2,-1.2,25.0,-1.2,58.9,51.1,7.8,33.9,24.9,9.0,2.6,2.5,0.1,I-S1-V0-P1,,,false,moderate -s3_shot_6i_41,82.5,9.9,-2.3,2620,13.6,71.3,71.3,0.0,66.7,-4.6,111.1,97.9,13.2,39.8,26.6,13.2,10.3,11.3,-1.0,I-S1-V0-P1,-4.6,shot,true,severe -s3_shot_6i_42,77.2,13.1,-3.4,4057,4.1,75.5,76.6,-1.1,75.5,-1.1,75.5,92.9,-17.4,0.0,16.3,-16.3,18.3,17.5,0.8,I-S1-V1-P2,,,false,severe -s3_shot_6i_43,94.1,13.9,-4.7,4616,1.7,119.7,117.3,2.4,123.7,6.4,129.5,128.6,0.9,9.8,11.3,-1.5,43.1,35.0,8.1,I-S2-V1-P2,4.0,regime,true,pass -s3_shot_6i_44,115.0,9.5,-6.7,2314,15.1,141.1,142.3,-1.2,141.1,-1.2,140.8,168.2,-27.4,-0.3,25.9,-26.2,25.3,26.6,-1.3,D-S3-V0-P0,,,false,severe -s3_shot_6i_45,109.3,6.4,-9.0,2510,-10.9,109.6,109.6,0.0,113.1,3.5,166.5,145.4,21.1,56.9,35.8,21.1,13.5,12.9,0.6,I-S3-V0-P1,3.5,shot,true,severe -s3_shot_6i_46,116.3,13.7,0.3,3008,10.7,171.1,167.3,3.8,171.1,3.8,175.8,179.3,-3.5,4.7,12.0,-7.3,50.1,51.6,-1.5,D-S3-V1-P1,,,false,moderate -s3_shot_6i_47,99.5,14.8,-2.9,4811,4.7,134.2,131.2,3.0,138.2,7.0,148.5,137.7,10.8,14.3,6.5,7.8,56.8,45.0,11.8,I-S2-V1-P2,4.0,regime,true,severe -s3_shot_6i_48,101.7,15.2,-3.0,4631,4.3,139.2,137.1,2.1,143.2,6.1,154.6,143.5,11.1,15.4,6.4,9.0,63.1,48.9,14.2,I-S2-V1-P2,4.0,regime,true,severe -s3_shot_6i_49,71.2,7.7,16.1,2625,30.0,39.9,39.9,0.0,37.4,-2.5,77.3,70.3,7.0,37.4,30.4,7.0,4.2,4.5,-0.3,I-S1-V0-P1,-2.5,shot,true,moderate -s3_shot_6i_50,82.8,14.8,-1.4,3783,2.8,92.8,93.2,-0.4,92.8,-0.4,95.3,107.4,-12.1,2.5,14.2,-11.7,29.5,25.6,3.9,I-S1-V1-P1,,,false,severe -s3_shot_7i_25,83.3,13.2,3.0,3410,17.8,86.4,86.9,-0.5,86.4,-0.5,86.8,104.8,-18.0,0.4,17.9,-17.5,21.0,20.1,0.9,I-S1-V1-P1,,,false,severe -s3_shot_7i_26,73.4,10.8,15.4,3561,30.0,56.6,56.6,0.0,58.4,1.8,57.5,79.3,-21.8,0.9,22.7,-21.8,10.7,9.6,1.1,I-S1-V1-P1,1.8,shot,true,severe -s3_shot_7i_27,93.7,17.1,-1.4,4612,2.6,120.1,122.3,-2.2,124.1,1.8,132.6,128.3,4.3,12.5,6.0,6.5,54.0,46.0,8.0,I-S2-V1-P2,4.0,regime,true,pass -s3_shot_7i_28,92.1,16.4,-3.6,4217,-0.4,115.1,117.9,-2.8,119.1,1.2,126.8,125.6,1.2,11.7,7.7,4.0,48.9,40.6,8.3,I-S2-V1-P2,4.0,regime,true,pass -s3_shot_7i_29,107.6,13.8,-6.0,3633,4.7,149.4,148.4,1.0,149.4,1.0,152.5,158.3,-5.8,3.1,9.9,-6.8,42.8,46.3,-3.5,I-S3-V1-P1,,,false,moderate -s3_shot_7i_30,90.2,17.6,-3.8,4508,-0.2,111.2,115.4,-4.2,115.2,-0.2,123.2,121.7,1.5,12.0,6.3,5.7,48.6,43.1,5.5,I-S2-V1-P2,4.0,regime,true,moderate -s3_shot_7i_31,76.4,17.5,-0.5,5122,1.8,85.0,85.0,0.0,80.2,-4.8,80.2,94.5,-14.3,-4.8,9.5,-14.3,24.3,28.4,-4.1,I-S1-V1-P2,-4.8,shot,true,severe -s3_shot_7i_32,93.1,17.0,-1.0,3762,4.2,119.4,121.2,-1.8,119.4,-1.8,127.6,129.8,-2.2,8.2,8.6,-0.4,45.6,42.5,3.1,I-S2-V1-P1,,,false,pass -s3_shot_7i_33,92.4,17.0,-0.6,3852,2.8,118.1,119.7,-1.6,118.1,-1.6,126.7,128.0,-1.3,8.6,8.3,0.3,46.7,42.0,4.7,I-S2-V1-P1,,,false,pass -s3_shot_7i_34,104.2,14.7,-4.6,4081,1.9,142.9,142.5,0.4,146.9,4.4,153.2,150.6,2.6,10.3,8.1,2.2,51.3,48.2,3.1,I-S2-V1-P2,4.0,regime,true,pass -s3_shot_9i_1,89.0,15.1,-0.5,3563,11.3,106.7,106.7,0.0,105.3,-1.4,108.2,120.8,-12.6,1.5,14.1,-12.6,32.1,30.8,1.3,I-S2-V1-P1,-1.4,shot,true,severe -s3_shot_9i_2,71.3,23.9,5.5,4086,8.3,82.1,82.1,0.0,74.1,-8.0,78.3,87.4,-9.1,-3.8,5.3,-9.1,33.8,36.8,-3.0,I-S1-V2-P2,-8.0,shot,true,moderate -s3_shot_9i_3,90.1,21.7,2.8,5243,11.2,115.9,117.3,-1.4,115.9,-1.4,121.8,120.7,1.1,5.9,3.4,2.5,52.4,57.7,-5.3,I-S2-V2-P2,,,false,pass -s3_shot_9i_5,84.0,19.4,3.8,5352,11.5,102.7,102.7,-0.0,100.1,-2.6,101.7,107.2,-5.5,-1.0,4.5,-5.5,36.3,41.8,-5.5,I-S1-V2-P2,-2.6,shot,true,moderate -s3_shot_9i_7,83.0,22.5,5.3,7008,9.7,102.2,101.1,1.1,102.2,1.1,104.2,102.6,1.6,2.0,1.5,0.5,47.3,51.5,-4.2,I-S1-V2-P3,,,false,pass -s3_shot_9i_8,92.2,21.9,-6.3,5042,0.7,121.3,122.9,-1.6,121.3,-1.6,130.5,126.4,4.1,9.2,3.5,5.7,61.1,62.6,-1.5,I-S2-V2-P2,,,false,pass -s3_shot_9i_9,90.1,22.1,-3.1,5351,1.2,116.9,118.1,-1.2,116.9,-1.2,123.0,121.1,1.9,6.1,3.0,3.1,54.0,60.1,-6.1,I-S2-V2-P2,,,false,pass -s3_shot_driver_51,116.2,21.7,2.2,6409,3.2,167.3,162.9,4.4,174.3,11.4,193.9,164.3,29.6,26.6,1.4,25.2,109.3,108.7,0.6,I-S3-V2-P3,7.0,regime,true,severe -s3_shot_driver_52,102.1,31.3,3.1,8442,6.3,129.9,124.5,5.4,133.9,9.4,149.4,124.1,25.3,19.5,-0.4,19.9,117.9,119.3,-1.4,W-S2-V3-P4,4.0,regime,true,severe -s3_shot_driver_53,97.2,30.6,2.2,8926,6.0,120.1,117.6,2.5,124.1,6.5,135.0,117.1,17.9,14.9,-0.5,15.4,102.0,105.8,-3.8,W-S2-V3-P4,4.0,regime,true,severe -s3_shot_driver_54,121.5,12.9,-5.3,3411,-10.0,177.2,178.2,-1.0,183.6,5.4,188.7,188.7,0.0,11.5,10.5,1.0,54.3,56.5,-2.2,D-S4-V1-P1,6.4,regime,true,pass -s3_shot_driver_55,117.5,7.5,-8.3,2150,-27.2,128.1,125.6,2.5,128.1,2.5,184.4,161.8,22.6,56.3,36.2,20.1,17.6,17.2,0.4,D-S3-V0-P0,,,false,severe -s3_shot_driver_56,118.7,17.1,-1.8,4554,2.8,174.4,176.6,-2.2,181.4,4.8,201.6,180.9,20.7,27.2,4.3,22.9,92.9,83.2,9.7,D-S3-V1-P2,7.0,regime,true,severe -s3_shot_driver_57,120.9,14.1,-5.2,1544,-8.0,172.5,177.6,-5.1,172.5,-5.1,177.3,197.0,-19.7,4.8,19.4,-14.6,47.4,50.9,-3.5,D-S4-V1-P0,,,false,severe -s3_shot_driver_58,119.3,23.6,2.5,7093,3.3,174.2,163.2,11.0,181.2,18.0,200.9,163.9,37.0,26.7,0.7,26.0,120.9,125.7,-4.8,I-S3-V2-P3,7.0,regime,true,severe -s3_shot_driver_59,81.0,44.9,8.9,6735,12.4,82.8,83.7,-0.9,82.8,-0.9,100.9,83.2,17.7,18.1,-0.5,18.6,104.0,107.8,-3.8,W-S1-V4-P3,,,false,severe -s3_shot_driver_60,107.4,11.7,-8.6,3269,-14.8,138.5,138.5,0.0,138.5,0.0,138.9,153.8,-14.9,0.4,15.3,-14.9,31.6,34.0,-2.4,I-S3-V1-P1,,,false,severe -s3_shot_pw_64,69.6,28.6,0.2,5327,5.1,80.1,80.1,0.0,75.7,-4.4,92.0,82.4,9.6,11.9,2.3,9.6,42.7,46.4,-3.7,I-S1-V3-P2,-4.4,shot,true,moderate -s3_shot_pw_65,81.2,28.4,2.9,6959,9.4,98.4,98.5,-0.1,98.4,-0.1,104.1,99.4,4.7,5.7,0.9,4.8,61.8,65.6,-3.8,I-S1-V3-P3,,,false,pass -s3_shot_pw_66,75.7,27.3,-1.2,6605,4.0,89.7,89.7,-0.0,87.1,-2.6,102.1,90.8,11.3,12.4,1.1,11.3,49.8,53.5,-3.7,I-S1-V3-P3,-2.6,shot,true,severe -s3_shot_pw_67,81.7,28.1,6.3,6510,12.7,100.0,100.0,0.0,100.0,0.0,106.8,101.1,5.7,6.8,1.1,5.7,61.0,65.0,-4.0,I-S1-V3-P3,,,false,moderate -s3_shot_pw_68,88.5,23.4,-0.1,6637,6.0,112.7,112.7,-0.0,116.1,3.4,120.2,114.1,6.1,7.5,1.4,6.1,57.2,63.4,-6.2,I-S2-V2-P3,3.4,shot,true,moderate -s3_shot_pw_69,74.1,23.6,0.2,5880,8.4,86.0,86.0,0.0,83.2,-2.8,84.9,88.8,-3.9,-1.1,2.8,-3.9,37.4,41.2,-3.8,I-S1-V2-P3,-2.8,shot,true,pass -topped_test_shot,91.8,5.0,-0.9,2195,16.2,55.6,56.2,-0.6,55.6,-0.6,109.2,95.3,13.9,53.6,39.1,14.5,4.2,4.3,-0.1,I-S2-V0-P0,,,false,severe -wedge_shot_1,48.7,29.0,-1.3,5684,11.1,42.6,42.6,0.0,37.5,-5.1,46.2,46.9,-0.7,3.6,4.3,-0.7,18.9,21.3,-2.4,C-S0-V3-P3,-5.1,shot,true,pass -wedge_shot_2,51.8,37.0,2.4,5652,9.1,49.1,49.1,0.0,43.0,-6.1,52.8,50.1,2.7,3.7,1.0,2.7,31.1,35.3,-4.2,C-S0-V4-P3,-6.1,shot,true,pass -wedge_test_shot,66.4,23.2,-1.4,6449,7.1,70.6,70.6,0.0,65.6,-5.0,79.4,75.8,3.6,8.8,5.2,3.6,28.0,31.2,-3.2,I-S1-V2-P3,-5.0,shot,true,pass -wedge_test_shot2,54.7,26.8,1.6,4976,5.7,52.2,52.2,-0.0,46.8,-5.4,60.8,57.7,3.1,8.6,5.5,3.1,22.4,24.4,-2.0,C-S0-V3-P2,-5.4,shot,true,pass -wood1,124.2,6.7,-8.1,4528,4.8,171.2,165.5,5.7,178.2,12.7,178.7,181.9,-3.2,7.5,16.4,-8.9,36.0,32.8,3.2,D-S4-V0-P2,7.0,regime,true,moderate -wood2,118.8,14.5,-3.3,3026,11.2,180.4,175.6,4.8,180.4,4.8,186.8,186.1,0.7,6.4,10.5,-4.1,57.7,59.3,-1.6,D-S3-V1-P1,,,false,moderate -wood_low_test_shot,114.5,7.0,-0.6,1932,-1.4,124.4,122.6,1.8,124.4,1.8,181.8,158.9,22.9,57.4,36.3,21.1,16.1,15.7,0.4,D-S3-V0-P0,,,false,severe +shot_name,speed_mph,vla_deg,hla_deg,total_spin_rpm,spin_axis_deg,launch_regime_key,carry_window,physics_carry_yd,flightscope_carry_yd,diff_carry_yd,physics_carry_raw_yd,diff_carry_raw_yd,physics_total_yd,flightscope_total_yd,diff_total_yd,rollout_physics_yd,rollout_flightscope_yd,diff_rollout_yd,physics_apex_ft,flightscope_apex_ft,diff_apex_ft,carry_exception_regime,carry_exception_offset_yd,carry_exception_source,carry_exception_applied,status +5iron,102.1,17.4,1.5,5391,12.3,I-S2-V1-P2,115-150,142.9,138.1,4.8,142.9,4.8,153.5,142.2,11.3,10.6,4.1,6.5,64.2,59.6,4.6,,,,false,severe +approach_mid_iron_test_shot,93.9,22.9,-2.6,5375,2.0,I-S2-V2-P2,115-150,125.2,125.8,-0.6,125.2,-0.6,135.8,128.5,7.3,10.6,2.7,7.9,64.3,69.3,-5.0,,,,false,moderate +bump_and_run,58.3,15.6,-0.8,1850,2.3,C-S0-V1-P0,<115,37.7,43.8,-6.1,37.7,-6.1,37.4,62.0,-24.6,-0.3,18.2,-18.5,8.6,10.1,-1.5,,,,false,severe +bump_and_run_slow,30.3,15.6,-0.8,1850,2.3,C-S0-V1-P0,,10.2,,,10.2,,28.2,,,18.0,,,2.2,,,,,,false, +bump_test_shot,78.3,5.6,-0.8,1850,2.3,I-S1b-V0-P0,<115,37.3,39.0,-1.7,37.3,-1.7,87.2,74.0,13.2,49.9,35.0,14.9,3.0,3.1,-0.1,,,,false,severe +checked_test_shot,75.0,38.5,1.4,10701,5.7,W-S1b-V4-P4,<115,75.5,77.6,-2.1,75.5,-2.1,77.0,77.5,-0.5,1.5,-0.1,1.6,69.9,79.5,-9.6,,,,false,pass +chip_test_shot,24.7,17.9,20.4,3204,-0.0,C-S0-V1-P1,,7.8,,,7.8,,17.1,,,9.3,,,1.9,,,,,,false, +drive_test_shot,150.0,12.5,1.5,2335,-9.9,D-S4-V1-P0,>200,248.1,244.0,4.1,248.1,4.1,260.6,256.0,4.6,12.5,12.0,0.5,82.2,80.6,1.6,,,,false,moderate +driver1,124.0,9.4,-9.5,2322,-24.8,D-S4-V0-P0,150-180,157.7,158.0,-0.3,157.7,-0.3,157.7,184.0,-26.3,0.0,26.0,-26.0,29.4,30.2,-0.8,,,,false,severe +driver2,124.6,13.2,-6.8,3994,-6.1,D-S4-V1-P1,180-200,187.6,184.8,2.8,187.6,2.8,195.2,192.3,2.9,7.6,7.5,0.1,61.5,65.8,-4.3,,,,false,pass +driver3,119.1,16.0,-8.9,4935,-9.4,D-S3-V1-P2,150-180,175.0,174.1,0.9,175.0,0.9,194.4,178.5,15.9,19.4,4.4,15.0,96.1,78.5,17.6,,,,false,severe +driver4,119.0,15.5,-10.2,4454,-7.8,D-S3-V1-P2,150-180,176.9,175.6,1.3,176.9,1.3,190.2,180.9,9.3,13.3,5.3,8.0,76.2,73.8,2.4,,,,false,moderate +flop_test_shot,68.0,45.0,0.5,12000,0.8,W-S1a-V4-P4,<115,61.6,61.8,-0.2,61.6,-0.2,61.9,60.3,1.6,0.3,-1.5,1.8,68.3,76.8,-8.5,,,,false,pass +p_wedge_shot_1,82.3,26.5,-3.1,4946,6.7,I-S1b-V3-P2,<115,105.7,104.5,1.2,105.7,1.2,116.1,107.3,8.8,10.4,2.8,7.6,58.3,60.5,-2.2,,,,false,moderate +s2_shot_10,89.7,25.5,-3.1,6446,6.2,I-S2-V3-P3,115-150,118.5,115.1,3.4,118.5,3.4,126.6,116.4,10.2,8.1,1.3,6.8,66.0,72.0,-6.0,,,,false,severe +s2_shot_11,78.5,29.6,4.3,7350,10.7,I-S1b-V3-P3,<115,91.9,93.0,-1.1,91.9,-1.1,96.4,93.6,2.8,4.5,0.6,3.9,60.4,64.0,-3.6,,,,false,pass +s2_shot_12,90.8,24.5,-3.9,7261,4.9,I-S2-V2-P3,115-150,117.4,115.4,2.0,117.4,2.0,122.4,116.4,6.0,5.0,1.0,4.0,65.3,71.5,-6.2,,,,false,moderate +s2_shot_13,95.2,19.6,-1.1,5610,12.2,I-S2-V2-P3,115-150,124.2,125.3,-1.1,124.2,-1.1,129.4,128.7,0.7,5.2,3.4,1.8,51.5,58.4,-6.9,,,,false,pass +s2_shot_14,87.1,22.4,-2.0,5660,11.4,I-S2-V2-P3,<115,108.6,110.9,-2.3,108.6,-2.3,113.3,113.7,-0.4,4.7,2.8,1.9,49.3,55.9,-6.6,,,,false,pass +s2_shot_15,88.1,14.2,-0.3,4985,19.4,I-S2-V1-P2,<115,100.3,101.3,-1.0,100.3,-1.0,100.4,113.1,-12.7,0.1,11.8,-11.7,26.9,28.9,-2.0,,,,false,severe +s2_shot_16,94.1,19.1,-5.9,5291,5.0,I-S2-V2-P2,115-150,124.0,124.3,-0.3,124.0,-0.3,130.3,128.1,2.2,6.3,3.8,2.5,51.8,55.3,-3.5,,,,false,pass +s2_shot_17,122.9,14.4,-1.3,4119,6.7,D-S4-V1-P2,180-200,184.9,184.0,0.9,184.9,0.9,195.0,190.3,4.7,10.1,6.3,3.8,66.7,71.8,-5.1,,,,false,pass +s2_shot_18,105.7,20.5,-1.7,5667,8.2,I-S3-V2-P3,115-150,144.7,146.8,-2.1,144.7,-2.1,156.6,149.4,7.2,11.9,2.6,9.3,76.9,80.4,-3.5,,,,false,moderate +s2_shot_19,128.6,12.5,-8.4,2514,5.1,D-S4-V1-P1,180-200,192.4,194.5,-2.1,192.4,-2.1,198.2,208.7,-10.5,5.8,14.2,-8.4,55.1,57.3,-2.2,,,,false,severe +s2_shot_20,120.9,15.0,-3.0,4245,9.6,D-S4-V1-P2,150-180,180.9,179.4,1.5,180.9,1.5,192.8,185.3,7.5,11.9,5.9,6.0,69.3,72.3,-3.0,,,,false,moderate +s2_shot_21,127.3,7.2,-11.5,2321,-19.5,D-S4-V0-P0,150-180,159.8,154.9,4.9,159.8,4.9,214.2,186.5,27.7,54.4,31.6,22.8,24.8,23.1,1.7,,,,false,severe +s2_shot_22,123.3,14.0,-6.1,3104,10.0,D-S4-V1-P1,180-200,186.0,185.4,0.6,186.0,0.6,193.1,195.5,-2.4,7.1,10.1,-3.0,60.3,63.0,-2.7,,,,false,pass +s2_shot_23,125.5,8.6,-14.3,3062,-23.9,D-S4-V0-P1,150-180,161.1,161.9,-0.8,161.1,-0.8,161.1,185.0,-23.9,0.0,23.1,-23.1,29.8,31.0,-1.2,,,,false,severe +s2_shot_24,121.5,14.5,-11.2,3173,-6.8,D-S4-V1-P1,180-200,183.5,183.0,0.5,183.5,0.5,191.3,192.8,-1.5,7.8,9.8,-2.0,61.6,64.6,-3.0,,,,false,pass +s2_shot_26,117.0,18.4,-2.0,5035,9.7,I-S3-V2-P2,150-180,172.4,170.7,1.7,172.4,1.7,194.8,174.2,20.6,22.4,3.5,18.9,111.6,88.1,23.5,,,,false,severe +s2_shot_27,113.0,17.6,-2.3,4292,12.2,D-S3-V1-P2,150-180,163.1,164.5,-1.4,163.1,-1.4,178.8,169.6,9.2,15.7,5.1,10.6,76.8,73.6,3.2,,,,false,moderate +s2_shot_9,94.4,20.1,2.4,4020,16.3,I-S2-V2-P2,115-150,123.2,126.5,-3.3,123.2,-3.3,134.1,132.5,1.6,10.9,6.0,4.9,61.9,54.8,7.1,,,,false,moderate +s3_shot_3w_18,47.9,45.8,34.0,7491,30.0,C-S0-V4-P3,,40.4,,,40.4,,46.1,,,5.7,,,37.7,,,,,,false, +s3_shot_3w_19,121.3,5.6,-4.8,1662,-11.9,D-S4-V0-P0,115-150,120.0,120.6,-0.6,120.0,-0.6,181.8,165.8,16.0,61.8,45.2,16.6,12.3,12.2,0.1,,,,false,severe +s3_shot_3w_21,119.4,5.3,-3.4,1760,-10.5,D-S3-V0-P0,<115,115.2,114.6,0.6,115.2,0.6,176.4,160.5,15.9,61.2,45.9,15.3,11.2,10.9,0.3,,,,false,severe +s3_shot_3w_22,108.9,5.6,-7.2,2501,-1.8,I-S3-V0-P1,<115,105.8,103.2,2.6,105.8,2.6,160.9,141.3,19.6,55.1,38.1,17.0,11.0,10.5,0.5,,,,false,severe +s3_shot_3w_23,115.8,8.9,-0.8,2804,2.2,D-S3-V0-P1,115-150,147.8,147.7,0.1,147.8,0.1,147.6,170.9,-23.3,-0.2,23.2,-23.4,26.7,28.0,-1.3,,,,false,severe +s3_shot_3w_24,123.4,6.3,-5.4,2752,-13.3,D-S4-V0-P1,115-150,148.2,145.9,2.3,148.2,2.3,200.5,176.7,23.8,52.3,30.8,21.5,20.5,19.8,0.7,,,,false,severe +s3_shot_5i_10,88.0,14.2,1.2,4065,8.4,I-S2-V1-P2,<115,105.6,103.1,2.5,105.6,2.5,109.1,116.7,-7.6,3.5,13.6,-10.1,34.2,28.4,5.8,,,,false,moderate +s3_shot_5i_11,90.6,14.4,-0.2,3360,7.8,I-S2-V1-P1,<115,107.3,108.8,-1.5,107.3,-1.5,108.7,124.1,-15.4,1.4,15.3,-13.9,29.1,29.8,-0.7,,,,false,severe +s3_shot_5i_12,74.2,10.2,-1.7,3321,15.8,I-S1b-V1-P1,<115,59.5,58.4,1.1,59.5,1.1,58.4,81.9,-23.5,-1.1,23.5,-24.6,10.5,9.4,1.1,,,,false,severe +s3_shot_5i_13,75.0,8.0,2.5,3921,3.4,I-S1b-V0-P1,<115,56.2,53.9,2.3,56.2,2.3,89.0,78.9,10.1,32.8,25.0,7.8,7.4,6.8,0.6,,,,false,severe +s3_shot_5i_15,86.9,9.3,-4.0,2509,-4.9,I-S2-V0-P1,<115,74.0,78.6,-4.6,74.0,-4.6,121.1,106.6,14.5,47.1,28.0,19.1,11.0,12.1,-1.1,,,,false,severe +s3_shot_5i_16,98.0,9.1,-2.1,3776,1.7,I-S2-V0-P1,<115,110.0,109.1,0.9,110.0,0.9,109.0,130.0,-21.0,-1.0,20.9,-21.9,19.5,19.7,-0.2,,,,false,severe +s3_shot_5i_17,56.5,10.0,24.1,5178,29.1,C-S0-V0-P2,<115,32.2,30.6,1.6,32.2,1.6,51.2,46.9,4.3,19.0,16.3,2.7,4.7,4.5,0.2,,,,false,pass +s3_shot_6i_35,80.5,15.3,-1.3,4667,-0.0,I-S1b-V1-P2,<115,85.6,90.0,-4.4,85.6,-4.4,85.6,101.5,-15.9,0.0,11.5,-11.5,23.3,26.4,-3.1,,,,false,severe +s3_shot_6i_36,78.9,10.4,16.1,4166,25.1,I-S1b-V1-P2,<115,70.6,67.8,2.8,70.6,2.8,69.1,89.1,-20.0,-1.5,21.3,-22.8,12.6,11.8,0.8,,,,false,severe +s3_shot_6i_37,82.6,10.2,11.0,3041,25.4,I-S1b-V1-P1,<115,67.8,71.5,-3.7,67.8,-3.7,109.1,97.2,11.9,41.3,25.7,15.6,10.9,11.8,-0.9,,,,false,severe +s3_shot_6i_38,79.1,13.3,3.0,3187,11.6,I-S1b-V1-P1,<115,75.6,79.2,-3.6,75.6,-3.6,75.8,97.5,-21.7,0.2,18.3,-18.1,18.1,18.0,0.1,,,,false,severe +s3_shot_6i_39,61.0,6.1,10.3,3285,22.0,I-S1a-V0-P1,<115,24.0,24.0,0.0,24.0,0.0,54.5,47.3,7.2,30.5,23.3,7.2,2.2,2.1,0.1,,,,false,moderate +s3_shot_6i_40,62.1,6.8,27.0,2768,30.0,I-S1a-V0-P1,<115,25.5,26.2,-0.7,25.5,-0.7,59.7,51.1,8.6,34.2,24.9,9.3,2.6,2.5,0.1,,,,false,moderate +s3_shot_6i_41,82.5,9.9,-2.3,2620,13.6,I-S1b-V0-P1,<115,66.6,71.3,-4.7,66.6,-4.7,110.8,97.9,12.9,44.2,26.6,17.6,10.3,11.3,-1.0,,,,false,severe +s3_shot_6i_42,77.2,13.1,-3.4,4057,4.1,I-S1b-V1-P2,<115,76.2,76.6,-0.4,76.2,-0.4,76.2,92.9,-16.7,0.0,16.3,-16.3,18.5,17.5,1.0,,,,false,severe +s3_shot_6i_43,94.1,13.9,-4.7,4616,1.7,I-S2-V1-P2,115-150,122.9,117.3,5.6,122.9,5.6,128.4,128.6,-0.2,5.5,11.3,-5.8,42.8,35.0,7.8,,,,false,moderate +s3_shot_6i_44,115.0,9.5,-6.7,2314,15.1,D-S3-V0-P0,115-150,140.5,142.3,-1.8,140.5,-1.8,140.2,168.2,-28.0,-0.3,25.9,-26.2,25.2,26.6,-1.4,,,,false,severe +s3_shot_6i_45,109.3,6.4,-9.0,2510,-10.9,I-S3-V0-P1,<115,112.6,109.6,3.0,112.6,3.0,165.8,145.4,20.4,53.2,35.8,17.4,13.4,12.9,0.5,,,,false,severe +s3_shot_6i_46,116.3,13.7,0.3,3008,10.7,D-S3-V1-P1,150-180,166.3,167.3,-1.0,166.3,-1.0,170.8,179.3,-8.5,4.5,12.0,-7.5,48.6,51.6,-3.0,,,,false,moderate +s3_shot_6i_47,99.5,14.8,-2.9,4811,4.7,I-S2-V1-P2,115-150,137.3,131.2,6.1,137.3,6.1,146.0,137.7,8.3,8.7,6.5,2.2,56.4,45.0,11.4,,,,false,moderate +s3_shot_6i_48,101.7,15.2,-3.0,4631,4.3,I-S2-V1-P2,115-150,142.4,137.1,5.3,142.4,5.3,152.3,143.5,8.8,9.9,6.4,3.5,62.7,48.9,13.8,,,,false,moderate +s3_shot_6i_49,71.2,7.7,16.1,2625,30.0,I-S1a-V0-P1,<115,38.3,39.9,-1.6,38.3,-1.6,78.6,70.3,8.3,40.3,30.4,9.9,4.3,4.5,-0.2,,,,false,moderate +s3_shot_6i_50,82.8,14.8,-1.4,3783,2.8,I-S1b-V1-P1,<115,92.3,93.2,-0.9,92.3,-0.9,94.9,107.4,-12.5,2.6,14.2,-11.6,29.4,25.6,3.8,,,,false,severe +s3_shot_7i_25,83.3,13.2,3.0,3410,17.8,I-S1b-V1-P1,<115,86.0,86.9,-0.9,86.0,-0.9,86.4,104.8,-18.4,0.4,17.9,-17.5,21.0,20.1,0.9,,,,false,severe +s3_shot_7i_26,73.4,10.8,15.4,3561,30.0,I-S1b-V1-P1,<115,58.1,56.6,1.5,58.1,1.5,57.2,79.3,-22.1,-0.9,22.7,-23.6,10.7,9.6,1.1,,,,false,severe +s3_shot_7i_27,93.7,17.1,-1.4,4612,2.6,I-S2-V1-P2,115-150,123.5,122.3,1.2,123.5,1.2,133.0,128.3,4.7,9.5,6.0,3.5,53.7,46.0,7.7,,,,false,pass +s3_shot_7i_28,92.1,16.4,-3.6,4217,-0.4,I-S2-V1-P2,115-150,118.4,117.9,0.5,118.4,0.5,127.1,125.6,1.5,8.7,7.7,1.0,48.7,40.6,8.1,,,,false,pass +s3_shot_7i_29,107.6,13.8,-6.0,3633,4.7,I-S3-V1-P1,115-150,148.5,148.4,0.1,148.5,0.1,151.7,158.3,-6.6,3.2,9.9,-6.7,42.7,46.3,-3.6,,,,false,moderate +s3_shot_7i_30,90.2,17.6,-3.8,4508,-0.2,I-S2-V1-P2,115-150,114.7,115.4,-0.7,114.7,-0.7,122.7,121.7,1.0,8.0,6.3,1.7,48.4,43.1,5.3,,,,false,pass +s3_shot_7i_31,76.4,17.5,-0.5,5122,1.8,I-S1b-V1-P2,<115,80.7,85.0,-4.3,80.7,-4.3,80.7,94.5,-13.8,0.0,9.5,-9.5,24.4,28.4,-4.0,,,,false,severe +s3_shot_7i_32,93.1,17.0,-1.0,3762,4.2,I-S2-V1-P1,115-150,120.9,121.2,-0.3,120.9,-0.3,128.4,129.8,-1.4,7.5,8.6,-1.1,46.6,42.5,4.1,,,,false,pass +s3_shot_7i_33,92.4,17.0,-0.6,3852,2.8,I-S2-V1-P1,115-150,119.6,119.7,-0.1,119.6,-0.1,127.5,128.0,-0.5,7.9,8.3,-0.4,47.8,42.0,5.8,,,,false,pass +s3_shot_7i_34,104.2,14.7,-4.6,4081,1.9,I-S2-V1-P2,115-150,146.1,142.5,3.6,146.1,3.6,152.6,150.6,2.0,6.5,8.1,-1.6,51.2,48.2,3.0,,,,false,moderate +s3_shot_9i_1,89.0,15.1,-0.5,3563,11.3,I-S2-V1-P1,<115,106.9,106.7,0.2,106.9,0.2,110.3,120.8,-10.5,3.4,14.1,-10.7,32.7,30.8,1.9,,,,false,severe +s3_shot_9i_2,71.3,23.9,5.5,4086,8.3,I-S1a-V2-P2,<115,80.2,82.1,-1.9,80.2,-1.9,85.4,87.4,-2.0,5.2,5.3,-0.1,37.0,36.8,0.2,,,,false,pass +s3_shot_9i_3,90.1,21.7,2.8,5243,11.2,I-S2-V2-P2,115-150,115.4,117.3,-1.9,115.4,-1.9,122.1,120.7,1.4,6.7,3.4,3.3,52.3,57.7,-5.4,,,,false,pass +s3_shot_9i_5,84.0,19.4,3.8,5352,11.5,I-S1b-V2-P2,<115,103.0,102.7,0.3,103.0,0.3,104.8,107.2,-2.4,1.8,4.5,-2.7,37.4,41.8,-4.4,,,,false,pass +s3_shot_9i_7,83.0,22.5,5.3,7008,9.7,I-S1b-V2-P3,<115,103.4,101.1,2.3,103.4,2.3,105.5,102.6,2.9,2.1,1.5,0.6,47.9,51.5,-3.6,,,,false,pass +s3_shot_9i_8,92.2,21.9,-6.3,5042,0.7,I-S2-V2-P2,115-150,120.6,122.9,-2.3,120.6,-2.3,131.1,126.4,4.7,10.5,3.5,7.0,60.8,62.6,-1.8,,,,false,pass +s3_shot_9i_9,90.1,22.1,-3.1,5351,1.2,I-S2-V2-P2,115-150,116.3,118.1,-1.8,116.3,-1.8,123.4,121.1,2.3,7.1,3.0,4.1,53.8,60.1,-6.3,,,,false,pass +s3_shot_driver_51,116.2,21.7,2.2,6409,3.2,I-S3-V2-P3,150-180,166.1,162.9,3.2,166.1,3.2,183.5,164.3,19.2,17.4,1.4,16.0,100.8,108.7,-7.9,,,,false,severe +s3_shot_driver_52,102.1,31.3,3.1,8442,6.3,W-S2-V3-P4,115-150,128.2,124.5,3.7,128.2,3.7,142.4,124.1,18.3,14.2,-0.4,14.6,112.7,119.3,-6.6,,,,false,severe +s3_shot_driver_53,97.2,30.6,2.2,8926,6.0,W-S2-V3-P4,115-150,117.7,117.6,0.1,117.7,0.1,127.4,117.1,10.3,9.7,-0.5,10.2,97.4,105.8,-8.4,,,,false,severe +s3_shot_driver_54,121.5,12.9,-5.3,3411,-10.0,D-S4-V1-P1,150-180,178.7,178.2,0.5,178.7,0.5,183.8,188.7,-4.9,5.1,10.5,-5.4,53.0,56.5,-3.5,,,,false,pass +s3_shot_driver_55,117.5,7.5,-8.3,2150,-27.2,D-S3-V0-P0,115-150,127.6,125.6,2.0,127.6,2.0,183.5,161.8,21.7,55.9,36.2,19.7,17.6,17.2,0.4,,,,false,severe +s3_shot_driver_56,118.7,17.1,-1.8,4554,2.8,D-S3-V1-P2,150-180,175.8,176.6,-0.8,175.8,-0.8,194.6,180.9,13.7,18.8,4.3,14.5,90.4,83.2,7.2,,,,false,severe +s3_shot_driver_57,120.9,14.1,-5.2,1544,-8.0,D-S4-V1-P0,150-180,174.3,177.6,-3.3,174.3,-3.3,179.3,197.0,-17.7,5.0,19.4,-14.4,48.2,50.9,-2.7,,,,false,severe +s3_shot_driver_58,119.3,23.6,2.5,7093,3.3,I-S3-V2-P3,150-180,172.5,163.2,9.3,172.5,9.3,188.4,163.9,24.5,15.9,0.7,15.2,112.7,125.7,-13.0,,,,false,severe +s3_shot_driver_59,81.0,44.9,8.9,6735,12.4,W-S1b-V4-P3,<115,82.1,83.7,-1.6,82.1,-1.6,97.6,83.2,14.4,15.5,-0.5,16.0,103.6,107.8,-4.2,,,,false,severe +s3_shot_driver_60,107.4,11.7,-8.6,3269,-14.8,I-S3-V1-P1,115-150,137.9,138.5,-0.6,137.9,-0.6,138.4,153.8,-15.4,0.5,15.3,-14.8,31.5,34.0,-2.5,,,,false,severe +s3_shot_pw_64,69.6,28.6,0.2,5327,5.1,I-S1a-V3-P2,<115,83.5,80.1,3.4,83.5,3.4,88.7,82.4,6.3,5.2,2.3,2.9,47.0,46.4,0.6,,,,false,moderate +s3_shot_pw_65,81.2,28.4,2.9,6959,9.4,I-S1b-V3-P3,<115,99.5,98.5,1.0,99.5,1.0,105.6,99.4,6.2,6.1,0.9,5.2,62.7,65.6,-2.9,,,,false,moderate +s3_shot_pw_66,75.7,27.3,-1.2,6605,4.0,I-S1b-V3-P3,<115,88.1,89.7,-1.6,88.1,-1.6,91.7,90.8,0.9,3.6,1.1,2.5,50.5,53.5,-3.0,,,,false,pass +s3_shot_pw_67,81.7,28.1,6.3,6510,12.7,I-S1b-V3-P3,<115,101.3,100.0,1.3,101.3,1.3,108.3,101.1,7.2,7.0,1.1,5.9,61.9,65.0,-3.1,,,,false,moderate +s3_shot_pw_68,88.5,23.4,-0.1,6637,6.0,I-S2-V2-P3,<115,113.3,112.7,0.6,113.3,0.6,118.0,114.1,3.9,4.7,1.4,3.3,56.4,63.4,-7.0,,,,false,pass +s3_shot_pw_69,74.1,23.6,0.2,5880,8.4,I-S1b-V2-P3,<115,84.0,86.0,-2.0,84.0,-2.0,85.7,88.8,-3.1,1.7,2.8,-1.1,37.7,41.2,-3.5,,,,false,pass +s4_shot_3w_31,106.9,15.7,-2.4,3662,8.9,I-S3-V1-P1,150-180,150.2,150.3,-0.1,150.2,-0.1,155.2,158.8,-3.6,5.0,8.5,-3.5,50.1,53.7,-3.6,,,,false,pass +s4_shot_3w_32,105.5,18.5,-1.4,5714,2.3,I-S3-V2-P3,115-150,144.3,146.0,-1.7,144.3,-1.7,153.2,148.8,4.4,8.9,2.8,6.1,67.6,71.9,-4.3,,,,false,pass +s4_shot_3w_33,99.7,20.5,0.5,6997,1.6,I-S2-V2-P3,115-150,138.4,132.0,6.4,138.4,6.4,143.0,133.4,9.6,4.6,1.4,3.2,63.7,72.8,-9.1,,,,false,moderate +s4_shot_3w_34,114.6,15.3,2.4,3502,12.8,D-S3-V1-P1,150-180,165.9,166.6,-0.7,165.9,-0.7,173.4,175.4,-2.0,7.5,8.8,-1.3,56.4,60.3,-3.9,,,,false,pass +s4_shot_3w_35,117.9,14.4,3.6,3735,13.3,D-S3-V1-P1,150-180,171.7,171.9,-0.2,171.7,-0.2,177.5,180.2,-2.7,5.8,8.3,-2.5,56.4,61.1,-4.7,,,,false,pass +s4_shot_5i_25,89.1,16.7,1.1,5262,6.2,I-S2-V1-P2,<115,107.9,110.8,-2.9,107.9,-2.9,108.9,116.1,-7.2,1.0,5.3,-4.3,34.6,40.1,-5.5,,,,false,moderate +s4_shot_5i_26,106.3,15.5,-3.6,4114,3.4,I-S3-V1-P2,115-150,151.8,148.7,3.1,151.8,3.1,160.9,155.9,5.0,9.1,7.2,1.9,57.4,54.5,2.9,,,,false,moderate +s4_shot_5i_27,84.9,7.0,5.7,2263,30.0,I-S1b-V0-P0,<115,54.3,55.3,-1.0,54.3,-1.0,104.1,92.1,12.0,49.8,36.8,13.0,5.7,5.8,-0.1,,,,false,severe +s4_shot_5i_28,86.0,15.9,-1.6,4179,1.0,I-S2-V1-P2,<115,102.9,103.1,-0.2,102.9,-0.2,107.7,114.6,-6.9,4.8,11.5,-6.7,37.2,32.2,5.0,,,,false,moderate +s4_shot_5i_29,76.2,6.1,0.7,3695,-0.0,I-S1b-V0-P1,<115,52.5,46.2,6.3,52.5,6.3,87.1,73.3,13.8,34.6,27.1,7.5,5.3,4.3,1.0,,,,false,severe +s4_shot_5i_30,96.8,18.2,0.7,6358,17.5,I-S2-V2-P3,115-150,127.1,124.7,2.4,127.1,2.4,129.3,127.7,1.6,2.2,3.0,-0.8,47.7,55.5,-7.8,,,,false,pass +s4_shot_6i_19,85.6,14.7,2.9,4623,10.9,I-S2-V1-P2,<115,98.4,98.9,-0.5,98.4,-0.5,99.3,110.8,-11.5,0.9,11.9,-11.0,28.8,28.6,0.2,,,,false,severe +s4_shot_6i_20,78.8,9.7,-0.7,4289,-0.0,I-S1b-V0-P2,<115,69.3,69.4,-0.1,69.3,-0.1,101.0,89.6,11.4,31.7,20.2,11.5,11.5,11.5,0.0,,,,false,severe +s4_shot_6i_21,91.9,17.8,0.7,5967,11.5,I-S2-V1-P3,115-150,117.3,116.4,0.9,117.3,0.9,118.6,120.1,-1.5,1.3,3.7,-2.4,40.8,47.6,-6.8,,,,false,pass +s4_shot_6i_22,76.9,7.7,14.4,3780,30.0,I-S1b-V0-P1,<115,55.3,50.8,4.5,55.3,4.5,89.6,78.8,10.8,34.3,28.0,6.3,6.9,6.0,0.9,,,,false,severe +s4_shot_6i_23,86.7,15.4,2.8,4196,11.9,I-S2-V1-P2,,103.5,,,103.5,,107.2,,,3.7,,,35.9,,,,,,false, +s4_shot_6i_24,90.8,14.8,3.0,5270,14.9,I-S2-V1-P2,,107.9,,,107.9,,108.2,,,0.3,,,30.6,,,,,,false, +s4_shot_9i_13,73.1,12.5,11.3,4979,21.3,I-S1b-V1-P2,,60.0,,,60.0,,57.8,,,-2.2,,,11.7,,,,,,false, +s4_shot_9i_14,87.1,22.1,0.3,5730,4.7,I-S2-V2-P3,<115,109.1,111.2,-2.1,109.1,-2.1,113.5,113.9,-0.4,4.4,2.7,1.7,48.8,55.8,-7.0,,,,false,pass +s4_shot_9i_15,75.3,23.7,-1.3,6790,2.9,I-S1b-V2-P3,<115,86.2,87.7,-1.5,86.2,-1.5,101.9,89.3,12.6,15.7,1.6,14.1,40.7,43.9,-3.2,,,,false,severe +s4_shot_9i_17,79.4,14.9,16.4,4369,30.0,I-S1b-V1-P2,<115,79.8,80.9,-1.1,79.8,-1.1,79.9,95.6,-15.7,0.1,14.7,-14.6,21.1,21.4,-0.3,,,,false,severe +s4_shot_9i_18,74.6,23.6,2.5,6418,6.1,I-S1b-V2-P3,<115,85.0,86.6,-1.6,85.0,-1.6,101.6,88.8,12.8,16.6,2.2,14.4,39.3,42.3,-3.0,,,,false,severe +s4_shot_lw_38,47.6,37.8,6.1,5609,5.6,C-S0-V4-P3,<115,41.3,42.4,-1.1,41.3,-1.1,52.4,43.4,9.0,11.1,1.0,10.1,29.4,30.5,-1.1,,,,false,moderate +s4_shot_pw_1,69.8,20.1,-0.6,3577,8.0,I-S1a-V2-P1,<115,73.8,74.8,-1.0,73.8,-1.0,77.0,83.7,-6.7,3.2,8.9,-5.7,29.3,26.2,3.1,,,,false,moderate +s4_shot_pw_10,76.3,26.8,0.7,5989,4.9,I-S1b-V3-P3,<115,90.4,91.5,-1.1,90.4,-1.1,95.1,93.2,1.9,4.7,1.7,3.0,49.4,52.8,-3.4,,,,false,pass +s4_shot_pw_11,76.3,27.4,-0.6,6296,5.2,I-S1b-V3-P3,<115,90.0,91.1,-1.1,90.0,-1.1,94.0,92.5,1.5,4.0,1.4,2.6,51.2,54.2,-3.0,,,,false,pass +s4_shot_pw_2,53.2,25.0,0.2,4085,3.0,C-S0-V2-P2,<115,48.9,48.5,0.4,48.9,0.4,68.2,56.0,12.2,19.3,7.5,11.8,20.6,20.2,0.4,,,,false,severe +s4_shot_pw_3,62.8,31.1,6.6,6129,6.3,W-S1a-V3-P3,<115,65.8,67.3,-1.5,65.8,-1.5,79.9,68.6,11.3,14.1,1.3,12.8,40.7,41.8,-1.1,,,,false,severe +s4_shot_pw_47,46.7,24.6,2.3,3699,-0.0,C-S0-V2-P1,<115,36.8,37.4,-0.6,36.8,-0.6,54.7,45.2,9.5,17.9,7.8,10.1,14.6,14.6,0.0,,,,false,moderate +s4_shot_pw_48,46.5,25.5,3.8,4318,0.6,C-S0-V3-P2,<115,37.2,37.9,-0.7,37.2,-0.7,52.9,44.5,8.4,15.7,6.6,9.1,15.6,15.6,0.0,,,,false,moderate +s4_shot_pw_49,60.3,22.6,3.5,4044,5.0,I-S1a-V2-P2,<115,57.1,59.3,-2.2,57.1,-2.2,78.6,68.0,10.6,21.5,8.7,12.8,22.5,22.8,-0.3,,,,false,severe +s4_shot_pw_6,68.7,26.1,1.1,4149,8.2,I-S1a-V3-P2,<115,77.1,78.4,-1.3,77.1,-1.3,83.0,83.1,-0.1,5.9,4.7,1.2,38.5,38.6,-0.1,,,,false,pass +s4_shot_pw_7,76.8,25.2,3.7,6565,8.2,I-S1b-V3-P3,<115,90.6,91.1,-0.5,90.6,-0.5,93.3,92.6,0.7,2.7,1.5,1.2,46.6,49.5,-2.9,,,,false,pass +s4_shot_pw_9,76.6,28.6,4.9,7133,5.7,I-S1b-V3-P3,,88.9,,,88.9,,92.6,,,3.7,,,54.9,,,,,,false, +topped_test_shot,91.8,5.0,-0.9,2195,16.2,I-S2-V0-P0,<115,55.5,56.2,-0.7,55.5,-0.7,109.1,95.3,13.8,53.6,39.1,14.5,4.2,4.3,-0.1,,,,false,severe +wedge_shot_1,48.7,29.0,-1.3,5684,11.1,C-S0-V3-P3,<115,41.1,42.6,-1.5,41.1,-1.5,53.1,46.9,6.2,12.0,4.3,7.7,20.5,21.3,-0.8,,,,false,moderate +wedge_shot_2,51.8,37.0,2.4,5652,9.1,C-S0-V4-P3,<115,48.7,49.1,-0.4,48.7,-0.4,61.2,50.1,11.1,12.5,1.0,11.5,34.9,35.3,-0.4,,,,false,severe +wedge_test_shot,66.4,23.2,-1.4,6449,7.1,I-S1a-V2-P3,<115,72.1,70.6,1.5,72.1,1.5,88.2,75.8,12.4,16.1,5.2,10.9,30.7,31.2,-0.5,,,,false,severe +wedge_test_shot2,54.7,26.8,1.6,4976,5.7,C-S0-V3-P2,<115,53.3,52.2,1.1,53.3,1.1,70.1,57.7,12.4,16.8,5.5,11.3,25.2,24.4,0.8,,,,false,severe +wood1,124.2,6.7,-8.1,4528,4.8,D-S4-V0-P2,150-180,177.4,165.5,11.9,177.4,11.9,177.9,181.9,-4.0,0.5,16.4,-15.9,35.9,32.8,3.1,,,,false,severe +wood2,118.8,14.5,-3.3,3026,11.2,D-S3-V1-P1,150-180,175.2,175.6,-0.4,175.2,-0.4,181.3,186.1,-4.8,6.1,10.5,-4.4,56.0,59.3,-3.3,,,,false,pass +wood_low_test_shot,114.5,7.0,-0.6,1932,-1.4,D-S3-V0-P0,115-150,123.9,122.6,1.3,123.9,1.3,180.9,158.9,22.0,57.0,36.3,20.7,16.0,15.7,0.3,,,,false,severe diff --git a/assets/data/calibration/shot_diff_analysis.csv.import b/assets/data/calibration/shot_diff_analysis.csv.import index 40ff47a..785a074 100644 --- a/assets/data/calibration/shot_diff_analysis.csv.import +++ b/assets/data/calibration/shot_diff_analysis.csv.import @@ -6,10 +6,10 @@ uid="uid://ubi8rpjmumqy" [deps] -files=["res://assets/data/calibration/shot_diff_analysis.speed.translation", "res://assets/data/calibration/shot_diff_analysis.vla.translation", "res://assets/data/calibration/shot_diff_analysis.hla.translation", "res://assets/data/calibration/shot_diff_analysis.total.translation", "res://assets/data/calibration/shot_diff_analysis.spin.translation", "res://assets/data/calibration/shot_diff_analysis.physics.translation", "res://assets/data/calibration/shot_diff_analysis.flightscope.translation", "res://assets/data/calibration/shot_diff_analysis.diff.translation", "res://assets/data/calibration/shot_diff_analysis.physics.translation", "res://assets/data/calibration/shot_diff_analysis.diff.translation", "res://assets/data/calibration/shot_diff_analysis.physics.translation", "res://assets/data/calibration/shot_diff_analysis.flightscope.translation", "res://assets/data/calibration/shot_diff_analysis.diff.translation", "res://assets/data/calibration/shot_diff_analysis.rollout.translation", "res://assets/data/calibration/shot_diff_analysis.rollout.translation", "res://assets/data/calibration/shot_diff_analysis.diff.translation", "res://assets/data/calibration/shot_diff_analysis.physics.translation", "res://assets/data/calibration/shot_diff_analysis.flightscope.translation", "res://assets/data/calibration/shot_diff_analysis.diff.translation", "res://assets/data/calibration/shot_diff_analysis.carry.translation", "res://assets/data/calibration/shot_diff_analysis.carry.translation", "res://assets/data/calibration/shot_diff_analysis.carry.translation", "res://assets/data/calibration/shot_diff_analysis.carry.translation", "res://assets/data/calibration/shot_diff_analysis.status.translation"] +files=["res://assets/data/calibration/shot_diff_analysis.speed.translation", "res://assets/data/calibration/shot_diff_analysis.vla.translation", "res://assets/data/calibration/shot_diff_analysis.hla.translation", "res://assets/data/calibration/shot_diff_analysis.total.translation", "res://assets/data/calibration/shot_diff_analysis.spin.translation", "res://assets/data/calibration/shot_diff_analysis.launch.translation", "res://assets/data/calibration/shot_diff_analysis.carry.translation", "res://assets/data/calibration/shot_diff_analysis.en.translation", "res://assets/data/calibration/shot_diff_analysis.flightscope.translation", "res://assets/data/calibration/shot_diff_analysis.en.translation", "res://assets/data/calibration/shot_diff_analysis.en.translation", "res://assets/data/calibration/shot_diff_analysis.en.translation", "res://assets/data/calibration/shot_diff_analysis.en.translation", "res://assets/data/calibration/shot_diff_analysis.flightscope.translation", "res://assets/data/calibration/shot_diff_analysis.en.translation", "res://assets/data/calibration/shot_diff_analysis.en.translation", "res://assets/data/calibration/shot_diff_analysis.rollout.translation", "res://assets/data/calibration/shot_diff_analysis.en.translation", "res://assets/data/calibration/shot_diff_analysis.en.translation", "res://assets/data/calibration/shot_diff_analysis.flightscope.translation", "res://assets/data/calibration/shot_diff_analysis.en.translation", "res://assets/data/calibration/shot_diff_analysis.en.translation", "res://assets/data/calibration/shot_diff_analysis.en.translation", "res://assets/data/calibration/shot_diff_analysis.en.translation", "res://assets/data/calibration/shot_diff_analysis.carry.translation", "res://assets/data/calibration/shot_diff_analysis.en.translation"] source_file="res://assets/data/calibration/shot_diff_analysis.csv" -dest_files=["res://assets/data/calibration/shot_diff_analysis.speed.translation", "res://assets/data/calibration/shot_diff_analysis.vla.translation", "res://assets/data/calibration/shot_diff_analysis.hla.translation", "res://assets/data/calibration/shot_diff_analysis.total.translation", "res://assets/data/calibration/shot_diff_analysis.spin.translation", "res://assets/data/calibration/shot_diff_analysis.physics.translation", "res://assets/data/calibration/shot_diff_analysis.flightscope.translation", "res://assets/data/calibration/shot_diff_analysis.diff.translation", "res://assets/data/calibration/shot_diff_analysis.physics.translation", "res://assets/data/calibration/shot_diff_analysis.diff.translation", "res://assets/data/calibration/shot_diff_analysis.physics.translation", "res://assets/data/calibration/shot_diff_analysis.flightscope.translation", "res://assets/data/calibration/shot_diff_analysis.diff.translation", "res://assets/data/calibration/shot_diff_analysis.rollout.translation", "res://assets/data/calibration/shot_diff_analysis.rollout.translation", "res://assets/data/calibration/shot_diff_analysis.diff.translation", "res://assets/data/calibration/shot_diff_analysis.physics.translation", "res://assets/data/calibration/shot_diff_analysis.flightscope.translation", "res://assets/data/calibration/shot_diff_analysis.diff.translation", "res://assets/data/calibration/shot_diff_analysis.carry.translation", "res://assets/data/calibration/shot_diff_analysis.carry.translation", "res://assets/data/calibration/shot_diff_analysis.carry.translation", "res://assets/data/calibration/shot_diff_analysis.carry.translation", "res://assets/data/calibration/shot_diff_analysis.status.translation"] +dest_files=["res://assets/data/calibration/shot_diff_analysis.speed.translation", "res://assets/data/calibration/shot_diff_analysis.vla.translation", "res://assets/data/calibration/shot_diff_analysis.hla.translation", "res://assets/data/calibration/shot_diff_analysis.total.translation", "res://assets/data/calibration/shot_diff_analysis.spin.translation", "res://assets/data/calibration/shot_diff_analysis.launch.translation", "res://assets/data/calibration/shot_diff_analysis.carry.translation", "res://assets/data/calibration/shot_diff_analysis.en.translation", "res://assets/data/calibration/shot_diff_analysis.flightscope.translation", "res://assets/data/calibration/shot_diff_analysis.en.translation", "res://assets/data/calibration/shot_diff_analysis.en.translation", "res://assets/data/calibration/shot_diff_analysis.en.translation", "res://assets/data/calibration/shot_diff_analysis.en.translation", "res://assets/data/calibration/shot_diff_analysis.flightscope.translation", "res://assets/data/calibration/shot_diff_analysis.en.translation", "res://assets/data/calibration/shot_diff_analysis.en.translation", "res://assets/data/calibration/shot_diff_analysis.rollout.translation", "res://assets/data/calibration/shot_diff_analysis.en.translation", "res://assets/data/calibration/shot_diff_analysis.en.translation", "res://assets/data/calibration/shot_diff_analysis.flightscope.translation", "res://assets/data/calibration/shot_diff_analysis.en.translation", "res://assets/data/calibration/shot_diff_analysis.en.translation", "res://assets/data/calibration/shot_diff_analysis.en.translation", "res://assets/data/calibration/shot_diff_analysis.en.translation", "res://assets/data/calibration/shot_diff_analysis.carry.translation", "res://assets/data/calibration/shot_diff_analysis.en.translation"] [params] diff --git a/assets/data/openfairway_accuracy_summary_20260313_2006.json b/assets/data/openfairway_accuracy_summary_20260313_2006.json deleted file mode 100644 index 0291e6f..0000000 --- a/assets/data/openfairway_accuracy_summary_20260313_2006.json +++ /dev/null @@ -1,58 +0,0 @@ -{ - "timestamp": "2026-03-13T20:06", - "total_shots": 102, - "shots_with_reference": 99, - "carry_accuracy": { - "avg_error_yd": 1.2, - "avg_off_yd": 3.6, - "typical_off_yd": 2.8, - "consistency_yd": 4.5, - "worst_off_yd": 18.0, - "within_pct_yd": { - "1": 20.2, - "2": 40.4, - "3": 51.5, - "5": 71.7, - "7": 88.9, - "10": 97.0, - "15": 99.0, - "20": 100.0 - } - }, - "total_accuracy": { - "avg_error_yd": 2.7, - "avg_off_yd": 11.5, - "typical_off_yd": 10.7, - "consistency_yd": 14.2, - "worst_off_yd": 37.0, - "within_pct_yd": { - "1": 5.1, - "2": 15.2, - "3": 23.2, - "5": 34.3, - "7": 40.4, - "10": 48.5, - "15": 66.7, - "20": 78.8 - } - }, - "apex_accuracy": { - "avg_error_ft": -0.1, - "avg_off_ft": 3.6, - "typical_off_ft": 3.1, - "consistency_ft": 5.2, - "worst_off_ft": 24.2, - "within_pct_ft": { - "1": 25.3, - "2": 43.4, - "3": 49.5, - "5": 77.8, - "7": 88.9, - "10": 96.0, - "13": 97.0, - "15": 98.0, - "20": 98.0, - "50": 100.0 - } - } -} diff --git a/assets/data/openfairway_accuracy_summary_20260313_2310.json b/assets/data/openfairway_accuracy_summary_20260313_2310.json deleted file mode 100644 index 5fc47ba..0000000 --- a/assets/data/openfairway_accuracy_summary_20260313_2310.json +++ /dev/null @@ -1,92 +0,0 @@ -{ - "timestamp": "2026-03-13T23:10", - "total_shots": 102, - "shots_with_reference": 99, - "priority_gates": { - "short_carry_lt_115yd": { - "shots": 47, - "carry_accuracy": { - "avg_error_yd": -0.0, - "avg_off_yd": 0.3, - "typical_off_yd": 0.0, - "consistency_yd": 0.5, - "worst_off_yd": 1.2, - "within_pct_yd": { - "0.5": 76.6, - "1": 87.2, - "2": 100.0, - "3": 100.0 - } - } - }, - "long_carry_gt_200yd": { - "shots": 1, - "carry_accuracy": { - "avg_error_yd": 1.0, - "avg_off_yd": 1.0, - "typical_off_yd": 1.0, - "consistency_yd": 0.0, - "worst_off_yd": 1.0, - "within_pct_yd": { - "3": 100.0, - "5": 100.0, - "7": 100.0, - "10": 100.0 - } - } - } - }, - "carry_accuracy": { - "avg_error_yd": 1.9, - "avg_off_yd": 2.4, - "typical_off_yd": 1.0, - "consistency_yd": 3.6, - "worst_off_yd": 18.0, - "within_pct_yd": { - "1": 50.5, - "2": 66.7, - "3": 69.7, - "5": 77.8, - "7": 90.9, - "10": 97.0, - "15": 99.0, - "20": 100.0 - } - }, - "total_accuracy": { - "avg_error_yd": 2.7, - "avg_off_yd": 11.5, - "typical_off_yd": 10.7, - "consistency_yd": 14.2, - "worst_off_yd": 37.0, - "within_pct_yd": { - "1": 5.1, - "2": 15.2, - "3": 23.2, - "5": 34.3, - "7": 40.4, - "10": 48.5, - "15": 66.7, - "20": 78.8 - } - }, - "apex_accuracy": { - "avg_error_ft": -0.1, - "avg_off_ft": 3.6, - "typical_off_ft": 3.1, - "consistency_ft": 5.2, - "worst_off_ft": 24.2, - "within_pct_ft": { - "1": 25.3, - "2": 43.4, - "3": 49.5, - "5": 77.8, - "7": 88.9, - "10": 96.0, - "13": 97.0, - "15": 98.0, - "20": 98.0, - "50": 100.0 - } - } -} diff --git a/assets/data/openfairway_accuracy_summary_20260313_2332.json b/assets/data/openfairway_accuracy_summary_20260313_2332.json deleted file mode 100644 index 9c99704..0000000 --- a/assets/data/openfairway_accuracy_summary_20260313_2332.json +++ /dev/null @@ -1,125 +0,0 @@ -{ - "timestamp": "2026-03-13T23:32", - "total_shots": 102, - "shots_with_reference": 99, - "priority_gates": { - "short_carry_lt_115yd": { - "shots": 47, - "carry_accuracy": { - "avg_error_yd": -0.0, - "avg_off_yd": 0.3, - "typical_off_yd": 0.0, - "consistency_yd": 0.5, - "worst_off_yd": 1.2, - "within_pct_yd": { - "0.5": 76.6, - "1": 87.2, - "2": 100.0, - "3": 100.0 - } - } - }, - "carry_115_150yd": { - "shots": 30, - "carry_accuracy": { - "avg_error_yd": 0.3, - "avg_off_yd": 1.8, - "typical_off_yd": 1.6, - "consistency_yd": 2.2, - "worst_off_yd": 5.4, - "within_pct_yd": { - "1": 26.7, - "2": 63.3, - "3": 90.0, - "5": 96.7 - } - } - }, - "carry_150_180yd": { - "shots": 16, - "carry_accuracy": { - "avg_error_yd": 1.5, - "avg_off_yd": 3.4, - "typical_off_yd": 3.1, - "consistency_yd": 4.1, - "worst_off_yd": 11.0, - "within_pct_yd": { - "3": 50.0, - "5": 75.0, - "6": 93.8, - "7": 93.8, - "10": 93.8 - } - } - }, - "long_carry_gt_200yd": { - "shots": 1, - "carry_accuracy": { - "avg_error_yd": 1.0, - "avg_off_yd": 1.0, - "typical_off_yd": 1.0, - "consistency_yd": 0.0, - "worst_off_yd": 1.0, - "within_pct_yd": { - "3": 100.0, - "5": 100.0, - "7": 100.0, - "10": 100.0 - } - } - } - }, - "carry_accuracy": { - "avg_error_yd": 0.3, - "avg_off_yd": 1.3, - "typical_off_yd": 0.7, - "consistency_yd": 2.2, - "worst_off_yd": 11.0, - "within_pct_yd": { - "1": 58.6, - "2": 75.8, - "3": 87.9, - "5": 94.9, - "7": 99.0, - "10": 99.0, - "15": 100.0, - "20": 100.0 - } - }, - "total_accuracy": { - "avg_error_yd": 2.7, - "avg_off_yd": 11.5, - "typical_off_yd": 10.7, - "consistency_yd": 14.2, - "worst_off_yd": 37.0, - "within_pct_yd": { - "1": 5.1, - "2": 15.2, - "3": 23.2, - "5": 34.3, - "7": 40.4, - "10": 48.5, - "15": 66.7, - "20": 78.8 - } - }, - "apex_accuracy": { - "avg_error_ft": -0.1, - "avg_off_ft": 3.6, - "typical_off_ft": 3.1, - "consistency_ft": 5.2, - "worst_off_ft": 24.2, - "within_pct_ft": { - "1": 25.3, - "2": 43.4, - "3": 49.5, - "5": 77.8, - "7": 88.9, - "10": 96.0, - "13": 97.0, - "15": 98.0, - "20": 98.0, - "50": 100.0 - } - } -} diff --git a/assets/data/openfairway_accuracy_summary_20260314_0146.json b/assets/data/openfairway_accuracy_summary_20260314_0146.json new file mode 100644 index 0000000..aee5cf8 --- /dev/null +++ b/assets/data/openfairway_accuracy_summary_20260314_0146.json @@ -0,0 +1,125 @@ +{ + "timestamp": "2026-03-14T01:46", + "total_shots": 136, + "shots_with_reference": 129, + "priority_gates": { + "short_carry_lt_115yd": { + "shots": 69, + "carry_accuracy": { + "avg_error_yd": -2.2, + "avg_off_yd": 3.1, + "typical_off_yd": 2.6, + "consistency_yd": 3.1, + "worst_off_yd": 9.1, + "within_pct_yd": { + "0.5": 11.6, + "1": 23.2, + "2": 37.7, + "3": 62.3 + } + } + }, + "carry_115_150yd": { + "shots": 35, + "carry_accuracy": { + "avg_error_yd": 2.0, + "avg_off_yd": 3.0, + "typical_off_yd": 2.3, + "consistency_yd": 3.3, + "worst_off_yd": 9.2, + "within_pct_yd": { + "1": 25.7, + "2": 45.7, + "3": 54.3, + "5": 80.0 + } + } + }, + "carry_150_180yd": { + "shots": 19, + "carry_accuracy": { + "avg_error_yd": 4.6, + "avg_off_yd": 5.2, + "typical_off_yd": 4.5, + "consistency_yd": 4.7, + "worst_off_yd": 17.0, + "within_pct_yd": { + "3": 21.1, + "5": 63.2, + "6": 78.9, + "7": 84.2, + "10": 84.2 + } + } + }, + "long_carry_gt_200yd": { + "shots": 1, + "carry_accuracy": { + "avg_error_yd": -0.4, + "avg_off_yd": 0.4, + "typical_off_yd": 0.4, + "consistency_yd": 0.0, + "worst_off_yd": 0.4, + "within_pct_yd": { + "3": 100.0, + "5": 100.0, + "7": 100.0, + "10": 100.0 + } + } + } + }, + "carry_accuracy": { + "avg_error_yd": 0.2, + "avg_off_yd": 3.4, + "typical_off_yd": 2.9, + "consistency_yd": 4.4, + "worst_off_yd": 17.0, + "within_pct_yd": { + "1": 21.7, + "2": 35.7, + "3": 52.7, + "5": 76.7, + "7": 92.2, + "10": 97.7, + "15": 99.2, + "20": 100.0 + } + }, + "total_accuracy": { + "avg_error_yd": 2.3, + "avg_off_yd": 10.2, + "typical_off_yd": 8.8, + "consistency_yd": 12.7, + "worst_off_yd": 34.0, + "within_pct_yd": { + "1": 6.2, + "2": 17.8, + "3": 24.8, + "5": 36.4, + "7": 43.4, + "10": 52.7, + "15": 75.2, + "20": 84.5 + } + }, + "apex_accuracy": { + "avg_error_ft": -0.7, + "avg_off_ft": 3.5, + "typical_off_ft": 3.0, + "consistency_ft": 4.9, + "worst_off_ft": 23.5, + "within_pct_ft": { + "1": 23.3, + "2": 42.6, + "3": 50.4, + "5": 78.3, + "7": 89.9, + "10": 96.9, + "13": 97.7, + "15": 98.4, + "20": 98.4, + "50": 100.0 + } + } +} diff --git a/assets/data/openfairway_accuracy_summary_20260314_0225.json b/assets/data/openfairway_accuracy_summary_20260314_0225.json new file mode 100644 index 0000000..a7930f1 --- /dev/null +++ b/assets/data/openfairway_accuracy_summary_20260314_0225.json @@ -0,0 +1,302 @@ +{ + "timestamp": "2026-03-14T02:25", + "total_shots": 136, + "shots_with_reference": 129, + "priority_gates": { + "short_carry_lt_115yd": { + "shots": 69, + "carry_accuracy": { + "avg_error_yd": -2.2, + "avg_off_yd": 3.1, + "typical_off_yd": 2.6, + "consistency_yd": 3.1, + "worst_off_yd": 9.1, + "within_pct_yd": { + "0.5": 11.6, + "1": 23.2, + "2": 37.7, + "3": 62.3 + } + } + }, + "carry_115_150yd": { + "shots": 35, + "carry_accuracy": { + "avg_error_yd": 2.0, + "avg_off_yd": 3.0, + "typical_off_yd": 2.3, + "consistency_yd": 3.3, + "worst_off_yd": 9.2, + "within_pct_yd": { + "1": 25.7, + "2": 45.7, + "3": 54.3, + "5": 80.0 + } + } + }, + "carry_150_180yd": { + "shots": 19, + "carry_accuracy": { + "avg_error_yd": 4.6, + "avg_off_yd": 5.2, + "typical_off_yd": 4.5, + "consistency_yd": 4.7, + "worst_off_yd": 17.0, + "within_pct_yd": { + "3": 21.1, + "5": 63.2, + "6": 78.9, + "7": 84.2, + "10": 84.2 + } + } + }, + "long_carry_gt_200yd": { + "shots": 1, + "carry_accuracy": { + "avg_error_yd": -0.4, + "avg_off_yd": 0.4, + "typical_off_yd": 0.4, + "consistency_yd": 0.0, + "worst_off_yd": 0.4, + "within_pct_yd": { + "3": 100.0, + "5": 100.0, + "7": 100.0, + "10": 100.0, + "15": 100.0 + } + } + } + }, + "carry_accuracy": { + "avg_error_yd": 0.2, + "avg_off_yd": 3.4, + "typical_off_yd": 2.9, + "consistency_yd": 4.4, + "worst_off_yd": 17.0, + "within_pct_yd": { + "1": 21.7, + "2": 35.7, + "3": 52.7, + "5": 76.7, + "7": 92.2, + "10": 97.7, + "15": 99.2, + "20": 100.0 + } + }, + "total_accuracy": { + "avg_error_yd": 2.3, + "avg_off_yd": 10.2, + "typical_off_yd": 8.8, + "consistency_yd": 12.7, + "worst_off_yd": 34.0, + "within_pct_yd": { + "1": 6.2, + "2": 17.8, + "3": 24.8, + "5": 36.4, + "7": 43.4, + "10": 52.7, + "15": 75.2, + "20": 84.5 + } + }, + "apex_accuracy": { + "avg_error_ft": -0.7, + "avg_off_ft": 3.5, + "typical_off_ft": 3.0, + "consistency_ft": 4.9, + "worst_off_ft": 23.5, + "within_pct_ft": { + "1": 23.3, + "2": 42.6, + "3": 50.4, + "5": 78.3, + "7": 89.9, + "10": 96.9, + "13": 97.7, + "15": 98.4, + "20": 98.4, + "50": 100.0 + } + }, + "physics_only_priority_gates": { + "short_carry_lt_115yd": { + "shots": 69, + "carry_accuracy": { + "avg_error_yd": -2.2, + "avg_off_yd": 3.1, + "typical_off_yd": 2.6, + "consistency_yd": 3.1, + "worst_off_yd": 9.1, + "within_pct_yd": { + "0.5": 11.6, + "1": 23.2, + "2": 37.7, + "3": 62.3 + } + } + }, + "carry_115_150yd": { + "shots": 35, + "carry_accuracy": { + "avg_error_yd": 2.0, + "avg_off_yd": 3.0, + "typical_off_yd": 2.3, + "consistency_yd": 3.3, + "worst_off_yd": 9.2, + "within_pct_yd": { + "1": 25.7, + "2": 45.7, + "3": 54.3, + "5": 80.0 + } + } + }, + "carry_150_180yd": { + "shots": 19, + "carry_accuracy": { + "avg_error_yd": 4.6, + "avg_off_yd": 5.2, + "typical_off_yd": 4.5, + "consistency_yd": 4.7, + "worst_off_yd": 17.0, + "within_pct_yd": { + "3": 21.1, + "5": 63.2, + "6": 78.9, + "7": 84.2, + "10": 84.2 + } + } + }, + "long_carry_gt_200yd": { + "shots": 1, + "carry_accuracy": { + "avg_error_yd": -0.4, + "avg_off_yd": 0.4, + "typical_off_yd": 0.4, + "consistency_yd": 0.0, + "worst_off_yd": 0.4, + "within_pct_yd": { + "3": 100.0, + "5": 100.0, + "7": 100.0, + "10": 100.0, + "15": 100.0 + } + } + } + }, + "objectives": { + "physics_only": { + "shots": 129, + "within_3yd_pct": 52.7, + "residual_outliers_gt_window_target": 73 + }, + "short_shot_priority": { + "shots": 69, + "goal_within_1yd_pct": 80.0, + "actual_within_1yd_pct": 23.2, + "actual_within_0.5yd_pct": 11.6, + "actual_within_3yd_pct": 62.3 + }, + "residual_regime_candidates": { + "count": 73, + "short_count": 53, + "by_window": { + "<115": 53, + "115-150": 16, + "150-180": 4, + "180-200": 0, + ">200": 0 + } + } + }, + "critical_baseline": { + "path": "/home/jesher/Code/Github/digitalhand/openfairway/assets/data/openfairway_critical_carry_20260314_0225.csv", + "shots": 20, + "tracked_shots": 20, + "missing_shots": [], + "improved": 0, + "regressed": 0, + "unchanged": 20, + "within_target_now": 4, + "within_target_now_pct": 20.0, + "top_remaining_outliers": [ + { + "shot_name": "s3_shot_driver_58", + "current_abs_yd": 17.0, + "baseline_abs_yd": 17.0, + "target_abs_yd": 6.0, + "carry_window": "150-180" + }, + { + "shot_name": "wood1", + "current_abs_yd": 11.9, + "baseline_abs_yd": 11.9, + "target_abs_yd": 6.0, + "carry_window": "150-180" + }, + { + "shot_name": "s3_shot_driver_51", + "current_abs_yd": 10.4, + "baseline_abs_yd": 10.4, + "target_abs_yd": 6.0, + "carry_window": "150-180" + }, + { + "shot_name": "s4_shot_3w_33", + "current_abs_yd": 9.2, + "baseline_abs_yd": 9.2, + "target_abs_yd": 3.0, + "carry_window": "115-150" + }, + { + "shot_name": "bump_and_run", + "current_abs_yd": 9.1, + "baseline_abs_yd": 9.1, + "target_abs_yd": 1.0, + "carry_window": "<115" + }, + { + "shot_name": "s3_shot_9i_2", + "current_abs_yd": 8.2, + "baseline_abs_yd": 8.2, + "target_abs_yd": 1.0, + "carry_window": "<115" + }, + { + "shot_name": "s3_shot_driver_52", + "current_abs_yd": 8.2, + "baseline_abs_yd": 8.2, + "target_abs_yd": 3.0, + "carry_window": "115-150" + }, + { + "shot_name": "s4_shot_pw_6", + "current_abs_yd": 8.2, + "baseline_abs_yd": 8.2, + "target_abs_yd": 1.0, + "carry_window": "<115" + }, + { + "shot_name": "s4_shot_pw_1", + "current_abs_yd": 7.7, + "baseline_abs_yd": 7.7, + "target_abs_yd": 1.0, + "carry_window": "<115" + }, + { + "shot_name": "driver2", + "current_abs_yd": 7.6, + "baseline_abs_yd": 7.6, + "target_abs_yd": 10.0, + "carry_window": "180-200" + } + ] + } +} diff --git a/assets/data/openfairway_accuracy_summary_20260314_0226.json b/assets/data/openfairway_accuracy_summary_20260314_0226.json new file mode 100644 index 0000000..f2bca20 --- /dev/null +++ b/assets/data/openfairway_accuracy_summary_20260314_0226.json @@ -0,0 +1,302 @@ +{ + "timestamp": "2026-03-14T02:26", + "total_shots": 136, + "shots_with_reference": 129, + "priority_gates": { + "short_carry_lt_115yd": { + "shots": 69, + "carry_accuracy": { + "avg_error_yd": -2.2, + "avg_off_yd": 3.1, + "typical_off_yd": 2.6, + "consistency_yd": 3.1, + "worst_off_yd": 9.1, + "within_pct_yd": { + "0.5": 11.6, + "1": 23.2, + "2": 37.7, + "3": 62.3 + } + } + }, + "carry_115_150yd": { + "shots": 35, + "carry_accuracy": { + "avg_error_yd": 2.0, + "avg_off_yd": 3.0, + "typical_off_yd": 2.3, + "consistency_yd": 3.3, + "worst_off_yd": 9.2, + "within_pct_yd": { + "1": 25.7, + "2": 45.7, + "3": 54.3, + "5": 80.0 + } + } + }, + "carry_150_180yd": { + "shots": 19, + "carry_accuracy": { + "avg_error_yd": 4.6, + "avg_off_yd": 5.2, + "typical_off_yd": 4.5, + "consistency_yd": 4.7, + "worst_off_yd": 17.0, + "within_pct_yd": { + "3": 21.1, + "5": 63.2, + "6": 78.9, + "7": 84.2, + "10": 84.2 + } + } + }, + "long_carry_gt_200yd": { + "shots": 1, + "carry_accuracy": { + "avg_error_yd": -0.4, + "avg_off_yd": 0.4, + "typical_off_yd": 0.4, + "consistency_yd": 0.0, + "worst_off_yd": 0.4, + "within_pct_yd": { + "3": 100.0, + "5": 100.0, + "7": 100.0, + "10": 100.0, + "15": 100.0 + } + } + } + }, + "carry_accuracy": { + "avg_error_yd": 0.2, + "avg_off_yd": 3.4, + "typical_off_yd": 2.9, + "consistency_yd": 4.4, + "worst_off_yd": 17.0, + "within_pct_yd": { + "1": 21.7, + "2": 35.7, + "3": 52.7, + "5": 76.7, + "7": 92.2, + "10": 97.7, + "15": 99.2, + "20": 100.0 + } + }, + "total_accuracy": { + "avg_error_yd": 2.3, + "avg_off_yd": 10.2, + "typical_off_yd": 8.8, + "consistency_yd": 12.7, + "worst_off_yd": 34.0, + "within_pct_yd": { + "1": 6.2, + "2": 17.8, + "3": 24.8, + "5": 36.4, + "7": 43.4, + "10": 52.7, + "15": 75.2, + "20": 84.5 + } + }, + "apex_accuracy": { + "avg_error_ft": -0.7, + "avg_off_ft": 3.5, + "typical_off_ft": 3.0, + "consistency_ft": 4.9, + "worst_off_ft": 23.5, + "within_pct_ft": { + "1": 23.3, + "2": 42.6, + "3": 50.4, + "5": 78.3, + "7": 89.9, + "10": 96.9, + "13": 97.7, + "15": 98.4, + "20": 98.4, + "50": 100.0 + } + }, + "physics_only_priority_gates": { + "short_carry_lt_115yd": { + "shots": 69, + "carry_accuracy": { + "avg_error_yd": -2.2, + "avg_off_yd": 3.1, + "typical_off_yd": 2.6, + "consistency_yd": 3.1, + "worst_off_yd": 9.1, + "within_pct_yd": { + "0.5": 11.6, + "1": 23.2, + "2": 37.7, + "3": 62.3 + } + } + }, + "carry_115_150yd": { + "shots": 35, + "carry_accuracy": { + "avg_error_yd": 2.0, + "avg_off_yd": 3.0, + "typical_off_yd": 2.3, + "consistency_yd": 3.3, + "worst_off_yd": 9.2, + "within_pct_yd": { + "1": 25.7, + "2": 45.7, + "3": 54.3, + "5": 80.0 + } + } + }, + "carry_150_180yd": { + "shots": 19, + "carry_accuracy": { + "avg_error_yd": 4.6, + "avg_off_yd": 5.2, + "typical_off_yd": 4.5, + "consistency_yd": 4.7, + "worst_off_yd": 17.0, + "within_pct_yd": { + "3": 21.1, + "5": 63.2, + "6": 78.9, + "7": 84.2, + "10": 84.2 + } + } + }, + "long_carry_gt_200yd": { + "shots": 1, + "carry_accuracy": { + "avg_error_yd": -0.4, + "avg_off_yd": 0.4, + "typical_off_yd": 0.4, + "consistency_yd": 0.0, + "worst_off_yd": 0.4, + "within_pct_yd": { + "3": 100.0, + "5": 100.0, + "7": 100.0, + "10": 100.0, + "15": 100.0 + } + } + } + }, + "objectives": { + "physics_only": { + "shots": 129, + "within_3yd_pct": 52.7, + "residual_outliers_gt_window_target": 73 + }, + "short_shot_priority": { + "shots": 69, + "goal_within_1yd_pct": 80.0, + "actual_within_1yd_pct": 23.2, + "actual_within_0.5yd_pct": 11.6, + "actual_within_3yd_pct": 62.3 + }, + "residual_regime_candidates": { + "count": 73, + "short_count": 53, + "by_window": { + "<115": 53, + "115-150": 16, + "150-180": 4, + "180-200": 0, + ">200": 0 + } + } + }, + "critical_baseline": { + "path": "/home/jesher/Code/Github/digitalhand/openfairway/assets/data/openfairway_critical_carry_20260314_0225.csv", + "shots": 20, + "tracked_shots": 20, + "missing_shots": [], + "improved": 0, + "regressed": 0, + "unchanged": 20, + "within_target_now": 4, + "within_target_now_pct": 20.0, + "top_remaining_outliers": [ + { + "shot_name": "s3_shot_driver_58", + "current_abs_yd": 17.0, + "baseline_abs_yd": 17.0, + "target_abs_yd": 6.0, + "carry_window": "150-180" + }, + { + "shot_name": "wood1", + "current_abs_yd": 11.9, + "baseline_abs_yd": 11.9, + "target_abs_yd": 6.0, + "carry_window": "150-180" + }, + { + "shot_name": "s3_shot_driver_51", + "current_abs_yd": 10.4, + "baseline_abs_yd": 10.4, + "target_abs_yd": 6.0, + "carry_window": "150-180" + }, + { + "shot_name": "s4_shot_3w_33", + "current_abs_yd": 9.2, + "baseline_abs_yd": 9.2, + "target_abs_yd": 3.0, + "carry_window": "115-150" + }, + { + "shot_name": "bump_and_run", + "current_abs_yd": 9.1, + "baseline_abs_yd": 9.1, + "target_abs_yd": 1.0, + "carry_window": "<115" + }, + { + "shot_name": "s3_shot_9i_2", + "current_abs_yd": 8.2, + "baseline_abs_yd": 8.2, + "target_abs_yd": 1.0, + "carry_window": "<115" + }, + { + "shot_name": "s3_shot_driver_52", + "current_abs_yd": 8.2, + "baseline_abs_yd": 8.2, + "target_abs_yd": 3.0, + "carry_window": "115-150" + }, + { + "shot_name": "s4_shot_pw_6", + "current_abs_yd": 8.2, + "baseline_abs_yd": 8.2, + "target_abs_yd": 1.0, + "carry_window": "<115" + }, + { + "shot_name": "s4_shot_pw_1", + "current_abs_yd": 7.7, + "baseline_abs_yd": 7.7, + "target_abs_yd": 1.0, + "carry_window": "<115" + }, + { + "shot_name": "driver2", + "current_abs_yd": 7.6, + "baseline_abs_yd": 7.6, + "target_abs_yd": 10.0, + "carry_window": "180-200" + } + ] + } +} diff --git a/assets/data/openfairway_accuracy_summary_20260314_0315.json b/assets/data/openfairway_accuracy_summary_20260314_0315.json new file mode 100644 index 0000000..f311ace --- /dev/null +++ b/assets/data/openfairway_accuracy_summary_20260314_0315.json @@ -0,0 +1,302 @@ +{ + "timestamp": "2026-03-14T03:15", + "total_shots": 136, + "shots_with_reference": 129, + "priority_gates": { + "short_carry_lt_115yd": { + "shots": 69, + "carry_accuracy": { + "avg_error_yd": -0.9, + "avg_off_yd": 2.1, + "typical_off_yd": 1.9, + "consistency_yd": 2.5, + "worst_off_yd": 6.3, + "within_pct_yd": { + "0.5": 13.0, + "1": 29.0, + "2": 53.6, + "3": 75.4 + } + } + }, + "carry_115_150yd": { + "shots": 35, + "carry_accuracy": { + "avg_error_yd": 1.0, + "avg_off_yd": 2.4, + "typical_off_yd": 2.0, + "consistency_yd": 2.8, + "worst_off_yd": 6.9, + "within_pct_yd": { + "1": 28.6, + "2": 54.3, + "3": 68.6, + "5": 85.7 + } + } + }, + "carry_150_180yd": { + "shots": 19, + "carry_accuracy": { + "avg_error_yd": 1.3, + "avg_off_yd": 2.8, + "typical_off_yd": 1.3, + "consistency_yd": 4.2, + "worst_off_yd": 11.9, + "within_pct_yd": { + "3": 68.4, + "5": 84.2, + "6": 84.2, + "7": 84.2, + "10": 94.7 + } + } + }, + "long_carry_gt_200yd": { + "shots": 1, + "carry_accuracy": { + "avg_error_yd": -6.1, + "avg_off_yd": 6.1, + "typical_off_yd": 6.1, + "consistency_yd": 0.0, + "worst_off_yd": 6.1, + "within_pct_yd": { + "3": 0.0, + "5": 0.0, + "7": 100.0, + "10": 100.0, + "15": 100.0 + } + } + } + }, + "carry_accuracy": { + "avg_error_yd": -0.0, + "avg_off_yd": 2.3, + "typical_off_yd": 1.8, + "consistency_yd": 3.1, + "worst_off_yd": 11.9, + "within_pct_yd": { + "1": 32.6, + "2": 55.8, + "3": 72.9, + "5": 90.7, + "7": 97.7, + "10": 99.2, + "15": 100.0, + "20": 100.0 + } + }, + "total_accuracy": { + "avg_error_yd": 1.8, + "avg_off_yd": 9.8, + "typical_off_yd": 8.4, + "consistency_yd": 12.1, + "worst_off_yd": 28.4, + "within_pct_yd": { + "1": 7.0, + "2": 17.8, + "3": 23.3, + "5": 34.1, + "7": 41.1, + "10": 56.6, + "15": 78.3, + "20": 87.6 + } + }, + "apex_accuracy": { + "avg_error_ft": -0.9, + "avg_off_ft": 3.5, + "typical_off_ft": 3.0, + "consistency_ft": 4.9, + "worst_off_ft": 23.5, + "within_pct_ft": { + "1": 27.1, + "2": 40.3, + "3": 54.3, + "5": 76.7, + "7": 87.6, + "10": 96.1, + "13": 97.7, + "15": 98.4, + "20": 99.2, + "50": 100.0 + } + }, + "physics_only_priority_gates": { + "short_carry_lt_115yd": { + "shots": 69, + "carry_accuracy": { + "avg_error_yd": -0.9, + "avg_off_yd": 2.1, + "typical_off_yd": 1.9, + "consistency_yd": 2.5, + "worst_off_yd": 6.3, + "within_pct_yd": { + "0.5": 13.0, + "1": 29.0, + "2": 53.6, + "3": 75.4 + } + } + }, + "carry_115_150yd": { + "shots": 35, + "carry_accuracy": { + "avg_error_yd": 1.0, + "avg_off_yd": 2.4, + "typical_off_yd": 2.0, + "consistency_yd": 2.8, + "worst_off_yd": 6.9, + "within_pct_yd": { + "1": 28.6, + "2": 54.3, + "3": 68.6, + "5": 85.7 + } + } + }, + "carry_150_180yd": { + "shots": 19, + "carry_accuracy": { + "avg_error_yd": 1.3, + "avg_off_yd": 2.8, + "typical_off_yd": 1.3, + "consistency_yd": 4.2, + "worst_off_yd": 11.9, + "within_pct_yd": { + "3": 68.4, + "5": 84.2, + "6": 84.2, + "7": 84.2, + "10": 94.7 + } + } + }, + "long_carry_gt_200yd": { + "shots": 1, + "carry_accuracy": { + "avg_error_yd": -6.1, + "avg_off_yd": 6.1, + "typical_off_yd": 6.1, + "consistency_yd": 0.0, + "worst_off_yd": 6.1, + "within_pct_yd": { + "3": 0.0, + "5": 0.0, + "7": 100.0, + "10": 100.0, + "15": 100.0 + } + } + } + }, + "objectives": { + "physics_only": { + "shots": 129, + "within_3yd_pct": 72.9, + "residual_outliers_gt_window_target": 63 + }, + "short_shot_priority": { + "shots": 69, + "goal_within_1yd_pct": 80.0, + "actual_within_1yd_pct": 29.0, + "actual_within_0.5yd_pct": 13.0, + "actual_within_3yd_pct": 75.4 + }, + "residual_regime_candidates": { + "count": 63, + "short_count": 49, + "by_window": { + "<115": 49, + "115-150": 11, + "150-180": 3, + "180-200": 0, + ">200": 0 + } + } + }, + "critical_baseline": { + "path": "/home/jesher/Code/Github/digitalhand/openfairway/assets/data/openfairway_critical_carry_20260314_0226.csv", + "shots": 129, + "tracked_shots": 129, + "missing_shots": [], + "improved": 52, + "regressed": 7, + "unchanged": 70, + "within_target_now": 66, + "within_target_now_pct": 51.2, + "top_remaining_outliers": [ + { + "shot_name": "wood1", + "current_abs_yd": 11.9, + "baseline_abs_yd": 11.9, + "target_abs_yd": 6.0, + "carry_window": "150-180" + }, + { + "shot_name": "s3_shot_driver_58", + "current_abs_yd": 9.3, + "baseline_abs_yd": 17.0, + "target_abs_yd": 6.0, + "carry_window": "150-180" + }, + { + "shot_name": "s3_shot_driver_57", + "current_abs_yd": 8.9, + "baseline_abs_yd": 5.8, + "target_abs_yd": 6.0, + "carry_window": "150-180" + }, + { + "shot_name": "s3_shot_3w_24", + "current_abs_yd": 6.9, + "baseline_abs_yd": 6.9, + "target_abs_yd": 3.0, + "carry_window": "115-150" + }, + { + "shot_name": "s4_shot_3w_33", + "current_abs_yd": 6.4, + "baseline_abs_yd": 9.2, + "target_abs_yd": 3.0, + "carry_window": "115-150" + }, + { + "shot_name": "s4_shot_5i_29", + "current_abs_yd": 6.3, + "baseline_abs_yd": 6.3, + "target_abs_yd": 1.0, + "carry_window": "<115" + }, + { + "shot_name": "bump_and_run", + "current_abs_yd": 6.1, + "baseline_abs_yd": 9.1, + "target_abs_yd": 1.0, + "carry_window": "<115" + }, + { + "shot_name": "s3_shot_6i_47", + "current_abs_yd": 6.1, + "baseline_abs_yd": 6.1, + "target_abs_yd": 3.0, + "carry_window": "115-150" + }, + { + "shot_name": "drive_test_shot", + "current_abs_yd": 6.1, + "baseline_abs_yd": 0.4, + "target_abs_yd": 15.0, + "carry_window": ">200" + }, + { + "shot_name": "s3_shot_6i_43", + "current_abs_yd": 5.6, + "baseline_abs_yd": 5.6, + "target_abs_yd": 3.0, + "carry_window": "115-150" + } + ] + } +} diff --git a/assets/data/openfairway_accuracy_summary_20260314_0357.json b/assets/data/openfairway_accuracy_summary_20260314_0357.json new file mode 100644 index 0000000..607d91a --- /dev/null +++ b/assets/data/openfairway_accuracy_summary_20260314_0357.json @@ -0,0 +1,302 @@ +{ + "timestamp": "2026-03-14T03:57", + "total_shots": 136, + "shots_with_reference": 129, + "priority_gates": { + "short_carry_lt_115yd": { + "shots": 69, + "carry_accuracy": { + "avg_error_yd": -0.5, + "avg_off_yd": 1.7, + "typical_off_yd": 1.5, + "consistency_yd": 2.2, + "worst_off_yd": 6.3, + "within_pct_yd": { + "0.5": 15.9, + "1": 34.8, + "2": 69.6, + "3": 85.5 + } + } + }, + "carry_115_150yd": { + "shots": 35, + "carry_accuracy": { + "avg_error_yd": 1.0, + "avg_off_yd": 2.1, + "typical_off_yd": 1.8, + "consistency_yd": 2.6, + "worst_off_yd": 6.4, + "within_pct_yd": { + "1": 34.3, + "2": 60.0, + "3": 71.4, + "5": 88.6 + } + } + }, + "carry_150_180yd": { + "shots": 19, + "carry_accuracy": { + "avg_error_yd": 1.4, + "avg_off_yd": 2.3, + "typical_off_yd": 1.0, + "consistency_yd": 3.6, + "worst_off_yd": 11.9, + "within_pct_yd": { + "3": 73.7, + "5": 89.5, + "6": 89.5, + "7": 89.5, + "10": 94.7 + } + } + }, + "long_carry_gt_200yd": { + "shots": 1, + "carry_accuracy": { + "avg_error_yd": 4.1, + "avg_off_yd": 4.1, + "typical_off_yd": 4.1, + "consistency_yd": 0.0, + "worst_off_yd": 4.1, + "within_pct_yd": { + "3": 0.0, + "5": 100.0, + "7": 100.0, + "10": 100.0, + "15": 100.0 + } + } + } + }, + "carry_accuracy": { + "avg_error_yd": 0.3, + "avg_off_yd": 1.9, + "typical_off_yd": 1.5, + "consistency_yd": 2.7, + "worst_off_yd": 11.9, + "within_pct_yd": { + "1": 38.0, + "2": 66.7, + "3": 79.8, + "5": 93.8, + "7": 98.4, + "10": 99.2, + "15": 100.0, + "20": 100.0 + } + }, + "total_accuracy": { + "avg_error_yd": 2.1, + "avg_off_yd": 9.9, + "typical_off_yd": 8.8, + "consistency_yd": 12.1, + "worst_off_yd": 28.0, + "within_pct_yd": { + "1": 7.8, + "2": 17.8, + "3": 24.0, + "5": 34.1, + "7": 39.5, + "10": 54.3, + "15": 76.7, + "20": 87.6 + } + }, + "apex_accuracy": { + "avg_error_ft": -0.8, + "avg_off_ft": 3.5, + "typical_off_ft": 3.0, + "consistency_ft": 4.9, + "worst_off_ft": 23.5, + "within_pct_ft": { + "1": 31.0, + "2": 41.9, + "3": 54.3, + "5": 76.0, + "7": 87.6, + "10": 96.1, + "13": 97.7, + "15": 98.4, + "20": 99.2, + "50": 100.0 + } + }, + "physics_only_priority_gates": { + "short_carry_lt_115yd": { + "shots": 69, + "carry_accuracy": { + "avg_error_yd": -0.5, + "avg_off_yd": 1.7, + "typical_off_yd": 1.5, + "consistency_yd": 2.2, + "worst_off_yd": 6.3, + "within_pct_yd": { + "0.5": 15.9, + "1": 34.8, + "2": 69.6, + "3": 85.5 + } + } + }, + "carry_115_150yd": { + "shots": 35, + "carry_accuracy": { + "avg_error_yd": 1.0, + "avg_off_yd": 2.1, + "typical_off_yd": 1.8, + "consistency_yd": 2.6, + "worst_off_yd": 6.4, + "within_pct_yd": { + "1": 34.3, + "2": 60.0, + "3": 71.4, + "5": 88.6 + } + } + }, + "carry_150_180yd": { + "shots": 19, + "carry_accuracy": { + "avg_error_yd": 1.4, + "avg_off_yd": 2.3, + "typical_off_yd": 1.0, + "consistency_yd": 3.6, + "worst_off_yd": 11.9, + "within_pct_yd": { + "3": 73.7, + "5": 89.5, + "6": 89.5, + "7": 89.5, + "10": 94.7 + } + } + }, + "long_carry_gt_200yd": { + "shots": 1, + "carry_accuracy": { + "avg_error_yd": 4.1, + "avg_off_yd": 4.1, + "typical_off_yd": 4.1, + "consistency_yd": 0.0, + "worst_off_yd": 4.1, + "within_pct_yd": { + "3": 0.0, + "5": 100.0, + "7": 100.0, + "10": 100.0, + "15": 100.0 + } + } + } + }, + "objectives": { + "physics_only": { + "shots": 129, + "within_3yd_pct": 79.8, + "residual_outliers_gt_window_target": 57 + }, + "short_shot_priority": { + "shots": 69, + "goal_within_1yd_pct": 80.0, + "actual_within_1yd_pct": 34.8, + "actual_within_0.5yd_pct": 15.9, + "actual_within_3yd_pct": 85.5 + }, + "residual_regime_candidates": { + "count": 57, + "short_count": 45, + "by_window": { + "<115": 45, + "115-150": 10, + "150-180": 2, + "180-200": 0, + ">200": 0 + } + } + }, + "critical_baseline": { + "path": "/home/jesher/Code/Github/digitalhand/openfairway/assets/data/openfairway_critical_carry_20260314_0315.csv", + "shots": 20, + "tracked_shots": 20, + "missing_shots": [], + "improved": 7, + "regressed": 0, + "unchanged": 13, + "within_target_now": 4, + "within_target_now_pct": 20.0, + "top_remaining_outliers": [ + { + "shot_name": "wood1", + "current_abs_yd": 11.9, + "baseline_abs_yd": 11.9, + "target_abs_yd": 6.0, + "carry_window": "150-180" + }, + { + "shot_name": "s3_shot_driver_58", + "current_abs_yd": 9.3, + "baseline_abs_yd": 9.3, + "target_abs_yd": 6.0, + "carry_window": "150-180" + }, + { + "shot_name": "s4_shot_3w_33", + "current_abs_yd": 6.4, + "baseline_abs_yd": 6.4, + "target_abs_yd": 3.0, + "carry_window": "115-150" + }, + { + "shot_name": "s4_shot_5i_29", + "current_abs_yd": 6.3, + "baseline_abs_yd": 6.3, + "target_abs_yd": 1.0, + "carry_window": "<115" + }, + { + "shot_name": "bump_and_run", + "current_abs_yd": 6.1, + "baseline_abs_yd": 6.1, + "target_abs_yd": 1.0, + "carry_window": "<115" + }, + { + "shot_name": "s3_shot_6i_47", + "current_abs_yd": 6.1, + "baseline_abs_yd": 6.1, + "target_abs_yd": 3.0, + "carry_window": "115-150" + }, + { + "shot_name": "s3_shot_6i_43", + "current_abs_yd": 5.6, + "baseline_abs_yd": 5.6, + "target_abs_yd": 3.0, + "carry_window": "115-150" + }, + { + "shot_name": "s3_shot_6i_48", + "current_abs_yd": 5.3, + "baseline_abs_yd": 5.3, + "target_abs_yd": 3.0, + "carry_window": "115-150" + }, + { + "shot_name": "s2_shot_21", + "current_abs_yd": 4.9, + "baseline_abs_yd": 4.9, + "target_abs_yd": 6.0, + "carry_window": "150-180" + }, + { + "shot_name": "5iron", + "current_abs_yd": 4.8, + "baseline_abs_yd": 4.8, + "target_abs_yd": 3.0, + "carry_window": "115-150" + } + ] + } +} diff --git a/assets/data/openfairway_critical_carry_20260313_2006.csv b/assets/data/openfairway_critical_carry_20260313_2006.csv deleted file mode 100644 index 0279cc8..0000000 --- a/assets/data/openfairway_critical_carry_20260313_2006.csv +++ /dev/null @@ -1,100 +0,0 @@ -shot_name,speed_mph,vla_deg,hla_deg,total_spin_rpm,spin_axis_deg,physics_carry_yd,flightscope_carry_yd,diff_carry_yd,physics_total_yd,flightscope_total_yd,diff_total_yd,rollout_physics_yd,rollout_flightscope_yd,diff_rollout_yd,physics_apex_ft,flightscope_apex_ft,diff_apex_ft,status -s3_shot_driver_58,119.3,23.6,2.5,7093,3.3,181.2,163.2,18.0,200.9,163.9,37.0,19.7,0.7,19.0,120.9,125.7,-4.8,severe -wood1,124.2,6.7,-8.1,4528,4.8,178.2,165.5,12.7,178.7,181.9,-3.2,0.5,16.4,-15.9,36.0,32.8,3.2,severe -s3_shot_driver_51,116.2,21.7,2.2,6409,3.2,174.3,162.9,11.4,193.9,164.3,29.6,19.6,1.4,18.2,109.3,108.7,0.6,severe -s3_shot_driver_52,102.1,31.3,3.1,8442,6.3,133.9,124.5,9.4,149.4,124.1,25.3,15.5,-0.4,15.9,117.9,119.3,-1.4,severe -bump_and_run,58.3,15.6,-0.8,1850,2.3,34.7,43.8,-9.1,34.5,62.0,-27.5,-0.2,18.2,-18.4,8.0,10.1,-2.1,severe -driver2,124.6,13.2,-6.8,3994,-6.1,193.7,184.8,8.9,200.9,192.3,8.6,7.2,7.5,-0.3,63.1,65.8,-2.7,severe -s3_shot_9i_2,71.3,23.9,5.5,4086,8.3,74.1,82.1,-8.0,78.3,87.4,-9.1,4.2,5.3,-1.1,33.8,36.8,-3.0,severe -s3_shot_3w_24,123.4,6.3,-5.4,2752,-13.3,153.8,145.9,7.9,206.3,176.7,29.6,52.5,30.8,21.7,21.7,19.8,1.9,severe -driver4,119.0,15.5,-10.2,4454,-7.8,183.3,175.6,7.7,197.2,180.9,16.3,13.9,5.3,8.6,78.2,73.8,4.4,severe -s2_shot_17,122.9,14.4,-1.3,4119,6.7,191.2,184.0,7.2,199.5,190.3,9.2,8.3,6.3,2.0,68.2,71.8,-3.6,severe -s2_shot_20,120.9,15.0,-3.0,4245,9.6,186.6,179.4,7.2,196.4,185.3,11.1,9.8,5.9,3.9,70.5,72.3,-1.8,severe -s3_shot_6i_47,99.5,14.8,-2.9,4811,4.7,138.2,131.2,7.0,148.5,137.7,10.8,10.3,6.5,3.8,56.8,45.0,11.8,severe -s3_shot_driver_53,97.2,30.6,2.2,8926,6.0,124.1,117.6,6.5,135.0,117.1,17.9,10.9,-0.5,11.4,102.0,105.8,-3.8,severe -s3_shot_6i_43,94.1,13.9,-4.7,4616,1.7,123.7,117.3,6.4,129.5,128.6,0.9,5.8,11.3,-5.5,43.1,35.0,8.1,moderate -driver3,119.1,16.0,-8.9,4935,-9.4,180.3,174.1,6.2,201.8,178.5,23.3,21.5,4.4,17.1,99.6,78.5,21.1,severe -s3_shot_6i_48,101.7,15.2,-3.0,4631,4.3,143.2,137.1,6.1,154.6,143.5,11.1,11.4,6.4,5.0,63.1,48.9,14.2,severe -wedge_shot_2,51.8,37.0,2.4,5652,9.1,43.0,49.1,-6.1,52.8,50.1,2.7,9.8,1.0,8.8,31.1,35.3,-4.2,moderate -s2_shot_21,127.3,7.2,-11.5,2321,-19.5,160.7,154.9,5.8,215.3,186.5,28.8,54.6,31.6,23.0,24.9,23.1,1.8,severe -s2_shot_22,123.3,14.0,-6.1,3104,10.0,191.1,185.4,5.7,199.0,195.5,3.5,7.9,10.1,-2.2,61.6,63.0,-1.4,moderate -s2_shot_24,121.5,14.5,-11.2,3173,-6.8,188.7,183.0,5.7,195.5,192.8,2.7,6.8,9.8,-3.0,63.0,64.6,-1.6,moderate -5iron,102.1,17.4,1.5,5391,12.3,143.7,138.1,5.6,154.3,142.2,12.1,10.6,4.1,6.5,64.6,59.6,5.0,severe -s3_shot_driver_54,121.5,12.9,-5.3,3411,-10.0,183.6,178.2,5.4,188.7,188.7,0.0,5.1,10.5,-5.4,54.3,56.5,-2.2,moderate -wedge_test_shot2,54.7,26.8,1.6,4976,5.7,46.8,52.2,-5.4,60.8,57.7,3.1,14.0,5.5,8.5,22.4,24.4,-2.0,moderate -s2_shot_12,90.8,24.5,-3.9,7261,4.9,120.6,115.4,5.2,125.9,116.4,9.5,5.3,1.0,4.3,66.4,71.5,-5.1,moderate -s2_shot_18,105.7,20.5,-1.7,5667,8.2,151.9,146.8,5.1,166.0,149.4,16.6,14.1,2.6,11.5,83.5,80.4,3.1,severe -s3_shot_6i_35,80.5,15.3,-1.3,4667,-0.0,84.9,90.0,-5.1,84.9,101.5,-16.6,0.0,11.5,-11.5,23.1,26.4,-3.3,severe -s3_shot_driver_57,120.9,14.1,-5.2,1544,-8.0,172.5,177.6,-5.1,177.3,197.0,-19.7,4.8,19.4,-14.6,47.4,50.9,-3.5,severe -wedge_shot_1,48.7,29.0,-1.3,5684,11.1,37.5,42.6,-5.1,46.2,46.9,-0.7,8.7,4.3,4.4,18.9,21.3,-2.4,moderate -wedge_test_shot,66.4,23.2,-1.4,6449,7.1,65.6,70.6,-5.0,79.4,75.8,3.6,13.8,5.2,8.6,28.0,31.2,-3.2,moderate -s3_shot_7i_31,76.4,17.5,-0.5,5122,1.8,80.2,85.0,-4.8,80.2,94.5,-14.3,0.0,9.5,-9.5,24.3,28.4,-4.1,severe -s3_shot_driver_56,118.7,17.1,-1.8,4554,2.8,181.4,176.6,4.8,201.6,180.9,20.7,20.2,4.3,15.9,92.9,83.2,9.7,severe -wood2,118.8,14.5,-3.3,3026,11.2,180.4,175.6,4.8,186.8,186.1,0.7,6.4,10.5,-4.1,57.7,59.3,-1.6,moderate -s3_shot_6i_41,82.5,9.9,-2.3,2620,13.6,66.7,71.3,-4.6,111.1,97.9,13.2,44.4,26.6,17.8,10.3,11.3,-1.0,severe -s3_shot_5i_15,86.9,9.3,-4.0,2509,-4.9,74.1,78.6,-4.5,121.3,106.6,14.7,47.2,28.0,19.2,11.0,12.1,-1.1,severe -s3_shot_7i_34,104.2,14.7,-4.6,4081,1.9,146.9,142.5,4.4,153.2,150.6,2.6,6.3,8.1,-1.8,51.3,48.2,3.1,moderate -s3_shot_pw_64,69.6,28.6,0.2,5327,5.1,75.7,80.1,-4.4,92.0,82.4,9.6,16.3,2.3,14.0,42.7,46.4,-3.7,moderate -p_wedge_shot_1,82.3,26.5,-3.1,4946,6.7,100.2,104.5,-4.3,109.5,107.3,2.2,9.3,2.8,6.5,55.1,60.5,-5.4,moderate -s2_shot_23,125.5,8.6,-14.3,3062,-23.9,166.1,161.9,4.2,166.1,185.0,-18.9,0.0,23.1,-23.1,31.1,31.0,0.1,severe -s2_shot_10,89.7,25.5,-3.1,6446,6.2,119.1,115.1,4.0,127.1,116.4,10.7,8.0,1.3,6.7,66.2,72.0,-5.8,severe -s3_shot_6i_46,116.3,13.7,0.3,3008,10.7,171.1,167.3,3.8,175.8,179.3,-3.5,4.7,12.0,-7.3,50.1,51.6,-1.5,moderate -s2_shot_27,113.0,17.6,-2.3,4292,12.2,168.1,164.5,3.6,183.4,169.6,13.8,15.3,5.1,10.2,78.6,73.6,5.0,severe -s3_shot_6i_37,82.6,10.2,11.0,3041,25.4,67.9,71.5,-3.6,109.4,97.2,12.2,41.5,25.7,15.8,11.0,11.8,-0.8,severe -s3_shot_6i_45,109.3,6.4,-9.0,2510,-10.9,113.1,109.6,3.5,166.5,145.4,21.1,53.4,35.8,17.6,13.5,12.9,0.6,severe -s3_shot_pw_68,88.5,23.4,-0.1,6637,6.0,116.1,112.7,3.4,120.2,114.1,6.1,4.1,1.4,2.7,57.2,63.4,-6.2,moderate -s2_shot_19,128.6,12.5,-8.4,2514,5.1,197.8,194.5,3.3,204.3,208.7,-4.4,6.5,14.2,-7.7,56.4,57.3,-0.9,moderate -s3_shot_5i_11,90.6,14.4,-0.2,3360,7.8,105.6,108.8,-3.2,106.9,124.1,-17.2,1.3,15.3,-14.0,28.5,29.8,-1.3,severe -s3_shot_6i_38,79.1,13.3,3.0,3187,11.6,76.0,79.2,-3.2,76.2,97.5,-21.3,0.2,18.3,-18.1,18.1,18.0,0.1,severe -s3_shot_3w_22,108.9,5.6,-7.2,2501,-1.8,106.3,103.2,3.1,161.5,141.3,20.2,55.2,38.1,17.1,11.0,10.5,0.5,severe -s3_shot_5i_10,88.0,14.2,1.2,4065,8.4,106.1,103.1,3.0,109.6,116.7,-7.1,3.5,13.6,-10.1,34.3,28.4,5.9,moderate -s2_shot_9,94.4,20.1,2.4,4020,16.3,123.7,126.5,-2.8,136.0,132.5,3.5,12.3,6.0,6.3,62.1,54.8,7.3,pass -s3_shot_pw_69,74.1,23.6,0.2,5880,8.4,83.2,86.0,-2.8,84.9,88.8,-3.9,1.7,2.8,-1.1,37.4,41.2,-3.8,pass -s2_shot_26,117.0,18.4,-2.0,5035,9.7,173.3,170.7,2.6,197.3,174.2,23.1,24.0,3.5,20.5,112.3,88.1,24.2,severe -s3_shot_5i_13,75.0,8.0,2.5,3921,3.4,56.5,53.9,2.6,89.0,78.9,10.1,32.5,25.0,7.5,7.4,6.8,0.6,severe -s3_shot_9i_5,84.0,19.4,3.8,5352,11.5,100.1,102.7,-2.6,101.7,107.2,-5.5,1.6,4.5,-2.9,36.3,41.8,-5.5,moderate -s3_shot_pw_66,75.7,27.3,-1.2,6605,4.0,87.1,89.7,-2.6,102.1,90.8,11.3,15.0,1.1,13.9,49.8,53.5,-3.7,severe -s3_shot_6i_49,71.2,7.7,16.1,2625,30.0,37.4,39.9,-2.5,77.3,70.3,7.0,39.9,30.4,9.5,4.2,4.5,-0.3,moderate -s3_shot_driver_55,117.5,7.5,-8.3,2150,-27.2,128.1,125.6,2.5,184.4,161.8,22.6,56.3,36.2,20.1,17.6,17.2,0.4,severe -bump_test_shot,78.3,5.6,-0.8,1850,2.3,36.9,39.0,-2.1,86.8,74.0,12.8,49.9,35.0,14.9,3.0,3.1,-0.1,severe -s3_shot_6i_36,78.9,10.4,16.1,4166,25.1,69.9,67.8,2.1,68.3,89.1,-20.8,-1.6,21.3,-22.9,12.4,11.8,0.6,severe -s3_shot_5i_17,56.5,10.0,24.1,5178,29.1,28.6,30.6,-2.0,45.0,46.9,-1.9,16.4,16.3,0.1,4.2,4.5,-0.3,pass -s2_shot_13,95.2,19.6,-1.1,5610,12.2,127.1,125.3,1.8,131.7,128.7,3.0,4.6,3.4,1.2,52.5,58.4,-5.9,pass -s3_shot_7i_26,73.4,10.8,15.4,3561,30.0,58.4,56.6,1.8,57.5,79.3,-21.8,-0.9,22.7,-23.6,10.7,9.6,1.1,severe -s3_shot_7i_27,93.7,17.1,-1.4,4612,2.6,124.1,122.3,1.8,132.6,128.3,4.3,8.5,6.0,2.5,54.0,46.0,8.0,pass -s3_shot_7i_32,93.1,17.0,-1.0,3762,4.2,119.4,121.2,-1.8,127.6,129.8,-2.2,8.2,8.6,-0.4,45.6,42.5,3.1,pass -wood_low_test_shot,114.5,7.0,-0.6,1932,-1.4,124.4,122.6,1.8,181.8,158.9,22.9,57.4,36.3,21.1,16.1,15.7,0.4,severe -s2_shot_11,78.5,29.6,4.3,7350,10.7,91.3,93.0,-1.7,95.6,93.6,2.0,4.3,0.6,3.7,59.6,64.0,-4.4,pass -s3_shot_7i_33,92.4,17.0,-0.6,3852,2.8,118.1,119.7,-1.6,126.7,128.0,-1.3,8.6,8.3,0.3,46.7,42.0,4.7,pass -s3_shot_9i_8,92.2,21.9,-6.3,5042,0.7,121.3,122.9,-1.6,130.5,126.4,4.1,9.2,3.5,5.7,61.1,62.6,-1.5,pass -s3_shot_9i_1,89.0,15.1,-0.5,3563,11.3,105.3,106.7,-1.4,108.2,120.8,-12.6,2.9,14.1,-11.2,32.1,30.8,1.3,severe -s3_shot_9i_3,90.1,21.7,2.8,5243,11.2,115.9,117.3,-1.4,121.8,120.7,1.1,5.9,3.4,2.5,52.4,57.7,-5.3,pass -s3_shot_5i_12,74.2,10.2,-1.7,3321,15.8,59.6,58.4,1.2,58.4,81.9,-23.5,-1.2,23.5,-24.7,10.5,9.4,1.1,severe -s3_shot_6i_40,62.1,6.8,27.0,2768,30.0,25.0,26.2,-1.2,58.9,51.1,7.8,33.9,24.9,9.0,2.6,2.5,0.1,moderate -s3_shot_6i_44,115.0,9.5,-6.7,2314,15.1,141.1,142.3,-1.2,140.8,168.2,-27.4,-0.3,25.9,-26.2,25.3,26.6,-1.3,severe -s3_shot_7i_28,92.1,16.4,-3.6,4217,-0.4,119.1,117.9,1.2,126.8,125.6,1.2,7.7,7.7,0.0,48.9,40.6,8.3,pass -s3_shot_9i_9,90.1,22.1,-3.1,5351,1.2,116.9,118.1,-1.2,123.0,121.1,1.9,6.1,3.0,3.1,54.0,60.1,-6.1,pass -s3_shot_3w_21,119.4,5.3,-3.4,1760,-10.5,115.7,114.6,1.1,177.1,160.5,16.6,61.4,45.9,15.5,11.2,10.9,0.3,severe -s3_shot_5i_16,98.0,9.1,-2.1,3776,1.7,110.2,109.1,1.1,109.2,130.0,-20.8,-1.0,20.9,-21.9,19.5,19.7,-0.2,severe -s3_shot_6i_42,77.2,13.1,-3.4,4057,4.1,75.5,76.6,-1.1,75.5,92.9,-17.4,0.0,16.3,-16.3,18.3,17.5,0.8,severe -s3_shot_9i_7,83.0,22.5,5.3,7008,9.7,102.2,101.1,1.1,104.2,102.6,1.6,2.0,1.5,0.5,47.3,51.5,-4.2,pass -drive_test_shot,150.0,12.5,1.5,2335,-9.9,245.0,244.0,1.0,256.8,256.0,0.8,11.8,12.0,-0.2,80.0,80.6,-0.6,pass -s3_shot_7i_29,107.6,13.8,-6.0,3633,4.7,149.4,148.4,1.0,152.5,158.3,-5.8,3.1,9.9,-6.8,42.8,46.3,-3.5,moderate -flop_test_shot,68.0,45.0,0.5,12000,0.8,62.7,61.8,0.9,63.1,60.3,2.8,0.4,-1.5,1.9,69.2,76.8,-7.6,pass -s3_shot_driver_59,81.0,44.9,8.9,6735,12.4,82.8,83.7,-0.9,100.9,83.2,17.7,18.1,-0.5,18.6,104.0,107.8,-3.8,severe -s3_shot_3w_23,115.8,8.9,-0.8,2804,2.2,148.5,147.7,0.8,148.2,170.9,-22.7,-0.3,23.2,-23.5,26.8,28.0,-1.2,severe -checked_test_shot,75.0,38.5,1.4,10701,5.7,77.0,77.6,-0.6,78.6,77.5,1.1,1.6,-0.1,1.7,70.8,79.5,-8.7,pass -s2_shot_15,88.1,14.2,-0.3,4985,19.4,100.7,101.3,-0.6,100.8,113.1,-12.3,0.1,11.8,-11.7,27.0,28.9,-1.9,severe -topped_test_shot,91.8,5.0,-0.9,2195,16.2,55.6,56.2,-0.6,109.2,95.3,13.9,53.6,39.1,14.5,4.2,4.3,-0.1,severe -s3_shot_6i_39,61.0,6.1,10.3,3285,22.0,23.5,24.0,-0.5,53.7,47.3,6.4,30.2,23.3,6.9,2.1,2.1,0.0,moderate -s3_shot_7i_25,83.3,13.2,3.0,3410,17.8,86.4,86.9,-0.5,86.8,104.8,-18.0,0.4,17.9,-17.5,21.0,20.1,0.9,severe -s2_shot_16,94.1,19.1,-5.9,5291,5.0,124.7,124.3,0.4,130.3,128.1,2.2,5.6,3.8,1.8,52.1,55.3,-3.2,pass -s3_shot_6i_50,82.8,14.8,-1.4,3783,2.8,92.8,93.2,-0.4,95.3,107.4,-12.1,2.5,14.2,-11.7,29.5,25.6,3.9,severe -driver1,124.0,9.4,-9.5,2322,-24.8,158.3,158.0,0.3,158.3,184.0,-25.7,0.0,26.0,-26.0,29.5,30.2,-0.7,severe -s2_shot_14,87.1,22.4,-2.0,5660,11.4,111.1,110.9,0.2,115.3,113.7,1.6,4.2,2.8,1.4,50.0,55.9,-5.9,pass -s3_shot_7i_30,90.2,17.6,-3.8,4508,-0.2,115.2,115.4,-0.2,123.2,121.7,1.5,8.0,6.3,1.7,48.6,43.1,5.5,pass -s3_shot_3w_19,121.3,5.6,-4.8,1662,-11.9,120.5,120.6,-0.1,182.5,165.8,16.7,62.0,45.2,16.8,12.3,12.2,0.1,severe -s3_shot_pw_65,81.2,28.4,2.9,6959,9.4,98.4,98.5,-0.1,104.1,99.4,4.7,5.7,0.9,4.8,61.8,65.6,-3.8,pass -approach_mid_iron_test_shot,93.9,22.9,-2.6,5375,2.0,125.8,125.8,0.0,136.4,128.5,7.9,10.6,2.7,7.9,64.6,69.3,-4.7,moderate -s3_shot_driver_60,107.4,11.7,-8.6,3269,-14.8,138.5,138.5,0.0,138.9,153.8,-14.9,0.4,15.3,-14.9,31.6,34.0,-2.4,severe -s3_shot_pw_67,81.7,28.1,6.3,6510,12.7,100.0,100.0,0.0,106.8,101.1,5.7,6.8,1.1,5.7,61.0,65.0,-4.0,moderate diff --git a/assets/data/openfairway_critical_carry_20260313_2006.csv.import b/assets/data/openfairway_critical_carry_20260313_2006.csv.import deleted file mode 100644 index 432dadf..0000000 --- a/assets/data/openfairway_critical_carry_20260313_2006.csv.import +++ /dev/null @@ -1,19 +0,0 @@ -[remap] - -importer="csv_translation" -type="Translation" -uid="uid://cl60fwkihcfss" - -[deps] - -files=["res://assets/data/openfairway_critical_carry_20260313_2006.speed.translation", "res://assets/data/openfairway_critical_carry_20260313_2006.vla.translation", "res://assets/data/openfairway_critical_carry_20260313_2006.hla.translation", "res://assets/data/openfairway_critical_carry_20260313_2006.total.translation", "res://assets/data/openfairway_critical_carry_20260313_2006.spin.translation", "res://assets/data/openfairway_critical_carry_20260313_2006.physics.translation", "res://assets/data/openfairway_critical_carry_20260313_2006.flightscope.translation", "res://assets/data/openfairway_critical_carry_20260313_2006.diff.translation", "res://assets/data/openfairway_critical_carry_20260313_2006.physics.translation", "res://assets/data/openfairway_critical_carry_20260313_2006.flightscope.translation", "res://assets/data/openfairway_critical_carry_20260313_2006.diff.translation", "res://assets/data/openfairway_critical_carry_20260313_2006.rollout.translation", "res://assets/data/openfairway_critical_carry_20260313_2006.rollout.translation", "res://assets/data/openfairway_critical_carry_20260313_2006.diff.translation", "res://assets/data/openfairway_critical_carry_20260313_2006.physics.translation", "res://assets/data/openfairway_critical_carry_20260313_2006.flightscope.translation", "res://assets/data/openfairway_critical_carry_20260313_2006.diff.translation", "res://assets/data/openfairway_critical_carry_20260313_2006.status.translation"] - -source_file="res://assets/data/openfairway_critical_carry_20260313_2006.csv" -dest_files=["res://assets/data/openfairway_critical_carry_20260313_2006.speed.translation", "res://assets/data/openfairway_critical_carry_20260313_2006.vla.translation", "res://assets/data/openfairway_critical_carry_20260313_2006.hla.translation", "res://assets/data/openfairway_critical_carry_20260313_2006.total.translation", "res://assets/data/openfairway_critical_carry_20260313_2006.spin.translation", "res://assets/data/openfairway_critical_carry_20260313_2006.physics.translation", "res://assets/data/openfairway_critical_carry_20260313_2006.flightscope.translation", "res://assets/data/openfairway_critical_carry_20260313_2006.diff.translation", "res://assets/data/openfairway_critical_carry_20260313_2006.physics.translation", "res://assets/data/openfairway_critical_carry_20260313_2006.flightscope.translation", "res://assets/data/openfairway_critical_carry_20260313_2006.diff.translation", "res://assets/data/openfairway_critical_carry_20260313_2006.rollout.translation", "res://assets/data/openfairway_critical_carry_20260313_2006.rollout.translation", "res://assets/data/openfairway_critical_carry_20260313_2006.diff.translation", "res://assets/data/openfairway_critical_carry_20260313_2006.physics.translation", "res://assets/data/openfairway_critical_carry_20260313_2006.flightscope.translation", "res://assets/data/openfairway_critical_carry_20260313_2006.diff.translation", "res://assets/data/openfairway_critical_carry_20260313_2006.status.translation"] - -[params] - -compress=1 -delimiter=0 -unescape_keys=false -unescape_translations=true diff --git a/assets/data/openfairway_critical_carry_20260313_2310.csv b/assets/data/openfairway_critical_carry_20260313_2310.csv deleted file mode 100644 index 24b20fa..0000000 --- a/assets/data/openfairway_critical_carry_20260313_2310.csv +++ /dev/null @@ -1,100 +0,0 @@ -shot_name,speed_mph,vla_deg,hla_deg,total_spin_rpm,spin_axis_deg,physics_carry_yd,flightscope_carry_yd,diff_carry_yd,physics_carry_raw_yd,diff_carry_raw_yd,physics_total_yd,flightscope_total_yd,diff_total_yd,rollout_physics_yd,rollout_flightscope_yd,diff_rollout_yd,physics_apex_ft,flightscope_apex_ft,diff_apex_ft,carry_exception_regime,carry_exception_offset_yd,carry_exception_source,carry_exception_applied,status -s3_shot_driver_58,119.3,23.6,2.5,7093,3.3,181.2,163.2,18.0,181.2,18.0,200.9,163.9,37.0,19.7,0.7,19.0,120.9,125.7,-4.8,I-S3-V2-P3,,,false,severe -wood1,124.2,6.7,-8.1,4528,4.8,178.2,165.5,12.7,178.2,12.7,178.7,181.9,-3.2,0.5,16.4,-15.9,36.0,32.8,3.2,D-S4-V0-P2,,,false,severe -s3_shot_driver_51,116.2,21.7,2.2,6409,3.2,174.3,162.9,11.4,174.3,11.4,193.9,164.3,29.6,19.6,1.4,18.2,109.3,108.7,0.6,I-S3-V2-P3,,,false,severe -s3_shot_driver_52,102.1,31.3,3.1,8442,6.3,133.9,124.5,9.4,133.9,9.4,149.4,124.1,25.3,15.5,-0.4,15.9,117.9,119.3,-1.4,W-S2-V3-P4,,,false,severe -driver2,124.6,13.2,-6.8,3994,-6.1,193.7,184.8,8.9,193.7,8.9,200.9,192.3,8.6,7.2,7.5,-0.3,63.1,65.8,-2.7,D-S4-V1-P1,,,false,severe -s3_shot_3w_24,123.4,6.3,-5.4,2752,-13.3,153.8,145.9,7.9,153.8,7.9,206.3,176.7,29.6,52.5,30.8,21.7,21.7,19.8,1.9,D-S4-V0-P1,,,false,severe -driver4,119.0,15.5,-10.2,4454,-7.8,183.3,175.6,7.7,183.3,7.7,197.2,180.9,16.3,13.9,5.3,8.6,78.2,73.8,4.4,D-S3-V1-P2,,,false,severe -s2_shot_17,122.9,14.4,-1.3,4119,6.7,191.2,184.0,7.2,191.2,7.2,199.5,190.3,9.2,8.3,6.3,2.0,68.2,71.8,-3.6,D-S4-V1-P2,,,false,severe -s2_shot_20,120.9,15.0,-3.0,4245,9.6,186.6,179.4,7.2,186.6,7.2,196.4,185.3,11.1,9.8,5.9,3.9,70.5,72.3,-1.8,D-S4-V1-P2,,,false,severe -s3_shot_6i_47,99.5,14.8,-2.9,4811,4.7,138.2,131.2,7.0,138.2,7.0,148.5,137.7,10.8,10.3,6.5,3.8,56.8,45.0,11.8,I-S2-V1-P2,,,false,severe -s3_shot_driver_53,97.2,30.6,2.2,8926,6.0,124.1,117.6,6.5,124.1,6.5,135.0,117.1,17.9,10.9,-0.5,11.4,102.0,105.8,-3.8,W-S2-V3-P4,,,false,severe -s3_shot_6i_43,94.1,13.9,-4.7,4616,1.7,123.7,117.3,6.4,123.7,6.4,129.5,128.6,0.9,5.8,11.3,-5.5,43.1,35.0,8.1,I-S2-V1-P2,,,false,moderate -driver3,119.1,16.0,-8.9,4935,-9.4,180.3,174.1,6.2,180.3,6.2,201.8,178.5,23.3,21.5,4.4,17.1,99.6,78.5,21.1,D-S3-V1-P2,,,false,severe -s3_shot_6i_48,101.7,15.2,-3.0,4631,4.3,143.2,137.1,6.1,143.2,6.1,154.6,143.5,11.1,11.4,6.4,5.0,63.1,48.9,14.2,I-S2-V1-P2,,,false,severe -s2_shot_21,127.3,7.2,-11.5,2321,-19.5,160.7,154.9,5.8,160.7,5.8,215.3,186.5,28.8,54.6,31.6,23.0,24.9,23.1,1.8,D-S4-V0-P0,,,false,severe -s2_shot_22,123.3,14.0,-6.1,3104,10.0,191.1,185.4,5.7,191.1,5.7,199.0,195.5,3.5,7.9,10.1,-2.2,61.6,63.0,-1.4,D-S4-V1-P1,,,false,moderate -s2_shot_24,121.5,14.5,-11.2,3173,-6.8,188.7,183.0,5.7,188.7,5.7,195.5,192.8,2.7,6.8,9.8,-3.0,63.0,64.6,-1.6,D-S4-V1-P1,,,false,moderate -5iron,102.1,17.4,1.5,5391,12.3,143.7,138.1,5.6,143.7,5.6,154.3,142.2,12.1,10.6,4.1,6.5,64.6,59.6,5.0,I-S2-V1-P2,,,false,severe -s3_shot_driver_54,121.5,12.9,-5.3,3411,-10.0,183.6,178.2,5.4,183.6,5.4,188.7,188.7,0.0,5.1,10.5,-5.4,54.3,56.5,-2.2,D-S4-V1-P1,,,false,moderate -s2_shot_12,90.8,24.5,-3.9,7261,4.9,120.6,115.4,5.2,120.6,5.2,125.9,116.4,9.5,5.3,1.0,4.3,66.4,71.5,-5.1,I-S2-V2-P3,,,false,moderate -s2_shot_18,105.7,20.5,-1.7,5667,8.2,151.9,146.8,5.1,151.9,5.1,166.0,149.4,16.6,14.1,2.6,11.5,83.5,80.4,3.1,I-S3-V2-P3,,,false,severe -s3_shot_driver_57,120.9,14.1,-5.2,1544,-8.0,172.5,177.6,-5.1,172.5,-5.1,177.3,197.0,-19.7,4.8,19.4,-14.6,47.4,50.9,-3.5,D-S4-V1-P0,,,false,severe -s3_shot_driver_56,118.7,17.1,-1.8,4554,2.8,181.4,176.6,4.8,181.4,4.8,201.6,180.9,20.7,20.2,4.3,15.9,92.9,83.2,9.7,D-S3-V1-P2,,,false,severe -wood2,118.8,14.5,-3.3,3026,11.2,180.4,175.6,4.8,180.4,4.8,186.8,186.1,0.7,6.4,10.5,-4.1,57.7,59.3,-1.6,D-S3-V1-P1,,,false,moderate -s3_shot_7i_34,104.2,14.7,-4.6,4081,1.9,146.9,142.5,4.4,146.9,4.4,153.2,150.6,2.6,6.3,8.1,-1.8,51.3,48.2,3.1,I-S2-V1-P2,,,false,moderate -s2_shot_23,125.5,8.6,-14.3,3062,-23.9,166.1,161.9,4.2,166.1,4.2,166.1,185.0,-18.9,0.0,23.1,-23.1,31.1,31.0,0.1,D-S4-V0-P1,,,false,severe -s2_shot_10,89.7,25.5,-3.1,6446,6.2,119.1,115.1,4.0,119.1,4.0,127.1,116.4,10.7,8.0,1.3,6.7,66.2,72.0,-5.8,I-S2-V3-P3,,,false,severe -s3_shot_6i_46,116.3,13.7,0.3,3008,10.7,171.1,167.3,3.8,171.1,3.8,175.8,179.3,-3.5,4.7,12.0,-7.3,50.1,51.6,-1.5,D-S3-V1-P1,,,false,moderate -s2_shot_27,113.0,17.6,-2.3,4292,12.2,168.1,164.5,3.6,168.1,3.6,183.4,169.6,13.8,15.3,5.1,10.2,78.6,73.6,5.0,D-S3-V1-P2,,,false,severe -s2_shot_19,128.6,12.5,-8.4,2514,5.1,197.8,194.5,3.3,197.8,3.3,204.3,208.7,-4.4,6.5,14.2,-7.7,56.4,57.3,-0.9,D-S4-V1-P1,,,false,moderate -s2_shot_9,94.4,20.1,2.4,4020,16.3,123.7,126.5,-2.8,123.7,-2.8,136.0,132.5,3.5,12.3,6.0,6.3,62.1,54.8,7.3,I-S2-V2-P2,,,false,pass -s2_shot_26,117.0,18.4,-2.0,5035,9.7,173.3,170.7,2.6,173.3,2.6,197.3,174.2,23.1,24.0,3.5,20.5,112.3,88.1,24.2,I-S3-V2-P2,,,false,severe -s3_shot_driver_55,117.5,7.5,-8.3,2150,-27.2,128.1,125.6,2.5,128.1,2.5,184.4,161.8,22.6,56.3,36.2,20.1,17.6,17.2,0.4,D-S3-V0-P0,,,false,severe -s2_shot_13,95.2,19.6,-1.1,5610,12.2,127.1,125.3,1.8,127.1,1.8,131.7,128.7,3.0,4.6,3.4,1.2,52.5,58.4,-5.9,I-S2-V2-P3,,,false,pass -s3_shot_7i_27,93.7,17.1,-1.4,4612,2.6,124.1,122.3,1.8,124.1,1.8,132.6,128.3,4.3,8.5,6.0,2.5,54.0,46.0,8.0,I-S2-V1-P2,,,false,pass -s3_shot_7i_32,93.1,17.0,-1.0,3762,4.2,119.4,121.2,-1.8,119.4,-1.8,127.6,129.8,-2.2,8.2,8.6,-0.4,45.6,42.5,3.1,I-S2-V1-P1,,,false,pass -wood_low_test_shot,114.5,7.0,-0.6,1932,-1.4,124.4,122.6,1.8,124.4,1.8,181.8,158.9,22.9,57.4,36.3,21.1,16.1,15.7,0.4,D-S3-V0-P0,,,false,severe -s3_shot_7i_33,92.4,17.0,-0.6,3852,2.8,118.1,119.7,-1.6,118.1,-1.6,126.7,128.0,-1.3,8.6,8.3,0.3,46.7,42.0,4.7,I-S2-V1-P1,,,false,pass -s3_shot_9i_8,92.2,21.9,-6.3,5042,0.7,121.3,122.9,-1.6,121.3,-1.6,130.5,126.4,4.1,9.2,3.5,5.7,61.1,62.6,-1.5,I-S2-V2-P2,,,false,pass -s3_shot_9i_3,90.1,21.7,2.8,5243,11.2,115.9,117.3,-1.4,115.9,-1.4,121.8,120.7,1.1,5.9,3.4,2.5,52.4,57.7,-5.3,I-S2-V2-P2,,,false,pass -s3_shot_5i_12,74.2,10.2,-1.7,3321,15.8,59.6,58.4,1.2,59.6,1.2,58.4,81.9,-23.5,-1.2,23.5,-24.7,10.5,9.4,1.1,I-S1-V1-P1,,,false,severe -s3_shot_6i_40,62.1,6.8,27.0,2768,30.0,25.0,26.2,-1.2,25.0,-1.2,58.9,51.1,7.8,33.9,24.9,9.0,2.6,2.5,0.1,I-S1-V0-P1,,,false,moderate -s3_shot_6i_44,115.0,9.5,-6.7,2314,15.1,141.1,142.3,-1.2,141.1,-1.2,140.8,168.2,-27.4,-0.3,25.9,-26.2,25.3,26.6,-1.3,D-S3-V0-P0,,,false,severe -s3_shot_7i_28,92.1,16.4,-3.6,4217,-0.4,119.1,117.9,1.2,119.1,1.2,126.8,125.6,1.2,7.7,7.7,0.0,48.9,40.6,8.3,I-S2-V1-P2,,,false,pass -s3_shot_9i_9,90.1,22.1,-3.1,5351,1.2,116.9,118.1,-1.2,116.9,-1.2,123.0,121.1,1.9,6.1,3.0,3.1,54.0,60.1,-6.1,I-S2-V2-P2,,,false,pass -s3_shot_3w_21,119.4,5.3,-3.4,1760,-10.5,115.7,114.6,1.1,115.7,1.1,177.1,160.5,16.6,61.4,45.9,15.5,11.2,10.9,0.3,D-S3-V0-P0,,,false,severe -s3_shot_5i_16,98.0,9.1,-2.1,3776,1.7,110.2,109.1,1.1,110.2,1.1,109.2,130.0,-20.8,-1.0,20.9,-21.9,19.5,19.7,-0.2,I-S2-V0-P1,,,false,severe -s3_shot_6i_42,77.2,13.1,-3.4,4057,4.1,75.5,76.6,-1.1,75.5,-1.1,75.5,92.9,-17.4,0.0,16.3,-16.3,18.3,17.5,0.8,I-S1-V1-P2,,,false,severe -s3_shot_9i_7,83.0,22.5,5.3,7008,9.7,102.2,101.1,1.1,102.2,1.1,104.2,102.6,1.6,2.0,1.5,0.5,47.3,51.5,-4.2,I-S1-V2-P3,,,false,pass -drive_test_shot,150.0,12.5,1.5,2335,-9.9,245.0,244.0,1.0,245.0,1.0,256.8,256.0,0.8,11.8,12.0,-0.2,80.0,80.6,-0.6,D-S4-V1-P0,,,false,pass -s3_shot_7i_29,107.6,13.8,-6.0,3633,4.7,149.4,148.4,1.0,149.4,1.0,152.5,158.3,-5.8,3.1,9.9,-6.8,42.8,46.3,-3.5,I-S3-V1-P1,,,false,moderate -flop_test_shot,68.0,45.0,0.5,12000,0.8,62.7,61.8,0.9,62.7,0.9,63.1,60.3,2.8,0.4,-1.5,1.9,69.2,76.8,-7.6,W-S1-V4-P4,,,false,pass -s3_shot_driver_59,81.0,44.9,8.9,6735,12.4,82.8,83.7,-0.9,82.8,-0.9,100.9,83.2,17.7,18.1,-0.5,18.6,104.0,107.8,-3.8,W-S1-V4-P3,,,false,severe -s3_shot_3w_23,115.8,8.9,-0.8,2804,2.2,148.5,147.7,0.8,148.5,0.8,148.2,170.9,-22.7,-0.3,23.2,-23.5,26.8,28.0,-1.2,D-S3-V0-P1,,,false,severe -checked_test_shot,75.0,38.5,1.4,10701,5.7,77.0,77.6,-0.6,77.0,-0.6,78.6,77.5,1.1,1.6,-0.1,1.7,70.8,79.5,-8.7,W-S1-V4-P4,,,false,pass -s2_shot_15,88.1,14.2,-0.3,4985,19.4,100.7,101.3,-0.6,100.7,-0.6,100.8,113.1,-12.3,0.1,11.8,-11.7,27.0,28.9,-1.9,I-S2-V1-P2,,,false,severe -topped_test_shot,91.8,5.0,-0.9,2195,16.2,55.6,56.2,-0.6,55.6,-0.6,109.2,95.3,13.9,53.6,39.1,14.5,4.2,4.3,-0.1,I-S2-V0-P0,,,false,severe -s3_shot_6i_39,61.0,6.1,10.3,3285,22.0,23.5,24.0,-0.5,23.5,-0.5,53.7,47.3,6.4,30.2,23.3,6.9,2.1,2.1,0.0,I-S1-V0-P1,,,false,moderate -s3_shot_7i_25,83.3,13.2,3.0,3410,17.8,86.4,86.9,-0.5,86.4,-0.5,86.8,104.8,-18.0,0.4,17.9,-17.5,21.0,20.1,0.9,I-S1-V1-P1,,,false,severe -s2_shot_16,94.1,19.1,-5.9,5291,5.0,124.7,124.3,0.4,124.7,0.4,130.3,128.1,2.2,5.6,3.8,1.8,52.1,55.3,-3.2,I-S2-V2-P2,,,false,pass -s3_shot_6i_50,82.8,14.8,-1.4,3783,2.8,92.8,93.2,-0.4,92.8,-0.4,95.3,107.4,-12.1,2.5,14.2,-11.7,29.5,25.6,3.9,I-S1-V1-P1,,,false,severe -driver1,124.0,9.4,-9.5,2322,-24.8,158.3,158.0,0.3,158.3,0.3,158.3,184.0,-25.7,0.0,26.0,-26.0,29.5,30.2,-0.7,D-S4-V0-P0,,,false,severe -s2_shot_14,87.1,22.4,-2.0,5660,11.4,111.1,110.9,0.2,111.1,0.2,115.3,113.7,1.6,4.2,2.8,1.4,50.0,55.9,-5.9,I-S2-V2-P3,,,false,pass -s3_shot_7i_30,90.2,17.6,-3.8,4508,-0.2,115.2,115.4,-0.2,115.2,-0.2,123.2,121.7,1.5,8.0,6.3,1.7,48.6,43.1,5.5,I-S2-V1-P2,,,false,pass -bump_and_run,58.3,15.6,-0.8,1850,2.3,43.7,43.8,-0.1,34.7,-9.1,34.5,62.0,-27.5,-9.2,18.2,-27.4,8.0,10.1,-2.1,C-S0-V1-P0,-9.0,shot,true,severe -s3_shot_3w_19,121.3,5.6,-4.8,1662,-11.9,120.5,120.6,-0.1,120.5,-0.1,182.5,165.8,16.7,62.0,45.2,16.8,12.3,12.2,0.1,D-S4-V0-P0,,,false,severe -s3_shot_pw_65,81.2,28.4,2.9,6959,9.4,98.4,98.5,-0.1,98.4,-0.1,104.1,99.4,4.7,5.7,0.9,4.8,61.8,65.6,-3.8,I-S1-V3-P3,,,false,pass -approach_mid_iron_test_shot,93.9,22.9,-2.6,5375,2.0,125.8,125.8,0.0,125.8,0.0,136.4,128.5,7.9,10.6,2.7,7.9,64.6,69.3,-4.7,I-S2-V2-P2,,,false,moderate -bump_test_shot,78.3,5.6,-0.8,1850,2.3,39.0,39.0,0.0,36.9,-2.1,86.8,74.0,12.8,47.8,35.0,12.8,3.0,3.1,-0.1,I-S1-V0-P0,-2.1,shot,true,severe -p_wedge_shot_1,82.3,26.5,-3.1,4946,6.7,104.5,104.5,0.0,100.2,-4.3,109.5,107.3,2.2,5.0,2.8,2.2,55.1,60.5,-5.4,I-S1-V3-P2,-4.3,shot,true,pass -s2_shot_11,78.5,29.6,4.3,7350,10.7,93.0,93.0,0.0,91.3,-1.7,95.6,93.6,2.0,2.6,0.6,2.0,59.6,64.0,-4.4,I-S1-V3-P3,-1.7,shot,true,pass -s3_shot_3w_22,108.9,5.6,-7.2,2501,-1.8,103.2,103.2,0.0,106.3,3.1,161.5,141.3,20.2,58.3,38.1,20.2,11.0,10.5,0.5,I-S3-V0-P1,3.1,shot,true,severe -s3_shot_5i_10,88.0,14.2,1.2,4065,8.4,103.1,103.1,0.0,106.1,3.0,109.6,116.7,-7.1,6.5,13.6,-7.1,34.3,28.4,5.9,I-S2-V1-P2,3.0,shot,true,moderate -s3_shot_5i_11,90.6,14.4,-0.2,3360,7.8,108.8,108.8,0.0,105.6,-3.2,106.9,124.1,-17.2,-1.9,15.3,-17.2,28.5,29.8,-1.3,I-S2-V1-P1,-3.2,shot,true,severe -s3_shot_5i_13,75.0,8.0,2.5,3921,3.4,53.9,53.9,0.0,56.5,2.6,89.0,78.9,10.1,35.1,25.0,10.1,7.4,6.8,0.6,I-S1-V0-P1,2.6,shot,true,severe -s3_shot_5i_15,86.9,9.3,-4.0,2509,-4.9,78.6,78.6,0.0,74.1,-4.5,121.3,106.6,14.7,42.7,28.0,14.7,11.0,12.1,-1.1,I-S2-V0-P1,-4.5,shot,true,severe -s3_shot_5i_17,56.5,10.0,24.1,5178,29.1,30.6,30.6,0.0,28.6,-2.0,45.0,46.9,-1.9,14.4,16.3,-1.9,4.2,4.5,-0.3,C-S0-V1-P2,-2.0,shot,true,pass -s3_shot_6i_35,80.5,15.3,-1.3,4667,-0.0,90.0,90.0,0.0,84.9,-5.1,84.9,101.5,-16.6,-5.1,11.5,-16.6,23.1,26.4,-3.3,I-S1-V1-P2,-5.1,shot,true,severe -s3_shot_6i_36,78.9,10.4,16.1,4166,25.1,67.8,67.8,0.0,69.9,2.1,68.3,89.1,-20.8,0.5,21.3,-20.8,12.4,11.8,0.6,I-S1-V1-P2,2.1,shot,true,severe -s3_shot_6i_37,82.6,10.2,11.0,3041,25.4,71.5,71.5,0.0,67.9,-3.6,109.4,97.2,12.2,37.9,25.7,12.2,11.0,11.8,-0.8,I-S1-V1-P1,-3.6,shot,true,severe -s3_shot_6i_38,79.1,13.3,3.0,3187,11.6,79.2,79.2,0.0,76.0,-3.2,76.2,97.5,-21.3,-3.0,18.3,-21.3,18.1,18.0,0.1,I-S1-V1-P1,-3.2,shot,true,severe -s3_shot_6i_41,82.5,9.9,-2.3,2620,13.6,71.3,71.3,0.0,66.7,-4.6,111.1,97.9,13.2,39.8,26.6,13.2,10.3,11.3,-1.0,I-S1-V0-P1,-4.6,shot,true,severe -s3_shot_6i_45,109.3,6.4,-9.0,2510,-10.9,109.6,109.6,0.0,113.1,3.5,166.5,145.4,21.1,56.9,35.8,21.1,13.5,12.9,0.6,I-S3-V0-P1,3.5,shot,true,severe -s3_shot_6i_49,71.2,7.7,16.1,2625,30.0,39.9,39.9,0.0,37.4,-2.5,77.3,70.3,7.0,37.4,30.4,7.0,4.2,4.5,-0.3,I-S1-V0-P1,-2.5,shot,true,moderate -s3_shot_7i_26,73.4,10.8,15.4,3561,30.0,56.6,56.6,0.0,58.4,1.8,57.5,79.3,-21.8,0.9,22.7,-21.8,10.7,9.6,1.1,I-S1-V1-P1,1.8,shot,true,severe -s3_shot_7i_31,76.4,17.5,-0.5,5122,1.8,85.0,85.0,0.0,80.2,-4.8,80.2,94.5,-14.3,-4.8,9.5,-14.3,24.3,28.4,-4.1,I-S1-V1-P2,-4.8,shot,true,severe -s3_shot_9i_1,89.0,15.1,-0.5,3563,11.3,106.7,106.7,0.0,105.3,-1.4,108.2,120.8,-12.6,1.5,14.1,-12.6,32.1,30.8,1.3,I-S2-V1-P1,-1.4,shot,true,severe -s3_shot_9i_2,71.3,23.9,5.5,4086,8.3,82.1,82.1,0.0,74.1,-8.0,78.3,87.4,-9.1,-3.8,5.3,-9.1,33.8,36.8,-3.0,I-S1-V2-P2,-8.0,shot,true,moderate -s3_shot_9i_5,84.0,19.4,3.8,5352,11.5,102.7,102.7,-0.0,100.1,-2.6,101.7,107.2,-5.5,-1.0,4.5,-5.5,36.3,41.8,-5.5,I-S1-V2-P2,-2.6,shot,true,moderate -s3_shot_driver_60,107.4,11.7,-8.6,3269,-14.8,138.5,138.5,0.0,138.5,0.0,138.9,153.8,-14.9,0.4,15.3,-14.9,31.6,34.0,-2.4,I-S3-V1-P1,,,false,severe -s3_shot_pw_64,69.6,28.6,0.2,5327,5.1,80.1,80.1,0.0,75.7,-4.4,92.0,82.4,9.6,11.9,2.3,9.6,42.7,46.4,-3.7,I-S1-V3-P2,-4.4,shot,true,moderate -s3_shot_pw_66,75.7,27.3,-1.2,6605,4.0,89.7,89.7,-0.0,87.1,-2.6,102.1,90.8,11.3,12.4,1.1,11.3,49.8,53.5,-3.7,I-S1-V3-P3,-2.6,shot,true,severe -s3_shot_pw_67,81.7,28.1,6.3,6510,12.7,100.0,100.0,0.0,100.0,0.0,106.8,101.1,5.7,6.8,1.1,5.7,61.0,65.0,-4.0,I-S1-V3-P3,,,false,moderate -s3_shot_pw_68,88.5,23.4,-0.1,6637,6.0,112.7,112.7,-0.0,116.1,3.4,120.2,114.1,6.1,7.5,1.4,6.1,57.2,63.4,-6.2,I-S2-V2-P3,3.4,shot,true,moderate -s3_shot_pw_69,74.1,23.6,0.2,5880,8.4,86.0,86.0,0.0,83.2,-2.8,84.9,88.8,-3.9,-1.1,2.8,-3.9,37.4,41.2,-3.8,I-S1-V2-P3,-2.8,shot,true,pass -wedge_shot_1,48.7,29.0,-1.3,5684,11.1,42.6,42.6,0.0,37.5,-5.1,46.2,46.9,-0.7,3.6,4.3,-0.7,18.9,21.3,-2.4,C-S0-V3-P3,-5.1,shot,true,pass -wedge_shot_2,51.8,37.0,2.4,5652,9.1,49.1,49.1,0.0,43.0,-6.1,52.8,50.1,2.7,3.7,1.0,2.7,31.1,35.3,-4.2,C-S0-V4-P3,-6.1,shot,true,pass -wedge_test_shot,66.4,23.2,-1.4,6449,7.1,70.6,70.6,0.0,65.6,-5.0,79.4,75.8,3.6,8.8,5.2,3.6,28.0,31.2,-3.2,I-S1-V2-P3,-5.0,shot,true,pass -wedge_test_shot2,54.7,26.8,1.6,4976,5.7,52.2,52.2,-0.0,46.8,-5.4,60.8,57.7,3.1,8.6,5.5,3.1,22.4,24.4,-2.0,C-S0-V3-P2,-5.4,shot,true,pass diff --git a/assets/data/openfairway_critical_carry_20260313_2310.csv.import b/assets/data/openfairway_critical_carry_20260313_2310.csv.import deleted file mode 100644 index ef1b1f4..0000000 --- a/assets/data/openfairway_critical_carry_20260313_2310.csv.import +++ /dev/null @@ -1,19 +0,0 @@ -[remap] - -importer="csv_translation" -type="Translation" -uid="uid://70aexuy2r1y2" - -[deps] - -files=["res://assets/data/openfairway_critical_carry_20260313_2310.speed.translation", "res://assets/data/openfairway_critical_carry_20260313_2310.vla.translation", "res://assets/data/openfairway_critical_carry_20260313_2310.hla.translation", "res://assets/data/openfairway_critical_carry_20260313_2310.total.translation", "res://assets/data/openfairway_critical_carry_20260313_2310.spin.translation", "res://assets/data/openfairway_critical_carry_20260313_2310.physics.translation", "res://assets/data/openfairway_critical_carry_20260313_2310.flightscope.translation", "res://assets/data/openfairway_critical_carry_20260313_2310.diff.translation", "res://assets/data/openfairway_critical_carry_20260313_2310.physics.translation", "res://assets/data/openfairway_critical_carry_20260313_2310.diff.translation", "res://assets/data/openfairway_critical_carry_20260313_2310.physics.translation", "res://assets/data/openfairway_critical_carry_20260313_2310.flightscope.translation", "res://assets/data/openfairway_critical_carry_20260313_2310.diff.translation", "res://assets/data/openfairway_critical_carry_20260313_2310.rollout.translation", "res://assets/data/openfairway_critical_carry_20260313_2310.rollout.translation", "res://assets/data/openfairway_critical_carry_20260313_2310.diff.translation", "res://assets/data/openfairway_critical_carry_20260313_2310.physics.translation", "res://assets/data/openfairway_critical_carry_20260313_2310.flightscope.translation", "res://assets/data/openfairway_critical_carry_20260313_2310.diff.translation", "res://assets/data/openfairway_critical_carry_20260313_2310.carry.translation", "res://assets/data/openfairway_critical_carry_20260313_2310.carry.translation", "res://assets/data/openfairway_critical_carry_20260313_2310.carry.translation", "res://assets/data/openfairway_critical_carry_20260313_2310.carry.translation", "res://assets/data/openfairway_critical_carry_20260313_2310.status.translation"] - -source_file="res://assets/data/openfairway_critical_carry_20260313_2310.csv" -dest_files=["res://assets/data/openfairway_critical_carry_20260313_2310.speed.translation", "res://assets/data/openfairway_critical_carry_20260313_2310.vla.translation", "res://assets/data/openfairway_critical_carry_20260313_2310.hla.translation", "res://assets/data/openfairway_critical_carry_20260313_2310.total.translation", "res://assets/data/openfairway_critical_carry_20260313_2310.spin.translation", "res://assets/data/openfairway_critical_carry_20260313_2310.physics.translation", "res://assets/data/openfairway_critical_carry_20260313_2310.flightscope.translation", "res://assets/data/openfairway_critical_carry_20260313_2310.diff.translation", "res://assets/data/openfairway_critical_carry_20260313_2310.physics.translation", "res://assets/data/openfairway_critical_carry_20260313_2310.diff.translation", "res://assets/data/openfairway_critical_carry_20260313_2310.physics.translation", "res://assets/data/openfairway_critical_carry_20260313_2310.flightscope.translation", "res://assets/data/openfairway_critical_carry_20260313_2310.diff.translation", "res://assets/data/openfairway_critical_carry_20260313_2310.rollout.translation", "res://assets/data/openfairway_critical_carry_20260313_2310.rollout.translation", "res://assets/data/openfairway_critical_carry_20260313_2310.diff.translation", "res://assets/data/openfairway_critical_carry_20260313_2310.physics.translation", "res://assets/data/openfairway_critical_carry_20260313_2310.flightscope.translation", "res://assets/data/openfairway_critical_carry_20260313_2310.diff.translation", "res://assets/data/openfairway_critical_carry_20260313_2310.carry.translation", "res://assets/data/openfairway_critical_carry_20260313_2310.carry.translation", "res://assets/data/openfairway_critical_carry_20260313_2310.carry.translation", "res://assets/data/openfairway_critical_carry_20260313_2310.carry.translation", "res://assets/data/openfairway_critical_carry_20260313_2310.status.translation"] - -[params] - -compress=1 -delimiter=0 -unescape_keys=false -unescape_translations=true diff --git a/assets/data/openfairway_critical_carry_20260313_2332.csv b/assets/data/openfairway_critical_carry_20260313_2332.csv deleted file mode 100644 index 3a00584..0000000 --- a/assets/data/openfairway_critical_carry_20260313_2332.csv +++ /dev/null @@ -1,100 +0,0 @@ -shot_name,speed_mph,vla_deg,hla_deg,total_spin_rpm,spin_axis_deg,physics_carry_yd,flightscope_carry_yd,diff_carry_yd,physics_carry_raw_yd,diff_carry_raw_yd,physics_total_yd,flightscope_total_yd,diff_total_yd,rollout_physics_yd,rollout_flightscope_yd,diff_rollout_yd,physics_apex_ft,flightscope_apex_ft,diff_apex_ft,carry_exception_regime,carry_exception_offset_yd,carry_exception_source,carry_exception_applied,status -s3_shot_driver_58,119.3,23.6,2.5,7093,3.3,174.2,163.2,11.0,181.2,18.0,200.9,163.9,37.0,26.7,0.7,26.0,120.9,125.7,-4.8,I-S3-V2-P3,7.0,regime,true,severe -s2_shot_21,127.3,7.2,-11.5,2321,-19.5,160.7,154.9,5.8,160.7,5.8,215.3,186.5,28.8,54.6,31.6,23.0,24.9,23.1,1.8,D-S4-V0-P0,,,false,severe -wood1,124.2,6.7,-8.1,4528,4.8,171.2,165.5,5.7,178.2,12.7,178.7,181.9,-3.2,7.5,16.4,-8.9,36.0,32.8,3.2,D-S4-V0-P2,7.0,regime,true,moderate -s3_shot_driver_52,102.1,31.3,3.1,8442,6.3,129.9,124.5,5.4,133.9,9.4,149.4,124.1,25.3,19.5,-0.4,19.9,117.9,119.3,-1.4,W-S2-V3-P4,4.0,regime,true,severe -s3_shot_driver_57,120.9,14.1,-5.2,1544,-8.0,172.5,177.6,-5.1,172.5,-5.1,177.3,197.0,-19.7,4.8,19.4,-14.6,47.4,50.9,-3.5,D-S4-V1-P0,,,false,severe -wood2,118.8,14.5,-3.3,3026,11.2,180.4,175.6,4.8,180.4,4.8,186.8,186.1,0.7,6.4,10.5,-4.1,57.7,59.3,-1.6,D-S3-V1-P1,,,false,moderate -s3_shot_driver_51,116.2,21.7,2.2,6409,3.2,167.3,162.9,4.4,174.3,11.4,193.9,164.3,29.6,26.6,1.4,25.2,109.3,108.7,0.6,I-S3-V2-P3,7.0,regime,true,severe -s3_shot_7i_30,90.2,17.6,-3.8,4508,-0.2,111.2,115.4,-4.2,115.2,-0.2,123.2,121.7,1.5,12.0,6.3,5.7,48.6,43.1,5.5,I-S2-V1-P2,4.0,regime,true,moderate -s3_shot_3w_24,123.4,6.3,-5.4,2752,-13.3,149.8,145.9,3.9,153.8,7.9,206.3,176.7,29.6,56.5,30.8,25.7,21.7,19.8,1.9,D-S4-V0-P1,4.0,regime,true,severe -s3_shot_6i_46,116.3,13.7,0.3,3008,10.7,171.1,167.3,3.8,171.1,3.8,175.8,179.3,-3.5,4.7,12.0,-7.3,50.1,51.6,-1.5,D-S3-V1-P1,,,false,moderate -s2_shot_27,113.0,17.6,-2.3,4292,12.2,161.1,164.5,-3.4,168.1,3.6,183.4,169.6,13.8,22.3,5.1,17.2,78.6,73.6,5.0,D-S3-V1-P2,7.0,regime,true,severe -s2_shot_19,128.6,12.5,-8.4,2514,5.1,191.4,194.5,-3.1,197.8,3.3,204.3,208.7,-4.4,12.9,14.2,-1.3,56.4,57.3,-0.9,D-S4-V1-P1,6.4,regime,true,moderate -s3_shot_6i_47,99.5,14.8,-2.9,4811,4.7,134.2,131.2,3.0,138.2,7.0,148.5,137.7,10.8,14.3,6.5,7.8,56.8,45.0,11.8,I-S2-V1-P2,4.0,regime,true,severe -s2_shot_23,125.5,8.6,-14.3,3062,-23.9,159.1,161.9,-2.8,166.1,4.2,166.1,185.0,-18.9,7.0,23.1,-16.1,31.1,31.0,0.1,D-S4-V0-P1,7.0,regime,true,severe -s2_shot_9,94.4,20.1,2.4,4020,16.3,123.7,126.5,-2.8,123.7,-2.8,136.0,132.5,3.5,12.3,6.0,6.3,62.1,54.8,7.3,I-S2-V2-P2,,,false,pass -s3_shot_7i_28,92.1,16.4,-3.6,4217,-0.4,115.1,117.9,-2.8,119.1,1.2,126.8,125.6,1.2,11.7,7.7,4.0,48.9,40.6,8.3,I-S2-V1-P2,4.0,regime,true,pass -s2_shot_26,117.0,18.4,-2.0,5035,9.7,173.3,170.7,2.6,173.3,2.6,197.3,174.2,23.1,24.0,3.5,20.5,112.3,88.1,24.2,I-S3-V2-P2,,,false,severe -driver2,124.6,13.2,-6.8,3994,-6.1,187.3,184.8,2.5,193.7,8.9,200.9,192.3,8.6,13.6,7.5,6.1,63.1,65.8,-2.7,D-S4-V1-P1,6.4,regime,true,moderate -s3_shot_driver_53,97.2,30.6,2.2,8926,6.0,120.1,117.6,2.5,124.1,6.5,135.0,117.1,17.9,14.9,-0.5,15.4,102.0,105.8,-3.8,W-S2-V3-P4,4.0,regime,true,severe -s3_shot_driver_55,117.5,7.5,-8.3,2150,-27.2,128.1,125.6,2.5,128.1,2.5,184.4,161.8,22.6,56.3,36.2,20.1,17.6,17.2,0.4,D-S3-V0-P0,,,false,severe -s3_shot_6i_43,94.1,13.9,-4.7,4616,1.7,119.7,117.3,2.4,123.7,6.4,129.5,128.6,0.9,9.8,11.3,-1.5,43.1,35.0,8.1,I-S2-V1-P2,4.0,regime,true,pass -s3_shot_7i_27,93.7,17.1,-1.4,4612,2.6,120.1,122.3,-2.2,124.1,1.8,132.6,128.3,4.3,12.5,6.0,6.5,54.0,46.0,8.0,I-S2-V1-P2,4.0,regime,true,pass -s3_shot_driver_56,118.7,17.1,-1.8,4554,2.8,174.4,176.6,-2.2,181.4,4.8,201.6,180.9,20.7,27.2,4.3,22.9,92.9,83.2,9.7,D-S3-V1-P2,7.0,regime,true,severe -s3_shot_6i_48,101.7,15.2,-3.0,4631,4.3,139.2,137.1,2.1,143.2,6.1,154.6,143.5,11.1,15.4,6.4,9.0,63.1,48.9,14.2,I-S2-V1-P2,4.0,regime,true,severe -s3_shot_7i_32,93.1,17.0,-1.0,3762,4.2,119.4,121.2,-1.8,119.4,-1.8,127.6,129.8,-2.2,8.2,8.6,-0.4,45.6,42.5,3.1,I-S2-V1-P1,,,false,pass -wood_low_test_shot,114.5,7.0,-0.6,1932,-1.4,124.4,122.6,1.8,124.4,1.8,181.8,158.9,22.9,57.4,36.3,21.1,16.1,15.7,0.4,D-S3-V0-P0,,,false,severe -s2_shot_12,90.8,24.5,-3.9,7261,4.9,117.1,115.4,1.7,120.6,5.2,125.9,116.4,9.5,8.8,1.0,7.8,66.4,71.5,-5.1,I-S2-V2-P3,3.5,regime,true,moderate -s2_shot_13,95.2,19.6,-1.1,5610,12.2,123.6,125.3,-1.7,127.1,1.8,131.7,128.7,3.0,8.1,3.4,4.7,52.5,58.4,-5.9,I-S2-V2-P3,3.5,regime,true,pass -5iron,102.1,17.4,1.5,5391,12.3,139.7,138.1,1.6,143.7,5.6,154.3,142.2,12.1,14.6,4.1,10.5,64.6,59.6,5.0,I-S2-V1-P2,4.0,regime,true,severe -s3_shot_7i_33,92.4,17.0,-0.6,3852,2.8,118.1,119.7,-1.6,118.1,-1.6,126.7,128.0,-1.3,8.6,8.3,0.3,46.7,42.0,4.7,I-S2-V1-P1,,,false,pass -s3_shot_9i_8,92.2,21.9,-6.3,5042,0.7,121.3,122.9,-1.6,121.3,-1.6,130.5,126.4,4.1,9.2,3.5,5.7,61.1,62.6,-1.5,I-S2-V2-P2,,,false,pass -s3_shot_9i_3,90.1,21.7,2.8,5243,11.2,115.9,117.3,-1.4,115.9,-1.4,121.8,120.7,1.1,5.9,3.4,2.5,52.4,57.7,-5.3,I-S2-V2-P2,,,false,pass -s3_shot_5i_12,74.2,10.2,-1.7,3321,15.8,59.6,58.4,1.2,59.6,1.2,58.4,81.9,-23.5,-1.2,23.5,-24.7,10.5,9.4,1.1,I-S1-V1-P1,,,false,severe -s3_shot_6i_40,62.1,6.8,27.0,2768,30.0,25.0,26.2,-1.2,25.0,-1.2,58.9,51.1,7.8,33.9,24.9,9.0,2.6,2.5,0.1,I-S1-V0-P1,,,false,moderate -s3_shot_6i_44,115.0,9.5,-6.7,2314,15.1,141.1,142.3,-1.2,141.1,-1.2,140.8,168.2,-27.4,-0.3,25.9,-26.2,25.3,26.6,-1.3,D-S3-V0-P0,,,false,severe -s3_shot_9i_9,90.1,22.1,-3.1,5351,1.2,116.9,118.1,-1.2,116.9,-1.2,123.0,121.1,1.9,6.1,3.0,3.1,54.0,60.1,-6.1,I-S2-V2-P2,,,false,pass -s2_shot_18,105.7,20.5,-1.7,5667,8.2,147.9,146.8,1.1,151.9,5.1,166.0,149.4,16.6,18.1,2.6,15.5,83.5,80.4,3.1,I-S3-V2-P3,4.0,regime,true,severe -s3_shot_3w_21,119.4,5.3,-3.4,1760,-10.5,115.7,114.6,1.1,115.7,1.1,177.1,160.5,16.6,61.4,45.9,15.5,11.2,10.9,0.3,D-S3-V0-P0,,,false,severe -s3_shot_5i_16,98.0,9.1,-2.1,3776,1.7,110.2,109.1,1.1,110.2,1.1,109.2,130.0,-20.8,-1.0,20.9,-21.9,19.5,19.7,-0.2,I-S2-V0-P1,,,false,severe -s3_shot_6i_42,77.2,13.1,-3.4,4057,4.1,75.5,76.6,-1.1,75.5,-1.1,75.5,92.9,-17.4,0.0,16.3,-16.3,18.3,17.5,0.8,I-S1-V1-P2,,,false,severe -s3_shot_9i_7,83.0,22.5,5.3,7008,9.7,102.2,101.1,1.1,102.2,1.1,104.2,102.6,1.6,2.0,1.5,0.5,47.3,51.5,-4.2,I-S1-V2-P3,,,false,pass -drive_test_shot,150.0,12.5,1.5,2335,-9.9,245.0,244.0,1.0,245.0,1.0,256.8,256.0,0.8,11.8,12.0,-0.2,80.0,80.6,-0.6,D-S4-V1-P0,,,false,pass -s3_shot_7i_29,107.6,13.8,-6.0,3633,4.7,149.4,148.4,1.0,149.4,1.0,152.5,158.3,-5.8,3.1,9.9,-6.8,42.8,46.3,-3.5,I-S3-V1-P1,,,false,moderate -s3_shot_driver_54,121.5,12.9,-5.3,3411,-10.0,177.2,178.2,-1.0,183.6,5.4,188.7,188.7,0.0,11.5,10.5,1.0,54.3,56.5,-2.2,D-S4-V1-P1,6.4,regime,true,pass -flop_test_shot,68.0,45.0,0.5,12000,0.8,62.7,61.8,0.9,62.7,0.9,63.1,60.3,2.8,0.4,-1.5,1.9,69.2,76.8,-7.6,W-S1-V4-P4,,,false,pass -s3_shot_driver_59,81.0,44.9,8.9,6735,12.4,82.8,83.7,-0.9,82.8,-0.9,100.9,83.2,17.7,18.1,-0.5,18.6,104.0,107.8,-3.8,W-S1-V4-P3,,,false,severe -driver3,119.1,16.0,-8.9,4935,-9.4,173.3,174.1,-0.8,180.3,6.2,201.8,178.5,23.3,28.5,4.4,24.1,99.6,78.5,21.1,D-S3-V1-P2,7.0,regime,true,severe -s3_shot_3w_23,115.8,8.9,-0.8,2804,2.2,148.5,147.7,0.8,148.5,0.8,148.2,170.9,-22.7,-0.3,23.2,-23.5,26.8,28.0,-1.2,D-S3-V0-P1,,,false,severe -driver4,119.0,15.5,-10.2,4454,-7.8,176.3,175.6,0.7,183.3,7.7,197.2,180.9,16.3,20.9,5.3,15.6,78.2,73.8,4.4,D-S3-V1-P2,7.0,regime,true,severe -s2_shot_22,123.3,14.0,-6.1,3104,10.0,184.7,185.4,-0.7,191.1,5.7,199.0,195.5,3.5,14.3,10.1,4.2,61.6,63.0,-1.4,D-S4-V1-P1,6.4,regime,true,pass -s2_shot_24,121.5,14.5,-11.2,3173,-6.8,182.3,183.0,-0.7,188.7,5.7,195.5,192.8,2.7,13.2,9.8,3.4,63.0,64.6,-1.6,D-S4-V1-P1,6.4,regime,true,pass -checked_test_shot,75.0,38.5,1.4,10701,5.7,77.0,77.6,-0.6,77.0,-0.6,78.6,77.5,1.1,1.6,-0.1,1.7,70.8,79.5,-8.7,W-S1-V4-P4,,,false,pass -s2_shot_15,88.1,14.2,-0.3,4985,19.4,100.7,101.3,-0.6,100.7,-0.6,100.8,113.1,-12.3,0.1,11.8,-11.7,27.0,28.9,-1.9,I-S2-V1-P2,,,false,severe -topped_test_shot,91.8,5.0,-0.9,2195,16.2,55.6,56.2,-0.6,55.6,-0.6,109.2,95.3,13.9,53.6,39.1,14.5,4.2,4.3,-0.1,I-S2-V0-P0,,,false,severe -s3_shot_6i_39,61.0,6.1,10.3,3285,22.0,23.5,24.0,-0.5,23.5,-0.5,53.7,47.3,6.4,30.2,23.3,6.9,2.1,2.1,0.0,I-S1-V0-P1,,,false,moderate -s3_shot_7i_25,83.3,13.2,3.0,3410,17.8,86.4,86.9,-0.5,86.4,-0.5,86.8,104.8,-18.0,0.4,17.9,-17.5,21.0,20.1,0.9,I-S1-V1-P1,,,false,severe -s2_shot_16,94.1,19.1,-5.9,5291,5.0,124.7,124.3,0.4,124.7,0.4,130.3,128.1,2.2,5.6,3.8,1.8,52.1,55.3,-3.2,I-S2-V2-P2,,,false,pass -s3_shot_6i_50,82.8,14.8,-1.4,3783,2.8,92.8,93.2,-0.4,92.8,-0.4,95.3,107.4,-12.1,2.5,14.2,-11.7,29.5,25.6,3.9,I-S1-V1-P1,,,false,severe -s3_shot_7i_34,104.2,14.7,-4.6,4081,1.9,142.9,142.5,0.4,146.9,4.4,153.2,150.6,2.6,10.3,8.1,2.2,51.3,48.2,3.1,I-S2-V1-P2,4.0,regime,true,pass -driver1,124.0,9.4,-9.5,2322,-24.8,158.3,158.0,0.3,158.3,0.3,158.3,184.0,-25.7,0.0,26.0,-26.0,29.5,30.2,-0.7,D-S4-V0-P0,,,false,severe -s2_shot_14,87.1,22.4,-2.0,5660,11.4,111.1,110.9,0.2,111.1,0.2,115.3,113.7,1.6,4.2,2.8,1.4,50.0,55.9,-5.9,I-S2-V2-P3,,,false,pass -s2_shot_20,120.9,15.0,-3.0,4245,9.6,179.6,179.4,0.2,186.6,7.2,196.4,185.3,11.1,16.8,5.9,10.9,70.5,72.3,-1.8,D-S4-V1-P2,7.0,regime,true,severe -bump_and_run,58.3,15.6,-0.8,1850,2.3,43.7,43.8,-0.1,34.7,-9.1,34.5,62.0,-27.5,-9.2,18.2,-27.4,8.0,10.1,-2.1,C-S0-V1-P0,-9.0,shot,true,severe -s3_shot_3w_19,121.3,5.6,-4.8,1662,-11.9,120.5,120.6,-0.1,120.5,-0.1,182.5,165.8,16.7,62.0,45.2,16.8,12.3,12.2,0.1,D-S4-V0-P0,,,false,severe -s3_shot_pw_65,81.2,28.4,2.9,6959,9.4,98.4,98.5,-0.1,98.4,-0.1,104.1,99.4,4.7,5.7,0.9,4.8,61.8,65.6,-3.8,I-S1-V3-P3,,,false,pass -approach_mid_iron_test_shot,93.9,22.9,-2.6,5375,2.0,125.8,125.8,0.0,125.8,0.0,136.4,128.5,7.9,10.6,2.7,7.9,64.6,69.3,-4.7,I-S2-V2-P2,,,false,moderate -bump_test_shot,78.3,5.6,-0.8,1850,2.3,39.0,39.0,0.0,36.9,-2.1,86.8,74.0,12.8,47.8,35.0,12.8,3.0,3.1,-0.1,I-S1-V0-P0,-2.1,shot,true,severe -p_wedge_shot_1,82.3,26.5,-3.1,4946,6.7,104.5,104.5,0.0,100.2,-4.3,109.5,107.3,2.2,5.0,2.8,2.2,55.1,60.5,-5.4,I-S1-V3-P2,-4.3,shot,true,pass -s2_shot_10,89.7,25.5,-3.1,6446,6.2,115.1,115.1,0.0,119.1,4.0,127.1,116.4,10.7,12.0,1.3,10.7,66.2,72.0,-5.8,I-S2-V3-P3,4.0,regime,true,severe -s2_shot_11,78.5,29.6,4.3,7350,10.7,93.0,93.0,0.0,91.3,-1.7,95.6,93.6,2.0,2.6,0.6,2.0,59.6,64.0,-4.4,I-S1-V3-P3,-1.7,shot,true,pass -s2_shot_17,122.9,14.4,-1.3,4119,6.7,184.0,184.0,0.0,191.2,7.2,199.5,190.3,9.2,15.5,6.3,9.2,68.2,71.8,-3.6,D-S4-V1-P2,7.2,regime,true,moderate -s3_shot_3w_22,108.9,5.6,-7.2,2501,-1.8,103.2,103.2,0.0,106.3,3.1,161.5,141.3,20.2,58.3,38.1,20.2,11.0,10.5,0.5,I-S3-V0-P1,3.1,shot,true,severe -s3_shot_5i_10,88.0,14.2,1.2,4065,8.4,103.1,103.1,0.0,106.1,3.0,109.6,116.7,-7.1,6.5,13.6,-7.1,34.3,28.4,5.9,I-S2-V1-P2,3.0,shot,true,moderate -s3_shot_5i_11,90.6,14.4,-0.2,3360,7.8,108.8,108.8,0.0,105.6,-3.2,106.9,124.1,-17.2,-1.9,15.3,-17.2,28.5,29.8,-1.3,I-S2-V1-P1,-3.2,shot,true,severe -s3_shot_5i_13,75.0,8.0,2.5,3921,3.4,53.9,53.9,0.0,56.5,2.6,89.0,78.9,10.1,35.1,25.0,10.1,7.4,6.8,0.6,I-S1-V0-P1,2.6,shot,true,severe -s3_shot_5i_15,86.9,9.3,-4.0,2509,-4.9,78.6,78.6,0.0,74.1,-4.5,121.3,106.6,14.7,42.7,28.0,14.7,11.0,12.1,-1.1,I-S2-V0-P1,-4.5,shot,true,severe -s3_shot_5i_17,56.5,10.0,24.1,5178,29.1,30.6,30.6,0.0,28.6,-2.0,45.0,46.9,-1.9,14.4,16.3,-1.9,4.2,4.5,-0.3,C-S0-V1-P2,-2.0,shot,true,pass -s3_shot_6i_35,80.5,15.3,-1.3,4667,-0.0,90.0,90.0,0.0,84.9,-5.1,84.9,101.5,-16.6,-5.1,11.5,-16.6,23.1,26.4,-3.3,I-S1-V1-P2,-5.1,shot,true,severe -s3_shot_6i_36,78.9,10.4,16.1,4166,25.1,67.8,67.8,0.0,69.9,2.1,68.3,89.1,-20.8,0.5,21.3,-20.8,12.4,11.8,0.6,I-S1-V1-P2,2.1,shot,true,severe -s3_shot_6i_37,82.6,10.2,11.0,3041,25.4,71.5,71.5,0.0,67.9,-3.6,109.4,97.2,12.2,37.9,25.7,12.2,11.0,11.8,-0.8,I-S1-V1-P1,-3.6,shot,true,severe -s3_shot_6i_38,79.1,13.3,3.0,3187,11.6,79.2,79.2,0.0,76.0,-3.2,76.2,97.5,-21.3,-3.0,18.3,-21.3,18.1,18.0,0.1,I-S1-V1-P1,-3.2,shot,true,severe -s3_shot_6i_41,82.5,9.9,-2.3,2620,13.6,71.3,71.3,0.0,66.7,-4.6,111.1,97.9,13.2,39.8,26.6,13.2,10.3,11.3,-1.0,I-S1-V0-P1,-4.6,shot,true,severe -s3_shot_6i_45,109.3,6.4,-9.0,2510,-10.9,109.6,109.6,0.0,113.1,3.5,166.5,145.4,21.1,56.9,35.8,21.1,13.5,12.9,0.6,I-S3-V0-P1,3.5,shot,true,severe -s3_shot_6i_49,71.2,7.7,16.1,2625,30.0,39.9,39.9,0.0,37.4,-2.5,77.3,70.3,7.0,37.4,30.4,7.0,4.2,4.5,-0.3,I-S1-V0-P1,-2.5,shot,true,moderate -s3_shot_7i_26,73.4,10.8,15.4,3561,30.0,56.6,56.6,0.0,58.4,1.8,57.5,79.3,-21.8,0.9,22.7,-21.8,10.7,9.6,1.1,I-S1-V1-P1,1.8,shot,true,severe -s3_shot_7i_31,76.4,17.5,-0.5,5122,1.8,85.0,85.0,0.0,80.2,-4.8,80.2,94.5,-14.3,-4.8,9.5,-14.3,24.3,28.4,-4.1,I-S1-V1-P2,-4.8,shot,true,severe -s3_shot_9i_1,89.0,15.1,-0.5,3563,11.3,106.7,106.7,0.0,105.3,-1.4,108.2,120.8,-12.6,1.5,14.1,-12.6,32.1,30.8,1.3,I-S2-V1-P1,-1.4,shot,true,severe -s3_shot_9i_2,71.3,23.9,5.5,4086,8.3,82.1,82.1,0.0,74.1,-8.0,78.3,87.4,-9.1,-3.8,5.3,-9.1,33.8,36.8,-3.0,I-S1-V2-P2,-8.0,shot,true,moderate -s3_shot_9i_5,84.0,19.4,3.8,5352,11.5,102.7,102.7,-0.0,100.1,-2.6,101.7,107.2,-5.5,-1.0,4.5,-5.5,36.3,41.8,-5.5,I-S1-V2-P2,-2.6,shot,true,moderate -s3_shot_driver_60,107.4,11.7,-8.6,3269,-14.8,138.5,138.5,0.0,138.5,0.0,138.9,153.8,-14.9,0.4,15.3,-14.9,31.6,34.0,-2.4,I-S3-V1-P1,,,false,severe -s3_shot_pw_64,69.6,28.6,0.2,5327,5.1,80.1,80.1,0.0,75.7,-4.4,92.0,82.4,9.6,11.9,2.3,9.6,42.7,46.4,-3.7,I-S1-V3-P2,-4.4,shot,true,moderate -s3_shot_pw_66,75.7,27.3,-1.2,6605,4.0,89.7,89.7,-0.0,87.1,-2.6,102.1,90.8,11.3,12.4,1.1,11.3,49.8,53.5,-3.7,I-S1-V3-P3,-2.6,shot,true,severe -s3_shot_pw_67,81.7,28.1,6.3,6510,12.7,100.0,100.0,0.0,100.0,0.0,106.8,101.1,5.7,6.8,1.1,5.7,61.0,65.0,-4.0,I-S1-V3-P3,,,false,moderate -s3_shot_pw_68,88.5,23.4,-0.1,6637,6.0,112.7,112.7,-0.0,116.1,3.4,120.2,114.1,6.1,7.5,1.4,6.1,57.2,63.4,-6.2,I-S2-V2-P3,3.4,shot,true,moderate -s3_shot_pw_69,74.1,23.6,0.2,5880,8.4,86.0,86.0,0.0,83.2,-2.8,84.9,88.8,-3.9,-1.1,2.8,-3.9,37.4,41.2,-3.8,I-S1-V2-P3,-2.8,shot,true,pass -wedge_shot_1,48.7,29.0,-1.3,5684,11.1,42.6,42.6,0.0,37.5,-5.1,46.2,46.9,-0.7,3.6,4.3,-0.7,18.9,21.3,-2.4,C-S0-V3-P3,-5.1,shot,true,pass -wedge_shot_2,51.8,37.0,2.4,5652,9.1,49.1,49.1,0.0,43.0,-6.1,52.8,50.1,2.7,3.7,1.0,2.7,31.1,35.3,-4.2,C-S0-V4-P3,-6.1,shot,true,pass -wedge_test_shot,66.4,23.2,-1.4,6449,7.1,70.6,70.6,0.0,65.6,-5.0,79.4,75.8,3.6,8.8,5.2,3.6,28.0,31.2,-3.2,I-S1-V2-P3,-5.0,shot,true,pass -wedge_test_shot2,54.7,26.8,1.6,4976,5.7,52.2,52.2,-0.0,46.8,-5.4,60.8,57.7,3.1,8.6,5.5,3.1,22.4,24.4,-2.0,C-S0-V3-P2,-5.4,shot,true,pass diff --git a/assets/data/openfairway_critical_overall_20260313_2006.csv b/assets/data/openfairway_critical_overall_20260313_2006.csv deleted file mode 100644 index 5f119a5..0000000 --- a/assets/data/openfairway_critical_overall_20260313_2006.csv +++ /dev/null @@ -1,100 +0,0 @@ -shot_name,speed_mph,vla_deg,hla_deg,total_spin_rpm,spin_axis_deg,physics_carry_yd,flightscope_carry_yd,diff_carry_yd,physics_total_yd,flightscope_total_yd,diff_total_yd,rollout_physics_yd,rollout_flightscope_yd,diff_rollout_yd,physics_apex_ft,flightscope_apex_ft,diff_apex_ft,status -s3_shot_driver_58,119.3,23.6,2.5,7093,3.3,181.2,163.2,18.0,200.9,163.9,37.0,19.7,0.7,19.0,120.9,125.7,-4.8,severe -s3_shot_3w_24,123.4,6.3,-5.4,2752,-13.3,153.8,145.9,7.9,206.3,176.7,29.6,52.5,30.8,21.7,21.7,19.8,1.9,severe -s3_shot_driver_51,116.2,21.7,2.2,6409,3.2,174.3,162.9,11.4,193.9,164.3,29.6,19.6,1.4,18.2,109.3,108.7,0.6,severe -s2_shot_21,127.3,7.2,-11.5,2321,-19.5,160.7,154.9,5.8,215.3,186.5,28.8,54.6,31.6,23.0,24.9,23.1,1.8,severe -bump_and_run,58.3,15.6,-0.8,1850,2.3,34.7,43.8,-9.1,34.5,62.0,-27.5,-0.2,18.2,-18.4,8.0,10.1,-2.1,severe -s3_shot_6i_44,115.0,9.5,-6.7,2314,15.1,141.1,142.3,-1.2,140.8,168.2,-27.4,-0.3,25.9,-26.2,25.3,26.6,-1.3,severe -driver1,124.0,9.4,-9.5,2322,-24.8,158.3,158.0,0.3,158.3,184.0,-25.7,0.0,26.0,-26.0,29.5,30.2,-0.7,severe -s3_shot_driver_52,102.1,31.3,3.1,8442,6.3,133.9,124.5,9.4,149.4,124.1,25.3,15.5,-0.4,15.9,117.9,119.3,-1.4,severe -s3_shot_5i_12,74.2,10.2,-1.7,3321,15.8,59.6,58.4,1.2,58.4,81.9,-23.5,-1.2,23.5,-24.7,10.5,9.4,1.1,severe -driver3,119.1,16.0,-8.9,4935,-9.4,180.3,174.1,6.2,201.8,178.5,23.3,21.5,4.4,17.1,99.6,78.5,21.1,severe -s2_shot_26,117.0,18.4,-2.0,5035,9.7,173.3,170.7,2.6,197.3,174.2,23.1,24.0,3.5,20.5,112.3,88.1,24.2,severe -wood_low_test_shot,114.5,7.0,-0.6,1932,-1.4,124.4,122.6,1.8,181.8,158.9,22.9,57.4,36.3,21.1,16.1,15.7,0.4,severe -s3_shot_3w_23,115.8,8.9,-0.8,2804,2.2,148.5,147.7,0.8,148.2,170.9,-22.7,-0.3,23.2,-23.5,26.8,28.0,-1.2,severe -s3_shot_driver_55,117.5,7.5,-8.3,2150,-27.2,128.1,125.6,2.5,184.4,161.8,22.6,56.3,36.2,20.1,17.6,17.2,0.4,severe -s3_shot_7i_26,73.4,10.8,15.4,3561,30.0,58.4,56.6,1.8,57.5,79.3,-21.8,-0.9,22.7,-23.6,10.7,9.6,1.1,severe -s3_shot_6i_38,79.1,13.3,3.0,3187,11.6,76.0,79.2,-3.2,76.2,97.5,-21.3,0.2,18.3,-18.1,18.1,18.0,0.1,severe -s3_shot_6i_45,109.3,6.4,-9.0,2510,-10.9,113.1,109.6,3.5,166.5,145.4,21.1,53.4,35.8,17.6,13.5,12.9,0.6,severe -s3_shot_5i_16,98.0,9.1,-2.1,3776,1.7,110.2,109.1,1.1,109.2,130.0,-20.8,-1.0,20.9,-21.9,19.5,19.7,-0.2,severe -s3_shot_6i_36,78.9,10.4,16.1,4166,25.1,69.9,67.8,2.1,68.3,89.1,-20.8,-1.6,21.3,-22.9,12.4,11.8,0.6,severe -s3_shot_driver_56,118.7,17.1,-1.8,4554,2.8,181.4,176.6,4.8,201.6,180.9,20.7,20.2,4.3,15.9,92.9,83.2,9.7,severe -s3_shot_3w_22,108.9,5.6,-7.2,2501,-1.8,106.3,103.2,3.1,161.5,141.3,20.2,55.2,38.1,17.1,11.0,10.5,0.5,severe -s3_shot_driver_57,120.9,14.1,-5.2,1544,-8.0,172.5,177.6,-5.1,177.3,197.0,-19.7,4.8,19.4,-14.6,47.4,50.9,-3.5,severe -s2_shot_23,125.5,8.6,-14.3,3062,-23.9,166.1,161.9,4.2,166.1,185.0,-18.9,0.0,23.1,-23.1,31.1,31.0,0.1,severe -s3_shot_7i_25,83.3,13.2,3.0,3410,17.8,86.4,86.9,-0.5,86.8,104.8,-18.0,0.4,17.9,-17.5,21.0,20.1,0.9,severe -s3_shot_driver_53,97.2,30.6,2.2,8926,6.0,124.1,117.6,6.5,135.0,117.1,17.9,10.9,-0.5,11.4,102.0,105.8,-3.8,severe -s3_shot_driver_59,81.0,44.9,8.9,6735,12.4,82.8,83.7,-0.9,100.9,83.2,17.7,18.1,-0.5,18.6,104.0,107.8,-3.8,severe -s3_shot_6i_42,77.2,13.1,-3.4,4057,4.1,75.5,76.6,-1.1,75.5,92.9,-17.4,0.0,16.3,-16.3,18.3,17.5,0.8,severe -s3_shot_5i_11,90.6,14.4,-0.2,3360,7.8,105.6,108.8,-3.2,106.9,124.1,-17.2,1.3,15.3,-14.0,28.5,29.8,-1.3,severe -s3_shot_3w_19,121.3,5.6,-4.8,1662,-11.9,120.5,120.6,-0.1,182.5,165.8,16.7,62.0,45.2,16.8,12.3,12.2,0.1,severe -s2_shot_18,105.7,20.5,-1.7,5667,8.2,151.9,146.8,5.1,166.0,149.4,16.6,14.1,2.6,11.5,83.5,80.4,3.1,severe -s3_shot_3w_21,119.4,5.3,-3.4,1760,-10.5,115.7,114.6,1.1,177.1,160.5,16.6,61.4,45.9,15.5,11.2,10.9,0.3,severe -s3_shot_6i_35,80.5,15.3,-1.3,4667,-0.0,84.9,90.0,-5.1,84.9,101.5,-16.6,0.0,11.5,-11.5,23.1,26.4,-3.3,severe -driver4,119.0,15.5,-10.2,4454,-7.8,183.3,175.6,7.7,197.2,180.9,16.3,13.9,5.3,8.6,78.2,73.8,4.4,severe -s3_shot_driver_60,107.4,11.7,-8.6,3269,-14.8,138.5,138.5,0.0,138.9,153.8,-14.9,0.4,15.3,-14.9,31.6,34.0,-2.4,severe -s3_shot_5i_15,86.9,9.3,-4.0,2509,-4.9,74.1,78.6,-4.5,121.3,106.6,14.7,47.2,28.0,19.2,11.0,12.1,-1.1,severe -s3_shot_7i_31,76.4,17.5,-0.5,5122,1.8,80.2,85.0,-4.8,80.2,94.5,-14.3,0.0,9.5,-9.5,24.3,28.4,-4.1,severe -topped_test_shot,91.8,5.0,-0.9,2195,16.2,55.6,56.2,-0.6,109.2,95.3,13.9,53.6,39.1,14.5,4.2,4.3,-0.1,severe -s2_shot_27,113.0,17.6,-2.3,4292,12.2,168.1,164.5,3.6,183.4,169.6,13.8,15.3,5.1,10.2,78.6,73.6,5.0,severe -s3_shot_6i_41,82.5,9.9,-2.3,2620,13.6,66.7,71.3,-4.6,111.1,97.9,13.2,44.4,26.6,17.8,10.3,11.3,-1.0,severe -bump_test_shot,78.3,5.6,-0.8,1850,2.3,36.9,39.0,-2.1,86.8,74.0,12.8,49.9,35.0,14.9,3.0,3.1,-0.1,severe -wood1,124.2,6.7,-8.1,4528,4.8,178.2,165.5,12.7,178.7,181.9,-3.2,0.5,16.4,-15.9,36.0,32.8,3.2,severe -s3_shot_9i_1,89.0,15.1,-0.5,3563,11.3,105.3,106.7,-1.4,108.2,120.8,-12.6,2.9,14.1,-11.2,32.1,30.8,1.3,severe -s2_shot_15,88.1,14.2,-0.3,4985,19.4,100.7,101.3,-0.6,100.8,113.1,-12.3,0.1,11.8,-11.7,27.0,28.9,-1.9,severe -s3_shot_6i_37,82.6,10.2,11.0,3041,25.4,67.9,71.5,-3.6,109.4,97.2,12.2,41.5,25.7,15.8,11.0,11.8,-0.8,severe -5iron,102.1,17.4,1.5,5391,12.3,143.7,138.1,5.6,154.3,142.2,12.1,10.6,4.1,6.5,64.6,59.6,5.0,severe -s3_shot_6i_50,82.8,14.8,-1.4,3783,2.8,92.8,93.2,-0.4,95.3,107.4,-12.1,2.5,14.2,-11.7,29.5,25.6,3.9,severe -s3_shot_pw_66,75.7,27.3,-1.2,6605,4.0,87.1,89.7,-2.6,102.1,90.8,11.3,15.0,1.1,13.9,49.8,53.5,-3.7,severe -s2_shot_20,120.9,15.0,-3.0,4245,9.6,186.6,179.4,7.2,196.4,185.3,11.1,9.8,5.9,3.9,70.5,72.3,-1.8,severe -s3_shot_6i_48,101.7,15.2,-3.0,4631,4.3,143.2,137.1,6.1,154.6,143.5,11.1,11.4,6.4,5.0,63.1,48.9,14.2,severe -s3_shot_6i_47,99.5,14.8,-2.9,4811,4.7,138.2,131.2,7.0,148.5,137.7,10.8,10.3,6.5,3.8,56.8,45.0,11.8,severe -s2_shot_10,89.7,25.5,-3.1,6446,6.2,119.1,115.1,4.0,127.1,116.4,10.7,8.0,1.3,6.7,66.2,72.0,-5.8,severe -s3_shot_5i_13,75.0,8.0,2.5,3921,3.4,56.5,53.9,2.6,89.0,78.9,10.1,32.5,25.0,7.5,7.4,6.8,0.6,severe -s3_shot_pw_64,69.6,28.6,0.2,5327,5.1,75.7,80.1,-4.4,92.0,82.4,9.6,16.3,2.3,14.0,42.7,46.4,-3.7,moderate -s2_shot_12,90.8,24.5,-3.9,7261,4.9,120.6,115.4,5.2,125.9,116.4,9.5,5.3,1.0,4.3,66.4,71.5,-5.1,moderate -s2_shot_17,122.9,14.4,-1.3,4119,6.7,191.2,184.0,7.2,199.5,190.3,9.2,8.3,6.3,2.0,68.2,71.8,-3.6,severe -s3_shot_9i_2,71.3,23.9,5.5,4086,8.3,74.1,82.1,-8.0,78.3,87.4,-9.1,4.2,5.3,-1.1,33.8,36.8,-3.0,severe -driver2,124.6,13.2,-6.8,3994,-6.1,193.7,184.8,8.9,200.9,192.3,8.6,7.2,7.5,-0.3,63.1,65.8,-2.7,severe -approach_mid_iron_test_shot,93.9,22.9,-2.6,5375,2.0,125.8,125.8,0.0,136.4,128.5,7.9,10.6,2.7,7.9,64.6,69.3,-4.7,moderate -s3_shot_6i_40,62.1,6.8,27.0,2768,30.0,25.0,26.2,-1.2,58.9,51.1,7.8,33.9,24.9,9.0,2.6,2.5,0.1,moderate -s3_shot_5i_10,88.0,14.2,1.2,4065,8.4,106.1,103.1,3.0,109.6,116.7,-7.1,3.5,13.6,-10.1,34.3,28.4,5.9,moderate -s3_shot_6i_49,71.2,7.7,16.1,2625,30.0,37.4,39.9,-2.5,77.3,70.3,7.0,39.9,30.4,9.5,4.2,4.5,-0.3,moderate -s3_shot_6i_39,61.0,6.1,10.3,3285,22.0,23.5,24.0,-0.5,53.7,47.3,6.4,30.2,23.3,6.9,2.1,2.1,0.0,moderate -s3_shot_6i_43,94.1,13.9,-4.7,4616,1.7,123.7,117.3,6.4,129.5,128.6,0.9,5.8,11.3,-5.5,43.1,35.0,8.1,moderate -s3_shot_pw_68,88.5,23.4,-0.1,6637,6.0,116.1,112.7,3.4,120.2,114.1,6.1,4.1,1.4,2.7,57.2,63.4,-6.2,moderate -wedge_shot_2,51.8,37.0,2.4,5652,9.1,43.0,49.1,-6.1,52.8,50.1,2.7,9.8,1.0,8.8,31.1,35.3,-4.2,moderate -s3_shot_7i_29,107.6,13.8,-6.0,3633,4.7,149.4,148.4,1.0,152.5,158.3,-5.8,3.1,9.9,-6.8,42.8,46.3,-3.5,moderate -s2_shot_22,123.3,14.0,-6.1,3104,10.0,191.1,185.4,5.7,199.0,195.5,3.5,7.9,10.1,-2.2,61.6,63.0,-1.4,moderate -s2_shot_24,121.5,14.5,-11.2,3173,-6.8,188.7,183.0,5.7,195.5,192.8,2.7,6.8,9.8,-3.0,63.0,64.6,-1.6,moderate -s3_shot_pw_67,81.7,28.1,6.3,6510,12.7,100.0,100.0,0.0,106.8,101.1,5.7,6.8,1.1,5.7,61.0,65.0,-4.0,moderate -s3_shot_9i_5,84.0,19.4,3.8,5352,11.5,100.1,102.7,-2.6,101.7,107.2,-5.5,1.6,4.5,-2.9,36.3,41.8,-5.5,moderate -s3_shot_driver_54,121.5,12.9,-5.3,3411,-10.0,183.6,178.2,5.4,188.7,188.7,0.0,5.1,10.5,-5.4,54.3,56.5,-2.2,moderate -wedge_test_shot2,54.7,26.8,1.6,4976,5.7,46.8,52.2,-5.4,60.8,57.7,3.1,14.0,5.5,8.5,22.4,24.4,-2.0,moderate -wedge_shot_1,48.7,29.0,-1.3,5684,11.1,37.5,42.6,-5.1,46.2,46.9,-0.7,8.7,4.3,4.4,18.9,21.3,-2.4,moderate -wedge_test_shot,66.4,23.2,-1.4,6449,7.1,65.6,70.6,-5.0,79.4,75.8,3.6,13.8,5.2,8.6,28.0,31.2,-3.2,moderate -wood2,118.8,14.5,-3.3,3026,11.2,180.4,175.6,4.8,186.8,186.1,0.7,6.4,10.5,-4.1,57.7,59.3,-1.6,moderate -s3_shot_pw_65,81.2,28.4,2.9,6959,9.4,98.4,98.5,-0.1,104.1,99.4,4.7,5.7,0.9,4.8,61.8,65.6,-3.8,pass -s2_shot_19,128.6,12.5,-8.4,2514,5.1,197.8,194.5,3.3,204.3,208.7,-4.4,6.5,14.2,-7.7,56.4,57.3,-0.9,moderate -s3_shot_7i_34,104.2,14.7,-4.6,4081,1.9,146.9,142.5,4.4,153.2,150.6,2.6,6.3,8.1,-1.8,51.3,48.2,3.1,moderate -p_wedge_shot_1,82.3,26.5,-3.1,4946,6.7,100.2,104.5,-4.3,109.5,107.3,2.2,9.3,2.8,6.5,55.1,60.5,-5.4,moderate -s3_shot_7i_27,93.7,17.1,-1.4,4612,2.6,124.1,122.3,1.8,132.6,128.3,4.3,8.5,6.0,2.5,54.0,46.0,8.0,pass -s3_shot_9i_8,92.2,21.9,-6.3,5042,0.7,121.3,122.9,-1.6,130.5,126.4,4.1,9.2,3.5,5.7,61.1,62.6,-1.5,pass -s3_shot_pw_69,74.1,23.6,0.2,5880,8.4,83.2,86.0,-2.8,84.9,88.8,-3.9,1.7,2.8,-1.1,37.4,41.2,-3.8,pass -s3_shot_6i_46,116.3,13.7,0.3,3008,10.7,171.1,167.3,3.8,175.8,179.3,-3.5,4.7,12.0,-7.3,50.1,51.6,-1.5,moderate -s2_shot_9,94.4,20.1,2.4,4020,16.3,123.7,126.5,-2.8,136.0,132.5,3.5,12.3,6.0,6.3,62.1,54.8,7.3,pass -s2_shot_13,95.2,19.6,-1.1,5610,12.2,127.1,125.3,1.8,131.7,128.7,3.0,4.6,3.4,1.2,52.5,58.4,-5.9,pass -flop_test_shot,68.0,45.0,0.5,12000,0.8,62.7,61.8,0.9,63.1,60.3,2.8,0.4,-1.5,1.9,69.2,76.8,-7.6,pass -s2_shot_16,94.1,19.1,-5.9,5291,5.0,124.7,124.3,0.4,130.3,128.1,2.2,5.6,3.8,1.8,52.1,55.3,-3.2,pass -s3_shot_7i_32,93.1,17.0,-1.0,3762,4.2,119.4,121.2,-1.8,127.6,129.8,-2.2,8.2,8.6,-0.4,45.6,42.5,3.1,pass -s2_shot_11,78.5,29.6,4.3,7350,10.7,91.3,93.0,-1.7,95.6,93.6,2.0,4.3,0.6,3.7,59.6,64.0,-4.4,pass -s3_shot_5i_17,56.5,10.0,24.1,5178,29.1,28.6,30.6,-2.0,45.0,46.9,-1.9,16.4,16.3,0.1,4.2,4.5,-0.3,pass -s3_shot_9i_9,90.1,22.1,-3.1,5351,1.2,116.9,118.1,-1.2,123.0,121.1,1.9,6.1,3.0,3.1,54.0,60.1,-6.1,pass -s2_shot_14,87.1,22.4,-2.0,5660,11.4,111.1,110.9,0.2,115.3,113.7,1.6,4.2,2.8,1.4,50.0,55.9,-5.9,pass -s3_shot_7i_33,92.4,17.0,-0.6,3852,2.8,118.1,119.7,-1.6,126.7,128.0,-1.3,8.6,8.3,0.3,46.7,42.0,4.7,pass -s3_shot_9i_7,83.0,22.5,5.3,7008,9.7,102.2,101.1,1.1,104.2,102.6,1.6,2.0,1.5,0.5,47.3,51.5,-4.2,pass -s3_shot_7i_30,90.2,17.6,-3.8,4508,-0.2,115.2,115.4,-0.2,123.2,121.7,1.5,8.0,6.3,1.7,48.6,43.1,5.5,pass -s3_shot_9i_3,90.1,21.7,2.8,5243,11.2,115.9,117.3,-1.4,121.8,120.7,1.1,5.9,3.4,2.5,52.4,57.7,-5.3,pass -s3_shot_7i_28,92.1,16.4,-3.6,4217,-0.4,119.1,117.9,1.2,126.8,125.6,1.2,7.7,7.7,0.0,48.9,40.6,8.3,pass -checked_test_shot,75.0,38.5,1.4,10701,5.7,77.0,77.6,-0.6,78.6,77.5,1.1,1.6,-0.1,1.7,70.8,79.5,-8.7,pass -drive_test_shot,150.0,12.5,1.5,2335,-9.9,245.0,244.0,1.0,256.8,256.0,0.8,11.8,12.0,-0.2,80.0,80.6,-0.6,pass diff --git a/assets/data/openfairway_critical_overall_20260313_2006.csv.import b/assets/data/openfairway_critical_overall_20260313_2006.csv.import deleted file mode 100644 index ee6d074..0000000 --- a/assets/data/openfairway_critical_overall_20260313_2006.csv.import +++ /dev/null @@ -1,19 +0,0 @@ -[remap] - -importer="csv_translation" -type="Translation" -uid="uid://bb0mux541daq3" - -[deps] - -files=["res://assets/data/openfairway_critical_overall_20260313_2006.speed.translation", "res://assets/data/openfairway_critical_overall_20260313_2006.vla.translation", "res://assets/data/openfairway_critical_overall_20260313_2006.hla.translation", "res://assets/data/openfairway_critical_overall_20260313_2006.total.translation", "res://assets/data/openfairway_critical_overall_20260313_2006.spin.translation", "res://assets/data/openfairway_critical_overall_20260313_2006.physics.translation", "res://assets/data/openfairway_critical_overall_20260313_2006.flightscope.translation", "res://assets/data/openfairway_critical_overall_20260313_2006.diff.translation", "res://assets/data/openfairway_critical_overall_20260313_2006.physics.translation", "res://assets/data/openfairway_critical_overall_20260313_2006.flightscope.translation", "res://assets/data/openfairway_critical_overall_20260313_2006.diff.translation", "res://assets/data/openfairway_critical_overall_20260313_2006.rollout.translation", "res://assets/data/openfairway_critical_overall_20260313_2006.rollout.translation", "res://assets/data/openfairway_critical_overall_20260313_2006.diff.translation", "res://assets/data/openfairway_critical_overall_20260313_2006.physics.translation", "res://assets/data/openfairway_critical_overall_20260313_2006.flightscope.translation", "res://assets/data/openfairway_critical_overall_20260313_2006.diff.translation", "res://assets/data/openfairway_critical_overall_20260313_2006.status.translation"] - -source_file="res://assets/data/openfairway_critical_overall_20260313_2006.csv" -dest_files=["res://assets/data/openfairway_critical_overall_20260313_2006.speed.translation", "res://assets/data/openfairway_critical_overall_20260313_2006.vla.translation", "res://assets/data/openfairway_critical_overall_20260313_2006.hla.translation", "res://assets/data/openfairway_critical_overall_20260313_2006.total.translation", "res://assets/data/openfairway_critical_overall_20260313_2006.spin.translation", "res://assets/data/openfairway_critical_overall_20260313_2006.physics.translation", "res://assets/data/openfairway_critical_overall_20260313_2006.flightscope.translation", "res://assets/data/openfairway_critical_overall_20260313_2006.diff.translation", "res://assets/data/openfairway_critical_overall_20260313_2006.physics.translation", "res://assets/data/openfairway_critical_overall_20260313_2006.flightscope.translation", "res://assets/data/openfairway_critical_overall_20260313_2006.diff.translation", "res://assets/data/openfairway_critical_overall_20260313_2006.rollout.translation", "res://assets/data/openfairway_critical_overall_20260313_2006.rollout.translation", "res://assets/data/openfairway_critical_overall_20260313_2006.diff.translation", "res://assets/data/openfairway_critical_overall_20260313_2006.physics.translation", "res://assets/data/openfairway_critical_overall_20260313_2006.flightscope.translation", "res://assets/data/openfairway_critical_overall_20260313_2006.diff.translation", "res://assets/data/openfairway_critical_overall_20260313_2006.status.translation"] - -[params] - -compress=1 -delimiter=0 -unescape_keys=false -unescape_translations=true diff --git a/assets/data/openfairway_critical_overall_20260313_2310.csv b/assets/data/openfairway_critical_overall_20260313_2310.csv deleted file mode 100644 index dec7669..0000000 --- a/assets/data/openfairway_critical_overall_20260313_2310.csv +++ /dev/null @@ -1,100 +0,0 @@ -shot_name,speed_mph,vla_deg,hla_deg,total_spin_rpm,spin_axis_deg,physics_carry_yd,flightscope_carry_yd,diff_carry_yd,physics_carry_raw_yd,diff_carry_raw_yd,physics_total_yd,flightscope_total_yd,diff_total_yd,rollout_physics_yd,rollout_flightscope_yd,diff_rollout_yd,physics_apex_ft,flightscope_apex_ft,diff_apex_ft,carry_exception_regime,carry_exception_offset_yd,carry_exception_source,carry_exception_applied,status -s3_shot_driver_58,119.3,23.6,2.5,7093,3.3,181.2,163.2,18.0,181.2,18.0,200.9,163.9,37.0,19.7,0.7,19.0,120.9,125.7,-4.8,I-S3-V2-P3,,,false,severe -s3_shot_3w_24,123.4,6.3,-5.4,2752,-13.3,153.8,145.9,7.9,153.8,7.9,206.3,176.7,29.6,52.5,30.8,21.7,21.7,19.8,1.9,D-S4-V0-P1,,,false,severe -s3_shot_driver_51,116.2,21.7,2.2,6409,3.2,174.3,162.9,11.4,174.3,11.4,193.9,164.3,29.6,19.6,1.4,18.2,109.3,108.7,0.6,I-S3-V2-P3,,,false,severe -s2_shot_21,127.3,7.2,-11.5,2321,-19.5,160.7,154.9,5.8,160.7,5.8,215.3,186.5,28.8,54.6,31.6,23.0,24.9,23.1,1.8,D-S4-V0-P0,,,false,severe -bump_and_run,58.3,15.6,-0.8,1850,2.3,43.7,43.8,-0.1,34.7,-9.1,34.5,62.0,-27.5,-9.2,18.2,-27.4,8.0,10.1,-2.1,C-S0-V1-P0,-9.0,shot,true,severe -s3_shot_6i_44,115.0,9.5,-6.7,2314,15.1,141.1,142.3,-1.2,141.1,-1.2,140.8,168.2,-27.4,-0.3,25.9,-26.2,25.3,26.6,-1.3,D-S3-V0-P0,,,false,severe -driver1,124.0,9.4,-9.5,2322,-24.8,158.3,158.0,0.3,158.3,0.3,158.3,184.0,-25.7,0.0,26.0,-26.0,29.5,30.2,-0.7,D-S4-V0-P0,,,false,severe -s3_shot_driver_52,102.1,31.3,3.1,8442,6.3,133.9,124.5,9.4,133.9,9.4,149.4,124.1,25.3,15.5,-0.4,15.9,117.9,119.3,-1.4,W-S2-V3-P4,,,false,severe -s3_shot_5i_12,74.2,10.2,-1.7,3321,15.8,59.6,58.4,1.2,59.6,1.2,58.4,81.9,-23.5,-1.2,23.5,-24.7,10.5,9.4,1.1,I-S1-V1-P1,,,false,severe -driver3,119.1,16.0,-8.9,4935,-9.4,180.3,174.1,6.2,180.3,6.2,201.8,178.5,23.3,21.5,4.4,17.1,99.6,78.5,21.1,D-S3-V1-P2,,,false,severe -s2_shot_26,117.0,18.4,-2.0,5035,9.7,173.3,170.7,2.6,173.3,2.6,197.3,174.2,23.1,24.0,3.5,20.5,112.3,88.1,24.2,I-S3-V2-P2,,,false,severe -wood_low_test_shot,114.5,7.0,-0.6,1932,-1.4,124.4,122.6,1.8,124.4,1.8,181.8,158.9,22.9,57.4,36.3,21.1,16.1,15.7,0.4,D-S3-V0-P0,,,false,severe -s3_shot_3w_23,115.8,8.9,-0.8,2804,2.2,148.5,147.7,0.8,148.5,0.8,148.2,170.9,-22.7,-0.3,23.2,-23.5,26.8,28.0,-1.2,D-S3-V0-P1,,,false,severe -s3_shot_driver_55,117.5,7.5,-8.3,2150,-27.2,128.1,125.6,2.5,128.1,2.5,184.4,161.8,22.6,56.3,36.2,20.1,17.6,17.2,0.4,D-S3-V0-P0,,,false,severe -s3_shot_7i_26,73.4,10.8,15.4,3561,30.0,56.6,56.6,0.0,58.4,1.8,57.5,79.3,-21.8,0.9,22.7,-21.8,10.7,9.6,1.1,I-S1-V1-P1,1.8,shot,true,severe -s3_shot_6i_38,79.1,13.3,3.0,3187,11.6,79.2,79.2,0.0,76.0,-3.2,76.2,97.5,-21.3,-3.0,18.3,-21.3,18.1,18.0,0.1,I-S1-V1-P1,-3.2,shot,true,severe -s3_shot_6i_45,109.3,6.4,-9.0,2510,-10.9,109.6,109.6,0.0,113.1,3.5,166.5,145.4,21.1,56.9,35.8,21.1,13.5,12.9,0.6,I-S3-V0-P1,3.5,shot,true,severe -s3_shot_5i_16,98.0,9.1,-2.1,3776,1.7,110.2,109.1,1.1,110.2,1.1,109.2,130.0,-20.8,-1.0,20.9,-21.9,19.5,19.7,-0.2,I-S2-V0-P1,,,false,severe -s3_shot_6i_36,78.9,10.4,16.1,4166,25.1,67.8,67.8,0.0,69.9,2.1,68.3,89.1,-20.8,0.5,21.3,-20.8,12.4,11.8,0.6,I-S1-V1-P2,2.1,shot,true,severe -s3_shot_driver_56,118.7,17.1,-1.8,4554,2.8,181.4,176.6,4.8,181.4,4.8,201.6,180.9,20.7,20.2,4.3,15.9,92.9,83.2,9.7,D-S3-V1-P2,,,false,severe -s3_shot_3w_22,108.9,5.6,-7.2,2501,-1.8,103.2,103.2,0.0,106.3,3.1,161.5,141.3,20.2,58.3,38.1,20.2,11.0,10.5,0.5,I-S3-V0-P1,3.1,shot,true,severe -s3_shot_driver_57,120.9,14.1,-5.2,1544,-8.0,172.5,177.6,-5.1,172.5,-5.1,177.3,197.0,-19.7,4.8,19.4,-14.6,47.4,50.9,-3.5,D-S4-V1-P0,,,false,severe -s2_shot_23,125.5,8.6,-14.3,3062,-23.9,166.1,161.9,4.2,166.1,4.2,166.1,185.0,-18.9,0.0,23.1,-23.1,31.1,31.0,0.1,D-S4-V0-P1,,,false,severe -s3_shot_7i_25,83.3,13.2,3.0,3410,17.8,86.4,86.9,-0.5,86.4,-0.5,86.8,104.8,-18.0,0.4,17.9,-17.5,21.0,20.1,0.9,I-S1-V1-P1,,,false,severe -s3_shot_driver_53,97.2,30.6,2.2,8926,6.0,124.1,117.6,6.5,124.1,6.5,135.0,117.1,17.9,10.9,-0.5,11.4,102.0,105.8,-3.8,W-S2-V3-P4,,,false,severe -s3_shot_driver_59,81.0,44.9,8.9,6735,12.4,82.8,83.7,-0.9,82.8,-0.9,100.9,83.2,17.7,18.1,-0.5,18.6,104.0,107.8,-3.8,W-S1-V4-P3,,,false,severe -s3_shot_6i_42,77.2,13.1,-3.4,4057,4.1,75.5,76.6,-1.1,75.5,-1.1,75.5,92.9,-17.4,0.0,16.3,-16.3,18.3,17.5,0.8,I-S1-V1-P2,,,false,severe -s3_shot_5i_11,90.6,14.4,-0.2,3360,7.8,108.8,108.8,0.0,105.6,-3.2,106.9,124.1,-17.2,-1.9,15.3,-17.2,28.5,29.8,-1.3,I-S2-V1-P1,-3.2,shot,true,severe -s3_shot_3w_19,121.3,5.6,-4.8,1662,-11.9,120.5,120.6,-0.1,120.5,-0.1,182.5,165.8,16.7,62.0,45.2,16.8,12.3,12.2,0.1,D-S4-V0-P0,,,false,severe -s2_shot_18,105.7,20.5,-1.7,5667,8.2,151.9,146.8,5.1,151.9,5.1,166.0,149.4,16.6,14.1,2.6,11.5,83.5,80.4,3.1,I-S3-V2-P3,,,false,severe -s3_shot_3w_21,119.4,5.3,-3.4,1760,-10.5,115.7,114.6,1.1,115.7,1.1,177.1,160.5,16.6,61.4,45.9,15.5,11.2,10.9,0.3,D-S3-V0-P0,,,false,severe -s3_shot_6i_35,80.5,15.3,-1.3,4667,-0.0,90.0,90.0,0.0,84.9,-5.1,84.9,101.5,-16.6,-5.1,11.5,-16.6,23.1,26.4,-3.3,I-S1-V1-P2,-5.1,shot,true,severe -driver4,119.0,15.5,-10.2,4454,-7.8,183.3,175.6,7.7,183.3,7.7,197.2,180.9,16.3,13.9,5.3,8.6,78.2,73.8,4.4,D-S3-V1-P2,,,false,severe -s3_shot_driver_60,107.4,11.7,-8.6,3269,-14.8,138.5,138.5,0.0,138.5,0.0,138.9,153.8,-14.9,0.4,15.3,-14.9,31.6,34.0,-2.4,I-S3-V1-P1,,,false,severe -s3_shot_5i_15,86.9,9.3,-4.0,2509,-4.9,78.6,78.6,0.0,74.1,-4.5,121.3,106.6,14.7,42.7,28.0,14.7,11.0,12.1,-1.1,I-S2-V0-P1,-4.5,shot,true,severe -s3_shot_7i_31,76.4,17.5,-0.5,5122,1.8,85.0,85.0,0.0,80.2,-4.8,80.2,94.5,-14.3,-4.8,9.5,-14.3,24.3,28.4,-4.1,I-S1-V1-P2,-4.8,shot,true,severe -topped_test_shot,91.8,5.0,-0.9,2195,16.2,55.6,56.2,-0.6,55.6,-0.6,109.2,95.3,13.9,53.6,39.1,14.5,4.2,4.3,-0.1,I-S2-V0-P0,,,false,severe -s2_shot_27,113.0,17.6,-2.3,4292,12.2,168.1,164.5,3.6,168.1,3.6,183.4,169.6,13.8,15.3,5.1,10.2,78.6,73.6,5.0,D-S3-V1-P2,,,false,severe -s3_shot_6i_41,82.5,9.9,-2.3,2620,13.6,71.3,71.3,0.0,66.7,-4.6,111.1,97.9,13.2,39.8,26.6,13.2,10.3,11.3,-1.0,I-S1-V0-P1,-4.6,shot,true,severe -bump_test_shot,78.3,5.6,-0.8,1850,2.3,39.0,39.0,0.0,36.9,-2.1,86.8,74.0,12.8,47.8,35.0,12.8,3.0,3.1,-0.1,I-S1-V0-P0,-2.1,shot,true,severe -wood1,124.2,6.7,-8.1,4528,4.8,178.2,165.5,12.7,178.2,12.7,178.7,181.9,-3.2,0.5,16.4,-15.9,36.0,32.8,3.2,D-S4-V0-P2,,,false,severe -s3_shot_9i_1,89.0,15.1,-0.5,3563,11.3,106.7,106.7,0.0,105.3,-1.4,108.2,120.8,-12.6,1.5,14.1,-12.6,32.1,30.8,1.3,I-S2-V1-P1,-1.4,shot,true,severe -s2_shot_15,88.1,14.2,-0.3,4985,19.4,100.7,101.3,-0.6,100.7,-0.6,100.8,113.1,-12.3,0.1,11.8,-11.7,27.0,28.9,-1.9,I-S2-V1-P2,,,false,severe -s3_shot_6i_37,82.6,10.2,11.0,3041,25.4,71.5,71.5,0.0,67.9,-3.6,109.4,97.2,12.2,37.9,25.7,12.2,11.0,11.8,-0.8,I-S1-V1-P1,-3.6,shot,true,severe -5iron,102.1,17.4,1.5,5391,12.3,143.7,138.1,5.6,143.7,5.6,154.3,142.2,12.1,10.6,4.1,6.5,64.6,59.6,5.0,I-S2-V1-P2,,,false,severe -s3_shot_6i_50,82.8,14.8,-1.4,3783,2.8,92.8,93.2,-0.4,92.8,-0.4,95.3,107.4,-12.1,2.5,14.2,-11.7,29.5,25.6,3.9,I-S1-V1-P1,,,false,severe -s3_shot_pw_66,75.7,27.3,-1.2,6605,4.0,89.7,89.7,-0.0,87.1,-2.6,102.1,90.8,11.3,12.4,1.1,11.3,49.8,53.5,-3.7,I-S1-V3-P3,-2.6,shot,true,severe -s2_shot_20,120.9,15.0,-3.0,4245,9.6,186.6,179.4,7.2,186.6,7.2,196.4,185.3,11.1,9.8,5.9,3.9,70.5,72.3,-1.8,D-S4-V1-P2,,,false,severe -s3_shot_6i_48,101.7,15.2,-3.0,4631,4.3,143.2,137.1,6.1,143.2,6.1,154.6,143.5,11.1,11.4,6.4,5.0,63.1,48.9,14.2,I-S2-V1-P2,,,false,severe -s3_shot_6i_47,99.5,14.8,-2.9,4811,4.7,138.2,131.2,7.0,138.2,7.0,148.5,137.7,10.8,10.3,6.5,3.8,56.8,45.0,11.8,I-S2-V1-P2,,,false,severe -s2_shot_10,89.7,25.5,-3.1,6446,6.2,119.1,115.1,4.0,119.1,4.0,127.1,116.4,10.7,8.0,1.3,6.7,66.2,72.0,-5.8,I-S2-V3-P3,,,false,severe -s3_shot_5i_13,75.0,8.0,2.5,3921,3.4,53.9,53.9,0.0,56.5,2.6,89.0,78.9,10.1,35.1,25.0,10.1,7.4,6.8,0.6,I-S1-V0-P1,2.6,shot,true,severe -s3_shot_pw_64,69.6,28.6,0.2,5327,5.1,80.1,80.1,0.0,75.7,-4.4,92.0,82.4,9.6,11.9,2.3,9.6,42.7,46.4,-3.7,I-S1-V3-P2,-4.4,shot,true,moderate -s2_shot_12,90.8,24.5,-3.9,7261,4.9,120.6,115.4,5.2,120.6,5.2,125.9,116.4,9.5,5.3,1.0,4.3,66.4,71.5,-5.1,I-S2-V2-P3,,,false,moderate -s2_shot_17,122.9,14.4,-1.3,4119,6.7,191.2,184.0,7.2,191.2,7.2,199.5,190.3,9.2,8.3,6.3,2.0,68.2,71.8,-3.6,D-S4-V1-P2,,,false,severe -s3_shot_9i_2,71.3,23.9,5.5,4086,8.3,82.1,82.1,0.0,74.1,-8.0,78.3,87.4,-9.1,-3.8,5.3,-9.1,33.8,36.8,-3.0,I-S1-V2-P2,-8.0,shot,true,moderate -driver2,124.6,13.2,-6.8,3994,-6.1,193.7,184.8,8.9,193.7,8.9,200.9,192.3,8.6,7.2,7.5,-0.3,63.1,65.8,-2.7,D-S4-V1-P1,,,false,severe -approach_mid_iron_test_shot,93.9,22.9,-2.6,5375,2.0,125.8,125.8,0.0,125.8,0.0,136.4,128.5,7.9,10.6,2.7,7.9,64.6,69.3,-4.7,I-S2-V2-P2,,,false,moderate -s3_shot_6i_40,62.1,6.8,27.0,2768,30.0,25.0,26.2,-1.2,25.0,-1.2,58.9,51.1,7.8,33.9,24.9,9.0,2.6,2.5,0.1,I-S1-V0-P1,,,false,moderate -s3_shot_5i_10,88.0,14.2,1.2,4065,8.4,103.1,103.1,0.0,106.1,3.0,109.6,116.7,-7.1,6.5,13.6,-7.1,34.3,28.4,5.9,I-S2-V1-P2,3.0,shot,true,moderate -s3_shot_6i_49,71.2,7.7,16.1,2625,30.0,39.9,39.9,0.0,37.4,-2.5,77.3,70.3,7.0,37.4,30.4,7.0,4.2,4.5,-0.3,I-S1-V0-P1,-2.5,shot,true,moderate -s3_shot_6i_39,61.0,6.1,10.3,3285,22.0,23.5,24.0,-0.5,23.5,-0.5,53.7,47.3,6.4,30.2,23.3,6.9,2.1,2.1,0.0,I-S1-V0-P1,,,false,moderate -s3_shot_6i_43,94.1,13.9,-4.7,4616,1.7,123.7,117.3,6.4,123.7,6.4,129.5,128.6,0.9,5.8,11.3,-5.5,43.1,35.0,8.1,I-S2-V1-P2,,,false,moderate -s3_shot_pw_68,88.5,23.4,-0.1,6637,6.0,112.7,112.7,-0.0,116.1,3.4,120.2,114.1,6.1,7.5,1.4,6.1,57.2,63.4,-6.2,I-S2-V2-P3,3.4,shot,true,moderate -s3_shot_7i_29,107.6,13.8,-6.0,3633,4.7,149.4,148.4,1.0,149.4,1.0,152.5,158.3,-5.8,3.1,9.9,-6.8,42.8,46.3,-3.5,I-S3-V1-P1,,,false,moderate -s2_shot_22,123.3,14.0,-6.1,3104,10.0,191.1,185.4,5.7,191.1,5.7,199.0,195.5,3.5,7.9,10.1,-2.2,61.6,63.0,-1.4,D-S4-V1-P1,,,false,moderate -s2_shot_24,121.5,14.5,-11.2,3173,-6.8,188.7,183.0,5.7,188.7,5.7,195.5,192.8,2.7,6.8,9.8,-3.0,63.0,64.6,-1.6,D-S4-V1-P1,,,false,moderate -s3_shot_pw_67,81.7,28.1,6.3,6510,12.7,100.0,100.0,0.0,100.0,0.0,106.8,101.1,5.7,6.8,1.1,5.7,61.0,65.0,-4.0,I-S1-V3-P3,,,false,moderate -s3_shot_9i_5,84.0,19.4,3.8,5352,11.5,102.7,102.7,-0.0,100.1,-2.6,101.7,107.2,-5.5,-1.0,4.5,-5.5,36.3,41.8,-5.5,I-S1-V2-P2,-2.6,shot,true,moderate -s3_shot_driver_54,121.5,12.9,-5.3,3411,-10.0,183.6,178.2,5.4,183.6,5.4,188.7,188.7,0.0,5.1,10.5,-5.4,54.3,56.5,-2.2,D-S4-V1-P1,,,false,moderate -wood2,118.8,14.5,-3.3,3026,11.2,180.4,175.6,4.8,180.4,4.8,186.8,186.1,0.7,6.4,10.5,-4.1,57.7,59.3,-1.6,D-S3-V1-P1,,,false,moderate -s3_shot_pw_65,81.2,28.4,2.9,6959,9.4,98.4,98.5,-0.1,98.4,-0.1,104.1,99.4,4.7,5.7,0.9,4.8,61.8,65.6,-3.8,I-S1-V3-P3,,,false,pass -s2_shot_19,128.6,12.5,-8.4,2514,5.1,197.8,194.5,3.3,197.8,3.3,204.3,208.7,-4.4,6.5,14.2,-7.7,56.4,57.3,-0.9,D-S4-V1-P1,,,false,moderate -s3_shot_7i_34,104.2,14.7,-4.6,4081,1.9,146.9,142.5,4.4,146.9,4.4,153.2,150.6,2.6,6.3,8.1,-1.8,51.3,48.2,3.1,I-S2-V1-P2,,,false,moderate -s3_shot_7i_27,93.7,17.1,-1.4,4612,2.6,124.1,122.3,1.8,124.1,1.8,132.6,128.3,4.3,8.5,6.0,2.5,54.0,46.0,8.0,I-S2-V1-P2,,,false,pass -s3_shot_9i_8,92.2,21.9,-6.3,5042,0.7,121.3,122.9,-1.6,121.3,-1.6,130.5,126.4,4.1,9.2,3.5,5.7,61.1,62.6,-1.5,I-S2-V2-P2,,,false,pass -s3_shot_pw_69,74.1,23.6,0.2,5880,8.4,86.0,86.0,0.0,83.2,-2.8,84.9,88.8,-3.9,-1.1,2.8,-3.9,37.4,41.2,-3.8,I-S1-V2-P3,-2.8,shot,true,pass -s3_shot_6i_46,116.3,13.7,0.3,3008,10.7,171.1,167.3,3.8,171.1,3.8,175.8,179.3,-3.5,4.7,12.0,-7.3,50.1,51.6,-1.5,D-S3-V1-P1,,,false,moderate -wedge_test_shot,66.4,23.2,-1.4,6449,7.1,70.6,70.6,0.0,65.6,-5.0,79.4,75.8,3.6,8.8,5.2,3.6,28.0,31.2,-3.2,I-S1-V2-P3,-5.0,shot,true,pass -s2_shot_9,94.4,20.1,2.4,4020,16.3,123.7,126.5,-2.8,123.7,-2.8,136.0,132.5,3.5,12.3,6.0,6.3,62.1,54.8,7.3,I-S2-V2-P2,,,false,pass -wedge_test_shot2,54.7,26.8,1.6,4976,5.7,52.2,52.2,-0.0,46.8,-5.4,60.8,57.7,3.1,8.6,5.5,3.1,22.4,24.4,-2.0,C-S0-V3-P2,-5.4,shot,true,pass -s2_shot_13,95.2,19.6,-1.1,5610,12.2,127.1,125.3,1.8,127.1,1.8,131.7,128.7,3.0,4.6,3.4,1.2,52.5,58.4,-5.9,I-S2-V2-P3,,,false,pass -flop_test_shot,68.0,45.0,0.5,12000,0.8,62.7,61.8,0.9,62.7,0.9,63.1,60.3,2.8,0.4,-1.5,1.9,69.2,76.8,-7.6,W-S1-V4-P4,,,false,pass -wedge_shot_2,51.8,37.0,2.4,5652,9.1,49.1,49.1,0.0,43.0,-6.1,52.8,50.1,2.7,3.7,1.0,2.7,31.1,35.3,-4.2,C-S0-V4-P3,-6.1,shot,true,pass -p_wedge_shot_1,82.3,26.5,-3.1,4946,6.7,104.5,104.5,0.0,100.2,-4.3,109.5,107.3,2.2,5.0,2.8,2.2,55.1,60.5,-5.4,I-S1-V3-P2,-4.3,shot,true,pass -s2_shot_16,94.1,19.1,-5.9,5291,5.0,124.7,124.3,0.4,124.7,0.4,130.3,128.1,2.2,5.6,3.8,1.8,52.1,55.3,-3.2,I-S2-V2-P2,,,false,pass -s3_shot_7i_32,93.1,17.0,-1.0,3762,4.2,119.4,121.2,-1.8,119.4,-1.8,127.6,129.8,-2.2,8.2,8.6,-0.4,45.6,42.5,3.1,I-S2-V1-P1,,,false,pass -s2_shot_11,78.5,29.6,4.3,7350,10.7,93.0,93.0,0.0,91.3,-1.7,95.6,93.6,2.0,2.6,0.6,2.0,59.6,64.0,-4.4,I-S1-V3-P3,-1.7,shot,true,pass -s3_shot_5i_17,56.5,10.0,24.1,5178,29.1,30.6,30.6,0.0,28.6,-2.0,45.0,46.9,-1.9,14.4,16.3,-1.9,4.2,4.5,-0.3,C-S0-V1-P2,-2.0,shot,true,pass -s3_shot_9i_9,90.1,22.1,-3.1,5351,1.2,116.9,118.1,-1.2,116.9,-1.2,123.0,121.1,1.9,6.1,3.0,3.1,54.0,60.1,-6.1,I-S2-V2-P2,,,false,pass -s2_shot_14,87.1,22.4,-2.0,5660,11.4,111.1,110.9,0.2,111.1,0.2,115.3,113.7,1.6,4.2,2.8,1.4,50.0,55.9,-5.9,I-S2-V2-P3,,,false,pass -s3_shot_7i_33,92.4,17.0,-0.6,3852,2.8,118.1,119.7,-1.6,118.1,-1.6,126.7,128.0,-1.3,8.6,8.3,0.3,46.7,42.0,4.7,I-S2-V1-P1,,,false,pass -s3_shot_9i_7,83.0,22.5,5.3,7008,9.7,102.2,101.1,1.1,102.2,1.1,104.2,102.6,1.6,2.0,1.5,0.5,47.3,51.5,-4.2,I-S1-V2-P3,,,false,pass -s3_shot_7i_30,90.2,17.6,-3.8,4508,-0.2,115.2,115.4,-0.2,115.2,-0.2,123.2,121.7,1.5,8.0,6.3,1.7,48.6,43.1,5.5,I-S2-V1-P2,,,false,pass -s3_shot_9i_3,90.1,21.7,2.8,5243,11.2,115.9,117.3,-1.4,115.9,-1.4,121.8,120.7,1.1,5.9,3.4,2.5,52.4,57.7,-5.3,I-S2-V2-P2,,,false,pass -s3_shot_7i_28,92.1,16.4,-3.6,4217,-0.4,119.1,117.9,1.2,119.1,1.2,126.8,125.6,1.2,7.7,7.7,0.0,48.9,40.6,8.3,I-S2-V1-P2,,,false,pass -checked_test_shot,75.0,38.5,1.4,10701,5.7,77.0,77.6,-0.6,77.0,-0.6,78.6,77.5,1.1,1.6,-0.1,1.7,70.8,79.5,-8.7,W-S1-V4-P4,,,false,pass -drive_test_shot,150.0,12.5,1.5,2335,-9.9,245.0,244.0,1.0,245.0,1.0,256.8,256.0,0.8,11.8,12.0,-0.2,80.0,80.6,-0.6,D-S4-V1-P0,,,false,pass -wedge_shot_1,48.7,29.0,-1.3,5684,11.1,42.6,42.6,0.0,37.5,-5.1,46.2,46.9,-0.7,3.6,4.3,-0.7,18.9,21.3,-2.4,C-S0-V3-P3,-5.1,shot,true,pass diff --git a/assets/data/openfairway_critical_overall_20260313_2310.csv.import b/assets/data/openfairway_critical_overall_20260313_2310.csv.import deleted file mode 100644 index 219bca6..0000000 --- a/assets/data/openfairway_critical_overall_20260313_2310.csv.import +++ /dev/null @@ -1,19 +0,0 @@ -[remap] - -importer="csv_translation" -type="Translation" -uid="uid://denb8es5ofmqb" - -[deps] - -files=["res://assets/data/openfairway_critical_overall_20260313_2310.speed.translation", "res://assets/data/openfairway_critical_overall_20260313_2310.vla.translation", "res://assets/data/openfairway_critical_overall_20260313_2310.hla.translation", "res://assets/data/openfairway_critical_overall_20260313_2310.total.translation", "res://assets/data/openfairway_critical_overall_20260313_2310.spin.translation", "res://assets/data/openfairway_critical_overall_20260313_2310.physics.translation", "res://assets/data/openfairway_critical_overall_20260313_2310.flightscope.translation", "res://assets/data/openfairway_critical_overall_20260313_2310.diff.translation", "res://assets/data/openfairway_critical_overall_20260313_2310.physics.translation", "res://assets/data/openfairway_critical_overall_20260313_2310.diff.translation", "res://assets/data/openfairway_critical_overall_20260313_2310.physics.translation", "res://assets/data/openfairway_critical_overall_20260313_2310.flightscope.translation", "res://assets/data/openfairway_critical_overall_20260313_2310.diff.translation", "res://assets/data/openfairway_critical_overall_20260313_2310.rollout.translation", "res://assets/data/openfairway_critical_overall_20260313_2310.rollout.translation", "res://assets/data/openfairway_critical_overall_20260313_2310.diff.translation", "res://assets/data/openfairway_critical_overall_20260313_2310.physics.translation", "res://assets/data/openfairway_critical_overall_20260313_2310.flightscope.translation", "res://assets/data/openfairway_critical_overall_20260313_2310.diff.translation", "res://assets/data/openfairway_critical_overall_20260313_2310.carry.translation", "res://assets/data/openfairway_critical_overall_20260313_2310.carry.translation", "res://assets/data/openfairway_critical_overall_20260313_2310.carry.translation", "res://assets/data/openfairway_critical_overall_20260313_2310.carry.translation", "res://assets/data/openfairway_critical_overall_20260313_2310.status.translation"] - -source_file="res://assets/data/openfairway_critical_overall_20260313_2310.csv" -dest_files=["res://assets/data/openfairway_critical_overall_20260313_2310.speed.translation", "res://assets/data/openfairway_critical_overall_20260313_2310.vla.translation", "res://assets/data/openfairway_critical_overall_20260313_2310.hla.translation", "res://assets/data/openfairway_critical_overall_20260313_2310.total.translation", "res://assets/data/openfairway_critical_overall_20260313_2310.spin.translation", "res://assets/data/openfairway_critical_overall_20260313_2310.physics.translation", "res://assets/data/openfairway_critical_overall_20260313_2310.flightscope.translation", "res://assets/data/openfairway_critical_overall_20260313_2310.diff.translation", "res://assets/data/openfairway_critical_overall_20260313_2310.physics.translation", "res://assets/data/openfairway_critical_overall_20260313_2310.diff.translation", "res://assets/data/openfairway_critical_overall_20260313_2310.physics.translation", "res://assets/data/openfairway_critical_overall_20260313_2310.flightscope.translation", "res://assets/data/openfairway_critical_overall_20260313_2310.diff.translation", "res://assets/data/openfairway_critical_overall_20260313_2310.rollout.translation", "res://assets/data/openfairway_critical_overall_20260313_2310.rollout.translation", "res://assets/data/openfairway_critical_overall_20260313_2310.diff.translation", "res://assets/data/openfairway_critical_overall_20260313_2310.physics.translation", "res://assets/data/openfairway_critical_overall_20260313_2310.flightscope.translation", "res://assets/data/openfairway_critical_overall_20260313_2310.diff.translation", "res://assets/data/openfairway_critical_overall_20260313_2310.carry.translation", "res://assets/data/openfairway_critical_overall_20260313_2310.carry.translation", "res://assets/data/openfairway_critical_overall_20260313_2310.carry.translation", "res://assets/data/openfairway_critical_overall_20260313_2310.carry.translation", "res://assets/data/openfairway_critical_overall_20260313_2310.status.translation"] - -[params] - -compress=1 -delimiter=0 -unescape_keys=false -unescape_translations=true diff --git a/assets/data/openfairway_critical_overall_20260313_2332.csv b/assets/data/openfairway_critical_overall_20260313_2332.csv deleted file mode 100644 index 42b5cf4..0000000 --- a/assets/data/openfairway_critical_overall_20260313_2332.csv +++ /dev/null @@ -1,100 +0,0 @@ -shot_name,speed_mph,vla_deg,hla_deg,total_spin_rpm,spin_axis_deg,physics_carry_yd,flightscope_carry_yd,diff_carry_yd,physics_carry_raw_yd,diff_carry_raw_yd,physics_total_yd,flightscope_total_yd,diff_total_yd,rollout_physics_yd,rollout_flightscope_yd,diff_rollout_yd,physics_apex_ft,flightscope_apex_ft,diff_apex_ft,carry_exception_regime,carry_exception_offset_yd,carry_exception_source,carry_exception_applied,status -s3_shot_driver_58,119.3,23.6,2.5,7093,3.3,174.2,163.2,11.0,181.2,18.0,200.9,163.9,37.0,26.7,0.7,26.0,120.9,125.7,-4.8,I-S3-V2-P3,7.0,regime,true,severe -s3_shot_3w_24,123.4,6.3,-5.4,2752,-13.3,149.8,145.9,3.9,153.8,7.9,206.3,176.7,29.6,56.5,30.8,25.7,21.7,19.8,1.9,D-S4-V0-P1,4.0,regime,true,severe -s3_shot_driver_51,116.2,21.7,2.2,6409,3.2,167.3,162.9,4.4,174.3,11.4,193.9,164.3,29.6,26.6,1.4,25.2,109.3,108.7,0.6,I-S3-V2-P3,7.0,regime,true,severe -s2_shot_21,127.3,7.2,-11.5,2321,-19.5,160.7,154.9,5.8,160.7,5.8,215.3,186.5,28.8,54.6,31.6,23.0,24.9,23.1,1.8,D-S4-V0-P0,,,false,severe -bump_and_run,58.3,15.6,-0.8,1850,2.3,43.7,43.8,-0.1,34.7,-9.1,34.5,62.0,-27.5,-9.2,18.2,-27.4,8.0,10.1,-2.1,C-S0-V1-P0,-9.0,shot,true,severe -s3_shot_6i_44,115.0,9.5,-6.7,2314,15.1,141.1,142.3,-1.2,141.1,-1.2,140.8,168.2,-27.4,-0.3,25.9,-26.2,25.3,26.6,-1.3,D-S3-V0-P0,,,false,severe -driver1,124.0,9.4,-9.5,2322,-24.8,158.3,158.0,0.3,158.3,0.3,158.3,184.0,-25.7,0.0,26.0,-26.0,29.5,30.2,-0.7,D-S4-V0-P0,,,false,severe -s3_shot_driver_52,102.1,31.3,3.1,8442,6.3,129.9,124.5,5.4,133.9,9.4,149.4,124.1,25.3,19.5,-0.4,19.9,117.9,119.3,-1.4,W-S2-V3-P4,4.0,regime,true,severe -s3_shot_5i_12,74.2,10.2,-1.7,3321,15.8,59.6,58.4,1.2,59.6,1.2,58.4,81.9,-23.5,-1.2,23.5,-24.7,10.5,9.4,1.1,I-S1-V1-P1,,,false,severe -driver3,119.1,16.0,-8.9,4935,-9.4,173.3,174.1,-0.8,180.3,6.2,201.8,178.5,23.3,28.5,4.4,24.1,99.6,78.5,21.1,D-S3-V1-P2,7.0,regime,true,severe -s2_shot_26,117.0,18.4,-2.0,5035,9.7,173.3,170.7,2.6,173.3,2.6,197.3,174.2,23.1,24.0,3.5,20.5,112.3,88.1,24.2,I-S3-V2-P2,,,false,severe -wood_low_test_shot,114.5,7.0,-0.6,1932,-1.4,124.4,122.6,1.8,124.4,1.8,181.8,158.9,22.9,57.4,36.3,21.1,16.1,15.7,0.4,D-S3-V0-P0,,,false,severe -s3_shot_3w_23,115.8,8.9,-0.8,2804,2.2,148.5,147.7,0.8,148.5,0.8,148.2,170.9,-22.7,-0.3,23.2,-23.5,26.8,28.0,-1.2,D-S3-V0-P1,,,false,severe -s3_shot_driver_55,117.5,7.5,-8.3,2150,-27.2,128.1,125.6,2.5,128.1,2.5,184.4,161.8,22.6,56.3,36.2,20.1,17.6,17.2,0.4,D-S3-V0-P0,,,false,severe -s3_shot_7i_26,73.4,10.8,15.4,3561,30.0,56.6,56.6,0.0,58.4,1.8,57.5,79.3,-21.8,0.9,22.7,-21.8,10.7,9.6,1.1,I-S1-V1-P1,1.8,shot,true,severe -s3_shot_6i_38,79.1,13.3,3.0,3187,11.6,79.2,79.2,0.0,76.0,-3.2,76.2,97.5,-21.3,-3.0,18.3,-21.3,18.1,18.0,0.1,I-S1-V1-P1,-3.2,shot,true,severe -s3_shot_6i_45,109.3,6.4,-9.0,2510,-10.9,109.6,109.6,0.0,113.1,3.5,166.5,145.4,21.1,56.9,35.8,21.1,13.5,12.9,0.6,I-S3-V0-P1,3.5,shot,true,severe -s3_shot_5i_16,98.0,9.1,-2.1,3776,1.7,110.2,109.1,1.1,110.2,1.1,109.2,130.0,-20.8,-1.0,20.9,-21.9,19.5,19.7,-0.2,I-S2-V0-P1,,,false,severe -s3_shot_6i_36,78.9,10.4,16.1,4166,25.1,67.8,67.8,0.0,69.9,2.1,68.3,89.1,-20.8,0.5,21.3,-20.8,12.4,11.8,0.6,I-S1-V1-P2,2.1,shot,true,severe -s3_shot_driver_56,118.7,17.1,-1.8,4554,2.8,174.4,176.6,-2.2,181.4,4.8,201.6,180.9,20.7,27.2,4.3,22.9,92.9,83.2,9.7,D-S3-V1-P2,7.0,regime,true,severe -s3_shot_3w_22,108.9,5.6,-7.2,2501,-1.8,103.2,103.2,0.0,106.3,3.1,161.5,141.3,20.2,58.3,38.1,20.2,11.0,10.5,0.5,I-S3-V0-P1,3.1,shot,true,severe -s3_shot_driver_57,120.9,14.1,-5.2,1544,-8.0,172.5,177.6,-5.1,172.5,-5.1,177.3,197.0,-19.7,4.8,19.4,-14.6,47.4,50.9,-3.5,D-S4-V1-P0,,,false,severe -s2_shot_23,125.5,8.6,-14.3,3062,-23.9,159.1,161.9,-2.8,166.1,4.2,166.1,185.0,-18.9,7.0,23.1,-16.1,31.1,31.0,0.1,D-S4-V0-P1,7.0,regime,true,severe -s3_shot_7i_25,83.3,13.2,3.0,3410,17.8,86.4,86.9,-0.5,86.4,-0.5,86.8,104.8,-18.0,0.4,17.9,-17.5,21.0,20.1,0.9,I-S1-V1-P1,,,false,severe -s3_shot_driver_53,97.2,30.6,2.2,8926,6.0,120.1,117.6,2.5,124.1,6.5,135.0,117.1,17.9,14.9,-0.5,15.4,102.0,105.8,-3.8,W-S2-V3-P4,4.0,regime,true,severe -s3_shot_driver_59,81.0,44.9,8.9,6735,12.4,82.8,83.7,-0.9,82.8,-0.9,100.9,83.2,17.7,18.1,-0.5,18.6,104.0,107.8,-3.8,W-S1-V4-P3,,,false,severe -s3_shot_6i_42,77.2,13.1,-3.4,4057,4.1,75.5,76.6,-1.1,75.5,-1.1,75.5,92.9,-17.4,0.0,16.3,-16.3,18.3,17.5,0.8,I-S1-V1-P2,,,false,severe -s3_shot_5i_11,90.6,14.4,-0.2,3360,7.8,108.8,108.8,0.0,105.6,-3.2,106.9,124.1,-17.2,-1.9,15.3,-17.2,28.5,29.8,-1.3,I-S2-V1-P1,-3.2,shot,true,severe -s3_shot_3w_19,121.3,5.6,-4.8,1662,-11.9,120.5,120.6,-0.1,120.5,-0.1,182.5,165.8,16.7,62.0,45.2,16.8,12.3,12.2,0.1,D-S4-V0-P0,,,false,severe -s2_shot_18,105.7,20.5,-1.7,5667,8.2,147.9,146.8,1.1,151.9,5.1,166.0,149.4,16.6,18.1,2.6,15.5,83.5,80.4,3.1,I-S3-V2-P3,4.0,regime,true,severe -s3_shot_3w_21,119.4,5.3,-3.4,1760,-10.5,115.7,114.6,1.1,115.7,1.1,177.1,160.5,16.6,61.4,45.9,15.5,11.2,10.9,0.3,D-S3-V0-P0,,,false,severe -s3_shot_6i_35,80.5,15.3,-1.3,4667,-0.0,90.0,90.0,0.0,84.9,-5.1,84.9,101.5,-16.6,-5.1,11.5,-16.6,23.1,26.4,-3.3,I-S1-V1-P2,-5.1,shot,true,severe -driver4,119.0,15.5,-10.2,4454,-7.8,176.3,175.6,0.7,183.3,7.7,197.2,180.9,16.3,20.9,5.3,15.6,78.2,73.8,4.4,D-S3-V1-P2,7.0,regime,true,severe -s3_shot_driver_60,107.4,11.7,-8.6,3269,-14.8,138.5,138.5,0.0,138.5,0.0,138.9,153.8,-14.9,0.4,15.3,-14.9,31.6,34.0,-2.4,I-S3-V1-P1,,,false,severe -s3_shot_5i_15,86.9,9.3,-4.0,2509,-4.9,78.6,78.6,0.0,74.1,-4.5,121.3,106.6,14.7,42.7,28.0,14.7,11.0,12.1,-1.1,I-S2-V0-P1,-4.5,shot,true,severe -s3_shot_7i_31,76.4,17.5,-0.5,5122,1.8,85.0,85.0,0.0,80.2,-4.8,80.2,94.5,-14.3,-4.8,9.5,-14.3,24.3,28.4,-4.1,I-S1-V1-P2,-4.8,shot,true,severe -topped_test_shot,91.8,5.0,-0.9,2195,16.2,55.6,56.2,-0.6,55.6,-0.6,109.2,95.3,13.9,53.6,39.1,14.5,4.2,4.3,-0.1,I-S2-V0-P0,,,false,severe -s2_shot_27,113.0,17.6,-2.3,4292,12.2,161.1,164.5,-3.4,168.1,3.6,183.4,169.6,13.8,22.3,5.1,17.2,78.6,73.6,5.0,D-S3-V1-P2,7.0,regime,true,severe -s3_shot_6i_41,82.5,9.9,-2.3,2620,13.6,71.3,71.3,0.0,66.7,-4.6,111.1,97.9,13.2,39.8,26.6,13.2,10.3,11.3,-1.0,I-S1-V0-P1,-4.6,shot,true,severe -bump_test_shot,78.3,5.6,-0.8,1850,2.3,39.0,39.0,0.0,36.9,-2.1,86.8,74.0,12.8,47.8,35.0,12.8,3.0,3.1,-0.1,I-S1-V0-P0,-2.1,shot,true,severe -s3_shot_9i_1,89.0,15.1,-0.5,3563,11.3,106.7,106.7,0.0,105.3,-1.4,108.2,120.8,-12.6,1.5,14.1,-12.6,32.1,30.8,1.3,I-S2-V1-P1,-1.4,shot,true,severe -s2_shot_15,88.1,14.2,-0.3,4985,19.4,100.7,101.3,-0.6,100.7,-0.6,100.8,113.1,-12.3,0.1,11.8,-11.7,27.0,28.9,-1.9,I-S2-V1-P2,,,false,severe -s3_shot_6i_37,82.6,10.2,11.0,3041,25.4,71.5,71.5,0.0,67.9,-3.6,109.4,97.2,12.2,37.9,25.7,12.2,11.0,11.8,-0.8,I-S1-V1-P1,-3.6,shot,true,severe -5iron,102.1,17.4,1.5,5391,12.3,139.7,138.1,1.6,143.7,5.6,154.3,142.2,12.1,14.6,4.1,10.5,64.6,59.6,5.0,I-S2-V1-P2,4.0,regime,true,severe -s3_shot_6i_50,82.8,14.8,-1.4,3783,2.8,92.8,93.2,-0.4,92.8,-0.4,95.3,107.4,-12.1,2.5,14.2,-11.7,29.5,25.6,3.9,I-S1-V1-P1,,,false,severe -s3_shot_pw_66,75.7,27.3,-1.2,6605,4.0,89.7,89.7,-0.0,87.1,-2.6,102.1,90.8,11.3,12.4,1.1,11.3,49.8,53.5,-3.7,I-S1-V3-P3,-2.6,shot,true,severe -s2_shot_20,120.9,15.0,-3.0,4245,9.6,179.6,179.4,0.2,186.6,7.2,196.4,185.3,11.1,16.8,5.9,10.9,70.5,72.3,-1.8,D-S4-V1-P2,7.0,regime,true,severe -s3_shot_6i_48,101.7,15.2,-3.0,4631,4.3,139.2,137.1,2.1,143.2,6.1,154.6,143.5,11.1,15.4,6.4,9.0,63.1,48.9,14.2,I-S2-V1-P2,4.0,regime,true,severe -s3_shot_6i_47,99.5,14.8,-2.9,4811,4.7,134.2,131.2,3.0,138.2,7.0,148.5,137.7,10.8,14.3,6.5,7.8,56.8,45.0,11.8,I-S2-V1-P2,4.0,regime,true,severe -s2_shot_10,89.7,25.5,-3.1,6446,6.2,115.1,115.1,0.0,119.1,4.0,127.1,116.4,10.7,12.0,1.3,10.7,66.2,72.0,-5.8,I-S2-V3-P3,4.0,regime,true,severe -s3_shot_5i_13,75.0,8.0,2.5,3921,3.4,53.9,53.9,0.0,56.5,2.6,89.0,78.9,10.1,35.1,25.0,10.1,7.4,6.8,0.6,I-S1-V0-P1,2.6,shot,true,severe -s3_shot_pw_64,69.6,28.6,0.2,5327,5.1,80.1,80.1,0.0,75.7,-4.4,92.0,82.4,9.6,11.9,2.3,9.6,42.7,46.4,-3.7,I-S1-V3-P2,-4.4,shot,true,moderate -s2_shot_12,90.8,24.5,-3.9,7261,4.9,117.1,115.4,1.7,120.6,5.2,125.9,116.4,9.5,8.8,1.0,7.8,66.4,71.5,-5.1,I-S2-V2-P3,3.5,regime,true,moderate -s2_shot_17,122.9,14.4,-1.3,4119,6.7,184.0,184.0,0.0,191.2,7.2,199.5,190.3,9.2,15.5,6.3,9.2,68.2,71.8,-3.6,D-S4-V1-P2,7.2,regime,true,moderate -s3_shot_9i_2,71.3,23.9,5.5,4086,8.3,82.1,82.1,0.0,74.1,-8.0,78.3,87.4,-9.1,-3.8,5.3,-9.1,33.8,36.8,-3.0,I-S1-V2-P2,-8.0,shot,true,moderate -driver2,124.6,13.2,-6.8,3994,-6.1,187.3,184.8,2.5,193.7,8.9,200.9,192.3,8.6,13.6,7.5,6.1,63.1,65.8,-2.7,D-S4-V1-P1,6.4,regime,true,moderate -approach_mid_iron_test_shot,93.9,22.9,-2.6,5375,2.0,125.8,125.8,0.0,125.8,0.0,136.4,128.5,7.9,10.6,2.7,7.9,64.6,69.3,-4.7,I-S2-V2-P2,,,false,moderate -s3_shot_6i_40,62.1,6.8,27.0,2768,30.0,25.0,26.2,-1.2,25.0,-1.2,58.9,51.1,7.8,33.9,24.9,9.0,2.6,2.5,0.1,I-S1-V0-P1,,,false,moderate -s3_shot_5i_10,88.0,14.2,1.2,4065,8.4,103.1,103.1,0.0,106.1,3.0,109.6,116.7,-7.1,6.5,13.6,-7.1,34.3,28.4,5.9,I-S2-V1-P2,3.0,shot,true,moderate -s3_shot_6i_49,71.2,7.7,16.1,2625,30.0,39.9,39.9,0.0,37.4,-2.5,77.3,70.3,7.0,37.4,30.4,7.0,4.2,4.5,-0.3,I-S1-V0-P1,-2.5,shot,true,moderate -s3_shot_6i_39,61.0,6.1,10.3,3285,22.0,23.5,24.0,-0.5,23.5,-0.5,53.7,47.3,6.4,30.2,23.3,6.9,2.1,2.1,0.0,I-S1-V0-P1,,,false,moderate -s3_shot_pw_68,88.5,23.4,-0.1,6637,6.0,112.7,112.7,-0.0,116.1,3.4,120.2,114.1,6.1,7.5,1.4,6.1,57.2,63.4,-6.2,I-S2-V2-P3,3.4,shot,true,moderate -s3_shot_7i_29,107.6,13.8,-6.0,3633,4.7,149.4,148.4,1.0,149.4,1.0,152.5,158.3,-5.8,3.1,9.9,-6.8,42.8,46.3,-3.5,I-S3-V1-P1,,,false,moderate -s3_shot_pw_67,81.7,28.1,6.3,6510,12.7,100.0,100.0,0.0,100.0,0.0,106.8,101.1,5.7,6.8,1.1,5.7,61.0,65.0,-4.0,I-S1-V3-P3,,,false,moderate -wood1,124.2,6.7,-8.1,4528,4.8,171.2,165.5,5.7,178.2,12.7,178.7,181.9,-3.2,7.5,16.4,-8.9,36.0,32.8,3.2,D-S4-V0-P2,7.0,regime,true,moderate -s3_shot_9i_5,84.0,19.4,3.8,5352,11.5,102.7,102.7,-0.0,100.1,-2.6,101.7,107.2,-5.5,-1.0,4.5,-5.5,36.3,41.8,-5.5,I-S1-V2-P2,-2.6,shot,true,moderate -wood2,118.8,14.5,-3.3,3026,11.2,180.4,175.6,4.8,180.4,4.8,186.8,186.1,0.7,6.4,10.5,-4.1,57.7,59.3,-1.6,D-S3-V1-P1,,,false,moderate -s3_shot_pw_65,81.2,28.4,2.9,6959,9.4,98.4,98.5,-0.1,98.4,-0.1,104.1,99.4,4.7,5.7,0.9,4.8,61.8,65.6,-3.8,I-S1-V3-P3,,,false,pass -s2_shot_19,128.6,12.5,-8.4,2514,5.1,191.4,194.5,-3.1,197.8,3.3,204.3,208.7,-4.4,12.9,14.2,-1.3,56.4,57.3,-0.9,D-S4-V1-P1,6.4,regime,true,moderate -s3_shot_7i_27,93.7,17.1,-1.4,4612,2.6,120.1,122.3,-2.2,124.1,1.8,132.6,128.3,4.3,12.5,6.0,6.5,54.0,46.0,8.0,I-S2-V1-P2,4.0,regime,true,pass -s3_shot_7i_30,90.2,17.6,-3.8,4508,-0.2,111.2,115.4,-4.2,115.2,-0.2,123.2,121.7,1.5,12.0,6.3,5.7,48.6,43.1,5.5,I-S2-V1-P2,4.0,regime,true,moderate -s3_shot_9i_8,92.2,21.9,-6.3,5042,0.7,121.3,122.9,-1.6,121.3,-1.6,130.5,126.4,4.1,9.2,3.5,5.7,61.1,62.6,-1.5,I-S2-V2-P2,,,false,pass -s3_shot_pw_69,74.1,23.6,0.2,5880,8.4,86.0,86.0,0.0,83.2,-2.8,84.9,88.8,-3.9,-1.1,2.8,-3.9,37.4,41.2,-3.8,I-S1-V2-P3,-2.8,shot,true,pass -s3_shot_6i_46,116.3,13.7,0.3,3008,10.7,171.1,167.3,3.8,171.1,3.8,175.8,179.3,-3.5,4.7,12.0,-7.3,50.1,51.6,-1.5,D-S3-V1-P1,,,false,moderate -wedge_test_shot,66.4,23.2,-1.4,6449,7.1,70.6,70.6,0.0,65.6,-5.0,79.4,75.8,3.6,8.8,5.2,3.6,28.0,31.2,-3.2,I-S1-V2-P3,-5.0,shot,true,pass -s2_shot_22,123.3,14.0,-6.1,3104,10.0,184.7,185.4,-0.7,191.1,5.7,199.0,195.5,3.5,14.3,10.1,4.2,61.6,63.0,-1.4,D-S4-V1-P1,6.4,regime,true,pass -s2_shot_9,94.4,20.1,2.4,4020,16.3,123.7,126.5,-2.8,123.7,-2.8,136.0,132.5,3.5,12.3,6.0,6.3,62.1,54.8,7.3,I-S2-V2-P2,,,false,pass -wedge_test_shot2,54.7,26.8,1.6,4976,5.7,52.2,52.2,-0.0,46.8,-5.4,60.8,57.7,3.1,8.6,5.5,3.1,22.4,24.4,-2.0,C-S0-V3-P2,-5.4,shot,true,pass -s2_shot_13,95.2,19.6,-1.1,5610,12.2,123.6,125.3,-1.7,127.1,1.8,131.7,128.7,3.0,8.1,3.4,4.7,52.5,58.4,-5.9,I-S2-V2-P3,3.5,regime,true,pass -flop_test_shot,68.0,45.0,0.5,12000,0.8,62.7,61.8,0.9,62.7,0.9,63.1,60.3,2.8,0.4,-1.5,1.9,69.2,76.8,-7.6,W-S1-V4-P4,,,false,pass -s3_shot_7i_28,92.1,16.4,-3.6,4217,-0.4,115.1,117.9,-2.8,119.1,1.2,126.8,125.6,1.2,11.7,7.7,4.0,48.9,40.6,8.3,I-S2-V1-P2,4.0,regime,true,pass -s2_shot_24,121.5,14.5,-11.2,3173,-6.8,182.3,183.0,-0.7,188.7,5.7,195.5,192.8,2.7,13.2,9.8,3.4,63.0,64.6,-1.6,D-S4-V1-P1,6.4,regime,true,pass -wedge_shot_2,51.8,37.0,2.4,5652,9.1,49.1,49.1,0.0,43.0,-6.1,52.8,50.1,2.7,3.7,1.0,2.7,31.1,35.3,-4.2,C-S0-V4-P3,-6.1,shot,true,pass -s3_shot_7i_34,104.2,14.7,-4.6,4081,1.9,142.9,142.5,0.4,146.9,4.4,153.2,150.6,2.6,10.3,8.1,2.2,51.3,48.2,3.1,I-S2-V1-P2,4.0,regime,true,pass -s3_shot_6i_43,94.1,13.9,-4.7,4616,1.7,119.7,117.3,2.4,123.7,6.4,129.5,128.6,0.9,9.8,11.3,-1.5,43.1,35.0,8.1,I-S2-V1-P2,4.0,regime,true,pass -p_wedge_shot_1,82.3,26.5,-3.1,4946,6.7,104.5,104.5,0.0,100.2,-4.3,109.5,107.3,2.2,5.0,2.8,2.2,55.1,60.5,-5.4,I-S1-V3-P2,-4.3,shot,true,pass -s2_shot_16,94.1,19.1,-5.9,5291,5.0,124.7,124.3,0.4,124.7,0.4,130.3,128.1,2.2,5.6,3.8,1.8,52.1,55.3,-3.2,I-S2-V2-P2,,,false,pass -s3_shot_7i_32,93.1,17.0,-1.0,3762,4.2,119.4,121.2,-1.8,119.4,-1.8,127.6,129.8,-2.2,8.2,8.6,-0.4,45.6,42.5,3.1,I-S2-V1-P1,,,false,pass -s2_shot_11,78.5,29.6,4.3,7350,10.7,93.0,93.0,0.0,91.3,-1.7,95.6,93.6,2.0,2.6,0.6,2.0,59.6,64.0,-4.4,I-S1-V3-P3,-1.7,shot,true,pass -s3_shot_5i_17,56.5,10.0,24.1,5178,29.1,30.6,30.6,0.0,28.6,-2.0,45.0,46.9,-1.9,14.4,16.3,-1.9,4.2,4.5,-0.3,C-S0-V1-P2,-2.0,shot,true,pass -s3_shot_9i_9,90.1,22.1,-3.1,5351,1.2,116.9,118.1,-1.2,116.9,-1.2,123.0,121.1,1.9,6.1,3.0,3.1,54.0,60.1,-6.1,I-S2-V2-P2,,,false,pass -s2_shot_14,87.1,22.4,-2.0,5660,11.4,111.1,110.9,0.2,111.1,0.2,115.3,113.7,1.6,4.2,2.8,1.4,50.0,55.9,-5.9,I-S2-V2-P3,,,false,pass -s3_shot_7i_33,92.4,17.0,-0.6,3852,2.8,118.1,119.7,-1.6,118.1,-1.6,126.7,128.0,-1.3,8.6,8.3,0.3,46.7,42.0,4.7,I-S2-V1-P1,,,false,pass -s3_shot_9i_7,83.0,22.5,5.3,7008,9.7,102.2,101.1,1.1,102.2,1.1,104.2,102.6,1.6,2.0,1.5,0.5,47.3,51.5,-4.2,I-S1-V2-P3,,,false,pass -s3_shot_9i_3,90.1,21.7,2.8,5243,11.2,115.9,117.3,-1.4,115.9,-1.4,121.8,120.7,1.1,5.9,3.4,2.5,52.4,57.7,-5.3,I-S2-V2-P2,,,false,pass -checked_test_shot,75.0,38.5,1.4,10701,5.7,77.0,77.6,-0.6,77.0,-0.6,78.6,77.5,1.1,1.6,-0.1,1.7,70.8,79.5,-8.7,W-S1-V4-P4,,,false,pass -drive_test_shot,150.0,12.5,1.5,2335,-9.9,245.0,244.0,1.0,245.0,1.0,256.8,256.0,0.8,11.8,12.0,-0.2,80.0,80.6,-0.6,D-S4-V1-P0,,,false,pass -s3_shot_driver_54,121.5,12.9,-5.3,3411,-10.0,177.2,178.2,-1.0,183.6,5.4,188.7,188.7,0.0,11.5,10.5,1.0,54.3,56.5,-2.2,D-S4-V1-P1,6.4,regime,true,pass -wedge_shot_1,48.7,29.0,-1.3,5684,11.1,42.6,42.6,0.0,37.5,-5.1,46.2,46.9,-0.7,3.6,4.3,-0.7,18.9,21.3,-2.4,C-S0-V3-P3,-5.1,shot,true,pass diff --git a/assets/data/shot_session_2/history/iteration_016.json b/assets/data/shot_session_2/history/iteration_016.json new file mode 100644 index 0000000..dde2301 --- /dev/null +++ b/assets/data/shot_session_2/history/iteration_016.json @@ -0,0 +1,250 @@ +{ + "iteration": 16, + "timestamp": "2026-03-14T01:45:57.859528", + "profile_overrides": { + "DragScaleMultiplier": 1.01, + "Flight": { + "CdMin": 0.223, + "HighLaunchDragVlaStartDeg": 24.5, + "HighLaunchDragVlaFullDeg": 31.5, + "HighLaunchDragBoostMax": 1.24, + "SpinDragProgressiveCapSrStart": 0.33, + "SpinDragProgressiveCapSrEnd": 0.5, + "SpinDragProgressiveCapBoostMax": 0.25, + "HighReMidSpinGain": 16.0, + "MidSpinClBoostSrStart": 0.17, + "MidSpinClBoostSrEnd": 0.31, + "MidSpinClBoostMax": 0.5 + } + }, + "summary": { + "pass": 4, + "moderate": 6, + "severe": 8, + "no_reference": 9 + }, + "per_shot": { + "shot_1": { + "diff_carry_yd": null, + "diff_total_yd": null, + "diff_apex_ft": null, + "status": "pass", + "error_pattern": null + }, + "shot_10": { + "diff_carry_yd": 3.4, + "diff_total_yd": 10.2, + "diff_apex_ft": -6.0, + "status": "severe", + "error_pattern": "CARRY_AND_ROLLOUT_LONG" + }, + "shot_11": { + "diff_carry_yd": -2.6, + "diff_total_yd": 1.1, + "diff_apex_ft": -4.6, + "status": "pass", + "error_pattern": null + }, + "shot_12": { + "diff_carry_yd": 4.5, + "diff_total_yd": 9.5, + "diff_apex_ft": -5.3, + "status": "moderate", + "error_pattern": "CARRY_AND_ROLLOUT_LONG" + }, + "shot_13": { + "diff_carry_yd": 1.2, + "diff_total_yd": 3.2, + "diff_apex_ft": -6.1, + "status": "pass", + "error_pattern": null + }, + "shot_14": { + "diff_carry_yd": -0.3, + "diff_total_yd": 1.7, + "diff_apex_ft": -6.1, + "status": "pass", + "error_pattern": null + }, + "shot_15": { + "diff_carry_yd": -1.0, + "diff_total_yd": -12.7, + "diff_apex_ft": -2.0, + "status": "severe", + "error_pattern": "ROLLOUT_TOO_SHORT" + }, + "shot_16": { + "diff_carry_yd": -0.3, + "diff_total_yd": 2.2, + "diff_apex_ft": -3.5, + "status": "pass", + "error_pattern": null + }, + "shot_17": { + "diff_carry_yd": 5.8, + "diff_total_yd": 8.0, + "diff_apex_ft": -3.9, + "status": "moderate", + "error_pattern": "CARRY_AND_ROLLOUT_LONG" + }, + "shot_18": { + "diff_carry_yd": 4.3, + "diff_total_yd": 14.0, + "diff_apex_ft": 2.6, + "status": "severe", + "error_pattern": "CARRY_AND_ROLLOUT_LONG" + }, + "shot_19": { + "diff_carry_yd": 2.2, + "diff_total_yd": -6.1, + "diff_apex_ft": -1.2, + "status": "moderate", + "error_pattern": "ROLLOUT_TOO_SHORT" + }, + "shot_2": { + "diff_carry_yd": null, + "diff_total_yd": null, + "diff_apex_ft": null, + "status": "pass", + "error_pattern": null + }, + "shot_20": { + "diff_carry_yd": 6.0, + "diff_total_yd": 11.5, + "diff_apex_ft": -2.0, + "status": "severe", + "error_pattern": "CARRY_AND_ROLLOUT_LONG" + }, + "shot_21": { + "diff_carry_yd": 4.9, + "diff_total_yd": 27.7, + "diff_apex_ft": 1.7, + "status": "severe", + "error_pattern": "CARRY_AND_ROLLOUT_LONG" + }, + "shot_22": { + "diff_carry_yd": 4.6, + "diff_total_yd": 1.6, + "diff_apex_ft": -1.6, + "status": "moderate", + "error_pattern": "CARRY_TOO_LONG" + }, + "shot_23": { + "diff_carry_yd": 3.5, + "diff_total_yd": -19.6, + "diff_apex_ft": 0.0, + "status": "severe", + "error_pattern": "CARRY_TOO_LONG" + }, + "shot_24": { + "diff_carry_yd": 4.7, + "diff_total_yd": 3.4, + "diff_apex_ft": -1.9, + "status": "moderate", + "error_pattern": "CARRY_TOO_LONG" + }, + "shot_25": { + "diff_carry_yd": null, + "diff_total_yd": null, + "diff_apex_ft": null, + "status": "pass", + "error_pattern": null + }, + "shot_26": { + "diff_carry_yd": 1.7, + "diff_total_yd": 20.6, + "diff_apex_ft": 23.5, + "status": "severe", + "error_pattern": "ROLLOUT_TOO_LONG" + }, + "shot_27": { + "diff_carry_yd": 2.6, + "diff_total_yd": 12.8, + "diff_apex_ft": 4.8, + "status": "severe", + "error_pattern": "ROLLOUT_TOO_LONG" + }, + "shot_3": { + "diff_carry_yd": null, + "diff_total_yd": null, + "diff_apex_ft": null, + "status": "pass", + "error_pattern": null + }, + "shot_4": { + "diff_carry_yd": null, + "diff_total_yd": null, + "diff_apex_ft": null, + "status": "pass", + "error_pattern": null + }, + "shot_5": { + "diff_carry_yd": null, + "diff_total_yd": null, + "diff_apex_ft": null, + "status": "pass", + "error_pattern": null + }, + "shot_6": { + "diff_carry_yd": null, + "diff_total_yd": null, + "diff_apex_ft": null, + "status": "pass", + "error_pattern": null + }, + "shot_7": { + "diff_carry_yd": null, + "diff_total_yd": null, + "diff_apex_ft": null, + "status": "pass", + "error_pattern": null + }, + "shot_8": { + "diff_carry_yd": null, + "diff_total_yd": null, + "diff_apex_ft": null, + "status": "pass", + "error_pattern": null + }, + "shot_9": { + "diff_carry_yd": -3.3, + "diff_total_yd": 1.6, + "diff_apex_ft": 7.1, + "status": "moderate", + "error_pattern": "CARRY_TOO_SHORT" + } + }, + "regressions": [ + { + "shot": "shot_22", + "was": "pass", + "now": "moderate", + "prev_total_diff": 1.6, + "curr_total_diff": 1.6 + }, + { + "shot": "shot_24", + "was": "pass", + "now": "moderate", + "prev_total_diff": 3.4, + "curr_total_diff": 3.4 + } + ], + "conflicts": [ + "Bounce.FlightTangentialRetentionBase", + "Bounce.FlightSpinFactorMin", + "Bounce.FlightSpinFactorDivisor", + "Bounce.CorBaseA", + "Rollout.LowSpinMultiplierMax", + "Rollout.HighSpinMultiplierMax", + "Rollout.LowSpinThreshold", + "KineticFrictionMultiplier", + "RollingFrictionMultiplier", + "Bounce.RolloutLowSpinRetention", + "Bounce.RolloutHighSpinRetention", + "Flight.ClMaxBase", + "Flight.CdMin", + "DragScaleMultiplier", + "LiftScaleMultiplier" + ] +} diff --git a/assets/data/shot_session_2/history/iteration_017.json b/assets/data/shot_session_2/history/iteration_017.json new file mode 100644 index 0000000..712e7a7 --- /dev/null +++ b/assets/data/shot_session_2/history/iteration_017.json @@ -0,0 +1,235 @@ +{ + "iteration": 17, + "timestamp": "2026-03-14T02:23:21.924549", + "profile_overrides": { + "DragScaleMultiplier": 1.01, + "Flight": { + "CdMin": 0.223, + "HighLaunchDragVlaStartDeg": 24.5, + "HighLaunchDragVlaFullDeg": 31.5, + "HighLaunchDragBoostMax": 1.24, + "SpinDragProgressiveCapSrStart": 0.33, + "SpinDragProgressiveCapSrEnd": 0.5, + "SpinDragProgressiveCapBoostMax": 0.25, + "HighReMidSpinGain": 16.0, + "MidSpinClBoostSrStart": 0.17, + "MidSpinClBoostSrEnd": 0.31, + "MidSpinClBoostMax": 0.5 + } + }, + "summary": { + "pass": 4, + "moderate": 6, + "severe": 8, + "no_reference": 9 + }, + "per_shot": { + "shot_1": { + "diff_carry_yd": null, + "diff_total_yd": null, + "diff_apex_ft": null, + "status": "pass", + "error_pattern": null + }, + "shot_10": { + "diff_carry_yd": 3.4, + "diff_total_yd": 10.2, + "diff_apex_ft": -6.0, + "status": "severe", + "error_pattern": "CARRY_AND_ROLLOUT_LONG" + }, + "shot_11": { + "diff_carry_yd": -2.6, + "diff_total_yd": 1.1, + "diff_apex_ft": -4.6, + "status": "pass", + "error_pattern": null + }, + "shot_12": { + "diff_carry_yd": 4.5, + "diff_total_yd": 9.5, + "diff_apex_ft": -5.3, + "status": "moderate", + "error_pattern": "CARRY_AND_ROLLOUT_LONG" + }, + "shot_13": { + "diff_carry_yd": 1.2, + "diff_total_yd": 3.2, + "diff_apex_ft": -6.1, + "status": "pass", + "error_pattern": null + }, + "shot_14": { + "diff_carry_yd": -0.3, + "diff_total_yd": 1.7, + "diff_apex_ft": -6.1, + "status": "pass", + "error_pattern": null + }, + "shot_15": { + "diff_carry_yd": -1.0, + "diff_total_yd": -12.7, + "diff_apex_ft": -2.0, + "status": "severe", + "error_pattern": "ROLLOUT_TOO_SHORT" + }, + "shot_16": { + "diff_carry_yd": -0.3, + "diff_total_yd": 2.2, + "diff_apex_ft": -3.5, + "status": "pass", + "error_pattern": null + }, + "shot_17": { + "diff_carry_yd": 5.8, + "diff_total_yd": 8.0, + "diff_apex_ft": -3.9, + "status": "moderate", + "error_pattern": "CARRY_AND_ROLLOUT_LONG" + }, + "shot_18": { + "diff_carry_yd": 4.3, + "diff_total_yd": 14.0, + "diff_apex_ft": 2.6, + "status": "severe", + "error_pattern": "CARRY_AND_ROLLOUT_LONG" + }, + "shot_19": { + "diff_carry_yd": 2.2, + "diff_total_yd": -6.1, + "diff_apex_ft": -1.2, + "status": "moderate", + "error_pattern": "ROLLOUT_TOO_SHORT" + }, + "shot_2": { + "diff_carry_yd": null, + "diff_total_yd": null, + "diff_apex_ft": null, + "status": "pass", + "error_pattern": null + }, + "shot_20": { + "diff_carry_yd": 6.0, + "diff_total_yd": 11.5, + "diff_apex_ft": -2.0, + "status": "severe", + "error_pattern": "CARRY_AND_ROLLOUT_LONG" + }, + "shot_21": { + "diff_carry_yd": 4.9, + "diff_total_yd": 27.7, + "diff_apex_ft": 1.7, + "status": "severe", + "error_pattern": "CARRY_AND_ROLLOUT_LONG" + }, + "shot_22": { + "diff_carry_yd": 4.6, + "diff_total_yd": 1.6, + "diff_apex_ft": -1.6, + "status": "moderate", + "error_pattern": "CARRY_TOO_LONG" + }, + "shot_23": { + "diff_carry_yd": 3.5, + "diff_total_yd": -19.6, + "diff_apex_ft": 0.0, + "status": "severe", + "error_pattern": "CARRY_TOO_LONG" + }, + "shot_24": { + "diff_carry_yd": 4.7, + "diff_total_yd": 3.4, + "diff_apex_ft": -1.9, + "status": "moderate", + "error_pattern": "CARRY_TOO_LONG" + }, + "shot_25": { + "diff_carry_yd": null, + "diff_total_yd": null, + "diff_apex_ft": null, + "status": "pass", + "error_pattern": null + }, + "shot_26": { + "diff_carry_yd": 1.7, + "diff_total_yd": 20.6, + "diff_apex_ft": 23.5, + "status": "severe", + "error_pattern": "ROLLOUT_TOO_LONG" + }, + "shot_27": { + "diff_carry_yd": 2.6, + "diff_total_yd": 12.8, + "diff_apex_ft": 4.8, + "status": "severe", + "error_pattern": "ROLLOUT_TOO_LONG" + }, + "shot_3": { + "diff_carry_yd": null, + "diff_total_yd": null, + "diff_apex_ft": null, + "status": "pass", + "error_pattern": null + }, + "shot_4": { + "diff_carry_yd": null, + "diff_total_yd": null, + "diff_apex_ft": null, + "status": "pass", + "error_pattern": null + }, + "shot_5": { + "diff_carry_yd": null, + "diff_total_yd": null, + "diff_apex_ft": null, + "status": "pass", + "error_pattern": null + }, + "shot_6": { + "diff_carry_yd": null, + "diff_total_yd": null, + "diff_apex_ft": null, + "status": "pass", + "error_pattern": null + }, + "shot_7": { + "diff_carry_yd": null, + "diff_total_yd": null, + "diff_apex_ft": null, + "status": "pass", + "error_pattern": null + }, + "shot_8": { + "diff_carry_yd": null, + "diff_total_yd": null, + "diff_apex_ft": null, + "status": "pass", + "error_pattern": null + }, + "shot_9": { + "diff_carry_yd": -3.3, + "diff_total_yd": 1.6, + "diff_apex_ft": 7.1, + "status": "moderate", + "error_pattern": "CARRY_TOO_SHORT" + } + }, + "regressions": [], + "conflicts": [ + "Bounce.FlightTangentialRetentionBase", + "Bounce.FlightSpinFactorMin", + "Bounce.FlightSpinFactorDivisor", + "Bounce.CorBaseA", + "Rollout.LowSpinMultiplierMax", + "Rollout.HighSpinMultiplierMax", + "Rollout.LowSpinThreshold", + "KineticFrictionMultiplier", + "RollingFrictionMultiplier", + "Bounce.RolloutLowSpinRetention", + "Bounce.RolloutHighSpinRetention", + "Flight.ClMaxBase", + "Flight.CdMin", + "DragScaleMultiplier", + "LiftScaleMultiplier" + ] +} diff --git a/assets/data/shot_session_2/history/iteration_018.json b/assets/data/shot_session_2/history/iteration_018.json new file mode 100644 index 0000000..b1e071f --- /dev/null +++ b/assets/data/shot_session_2/history/iteration_018.json @@ -0,0 +1,235 @@ +{ + "iteration": 18, + "timestamp": "2026-03-14T02:32:17.735216", + "profile_overrides": { + "DragScaleMultiplier": 1.01, + "Flight": { + "CdMin": 0.223, + "HighLaunchDragVlaStartDeg": 24.5, + "HighLaunchDragVlaFullDeg": 31.5, + "HighLaunchDragBoostMax": 1.24, + "SpinDragProgressiveCapSrStart": 0.33, + "SpinDragProgressiveCapSrEnd": 0.5, + "SpinDragProgressiveCapBoostMax": 0.25, + "HighReMidSpinGain": 16.0, + "MidSpinClBoostSrStart": 0.17, + "MidSpinClBoostSrEnd": 0.31, + "MidSpinClBoostMax": 0.5 + } + }, + "summary": { + "pass": 4, + "moderate": 6, + "severe": 8, + "no_reference": 9 + }, + "per_shot": { + "shot_1": { + "diff_carry_yd": null, + "diff_total_yd": null, + "diff_apex_ft": null, + "status": "pass", + "error_pattern": null + }, + "shot_10": { + "diff_carry_yd": 3.4, + "diff_total_yd": 10.2, + "diff_apex_ft": -6.0, + "status": "severe", + "error_pattern": "CARRY_AND_ROLLOUT_LONG" + }, + "shot_11": { + "diff_carry_yd": -2.6, + "diff_total_yd": 1.1, + "diff_apex_ft": -4.6, + "status": "pass", + "error_pattern": null + }, + "shot_12": { + "diff_carry_yd": 4.5, + "diff_total_yd": 9.5, + "diff_apex_ft": -5.3, + "status": "moderate", + "error_pattern": "CARRY_AND_ROLLOUT_LONG" + }, + "shot_13": { + "diff_carry_yd": 1.2, + "diff_total_yd": 3.2, + "diff_apex_ft": -6.1, + "status": "pass", + "error_pattern": null + }, + "shot_14": { + "diff_carry_yd": -0.3, + "diff_total_yd": 1.7, + "diff_apex_ft": -6.1, + "status": "pass", + "error_pattern": null + }, + "shot_15": { + "diff_carry_yd": -1.0, + "diff_total_yd": -12.7, + "diff_apex_ft": -2.0, + "status": "severe", + "error_pattern": "ROLLOUT_TOO_SHORT" + }, + "shot_16": { + "diff_carry_yd": -0.3, + "diff_total_yd": 2.2, + "diff_apex_ft": -3.5, + "status": "pass", + "error_pattern": null + }, + "shot_17": { + "diff_carry_yd": 5.8, + "diff_total_yd": 8.0, + "diff_apex_ft": -3.9, + "status": "moderate", + "error_pattern": "CARRY_AND_ROLLOUT_LONG" + }, + "shot_18": { + "diff_carry_yd": 4.3, + "diff_total_yd": 14.0, + "diff_apex_ft": 2.6, + "status": "severe", + "error_pattern": "CARRY_AND_ROLLOUT_LONG" + }, + "shot_19": { + "diff_carry_yd": 2.2, + "diff_total_yd": -6.1, + "diff_apex_ft": -1.2, + "status": "moderate", + "error_pattern": "ROLLOUT_TOO_SHORT" + }, + "shot_2": { + "diff_carry_yd": null, + "diff_total_yd": null, + "diff_apex_ft": null, + "status": "pass", + "error_pattern": null + }, + "shot_20": { + "diff_carry_yd": 6.0, + "diff_total_yd": 11.5, + "diff_apex_ft": -2.0, + "status": "severe", + "error_pattern": "CARRY_AND_ROLLOUT_LONG" + }, + "shot_21": { + "diff_carry_yd": 4.9, + "diff_total_yd": 27.7, + "diff_apex_ft": 1.7, + "status": "severe", + "error_pattern": "CARRY_AND_ROLLOUT_LONG" + }, + "shot_22": { + "diff_carry_yd": 4.6, + "diff_total_yd": 1.6, + "diff_apex_ft": -1.6, + "status": "moderate", + "error_pattern": "CARRY_TOO_LONG" + }, + "shot_23": { + "diff_carry_yd": 3.5, + "diff_total_yd": -19.6, + "diff_apex_ft": 0.0, + "status": "severe", + "error_pattern": "CARRY_TOO_LONG" + }, + "shot_24": { + "diff_carry_yd": 4.7, + "diff_total_yd": 3.4, + "diff_apex_ft": -1.9, + "status": "moderate", + "error_pattern": "CARRY_TOO_LONG" + }, + "shot_25": { + "diff_carry_yd": null, + "diff_total_yd": null, + "diff_apex_ft": null, + "status": "pass", + "error_pattern": null + }, + "shot_26": { + "diff_carry_yd": 1.7, + "diff_total_yd": 20.6, + "diff_apex_ft": 23.5, + "status": "severe", + "error_pattern": "ROLLOUT_TOO_LONG" + }, + "shot_27": { + "diff_carry_yd": 2.6, + "diff_total_yd": 12.8, + "diff_apex_ft": 4.8, + "status": "severe", + "error_pattern": "ROLLOUT_TOO_LONG" + }, + "shot_3": { + "diff_carry_yd": null, + "diff_total_yd": null, + "diff_apex_ft": null, + "status": "pass", + "error_pattern": null + }, + "shot_4": { + "diff_carry_yd": null, + "diff_total_yd": null, + "diff_apex_ft": null, + "status": "pass", + "error_pattern": null + }, + "shot_5": { + "diff_carry_yd": null, + "diff_total_yd": null, + "diff_apex_ft": null, + "status": "pass", + "error_pattern": null + }, + "shot_6": { + "diff_carry_yd": null, + "diff_total_yd": null, + "diff_apex_ft": null, + "status": "pass", + "error_pattern": null + }, + "shot_7": { + "diff_carry_yd": null, + "diff_total_yd": null, + "diff_apex_ft": null, + "status": "pass", + "error_pattern": null + }, + "shot_8": { + "diff_carry_yd": null, + "diff_total_yd": null, + "diff_apex_ft": null, + "status": "pass", + "error_pattern": null + }, + "shot_9": { + "diff_carry_yd": -3.3, + "diff_total_yd": 1.6, + "diff_apex_ft": 7.1, + "status": "moderate", + "error_pattern": "CARRY_TOO_SHORT" + } + }, + "regressions": [], + "conflicts": [ + "Bounce.FlightTangentialRetentionBase", + "Bounce.FlightSpinFactorMin", + "Bounce.FlightSpinFactorDivisor", + "Bounce.CorBaseA", + "Rollout.LowSpinMultiplierMax", + "Rollout.HighSpinMultiplierMax", + "Rollout.LowSpinThreshold", + "KineticFrictionMultiplier", + "RollingFrictionMultiplier", + "Bounce.RolloutLowSpinRetention", + "Bounce.RolloutHighSpinRetention", + "Flight.ClMaxBase", + "Flight.CdMin", + "DragScaleMultiplier", + "LiftScaleMultiplier" + ] +} diff --git a/assets/data/shot_session_2/physics.csv b/assets/data/shot_session_2/physics.csv index a70701a..9347980 100644 --- a/assets/data/shot_session_2/physics.csv +++ b/assets/data/shot_session_2/physics.csv @@ -1,28 +1,28 @@ shot_name,filename,speed_mph,vla_deg,hla_deg,total_spin_rpm,spin_axis_deg,backspin_rpm,sidespin_rpm,carry_yd,total_yd,rollout_yd,apex_ft,hang_time_s,landing_speed_mps,landing_angle_deg,initial_re,initial_spin_ratio,initial_cd,initial_cl,peak_cl,carry_only_yd -shot_1,shot_1.json,18.82,35.31,-3.37,3729.2,-0.00,3729.2,-0.0,7.0,11.1,4.1,3.8,0.98,7.93,36.47,23028.8,0.990462,0.575854,0.000000,0.000000,7.1 -shot_10,shot_10.json,89.70,25.51,-3.13,6446.1,6.16,6408.9,691.6,118.5,126.6,8.0,66.0,4.74,22.09,47.71,109779.2,0.359143,0.239233,0.228748,0.289487,119.1 -shot_11,shot_11.json,78.51,29.59,4.31,7349.8,10.69,7222.3,1363.2,90.4,94.7,4.3,59.4,4.30,20.28,49.11,96081.2,0.467873,0.288782,0.274776,0.305820,90.8 -shot_12,shot_12.json,90.80,24.49,-3.88,7260.6,4.91,7233.9,621.5,119.9,125.9,6.0,66.2,4.82,21.79,46.88,111117.8,0.399648,0.251607,0.243274,0.311339,120.6 -shot_13,shot_13.json,95.22,19.62,-1.09,5609.6,12.20,5482.8,1185.8,126.5,131.9,5.3,52.3,4.34,23.16,39.57,116536.1,0.294416,0.228829,0.235762,0.269484,127.1 -shot_14,shot_14.json,87.13,22.37,-2.00,5660.3,11.37,5549.3,1115.6,110.6,115.4,4.8,49.8,4.14,22.08,40.74,106633.6,0.324668,0.239891,0.224737,0.268263,111.1 -shot_15,shot_15.json,88.14,14.21,-0.32,4985.2,19.37,4703.0,1653.5,100.3,100.4,0.1,26.9,3.23,23.71,25.64,107862.6,0.282684,0.238022,0.258753,0.279747,100.7 -shot_16,shot_16.json,94.07,19.14,-5.93,5291.1,4.96,5271.3,457.7,124.0,130.3,6.3,51.8,4.30,23.02,40.64,115119.9,0.281118,0.229885,0.262224,0.274710,124.7 -shot_17,shot_17.json,122.92,14.40,-1.33,4119.1,6.69,4091.0,480.2,189.8,198.3,8.4,67.9,5.25,26.99,36.41,150434.8,0.167473,0.218713,0.195165,0.200074,191.2 -shot_18,shot_18.json,105.67,20.50,-1.72,5666.8,8.18,5609.2,806.3,151.1,163.4,12.3,83.0,5.35,24.22,51.54,129323.3,0.268011,0.225675,0.290900,0.290900,151.9 -shot_19,shot_19.json,128.59,12.54,-8.40,2513.7,5.13,2503.6,224.6,196.7,202.6,5.9,56.1,4.86,29.59,28.83,157373.2,0.097695,0.208119,0.163440,0.165323,197.8 +shot_1,shot_1.json,18.82,35.31,-3.37,3729.2,-0.00,3729.2,-0.0,7.0,11.1,4.1,3.8,0.98,7.93,36.47,23028.8,0.990462,0.575854,0.000000,0.000000,7.0 +shot_10,shot_10.json,89.70,25.51,-3.13,6446.1,6.16,6408.9,691.6,118.5,126.6,8.0,66.0,4.74,22.09,47.71,109779.2,0.359143,0.239233,0.228748,0.289487,118.5 +shot_11,shot_11.json,78.51,29.59,4.31,7349.8,10.69,7222.3,1363.2,90.4,94.7,4.3,59.4,4.30,20.28,49.11,96081.2,0.467873,0.288782,0.274776,0.305820,90.4 +shot_12,shot_12.json,90.80,24.49,-3.88,7260.6,4.91,7233.9,621.5,119.9,125.9,6.0,66.2,4.82,21.79,46.88,111117.8,0.399648,0.251607,0.243274,0.311339,119.9 +shot_13,shot_13.json,95.22,19.62,-1.09,5609.6,12.20,5482.8,1185.8,126.5,131.9,5.3,52.3,4.34,23.16,39.57,116536.1,0.294416,0.228829,0.235762,0.269484,126.5 +shot_14,shot_14.json,87.13,22.37,-2.00,5660.3,11.37,5549.3,1115.6,110.6,115.4,4.8,49.8,4.14,22.08,40.74,106633.6,0.324668,0.239891,0.224737,0.268263,110.6 +shot_15,shot_15.json,88.14,14.21,-0.32,4985.2,19.37,4703.0,1653.5,100.3,100.4,0.1,26.9,3.23,23.71,25.64,107862.6,0.282684,0.238022,0.258753,0.279747,100.3 +shot_16,shot_16.json,94.07,19.14,-5.93,5291.1,4.96,5271.3,457.7,124.0,130.3,6.3,51.8,4.30,23.02,40.64,115119.9,0.281118,0.229885,0.262224,0.274710,124.0 +shot_17,shot_17.json,122.92,14.40,-1.33,4119.1,6.69,4091.0,480.2,189.8,198.3,8.4,67.9,5.25,26.99,36.41,150434.8,0.167473,0.218713,0.195165,0.200074,189.8 +shot_18,shot_18.json,105.67,20.50,-1.72,5666.8,8.18,5609.2,806.3,151.1,163.4,12.3,83.0,5.35,24.22,51.54,129323.3,0.268011,0.225675,0.290900,0.290900,151.1 +shot_19,shot_19.json,128.59,12.54,-8.40,2513.7,5.13,2503.6,224.6,196.7,202.6,5.9,56.1,4.86,29.59,28.83,157373.2,0.097695,0.208119,0.163440,0.165323,196.7 shot_2,shot_2.json,18.59,33.32,-2.15,3688.3,-0.00,3688.3,-0.0,6.7,10.9,4.1,3.4,0.92,7.85,34.40,22755.1,0.991373,0.575854,0.000000,0.000000,6.7 -shot_20,shot_20.json,120.88,15.02,-2.96,4245.1,9.62,4185.4,709.5,185.4,196.8,11.4,70.3,5.28,26.60,38.86,147934.6,0.175515,0.219317,0.199410,0.214008,186.6 -shot_21,shot_21.json,127.35,7.24,-11.46,2320.9,-19.47,2188.2,-773.4,159.8,214.2,54.4,24.8,3.52,33.30,16.10,155855.5,0.091079,0.206284,0.169690,0.170540,160.7 -shot_22,shot_22.json,123.29,14.01,-6.11,3104.1,9.97,3057.3,537.3,190.0,197.1,7.1,61.4,5.01,28.19,31.91,150883.1,0.125832,0.209373,0.179061,0.180985,191.1 -shot_23,shot_23.json,125.52,8.64,-14.33,3062.5,-23.87,2800.5,-1239.4,165.4,165.4,0.0,31.0,3.83,31.55,19.29,153607.5,0.121944,0.210229,0.180025,0.181025,166.1 -shot_24,shot_24.json,121.48,14.53,-11.23,3172.9,-6.80,3150.6,-375.5,187.7,196.2,8.5,62.7,5.04,27.83,32.84,148670.3,0.130533,0.209001,0.181227,0.183167,188.7 -shot_25,shot_25.json,127.22,4.99,-12.57,2671.0,-16.25,2564.3,-747.4,148.5,203.2,54.6,16.9,3.18,34.37,12.34,155698.6,0.104925,0.208362,0.181392,0.182042,149.1 -shot_26,shot_26.json,116.97,18.42,-2.02,5035.4,9.70,4963.4,848.2,172.4,194.8,22.4,111.6,6.15,25.80,58.18,143143.6,0.215155,0.228401,0.284498,0.319321,173.3 -shot_27,shot_27.json,112.96,17.59,-2.26,4291.5,12.21,4194.4,907.8,167.1,182.4,15.3,78.4,5.29,25.68,46.76,138244.2,0.189868,0.217944,0.222482,0.263952,168.1 +shot_20,shot_20.json,120.88,15.02,-2.96,4245.1,9.62,4185.4,709.5,185.4,196.8,11.4,70.3,5.28,26.60,38.86,147934.6,0.175515,0.219317,0.199410,0.214008,185.4 +shot_21,shot_21.json,127.35,7.24,-11.46,2320.9,-19.47,2188.2,-773.4,159.8,214.2,54.4,24.8,3.52,33.30,16.10,155855.5,0.091079,0.206284,0.169690,0.170540,159.8 +shot_22,shot_22.json,123.29,14.01,-6.11,3104.1,9.97,3057.3,537.3,190.0,197.1,7.1,61.4,5.01,28.19,31.91,150883.1,0.125832,0.209373,0.179061,0.180985,190.0 +shot_23,shot_23.json,125.52,8.64,-14.33,3062.5,-23.87,2800.5,-1239.4,165.4,165.4,0.0,31.0,3.83,31.55,19.29,153607.5,0.121944,0.210229,0.180025,0.181025,165.4 +shot_24,shot_24.json,121.48,14.53,-11.23,3172.9,-6.80,3150.6,-375.5,187.7,196.2,8.5,62.7,5.04,27.83,32.84,148670.3,0.130533,0.209001,0.181227,0.183167,187.7 +shot_25,shot_25.json,127.22,4.99,-12.57,2671.0,-16.25,2564.3,-747.4,148.5,203.2,54.6,16.9,3.18,34.37,12.34,155698.6,0.104925,0.208362,0.181392,0.182042,148.5 +shot_26,shot_26.json,116.97,18.42,-2.02,5035.4,9.70,4963.4,848.2,172.4,194.8,22.4,111.6,6.15,25.80,58.18,143143.6,0.215155,0.228401,0.284498,0.319321,172.4 +shot_27,shot_27.json,112.96,17.59,-2.26,4291.5,12.21,4194.4,907.8,167.1,182.4,15.3,78.4,5.29,25.68,46.76,138244.2,0.189868,0.217944,0.222482,0.263952,167.1 shot_3,shot_3.json,30.72,32.94,-2.80,4070.1,-0.00,4070.1,-0.0,16.9,25.4,8.5,8.7,1.48,11.91,36.15,37591.2,0.662227,0.624945,0.091740,0.091740,16.9 -shot_4,shot_4.json,41.63,35.25,-0.96,5228.9,5.22,5207.3,475.4,29.1,37.6,8.5,18.0,2.13,14.48,42.34,50942.2,0.627805,0.679750,0.286567,0.286567,29.2 +shot_4,shot_4.json,41.63,35.25,-0.96,5228.9,5.22,5207.3,475.4,29.1,37.6,8.5,18.0,2.13,14.48,42.34,50942.2,0.627805,0.679750,0.286567,0.286567,29.1 shot_5,shot_5.json,34.04,35.10,-1.20,4487.3,-0.00,4487.3,-0.0,20.8,29.3,8.6,11.9,1.73,12.81,39.49,41663.5,0.658746,0.662177,0.177386,0.177386,20.8 shot_6,shot_6.json,34.78,36.39,-0.62,4515.3,0.93,4514.7,73.1,21.8,29.8,8.0,13.2,1.82,13.01,41.18,42558.8,0.648916,0.666084,0.196137,0.196137,21.8 shot_7,shot_7.json,41.38,18.02,-7.65,3110.5,-0.00,3110.5,-0.0,21.8,39.8,18.0,5.8,1.27,15.39,21.33,50646.4,0.375640,0.545101,0.241716,0.257404,21.8 shot_8,shot_8.json,43.09,12.55,7.93,2821.4,18.87,2669.8,912.3,16.6,37.9,21.3,2.9,0.88,16.59,14.19,52729.6,0.327265,0.527770,0.124722,0.124722,16.6 -shot_9,shot_9.json,94.41,20.07,2.40,4020.4,16.33,3858.1,1130.8,123.2,134.1,10.9,61.9,4.46,23.47,46.60,115543.8,0.212823,0.225950,0.279055,0.315344,123.7 +shot_9,shot_9.json,94.41,20.07,2.40,4020.4,16.33,3858.1,1130.8,123.2,134.1,10.9,61.9,4.46,23.47,46.60,115543.8,0.212823,0.225950,0.279055,0.315344,123.2 diff --git a/assets/data/shot_session_2/shot_diff_analysis.csv b/assets/data/shot_session_2/shot_diff_analysis.csv index bf0f7e5..24384d6 100644 --- a/assets/data/shot_session_2/shot_diff_analysis.csv +++ b/assets/data/shot_session_2/shot_diff_analysis.csv @@ -1,28 +1,28 @@ -shot_name,speed_mph,vla_deg,hla_deg,total_spin_rpm,spin_axis_deg,physics_carry_yd,flightscope_carry_yd,diff_carry_yd,physics_carry_raw_yd,diff_carry_raw_yd,physics_total_yd,flightscope_total_yd,diff_total_yd,rollout_physics_yd,rollout_flightscope_yd,diff_rollout_yd,physics_apex_ft,flightscope_apex_ft,diff_apex_ft,carry_exception_regime,carry_exception_offset_yd,carry_exception_source,carry_exception_applied,status -shot_1,18.8,35.3,-3.4,3729,-0.0,7.0,,,7.0,,11.1,,,4.1,,,3.8,,,C-S0-V4-P1,,,false, -shot_10,89.7,25.5,-3.1,6446,6.2,114.5,115.1,-0.6,118.5,3.4,126.6,116.4,10.2,12.1,1.3,10.8,66.0,72.0,-6.0,I-S2-V3-P3,4.0,regime,true,severe -shot_11,78.5,29.6,4.3,7350,10.7,90.4,93.0,-2.6,90.4,-2.6,94.7,93.6,1.1,4.3,0.6,3.7,59.4,64.0,-4.6,I-S1-V3-P3,,,false,pass -shot_12,90.8,24.5,-3.9,7261,4.9,116.4,115.4,1.0,119.9,4.5,125.9,116.4,9.5,9.5,1.0,8.5,66.2,71.5,-5.3,I-S2-V2-P3,3.5,regime,true,moderate -shot_13,95.2,19.6,-1.1,5610,12.2,123.0,125.3,-2.3,126.5,1.2,131.9,128.7,3.2,8.9,3.4,5.5,52.3,58.4,-6.1,I-S2-V2-P3,3.5,regime,true,pass -shot_14,87.1,22.4,-2.0,5660,11.4,107.1,110.9,-3.8,110.6,-0.3,115.4,113.7,1.7,8.3,2.8,5.5,49.8,55.9,-6.1,I-S2-V2-P3,3.5,regime,true,moderate -shot_15,88.1,14.2,-0.3,4985,19.4,94.0,101.3,-7.3,100.3,-1.0,100.4,113.1,-12.7,6.4,11.8,-5.4,26.9,28.9,-2.0,I-S2-V1-P2,6.3,regime,true,severe -shot_16,94.1,19.1,-5.9,5291,5.0,124.0,124.3,-0.3,124.0,-0.3,130.3,128.1,2.2,6.3,3.8,2.5,51.8,55.3,-3.5,I-S2-V2-P2,,,false,pass -shot_17,122.9,14.4,-1.3,4119,6.7,182.6,184.0,-1.4,189.8,5.8,198.3,190.3,8.0,15.7,6.3,9.4,67.9,71.8,-3.9,D-S4-V1-P2,7.2,regime,true,moderate -shot_18,105.7,20.5,-1.7,5667,8.2,147.1,146.8,0.3,151.1,4.3,163.4,149.4,14.0,16.3,2.6,13.7,83.0,80.4,2.6,I-S3-V2-P3,4.0,regime,true,severe -shot_19,128.6,12.5,-8.4,2514,5.1,190.3,194.5,-4.2,196.7,2.2,202.6,208.7,-6.1,12.3,14.2,-1.9,56.1,57.3,-1.2,D-S4-V1-P1,6.4,regime,true,moderate -shot_2,18.6,33.3,-2.1,3688,-0.0,6.7,,,6.7,,10.9,,,4.2,,,3.4,,,C-S0-V4-P1,,,false, -shot_20,120.9,15.0,-3.0,4245,9.6,178.4,179.4,-1.0,185.4,6.0,196.8,185.3,11.5,18.4,5.9,12.5,70.3,72.3,-2.0,D-S4-V1-P2,7.0,regime,true,severe -shot_21,127.3,7.2,-11.5,2321,-19.5,159.8,154.9,4.9,159.8,4.9,214.2,186.5,27.7,54.4,31.6,22.8,24.8,23.1,1.7,D-S4-V0-P0,,,false,severe -shot_22,123.3,14.0,-6.1,3104,10.0,183.6,185.4,-1.8,190.0,4.6,197.1,195.5,1.6,13.5,10.1,3.4,61.4,63.0,-1.6,D-S4-V1-P1,6.4,regime,true,pass -shot_23,125.5,8.6,-14.3,3062,-23.9,158.4,161.9,-3.5,165.4,3.5,165.4,185.0,-19.6,7.0,23.1,-16.1,31.0,31.0,0.0,D-S4-V0-P1,7.0,regime,true,severe -shot_24,121.5,14.5,-11.2,3173,-6.8,181.3,183.0,-1.7,187.7,4.7,196.2,192.8,3.4,14.9,9.8,5.1,62.7,64.6,-1.9,D-S4-V1-P1,6.4,regime,true,pass -shot_25,127.2,5.0,-12.6,2671,-16.2,148.5,,,148.5,,203.2,,,54.7,,,16.9,,,D-S4-V0-P1,,,false, -shot_26,117.0,18.4,-2.0,5035,9.7,172.4,170.7,1.7,172.4,1.7,194.8,174.2,20.6,22.4,3.5,18.9,111.6,88.1,23.5,I-S3-V2-P2,,,false,severe -shot_27,113.0,17.6,-2.3,4292,12.2,160.1,164.5,-4.4,167.1,2.6,182.4,169.6,12.8,22.3,5.1,17.2,78.4,73.6,4.8,D-S3-V1-P2,7.0,regime,true,severe -shot_3,30.7,32.9,-2.8,4070,-0.0,16.9,,,16.9,,25.4,,,8.5,,,8.7,,,C-S0-V3-P2,,,false, -shot_4,41.6,35.2,-1.0,5229,5.2,29.1,,,29.1,,37.6,,,8.5,,,18.0,,,C-S0-V4-P2,,,false, -shot_5,34.0,35.1,-1.2,4487,-0.0,20.8,,,20.8,,29.3,,,8.5,,,11.9,,,C-S0-V4-P2,,,false, -shot_6,34.8,36.4,-0.6,4515,0.9,21.8,,,21.8,,29.8,,,8.0,,,13.2,,,C-S0-V4-P2,,,false, -shot_7,41.4,18.0,-7.7,3110,-0.0,21.8,,,21.8,,39.8,,,18.0,,,5.8,,,C-S0-V2-P1,,,false, -shot_8,43.1,12.6,7.9,2821,18.9,16.6,,,16.6,,37.9,,,21.3,,,2.9,,,C-S0-V1-P1,,,false, -shot_9,94.4,20.1,2.4,4020,16.3,123.2,126.5,-3.3,123.2,-3.3,134.1,132.5,1.6,10.9,6.0,4.9,61.9,54.8,7.1,I-S2-V2-P2,,,false,moderate +shot_name,speed_mph,vla_deg,hla_deg,total_spin_rpm,spin_axis_deg,launch_regime_key,carry_window,physics_carry_yd,flightscope_carry_yd,diff_carry_yd,physics_carry_raw_yd,diff_carry_raw_yd,physics_total_yd,flightscope_total_yd,diff_total_yd,rollout_physics_yd,rollout_flightscope_yd,diff_rollout_yd,physics_apex_ft,flightscope_apex_ft,diff_apex_ft,carry_exception_regime,carry_exception_offset_yd,carry_exception_source,carry_exception_applied,status +shot_1,18.8,35.3,-3.4,3729,-0.0,C-S0-V4-P1,,7.0,,,7.0,,11.1,,,4.1,,,3.8,,,,,,false, +shot_10,89.7,25.5,-3.1,6446,6.2,I-S2-V3-P3,115-150,118.5,115.1,3.4,118.5,3.4,126.6,116.4,10.2,8.1,1.3,6.8,66.0,72.0,-6.0,,,,false,severe +shot_11,78.5,29.6,4.3,7350,10.7,I-S1-V3-P3,<115,90.4,93.0,-2.6,90.4,-2.6,94.7,93.6,1.1,4.3,0.6,3.7,59.4,64.0,-4.6,,,,false,pass +shot_12,90.8,24.5,-3.9,7261,4.9,I-S2-V2-P3,115-150,119.9,115.4,4.5,119.9,4.5,125.9,116.4,9.5,6.0,1.0,5.0,66.2,71.5,-5.3,,,,false,moderate +shot_13,95.2,19.6,-1.1,5610,12.2,I-S2-V2-P3,115-150,126.5,125.3,1.2,126.5,1.2,131.9,128.7,3.2,5.4,3.4,2.0,52.3,58.4,-6.1,,,,false,pass +shot_14,87.1,22.4,-2.0,5660,11.4,I-S2-V2-P3,<115,110.6,110.9,-0.3,110.6,-0.3,115.4,113.7,1.7,4.8,2.8,2.0,49.8,55.9,-6.1,,,,false,pass +shot_15,88.1,14.2,-0.3,4985,19.4,I-S2-V1-P2,<115,100.3,101.3,-1.0,100.3,-1.0,100.4,113.1,-12.7,0.1,11.8,-11.7,26.9,28.9,-2.0,,,,false,severe +shot_16,94.1,19.1,-5.9,5291,5.0,I-S2-V2-P2,115-150,124.0,124.3,-0.3,124.0,-0.3,130.3,128.1,2.2,6.3,3.8,2.5,51.8,55.3,-3.5,,,,false,pass +shot_17,122.9,14.4,-1.3,4119,6.7,D-S4-V1-P2,180-200,189.8,184.0,5.8,189.8,5.8,198.3,190.3,8.0,8.5,6.3,2.2,67.9,71.8,-3.9,,,,false,moderate +shot_18,105.7,20.5,-1.7,5667,8.2,I-S3-V2-P3,115-150,151.1,146.8,4.3,151.1,4.3,163.4,149.4,14.0,12.3,2.6,9.7,83.0,80.4,2.6,,,,false,severe +shot_19,128.6,12.5,-8.4,2514,5.1,D-S4-V1-P1,180-200,196.7,194.5,2.2,196.7,2.2,202.6,208.7,-6.1,5.9,14.2,-8.3,56.1,57.3,-1.2,,,,false,moderate +shot_2,18.6,33.3,-2.1,3688,-0.0,C-S0-V4-P1,,6.7,,,6.7,,10.9,,,4.2,,,3.4,,,,,,false, +shot_20,120.9,15.0,-3.0,4245,9.6,D-S4-V1-P2,150-180,185.4,179.4,6.0,185.4,6.0,196.8,185.3,11.5,11.4,5.9,5.5,70.3,72.3,-2.0,,,,false,severe +shot_21,127.3,7.2,-11.5,2321,-19.5,D-S4-V0-P0,150-180,159.8,154.9,4.9,159.8,4.9,214.2,186.5,27.7,54.4,31.6,22.8,24.8,23.1,1.7,,,,false,severe +shot_22,123.3,14.0,-6.1,3104,10.0,D-S4-V1-P1,180-200,190.0,185.4,4.6,190.0,4.6,197.1,195.5,1.6,7.1,10.1,-3.0,61.4,63.0,-1.6,,,,false,moderate +shot_23,125.5,8.6,-14.3,3062,-23.9,D-S4-V0-P1,150-180,165.4,161.9,3.5,165.4,3.5,165.4,185.0,-19.6,0.0,23.1,-23.1,31.0,31.0,0.0,,,,false,severe +shot_24,121.5,14.5,-11.2,3173,-6.8,D-S4-V1-P1,180-200,187.7,183.0,4.7,187.7,4.7,196.2,192.8,3.4,8.5,9.8,-1.3,62.7,64.6,-1.9,,,,false,moderate +shot_25,127.2,5.0,-12.6,2671,-16.2,D-S4-V0-P1,,148.5,,,148.5,,203.2,,,54.7,,,16.9,,,,,,false, +shot_26,117.0,18.4,-2.0,5035,9.7,I-S3-V2-P2,150-180,172.4,170.7,1.7,172.4,1.7,194.8,174.2,20.6,22.4,3.5,18.9,111.6,88.1,23.5,,,,false,severe +shot_27,113.0,17.6,-2.3,4292,12.2,D-S3-V1-P2,150-180,167.1,164.5,2.6,167.1,2.6,182.4,169.6,12.8,15.3,5.1,10.2,78.4,73.6,4.8,,,,false,severe +shot_3,30.7,32.9,-2.8,4070,-0.0,C-S0-V3-P2,,16.9,,,16.9,,25.4,,,8.5,,,8.7,,,,,,false, +shot_4,41.6,35.2,-1.0,5229,5.2,C-S0-V4-P2,,29.1,,,29.1,,37.6,,,8.5,,,18.0,,,,,,false, +shot_5,34.0,35.1,-1.2,4487,-0.0,C-S0-V4-P2,,20.8,,,20.8,,29.3,,,8.5,,,11.9,,,,,,false, +shot_6,34.8,36.4,-0.6,4515,0.9,C-S0-V4-P2,,21.8,,,21.8,,29.8,,,8.0,,,13.2,,,,,,false, +shot_7,41.4,18.0,-7.7,3110,-0.0,C-S0-V2-P1,,21.8,,,21.8,,39.8,,,18.0,,,5.8,,,,,,false, +shot_8,43.1,12.6,7.9,2821,18.9,C-S0-V1-P1,,16.6,,,16.6,,37.9,,,21.3,,,2.9,,,,,,false, +shot_9,94.4,20.1,2.4,4020,16.3,I-S2-V2-P2,115-150,123.2,126.5,-3.3,123.2,-3.3,134.1,132.5,1.6,10.9,6.0,4.9,61.9,54.8,7.1,,,,false,moderate diff --git a/assets/data/shot_session_2/shot_diff_analysis.csv.import b/assets/data/shot_session_2/shot_diff_analysis.csv.import index 19af823..23b4867 100644 --- a/assets/data/shot_session_2/shot_diff_analysis.csv.import +++ b/assets/data/shot_session_2/shot_diff_analysis.csv.import @@ -6,10 +6,10 @@ uid="uid://bu5weiscw1ja8" [deps] -files=["res://assets/data/shot_session_2/shot_diff_analysis.speed.translation", "res://assets/data/shot_session_2/shot_diff_analysis.vla.translation", "res://assets/data/shot_session_2/shot_diff_analysis.hla.translation", "res://assets/data/shot_session_2/shot_diff_analysis.total.translation", "res://assets/data/shot_session_2/shot_diff_analysis.spin.translation", "res://assets/data/shot_session_2/shot_diff_analysis.physics.translation", "res://assets/data/shot_session_2/shot_diff_analysis.flightscope.translation", "res://assets/data/shot_session_2/shot_diff_analysis.diff.translation", "res://assets/data/shot_session_2/shot_diff_analysis.physics.translation", "res://assets/data/shot_session_2/shot_diff_analysis.diff.translation", "res://assets/data/shot_session_2/shot_diff_analysis.physics.translation", "res://assets/data/shot_session_2/shot_diff_analysis.flightscope.translation", "res://assets/data/shot_session_2/shot_diff_analysis.diff.translation", "res://assets/data/shot_session_2/shot_diff_analysis.rollout.translation", "res://assets/data/shot_session_2/shot_diff_analysis.rollout.translation", "res://assets/data/shot_session_2/shot_diff_analysis.diff.translation", "res://assets/data/shot_session_2/shot_diff_analysis.physics.translation", "res://assets/data/shot_session_2/shot_diff_analysis.flightscope.translation", "res://assets/data/shot_session_2/shot_diff_analysis.diff.translation", "res://assets/data/shot_session_2/shot_diff_analysis.carry.translation", "res://assets/data/shot_session_2/shot_diff_analysis.carry.translation", "res://assets/data/shot_session_2/shot_diff_analysis.carry.translation", "res://assets/data/shot_session_2/shot_diff_analysis.carry.translation", "res://assets/data/shot_session_2/shot_diff_analysis.status.translation"] +files=["res://assets/data/shot_session_2/shot_diff_analysis.speed.translation", "res://assets/data/shot_session_2/shot_diff_analysis.vla.translation", "res://assets/data/shot_session_2/shot_diff_analysis.hla.translation", "res://assets/data/shot_session_2/shot_diff_analysis.total.translation", "res://assets/data/shot_session_2/shot_diff_analysis.spin.translation", "res://assets/data/shot_session_2/shot_diff_analysis.launch.translation", "res://assets/data/shot_session_2/shot_diff_analysis.carry.translation", "res://assets/data/shot_session_2/shot_diff_analysis.physics.translation", "res://assets/data/shot_session_2/shot_diff_analysis.flightscope.translation", "res://assets/data/shot_session_2/shot_diff_analysis.diff.translation", "res://assets/data/shot_session_2/shot_diff_analysis.physics.translation", "res://assets/data/shot_session_2/shot_diff_analysis.diff.translation", "res://assets/data/shot_session_2/shot_diff_analysis.physics.translation", "res://assets/data/shot_session_2/shot_diff_analysis.flightscope.translation", "res://assets/data/shot_session_2/shot_diff_analysis.diff.translation", "res://assets/data/shot_session_2/shot_diff_analysis.rollout.translation", "res://assets/data/shot_session_2/shot_diff_analysis.rollout.translation", "res://assets/data/shot_session_2/shot_diff_analysis.diff.translation", "res://assets/data/shot_session_2/shot_diff_analysis.physics.translation", "res://assets/data/shot_session_2/shot_diff_analysis.flightscope.translation", "res://assets/data/shot_session_2/shot_diff_analysis.diff.translation", "res://assets/data/shot_session_2/shot_diff_analysis.en.translation", "res://assets/data/shot_session_2/shot_diff_analysis.en.translation", "res://assets/data/shot_session_2/shot_diff_analysis.en.translation", "res://assets/data/shot_session_2/shot_diff_analysis.carry.translation", "res://assets/data/shot_session_2/shot_diff_analysis.status.translation"] source_file="res://assets/data/shot_session_2/shot_diff_analysis.csv" -dest_files=["res://assets/data/shot_session_2/shot_diff_analysis.speed.translation", "res://assets/data/shot_session_2/shot_diff_analysis.vla.translation", "res://assets/data/shot_session_2/shot_diff_analysis.hla.translation", "res://assets/data/shot_session_2/shot_diff_analysis.total.translation", "res://assets/data/shot_session_2/shot_diff_analysis.spin.translation", "res://assets/data/shot_session_2/shot_diff_analysis.physics.translation", "res://assets/data/shot_session_2/shot_diff_analysis.flightscope.translation", "res://assets/data/shot_session_2/shot_diff_analysis.diff.translation", "res://assets/data/shot_session_2/shot_diff_analysis.physics.translation", "res://assets/data/shot_session_2/shot_diff_analysis.diff.translation", "res://assets/data/shot_session_2/shot_diff_analysis.physics.translation", "res://assets/data/shot_session_2/shot_diff_analysis.flightscope.translation", "res://assets/data/shot_session_2/shot_diff_analysis.diff.translation", "res://assets/data/shot_session_2/shot_diff_analysis.rollout.translation", "res://assets/data/shot_session_2/shot_diff_analysis.rollout.translation", "res://assets/data/shot_session_2/shot_diff_analysis.diff.translation", "res://assets/data/shot_session_2/shot_diff_analysis.physics.translation", "res://assets/data/shot_session_2/shot_diff_analysis.flightscope.translation", "res://assets/data/shot_session_2/shot_diff_analysis.diff.translation", "res://assets/data/shot_session_2/shot_diff_analysis.carry.translation", "res://assets/data/shot_session_2/shot_diff_analysis.carry.translation", "res://assets/data/shot_session_2/shot_diff_analysis.carry.translation", "res://assets/data/shot_session_2/shot_diff_analysis.carry.translation", "res://assets/data/shot_session_2/shot_diff_analysis.status.translation"] +dest_files=["res://assets/data/shot_session_2/shot_diff_analysis.speed.translation", "res://assets/data/shot_session_2/shot_diff_analysis.vla.translation", "res://assets/data/shot_session_2/shot_diff_analysis.hla.translation", "res://assets/data/shot_session_2/shot_diff_analysis.total.translation", "res://assets/data/shot_session_2/shot_diff_analysis.spin.translation", "res://assets/data/shot_session_2/shot_diff_analysis.launch.translation", "res://assets/data/shot_session_2/shot_diff_analysis.carry.translation", "res://assets/data/shot_session_2/shot_diff_analysis.physics.translation", "res://assets/data/shot_session_2/shot_diff_analysis.flightscope.translation", "res://assets/data/shot_session_2/shot_diff_analysis.diff.translation", "res://assets/data/shot_session_2/shot_diff_analysis.physics.translation", "res://assets/data/shot_session_2/shot_diff_analysis.diff.translation", "res://assets/data/shot_session_2/shot_diff_analysis.physics.translation", "res://assets/data/shot_session_2/shot_diff_analysis.flightscope.translation", "res://assets/data/shot_session_2/shot_diff_analysis.diff.translation", "res://assets/data/shot_session_2/shot_diff_analysis.rollout.translation", "res://assets/data/shot_session_2/shot_diff_analysis.rollout.translation", "res://assets/data/shot_session_2/shot_diff_analysis.diff.translation", "res://assets/data/shot_session_2/shot_diff_analysis.physics.translation", "res://assets/data/shot_session_2/shot_diff_analysis.flightscope.translation", "res://assets/data/shot_session_2/shot_diff_analysis.diff.translation", "res://assets/data/shot_session_2/shot_diff_analysis.en.translation", "res://assets/data/shot_session_2/shot_diff_analysis.en.translation", "res://assets/data/shot_session_2/shot_diff_analysis.en.translation", "res://assets/data/shot_session_2/shot_diff_analysis.carry.translation", "res://assets/data/shot_session_2/shot_diff_analysis.status.translation"] [params] diff --git a/assets/data/shot_session_3/history/iteration_004.json b/assets/data/shot_session_3/history/iteration_004.json new file mode 100644 index 0000000..5061b48 --- /dev/null +++ b/assets/data/shot_session_3/history/iteration_004.json @@ -0,0 +1,554 @@ +{ + "iteration": 4, + "timestamp": "2026-03-14T01:45:23.698357", + "profile_overrides": { + "DragScaleMultiplier": 1.01, + "Flight": { + "CdMin": 0.223, + "HighLaunchDragVlaStartDeg": 24.5, + "HighLaunchDragVlaFullDeg": 31.5, + "HighLaunchDragBoostMax": 1.24, + "SpinDragProgressiveCapSrStart": 0.33, + "SpinDragProgressiveCapSrEnd": 0.5, + "SpinDragProgressiveCapBoostMax": 0.25, + "HighReMidSpinGain": 16.0, + "MidSpinClBoostSrStart": 0.17, + "MidSpinClBoostSrEnd": 0.31, + "MidSpinClBoostMax": 0.5 + } + }, + "summary": { + "pass": 11, + "moderate": 15, + "severe": 35, + "no_reference": 8 + }, + "per_shot": { + "shot_3w_18": { + "diff_carry_yd": null, + "diff_total_yd": null, + "diff_apex_ft": null, + "status": "pass", + "error_pattern": null + }, + "shot_3w_19": { + "diff_carry_yd": -0.6, + "diff_total_yd": 16.0, + "diff_apex_ft": 0.1, + "status": "severe", + "error_pattern": "ROLLOUT_TOO_LONG" + }, + "shot_3w_20": { + "diff_carry_yd": null, + "diff_total_yd": null, + "diff_apex_ft": null, + "status": "pass", + "error_pattern": null + }, + "shot_3w_21": { + "diff_carry_yd": 0.6, + "diff_total_yd": 15.9, + "diff_apex_ft": 0.3, + "status": "severe", + "error_pattern": "ROLLOUT_TOO_LONG" + }, + "shot_3w_22": { + "diff_carry_yd": 2.6, + "diff_total_yd": 19.6, + "diff_apex_ft": 0.5, + "status": "severe", + "error_pattern": "ROLLOUT_TOO_LONG" + }, + "shot_3w_23": { + "diff_carry_yd": 0.1, + "diff_total_yd": -23.3, + "diff_apex_ft": -1.3, + "status": "severe", + "error_pattern": "ROLLOUT_TOO_SHORT" + }, + "shot_3w_24": { + "diff_carry_yd": 6.9, + "diff_total_yd": 28.4, + "diff_apex_ft": 1.8, + "status": "severe", + "error_pattern": "CARRY_AND_ROLLOUT_LONG" + }, + "shot_5i_10": { + "diff_carry_yd": 2.5, + "diff_total_yd": -7.6, + "diff_apex_ft": 5.8, + "status": "moderate", + "error_pattern": "ROLLOUT_TOO_SHORT" + }, + "shot_5i_11": { + "diff_carry_yd": -3.7, + "diff_total_yd": -17.6, + "diff_apex_ft": -1.3, + "status": "severe", + "error_pattern": "CARRY_AND_ROLLOUT_SHORT" + }, + "shot_5i_12": { + "diff_carry_yd": 1.1, + "diff_total_yd": -23.5, + "diff_apex_ft": 1.1, + "status": "severe", + "error_pattern": "ROLLOUT_TOO_SHORT" + }, + "shot_5i_13": { + "diff_carry_yd": 2.3, + "diff_total_yd": 10.1, + "diff_apex_ft": 0.6, + "status": "severe", + "error_pattern": "ROLLOUT_TOO_LONG" + }, + "shot_5i_14": { + "diff_carry_yd": null, + "diff_total_yd": null, + "diff_apex_ft": null, + "status": "pass", + "error_pattern": null + }, + "shot_5i_15": { + "diff_carry_yd": -4.6, + "diff_total_yd": 14.5, + "diff_apex_ft": -1.1, + "status": "severe", + "error_pattern": "CARRY_TOO_SHORT" + }, + "shot_5i_16": { + "diff_carry_yd": 0.9, + "diff_total_yd": -21.0, + "diff_apex_ft": -0.2, + "status": "severe", + "error_pattern": "ROLLOUT_TOO_SHORT" + }, + "shot_5i_17": { + "diff_carry_yd": -2.2, + "diff_total_yd": -1.7, + "diff_apex_ft": -0.3, + "status": "pass", + "error_pattern": null + }, + "shot_6i_35": { + "diff_carry_yd": -5.5, + "diff_total_yd": -17.0, + "diff_apex_ft": -3.4, + "status": "severe", + "error_pattern": "CARRY_AND_ROLLOUT_SHORT" + }, + "shot_6i_36": { + "diff_carry_yd": 1.7, + "diff_total_yd": -21.1, + "diff_apex_ft": 0.6, + "status": "severe", + "error_pattern": "ROLLOUT_TOO_SHORT" + }, + "shot_6i_37": { + "diff_carry_yd": -3.7, + "diff_total_yd": 11.9, + "diff_apex_ft": -0.9, + "status": "severe", + "error_pattern": "CARRY_TOO_SHORT" + }, + "shot_6i_38": { + "diff_carry_yd": -3.6, + "diff_total_yd": -21.7, + "diff_apex_ft": 0.1, + "status": "severe", + "error_pattern": "CARRY_AND_ROLLOUT_SHORT" + }, + "shot_6i_39": { + "diff_carry_yd": -0.5, + "diff_total_yd": 6.4, + "diff_apex_ft": 0.0, + "status": "moderate", + "error_pattern": "ROLLOUT_TOO_LONG" + }, + "shot_6i_40": { + "diff_carry_yd": -1.3, + "diff_total_yd": 7.7, + "diff_apex_ft": 0.1, + "status": "moderate", + "error_pattern": "ROLLOUT_TOO_LONG" + }, + "shot_6i_41": { + "diff_carry_yd": -4.7, + "diff_total_yd": 12.9, + "diff_apex_ft": -1.0, + "status": "severe", + "error_pattern": "CARRY_TOO_SHORT" + }, + "shot_6i_42": { + "diff_carry_yd": -1.4, + "diff_total_yd": -17.8, + "diff_apex_ft": 0.7, + "status": "severe", + "error_pattern": "ROLLOUT_TOO_SHORT" + }, + "shot_6i_43": { + "diff_carry_yd": 5.6, + "diff_total_yd": -0.2, + "diff_apex_ft": 7.8, + "status": "moderate", + "error_pattern": "CARRY_TOO_LONG" + }, + "shot_6i_44": { + "diff_carry_yd": -1.8, + "diff_total_yd": -28.0, + "diff_apex_ft": -1.4, + "status": "severe", + "error_pattern": "ROLLOUT_TOO_SHORT" + }, + "shot_6i_45": { + "diff_carry_yd": 3.0, + "diff_total_yd": 20.4, + "diff_apex_ft": 0.5, + "status": "severe", + "error_pattern": "ROLLOUT_TOO_LONG" + }, + "shot_6i_46": { + "diff_carry_yd": 3.1, + "diff_total_yd": -4.2, + "diff_apex_ft": -1.7, + "status": "moderate", + "error_pattern": "CARRY_TOO_LONG" + }, + "shot_6i_47": { + "diff_carry_yd": 6.1, + "diff_total_yd": 8.3, + "diff_apex_ft": 11.4, + "status": "moderate", + "error_pattern": "CARRY_AND_ROLLOUT_LONG" + }, + "shot_6i_48": { + "diff_carry_yd": 5.3, + "diff_total_yd": 8.8, + "diff_apex_ft": 13.8, + "status": "moderate", + "error_pattern": "CARRY_AND_ROLLOUT_LONG" + }, + "shot_6i_49": { + "diff_carry_yd": -2.5, + "diff_total_yd": 6.9, + "diff_apex_ft": -0.3, + "status": "moderate", + "error_pattern": "ROLLOUT_TOO_LONG" + }, + "shot_6i_50": { + "diff_carry_yd": -0.9, + "diff_total_yd": -12.5, + "diff_apex_ft": 3.8, + "status": "severe", + "error_pattern": "ROLLOUT_TOO_SHORT" + }, + "shot_7i_25": { + "diff_carry_yd": -0.9, + "diff_total_yd": -18.4, + "diff_apex_ft": 0.9, + "status": "severe", + "error_pattern": "ROLLOUT_TOO_SHORT" + }, + "shot_7i_26": { + "diff_carry_yd": 1.5, + "diff_total_yd": -22.1, + "diff_apex_ft": 1.1, + "status": "severe", + "error_pattern": "ROLLOUT_TOO_SHORT" + }, + "shot_7i_27": { + "diff_carry_yd": 1.2, + "diff_total_yd": 4.7, + "diff_apex_ft": 7.7, + "status": "pass", + "error_pattern": null + }, + "shot_7i_28": { + "diff_carry_yd": 0.5, + "diff_total_yd": 1.5, + "diff_apex_ft": 8.1, + "status": "pass", + "error_pattern": null + }, + "shot_7i_29": { + "diff_carry_yd": 0.1, + "diff_total_yd": -6.6, + "diff_apex_ft": -3.6, + "status": "moderate", + "error_pattern": "ROLLOUT_TOO_SHORT" + }, + "shot_7i_30": { + "diff_carry_yd": -0.7, + "diff_total_yd": 1.0, + "diff_apex_ft": 5.3, + "status": "pass", + "error_pattern": null + }, + "shot_7i_31": { + "diff_carry_yd": -5.2, + "diff_total_yd": -14.7, + "diff_apex_ft": -4.2, + "status": "severe", + "error_pattern": "CARRY_AND_ROLLOUT_SHORT" + }, + "shot_7i_32": { + "diff_carry_yd": -2.4, + "diff_total_yd": -2.8, + "diff_apex_ft": 3.0, + "status": "pass", + "error_pattern": null + }, + "shot_7i_33": { + "diff_carry_yd": -2.2, + "diff_total_yd": -1.9, + "diff_apex_ft": 4.5, + "status": "pass", + "error_pattern": null + }, + "shot_7i_34": { + "diff_carry_yd": 3.6, + "diff_total_yd": 2.0, + "diff_apex_ft": 3.0, + "status": "moderate", + "error_pattern": "CARRY_TOO_LONG" + }, + "shot_9i_1": { + "diff_carry_yd": -1.9, + "diff_total_yd": -13.0, + "diff_apex_ft": 1.2, + "status": "severe", + "error_pattern": "ROLLOUT_TOO_SHORT" + }, + "shot_9i_2": { + "diff_carry_yd": -8.2, + "diff_total_yd": -9.2, + "diff_apex_ft": -3.1, + "status": "severe", + "error_pattern": "CARRY_AND_ROLLOUT_SHORT" + }, + "shot_9i_3": { + "diff_carry_yd": -1.9, + "diff_total_yd": 1.4, + "diff_apex_ft": -5.4, + "status": "pass", + "error_pattern": null + }, + "shot_9i_4": { + "diff_carry_yd": null, + "diff_total_yd": null, + "diff_apex_ft": null, + "status": "pass", + "error_pattern": null + }, + "shot_9i_5": { + "diff_carry_yd": -3.0, + "diff_total_yd": -5.9, + "diff_apex_ft": -5.5, + "status": "moderate", + "error_pattern": "ROLLOUT_TOO_SHORT" + }, + "shot_9i_6": { + "diff_carry_yd": null, + "diff_total_yd": null, + "diff_apex_ft": null, + "status": "pass", + "error_pattern": null + }, + "shot_9i_7": { + "diff_carry_yd": 0.6, + "diff_total_yd": 1.1, + "diff_apex_ft": -4.3, + "status": "pass", + "error_pattern": null + }, + "shot_9i_8": { + "diff_carry_yd": -2.3, + "diff_total_yd": 4.7, + "diff_apex_ft": -1.8, + "status": "pass", + "error_pattern": null + }, + "shot_9i_9": { + "diff_carry_yd": -1.8, + "diff_total_yd": 2.3, + "diff_apex_ft": -6.3, + "status": "pass", + "error_pattern": null + }, + "shot_driver_51": { + "diff_carry_yd": 10.4, + "diff_total_yd": 28.4, + "diff_apex_ft": 0.0, + "status": "severe", + "error_pattern": "CARRY_AND_ROLLOUT_LONG" + }, + "shot_driver_52": { + "diff_carry_yd": 8.2, + "diff_total_yd": 23.9, + "diff_apex_ft": -2.0, + "status": "severe", + "error_pattern": "CARRY_AND_ROLLOUT_LONG" + }, + "shot_driver_53": { + "diff_carry_yd": 4.5, + "diff_total_yd": 15.7, + "diff_apex_ft": -4.5, + "status": "severe", + "error_pattern": "CARRY_AND_ROLLOUT_LONG" + }, + "shot_driver_54": { + "diff_carry_yd": 4.6, + "diff_total_yd": -0.7, + "diff_apex_ft": -2.5, + "status": "moderate", + "error_pattern": "CARRY_TOO_LONG" + }, + "shot_driver_55": { + "diff_carry_yd": 2.0, + "diff_total_yd": 21.7, + "diff_apex_ft": 0.4, + "status": "severe", + "error_pattern": "ROLLOUT_TOO_LONG" + }, + "shot_driver_56": { + "diff_carry_yd": 3.7, + "diff_total_yd": 19.6, + "diff_apex_ft": 9.4, + "status": "severe", + "error_pattern": "CARRY_AND_ROLLOUT_LONG" + }, + "shot_driver_57": { + "diff_carry_yd": -5.8, + "diff_total_yd": -20.4, + "diff_apex_ft": -3.7, + "status": "severe", + "error_pattern": "CARRY_AND_ROLLOUT_SHORT" + }, + "shot_driver_58": { + "diff_carry_yd": 17.0, + "diff_total_yd": 34.0, + "diff_apex_ft": -5.4, + "status": "severe", + "error_pattern": "CARRY_AND_ROLLOUT_LONG" + }, + "shot_driver_59": { + "diff_carry_yd": -1.6, + "diff_total_yd": 14.4, + "diff_apex_ft": -4.2, + "status": "severe", + "error_pattern": "ROLLOUT_TOO_LONG" + }, + "shot_driver_60": { + "diff_carry_yd": -0.6, + "diff_total_yd": -15.4, + "diff_apex_ft": -2.5, + "status": "severe", + "error_pattern": "ROLLOUT_TOO_SHORT" + }, + "shot_pw_61": { + "diff_carry_yd": null, + "diff_total_yd": null, + "diff_apex_ft": null, + "status": "pass", + "error_pattern": null + }, + "shot_pw_62": { + "diff_carry_yd": null, + "diff_total_yd": null, + "diff_apex_ft": null, + "status": "pass", + "error_pattern": null + }, + "shot_pw_63": { + "diff_carry_yd": null, + "diff_total_yd": null, + "diff_apex_ft": null, + "status": "pass", + "error_pattern": null + }, + "shot_pw_64": { + "diff_carry_yd": -4.7, + "diff_total_yd": 9.1, + "diff_apex_ft": -3.8, + "status": "moderate", + "error_pattern": "CARRY_TOO_SHORT" + }, + "shot_pw_65": { + "diff_carry_yd": -0.6, + "diff_total_yd": 4.2, + "diff_apex_ft": -4.0, + "status": "pass", + "error_pattern": null + }, + "shot_pw_66": { + "diff_carry_yd": -3.0, + "diff_total_yd": 10.8, + "diff_apex_ft": -3.9, + "status": "severe", + "error_pattern": "ROLLOUT_TOO_LONG" + }, + "shot_pw_67": { + "diff_carry_yd": -0.4, + "diff_total_yd": 5.2, + "diff_apex_ft": -4.1, + "status": "moderate", + "error_pattern": "ROLLOUT_TOO_LONG" + }, + "shot_pw_68": { + "diff_carry_yd": 2.9, + "diff_total_yd": 6.1, + "diff_apex_ft": -6.4, + "status": "moderate", + "error_pattern": "ROLLOUT_TOO_LONG" + }, + "shot_pw_69": { + "diff_carry_yd": -3.2, + "diff_total_yd": 11.6, + "diff_apex_ft": -3.9, + "status": "severe", + "error_pattern": "CARRY_TOO_SHORT" + } + }, + "regressions": [ + { + "shot": "shot_6i_43", + "was": "pass", + "now": "moderate", + "prev_total_diff": -0.2, + "curr_total_diff": -0.2 + }, + { + "shot": "shot_7i_34", + "was": "pass", + "now": "moderate", + "prev_total_diff": 2.0, + "curr_total_diff": 2.0 + }, + { + "shot": "shot_driver_54", + "was": "pass", + "now": "moderate", + "prev_total_diff": -0.7, + "curr_total_diff": -0.7 + } + ], + "conflicts": [ + "Bounce.FlightTangentialRetentionBase", + "Bounce.CorBaseA", + "Rollout.LowSpinMultiplierMax", + "Rollout.LowSpinThreshold", + "Rollout.FrictionBlendSpeed", + "KineticFrictionMultiplier", + "RollingFrictionMultiplier", + "Bounce.RolloutLowSpinRetention", + "Bounce.FlightSpinFactorMin", + "Bounce.FlightSpinFactorDivisor", + "Rollout.MidSpinMultiplierMax", + "Rollout.HighSpinMultiplierMax", + "Bounce.RolloutHighSpinRetention", + "Flight.ClMaxBase", + "Flight.CdMin", + "Flight.HighLaunchDragBoostMax", + "DragScaleMultiplier", + "LiftScaleMultiplier" + ] +} diff --git a/assets/data/shot_session_3/history/iteration_005.json b/assets/data/shot_session_3/history/iteration_005.json new file mode 100644 index 0000000..c10760f --- /dev/null +++ b/assets/data/shot_session_3/history/iteration_005.json @@ -0,0 +1,532 @@ +{ + "iteration": 5, + "timestamp": "2026-03-14T02:23:46.913505", + "profile_overrides": { + "DragScaleMultiplier": 1.01, + "Flight": { + "CdMin": 0.223, + "HighLaunchDragVlaStartDeg": 24.5, + "HighLaunchDragVlaFullDeg": 31.5, + "HighLaunchDragBoostMax": 1.24, + "SpinDragProgressiveCapSrStart": 0.33, + "SpinDragProgressiveCapSrEnd": 0.5, + "SpinDragProgressiveCapBoostMax": 0.25, + "HighReMidSpinGain": 16.0, + "MidSpinClBoostSrStart": 0.17, + "MidSpinClBoostSrEnd": 0.31, + "MidSpinClBoostMax": 0.5 + } + }, + "summary": { + "pass": 11, + "moderate": 15, + "severe": 35, + "no_reference": 8 + }, + "per_shot": { + "shot_3w_18": { + "diff_carry_yd": null, + "diff_total_yd": null, + "diff_apex_ft": null, + "status": "pass", + "error_pattern": null + }, + "shot_3w_19": { + "diff_carry_yd": -0.6, + "diff_total_yd": 16.0, + "diff_apex_ft": 0.1, + "status": "severe", + "error_pattern": "ROLLOUT_TOO_LONG" + }, + "shot_3w_20": { + "diff_carry_yd": null, + "diff_total_yd": null, + "diff_apex_ft": null, + "status": "pass", + "error_pattern": null + }, + "shot_3w_21": { + "diff_carry_yd": 0.6, + "diff_total_yd": 15.9, + "diff_apex_ft": 0.3, + "status": "severe", + "error_pattern": "ROLLOUT_TOO_LONG" + }, + "shot_3w_22": { + "diff_carry_yd": 2.6, + "diff_total_yd": 19.6, + "diff_apex_ft": 0.5, + "status": "severe", + "error_pattern": "ROLLOUT_TOO_LONG" + }, + "shot_3w_23": { + "diff_carry_yd": 0.1, + "diff_total_yd": -23.3, + "diff_apex_ft": -1.3, + "status": "severe", + "error_pattern": "ROLLOUT_TOO_SHORT" + }, + "shot_3w_24": { + "diff_carry_yd": 6.9, + "diff_total_yd": 28.4, + "diff_apex_ft": 1.8, + "status": "severe", + "error_pattern": "CARRY_AND_ROLLOUT_LONG" + }, + "shot_5i_10": { + "diff_carry_yd": 2.5, + "diff_total_yd": -7.6, + "diff_apex_ft": 5.8, + "status": "moderate", + "error_pattern": "ROLLOUT_TOO_SHORT" + }, + "shot_5i_11": { + "diff_carry_yd": -3.7, + "diff_total_yd": -17.6, + "diff_apex_ft": -1.3, + "status": "severe", + "error_pattern": "CARRY_AND_ROLLOUT_SHORT" + }, + "shot_5i_12": { + "diff_carry_yd": 1.1, + "diff_total_yd": -23.5, + "diff_apex_ft": 1.1, + "status": "severe", + "error_pattern": "ROLLOUT_TOO_SHORT" + }, + "shot_5i_13": { + "diff_carry_yd": 2.3, + "diff_total_yd": 10.1, + "diff_apex_ft": 0.6, + "status": "severe", + "error_pattern": "ROLLOUT_TOO_LONG" + }, + "shot_5i_14": { + "diff_carry_yd": null, + "diff_total_yd": null, + "diff_apex_ft": null, + "status": "pass", + "error_pattern": null + }, + "shot_5i_15": { + "diff_carry_yd": -4.6, + "diff_total_yd": 14.5, + "diff_apex_ft": -1.1, + "status": "severe", + "error_pattern": "CARRY_TOO_SHORT" + }, + "shot_5i_16": { + "diff_carry_yd": 0.9, + "diff_total_yd": -21.0, + "diff_apex_ft": -0.2, + "status": "severe", + "error_pattern": "ROLLOUT_TOO_SHORT" + }, + "shot_5i_17": { + "diff_carry_yd": -2.2, + "diff_total_yd": -1.7, + "diff_apex_ft": -0.3, + "status": "pass", + "error_pattern": null + }, + "shot_6i_35": { + "diff_carry_yd": -5.5, + "diff_total_yd": -17.0, + "diff_apex_ft": -3.4, + "status": "severe", + "error_pattern": "CARRY_AND_ROLLOUT_SHORT" + }, + "shot_6i_36": { + "diff_carry_yd": 1.7, + "diff_total_yd": -21.1, + "diff_apex_ft": 0.6, + "status": "severe", + "error_pattern": "ROLLOUT_TOO_SHORT" + }, + "shot_6i_37": { + "diff_carry_yd": -3.7, + "diff_total_yd": 11.9, + "diff_apex_ft": -0.9, + "status": "severe", + "error_pattern": "CARRY_TOO_SHORT" + }, + "shot_6i_38": { + "diff_carry_yd": -3.6, + "diff_total_yd": -21.7, + "diff_apex_ft": 0.1, + "status": "severe", + "error_pattern": "CARRY_AND_ROLLOUT_SHORT" + }, + "shot_6i_39": { + "diff_carry_yd": -0.5, + "diff_total_yd": 6.4, + "diff_apex_ft": 0.0, + "status": "moderate", + "error_pattern": "ROLLOUT_TOO_LONG" + }, + "shot_6i_40": { + "diff_carry_yd": -1.3, + "diff_total_yd": 7.7, + "diff_apex_ft": 0.1, + "status": "moderate", + "error_pattern": "ROLLOUT_TOO_LONG" + }, + "shot_6i_41": { + "diff_carry_yd": -4.7, + "diff_total_yd": 12.9, + "diff_apex_ft": -1.0, + "status": "severe", + "error_pattern": "CARRY_TOO_SHORT" + }, + "shot_6i_42": { + "diff_carry_yd": -1.4, + "diff_total_yd": -17.8, + "diff_apex_ft": 0.7, + "status": "severe", + "error_pattern": "ROLLOUT_TOO_SHORT" + }, + "shot_6i_43": { + "diff_carry_yd": 5.6, + "diff_total_yd": -0.2, + "diff_apex_ft": 7.8, + "status": "moderate", + "error_pattern": "CARRY_TOO_LONG" + }, + "shot_6i_44": { + "diff_carry_yd": -1.8, + "diff_total_yd": -28.0, + "diff_apex_ft": -1.4, + "status": "severe", + "error_pattern": "ROLLOUT_TOO_SHORT" + }, + "shot_6i_45": { + "diff_carry_yd": 3.0, + "diff_total_yd": 20.4, + "diff_apex_ft": 0.5, + "status": "severe", + "error_pattern": "ROLLOUT_TOO_LONG" + }, + "shot_6i_46": { + "diff_carry_yd": 3.1, + "diff_total_yd": -4.2, + "diff_apex_ft": -1.7, + "status": "moderate", + "error_pattern": "CARRY_TOO_LONG" + }, + "shot_6i_47": { + "diff_carry_yd": 6.1, + "diff_total_yd": 8.3, + "diff_apex_ft": 11.4, + "status": "moderate", + "error_pattern": "CARRY_AND_ROLLOUT_LONG" + }, + "shot_6i_48": { + "diff_carry_yd": 5.3, + "diff_total_yd": 8.8, + "diff_apex_ft": 13.8, + "status": "moderate", + "error_pattern": "CARRY_AND_ROLLOUT_LONG" + }, + "shot_6i_49": { + "diff_carry_yd": -2.5, + "diff_total_yd": 6.9, + "diff_apex_ft": -0.3, + "status": "moderate", + "error_pattern": "ROLLOUT_TOO_LONG" + }, + "shot_6i_50": { + "diff_carry_yd": -0.9, + "diff_total_yd": -12.5, + "diff_apex_ft": 3.8, + "status": "severe", + "error_pattern": "ROLLOUT_TOO_SHORT" + }, + "shot_7i_25": { + "diff_carry_yd": -0.9, + "diff_total_yd": -18.4, + "diff_apex_ft": 0.9, + "status": "severe", + "error_pattern": "ROLLOUT_TOO_SHORT" + }, + "shot_7i_26": { + "diff_carry_yd": 1.5, + "diff_total_yd": -22.1, + "diff_apex_ft": 1.1, + "status": "severe", + "error_pattern": "ROLLOUT_TOO_SHORT" + }, + "shot_7i_27": { + "diff_carry_yd": 1.2, + "diff_total_yd": 4.7, + "diff_apex_ft": 7.7, + "status": "pass", + "error_pattern": null + }, + "shot_7i_28": { + "diff_carry_yd": 0.5, + "diff_total_yd": 1.5, + "diff_apex_ft": 8.1, + "status": "pass", + "error_pattern": null + }, + "shot_7i_29": { + "diff_carry_yd": 0.1, + "diff_total_yd": -6.6, + "diff_apex_ft": -3.6, + "status": "moderate", + "error_pattern": "ROLLOUT_TOO_SHORT" + }, + "shot_7i_30": { + "diff_carry_yd": -0.7, + "diff_total_yd": 1.0, + "diff_apex_ft": 5.3, + "status": "pass", + "error_pattern": null + }, + "shot_7i_31": { + "diff_carry_yd": -5.2, + "diff_total_yd": -14.7, + "diff_apex_ft": -4.2, + "status": "severe", + "error_pattern": "CARRY_AND_ROLLOUT_SHORT" + }, + "shot_7i_32": { + "diff_carry_yd": -2.4, + "diff_total_yd": -2.8, + "diff_apex_ft": 3.0, + "status": "pass", + "error_pattern": null + }, + "shot_7i_33": { + "diff_carry_yd": -2.2, + "diff_total_yd": -1.9, + "diff_apex_ft": 4.5, + "status": "pass", + "error_pattern": null + }, + "shot_7i_34": { + "diff_carry_yd": 3.6, + "diff_total_yd": 2.0, + "diff_apex_ft": 3.0, + "status": "moderate", + "error_pattern": "CARRY_TOO_LONG" + }, + "shot_9i_1": { + "diff_carry_yd": -1.9, + "diff_total_yd": -13.0, + "diff_apex_ft": 1.2, + "status": "severe", + "error_pattern": "ROLLOUT_TOO_SHORT" + }, + "shot_9i_2": { + "diff_carry_yd": -8.2, + "diff_total_yd": -9.2, + "diff_apex_ft": -3.1, + "status": "severe", + "error_pattern": "CARRY_AND_ROLLOUT_SHORT" + }, + "shot_9i_3": { + "diff_carry_yd": -1.9, + "diff_total_yd": 1.4, + "diff_apex_ft": -5.4, + "status": "pass", + "error_pattern": null + }, + "shot_9i_4": { + "diff_carry_yd": null, + "diff_total_yd": null, + "diff_apex_ft": null, + "status": "pass", + "error_pattern": null + }, + "shot_9i_5": { + "diff_carry_yd": -3.0, + "diff_total_yd": -5.9, + "diff_apex_ft": -5.5, + "status": "moderate", + "error_pattern": "ROLLOUT_TOO_SHORT" + }, + "shot_9i_6": { + "diff_carry_yd": null, + "diff_total_yd": null, + "diff_apex_ft": null, + "status": "pass", + "error_pattern": null + }, + "shot_9i_7": { + "diff_carry_yd": 0.6, + "diff_total_yd": 1.1, + "diff_apex_ft": -4.3, + "status": "pass", + "error_pattern": null + }, + "shot_9i_8": { + "diff_carry_yd": -2.3, + "diff_total_yd": 4.7, + "diff_apex_ft": -1.8, + "status": "pass", + "error_pattern": null + }, + "shot_9i_9": { + "diff_carry_yd": -1.8, + "diff_total_yd": 2.3, + "diff_apex_ft": -6.3, + "status": "pass", + "error_pattern": null + }, + "shot_driver_51": { + "diff_carry_yd": 10.4, + "diff_total_yd": 28.4, + "diff_apex_ft": 0.0, + "status": "severe", + "error_pattern": "CARRY_AND_ROLLOUT_LONG" + }, + "shot_driver_52": { + "diff_carry_yd": 8.2, + "diff_total_yd": 23.9, + "diff_apex_ft": -2.0, + "status": "severe", + "error_pattern": "CARRY_AND_ROLLOUT_LONG" + }, + "shot_driver_53": { + "diff_carry_yd": 4.5, + "diff_total_yd": 15.7, + "diff_apex_ft": -4.5, + "status": "severe", + "error_pattern": "CARRY_AND_ROLLOUT_LONG" + }, + "shot_driver_54": { + "diff_carry_yd": 4.6, + "diff_total_yd": -0.7, + "diff_apex_ft": -2.5, + "status": "moderate", + "error_pattern": "CARRY_TOO_LONG" + }, + "shot_driver_55": { + "diff_carry_yd": 2.0, + "diff_total_yd": 21.7, + "diff_apex_ft": 0.4, + "status": "severe", + "error_pattern": "ROLLOUT_TOO_LONG" + }, + "shot_driver_56": { + "diff_carry_yd": 3.7, + "diff_total_yd": 19.6, + "diff_apex_ft": 9.4, + "status": "severe", + "error_pattern": "CARRY_AND_ROLLOUT_LONG" + }, + "shot_driver_57": { + "diff_carry_yd": -5.8, + "diff_total_yd": -20.4, + "diff_apex_ft": -3.7, + "status": "severe", + "error_pattern": "CARRY_AND_ROLLOUT_SHORT" + }, + "shot_driver_58": { + "diff_carry_yd": 17.0, + "diff_total_yd": 34.0, + "diff_apex_ft": -5.4, + "status": "severe", + "error_pattern": "CARRY_AND_ROLLOUT_LONG" + }, + "shot_driver_59": { + "diff_carry_yd": -1.6, + "diff_total_yd": 14.4, + "diff_apex_ft": -4.2, + "status": "severe", + "error_pattern": "ROLLOUT_TOO_LONG" + }, + "shot_driver_60": { + "diff_carry_yd": -0.6, + "diff_total_yd": -15.4, + "diff_apex_ft": -2.5, + "status": "severe", + "error_pattern": "ROLLOUT_TOO_SHORT" + }, + "shot_pw_61": { + "diff_carry_yd": null, + "diff_total_yd": null, + "diff_apex_ft": null, + "status": "pass", + "error_pattern": null + }, + "shot_pw_62": { + "diff_carry_yd": null, + "diff_total_yd": null, + "diff_apex_ft": null, + "status": "pass", + "error_pattern": null + }, + "shot_pw_63": { + "diff_carry_yd": null, + "diff_total_yd": null, + "diff_apex_ft": null, + "status": "pass", + "error_pattern": null + }, + "shot_pw_64": { + "diff_carry_yd": -4.7, + "diff_total_yd": 9.1, + "diff_apex_ft": -3.8, + "status": "moderate", + "error_pattern": "CARRY_TOO_SHORT" + }, + "shot_pw_65": { + "diff_carry_yd": -0.6, + "diff_total_yd": 4.2, + "diff_apex_ft": -4.0, + "status": "pass", + "error_pattern": null + }, + "shot_pw_66": { + "diff_carry_yd": -3.0, + "diff_total_yd": 10.8, + "diff_apex_ft": -3.9, + "status": "severe", + "error_pattern": "ROLLOUT_TOO_LONG" + }, + "shot_pw_67": { + "diff_carry_yd": -0.4, + "diff_total_yd": 5.2, + "diff_apex_ft": -4.1, + "status": "moderate", + "error_pattern": "ROLLOUT_TOO_LONG" + }, + "shot_pw_68": { + "diff_carry_yd": 2.9, + "diff_total_yd": 6.1, + "diff_apex_ft": -6.4, + "status": "moderate", + "error_pattern": "ROLLOUT_TOO_LONG" + }, + "shot_pw_69": { + "diff_carry_yd": -3.2, + "diff_total_yd": 11.6, + "diff_apex_ft": -3.9, + "status": "severe", + "error_pattern": "CARRY_TOO_SHORT" + } + }, + "regressions": [], + "conflicts": [ + "Bounce.FlightTangentialRetentionBase", + "Bounce.CorBaseA", + "Rollout.LowSpinMultiplierMax", + "Rollout.LowSpinThreshold", + "Rollout.FrictionBlendSpeed", + "KineticFrictionMultiplier", + "RollingFrictionMultiplier", + "Bounce.RolloutLowSpinRetention", + "Bounce.FlightSpinFactorMin", + "Bounce.FlightSpinFactorDivisor", + "Rollout.MidSpinMultiplierMax", + "Rollout.HighSpinMultiplierMax", + "Bounce.RolloutHighSpinRetention", + "Flight.ClMaxBase", + "Flight.CdMin", + "Flight.HighLaunchDragBoostMax", + "DragScaleMultiplier", + "LiftScaleMultiplier" + ] +} diff --git a/assets/data/shot_session_3/physics.csv b/assets/data/shot_session_3/physics.csv index 1417ed5..0316b51 100644 --- a/assets/data/shot_session_3/physics.csv +++ b/assets/data/shot_session_3/physics.csv @@ -1,70 +1,70 @@ shot_name,filename,speed_mph,vla_deg,hla_deg,total_spin_rpm,spin_axis_deg,backspin_rpm,sidespin_rpm,carry_yd,total_yd,rollout_yd,apex_ft,hang_time_s,landing_speed_mps,landing_angle_deg,initial_re,initial_spin_ratio,initial_cd,initial_cl,peak_cl,carry_only_yd -shot_3w_18,shot_3w_18.json,47.91,45.81,33.98,7491.0,30.00,6487.4,3745.5,36.3,41.1,4.8,34.4,2.94,15.99,54.95,58633.5,0.781418,0.593910,0.273498,0.273498,36.4 -shot_3w_19,shot_3w_19.json,121.33,5.59,-4.84,1661.5,-11.89,1625.9,-342.2,120.0,181.8,61.8,12.3,2.52,36.61,10.00,148481.0,0.068442,0.199224,0.151288,0.151476,120.5 -shot_3w_20,shot_3w_20.json,116.03,4.40,2.29,2026.0,9.97,1995.4,350.7,102.5,162.3,59.7,8.2,2.18,36.89,7.76,141993.6,0.087270,0.198004,0.168655,0.168669,103.0 -shot_3w_21,shot_3w_21.json,119.40,5.31,-3.43,1759.7,-10.46,1730.5,-319.5,115.2,176.4,61.2,11.2,2.43,36.54,9.44,146120.2,0.073659,0.198484,0.156580,0.156688,115.7 -shot_3w_22,shot_3w_22.json,108.89,5.62,-7.25,2500.8,-1.78,2499.6,-77.5,105.8,160.9,55.1,11.0,2.43,33.66,10.12,133261.1,0.114780,0.198752,0.187398,0.187398,106.3 -shot_3w_23,shot_3w_23.json,115.83,8.90,-0.78,2804.3,2.19,2802.2,107.3,147.8,147.6,-0.2,26.7,3.55,30.75,18.21,141755.6,0.120995,0.203281,0.178166,0.178525,148.5 -shot_3w_24,shot_3w_24.json,123.42,6.29,-5.42,2751.6,-13.27,2678.1,-631.8,152.8,205.1,52.3,21.6,3.43,32.63,15.02,151037.8,0.111429,0.206773,0.185432,0.185981,153.8 -shot_5i_10,shot_5i_10.json,87.96,14.22,1.21,4064.7,8.41,4021.0,594.4,105.6,109.1,3.5,34.2,3.58,22.94,34.20,107642.0,0.230959,0.238346,0.312469,0.319245,106.1 -shot_5i_11,shot_5i_11.json,90.59,14.45,-0.21,3360.4,7.80,3329.3,456.2,105.1,106.5,1.4,28.5,3.25,25.06,26.44,110866.8,0.185386,0.221876,0.213438,0.219440,105.6 -shot_5i_12,shot_5i_12.json,74.19,10.23,-1.67,3321.4,15.75,3196.7,901.5,59.5,58.4,-1.1,10.5,2.01,23.63,17.60,90789.2,0.223756,0.279231,0.301989,0.305937,59.6 -shot_5i_13,shot_5i_13.json,75.04,8.01,2.53,3921.4,3.42,3914.4,234.0,56.2,89.0,32.7,7.4,1.83,24.53,12.25,91830.0,0.261184,0.275684,0.303437,0.305052,56.5 +shot_3w_18,shot_3w_18.json,47.91,45.81,33.98,7491.0,30.00,6487.4,3745.5,36.3,41.1,4.8,34.4,2.94,15.99,54.95,58633.5,0.781418,0.593910,0.273498,0.273498,36.3 +shot_3w_19,shot_3w_19.json,121.33,5.59,-4.84,1661.5,-11.89,1625.9,-342.2,120.0,181.8,61.8,12.3,2.52,36.61,10.00,148481.0,0.068442,0.199224,0.151288,0.151476,120.0 +shot_3w_20,shot_3w_20.json,116.03,4.40,2.29,2026.0,9.97,1995.4,350.7,102.5,162.3,59.7,8.2,2.18,36.89,7.76,141993.6,0.087270,0.198004,0.168655,0.168669,102.5 +shot_3w_21,shot_3w_21.json,119.40,5.31,-3.43,1759.7,-10.46,1730.5,-319.5,115.2,176.4,61.2,11.2,2.43,36.54,9.44,146120.2,0.073659,0.198484,0.156580,0.156688,115.2 +shot_3w_22,shot_3w_22.json,108.89,5.62,-7.25,2500.8,-1.78,2499.6,-77.5,105.8,160.9,55.1,11.0,2.43,33.66,10.12,133261.1,0.114780,0.198752,0.187398,0.187398,105.8 +shot_3w_23,shot_3w_23.json,115.83,8.90,-0.78,2804.3,2.19,2802.2,107.3,147.8,147.6,-0.2,26.7,3.55,30.75,18.21,141755.6,0.120995,0.203281,0.178166,0.178525,147.8 +shot_3w_24,shot_3w_24.json,123.42,6.29,-5.42,2751.6,-13.27,2678.1,-631.8,152.8,205.1,52.3,21.6,3.43,32.63,15.02,151037.8,0.111429,0.206773,0.185432,0.185981,152.8 +shot_5i_10,shot_5i_10.json,87.96,14.22,1.21,4064.7,8.41,4021.0,594.4,105.6,109.1,3.5,34.2,3.58,22.94,34.20,107642.0,0.230959,0.238346,0.312469,0.319245,105.6 +shot_5i_11,shot_5i_11.json,90.59,14.45,-0.21,3360.4,7.80,3329.3,456.2,105.1,106.5,1.4,28.5,3.25,25.06,26.44,110866.8,0.185386,0.221876,0.213438,0.219440,105.1 +shot_5i_12,shot_5i_12.json,74.19,10.23,-1.67,3321.4,15.75,3196.7,901.5,59.5,58.4,-1.1,10.5,2.01,23.63,17.60,90789.2,0.223756,0.279231,0.301989,0.305937,59.5 +shot_5i_13,shot_5i_13.json,75.04,8.01,2.53,3921.4,3.42,3914.4,234.0,56.2,89.0,32.7,7.4,1.83,24.53,12.25,91830.0,0.261184,0.275684,0.303437,0.305052,56.2 shot_5i_14,shot_5i_14.json,87.69,4.53,-7.68,3390.3,1.80,3388.6,106.5,54.4,97.9,43.6,4.0,1.43,31.11,6.68,107310.8,0.193234,0.228763,0.243331,0.243331,54.4 -shot_5i_15,shot_5i_15.json,86.90,9.35,-4.02,2508.9,-4.94,2499.6,-216.2,74.0,121.1,47.1,11.0,2.08,28.46,13.15,106345.9,0.144296,0.216973,0.187102,0.187102,74.1 -shot_5i_16,shot_5i_16.json,97.99,9.13,-2.08,3775.9,1.68,3774.3,110.7,110.0,109.0,-1.0,19.5,3.01,27.49,17.69,119926.2,0.192576,0.217163,0.229128,0.230270,110.2 -shot_5i_17,shot_5i_17.json,56.46,9.97,24.15,5178.3,29.12,4523.9,2519.7,28.4,45.2,16.9,4.2,1.18,20.20,12.12,69096.2,0.458380,0.407024,0.309595,0.311125,28.6 -shot_6i_35,shot_6i_35.json,80.55,15.35,-1.30,4667.1,-0.03,4667.1,-2.8,84.5,84.5,0.0,23.0,2.91,22.65,25.56,98572.3,0.289590,0.256148,0.244343,0.268788,84.9 -shot_6i_36,shot_6i_36.json,78.86,10.40,16.08,4166.0,25.12,3771.9,1768.7,69.5,68.0,-1.6,12.4,2.26,24.15,16.78,96505.8,0.264030,0.261524,0.298537,0.298537,69.9 -shot_6i_37,shot_6i_37.json,82.57,10.16,11.01,3041.1,25.35,2748.4,1301.8,67.8,109.1,41.3,10.9,2.03,26.86,14.36,101052.9,0.184068,0.236918,0.211057,0.211467,67.9 -shot_6i_38,shot_6i_38.json,79.12,13.35,3.04,3186.9,11.59,3121.9,640.2,75.6,75.8,0.2,18.1,2.53,23.76,23.52,96827.7,0.201308,0.252420,0.250057,0.259093,76.0 +shot_5i_15,shot_5i_15.json,86.90,9.35,-4.02,2508.9,-4.94,2499.6,-216.2,74.0,121.1,47.1,11.0,2.08,28.46,13.15,106345.9,0.144296,0.216973,0.187102,0.187102,74.0 +shot_5i_16,shot_5i_16.json,97.99,9.13,-2.08,3775.9,1.68,3774.3,110.7,110.0,109.0,-1.0,19.5,3.01,27.49,17.69,119926.2,0.192576,0.217163,0.229128,0.230270,110.0 +shot_5i_17,shot_5i_17.json,56.46,9.97,24.15,5178.3,29.12,4523.9,2519.7,28.4,45.2,16.9,4.2,1.18,20.20,12.12,69096.2,0.458380,0.407024,0.309595,0.311125,28.4 +shot_6i_35,shot_6i_35.json,80.55,15.35,-1.30,4667.1,-0.03,4667.1,-2.8,84.5,84.5,0.0,23.0,2.91,22.65,25.56,98572.3,0.289590,0.256148,0.244343,0.268788,84.5 +shot_6i_36,shot_6i_36.json,78.86,10.40,16.08,4166.0,25.12,3771.9,1768.7,69.5,68.0,-1.6,12.4,2.26,24.15,16.78,96505.8,0.264030,0.261524,0.298537,0.298537,69.5 +shot_6i_37,shot_6i_37.json,82.57,10.16,11.01,3041.1,25.35,2748.4,1301.8,67.8,109.1,41.3,10.9,2.03,26.86,14.36,101052.9,0.184068,0.236918,0.211057,0.211467,67.8 +shot_6i_38,shot_6i_38.json,79.12,13.35,3.04,3186.9,11.59,3121.9,640.2,75.6,75.8,0.2,18.1,2.53,23.76,23.52,96827.7,0.201308,0.252420,0.250057,0.259093,75.6 shot_6i_39,shot_6i_39.json,60.98,6.14,10.35,3284.8,22.03,3044.9,1232.2,23.5,53.7,30.2,2.1,0.86,23.35,7.67,74625.7,0.269219,0.355069,0.288673,0.291280,23.5 -shot_6i_40,shot_6i_40.json,62.11,6.80,27.01,2768.0,30.00,2397.2,1384.0,24.9,58.8,33.9,2.6,0.90,23.63,8.89,76009.9,0.222738,0.346476,0.300173,0.300601,25.0 -shot_6i_41,shot_6i_41.json,82.53,9.88,-2.28,2620.2,13.56,2547.1,614.5,66.6,110.8,44.2,10.3,1.97,27.33,13.45,100996.8,0.158675,0.229767,0.192268,0.192274,66.7 -shot_6i_42,shot_6i_42.json,77.19,13.14,-3.42,4057.2,4.14,4046.6,293.2,75.2,75.1,-0.0,18.2,2.62,22.52,24.02,94471.3,0.262673,0.267336,0.300938,0.300938,75.5 -shot_6i_43,shot_6i_43.json,94.06,13.88,-4.68,4616.2,1.70,4614.2,137.0,122.9,128.4,5.6,42.8,4.09,23.12,37.60,115112.4,0.245275,0.229891,0.319007,0.319007,123.7 -shot_6i_44,shot_6i_44.json,114.96,9.46,-6.67,2314.5,15.10,2234.6,602.8,140.5,140.2,-0.3,25.2,3.33,31.66,17.41,140686.5,0.100621,0.199291,0.165322,0.165596,141.1 -shot_6i_45,shot_6i_45.json,109.32,6.42,-9.00,2509.9,-10.87,2464.9,-473.5,112.6,165.8,53.2,13.4,2.63,32.94,11.72,133784.2,0.114749,0.198894,0.187380,0.187385,113.1 -shot_6i_46,shot_6i_46.json,116.33,13.65,0.34,3007.9,10.67,2955.8,557.1,170.4,175.1,4.7,49.9,4.52,28.12,28.70,142368.0,0.129223,0.205178,0.180634,0.181813,171.1 -shot_6i_47,shot_6i_47.json,99.48,14.78,-2.86,4810.7,4.69,4794.6,393.7,137.3,146.0,8.7,56.4,4.62,23.48,43.48,121740.5,0.241695,0.226258,0.319265,0.319321,138.2 -shot_6i_48,shot_6i_48.json,101.73,15.23,-3.03,4631.0,4.26,4618.2,344.4,142.4,152.3,9.9,62.7,4.81,23.80,45.91,124502.8,0.227503,0.225652,0.307983,0.319321,143.2 +shot_6i_40,shot_6i_40.json,62.11,6.80,27.01,2768.0,30.00,2397.2,1384.0,24.9,58.8,33.9,2.6,0.90,23.63,8.89,76009.9,0.222738,0.346476,0.300173,0.300601,24.9 +shot_6i_41,shot_6i_41.json,82.53,9.88,-2.28,2620.2,13.56,2547.1,614.5,66.6,110.8,44.2,10.3,1.97,27.33,13.45,100996.8,0.158675,0.229767,0.192268,0.192274,66.6 +shot_6i_42,shot_6i_42.json,77.19,13.14,-3.42,4057.2,4.14,4046.6,293.2,75.2,75.1,-0.0,18.2,2.62,22.52,24.02,94471.3,0.262673,0.267336,0.300938,0.300938,75.2 +shot_6i_43,shot_6i_43.json,94.06,13.88,-4.68,4616.2,1.70,4614.2,137.0,122.9,128.4,5.6,42.8,4.09,23.12,37.60,115112.4,0.245275,0.229891,0.319007,0.319007,122.9 +shot_6i_44,shot_6i_44.json,114.96,9.46,-6.67,2314.5,15.10,2234.6,602.8,140.5,140.2,-0.3,25.2,3.33,31.66,17.41,140686.5,0.100621,0.199291,0.165322,0.165596,140.5 +shot_6i_45,shot_6i_45.json,109.32,6.42,-9.00,2509.9,-10.87,2464.9,-473.5,112.6,165.8,53.2,13.4,2.63,32.94,11.72,133784.2,0.114749,0.198894,0.187380,0.187385,112.6 +shot_6i_46,shot_6i_46.json,116.33,13.65,0.34,3007.9,10.67,2955.8,557.1,170.4,175.1,4.7,49.9,4.52,28.12,28.70,142368.0,0.129223,0.205178,0.180634,0.181813,170.4 +shot_6i_47,shot_6i_47.json,99.48,14.78,-2.86,4810.7,4.69,4794.6,393.7,137.3,146.0,8.7,56.4,4.62,23.48,43.48,121740.5,0.241695,0.226258,0.319265,0.319321,137.3 +shot_6i_48,shot_6i_48.json,101.73,15.23,-3.03,4631.0,4.26,4618.2,344.4,142.4,152.3,9.9,62.7,4.81,23.80,45.91,124502.8,0.227503,0.225652,0.307983,0.319321,142.4 shot_6i_49,shot_6i_49.json,71.25,7.70,16.05,2624.7,30.00,2273.0,1312.3,37.4,77.2,39.8,4.2,1.20,26.17,9.51,87197.7,0.184102,0.276921,0.211348,0.211348,37.4 -shot_6i_50,shot_6i_50.json,82.80,14.85,-1.42,3783.4,2.81,3778.8,185.4,92.3,94.9,2.6,29.4,3.23,22.56,32.31,101335.6,0.228355,0.249757,0.309186,0.318391,92.8 -shot_7i_25,shot_7i_25.json,83.34,13.18,2.98,3409.5,17.79,3246.5,1041.7,86.0,86.4,0.4,21.0,2.79,24.10,24.39,101997.9,0.204455,0.241569,0.258137,0.267072,86.4 -shot_7i_26,shot_7i_26.json,73.37,10.85,15.40,3560.9,30.00,3083.8,1780.4,58.1,57.2,-1.0,10.7,1.99,23.40,17.63,89787.0,0.242568,0.282787,0.319319,0.319321,58.4 -shot_7i_27,shot_7i_27.json,93.74,17.06,-1.45,4611.6,2.63,4606.7,211.8,123.5,133.0,9.6,53.7,4.35,22.99,43.52,114719.5,0.245870,0.230213,0.318841,0.318841,124.1 -shot_7i_28,shot_7i_28.json,92.09,16.41,-3.60,4216.7,-0.44,4216.6,-32.4,118.4,127.1,8.7,48.7,4.13,23.00,41.49,112696.8,0.228852,0.232077,0.309859,0.319321,119.1 -shot_7i_29,shot_7i_29.json,107.59,13.82,-6.05,3633.3,4.72,3621.0,298.7,148.5,151.7,3.1,42.7,4.16,26.73,28.34,131669.7,0.168773,0.209903,0.195575,0.196851,149.4 -shot_7i_30,shot_7i_30.json,90.17,17.56,-3.83,4508.5,-0.21,4508.5,-16.5,114.7,122.7,7.9,48.4,4.10,22.66,41.77,110355.9,0.249879,0.234684,0.316829,0.316829,115.2 -shot_7i_31,shot_7i_31.json,76.36,17.52,-0.54,5122.2,1.84,5119.5,164.7,79.8,79.8,-0.0,24.2,2.93,21.60,27.18,93445.7,0.335263,0.267306,0.225889,0.268001,80.2 -shot_7i_32,shot_7i_32.json,93.10,16.96,-1.03,3762.5,4.20,3752.4,275.6,118.8,127.0,8.2,45.5,3.98,23.84,38.65,113935.9,0.201982,0.223811,0.251784,0.280365,119.4 -shot_7i_33,shot_7i_33.json,92.36,16.96,-0.58,3851.7,2.81,3847.1,188.9,117.5,126.1,8.6,46.5,4.01,23.49,39.73,113026.5,0.208434,0.226685,0.268276,0.298515,118.1 -shot_7i_34,shot_7i_34.json,104.19,14.67,-4.63,4081.2,1.90,4079.0,135.0,146.1,152.6,6.5,51.2,4.48,24.97,37.41,127515.3,0.195758,0.216738,0.236115,0.257062,146.9 -shot_9i_1,shot_9i_1.json,88.98,15.10,-0.50,3563.2,11.26,3494.6,695.8,104.8,107.8,3.0,32.0,3.41,24.02,31.16,108898.1,0.200130,0.228718,0.247047,0.262540,105.3 -shot_9i_2,shot_9i_2.json,71.29,23.93,5.51,4085.5,8.31,4042.7,590.2,73.9,78.2,4.3,33.7,3.18,20.09,39.41,87241.3,0.286429,0.292458,0.250705,0.268700,74.1 -shot_9i_3,shot_9i_3.json,90.11,21.67,2.80,5243.0,11.20,5143.3,1018.1,115.4,122.1,6.8,52.3,4.22,22.52,42.19,110277.5,0.290796,0.234780,0.242056,0.268000,115.9 -shot_9i_4,shot_9i_4.json,95.73,4.75,-6.78,2312.1,6.03,2299.3,242.8,63.4,117.7,54.3,4.8,1.53,33.99,6.66,117157.2,0.120704,0.201440,0.190698,0.190698,63.8 -shot_9i_5,shot_9i_5.json,84.02,19.37,3.82,5352.1,11.48,5245.0,1065.2,99.7,101.3,1.6,36.3,3.58,22.11,33.50,102827.9,0.318347,0.246612,0.224019,0.268000,100.1 +shot_6i_50,shot_6i_50.json,82.80,14.85,-1.42,3783.4,2.81,3778.8,185.4,92.3,94.9,2.6,29.4,3.23,22.56,32.31,101335.6,0.228355,0.249757,0.309186,0.318391,92.3 +shot_7i_25,shot_7i_25.json,83.34,13.18,2.98,3409.5,17.79,3246.5,1041.7,86.0,86.4,0.4,21.0,2.79,24.10,24.39,101997.9,0.204455,0.241569,0.258137,0.267072,86.0 +shot_7i_26,shot_7i_26.json,73.37,10.85,15.40,3560.9,30.00,3083.8,1780.4,58.1,57.2,-1.0,10.7,1.99,23.40,17.63,89787.0,0.242568,0.282787,0.319319,0.319321,58.1 +shot_7i_27,shot_7i_27.json,93.74,17.06,-1.45,4611.6,2.63,4606.7,211.8,123.5,133.0,9.6,53.7,4.35,22.99,43.52,114719.5,0.245870,0.230213,0.318841,0.318841,123.5 +shot_7i_28,shot_7i_28.json,92.09,16.41,-3.60,4216.7,-0.44,4216.6,-32.4,118.4,127.1,8.7,48.7,4.13,23.00,41.49,112696.8,0.228852,0.232077,0.309859,0.319321,118.4 +shot_7i_29,shot_7i_29.json,107.59,13.82,-6.05,3633.3,4.72,3621.0,298.7,148.5,151.7,3.1,42.7,4.16,26.73,28.34,131669.7,0.168773,0.209903,0.195575,0.196851,148.5 +shot_7i_30,shot_7i_30.json,90.17,17.56,-3.83,4508.5,-0.21,4508.5,-16.5,114.7,122.7,7.9,48.4,4.10,22.66,41.77,110355.9,0.249879,0.234684,0.316829,0.316829,114.7 +shot_7i_31,shot_7i_31.json,76.36,17.52,-0.54,5122.2,1.84,5119.5,164.7,79.8,79.8,-0.0,24.2,2.93,21.60,27.18,93445.7,0.335263,0.267306,0.225889,0.268001,79.8 +shot_7i_32,shot_7i_32.json,93.10,16.96,-1.03,3762.5,4.20,3752.4,275.6,118.8,127.0,8.2,45.5,3.98,23.84,38.65,113935.9,0.201982,0.223811,0.251784,0.280365,118.8 +shot_7i_33,shot_7i_33.json,92.36,16.96,-0.58,3851.7,2.81,3847.1,188.9,117.5,126.1,8.6,46.5,4.01,23.49,39.73,113026.5,0.208434,0.226685,0.268276,0.298515,117.5 +shot_7i_34,shot_7i_34.json,104.19,14.67,-4.63,4081.2,1.90,4079.0,135.0,146.1,152.6,6.5,51.2,4.48,24.97,37.41,127515.3,0.195758,0.216738,0.236115,0.257062,146.1 +shot_9i_1,shot_9i_1.json,88.98,15.10,-0.50,3563.2,11.26,3494.6,695.8,104.8,107.8,3.0,32.0,3.41,24.02,31.16,108898.1,0.200130,0.228718,0.247047,0.262540,104.8 +shot_9i_2,shot_9i_2.json,71.29,23.93,5.51,4085.5,8.31,4042.7,590.2,73.9,78.2,4.3,33.7,3.18,20.09,39.41,87241.3,0.286429,0.292458,0.250705,0.268700,73.9 +shot_9i_3,shot_9i_3.json,90.11,21.67,2.80,5243.0,11.20,5143.3,1018.1,115.4,122.1,6.8,52.3,4.22,22.52,42.19,110277.5,0.290796,0.234780,0.242056,0.268000,115.4 +shot_9i_4,shot_9i_4.json,95.73,4.75,-6.78,2312.1,6.03,2299.3,242.8,63.4,117.7,54.3,4.8,1.53,33.99,6.66,117157.2,0.120704,0.201440,0.190698,0.190698,63.4 +shot_9i_5,shot_9i_5.json,84.02,19.37,3.82,5352.1,11.48,5245.0,1065.2,99.7,101.3,1.6,36.3,3.58,22.11,33.50,102827.9,0.318347,0.246612,0.224019,0.268000,99.7 shot_9i_6,shot_9i_6.json,94.70,0.00,3.68,2200.5,28.95,1925.4,1065.3,4.2,70.0,65.8,0.1,0.09,41.73,0.55,115895.5,0.116130,0.201379,0.188169,0.188169,4.2 -shot_9i_7,shot_9i_7.json,83.03,22.51,5.26,7008.5,9.70,6908.3,1181.2,101.7,103.7,2.0,47.2,4.08,20.86,40.21,101607.9,0.421882,0.274806,0.254654,0.311339,102.2 -shot_9i_8,shot_9i_8.json,92.21,21.95,-6.31,5042.3,0.73,5041.8,64.2,120.6,131.1,10.5,60.8,4.49,22.75,46.49,112846.1,0.273294,0.231927,0.279723,0.279723,121.3 -shot_9i_9,shot_9i_9.json,90.06,22.14,-3.09,5351.1,1.21,5349.9,113.3,116.3,123.4,7.0,53.8,4.29,22.44,42.98,110212.5,0.296965,0.234860,0.231941,0.268000,116.9 -shot_driver_51,shot_driver_51.json,116.17,21.74,2.17,6409.0,3.23,6398.8,360.7,173.3,192.7,19.4,108.7,6.13,25.39,56.35,142164.9,0.275733,0.230679,0.274312,0.274312,174.3 -shot_driver_52,shot_driver_52.json,102.11,31.33,3.09,8442.2,6.26,8391.8,921.1,132.7,148.0,15.3,117.3,6.10,24.04,60.71,124959.2,0.413216,0.248358,0.250095,0.300565,133.5 -shot_driver_53,shot_driver_53.json,97.23,30.63,2.23,8925.8,5.99,8877.1,931.1,122.1,132.8,10.7,101.3,5.65,22.92,57.44,118995.0,0.458786,0.267733,0.272631,0.310100,122.8 -shot_driver_54,shot_driver_54.json,121.50,12.88,-5.26,3410.9,-9.97,3359.4,-590.5,182.8,188.0,5.2,54.0,4.78,28.08,29.76,148697.8,0.140300,0.211087,0.185406,0.187019,183.6 -shot_driver_55,shot_driver_55.json,117.48,7.48,-8.33,2150.0,-27.19,1912.4,-982.4,127.6,183.5,56.0,17.6,2.85,34.16,13.31,143773.2,0.091462,0.199494,0.168768,0.168971,128.1 -shot_driver_56,shot_driver_56.json,118.70,17.12,-1.80,4553.8,2.81,4548.4,222.9,180.3,200.5,20.2,92.6,5.76,26.01,50.92,145271.0,0.191729,0.222313,0.226607,0.283622,181.4 -shot_driver_57,shot_driver_57.json,120.93,14.10,-5.16,1544.1,-7.96,1529.2,-213.7,171.8,176.6,4.8,47.2,4.23,30.58,26.21,147990.8,0.063815,0.198470,0.135395,0.136499,172.5 -shot_driver_58,shot_driver_58.json,119.27,23.59,2.48,7093.4,3.26,7081.9,403.5,180.2,197.9,17.7,120.3,6.48,25.75,57.85,145965.8,0.297231,0.233021,0.231575,0.268767,181.2 -shot_driver_59,shot_driver_59.json,80.96,44.91,8.87,6735.0,12.36,6578.8,1442.0,82.1,97.6,15.5,103.6,5.28,22.70,66.22,99079.0,0.415764,0.273004,0.251426,0.310718,82.5 -shot_driver_60,shot_driver_60.json,107.39,11.67,-8.62,3268.6,-14.80,3160.1,-835.0,137.9,138.4,0.5,31.5,3.64,28.36,22.12,131422.8,0.152117,0.205821,0.189954,0.190379,138.5 +shot_9i_7,shot_9i_7.json,83.03,22.51,5.26,7008.5,9.70,6908.3,1181.2,101.7,103.7,2.0,47.2,4.08,20.86,40.21,101607.9,0.421882,0.274806,0.254654,0.311339,101.7 +shot_9i_8,shot_9i_8.json,92.21,21.95,-6.31,5042.3,0.73,5041.8,64.2,120.6,131.1,10.5,60.8,4.49,22.75,46.49,112846.1,0.273294,0.231927,0.279723,0.279723,120.6 +shot_9i_9,shot_9i_9.json,90.06,22.14,-3.09,5351.1,1.21,5349.9,113.3,116.3,123.4,7.0,53.8,4.29,22.44,42.98,110212.5,0.296965,0.234860,0.231941,0.268000,116.3 +shot_driver_51,shot_driver_51.json,116.17,21.74,2.17,6409.0,3.23,6398.8,360.7,173.3,192.7,19.4,108.7,6.13,25.39,56.35,142164.9,0.275733,0.230679,0.274312,0.274312,173.3 +shot_driver_52,shot_driver_52.json,102.11,31.33,3.09,8442.2,6.26,8391.8,921.1,132.7,148.0,15.3,117.3,6.10,24.04,60.71,124959.2,0.413216,0.248358,0.250095,0.300565,132.7 +shot_driver_53,shot_driver_53.json,97.23,30.63,2.23,8925.8,5.99,8877.1,931.1,122.1,132.8,10.7,101.3,5.65,22.92,57.44,118995.0,0.458786,0.267733,0.272631,0.310100,122.1 +shot_driver_54,shot_driver_54.json,121.50,12.88,-5.26,3410.9,-9.97,3359.4,-590.5,182.8,188.0,5.2,54.0,4.78,28.08,29.76,148697.8,0.140300,0.211087,0.185406,0.187019,182.8 +shot_driver_55,shot_driver_55.json,117.48,7.48,-8.33,2150.0,-27.19,1912.4,-982.4,127.6,183.5,56.0,17.6,2.85,34.16,13.31,143773.2,0.091462,0.199494,0.168768,0.168971,127.6 +shot_driver_56,shot_driver_56.json,118.70,17.12,-1.80,4553.8,2.81,4548.4,222.9,180.3,200.5,20.2,92.6,5.76,26.01,50.92,145271.0,0.191729,0.222313,0.226607,0.283622,180.3 +shot_driver_57,shot_driver_57.json,120.93,14.10,-5.16,1544.1,-7.96,1529.2,-213.7,171.8,176.6,4.8,47.2,4.23,30.58,26.21,147990.8,0.063815,0.198470,0.135395,0.136499,171.8 +shot_driver_58,shot_driver_58.json,119.27,23.59,2.48,7093.4,3.26,7081.9,403.5,180.2,197.9,17.7,120.3,6.48,25.75,57.85,145965.8,0.297231,0.233021,0.231575,0.268767,180.2 +shot_driver_59,shot_driver_59.json,80.96,44.91,8.87,6735.0,12.36,6578.8,1442.0,82.1,97.6,15.5,103.6,5.28,22.70,66.22,99079.0,0.415764,0.273004,0.251426,0.310718,82.1 +shot_driver_60,shot_driver_60.json,107.39,11.67,-8.62,3268.6,-14.80,3160.1,-835.0,137.9,138.4,0.5,31.5,3.64,28.36,22.12,131422.8,0.152117,0.205821,0.189954,0.190379,137.9 shot_pw_61,shot_pw_61.json,31.89,25.35,-1.26,3867.9,-0.00,3867.9,-0.0,16.0,26.7,10.7,6.0,1.23,12.59,27.55,39031.5,0.606110,0.537588,0.122952,0.122952,16.0 -shot_pw_62,shot_pw_62.json,39.63,23.69,0.60,3843.5,2.08,3840.9,139.6,23.5,37.4,13.9,8.7,1.51,14.53,27.83,48495.7,0.484743,0.594442,0.304642,0.304642,23.7 -shot_pw_63,shot_pw_63.json,37.15,24.01,1.83,3913.8,-0.00,3913.8,-0.0,20.8,33.5,12.7,7.6,1.40,13.98,27.40,45463.9,0.526531,0.584736,0.254152,0.254152,20.9 -shot_pw_64,shot_pw_64.json,69.63,28.57,0.16,5327.2,5.10,5306.2,473.4,75.4,91.5,16.2,42.6,3.63,19.33,45.21,85210.2,0.382385,0.296424,0.235700,0.309036,75.7 -shot_pw_65,shot_pw_65.json,81.25,28.38,2.89,6959.4,9.38,6866.3,1134.7,97.9,103.6,5.7,61.6,4.46,20.73,48.98,99433.7,0.428086,0.277653,0.257944,0.311074,98.3 -shot_pw_66,shot_pw_66.json,75.71,27.32,-1.17,6605.0,3.99,6589.0,460.1,86.7,101.6,14.8,49.6,3.99,19.88,45.21,92652.6,0.436020,0.281600,0.262117,0.311309,87.1 -shot_pw_67,shot_pw_67.json,81.66,28.12,6.34,6509.6,12.74,6349.4,1435.1,99.6,106.3,6.7,60.9,4.45,20.85,48.97,99936.4,0.398402,0.266198,0.242678,0.311339,100.0 -shot_pw_68,shot_pw_68.json,88.55,23.37,-0.05,6637.4,6.04,6600.5,698.8,115.6,120.2,4.7,57.0,4.48,21.83,43.09,108370.9,0.374608,0.245718,0.232885,0.293206,116.1 -shot_pw_69,shot_pw_69.json,74.06,23.61,0.18,5880.4,8.45,5816.5,864.4,82.8,100.4,17.5,37.3,3.53,19.95,38.31,90634.2,0.396828,0.277758,0.241935,0.304847,83.2 +shot_pw_62,shot_pw_62.json,39.63,23.69,0.60,3843.5,2.08,3840.9,139.6,23.5,37.4,13.9,8.7,1.51,14.53,27.83,48495.7,0.484743,0.594442,0.304642,0.304642,23.5 +shot_pw_63,shot_pw_63.json,37.15,24.01,1.83,3913.8,-0.00,3913.8,-0.0,20.8,33.5,12.7,7.6,1.40,13.98,27.40,45463.9,0.526531,0.584736,0.254152,0.254152,20.8 +shot_pw_64,shot_pw_64.json,69.63,28.57,0.16,5327.2,5.10,5306.2,473.4,75.4,91.5,16.2,42.6,3.63,19.33,45.21,85210.2,0.382385,0.296424,0.235700,0.309036,75.4 +shot_pw_65,shot_pw_65.json,81.25,28.38,2.89,6959.4,9.38,6866.3,1134.7,97.9,103.6,5.7,61.6,4.46,20.73,48.98,99433.7,0.428086,0.277653,0.257944,0.311074,97.9 +shot_pw_66,shot_pw_66.json,75.71,27.32,-1.17,6605.0,3.99,6589.0,460.1,86.7,101.6,14.8,49.6,3.99,19.88,45.21,92652.6,0.436020,0.281600,0.262117,0.311309,86.7 +shot_pw_67,shot_pw_67.json,81.66,28.12,6.34,6509.6,12.74,6349.4,1435.1,99.6,106.3,6.7,60.9,4.45,20.85,48.97,99936.4,0.398402,0.266198,0.242678,0.311339,99.6 +shot_pw_68,shot_pw_68.json,88.55,23.37,-0.05,6637.4,6.04,6600.5,698.8,115.6,120.2,4.7,57.0,4.48,21.83,43.09,108370.9,0.374608,0.245718,0.232885,0.293206,115.6 +shot_pw_69,shot_pw_69.json,74.06,23.61,0.18,5880.4,8.45,5816.5,864.4,82.8,100.4,17.5,37.3,3.53,19.95,38.31,90634.2,0.396828,0.277758,0.241935,0.304847,82.8 diff --git a/assets/data/shot_session_3/shot_diff_analysis.csv b/assets/data/shot_session_3/shot_diff_analysis.csv index 74ace22..e722b16 100644 --- a/assets/data/shot_session_3/shot_diff_analysis.csv +++ b/assets/data/shot_session_3/shot_diff_analysis.csv @@ -1,70 +1,70 @@ -shot_name,speed_mph,vla_deg,hla_deg,total_spin_rpm,spin_axis_deg,physics_carry_yd,flightscope_carry_yd,diff_carry_yd,physics_carry_raw_yd,diff_carry_raw_yd,physics_total_yd,flightscope_total_yd,diff_total_yd,rollout_physics_yd,rollout_flightscope_yd,diff_rollout_yd,physics_apex_ft,flightscope_apex_ft,diff_apex_ft,carry_exception_regime,carry_exception_offset_yd,carry_exception_source,carry_exception_applied,status -shot_3w_18,47.9,45.8,34.0,7491,30.0,36.3,,,36.3,,41.1,,,4.8,,,34.4,,,C-S0-V4-P3,,,false, -shot_3w_19,121.3,5.6,-4.8,1662,-11.9,120.0,120.6,-0.6,120.0,-0.6,181.8,165.8,16.0,61.8,45.2,16.6,12.3,12.2,0.1,D-S4-V0-P0,,,false,severe -shot_3w_20,116.0,4.4,2.3,2026,10.0,102.5,,,102.5,,162.3,,,59.8,,,8.2,,,D-S3-V0-P0,,,false, -shot_3w_21,119.4,5.3,-3.4,1760,-10.5,115.2,114.6,0.6,115.2,0.6,176.4,160.5,15.9,61.2,45.9,15.3,11.2,10.9,0.3,D-S3-V0-P0,,,false,severe -shot_3w_22,108.9,5.6,-7.2,2501,-1.8,105.8,103.2,2.6,105.8,2.6,160.9,141.3,19.6,55.1,38.1,17.0,11.0,10.5,0.5,I-S3-V0-P1,,,false,severe -shot_3w_23,115.8,8.9,-0.8,2804,2.2,147.8,147.7,0.1,147.8,0.1,147.6,170.9,-23.3,-0.2,23.2,-23.4,26.7,28.0,-1.3,D-S3-V0-P1,,,false,severe -shot_3w_24,123.4,6.3,-5.4,2752,-13.3,148.8,145.9,2.9,152.8,6.9,205.1,176.7,28.4,56.3,30.8,25.5,21.6,19.8,1.8,D-S4-V0-P1,4.0,regime,true,severe -shot_5i_10,88.0,14.2,1.2,4065,8.4,99.3,103.1,-3.8,105.6,2.5,109.1,116.7,-7.6,9.8,13.6,-3.8,34.2,28.4,5.8,I-S2-V1-P2,6.3,regime,true,moderate -shot_5i_11,90.6,14.4,-0.2,3360,7.8,105.1,108.8,-3.7,105.1,-3.7,106.5,124.1,-17.6,1.4,15.3,-13.9,28.5,29.8,-1.3,I-S2-V1-P1,,,false,severe -shot_5i_12,74.2,10.2,-1.7,3321,15.8,59.5,58.4,1.1,59.5,1.1,58.4,81.9,-23.5,-1.1,23.5,-24.6,10.5,9.4,1.1,I-S1-V1-P1,,,false,severe -shot_5i_13,75.0,8.0,2.5,3921,3.4,56.2,53.9,2.3,56.2,2.3,89.0,78.9,10.1,32.8,25.0,7.8,7.4,6.8,0.6,I-S1-V0-P1,,,false,severe -shot_5i_14,87.7,4.5,-7.7,3390,1.8,54.4,,,54.4,,97.9,,,43.5,,,4.0,,,I-S2-V0-P1,,,false, -shot_5i_15,86.9,9.3,-4.0,2509,-4.9,74.0,78.6,-4.6,74.0,-4.6,121.1,106.6,14.5,47.1,28.0,19.1,11.0,12.1,-1.1,I-S2-V0-P1,,,false,severe -shot_5i_16,98.0,9.1,-2.1,3776,1.7,110.0,109.1,0.9,110.0,0.9,109.0,130.0,-21.0,-1.0,20.9,-21.9,19.5,19.7,-0.2,I-S2-V0-P1,,,false,severe -shot_5i_17,56.5,10.0,24.1,5178,29.1,28.4,30.6,-2.2,28.4,-2.2,45.2,46.9,-1.7,16.8,16.3,0.5,4.2,4.5,-0.3,C-S0-V1-P2,,,false,pass -shot_6i_35,80.5,15.3,-1.3,4667,-0.0,89.5,90.0,-0.5,84.5,-5.5,84.5,101.5,-17.0,-5.0,11.5,-16.5,23.0,26.4,-3.4,I-S1-V1-P2,-5.0,regime,true,severe -shot_6i_36,78.9,10.4,16.1,4166,25.1,74.5,67.8,6.7,69.5,1.7,68.0,89.1,-21.1,-6.5,21.3,-27.8,12.4,11.8,0.6,I-S1-V1-P2,-5.0,regime,true,severe -shot_6i_37,82.6,10.2,11.0,3041,25.4,67.8,71.5,-3.7,67.8,-3.7,109.1,97.2,11.9,41.3,25.7,15.6,10.9,11.8,-0.9,I-S1-V1-P1,,,false,severe -shot_6i_38,79.1,13.3,3.0,3187,11.6,75.6,79.2,-3.6,75.6,-3.6,75.8,97.5,-21.7,0.2,18.3,-18.1,18.1,18.0,0.1,I-S1-V1-P1,,,false,severe -shot_6i_39,61.0,6.1,10.3,3285,22.0,23.5,24.0,-0.5,23.5,-0.5,53.7,47.3,6.4,30.2,23.3,6.9,2.1,2.1,0.0,I-S1-V0-P1,,,false,moderate -shot_6i_40,62.1,6.8,27.0,2768,30.0,24.9,26.2,-1.3,24.9,-1.3,58.8,51.1,7.7,33.9,24.9,9.0,2.6,2.5,0.1,I-S1-V0-P1,,,false,moderate -shot_6i_41,82.5,9.9,-2.3,2620,13.6,66.6,71.3,-4.7,66.6,-4.7,110.8,97.9,12.9,44.2,26.6,17.6,10.3,11.3,-1.0,I-S1-V0-P1,,,false,severe -shot_6i_42,77.2,13.1,-3.4,4057,4.1,80.2,76.6,3.6,75.2,-1.4,75.1,92.9,-17.8,-5.1,16.3,-21.4,18.2,17.5,0.7,I-S1-V1-P2,-5.0,regime,true,severe -shot_6i_43,94.1,13.9,-4.7,4616,1.7,118.9,117.3,1.6,122.9,5.6,128.4,128.6,-0.2,9.5,11.3,-1.8,42.8,35.0,7.8,I-S2-V1-P2,4.0,regime,true,pass -shot_6i_44,115.0,9.5,-6.7,2314,15.1,140.5,142.3,-1.8,140.5,-1.8,140.2,168.2,-28.0,-0.3,25.9,-26.2,25.2,26.6,-1.4,D-S3-V0-P0,,,false,severe -shot_6i_45,109.3,6.4,-9.0,2510,-10.9,112.6,109.6,3.0,112.6,3.0,165.8,145.4,20.4,53.2,35.8,17.4,13.4,12.9,0.5,I-S3-V0-P1,,,false,severe -shot_6i_46,116.3,13.7,0.3,3008,10.7,170.4,167.3,3.1,170.4,3.1,175.1,179.3,-4.2,4.7,12.0,-7.3,49.9,51.6,-1.7,D-S3-V1-P1,,,false,moderate -shot_6i_47,99.5,14.8,-2.9,4811,4.7,133.3,131.2,2.1,137.3,6.1,146.0,137.7,8.3,12.7,6.5,6.2,56.4,45.0,11.4,I-S2-V1-P2,4.0,regime,true,moderate -shot_6i_48,101.7,15.2,-3.0,4631,4.3,138.4,137.1,1.3,142.4,5.3,152.3,143.5,8.8,13.9,6.4,7.5,62.7,48.9,13.8,I-S2-V1-P2,4.0,regime,true,moderate -shot_6i_49,71.2,7.7,16.1,2625,30.0,37.4,39.9,-2.5,37.4,-2.5,77.2,70.3,6.9,39.8,30.4,9.4,4.2,4.5,-0.3,I-S1-V0-P1,,,false,moderate -shot_6i_50,82.8,14.8,-1.4,3783,2.8,92.3,93.2,-0.9,92.3,-0.9,94.9,107.4,-12.5,2.6,14.2,-11.6,29.4,25.6,3.8,I-S1-V1-P1,,,false,severe -shot_7i_25,83.3,13.2,3.0,3410,17.8,86.0,86.9,-0.9,86.0,-0.9,86.4,104.8,-18.4,0.4,17.9,-17.5,21.0,20.1,0.9,I-S1-V1-P1,,,false,severe -shot_7i_26,73.4,10.8,15.4,3561,30.0,58.1,56.6,1.5,58.1,1.5,57.2,79.3,-22.1,-0.9,22.7,-23.6,10.7,9.6,1.1,I-S1-V1-P1,,,false,severe -shot_7i_27,93.7,17.1,-1.4,4612,2.6,119.5,122.3,-2.8,123.5,1.2,133.0,128.3,4.7,13.5,6.0,7.5,53.7,46.0,7.7,I-S2-V1-P2,4.0,regime,true,pass -shot_7i_28,92.1,16.4,-3.6,4217,-0.4,114.4,117.9,-3.5,118.4,0.5,127.1,125.6,1.5,12.7,7.7,5.0,48.7,40.6,8.1,I-S2-V1-P2,4.0,regime,true,moderate -shot_7i_29,107.6,13.8,-6.0,3633,4.7,148.5,148.4,0.1,148.5,0.1,151.7,158.3,-6.6,3.2,9.9,-6.7,42.7,46.3,-3.6,I-S3-V1-P1,,,false,moderate -shot_7i_30,90.2,17.6,-3.8,4508,-0.2,110.7,115.4,-4.7,114.7,-0.7,122.7,121.7,1.0,12.0,6.3,5.7,48.4,43.1,5.3,I-S2-V1-P2,4.0,regime,true,moderate -shot_7i_31,76.4,17.5,-0.5,5122,1.8,84.8,85.0,-0.2,79.8,-5.2,79.8,94.5,-14.7,-5.0,9.5,-14.5,24.2,28.4,-4.2,I-S1-V1-P2,-5.0,regime,true,severe -shot_7i_32,93.1,17.0,-1.0,3762,4.2,118.8,121.2,-2.4,118.8,-2.4,127.0,129.8,-2.8,8.2,8.6,-0.4,45.5,42.5,3.0,I-S2-V1-P1,,,false,pass -shot_7i_33,92.4,17.0,-0.6,3852,2.8,117.5,119.7,-2.2,117.5,-2.2,126.1,128.0,-1.9,8.6,8.3,0.3,46.5,42.0,4.5,I-S2-V1-P1,,,false,pass -shot_7i_34,104.2,14.7,-4.6,4081,1.9,142.1,142.5,-0.4,146.1,3.6,152.6,150.6,2.0,10.5,8.1,2.4,51.2,48.2,3.0,I-S2-V1-P2,4.0,regime,true,pass -shot_9i_1,89.0,15.1,-0.5,3563,11.3,104.8,106.7,-1.9,104.8,-1.9,107.8,120.8,-13.0,3.0,14.1,-11.1,32.0,30.8,1.2,I-S2-V1-P1,,,false,severe -shot_9i_2,71.3,23.9,5.5,4086,8.3,73.9,82.1,-8.2,73.9,-8.2,78.2,87.4,-9.2,4.3,5.3,-1.0,33.7,36.8,-3.1,I-S1-V2-P2,,,false,severe -shot_9i_3,90.1,21.7,2.8,5243,11.2,115.4,117.3,-1.9,115.4,-1.9,122.1,120.7,1.4,6.7,3.4,3.3,52.3,57.7,-5.4,I-S2-V2-P2,,,false,pass -shot_9i_4,95.7,4.8,-6.8,2312,6.0,63.4,,,63.4,,117.7,,,54.3,,,4.8,,,I-S2-V0-P0,,,false, -shot_9i_5,84.0,19.4,3.8,5352,11.5,99.7,102.7,-3.0,99.7,-3.0,101.3,107.2,-5.9,1.6,4.5,-2.9,36.3,41.8,-5.5,I-S1-V2-P2,,,false,moderate -shot_9i_6,94.7,0.0,3.7,2200,28.9,4.2,,,4.2,,70.0,,,65.8,,,0.1,,,I-S2-V0-P0,,,false, -shot_9i_7,83.0,22.5,5.3,7008,9.7,101.7,101.1,0.6,101.7,0.6,103.7,102.6,1.1,2.0,1.5,0.5,47.2,51.5,-4.3,I-S1-V2-P3,,,false,pass -shot_9i_8,92.2,21.9,-6.3,5042,0.7,120.6,122.9,-2.3,120.6,-2.3,131.1,126.4,4.7,10.5,3.5,7.0,60.8,62.6,-1.8,I-S2-V2-P2,,,false,pass -shot_9i_9,90.1,22.1,-3.1,5351,1.2,116.3,118.1,-1.8,116.3,-1.8,123.4,121.1,2.3,7.1,3.0,4.1,53.8,60.1,-6.3,I-S2-V2-P2,,,false,pass -shot_driver_51,116.2,21.7,2.2,6409,3.2,166.3,162.9,3.4,173.3,10.4,192.7,164.3,28.4,26.4,1.4,25.0,108.7,108.7,0.0,I-S3-V2-P3,7.0,regime,true,severe -shot_driver_52,102.1,31.3,3.1,8442,6.3,128.7,124.5,4.2,132.7,8.2,148.0,124.1,23.9,19.3,-0.4,19.7,117.3,119.3,-2.0,W-S2-V3-P4,4.0,regime,true,severe -shot_driver_53,97.2,30.6,2.2,8926,6.0,118.1,117.6,0.5,122.1,4.5,132.8,117.1,15.7,14.7,-0.5,15.2,101.3,105.8,-4.5,W-S2-V3-P4,4.0,regime,true,severe -shot_driver_54,121.5,12.9,-5.3,3411,-10.0,176.4,178.2,-1.8,182.8,4.6,188.0,188.7,-0.7,11.6,10.5,1.1,54.0,56.5,-2.5,D-S4-V1-P1,6.4,regime,true,pass -shot_driver_55,117.5,7.5,-8.3,2150,-27.2,127.6,125.6,2.0,127.6,2.0,183.5,161.8,21.7,55.9,36.2,19.7,17.6,17.2,0.4,D-S3-V0-P0,,,false,severe -shot_driver_56,118.7,17.1,-1.8,4554,2.8,173.3,176.6,-3.3,180.3,3.7,200.5,180.9,19.6,27.2,4.3,22.9,92.6,83.2,9.4,D-S3-V1-P2,7.0,regime,true,severe -shot_driver_57,120.9,14.1,-5.2,1544,-8.0,171.8,177.6,-5.8,171.8,-5.8,176.6,197.0,-20.4,4.8,19.4,-14.6,47.2,50.9,-3.7,D-S4-V1-P0,,,false,severe -shot_driver_58,119.3,23.6,2.5,7093,3.3,173.2,163.2,10.0,180.2,17.0,197.9,163.9,34.0,24.7,0.7,24.0,120.3,125.7,-5.4,I-S3-V2-P3,7.0,regime,true,severe -shot_driver_59,81.0,44.9,8.9,6735,12.4,82.1,83.7,-1.6,82.1,-1.6,97.6,83.2,14.4,15.5,-0.5,16.0,103.6,107.8,-4.2,W-S1-V4-P3,,,false,severe -shot_driver_60,107.4,11.7,-8.6,3269,-14.8,137.9,138.5,-0.6,137.9,-0.6,138.4,153.8,-15.4,0.5,15.3,-14.8,31.5,34.0,-2.5,I-S3-V1-P1,,,false,severe -shot_pw_61,31.9,25.4,-1.3,3868,-0.0,16.0,,,16.0,,26.7,,,10.7,,,6.0,,,C-S0-V3-P1,,,false, -shot_pw_62,39.6,23.7,0.6,3844,2.1,23.5,,,23.5,,37.4,,,13.9,,,8.7,,,C-S0-V2-P1,,,false, -shot_pw_63,37.1,24.0,1.8,3914,-0.0,20.8,,,20.8,,33.5,,,12.7,,,7.6,,,C-S0-V2-P1,,,false, -shot_pw_64,69.6,28.6,0.2,5327,5.1,75.4,80.1,-4.7,75.4,-4.7,91.5,82.4,9.1,16.1,2.3,13.8,42.6,46.4,-3.8,I-S1-V3-P2,,,false,moderate -shot_pw_65,81.2,28.4,2.9,6959,9.4,97.9,98.5,-0.6,97.9,-0.6,103.6,99.4,4.2,5.7,0.9,4.8,61.6,65.6,-4.0,I-S1-V3-P3,,,false,pass -shot_pw_66,75.7,27.3,-1.2,6605,4.0,86.7,89.7,-3.0,86.7,-3.0,101.6,90.8,10.8,14.9,1.1,13.8,49.6,53.5,-3.9,I-S1-V3-P3,,,false,severe -shot_pw_67,81.7,28.1,6.3,6510,12.7,99.6,100.0,-0.4,99.6,-0.4,106.3,101.1,5.2,6.7,1.1,5.6,60.9,65.0,-4.1,I-S1-V3-P3,,,false,moderate -shot_pw_68,88.5,23.4,-0.1,6637,6.0,112.1,112.7,-0.6,115.6,2.9,120.2,114.1,6.1,8.1,1.4,6.7,57.0,63.4,-6.4,I-S2-V2-P3,3.5,regime,true,moderate -shot_pw_69,74.1,23.6,0.2,5880,8.4,82.8,86.0,-3.2,82.8,-3.2,100.4,88.8,11.6,17.6,2.8,14.8,37.3,41.2,-3.9,I-S1-V2-P3,,,false,severe +shot_name,speed_mph,vla_deg,hla_deg,total_spin_rpm,spin_axis_deg,launch_regime_key,carry_window,physics_carry_yd,flightscope_carry_yd,diff_carry_yd,physics_carry_raw_yd,diff_carry_raw_yd,physics_total_yd,flightscope_total_yd,diff_total_yd,rollout_physics_yd,rollout_flightscope_yd,diff_rollout_yd,physics_apex_ft,flightscope_apex_ft,diff_apex_ft,carry_exception_regime,carry_exception_offset_yd,carry_exception_source,carry_exception_applied,status +shot_3w_18,47.9,45.8,34.0,7491,30.0,C-S0-V4-P3,,36.3,,,36.3,,41.1,,,4.8,,,34.4,,,,,,false, +shot_3w_19,121.3,5.6,-4.8,1662,-11.9,D-S4-V0-P0,115-150,120.0,120.6,-0.6,120.0,-0.6,181.8,165.8,16.0,61.8,45.2,16.6,12.3,12.2,0.1,,,,false,severe +shot_3w_20,116.0,4.4,2.3,2026,10.0,D-S3-V0-P0,,102.5,,,102.5,,162.3,,,59.8,,,8.2,,,,,,false, +shot_3w_21,119.4,5.3,-3.4,1760,-10.5,D-S3-V0-P0,<115,115.2,114.6,0.6,115.2,0.6,176.4,160.5,15.9,61.2,45.9,15.3,11.2,10.9,0.3,,,,false,severe +shot_3w_22,108.9,5.6,-7.2,2501,-1.8,I-S3-V0-P1,<115,105.8,103.2,2.6,105.8,2.6,160.9,141.3,19.6,55.1,38.1,17.0,11.0,10.5,0.5,,,,false,severe +shot_3w_23,115.8,8.9,-0.8,2804,2.2,D-S3-V0-P1,115-150,147.8,147.7,0.1,147.8,0.1,147.6,170.9,-23.3,-0.2,23.2,-23.4,26.7,28.0,-1.3,,,,false,severe +shot_3w_24,123.4,6.3,-5.4,2752,-13.3,D-S4-V0-P1,115-150,152.8,145.9,6.9,152.8,6.9,205.1,176.7,28.4,52.3,30.8,21.5,21.6,19.8,1.8,,,,false,severe +shot_5i_10,88.0,14.2,1.2,4065,8.4,I-S2-V1-P2,<115,105.6,103.1,2.5,105.6,2.5,109.1,116.7,-7.6,3.5,13.6,-10.1,34.2,28.4,5.8,,,,false,moderate +shot_5i_11,90.6,14.4,-0.2,3360,7.8,I-S2-V1-P1,<115,105.1,108.8,-3.7,105.1,-3.7,106.5,124.1,-17.6,1.4,15.3,-13.9,28.5,29.8,-1.3,,,,false,severe +shot_5i_12,74.2,10.2,-1.7,3321,15.8,I-S1-V1-P1,<115,59.5,58.4,1.1,59.5,1.1,58.4,81.9,-23.5,-1.1,23.5,-24.6,10.5,9.4,1.1,,,,false,severe +shot_5i_13,75.0,8.0,2.5,3921,3.4,I-S1-V0-P1,<115,56.2,53.9,2.3,56.2,2.3,89.0,78.9,10.1,32.8,25.0,7.8,7.4,6.8,0.6,,,,false,severe +shot_5i_14,87.7,4.5,-7.7,3390,1.8,I-S2-V0-P1,,54.4,,,54.4,,97.9,,,43.5,,,4.0,,,,,,false, +shot_5i_15,86.9,9.3,-4.0,2509,-4.9,I-S2-V0-P1,<115,74.0,78.6,-4.6,74.0,-4.6,121.1,106.6,14.5,47.1,28.0,19.1,11.0,12.1,-1.1,,,,false,severe +shot_5i_16,98.0,9.1,-2.1,3776,1.7,I-S2-V0-P1,<115,110.0,109.1,0.9,110.0,0.9,109.0,130.0,-21.0,-1.0,20.9,-21.9,19.5,19.7,-0.2,,,,false,severe +shot_5i_17,56.5,10.0,24.1,5178,29.1,C-S0-V0-P2,<115,28.4,30.6,-2.2,28.4,-2.2,45.2,46.9,-1.7,16.8,16.3,0.5,4.2,4.5,-0.3,,,,false,pass +shot_6i_35,80.5,15.3,-1.3,4667,-0.0,I-S1-V1-P2,<115,84.5,90.0,-5.5,84.5,-5.5,84.5,101.5,-17.0,0.0,11.5,-11.5,23.0,26.4,-3.4,,,,false,severe +shot_6i_36,78.9,10.4,16.1,4166,25.1,I-S1-V1-P2,<115,69.5,67.8,1.7,69.5,1.7,68.0,89.1,-21.1,-1.5,21.3,-22.8,12.4,11.8,0.6,,,,false,severe +shot_6i_37,82.6,10.2,11.0,3041,25.4,I-S1-V1-P1,<115,67.8,71.5,-3.7,67.8,-3.7,109.1,97.2,11.9,41.3,25.7,15.6,10.9,11.8,-0.9,,,,false,severe +shot_6i_38,79.1,13.3,3.0,3187,11.6,I-S1-V1-P1,<115,75.6,79.2,-3.6,75.6,-3.6,75.8,97.5,-21.7,0.2,18.3,-18.1,18.1,18.0,0.1,,,,false,severe +shot_6i_39,61.0,6.1,10.3,3285,22.0,I-S1-V0-P1,<115,23.5,24.0,-0.5,23.5,-0.5,53.7,47.3,6.4,30.2,23.3,6.9,2.1,2.1,0.0,,,,false,moderate +shot_6i_40,62.1,6.8,27.0,2768,30.0,I-S1-V0-P1,<115,24.9,26.2,-1.3,24.9,-1.3,58.8,51.1,7.7,33.9,24.9,9.0,2.6,2.5,0.1,,,,false,moderate +shot_6i_41,82.5,9.9,-2.3,2620,13.6,I-S1-V0-P1,<115,66.6,71.3,-4.7,66.6,-4.7,110.8,97.9,12.9,44.2,26.6,17.6,10.3,11.3,-1.0,,,,false,severe +shot_6i_42,77.2,13.1,-3.4,4057,4.1,I-S1-V1-P2,<115,75.2,76.6,-1.4,75.2,-1.4,75.1,92.9,-17.8,-0.1,16.3,-16.4,18.2,17.5,0.7,,,,false,severe +shot_6i_43,94.1,13.9,-4.7,4616,1.7,I-S2-V1-P2,115-150,122.9,117.3,5.6,122.9,5.6,128.4,128.6,-0.2,5.5,11.3,-5.8,42.8,35.0,7.8,,,,false,moderate +shot_6i_44,115.0,9.5,-6.7,2314,15.1,D-S3-V0-P0,115-150,140.5,142.3,-1.8,140.5,-1.8,140.2,168.2,-28.0,-0.3,25.9,-26.2,25.2,26.6,-1.4,,,,false,severe +shot_6i_45,109.3,6.4,-9.0,2510,-10.9,I-S3-V0-P1,<115,112.6,109.6,3.0,112.6,3.0,165.8,145.4,20.4,53.2,35.8,17.4,13.4,12.9,0.5,,,,false,severe +shot_6i_46,116.3,13.7,0.3,3008,10.7,D-S3-V1-P1,150-180,170.4,167.3,3.1,170.4,3.1,175.1,179.3,-4.2,4.7,12.0,-7.3,49.9,51.6,-1.7,,,,false,moderate +shot_6i_47,99.5,14.8,-2.9,4811,4.7,I-S2-V1-P2,115-150,137.3,131.2,6.1,137.3,6.1,146.0,137.7,8.3,8.7,6.5,2.2,56.4,45.0,11.4,,,,false,moderate +shot_6i_48,101.7,15.2,-3.0,4631,4.3,I-S2-V1-P2,115-150,142.4,137.1,5.3,142.4,5.3,152.3,143.5,8.8,9.9,6.4,3.5,62.7,48.9,13.8,,,,false,moderate +shot_6i_49,71.2,7.7,16.1,2625,30.0,I-S1-V0-P1,<115,37.4,39.9,-2.5,37.4,-2.5,77.2,70.3,6.9,39.8,30.4,9.4,4.2,4.5,-0.3,,,,false,moderate +shot_6i_50,82.8,14.8,-1.4,3783,2.8,I-S1-V1-P1,<115,92.3,93.2,-0.9,92.3,-0.9,94.9,107.4,-12.5,2.6,14.2,-11.6,29.4,25.6,3.8,,,,false,severe +shot_7i_25,83.3,13.2,3.0,3410,17.8,I-S1-V1-P1,<115,86.0,86.9,-0.9,86.0,-0.9,86.4,104.8,-18.4,0.4,17.9,-17.5,21.0,20.1,0.9,,,,false,severe +shot_7i_26,73.4,10.8,15.4,3561,30.0,I-S1-V1-P1,<115,58.1,56.6,1.5,58.1,1.5,57.2,79.3,-22.1,-0.9,22.7,-23.6,10.7,9.6,1.1,,,,false,severe +shot_7i_27,93.7,17.1,-1.4,4612,2.6,I-S2-V1-P2,115-150,123.5,122.3,1.2,123.5,1.2,133.0,128.3,4.7,9.5,6.0,3.5,53.7,46.0,7.7,,,,false,pass +shot_7i_28,92.1,16.4,-3.6,4217,-0.4,I-S2-V1-P2,115-150,118.4,117.9,0.5,118.4,0.5,127.1,125.6,1.5,8.7,7.7,1.0,48.7,40.6,8.1,,,,false,pass +shot_7i_29,107.6,13.8,-6.0,3633,4.7,I-S3-V1-P1,115-150,148.5,148.4,0.1,148.5,0.1,151.7,158.3,-6.6,3.2,9.9,-6.7,42.7,46.3,-3.6,,,,false,moderate +shot_7i_30,90.2,17.6,-3.8,4508,-0.2,I-S2-V1-P2,115-150,114.7,115.4,-0.7,114.7,-0.7,122.7,121.7,1.0,8.0,6.3,1.7,48.4,43.1,5.3,,,,false,pass +shot_7i_31,76.4,17.5,-0.5,5122,1.8,I-S1-V1-P2,<115,79.8,85.0,-5.2,79.8,-5.2,79.8,94.5,-14.7,0.0,9.5,-9.5,24.2,28.4,-4.2,,,,false,severe +shot_7i_32,93.1,17.0,-1.0,3762,4.2,I-S2-V1-P1,115-150,118.8,121.2,-2.4,118.8,-2.4,127.0,129.8,-2.8,8.2,8.6,-0.4,45.5,42.5,3.0,,,,false,pass +shot_7i_33,92.4,17.0,-0.6,3852,2.8,I-S2-V1-P1,115-150,117.5,119.7,-2.2,117.5,-2.2,126.1,128.0,-1.9,8.6,8.3,0.3,46.5,42.0,4.5,,,,false,pass +shot_7i_34,104.2,14.7,-4.6,4081,1.9,I-S2-V1-P2,115-150,146.1,142.5,3.6,146.1,3.6,152.6,150.6,2.0,6.5,8.1,-1.6,51.2,48.2,3.0,,,,false,moderate +shot_9i_1,89.0,15.1,-0.5,3563,11.3,I-S2-V1-P1,<115,104.8,106.7,-1.9,104.8,-1.9,107.8,120.8,-13.0,3.0,14.1,-11.1,32.0,30.8,1.2,,,,false,severe +shot_9i_2,71.3,23.9,5.5,4086,8.3,I-S1-V2-P2,<115,73.9,82.1,-8.2,73.9,-8.2,78.2,87.4,-9.2,4.3,5.3,-1.0,33.7,36.8,-3.1,,,,false,severe +shot_9i_3,90.1,21.7,2.8,5243,11.2,I-S2-V2-P2,115-150,115.4,117.3,-1.9,115.4,-1.9,122.1,120.7,1.4,6.7,3.4,3.3,52.3,57.7,-5.4,,,,false,pass +shot_9i_4,95.7,4.8,-6.8,2312,6.0,I-S2-V0-P0,,63.4,,,63.4,,117.7,,,54.3,,,4.8,,,,,,false, +shot_9i_5,84.0,19.4,3.8,5352,11.5,I-S1-V2-P2,<115,99.7,102.7,-3.0,99.7,-3.0,101.3,107.2,-5.9,1.6,4.5,-2.9,36.3,41.8,-5.5,,,,false,moderate +shot_9i_6,94.7,0.0,3.7,2200,28.9,I-S2-V0-P0,,4.2,,,4.2,,70.0,,,65.8,,,0.1,,,,,,false, +shot_9i_7,83.0,22.5,5.3,7008,9.7,I-S1-V2-P3,<115,101.7,101.1,0.6,101.7,0.6,103.7,102.6,1.1,2.0,1.5,0.5,47.2,51.5,-4.3,,,,false,pass +shot_9i_8,92.2,21.9,-6.3,5042,0.7,I-S2-V2-P2,115-150,120.6,122.9,-2.3,120.6,-2.3,131.1,126.4,4.7,10.5,3.5,7.0,60.8,62.6,-1.8,,,,false,pass +shot_9i_9,90.1,22.1,-3.1,5351,1.2,I-S2-V2-P2,115-150,116.3,118.1,-1.8,116.3,-1.8,123.4,121.1,2.3,7.1,3.0,4.1,53.8,60.1,-6.3,,,,false,pass +shot_driver_51,116.2,21.7,2.2,6409,3.2,I-S3-V2-P3,150-180,173.3,162.9,10.4,173.3,10.4,192.7,164.3,28.4,19.4,1.4,18.0,108.7,108.7,0.0,,,,false,severe +shot_driver_52,102.1,31.3,3.1,8442,6.3,W-S2-V3-P4,115-150,132.7,124.5,8.2,132.7,8.2,148.0,124.1,23.9,15.3,-0.4,15.7,117.3,119.3,-2.0,,,,false,severe +shot_driver_53,97.2,30.6,2.2,8926,6.0,W-S2-V3-P4,115-150,122.1,117.6,4.5,122.1,4.5,132.8,117.1,15.7,10.7,-0.5,11.2,101.3,105.8,-4.5,,,,false,severe +shot_driver_54,121.5,12.9,-5.3,3411,-10.0,D-S4-V1-P1,150-180,182.8,178.2,4.6,182.8,4.6,188.0,188.7,-0.7,5.2,10.5,-5.3,54.0,56.5,-2.5,,,,false,moderate +shot_driver_55,117.5,7.5,-8.3,2150,-27.2,D-S3-V0-P0,115-150,127.6,125.6,2.0,127.6,2.0,183.5,161.8,21.7,55.9,36.2,19.7,17.6,17.2,0.4,,,,false,severe +shot_driver_56,118.7,17.1,-1.8,4554,2.8,D-S3-V1-P2,150-180,180.3,176.6,3.7,180.3,3.7,200.5,180.9,19.6,20.2,4.3,15.9,92.6,83.2,9.4,,,,false,severe +shot_driver_57,120.9,14.1,-5.2,1544,-8.0,D-S4-V1-P0,150-180,171.8,177.6,-5.8,171.8,-5.8,176.6,197.0,-20.4,4.8,19.4,-14.6,47.2,50.9,-3.7,,,,false,severe +shot_driver_58,119.3,23.6,2.5,7093,3.3,I-S3-V2-P3,150-180,180.2,163.2,17.0,180.2,17.0,197.9,163.9,34.0,17.7,0.7,17.0,120.3,125.7,-5.4,,,,false,severe +shot_driver_59,81.0,44.9,8.9,6735,12.4,W-S1-V4-P3,<115,82.1,83.7,-1.6,82.1,-1.6,97.6,83.2,14.4,15.5,-0.5,16.0,103.6,107.8,-4.2,,,,false,severe +shot_driver_60,107.4,11.7,-8.6,3269,-14.8,I-S3-V1-P1,115-150,137.9,138.5,-0.6,137.9,-0.6,138.4,153.8,-15.4,0.5,15.3,-14.8,31.5,34.0,-2.5,,,,false,severe +shot_pw_61,31.9,25.4,-1.3,3868,-0.0,C-S0-V3-P1,,16.0,,,16.0,,26.7,,,10.7,,,6.0,,,,,,false, +shot_pw_62,39.6,23.7,0.6,3844,2.1,C-S0-V2-P1,,23.5,,,23.5,,37.4,,,13.9,,,8.7,,,,,,false, +shot_pw_63,37.1,24.0,1.8,3914,-0.0,C-S0-V2-P1,,20.8,,,20.8,,33.5,,,12.7,,,7.6,,,,,,false, +shot_pw_64,69.6,28.6,0.2,5327,5.1,I-S1-V3-P2,<115,75.4,80.1,-4.7,75.4,-4.7,91.5,82.4,9.1,16.1,2.3,13.8,42.6,46.4,-3.8,,,,false,moderate +shot_pw_65,81.2,28.4,2.9,6959,9.4,I-S1-V3-P3,<115,97.9,98.5,-0.6,97.9,-0.6,103.6,99.4,4.2,5.7,0.9,4.8,61.6,65.6,-4.0,,,,false,pass +shot_pw_66,75.7,27.3,-1.2,6605,4.0,I-S1-V3-P3,<115,86.7,89.7,-3.0,86.7,-3.0,101.6,90.8,10.8,14.9,1.1,13.8,49.6,53.5,-3.9,,,,false,severe +shot_pw_67,81.7,28.1,6.3,6510,12.7,I-S1-V3-P3,<115,99.6,100.0,-0.4,99.6,-0.4,106.3,101.1,5.2,6.7,1.1,5.6,60.9,65.0,-4.1,,,,false,moderate +shot_pw_68,88.5,23.4,-0.1,6637,6.0,I-S2-V2-P3,<115,115.6,112.7,2.9,115.6,2.9,120.2,114.1,6.1,4.6,1.4,3.2,57.0,63.4,-6.4,,,,false,moderate +shot_pw_69,74.1,23.6,0.2,5880,8.4,I-S1-V2-P3,<115,82.8,86.0,-3.2,82.8,-3.2,100.4,88.8,11.6,17.6,2.8,14.8,37.3,41.2,-3.9,,,,false,severe diff --git a/assets/data/shot_session_3/shot_diff_analysis.csv.import b/assets/data/shot_session_3/shot_diff_analysis.csv.import index 0903023..8327dd9 100644 --- a/assets/data/shot_session_3/shot_diff_analysis.csv.import +++ b/assets/data/shot_session_3/shot_diff_analysis.csv.import @@ -6,10 +6,10 @@ uid="uid://bh7tgjcooxyuk" [deps] -files=["res://assets/data/shot_session_3/shot_diff_analysis.speed.translation", "res://assets/data/shot_session_3/shot_diff_analysis.vla.translation", "res://assets/data/shot_session_3/shot_diff_analysis.hla.translation", "res://assets/data/shot_session_3/shot_diff_analysis.total.translation", "res://assets/data/shot_session_3/shot_diff_analysis.spin.translation", "res://assets/data/shot_session_3/shot_diff_analysis.physics.translation", "res://assets/data/shot_session_3/shot_diff_analysis.flightscope.translation", "res://assets/data/shot_session_3/shot_diff_analysis.diff.translation", "res://assets/data/shot_session_3/shot_diff_analysis.physics.translation", "res://assets/data/shot_session_3/shot_diff_analysis.diff.translation", "res://assets/data/shot_session_3/shot_diff_analysis.physics.translation", "res://assets/data/shot_session_3/shot_diff_analysis.flightscope.translation", "res://assets/data/shot_session_3/shot_diff_analysis.diff.translation", "res://assets/data/shot_session_3/shot_diff_analysis.rollout.translation", "res://assets/data/shot_session_3/shot_diff_analysis.rollout.translation", "res://assets/data/shot_session_3/shot_diff_analysis.diff.translation", "res://assets/data/shot_session_3/shot_diff_analysis.physics.translation", "res://assets/data/shot_session_3/shot_diff_analysis.flightscope.translation", "res://assets/data/shot_session_3/shot_diff_analysis.diff.translation", "res://assets/data/shot_session_3/shot_diff_analysis.carry.translation", "res://assets/data/shot_session_3/shot_diff_analysis.carry.translation", "res://assets/data/shot_session_3/shot_diff_analysis.carry.translation", "res://assets/data/shot_session_3/shot_diff_analysis.carry.translation", "res://assets/data/shot_session_3/shot_diff_analysis.status.translation"] +files=["res://assets/data/shot_session_3/shot_diff_analysis.speed.translation", "res://assets/data/shot_session_3/shot_diff_analysis.vla.translation", "res://assets/data/shot_session_3/shot_diff_analysis.hla.translation", "res://assets/data/shot_session_3/shot_diff_analysis.total.translation", "res://assets/data/shot_session_3/shot_diff_analysis.spin.translation", "res://assets/data/shot_session_3/shot_diff_analysis.launch.translation", "res://assets/data/shot_session_3/shot_diff_analysis.carry.translation", "res://assets/data/shot_session_3/shot_diff_analysis.physics.translation", "res://assets/data/shot_session_3/shot_diff_analysis.flightscope.translation", "res://assets/data/shot_session_3/shot_diff_analysis.diff.translation", "res://assets/data/shot_session_3/shot_diff_analysis.physics.translation", "res://assets/data/shot_session_3/shot_diff_analysis.diff.translation", "res://assets/data/shot_session_3/shot_diff_analysis.physics.translation", "res://assets/data/shot_session_3/shot_diff_analysis.flightscope.translation", "res://assets/data/shot_session_3/shot_diff_analysis.diff.translation", "res://assets/data/shot_session_3/shot_diff_analysis.rollout.translation", "res://assets/data/shot_session_3/shot_diff_analysis.rollout.translation", "res://assets/data/shot_session_3/shot_diff_analysis.diff.translation", "res://assets/data/shot_session_3/shot_diff_analysis.physics.translation", "res://assets/data/shot_session_3/shot_diff_analysis.flightscope.translation", "res://assets/data/shot_session_3/shot_diff_analysis.diff.translation", "res://assets/data/shot_session_3/shot_diff_analysis.en.translation", "res://assets/data/shot_session_3/shot_diff_analysis.en.translation", "res://assets/data/shot_session_3/shot_diff_analysis.en.translation", "res://assets/data/shot_session_3/shot_diff_analysis.carry.translation", "res://assets/data/shot_session_3/shot_diff_analysis.status.translation"] source_file="res://assets/data/shot_session_3/shot_diff_analysis.csv" -dest_files=["res://assets/data/shot_session_3/shot_diff_analysis.speed.translation", "res://assets/data/shot_session_3/shot_diff_analysis.vla.translation", "res://assets/data/shot_session_3/shot_diff_analysis.hla.translation", "res://assets/data/shot_session_3/shot_diff_analysis.total.translation", "res://assets/data/shot_session_3/shot_diff_analysis.spin.translation", "res://assets/data/shot_session_3/shot_diff_analysis.physics.translation", "res://assets/data/shot_session_3/shot_diff_analysis.flightscope.translation", "res://assets/data/shot_session_3/shot_diff_analysis.diff.translation", "res://assets/data/shot_session_3/shot_diff_analysis.physics.translation", "res://assets/data/shot_session_3/shot_diff_analysis.diff.translation", "res://assets/data/shot_session_3/shot_diff_analysis.physics.translation", "res://assets/data/shot_session_3/shot_diff_analysis.flightscope.translation", "res://assets/data/shot_session_3/shot_diff_analysis.diff.translation", "res://assets/data/shot_session_3/shot_diff_analysis.rollout.translation", "res://assets/data/shot_session_3/shot_diff_analysis.rollout.translation", "res://assets/data/shot_session_3/shot_diff_analysis.diff.translation", "res://assets/data/shot_session_3/shot_diff_analysis.physics.translation", "res://assets/data/shot_session_3/shot_diff_analysis.flightscope.translation", "res://assets/data/shot_session_3/shot_diff_analysis.diff.translation", "res://assets/data/shot_session_3/shot_diff_analysis.carry.translation", "res://assets/data/shot_session_3/shot_diff_analysis.carry.translation", "res://assets/data/shot_session_3/shot_diff_analysis.carry.translation", "res://assets/data/shot_session_3/shot_diff_analysis.carry.translation", "res://assets/data/shot_session_3/shot_diff_analysis.status.translation"] +dest_files=["res://assets/data/shot_session_3/shot_diff_analysis.speed.translation", "res://assets/data/shot_session_3/shot_diff_analysis.vla.translation", "res://assets/data/shot_session_3/shot_diff_analysis.hla.translation", "res://assets/data/shot_session_3/shot_diff_analysis.total.translation", "res://assets/data/shot_session_3/shot_diff_analysis.spin.translation", "res://assets/data/shot_session_3/shot_diff_analysis.launch.translation", "res://assets/data/shot_session_3/shot_diff_analysis.carry.translation", "res://assets/data/shot_session_3/shot_diff_analysis.physics.translation", "res://assets/data/shot_session_3/shot_diff_analysis.flightscope.translation", "res://assets/data/shot_session_3/shot_diff_analysis.diff.translation", "res://assets/data/shot_session_3/shot_diff_analysis.physics.translation", "res://assets/data/shot_session_3/shot_diff_analysis.diff.translation", "res://assets/data/shot_session_3/shot_diff_analysis.physics.translation", "res://assets/data/shot_session_3/shot_diff_analysis.flightscope.translation", "res://assets/data/shot_session_3/shot_diff_analysis.diff.translation", "res://assets/data/shot_session_3/shot_diff_analysis.rollout.translation", "res://assets/data/shot_session_3/shot_diff_analysis.rollout.translation", "res://assets/data/shot_session_3/shot_diff_analysis.diff.translation", "res://assets/data/shot_session_3/shot_diff_analysis.physics.translation", "res://assets/data/shot_session_3/shot_diff_analysis.flightscope.translation", "res://assets/data/shot_session_3/shot_diff_analysis.diff.translation", "res://assets/data/shot_session_3/shot_diff_analysis.en.translation", "res://assets/data/shot_session_3/shot_diff_analysis.en.translation", "res://assets/data/shot_session_3/shot_diff_analysis.en.translation", "res://assets/data/shot_session_3/shot_diff_analysis.carry.translation", "res://assets/data/shot_session_3/shot_diff_analysis.status.translation"] [params] diff --git a/assets/data/shot_session_4/flightscope.csv b/assets/data/shot_session_4/flightscope.csv new file mode 100644 index 0000000..6971d9d --- /dev/null +++ b/assets/data/shot_session_4/flightscope.csv @@ -0,0 +1,53 @@ +shot_name,filename,speed_mph,vla_deg,hla_deg,total_spin_rpm,spin_axis_deg,backspin_rpm,sidespin_rpm,carry_yd,total_yd,rollout_yd,apex_ft +shot_3w_31,shot_3w_31.json,106.87,15.70,-2.35,3662.0,8.88,3618.1,565.0,150.3,158.8,8.5,53.7 +shot_3w_32,shot_3w_32.json,105.45,18.52,-1.38,5714.3,2.28,5709.8,227.6,146.0,148.8,2.8,71.9 +shot_3w_33,shot_3w_33.json,99.72,20.51,0.54,6997.1,1.55,6994.5,189.5,132.0,133.4,1.4,72.8 +shot_3w_34,shot_3w_34.json,114.64,15.34,2.39,3501.5,12.77,3414.9,773.8,166.6,175.4,8.8,60.3 +shot_3w_35,shot_3w_35.json,117.92,14.40,3.60,3735.1,13.26,3635.5,856.4,171.9,180.2,8.3,61.1 +shot_5i_25,shot_5i_25.json,89.08,16.71,1.13,5261.8,6.18,5231.2,566.6,110.8,116.1,5.3,40.1 +shot_5i_26,shot_5i_26.json,106.31,15.46,-3.63,4114.0,3.40,4106.7,244.1,148.7,155.9,7.2,54.5 +shot_5i_27,shot_5i_27.json,84.90,6.99,5.73,2262.9,30.00,1959.8,1131.5,55.3,92.1,36.8,5.8 +shot_5i_28,shot_5i_28.json,86.01,15.91,-1.64,4178.9,1.01,4178.3,73.4,103.1,114.6,11.5,32.2 +shot_5i_29,shot_5i_29.json,76.23,6.14,0.67,3695.3,0.00,3695.3,0.0,46.2,73.3,27.1,4.3 +shot_5i_30,shot_5i_30.json,96.81,18.19,0.71,6358.2,17.49,6064.2,1911.0,124.7,127.7,3.0,55.5 +shot_6i_19,shot_6i_19.json,85.61,14.70,2.87,4622.8,10.94,4538.9,877.1,98.9,110.8,11.9,28.6 +shot_6i_20,shot_6i_20.json,78.84,9.70,-0.74,4288.8,0.00,4288.8,0.0,69.4,89.6,20.2,11.5 +shot_6i_21,shot_6i_21.json,91.87,17.75,0.67,5966.8,11.46,5847.9,1185.3,116.4,120.1,3.7,47.6 +shot_6i_22,shot_6i_22.json,76.88,7.65,14.36,3780.1,30.00,3273.7,1890.1,50.8,78.8,28.0,6.0 +shot_6i_23,shot_6i_23.json,86.70,15.37,2.75,4195.9,11.91,4105.6,865.6,0.0,0.0,0.0,0.0 +shot_6i_24,shot_6i_24.json,90.75,14.84,2.98,5270.3,14.94,5092.1,1358.6,0.0,0.0,0.0,0.0 +shot_9i_12,shot_9i_12.json,66.18,1.43,13.95,3095.8,30.00,2681.0,1547.9,0.0,0.0,0.0,0.0 +shot_9i_13,shot_9i_13.json,73.08,12.51,11.29,4978.8,21.31,4638.4,1809.5,0.0,0.0,0.0,0.0 +shot_9i_14,shot_9i_14.json,87.13,22.10,0.34,5730.4,4.69,5711.2,468.2,111.2,113.9,2.7,55.8 +shot_9i_15,shot_9i_15.json,75.35,23.70,-1.27,6790.0,2.92,6781.2,346.1,87.7,89.3,1.6,43.9 +shot_9i_16,shot_9i_16.json,65.73,0.00,6.99,1782.9,30.00,1544.0,891.5,0.0,0.0,0.0,0.0 +shot_9i_17,shot_9i_17.json,79.41,14.92,16.37,4369.2,30.00,3783.8,2184.6,80.9,95.6,14.7,21.4 +shot_9i_18,shot_9i_18.json,74.62,23.60,2.52,6418.0,6.12,6381.4,684.4,86.6,88.8,2.2,42.3 +shot_lw_36,shot_lw_36.json,29.15,41.69,3.71,4205.1,0.00,4205.1,0.0,0.0,0.0,0.0,0.0 +shot_lw_37,shot_lw_37.json,42.76,36.37,5.46,5160.3,8.24,5107.0,739.5,0.0,0.0,0.0,0.0 +shot_lw_38,shot_lw_38.json,47.61,37.82,6.06,5608.6,5.60,5581.8,546.9,42.4,43.4,1.0,30.5 +shot_lw_39,shot_lw_39.json,15.19,29.00,1.86,3481.1,0.00,3481.1,0.0,0.0,0.0,0.0,0.0 +shot_lw_40,shot_lw_40.json,17.80,31.33,2.56,3617.2,0.00,3617.2,0.0,0.0,0.0,0.0,0.0 +shot_lw_41,shot_lw_41.json,23.82,25.81,0.34,3616.9,0.00,3616.9,0.0,0.0,0.0,0.0,0.0 +shot_lw_42,shot_lw_42.json,40.42,40.34,6.79,4336.8,12.64,4231.7,949.1,0.0,0.0,0.0,0.0 +shot_lw_43,shot_lw_43.json,37.53,21.80,7.56,3734.1,0.00,3734.1,0.0,0.0,0.0,0.0,0.0 +shot_lw_44,shot_lw_44.json,39.70,30.64,2.55,5258.6,0.00,5258.6,0.0,0.0,0.0,0.0,0.0 +shot_lw_45,shot_lw_45.json,31.72,32.10,1.83,4379.3,-2.83,4374.0,-216.6,0.0,0.0,0.0,0.0 +shot_lw_46,shot_lw_46.json,20.85,19.71,0.85,2793.0,0.00,2793.0,0.0,0.0,0.0,0.0,0.0 +shot_lw_50,shot_lw_50.json,18.51,47.07,6.77,4534.6,18.14,4309.3,1411.6,0.0,0.0,0.0,0.0 +shot_lw_51,shot_lw_51.json,32.18,29.45,9.63,5076.9,14.13,4923.3,1239.2,0.0,0.0,0.0,0.0 +shot_lw_52,shot_lw_52.json,31.04,52.00,-0.06,3964.7,15.12,3827.5,1033.9,0.0,0.0,0.0,0.0 +shot_pw_1,shot_pw_1.json,69.84,20.07,-0.58,3577.0,7.98,3542.3,496.5,74.8,83.7,8.9,26.2 +shot_pw_10,shot_pw_10.json,76.33,26.80,0.65,5988.6,4.90,5966.7,511.9,91.5,93.2,1.7,52.8 +shot_pw_11,shot_pw_11.json,76.26,27.35,-0.63,6296.3,5.22,6270.2,573.0,91.1,92.5,1.4,54.2 +shot_pw_2,shot_pw_2.json,53.25,24.98,0.23,4085.0,3.00,4079.4,213.9,48.5,56.0,7.5,20.2 +shot_pw_3,shot_pw_3.json,62.81,31.15,6.57,6128.8,6.31,6091.7,673.2,67.3,68.6,1.3,41.8 +shot_pw_4,shot_pw_4.json,40.09,4.84,16.41,2730.5,20.39,2559.4,951.4,0.0,0.0,0.0,0.0 +shot_pw_47,shot_pw_47.json,46.66,24.60,2.26,3699.1,0.00,3699.1,0.0,37.4,45.2,7.8,14.6 +shot_pw_48,shot_pw_48.json,46.55,25.52,3.83,4318.4,0.58,4318.2,43.5,37.9,44.5,6.6,15.6 +shot_pw_49,shot_pw_49.json,60.30,22.56,3.45,4043.8,4.96,4028.7,350.0,59.3,68.0,8.7,22.8 +shot_pw_5,shot_pw_5.json,28.68,9.00,7.19,2764.1,0.00,2764.1,0.0,0.0,0.0,0.0,0.0 +shot_pw_6,shot_pw_6.json,68.69,26.10,1.07,4148.8,8.23,4106.0,593.9,78.4,83.1,4.7,38.6 +shot_pw_7,shot_pw_7.json,76.85,25.20,3.72,6565.2,8.16,6498.7,931.8,91.1,92.6,1.5,49.5 +shot_pw_8,shot_pw_8.json,33.32,17.36,4.22,3183.4,0.00,3183.4,0.0,0.0,0.0,0.0,0.0 +shot_pw_9,shot_pw_9.json,76.60,28.64,4.92,7133.1,5.71,7097.7,709.7,0.0,0.0,0.0,0.0 diff --git a/assets/data/shot_session_4/flightscope.csv.import b/assets/data/shot_session_4/flightscope.csv.import new file mode 100644 index 0000000..f040f4e --- /dev/null +++ b/assets/data/shot_session_4/flightscope.csv.import @@ -0,0 +1,19 @@ +[remap] + +importer="csv_translation" +type="Translation" +uid="uid://c05ojmpw46mf0" + +[deps] + +files=["res://assets/data/shot_session_4/flightscope.filename.translation", "res://assets/data/shot_session_4/flightscope.speed.translation", "res://assets/data/shot_session_4/flightscope.vla.translation", "res://assets/data/shot_session_4/flightscope.hla.translation", "res://assets/data/shot_session_4/flightscope.total.translation", "res://assets/data/shot_session_4/flightscope.spin.translation", "res://assets/data/shot_session_4/flightscope.backspin.translation", "res://assets/data/shot_session_4/flightscope.sidespin.translation", "res://assets/data/shot_session_4/flightscope.carry.translation", "res://assets/data/shot_session_4/flightscope.total.translation", "res://assets/data/shot_session_4/flightscope.rollout.translation", "res://assets/data/shot_session_4/flightscope.apex.translation"] + +source_file="res://assets/data/shot_session_4/flightscope.csv" +dest_files=["res://assets/data/shot_session_4/flightscope.filename.translation", "res://assets/data/shot_session_4/flightscope.speed.translation", "res://assets/data/shot_session_4/flightscope.vla.translation", "res://assets/data/shot_session_4/flightscope.hla.translation", "res://assets/data/shot_session_4/flightscope.total.translation", "res://assets/data/shot_session_4/flightscope.spin.translation", "res://assets/data/shot_session_4/flightscope.backspin.translation", "res://assets/data/shot_session_4/flightscope.sidespin.translation", "res://assets/data/shot_session_4/flightscope.carry.translation", "res://assets/data/shot_session_4/flightscope.total.translation", "res://assets/data/shot_session_4/flightscope.rollout.translation", "res://assets/data/shot_session_4/flightscope.apex.translation"] + +[params] + +compress=1 +delimiter=0 +unescape_keys=false +unescape_translations=true diff --git a/assets/data/shot_session_4/flightscope_reference.json b/assets/data/shot_session_4/flightscope_reference.json new file mode 100644 index 0000000..86c587a --- /dev/null +++ b/assets/data/shot_session_4/flightscope_reference.json @@ -0,0 +1,462 @@ +{ + "shot_3w_31": { + "filename": "shot_3w_31.json", + "speed_mph": 106.87007141113281, + "vla_deg": 15.696219444274902, + "hla_deg": -2.3514275550842285, + "total_spin_rpm": 3661.97802734375, + "spin_axis_deg": 8.875988960266113, + "carry_yd": 150.3, + "roll_yd": 8.6, + "total_yd": 158.8, + "lateral_yd": 14.1, + "time_s": 4.8, + "apex_ft": 53.7 + }, + "shot_3w_32": { + "filename": "shot_3w_32.json", + "speed_mph": 105.44798278808594, + "vla_deg": 18.523700714111328, + "hla_deg": -1.3830540180206299, + "total_spin_rpm": 5714.34375, + "spin_axis_deg": 2.282492160797119, + "carry_yd": 146.0, + "roll_yd": 2.9, + "total_yd": 148.8, + "lateral_yd": 6.1, + "time_s": 5.4, + "apex_ft": 71.9 + }, + "shot_3w_33": { + "filename": "shot_3w_33.json", + "speed_mph": 99.71961212158203, + "vla_deg": 20.512962341308594, + "hla_deg": 0.5366247892379761, + "total_spin_rpm": 6997.06689453125, + "spin_axis_deg": 1.5523085594177246, + "carry_yd": 132.0, + "roll_yd": 1.3, + "total_yd": 133.4, + "lateral_yd": 2.8, + "time_s": 5.3, + "apex_ft": 72.8 + }, + "shot_3w_34": { + "filename": "shot_3w_34.json", + "speed_mph": 114.64269256591797, + "vla_deg": 15.343537330627441, + "hla_deg": 2.3896894454956055, + "total_spin_rpm": 3501.513427734375, + "spin_axis_deg": 12.76738166809082, + "carry_yd": 166.6, + "roll_yd": 8.8, + "total_yd": 175.4, + "lateral_yd": 20.0, + "time_s": 5.1, + "apex_ft": 60.3 + }, + "shot_3w_35": { + "filename": "shot_3w_35.json", + "speed_mph": 117.91869354248047, + "vla_deg": 14.403079986572266, + "hla_deg": 3.596027374267578, + "total_spin_rpm": 3735.05029296875, + "spin_axis_deg": 13.255024909973145, + "carry_yd": 171.9, + "roll_yd": 8.4, + "total_yd": 180.2, + "lateral_yd": 25.4, + "time_s": 5.2, + "apex_ft": 61.1 + }, + "shot_5i_25": { + "filename": "shot_5i_25.json", + "speed_mph": 89.0816421508789, + "vla_deg": 16.712512969970703, + "hla_deg": 1.1250039339065552, + "total_spin_rpm": 5261.822265625, + "spin_axis_deg": 6.181509017944336, + "carry_yd": 110.8, + "roll_yd": 5.3, + "total_yd": 116.1, + "lateral_yd": 5.9, + "time_s": 4.0, + "apex_ft": 40.1 + }, + "shot_5i_26": { + "filename": "shot_5i_26.json", + "speed_mph": 106.30802917480469, + "vla_deg": 15.46248722076416, + "hla_deg": -3.6300268173217773, + "total_spin_rpm": 4113.97412109375, + "spin_axis_deg": 3.401366949081421, + "carry_yd": 148.7, + "roll_yd": 7.1, + "total_yd": 155.9, + "lateral_yd": 12.5, + "time_s": 4.8, + "apex_ft": 54.5 + }, + "shot_5i_27": { + "filename": "shot_5i_27.json", + "speed_mph": 84.90103149414062, + "vla_deg": 6.988064765930176, + "hla_deg": 5.728759288787842, + "total_spin_rpm": 2262.935302734375, + "spin_axis_deg": 30, + "carry_yd": 55.3, + "roll_yd": 36.8, + "total_yd": 92.1, + "lateral_yd": 8.2, + "time_s": 1.5, + "apex_ft": 5.8 + }, + "shot_5i_28": { + "filename": "shot_5i_28.json", + "speed_mph": 86.0079116821289, + "vla_deg": 15.909771919250488, + "hla_deg": -1.642360806465149, + "total_spin_rpm": 4178.9423828125, + "spin_axis_deg": 1.0062899589538574, + "carry_yd": 103.1, + "roll_yd": 11.5, + "total_yd": 114.6, + "lateral_yd": 3.4, + "time_s": 3.6, + "apex_ft": 32.2 + }, + "shot_5i_29": { + "filename": "shot_5i_29.json", + "speed_mph": 76.23262023925781, + "vla_deg": 6.137054443359375, + "hla_deg": 0.6680475473403931, + "total_spin_rpm": 3695.345947265625, + "spin_axis_deg": 0, + "carry_yd": 46.2, + "roll_yd": 27.1, + "total_yd": 73.3, + "lateral_yd": 0.6, + "time_s": 1.4, + "apex_ft": 4.3 + }, + "shot_5i_30": { + "filename": "shot_5i_30.json", + "speed_mph": 96.81482696533203, + "vla_deg": 18.188323974609375, + "hla_deg": 0.7057520151138306, + "total_spin_rpm": 6358.1552734375, + "spin_axis_deg": 17.491016387939453, + "carry_yd": 124.7, + "roll_yd": 3.0, + "total_yd": 127.7, + "lateral_yd": 16.0, + "time_s": 4.7, + "apex_ft": 55.5 + }, + "shot_6i_19": { + "filename": "shot_6i_19.json", + "speed_mph": 85.61466979980469, + "vla_deg": 14.704109191894531, + "hla_deg": 2.86521577835083, + "total_spin_rpm": 4622.83251953125, + "spin_axis_deg": 10.93720531463623, + "carry_yd": 98.9, + "roll_yd": 12.0, + "total_yd": 110.8, + "lateral_yd": 9.9, + "time_s": 3.4, + "apex_ft": 28.6 + }, + "shot_6i_20": { + "filename": "shot_6i_20.json", + "speed_mph": 78.8414306640625, + "vla_deg": 9.696846961975098, + "hla_deg": -0.7441554665565491, + "total_spin_rpm": 4288.84033203125, + "spin_axis_deg": 0, + "carry_yd": 69.4, + "roll_yd": 20.3, + "total_yd": 89.6, + "lateral_yd": 0.8, + "time_s": 2.3, + "apex_ft": 11.5 + }, + "shot_6i_21": { + "filename": "shot_6i_21.json", + "speed_mph": 91.87206268310547, + "vla_deg": 17.748432159423828, + "hla_deg": 0.6693671345710754, + "total_spin_rpm": 5966.81298828125, + "spin_axis_deg": 11.457609176635742, + "carry_yd": 116.4, + "roll_yd": 3.7, + "total_yd": 120.1, + "lateral_yd": 9.6, + "time_s": 4.4, + "apex_ft": 47.6 + }, + "shot_6i_22": { + "filename": "shot_6i_22.json", + "speed_mph": 76.87886047363281, + "vla_deg": 7.652320861816406, + "hla_deg": 14.363093376159668, + "total_spin_rpm": 3780.129150390625, + "spin_axis_deg": 30.000001907348633, + "carry_yd": 50.8, + "roll_yd": 28.1, + "total_yd": 78.8, + "lateral_yd": 15.6, + "time_s": 1.6, + "apex_ft": 6.0 + }, + "shot_6i_23": { + "filename": "shot_6i_23.json", + "speed_mph": 86.70178985595703, + "vla_deg": 15.366101264953613, + "hla_deg": 2.7515037059783936, + "total_spin_rpm": 4195.89697265625, + "spin_axis_deg": 11.905055046081543, + "_status": "failed", + "_reason": "blocked_no_result_update" + }, + "shot_6i_24": { + "filename": "shot_6i_24.json", + "speed_mph": 90.75262451171875, + "vla_deg": 14.838003158569336, + "hla_deg": 2.9778048992156982, + "total_spin_rpm": 5270.267578125, + "spin_axis_deg": 14.938874244689941, + "_status": "failed", + "_reason": "blocked_no_result_update" + }, + "shot_9i_13": { + "filename": "shot_9i_13.json", + "speed_mph": 73.08172607421875, + "vla_deg": 12.50617790222168, + "hla_deg": 11.28537368774414, + "total_spin_rpm": 4978.82763671875, + "spin_axis_deg": 21.311983108520508, + "_status": "failed", + "_reason": "blocked_no_result_update" + }, + "shot_9i_14": { + "filename": "shot_9i_14.json", + "speed_mph": 87.12720489501953, + "vla_deg": 22.102890014648438, + "hla_deg": 0.3370228707790375, + "total_spin_rpm": 5730.39892578125, + "spin_axis_deg": 4.686331748962402, + "carry_yd": 111.2, + "roll_yd": 2.7, + "total_yd": 113.9, + "lateral_yd": 3.8, + "time_s": 4.6, + "apex_ft": 55.8 + }, + "shot_9i_15": { + "filename": "shot_9i_15.json", + "speed_mph": 75.34832763671875, + "vla_deg": 23.702733993530273, + "hla_deg": -1.2664518356323242, + "total_spin_rpm": 6790.0107421875, + "spin_axis_deg": 2.922011613845825, + "carry_yd": 87.7, + "roll_yd": 1.6, + "total_yd": 89.3, + "lateral_yd": 3.3, + "time_s": 4.0, + "apex_ft": 43.9 + }, + "shot_9i_17": { + "filename": "shot_9i_17.json", + "speed_mph": 79.40605163574219, + "vla_deg": 14.918102264404297, + "hla_deg": 16.37236976623535, + "total_spin_rpm": 4369.1787109375, + "spin_axis_deg": 30, + "carry_yd": 80.9, + "roll_yd": 14.8, + "total_yd": 95.6, + "lateral_yd": 31.0, + "time_s": 2.8, + "apex_ft": 21.4 + }, + "shot_9i_18": { + "filename": "shot_9i_18.json", + "speed_mph": 74.62457275390625, + "vla_deg": 23.596555709838867, + "hla_deg": 2.520951509475708, + "total_spin_rpm": 6417.95068359375, + "spin_axis_deg": 6.121354579925537, + "carry_yd": 86.6, + "roll_yd": 2.2, + "total_yd": 88.8, + "lateral_yd": 6.5, + "time_s": 3.9, + "apex_ft": 42.3 + }, + "shot_lw_38": { + "filename": "shot_lw_38.json", + "speed_mph": 47.605255126953125, + "vla_deg": 37.81819534301758, + "hla_deg": 6.062678813934326, + "total_spin_rpm": 5608.5654296875, + "spin_axis_deg": 5.595749855041504, + "carry_yd": 42.4, + "roll_yd": 1.0, + "total_yd": 43.4, + "lateral_yd": 5.2, + "time_s": 3.0, + "apex_ft": 30.5 + }, + "shot_pw_1": { + "filename": "shot_pw_1.json", + "speed_mph": 69.84241485595703, + "vla_deg": 20.06692886352539, + "hla_deg": -0.5776121616363525, + "total_spin_rpm": 3576.952880859375, + "spin_axis_deg": 7.978987216949463, + "carry_yd": 74.8, + "roll_yd": 8.9, + "total_yd": 83.7, + "lateral_yd": 2.8, + "time_s": 3.0, + "apex_ft": 26.2 + }, + "shot_pw_10": { + "filename": "shot_pw_10.json", + "speed_mph": 76.33145904541016, + "vla_deg": 26.80206298828125, + "hla_deg": 0.6494220495223999, + "total_spin_rpm": 5988.5712890625, + "spin_axis_deg": 4.903220176696777, + "carry_yd": 91.5, + "roll_yd": 1.7, + "total_yd": 93.2, + "lateral_yd": 3.4, + "time_s": 4.3, + "apex_ft": 52.8 + }, + "shot_pw_11": { + "filename": "shot_pw_11.json", + "speed_mph": 76.25743103027344, + "vla_deg": 27.34678840637207, + "hla_deg": -0.6321487426757812, + "total_spin_rpm": 6296.34033203125, + "spin_axis_deg": 5.221688747406006, + "carry_yd": 91.1, + "roll_yd": 1.4, + "total_yd": 92.5, + "lateral_yd": 3.6, + "time_s": 4.3, + "apex_ft": 54.2 + }, + "shot_pw_2": { + "filename": "shot_pw_2.json", + "speed_mph": 53.24530029296875, + "vla_deg": 24.975675582885742, + "hla_deg": 0.2284337431192398, + "total_spin_rpm": 4085.01708984375, + "spin_axis_deg": 3.0019383430480957, + "carry_yd": 48.5, + "roll_yd": 7.4, + "total_yd": 56.0, + "lateral_yd": 0.5, + "time_s": 2.5, + "apex_ft": 20.2 + }, + "shot_pw_3": { + "filename": "shot_pw_3.json", + "speed_mph": 62.81332778930664, + "vla_deg": 31.14988136291504, + "hla_deg": 6.572988033294678, + "total_spin_rpm": 6128.75341796875, + "spin_axis_deg": 6.306427955627441, + "carry_yd": 67.3, + "roll_yd": 1.3, + "total_yd": 68.6, + "lateral_yd": 9.5, + "time_s": 3.7, + "apex_ft": 41.8 + }, + "shot_pw_47": { + "filename": "shot_pw_47.json", + "speed_mph": 46.664215087890625, + "vla_deg": 24.60323143005371, + "hla_deg": 2.2612733840942383, + "total_spin_rpm": 3699.0830078125, + "spin_axis_deg": 0, + "carry_yd": 37.4, + "roll_yd": 7.8, + "total_yd": 45.2, + "lateral_yd": 1.5, + "time_s": 2.1, + "apex_ft": 14.6 + }, + "shot_pw_48": { + "filename": "shot_pw_48.json", + "speed_mph": 46.553585052490234, + "vla_deg": 25.522111892700195, + "hla_deg": 3.828127861022949, + "total_spin_rpm": 4318.443359375, + "spin_axis_deg": 0.5770735740661621, + "carry_yd": 37.9, + "roll_yd": 6.7, + "total_yd": 44.5, + "lateral_yd": 2.6, + "time_s": 2.2, + "apex_ft": 15.6 + }, + "shot_pw_49": { + "filename": "shot_pw_49.json", + "speed_mph": 60.2983283996582, + "vla_deg": 22.55554962158203, + "hla_deg": 3.4499943256378174, + "total_spin_rpm": 4043.842041015625, + "spin_axis_deg": 4.964601993560791, + "carry_yd": 59.3, + "roll_yd": 8.7, + "total_yd": 68.0, + "lateral_yd": 4.4, + "time_s": 2.8, + "apex_ft": 22.8 + }, + "shot_pw_6": { + "filename": "shot_pw_6.json", + "speed_mph": 68.69302368164062, + "vla_deg": 26.099424362182617, + "hla_deg": 1.07403564453125, + "total_spin_rpm": 4148.7509765625, + "spin_axis_deg": 8.230823516845703, + "carry_yd": 78.4, + "roll_yd": 4.7, + "total_yd": 83.1, + "lateral_yd": 4.1, + "time_s": 3.6, + "apex_ft": 38.6 + }, + "shot_pw_7": { + "filename": "shot_pw_7.json", + "speed_mph": 76.84967803955078, + "vla_deg": 25.203109741210938, + "hla_deg": 3.7163591384887695, + "total_spin_rpm": 6565.20849609375, + "spin_axis_deg": 8.159395217895508, + "carry_yd": 91.1, + "roll_yd": 1.5, + "total_yd": 92.6, + "lateral_yd": 10.0, + "time_s": 4.2, + "apex_ft": 49.5 + }, + "shot_pw_9": { + "filename": "shot_pw_9.json", + "speed_mph": 76.60264587402344, + "vla_deg": 28.642845153808594, + "hla_deg": 4.919938087463379, + "total_spin_rpm": 7133.119140625, + "spin_axis_deg": 5.7096943855285645, + "_status": "failed", + "_reason": "blocked_no_result_update" + } +} \ No newline at end of file diff --git a/assets/data/shot_session_4/history/iteration_001.json b/assets/data/shot_session_4/history/iteration_001.json new file mode 100644 index 0000000..be69ebf --- /dev/null +++ b/assets/data/shot_session_4/history/iteration_001.json @@ -0,0 +1,394 @@ +{ + "iteration": 1, + "timestamp": "2026-03-14T00:32:05.855840", + "profile_overrides": { + "DragScaleMultiplier": 1.01, + "Flight": { + "CdMin": 0.223, + "HighLaunchDragVlaStartDeg": 24.5, + "HighLaunchDragVlaFullDeg": 31.5, + "HighLaunchDragBoostMax": 1.24, + "SpinDragProgressiveCapSrStart": 0.33, + "SpinDragProgressiveCapSrEnd": 0.5, + "SpinDragProgressiveCapBoostMax": 0.25, + "HighReMidSpinGain": 16.0, + "MidSpinClBoostSrStart": 0.17, + "MidSpinClBoostSrEnd": 0.31, + "MidSpinClBoostMax": 0.5 + } + }, + "summary": { + "pass": 0, + "moderate": 0, + "severe": 0, + "no_reference": 52 + }, + "per_shot": { + "shot_3w_31": { + "diff_carry_yd": null, + "diff_total_yd": null, + "diff_apex_ft": null, + "status": "pass", + "error_pattern": null + }, + "shot_3w_32": { + "diff_carry_yd": null, + "diff_total_yd": null, + "diff_apex_ft": null, + "status": "pass", + "error_pattern": null + }, + "shot_3w_33": { + "diff_carry_yd": null, + "diff_total_yd": null, + "diff_apex_ft": null, + "status": "pass", + "error_pattern": null + }, + "shot_3w_34": { + "diff_carry_yd": null, + "diff_total_yd": null, + "diff_apex_ft": null, + "status": "pass", + "error_pattern": null + }, + "shot_3w_35": { + "diff_carry_yd": null, + "diff_total_yd": null, + "diff_apex_ft": null, + "status": "pass", + "error_pattern": null + }, + "shot_5i_25": { + "diff_carry_yd": null, + "diff_total_yd": null, + "diff_apex_ft": null, + "status": "pass", + "error_pattern": null + }, + "shot_5i_26": { + "diff_carry_yd": null, + "diff_total_yd": null, + "diff_apex_ft": null, + "status": "pass", + "error_pattern": null + }, + "shot_5i_27": { + "diff_carry_yd": null, + "diff_total_yd": null, + "diff_apex_ft": null, + "status": "pass", + "error_pattern": null + }, + "shot_5i_28": { + "diff_carry_yd": null, + "diff_total_yd": null, + "diff_apex_ft": null, + "status": "pass", + "error_pattern": null + }, + "shot_5i_29": { + "diff_carry_yd": null, + "diff_total_yd": null, + "diff_apex_ft": null, + "status": "pass", + "error_pattern": null + }, + "shot_5i_30": { + "diff_carry_yd": null, + "diff_total_yd": null, + "diff_apex_ft": null, + "status": "pass", + "error_pattern": null + }, + "shot_6i_19": { + "diff_carry_yd": null, + "diff_total_yd": null, + "diff_apex_ft": null, + "status": "pass", + "error_pattern": null + }, + "shot_6i_20": { + "diff_carry_yd": null, + "diff_total_yd": null, + "diff_apex_ft": null, + "status": "pass", + "error_pattern": null + }, + "shot_6i_21": { + "diff_carry_yd": null, + "diff_total_yd": null, + "diff_apex_ft": null, + "status": "pass", + "error_pattern": null + }, + "shot_6i_22": { + "diff_carry_yd": null, + "diff_total_yd": null, + "diff_apex_ft": null, + "status": "pass", + "error_pattern": null + }, + "shot_6i_23": { + "diff_carry_yd": null, + "diff_total_yd": null, + "diff_apex_ft": null, + "status": "pass", + "error_pattern": null + }, + "shot_6i_24": { + "diff_carry_yd": null, + "diff_total_yd": null, + "diff_apex_ft": null, + "status": "pass", + "error_pattern": null + }, + "shot_9i_12": { + "diff_carry_yd": null, + "diff_total_yd": null, + "diff_apex_ft": null, + "status": "pass", + "error_pattern": null + }, + "shot_9i_13": { + "diff_carry_yd": null, + "diff_total_yd": null, + "diff_apex_ft": null, + "status": "pass", + "error_pattern": null + }, + "shot_9i_14": { + "diff_carry_yd": null, + "diff_total_yd": null, + "diff_apex_ft": null, + "status": "pass", + "error_pattern": null + }, + "shot_9i_15": { + "diff_carry_yd": null, + "diff_total_yd": null, + "diff_apex_ft": null, + "status": "pass", + "error_pattern": null + }, + "shot_9i_16": { + "diff_carry_yd": null, + "diff_total_yd": null, + "diff_apex_ft": null, + "status": "pass", + "error_pattern": null + }, + "shot_9i_17": { + "diff_carry_yd": null, + "diff_total_yd": null, + "diff_apex_ft": null, + "status": "pass", + "error_pattern": null + }, + "shot_9i_18": { + "diff_carry_yd": null, + "diff_total_yd": null, + "diff_apex_ft": null, + "status": "pass", + "error_pattern": null + }, + "shot_lw_36": { + "diff_carry_yd": null, + "diff_total_yd": null, + "diff_apex_ft": null, + "status": "pass", + "error_pattern": null + }, + "shot_lw_37": { + "diff_carry_yd": null, + "diff_total_yd": null, + "diff_apex_ft": null, + "status": "pass", + "error_pattern": null + }, + "shot_lw_38": { + "diff_carry_yd": null, + "diff_total_yd": null, + "diff_apex_ft": null, + "status": "pass", + "error_pattern": null + }, + "shot_lw_39": { + "diff_carry_yd": null, + "diff_total_yd": null, + "diff_apex_ft": null, + "status": "pass", + "error_pattern": null + }, + "shot_lw_40": { + "diff_carry_yd": null, + "diff_total_yd": null, + "diff_apex_ft": null, + "status": "pass", + "error_pattern": null + }, + "shot_lw_41": { + "diff_carry_yd": null, + "diff_total_yd": null, + "diff_apex_ft": null, + "status": "pass", + "error_pattern": null + }, + "shot_lw_42": { + "diff_carry_yd": null, + "diff_total_yd": null, + "diff_apex_ft": null, + "status": "pass", + "error_pattern": null + }, + "shot_lw_43": { + "diff_carry_yd": null, + "diff_total_yd": null, + "diff_apex_ft": null, + "status": "pass", + "error_pattern": null + }, + "shot_lw_44": { + "diff_carry_yd": null, + "diff_total_yd": null, + "diff_apex_ft": null, + "status": "pass", + "error_pattern": null + }, + "shot_lw_45": { + "diff_carry_yd": null, + "diff_total_yd": null, + "diff_apex_ft": null, + "status": "pass", + "error_pattern": null + }, + "shot_lw_46": { + "diff_carry_yd": null, + "diff_total_yd": null, + "diff_apex_ft": null, + "status": "pass", + "error_pattern": null + }, + "shot_lw_50": { + "diff_carry_yd": null, + "diff_total_yd": null, + "diff_apex_ft": null, + "status": "pass", + "error_pattern": null + }, + "shot_lw_51": { + "diff_carry_yd": null, + "diff_total_yd": null, + "diff_apex_ft": null, + "status": "pass", + "error_pattern": null + }, + "shot_lw_52": { + "diff_carry_yd": null, + "diff_total_yd": null, + "diff_apex_ft": null, + "status": "pass", + "error_pattern": null + }, + "shot_pw_1": { + "diff_carry_yd": null, + "diff_total_yd": null, + "diff_apex_ft": null, + "status": "pass", + "error_pattern": null + }, + "shot_pw_10": { + "diff_carry_yd": null, + "diff_total_yd": null, + "diff_apex_ft": null, + "status": "pass", + "error_pattern": null + }, + "shot_pw_11": { + "diff_carry_yd": null, + "diff_total_yd": null, + "diff_apex_ft": null, + "status": "pass", + "error_pattern": null + }, + "shot_pw_2": { + "diff_carry_yd": null, + "diff_total_yd": null, + "diff_apex_ft": null, + "status": "pass", + "error_pattern": null + }, + "shot_pw_3": { + "diff_carry_yd": null, + "diff_total_yd": null, + "diff_apex_ft": null, + "status": "pass", + "error_pattern": null + }, + "shot_pw_4": { + "diff_carry_yd": null, + "diff_total_yd": null, + "diff_apex_ft": null, + "status": "pass", + "error_pattern": null + }, + "shot_pw_47": { + "diff_carry_yd": null, + "diff_total_yd": null, + "diff_apex_ft": null, + "status": "pass", + "error_pattern": null + }, + "shot_pw_48": { + "diff_carry_yd": null, + "diff_total_yd": null, + "diff_apex_ft": null, + "status": "pass", + "error_pattern": null + }, + "shot_pw_49": { + "diff_carry_yd": null, + "diff_total_yd": null, + "diff_apex_ft": null, + "status": "pass", + "error_pattern": null + }, + "shot_pw_5": { + "diff_carry_yd": null, + "diff_total_yd": null, + "diff_apex_ft": null, + "status": "pass", + "error_pattern": null + }, + "shot_pw_6": { + "diff_carry_yd": null, + "diff_total_yd": null, + "diff_apex_ft": null, + "status": "pass", + "error_pattern": null + }, + "shot_pw_7": { + "diff_carry_yd": null, + "diff_total_yd": null, + "diff_apex_ft": null, + "status": "pass", + "error_pattern": null + }, + "shot_pw_8": { + "diff_carry_yd": null, + "diff_total_yd": null, + "diff_apex_ft": null, + "status": "pass", + "error_pattern": null + }, + "shot_pw_9": { + "diff_carry_yd": null, + "diff_total_yd": null, + "diff_apex_ft": null, + "status": "pass", + "error_pattern": null + } + }, + "regressions": [], + "conflicts": [] +} diff --git a/assets/data/shot_session_4/history/iteration_002.json b/assets/data/shot_session_4/history/iteration_002.json new file mode 100644 index 0000000..a0b788a --- /dev/null +++ b/assets/data/shot_session_4/history/iteration_002.json @@ -0,0 +1,588 @@ +{ + "iteration": 2, + "timestamp": "2026-03-14T00:56:40.977538", + "profile_overrides": { + "DragScaleMultiplier": 1.01, + "Flight": { + "CdMin": 0.223, + "HighLaunchDragVlaStartDeg": 24.5, + "HighLaunchDragVlaFullDeg": 31.5, + "HighLaunchDragBoostMax": 1.24, + "SpinDragProgressiveCapSrStart": 0.33, + "SpinDragProgressiveCapSrEnd": 0.5, + "SpinDragProgressiveCapBoostMax": 0.25, + "HighReMidSpinGain": 16.0, + "MidSpinClBoostSrStart": 0.17, + "MidSpinClBoostSrEnd": 0.31, + "MidSpinClBoostMax": 0.5 + } + }, + "summary": { + "pass": 5, + "moderate": 12, + "severe": 13, + "no_reference": 22 + }, + "per_shot": { + "shot_3w_31": { + "diff_carry_yd": -0.1, + "diff_total_yd": -3.6, + "diff_apex_ft": -3.6, + "status": "pass", + "error_pattern": null + }, + "shot_3w_32": { + "diff_carry_yd": 1.5, + "diff_total_yd": 12.2, + "diff_apex_ft": 1.4, + "status": "severe", + "error_pattern": "ROLLOUT_TOO_LONG" + }, + "shot_3w_33": { + "diff_carry_yd": 5.7, + "diff_total_yd": 13.2, + "diff_apex_ft": -8.2, + "status": "severe", + "error_pattern": "CARRY_AND_ROLLOUT_LONG" + }, + "shot_3w_34": { + "diff_carry_yd": 3.6, + "diff_total_yd": 2.2, + "diff_apex_ft": -2.5, + "status": "moderate", + "error_pattern": "CARRY_TOO_LONG" + }, + "shot_3w_35": { + "diff_carry_yd": 4.5, + "diff_total_yd": 2.8, + "diff_apex_ft": -3.1, + "status": "moderate", + "error_pattern": "CARRY_TOO_LONG" + }, + "shot_5i_25": { + "diff_carry_yd": -9.2, + "diff_total_yd": -7.2, + "diff_apex_ft": -5.5, + "status": "severe", + "error_pattern": "CARRY_AND_ROLLOUT_SHORT" + }, + "shot_5i_26": { + "diff_carry_yd": 3.1, + "diff_total_yd": 5.0, + "diff_apex_ft": 2.9, + "status": "moderate", + "error_pattern": "CARRY_TOO_LONG" + }, + "shot_5i_27": { + "diff_carry_yd": -2.0, + "diff_total_yd": 10.8, + "diff_apex_ft": -0.2, + "status": "severe", + "error_pattern": "ROLLOUT_TOO_LONG" + }, + "shot_5i_28": { + "diff_carry_yd": -6.5, + "diff_total_yd": -6.9, + "diff_apex_ft": 5.0, + "status": "moderate", + "error_pattern": "CARRY_AND_ROLLOUT_SHORT" + }, + "shot_5i_29": { + "diff_carry_yd": 6.3, + "diff_total_yd": 13.8, + "diff_apex_ft": 1.0, + "status": "severe", + "error_pattern": "CARRY_AND_ROLLOUT_LONG" + }, + "shot_5i_30": { + "diff_carry_yd": 1.3, + "diff_total_yd": 4.1, + "diff_apex_ft": -7.1, + "status": "pass", + "error_pattern": null + }, + "shot_6i_19": { + "diff_carry_yd": -6.8, + "diff_total_yd": -11.5, + "diff_apex_ft": 0.2, + "status": "severe", + "error_pattern": "CARRY_AND_ROLLOUT_SHORT" + }, + "shot_6i_20": { + "diff_carry_yd": -0.1, + "diff_total_yd": 11.4, + "diff_apex_ft": 0.0, + "status": "severe", + "error_pattern": "ROLLOUT_TOO_LONG" + }, + "shot_6i_21": { + "diff_carry_yd": 0.9, + "diff_total_yd": -1.5, + "diff_apex_ft": -6.8, + "status": "pass", + "error_pattern": null + }, + "shot_6i_22": { + "diff_carry_yd": 4.5, + "diff_total_yd": 10.8, + "diff_apex_ft": 0.9, + "status": "severe", + "error_pattern": "CARRY_AND_ROLLOUT_LONG" + }, + "shot_6i_23": { + "diff_carry_yd": null, + "diff_total_yd": null, + "diff_apex_ft": null, + "status": "pass", + "error_pattern": null + }, + "shot_6i_24": { + "diff_carry_yd": null, + "diff_total_yd": null, + "diff_apex_ft": null, + "status": "pass", + "error_pattern": null + }, + "shot_9i_12": { + "diff_carry_yd": null, + "diff_total_yd": null, + "diff_apex_ft": null, + "status": "pass", + "error_pattern": null + }, + "shot_9i_13": { + "diff_carry_yd": null, + "diff_total_yd": null, + "diff_apex_ft": null, + "status": "pass", + "error_pattern": null + }, + "shot_9i_14": { + "diff_carry_yd": -3.6, + "diff_total_yd": 1.2, + "diff_apex_ft": -6.4, + "status": "moderate", + "error_pattern": "CARRY_TOO_SHORT" + }, + "shot_9i_15": { + "diff_carry_yd": -2.9, + "diff_total_yd": 10.8, + "diff_apex_ft": -3.7, + "status": "severe", + "error_pattern": "ROLLOUT_TOO_LONG" + }, + "shot_9i_16": { + "diff_carry_yd": null, + "diff_total_yd": null, + "diff_apex_ft": null, + "status": "pass", + "error_pattern": null + }, + "shot_9i_17": { + "diff_carry_yd": 3.0, + "diff_total_yd": -16.6, + "diff_apex_ft": -0.6, + "status": "severe", + "error_pattern": "ROLLOUT_TOO_SHORT" + }, + "shot_9i_18": { + "diff_carry_yd": -2.8, + "diff_total_yd": 8.7, + "diff_apex_ft": -3.5, + "status": "moderate", + "error_pattern": "ROLLOUT_TOO_LONG" + }, + "shot_lw_36": { + "diff_carry_yd": null, + "diff_total_yd": null, + "diff_apex_ft": null, + "status": "pass", + "error_pattern": null + }, + "shot_lw_37": { + "diff_carry_yd": null, + "diff_total_yd": null, + "diff_apex_ft": null, + "status": "pass", + "error_pattern": null + }, + "shot_lw_38": { + "diff_carry_yd": -5.7, + "diff_total_yd": 2.1, + "diff_apex_ft": -4.0, + "status": "moderate", + "error_pattern": "CARRY_TOO_SHORT" + }, + "shot_lw_39": { + "diff_carry_yd": null, + "diff_total_yd": null, + "diff_apex_ft": null, + "status": "pass", + "error_pattern": null + }, + "shot_lw_40": { + "diff_carry_yd": null, + "diff_total_yd": null, + "diff_apex_ft": null, + "status": "pass", + "error_pattern": null + }, + "shot_lw_41": { + "diff_carry_yd": null, + "diff_total_yd": null, + "diff_apex_ft": null, + "status": "pass", + "error_pattern": null + }, + "shot_lw_42": { + "diff_carry_yd": null, + "diff_total_yd": null, + "diff_apex_ft": null, + "status": "pass", + "error_pattern": null + }, + "shot_lw_43": { + "diff_carry_yd": null, + "diff_total_yd": null, + "diff_apex_ft": null, + "status": "pass", + "error_pattern": null + }, + "shot_lw_44": { + "diff_carry_yd": null, + "diff_total_yd": null, + "diff_apex_ft": null, + "status": "pass", + "error_pattern": null + }, + "shot_lw_45": { + "diff_carry_yd": null, + "diff_total_yd": null, + "diff_apex_ft": null, + "status": "pass", + "error_pattern": null + }, + "shot_lw_46": { + "diff_carry_yd": null, + "diff_total_yd": null, + "diff_apex_ft": null, + "status": "pass", + "error_pattern": null + }, + "shot_lw_50": { + "diff_carry_yd": null, + "diff_total_yd": null, + "diff_apex_ft": null, + "status": "pass", + "error_pattern": null + }, + "shot_lw_51": { + "diff_carry_yd": null, + "diff_total_yd": null, + "diff_apex_ft": null, + "status": "pass", + "error_pattern": null + }, + "shot_lw_52": { + "diff_carry_yd": null, + "diff_total_yd": null, + "diff_apex_ft": null, + "status": "pass", + "error_pattern": null + }, + "shot_pw_1": { + "diff_carry_yd": -7.7, + "diff_total_yd": -14.3, + "diff_apex_ft": -0.3, + "status": "severe", + "error_pattern": "CARRY_AND_ROLLOUT_SHORT" + }, + "shot_pw_10": { + "diff_carry_yd": -2.4, + "diff_total_yd": 0.4, + "diff_apex_ft": -4.2, + "status": "pass", + "error_pattern": null + }, + "shot_pw_11": { + "diff_carry_yd": -2.6, + "diff_total_yd": 0.4, + "diff_apex_ft": -3.8, + "status": "pass", + "error_pattern": null + }, + "shot_pw_2": { + "diff_carry_yd": -4.8, + "diff_total_yd": 4.3, + "diff_apex_ft": -1.6, + "status": "moderate", + "error_pattern": "CARRY_TOO_SHORT" + }, + "shot_pw_3": { + "diff_carry_yd": -6.9, + "diff_total_yd": 3.9, + "diff_apex_ft": -3.9, + "status": "moderate", + "error_pattern": "CARRY_TOO_SHORT" + }, + "shot_pw_4": { + "diff_carry_yd": null, + "diff_total_yd": null, + "diff_apex_ft": null, + "status": "pass", + "error_pattern": null + }, + "shot_pw_47": { + "diff_carry_yd": -3.9, + "diff_total_yd": 4.0, + "diff_apex_ft": -1.2, + "status": "moderate", + "error_pattern": "CARRY_TOO_SHORT" + }, + "shot_pw_48": { + "diff_carry_yd": -4.3, + "diff_total_yd": 2.7, + "diff_apex_ft": -1.3, + "status": "moderate", + "error_pattern": "CARRY_TOO_SHORT" + }, + "shot_pw_49": { + "diff_carry_yd": -6.2, + "diff_total_yd": 4.4, + "diff_apex_ft": -1.9, + "status": "moderate", + "error_pattern": "CARRY_TOO_SHORT" + }, + "shot_pw_5": { + "diff_carry_yd": null, + "diff_total_yd": null, + "diff_apex_ft": null, + "status": "pass", + "error_pattern": null + }, + "shot_pw_6": { + "diff_carry_yd": -8.2, + "diff_total_yd": 7.0, + "diff_apex_ft": -3.6, + "status": "severe", + "error_pattern": "CARRY_TOO_SHORT" + }, + "shot_pw_7": { + "diff_carry_yd": -2.0, + "diff_total_yd": 12.2, + "diff_apex_ft": -3.7, + "status": "severe", + "error_pattern": "ROLLOUT_TOO_LONG" + }, + "shot_pw_8": { + "diff_carry_yd": null, + "diff_total_yd": null, + "diff_apex_ft": null, + "status": "pass", + "error_pattern": null + }, + "shot_pw_9": { + "diff_carry_yd": null, + "diff_total_yd": null, + "diff_apex_ft": null, + "status": "pass", + "error_pattern": null + } + }, + "regressions": [ + { + "shot": "shot_3w_32", + "was": "pass", + "now": "severe", + "prev_total_diff": null, + "curr_total_diff": 12.2 + }, + { + "shot": "shot_3w_33", + "was": "pass", + "now": "severe", + "prev_total_diff": null, + "curr_total_diff": 13.2 + }, + { + "shot": "shot_3w_34", + "was": "pass", + "now": "moderate", + "prev_total_diff": null, + "curr_total_diff": 2.2 + }, + { + "shot": "shot_3w_35", + "was": "pass", + "now": "moderate", + "prev_total_diff": null, + "curr_total_diff": 2.8 + }, + { + "shot": "shot_5i_25", + "was": "pass", + "now": "severe", + "prev_total_diff": null, + "curr_total_diff": -7.2 + }, + { + "shot": "shot_5i_26", + "was": "pass", + "now": "moderate", + "prev_total_diff": null, + "curr_total_diff": 5.0 + }, + { + "shot": "shot_5i_27", + "was": "pass", + "now": "severe", + "prev_total_diff": null, + "curr_total_diff": 10.8 + }, + { + "shot": "shot_5i_28", + "was": "pass", + "now": "moderate", + "prev_total_diff": null, + "curr_total_diff": -6.9 + }, + { + "shot": "shot_5i_29", + "was": "pass", + "now": "severe", + "prev_total_diff": null, + "curr_total_diff": 13.8 + }, + { + "shot": "shot_6i_19", + "was": "pass", + "now": "severe", + "prev_total_diff": null, + "curr_total_diff": -11.5 + }, + { + "shot": "shot_6i_20", + "was": "pass", + "now": "severe", + "prev_total_diff": null, + "curr_total_diff": 11.4 + }, + { + "shot": "shot_6i_22", + "was": "pass", + "now": "severe", + "prev_total_diff": null, + "curr_total_diff": 10.8 + }, + { + "shot": "shot_9i_14", + "was": "pass", + "now": "moderate", + "prev_total_diff": null, + "curr_total_diff": 1.2 + }, + { + "shot": "shot_9i_15", + "was": "pass", + "now": "severe", + "prev_total_diff": null, + "curr_total_diff": 10.8 + }, + { + "shot": "shot_9i_17", + "was": "pass", + "now": "severe", + "prev_total_diff": null, + "curr_total_diff": -16.6 + }, + { + "shot": "shot_9i_18", + "was": "pass", + "now": "moderate", + "prev_total_diff": null, + "curr_total_diff": 8.7 + }, + { + "shot": "shot_lw_38", + "was": "pass", + "now": "moderate", + "prev_total_diff": null, + "curr_total_diff": 2.1 + }, + { + "shot": "shot_pw_1", + "was": "pass", + "now": "severe", + "prev_total_diff": null, + "curr_total_diff": -14.3 + }, + { + "shot": "shot_pw_2", + "was": "pass", + "now": "moderate", + "prev_total_diff": null, + "curr_total_diff": 4.3 + }, + { + "shot": "shot_pw_3", + "was": "pass", + "now": "moderate", + "prev_total_diff": null, + "curr_total_diff": 3.9 + }, + { + "shot": "shot_pw_47", + "was": "pass", + "now": "moderate", + "prev_total_diff": null, + "curr_total_diff": 4.0 + }, + { + "shot": "shot_pw_48", + "was": "pass", + "now": "moderate", + "prev_total_diff": null, + "curr_total_diff": 2.7 + }, + { + "shot": "shot_pw_49", + "was": "pass", + "now": "moderate", + "prev_total_diff": null, + "curr_total_diff": 4.4 + }, + { + "shot": "shot_pw_6", + "was": "pass", + "now": "severe", + "prev_total_diff": null, + "curr_total_diff": 7.0 + }, + { + "shot": "shot_pw_7", + "was": "pass", + "now": "severe", + "prev_total_diff": null, + "curr_total_diff": 12.2 + } + ], + "conflicts": [ + "Bounce.FlightTangentialRetentionBase", + "Bounce.FlightSpinFactorMin", + "Bounce.FlightSpinFactorDivisor", + "Rollout.MidSpinMultiplierMax", + "Rollout.HighSpinMultiplierMax", + "Rollout.FrictionBlendSpeed", + "KineticFrictionMultiplier", + "Bounce.RolloutHighSpinRetention", + "Flight.ClMaxBase", + "Flight.CdMin", + "DragScaleMultiplier", + "LiftScaleMultiplier", + "Bounce.CorBaseA", + "Rollout.LowSpinMultiplierMax", + "Rollout.LowSpinThreshold", + "RollingFrictionMultiplier", + "Bounce.RolloutLowSpinRetention" + ] +} diff --git a/assets/data/shot_session_4/history/iteration_003.json b/assets/data/shot_session_4/history/iteration_003.json new file mode 100644 index 0000000..625ce7d --- /dev/null +++ b/assets/data/shot_session_4/history/iteration_003.json @@ -0,0 +1,420 @@ +{ + "iteration": 3, + "timestamp": "2026-03-14T01:45:01.079843", + "profile_overrides": { + "DragScaleMultiplier": 1.01, + "Flight": { + "CdMin": 0.223, + "HighLaunchDragVlaStartDeg": 24.5, + "HighLaunchDragVlaFullDeg": 31.5, + "HighLaunchDragBoostMax": 1.24, + "SpinDragProgressiveCapSrStart": 0.33, + "SpinDragProgressiveCapSrEnd": 0.5, + "SpinDragProgressiveCapBoostMax": 0.25, + "HighReMidSpinGain": 16.0, + "MidSpinClBoostSrStart": 0.17, + "MidSpinClBoostSrEnd": 0.31, + "MidSpinClBoostMax": 0.5 + } + }, + "summary": { + "pass": 5, + "moderate": 13, + "severe": 12, + "no_reference": 22 + }, + "per_shot": { + "shot_3w_31": { + "diff_carry_yd": -0.1, + "diff_total_yd": -3.6, + "diff_apex_ft": -3.6, + "status": "pass", + "error_pattern": null + }, + "shot_3w_32": { + "diff_carry_yd": 5.5, + "diff_total_yd": 12.2, + "diff_apex_ft": 1.4, + "status": "severe", + "error_pattern": "CARRY_AND_ROLLOUT_LONG" + }, + "shot_3w_33": { + "diff_carry_yd": 9.2, + "diff_total_yd": 13.2, + "diff_apex_ft": -8.2, + "status": "severe", + "error_pattern": "CARRY_AND_ROLLOUT_LONG" + }, + "shot_3w_34": { + "diff_carry_yd": 3.6, + "diff_total_yd": 2.2, + "diff_apex_ft": -2.5, + "status": "moderate", + "error_pattern": "CARRY_TOO_LONG" + }, + "shot_3w_35": { + "diff_carry_yd": 4.5, + "diff_total_yd": 2.8, + "diff_apex_ft": -3.1, + "status": "moderate", + "error_pattern": "CARRY_TOO_LONG" + }, + "shot_5i_25": { + "diff_carry_yd": -2.9, + "diff_total_yd": -7.2, + "diff_apex_ft": -5.5, + "status": "moderate", + "error_pattern": "ROLLOUT_TOO_SHORT" + }, + "shot_5i_26": { + "diff_carry_yd": 3.1, + "diff_total_yd": 5.0, + "diff_apex_ft": 2.9, + "status": "moderate", + "error_pattern": "CARRY_TOO_LONG" + }, + "shot_5i_27": { + "diff_carry_yd": -2.0, + "diff_total_yd": 10.8, + "diff_apex_ft": -0.2, + "status": "severe", + "error_pattern": "ROLLOUT_TOO_LONG" + }, + "shot_5i_28": { + "diff_carry_yd": -0.2, + "diff_total_yd": -6.9, + "diff_apex_ft": 5.0, + "status": "moderate", + "error_pattern": "ROLLOUT_TOO_SHORT" + }, + "shot_5i_29": { + "diff_carry_yd": 6.3, + "diff_total_yd": 13.8, + "diff_apex_ft": 1.0, + "status": "severe", + "error_pattern": "CARRY_AND_ROLLOUT_LONG" + }, + "shot_5i_30": { + "diff_carry_yd": 4.8, + "diff_total_yd": 4.1, + "diff_apex_ft": -7.1, + "status": "moderate", + "error_pattern": "CARRY_TOO_LONG" + }, + "shot_6i_19": { + "diff_carry_yd": -0.5, + "diff_total_yd": -11.5, + "diff_apex_ft": 0.2, + "status": "severe", + "error_pattern": "ROLLOUT_TOO_SHORT" + }, + "shot_6i_20": { + "diff_carry_yd": -0.1, + "diff_total_yd": 11.4, + "diff_apex_ft": 0.0, + "status": "severe", + "error_pattern": "ROLLOUT_TOO_LONG" + }, + "shot_6i_21": { + "diff_carry_yd": 0.9, + "diff_total_yd": -1.5, + "diff_apex_ft": -6.8, + "status": "pass", + "error_pattern": null + }, + "shot_6i_22": { + "diff_carry_yd": 4.5, + "diff_total_yd": 10.8, + "diff_apex_ft": 0.9, + "status": "severe", + "error_pattern": "CARRY_AND_ROLLOUT_LONG" + }, + "shot_6i_23": { + "diff_carry_yd": null, + "diff_total_yd": null, + "diff_apex_ft": null, + "status": "pass", + "error_pattern": null + }, + "shot_6i_24": { + "diff_carry_yd": null, + "diff_total_yd": null, + "diff_apex_ft": null, + "status": "pass", + "error_pattern": null + }, + "shot_9i_12": { + "diff_carry_yd": null, + "diff_total_yd": null, + "diff_apex_ft": null, + "status": "pass", + "error_pattern": null + }, + "shot_9i_13": { + "diff_carry_yd": null, + "diff_total_yd": null, + "diff_apex_ft": null, + "status": "pass", + "error_pattern": null + }, + "shot_9i_14": { + "diff_carry_yd": -0.1, + "diff_total_yd": 1.2, + "diff_apex_ft": -6.4, + "status": "pass", + "error_pattern": null + }, + "shot_9i_15": { + "diff_carry_yd": -2.9, + "diff_total_yd": 10.8, + "diff_apex_ft": -3.7, + "status": "severe", + "error_pattern": "ROLLOUT_TOO_LONG" + }, + "shot_9i_16": { + "diff_carry_yd": null, + "diff_total_yd": null, + "diff_apex_ft": null, + "status": "pass", + "error_pattern": null + }, + "shot_9i_17": { + "diff_carry_yd": -2.0, + "diff_total_yd": -16.6, + "diff_apex_ft": -0.6, + "status": "severe", + "error_pattern": "ROLLOUT_TOO_SHORT" + }, + "shot_9i_18": { + "diff_carry_yd": -2.8, + "diff_total_yd": 8.7, + "diff_apex_ft": -3.5, + "status": "moderate", + "error_pattern": "ROLLOUT_TOO_LONG" + }, + "shot_lw_36": { + "diff_carry_yd": null, + "diff_total_yd": null, + "diff_apex_ft": null, + "status": "pass", + "error_pattern": null + }, + "shot_lw_37": { + "diff_carry_yd": null, + "diff_total_yd": null, + "diff_apex_ft": null, + "status": "pass", + "error_pattern": null + }, + "shot_lw_38": { + "diff_carry_yd": -5.7, + "diff_total_yd": 2.1, + "diff_apex_ft": -4.0, + "status": "moderate", + "error_pattern": "CARRY_TOO_SHORT" + }, + "shot_lw_39": { + "diff_carry_yd": null, + "diff_total_yd": null, + "diff_apex_ft": null, + "status": "pass", + "error_pattern": null + }, + "shot_lw_40": { + "diff_carry_yd": null, + "diff_total_yd": null, + "diff_apex_ft": null, + "status": "pass", + "error_pattern": null + }, + "shot_lw_41": { + "diff_carry_yd": null, + "diff_total_yd": null, + "diff_apex_ft": null, + "status": "pass", + "error_pattern": null + }, + "shot_lw_42": { + "diff_carry_yd": null, + "diff_total_yd": null, + "diff_apex_ft": null, + "status": "pass", + "error_pattern": null + }, + "shot_lw_43": { + "diff_carry_yd": null, + "diff_total_yd": null, + "diff_apex_ft": null, + "status": "pass", + "error_pattern": null + }, + "shot_lw_44": { + "diff_carry_yd": null, + "diff_total_yd": null, + "diff_apex_ft": null, + "status": "pass", + "error_pattern": null + }, + "shot_lw_45": { + "diff_carry_yd": null, + "diff_total_yd": null, + "diff_apex_ft": null, + "status": "pass", + "error_pattern": null + }, + "shot_lw_46": { + "diff_carry_yd": null, + "diff_total_yd": null, + "diff_apex_ft": null, + "status": "pass", + "error_pattern": null + }, + "shot_lw_50": { + "diff_carry_yd": null, + "diff_total_yd": null, + "diff_apex_ft": null, + "status": "pass", + "error_pattern": null + }, + "shot_lw_51": { + "diff_carry_yd": null, + "diff_total_yd": null, + "diff_apex_ft": null, + "status": "pass", + "error_pattern": null + }, + "shot_lw_52": { + "diff_carry_yd": null, + "diff_total_yd": null, + "diff_apex_ft": null, + "status": "pass", + "error_pattern": null + }, + "shot_pw_1": { + "diff_carry_yd": -7.7, + "diff_total_yd": -14.3, + "diff_apex_ft": -0.3, + "status": "severe", + "error_pattern": "CARRY_AND_ROLLOUT_SHORT" + }, + "shot_pw_10": { + "diff_carry_yd": -2.4, + "diff_total_yd": 0.4, + "diff_apex_ft": -4.2, + "status": "pass", + "error_pattern": null + }, + "shot_pw_11": { + "diff_carry_yd": -2.6, + "diff_total_yd": 0.4, + "diff_apex_ft": -3.8, + "status": "pass", + "error_pattern": null + }, + "shot_pw_2": { + "diff_carry_yd": -4.8, + "diff_total_yd": 4.3, + "diff_apex_ft": -1.6, + "status": "moderate", + "error_pattern": "CARRY_TOO_SHORT" + }, + "shot_pw_3": { + "diff_carry_yd": -6.9, + "diff_total_yd": 3.9, + "diff_apex_ft": -3.9, + "status": "moderate", + "error_pattern": "CARRY_TOO_SHORT" + }, + "shot_pw_4": { + "diff_carry_yd": null, + "diff_total_yd": null, + "diff_apex_ft": null, + "status": "pass", + "error_pattern": null + }, + "shot_pw_47": { + "diff_carry_yd": -3.9, + "diff_total_yd": 4.0, + "diff_apex_ft": -1.2, + "status": "moderate", + "error_pattern": "CARRY_TOO_SHORT" + }, + "shot_pw_48": { + "diff_carry_yd": -4.3, + "diff_total_yd": 2.7, + "diff_apex_ft": -1.3, + "status": "moderate", + "error_pattern": "CARRY_TOO_SHORT" + }, + "shot_pw_49": { + "diff_carry_yd": -6.2, + "diff_total_yd": 4.4, + "diff_apex_ft": -1.9, + "status": "moderate", + "error_pattern": "CARRY_TOO_SHORT" + }, + "shot_pw_5": { + "diff_carry_yd": null, + "diff_total_yd": null, + "diff_apex_ft": null, + "status": "pass", + "error_pattern": null + }, + "shot_pw_6": { + "diff_carry_yd": -8.2, + "diff_total_yd": 7.0, + "diff_apex_ft": -3.6, + "status": "severe", + "error_pattern": "CARRY_TOO_SHORT" + }, + "shot_pw_7": { + "diff_carry_yd": -2.0, + "diff_total_yd": 12.2, + "diff_apex_ft": -3.7, + "status": "severe", + "error_pattern": "ROLLOUT_TOO_LONG" + }, + "shot_pw_8": { + "diff_carry_yd": null, + "diff_total_yd": null, + "diff_apex_ft": null, + "status": "pass", + "error_pattern": null + }, + "shot_pw_9": { + "diff_carry_yd": null, + "diff_total_yd": null, + "diff_apex_ft": null, + "status": "pass", + "error_pattern": null + } + }, + "regressions": [ + { + "shot": "shot_5i_30", + "was": "pass", + "now": "moderate", + "prev_total_diff": 4.1, + "curr_total_diff": 4.1 + } + ], + "conflicts": [ + "Flight.ClMaxBase", + "Flight.CdMin", + "DragScaleMultiplier", + "LiftScaleMultiplier", + "Bounce.FlightTangentialRetentionBase", + "Bounce.FlightSpinFactorMin", + "Bounce.FlightSpinFactorDivisor", + "Rollout.HighSpinMultiplierMax", + "Rollout.FrictionBlendSpeed", + "KineticFrictionMultiplier", + "Bounce.RolloutHighSpinRetention", + "Bounce.CorBaseA", + "Rollout.LowSpinMultiplierMax", + "Rollout.LowSpinThreshold", + "RollingFrictionMultiplier", + "Bounce.RolloutLowSpinRetention", + "Flight.HighLaunchDragBoostMax" + ] +} diff --git a/assets/data/shot_session_4/history/iteration_004.json b/assets/data/shot_session_4/history/iteration_004.json new file mode 100644 index 0000000..733dca2 --- /dev/null +++ b/assets/data/shot_session_4/history/iteration_004.json @@ -0,0 +1,412 @@ +{ + "iteration": 4, + "timestamp": "2026-03-14T02:25:16.086503", + "profile_overrides": { + "DragScaleMultiplier": 1.01, + "Flight": { + "CdMin": 0.223, + "HighLaunchDragVlaStartDeg": 24.5, + "HighLaunchDragVlaFullDeg": 31.5, + "HighLaunchDragBoostMax": 1.24, + "SpinDragProgressiveCapSrStart": 0.33, + "SpinDragProgressiveCapSrEnd": 0.5, + "SpinDragProgressiveCapBoostMax": 0.25, + "HighReMidSpinGain": 16.0, + "MidSpinClBoostSrStart": 0.17, + "MidSpinClBoostSrEnd": 0.31, + "MidSpinClBoostMax": 0.5 + } + }, + "summary": { + "pass": 5, + "moderate": 13, + "severe": 12, + "no_reference": 22 + }, + "per_shot": { + "shot_3w_31": { + "diff_carry_yd": -0.1, + "diff_total_yd": -3.6, + "diff_apex_ft": -3.6, + "status": "pass", + "error_pattern": null + }, + "shot_3w_32": { + "diff_carry_yd": 5.5, + "diff_total_yd": 12.2, + "diff_apex_ft": 1.4, + "status": "severe", + "error_pattern": "CARRY_AND_ROLLOUT_LONG" + }, + "shot_3w_33": { + "diff_carry_yd": 9.2, + "diff_total_yd": 13.2, + "diff_apex_ft": -8.2, + "status": "severe", + "error_pattern": "CARRY_AND_ROLLOUT_LONG" + }, + "shot_3w_34": { + "diff_carry_yd": 3.6, + "diff_total_yd": 2.2, + "diff_apex_ft": -2.5, + "status": "moderate", + "error_pattern": "CARRY_TOO_LONG" + }, + "shot_3w_35": { + "diff_carry_yd": 4.5, + "diff_total_yd": 2.8, + "diff_apex_ft": -3.1, + "status": "moderate", + "error_pattern": "CARRY_TOO_LONG" + }, + "shot_5i_25": { + "diff_carry_yd": -2.9, + "diff_total_yd": -7.2, + "diff_apex_ft": -5.5, + "status": "moderate", + "error_pattern": "ROLLOUT_TOO_SHORT" + }, + "shot_5i_26": { + "diff_carry_yd": 3.1, + "diff_total_yd": 5.0, + "diff_apex_ft": 2.9, + "status": "moderate", + "error_pattern": "CARRY_TOO_LONG" + }, + "shot_5i_27": { + "diff_carry_yd": -2.0, + "diff_total_yd": 10.8, + "diff_apex_ft": -0.2, + "status": "severe", + "error_pattern": "ROLLOUT_TOO_LONG" + }, + "shot_5i_28": { + "diff_carry_yd": -0.2, + "diff_total_yd": -6.9, + "diff_apex_ft": 5.0, + "status": "moderate", + "error_pattern": "ROLLOUT_TOO_SHORT" + }, + "shot_5i_29": { + "diff_carry_yd": 6.3, + "diff_total_yd": 13.8, + "diff_apex_ft": 1.0, + "status": "severe", + "error_pattern": "CARRY_AND_ROLLOUT_LONG" + }, + "shot_5i_30": { + "diff_carry_yd": 4.8, + "diff_total_yd": 4.1, + "diff_apex_ft": -7.1, + "status": "moderate", + "error_pattern": "CARRY_TOO_LONG" + }, + "shot_6i_19": { + "diff_carry_yd": -0.5, + "diff_total_yd": -11.5, + "diff_apex_ft": 0.2, + "status": "severe", + "error_pattern": "ROLLOUT_TOO_SHORT" + }, + "shot_6i_20": { + "diff_carry_yd": -0.1, + "diff_total_yd": 11.4, + "diff_apex_ft": 0.0, + "status": "severe", + "error_pattern": "ROLLOUT_TOO_LONG" + }, + "shot_6i_21": { + "diff_carry_yd": 0.9, + "diff_total_yd": -1.5, + "diff_apex_ft": -6.8, + "status": "pass", + "error_pattern": null + }, + "shot_6i_22": { + "diff_carry_yd": 4.5, + "diff_total_yd": 10.8, + "diff_apex_ft": 0.9, + "status": "severe", + "error_pattern": "CARRY_AND_ROLLOUT_LONG" + }, + "shot_6i_23": { + "diff_carry_yd": null, + "diff_total_yd": null, + "diff_apex_ft": null, + "status": "pass", + "error_pattern": null + }, + "shot_6i_24": { + "diff_carry_yd": null, + "diff_total_yd": null, + "diff_apex_ft": null, + "status": "pass", + "error_pattern": null + }, + "shot_9i_12": { + "diff_carry_yd": null, + "diff_total_yd": null, + "diff_apex_ft": null, + "status": "pass", + "error_pattern": null + }, + "shot_9i_13": { + "diff_carry_yd": null, + "diff_total_yd": null, + "diff_apex_ft": null, + "status": "pass", + "error_pattern": null + }, + "shot_9i_14": { + "diff_carry_yd": -0.1, + "diff_total_yd": 1.2, + "diff_apex_ft": -6.4, + "status": "pass", + "error_pattern": null + }, + "shot_9i_15": { + "diff_carry_yd": -2.9, + "diff_total_yd": 10.8, + "diff_apex_ft": -3.7, + "status": "severe", + "error_pattern": "ROLLOUT_TOO_LONG" + }, + "shot_9i_16": { + "diff_carry_yd": null, + "diff_total_yd": null, + "diff_apex_ft": null, + "status": "pass", + "error_pattern": null + }, + "shot_9i_17": { + "diff_carry_yd": -2.0, + "diff_total_yd": -16.6, + "diff_apex_ft": -0.6, + "status": "severe", + "error_pattern": "ROLLOUT_TOO_SHORT" + }, + "shot_9i_18": { + "diff_carry_yd": -2.8, + "diff_total_yd": 8.7, + "diff_apex_ft": -3.5, + "status": "moderate", + "error_pattern": "ROLLOUT_TOO_LONG" + }, + "shot_lw_36": { + "diff_carry_yd": null, + "diff_total_yd": null, + "diff_apex_ft": null, + "status": "pass", + "error_pattern": null + }, + "shot_lw_37": { + "diff_carry_yd": null, + "diff_total_yd": null, + "diff_apex_ft": null, + "status": "pass", + "error_pattern": null + }, + "shot_lw_38": { + "diff_carry_yd": -5.7, + "diff_total_yd": 2.1, + "diff_apex_ft": -4.0, + "status": "moderate", + "error_pattern": "CARRY_TOO_SHORT" + }, + "shot_lw_39": { + "diff_carry_yd": null, + "diff_total_yd": null, + "diff_apex_ft": null, + "status": "pass", + "error_pattern": null + }, + "shot_lw_40": { + "diff_carry_yd": null, + "diff_total_yd": null, + "diff_apex_ft": null, + "status": "pass", + "error_pattern": null + }, + "shot_lw_41": { + "diff_carry_yd": null, + "diff_total_yd": null, + "diff_apex_ft": null, + "status": "pass", + "error_pattern": null + }, + "shot_lw_42": { + "diff_carry_yd": null, + "diff_total_yd": null, + "diff_apex_ft": null, + "status": "pass", + "error_pattern": null + }, + "shot_lw_43": { + "diff_carry_yd": null, + "diff_total_yd": null, + "diff_apex_ft": null, + "status": "pass", + "error_pattern": null + }, + "shot_lw_44": { + "diff_carry_yd": null, + "diff_total_yd": null, + "diff_apex_ft": null, + "status": "pass", + "error_pattern": null + }, + "shot_lw_45": { + "diff_carry_yd": null, + "diff_total_yd": null, + "diff_apex_ft": null, + "status": "pass", + "error_pattern": null + }, + "shot_lw_46": { + "diff_carry_yd": null, + "diff_total_yd": null, + "diff_apex_ft": null, + "status": "pass", + "error_pattern": null + }, + "shot_lw_50": { + "diff_carry_yd": null, + "diff_total_yd": null, + "diff_apex_ft": null, + "status": "pass", + "error_pattern": null + }, + "shot_lw_51": { + "diff_carry_yd": null, + "diff_total_yd": null, + "diff_apex_ft": null, + "status": "pass", + "error_pattern": null + }, + "shot_lw_52": { + "diff_carry_yd": null, + "diff_total_yd": null, + "diff_apex_ft": null, + "status": "pass", + "error_pattern": null + }, + "shot_pw_1": { + "diff_carry_yd": -7.7, + "diff_total_yd": -14.3, + "diff_apex_ft": -0.3, + "status": "severe", + "error_pattern": "CARRY_AND_ROLLOUT_SHORT" + }, + "shot_pw_10": { + "diff_carry_yd": -2.4, + "diff_total_yd": 0.4, + "diff_apex_ft": -4.2, + "status": "pass", + "error_pattern": null + }, + "shot_pw_11": { + "diff_carry_yd": -2.6, + "diff_total_yd": 0.4, + "diff_apex_ft": -3.8, + "status": "pass", + "error_pattern": null + }, + "shot_pw_2": { + "diff_carry_yd": -4.8, + "diff_total_yd": 4.3, + "diff_apex_ft": -1.6, + "status": "moderate", + "error_pattern": "CARRY_TOO_SHORT" + }, + "shot_pw_3": { + "diff_carry_yd": -6.9, + "diff_total_yd": 3.9, + "diff_apex_ft": -3.9, + "status": "moderate", + "error_pattern": "CARRY_TOO_SHORT" + }, + "shot_pw_4": { + "diff_carry_yd": null, + "diff_total_yd": null, + "diff_apex_ft": null, + "status": "pass", + "error_pattern": null + }, + "shot_pw_47": { + "diff_carry_yd": -3.9, + "diff_total_yd": 4.0, + "diff_apex_ft": -1.2, + "status": "moderate", + "error_pattern": "CARRY_TOO_SHORT" + }, + "shot_pw_48": { + "diff_carry_yd": -4.3, + "diff_total_yd": 2.7, + "diff_apex_ft": -1.3, + "status": "moderate", + "error_pattern": "CARRY_TOO_SHORT" + }, + "shot_pw_49": { + "diff_carry_yd": -6.2, + "diff_total_yd": 4.4, + "diff_apex_ft": -1.9, + "status": "moderate", + "error_pattern": "CARRY_TOO_SHORT" + }, + "shot_pw_5": { + "diff_carry_yd": null, + "diff_total_yd": null, + "diff_apex_ft": null, + "status": "pass", + "error_pattern": null + }, + "shot_pw_6": { + "diff_carry_yd": -8.2, + "diff_total_yd": 7.0, + "diff_apex_ft": -3.6, + "status": "severe", + "error_pattern": "CARRY_TOO_SHORT" + }, + "shot_pw_7": { + "diff_carry_yd": -2.0, + "diff_total_yd": 12.2, + "diff_apex_ft": -3.7, + "status": "severe", + "error_pattern": "ROLLOUT_TOO_LONG" + }, + "shot_pw_8": { + "diff_carry_yd": null, + "diff_total_yd": null, + "diff_apex_ft": null, + "status": "pass", + "error_pattern": null + }, + "shot_pw_9": { + "diff_carry_yd": null, + "diff_total_yd": null, + "diff_apex_ft": null, + "status": "pass", + "error_pattern": null + } + }, + "regressions": [], + "conflicts": [ + "Flight.ClMaxBase", + "Flight.CdMin", + "DragScaleMultiplier", + "LiftScaleMultiplier", + "Bounce.FlightTangentialRetentionBase", + "Bounce.FlightSpinFactorMin", + "Bounce.FlightSpinFactorDivisor", + "Rollout.HighSpinMultiplierMax", + "Rollout.FrictionBlendSpeed", + "KineticFrictionMultiplier", + "Bounce.RolloutHighSpinRetention", + "Bounce.CorBaseA", + "Rollout.LowSpinMultiplierMax", + "Rollout.LowSpinThreshold", + "RollingFrictionMultiplier", + "Bounce.RolloutLowSpinRetention", + "Flight.HighLaunchDragBoostMax" + ] +} diff --git a/assets/data/shot_session_4/physics.csv b/assets/data/shot_session_4/physics.csv new file mode 100644 index 0000000..13a31f0 --- /dev/null +++ b/assets/data/shot_session_4/physics.csv @@ -0,0 +1,53 @@ +shot_name,filename,speed_mph,vla_deg,hla_deg,total_spin_rpm,spin_axis_deg,backspin_rpm,sidespin_rpm,carry_yd,total_yd,rollout_yd,apex_ft,hang_time_s,landing_speed_mps,landing_angle_deg,initial_re,initial_spin_ratio,initial_cd,initial_cl,peak_cl,carry_only_yd +shot_3w_31,shot_3w_31.json,106.87,15.70,-2.35,3662.0,8.88,3618.1,565.0,150.2,155.2,5.0,50.1,4.38,26.18,32.87,130789.1,0.171252,0.210355,0.196436,0.200255,150.2 +shot_3w_32,shot_3w_32.json,105.45,18.52,-1.38,5714.3,2.28,5709.8,227.6,151.5,161.0,9.5,73.3,5.15,24.05,47.77,129048.7,0.270835,0.225641,0.285043,0.285043,151.5 +shot_3w_33,shot_3w_33.json,99.72,20.51,0.54,6997.1,1.55,6994.5,189.5,141.2,146.6,5.4,64.6,4.91,23.18,42.08,122038.2,0.350680,0.228092,0.227464,0.275632,141.2 +shot_3w_34,shot_3w_34.json,114.64,15.34,2.39,3501.5,12.77,3414.9,773.8,170.2,177.6,7.4,57.8,4.77,27.04,33.29,140301.3,0.152646,0.209194,0.190146,0.191892,170.2 +shot_3w_35,shot_3w_35.json,117.92,14.40,3.60,3735.1,13.26,3635.5,856.4,176.4,183.0,6.6,58.0,4.84,27.21,32.56,144310.5,0.158303,0.212688,0.192141,0.194001,176.4 +shot_5i_25,shot_5i_25.json,89.08,16.71,1.13,5261.8,6.18,5231.2,566.6,107.9,108.9,1.0,34.6,3.60,23.08,30.58,109019.3,0.295205,0.236399,0.234521,0.273054,107.9 +shot_5i_26,shot_5i_26.json,106.31,15.46,-3.63,4114.0,3.40,4106.7,244.1,151.8,160.9,9.1,57.4,4.68,25.10,39.73,130101.2,0.193407,0.216315,0.230481,0.255329,151.8 +shot_5i_27,shot_5i_27.json,84.90,6.99,5.73,2262.9,30.00,1959.8,1131.5,53.3,102.9,49.6,5.6,1.45,30.54,8.85,103903.1,0.133209,0.218300,0.193948,0.193948,53.3 +shot_5i_28,shot_5i_28.json,86.01,15.91,-1.64,4178.9,1.01,4178.3,73.4,102.9,107.7,4.8,37.2,3.63,22.47,36.73,105257.7,0.242831,0.242165,0.319320,0.319320,102.9 +shot_5i_29,shot_5i_29.json,76.23,6.14,0.67,3695.3,-0.00,3695.3,-0.0,52.5,87.1,34.6,5.3,1.64,25.70,9.42,93294.5,0.242265,0.270941,0.319309,0.319310,52.5 +shot_5i_30,shot_5i_30.json,96.81,18.19,0.71,6358.2,17.49,6064.2,1911.0,129.5,131.8,2.2,48.4,4.28,23.48,34.86,118483.3,0.328220,0.227634,0.225130,0.268812,129.5 +shot_6i_19,shot_6i_19.json,85.61,14.70,2.87,4622.8,10.94,4538.9,877.1,98.4,99.3,1.0,28.8,3.32,22.89,29.41,104776.4,0.269858,0.243007,0.287102,0.287102,98.4 +shot_6i_20,shot_6i_20.json,78.84,9.70,-0.74,4288.8,-0.00,4288.8,-0.0,69.3,101.0,31.6,11.5,2.23,24.22,15.61,96487.2,0.271870,0.261574,0.282824,0.293463,69.3 +shot_6i_21,shot_6i_21.json,91.87,17.75,0.67,5966.8,11.46,5847.9,1185.3,117.3,118.6,1.3,40.8,3.93,23.10,32.56,112434.3,0.324590,0.232345,0.224728,0.268222,117.3 +shot_6i_22,shot_6i_22.json,76.88,7.65,14.36,3780.1,30.00,3273.7,1890.1,55.3,89.6,34.3,6.9,1.74,25.52,11.28,94085.4,0.245740,0.268499,0.318880,0.319321,55.3 +shot_6i_23,shot_6i_23.json,86.70,15.37,2.75,4195.9,11.91,4105.6,865.6,103.5,107.2,3.7,35.9,3.60,22.64,35.43,106106.9,0.241865,0.240738,0.319281,0.319321,103.5 +shot_6i_24,shot_6i_24.json,90.75,14.84,2.98,5270.3,14.94,5092.1,1358.6,107.9,108.2,0.3,30.6,3.45,23.78,27.04,111064.3,0.290235,0.233842,0.243109,0.272754,107.9 +shot_9i_12,shot_9i_12.json,66.18,1.43,13.95,3095.8,30.00,2681.0,1547.9,8.9,50.0,41.0,0.2,0.28,28.15,1.73,80989.7,0.233795,0.320296,0.315343,0.315343,8.9 +shot_9i_13,shot_9i_13.json,73.08,12.51,11.29,4978.8,21.31,4638.4,1809.5,59.5,57.1,-2.3,11.6,2.05,23.22,16.83,89438.4,0.340482,0.279513,0.226435,0.268000,59.5 +shot_9i_14,shot_9i_14.json,87.13,22.10,0.34,5730.4,4.69,5711.2,468.2,111.1,115.1,4.0,49.4,4.15,22.06,40.45,106627.5,0.328706,0.239900,0.225184,0.268675,111.1 +shot_9i_15,shot_9i_15.json,75.35,23.70,-1.27,6790.0,2.92,6781.2,346.1,84.8,100.1,15.2,40.2,3.67,19.73,39.57,92212.3,0.450373,0.285876,0.269316,0.311338,84.8 +shot_9i_16,shot_9i_16.json,65.73,0.00,6.99,1782.9,30.00,1544.0,891.5,2.4,53.8,51.4,0.1,0.08,29.05,1.07,80445.6,0.135555,0.288957,0.183428,0.183428,2.4 +shot_9i_17,shot_9i_17.json,79.41,14.92,16.37,4369.2,30.00,3783.8,2184.6,78.9,79.0,0.1,20.8,2.72,22.92,24.61,97178.2,0.274993,0.259717,0.275963,0.280731,78.9 +shot_9i_18,shot_9i_18.json,74.62,23.60,2.52,6418.0,6.12,6381.4,684.4,83.8,97.5,13.7,38.8,3.62,19.74,39.06,91326.6,0.429824,0.282622,0.258864,0.311339,83.8 +shot_lw_36,shot_lw_36.json,29.15,41.69,3.71,4205.1,0.00,4205.1,0.0,16.5,23.2,6.6,11.7,1.71,11.47,45.13,35677.9,0.720888,0.605825,0.054651,0.054651,16.5 +shot_lw_37,shot_lw_37.json,42.76,36.37,5.46,5160.3,8.24,5107.0,739.5,30.6,39.4,8.7,20.0,2.25,14.75,44.01,52327.2,0.603165,0.641771,0.287640,0.287640,30.6 +shot_lw_38,shot_lw_38.json,47.61,37.82,6.06,5608.6,5.60,5581.8,546.9,36.7,45.5,8.8,26.5,2.60,15.73,47.32,58260.0,0.588807,0.560541,0.287946,0.287946,36.7 +shot_lw_39,shot_lw_39.json,15.19,29.00,1.86,3481.1,-0.00,3481.1,-0.0,4.2,7.5,3.3,1.8,0.67,6.56,29.70,18585.1,1.145635,0.543345,0.000000,0.000000,4.2 +shot_lw_40,shot_lw_40.json,17.80,31.33,2.56,3617.2,-0.00,3617.2,-0.0,6.0,10.0,4.0,2.8,0.83,7.56,32.33,21785.7,1.015514,0.575650,0.000000,0.000000,6.0 +shot_lw_41,shot_lw_41.json,23.82,25.81,0.34,3616.9,-0.00,3616.9,-0.0,9.4,16.7,7.3,3.5,0.93,9.95,27.05,29156.6,0.758739,0.474923,0.000000,0.000000,9.4 +shot_lw_42,shot_lw_42.json,40.42,40.34,6.79,4336.8,12.64,4231.7,949.1,28.6,38.0,9.4,21.1,2.30,14.50,47.19,49471.8,0.536170,0.611001,0.289071,0.289071,28.6 +shot_lw_43,shot_lw_43.json,37.53,21.80,7.56,3734.1,-0.00,3734.1,-0.0,20.2,33.8,13.6,6.6,1.32,14.17,25.18,45932.8,0.497229,0.587199,0.272538,0.272538,20.2 +shot_lw_44,shot_lw_44.json,39.70,30.64,2.55,5258.6,0.00,5258.6,0.0,25.8,34.2,8.4,13.1,1.83,14.07,36.55,48582.7,0.662029,0.704274,0.280105,0.280105,25.8 +shot_lw_45,shot_lw_45.json,31.72,32.10,1.83,4379.3,-2.83,4374.0,-216.6,17.7,26.0,8.3,8.9,1.49,12.20,35.55,38819.4,0.690002,0.639667,0.116035,0.116035,17.7 +shot_lw_46,shot_lw_46.json,20.85,19.71,0.85,2793.0,0.00,2793.0,0.0,6.0,13.6,7.6,1.6,0.64,8.92,20.69,25514.2,0.669540,0.477924,0.000000,0.000000,6.0 +shot_lw_50,shot_lw_50.json,18.51,47.07,6.77,4534.6,18.14,4309.3,1411.6,7.2,9.7,2.5,5.9,1.22,7.85,48.60,22650.9,1.224469,0.575854,0.000000,0.000000,7.2 +shot_lw_51,shot_lw_51.json,32.18,29.45,9.63,5076.9,14.13,4923.3,1239.2,17.6,24.8,7.2,7.9,1.41,12.42,32.64,39380.4,0.788517,0.607679,0.123829,0.123829,17.6 +shot_lw_52,shot_lw_52.json,31.04,52.00,-0.06,3964.7,15.12,3827.5,1033.9,17.8,23.4,5.6,18.2,2.13,12.21,55.77,37992.3,0.638273,0.617959,0.100489,0.100489,17.8 +shot_pw_1,shot_pw_1.json,69.84,20.07,-0.58,3577.0,7.98,3542.3,496.5,67.1,69.4,2.3,25.9,2.76,20.37,33.80,85474.1,0.255959,0.299725,0.310942,0.310942,67.1 +shot_pw_10,shot_pw_10.json,76.33,26.80,0.65,5988.6,4.90,5966.7,511.9,89.1,93.6,4.5,48.6,3.98,20.14,45.06,93415.5,0.392099,0.270413,0.239770,0.310365,89.1 +shot_pw_11,shot_pw_11.json,76.26,27.35,-0.63,6296.3,5.22,6270.2,573.0,88.5,92.9,4.3,50.4,4.04,20.04,45.87,93324.9,0.412650,0.274916,0.249801,0.311339,88.5 +shot_pw_2,shot_pw_2.json,53.25,24.98,0.23,4085.0,3.00,4079.4,213.9,43.7,60.3,16.6,18.6,2.33,17.05,33.82,65162.3,0.383432,0.414040,0.274598,0.294508,43.7 +shot_pw_3,shot_pw_3.json,62.81,31.15,6.57,6128.8,6.31,6091.7,673.2,60.4,72.5,12.1,37.9,3.29,18.12,45.42,76871.8,0.487637,0.363744,0.274657,0.306075,60.4 +shot_pw_4,shot_pw_4.json,40.09,4.84,16.41,2730.5,20.39,2559.4,951.4,6.3,31.1,24.8,0.4,0.33,16.92,5.43,49067.0,0.340369,0.551817,0.094652,0.094833,6.3 +shot_pw_47,shot_pw_47.json,46.66,24.60,2.26,3699.1,-0.00,3699.1,-0.0,33.5,49.2,15.7,13.4,1.93,15.97,31.20,57108.3,0.396174,0.485209,0.279749,0.292350,33.5 +shot_pw_48,shot_pw_48.json,46.55,25.52,3.83,4318.4,0.58,4318.2,43.5,33.6,47.2,13.6,14.3,1.98,15.78,32.50,56972.9,0.463607,0.512666,0.310725,0.311339,33.6 +shot_pw_49,shot_pw_49.json,60.30,22.56,3.45,4043.8,4.96,4028.7,350.0,53.1,72.4,19.3,20.9,2.49,18.41,33.43,73793.9,0.335170,0.355247,0.246997,0.269939,53.1 +shot_pw_5,shot_pw_5.json,28.68,9.00,7.19,2764.1,-0.00,2764.1,-0.0,5.6,18.5,12.9,0.7,0.42,12.25,9.61,35102.0,0.481631,0.505463,0.050281,0.050281,5.6 +shot_pw_6,shot_pw_6.json,68.69,26.10,1.07,4148.8,8.23,4106.0,593.9,70.2,90.1,20.0,35.0,3.20,19.54,41.68,84067.5,0.301843,0.305830,0.226331,0.268000,70.2 +shot_pw_7,shot_pw_7.json,76.85,25.20,3.72,6565.2,8.16,6498.7,931.8,89.1,104.8,15.7,45.8,3.91,20.00,42.56,94049.7,0.426955,0.277759,0.257345,0.311339,89.1 +shot_pw_8,shot_pw_8.json,33.32,17.36,4.22,3183.4,-0.00,3183.4,-0.0,13.5,27.2,13.7,3.3,0.93,13.32,19.10,40777.8,0.477478,0.546180,0.173590,0.173590,13.5 +shot_pw_9,shot_pw_9.json,76.60,28.64,4.92,7133.1,5.71,7097.7,709.7,87.4,100.9,13.6,54.0,4.12,19.97,47.08,93747.4,0.465384,0.288027,0.274333,0.305649,87.4 diff --git a/assets/data/shot_session_4/physics.csv.import b/assets/data/shot_session_4/physics.csv.import new file mode 100644 index 0000000..1be79ea --- /dev/null +++ b/assets/data/shot_session_4/physics.csv.import @@ -0,0 +1,19 @@ +[remap] + +importer="csv_translation" +type="Translation" +uid="uid://bo0mcdscsxcnu" + +[deps] + +files=["res://assets/data/shot_session_4/physics.filename.translation", "res://assets/data/shot_session_4/physics.speed.translation", "res://assets/data/shot_session_4/physics.vla.translation", "res://assets/data/shot_session_4/physics.hla.translation", "res://assets/data/shot_session_4/physics.total.translation", "res://assets/data/shot_session_4/physics.spin.translation", "res://assets/data/shot_session_4/physics.backspin.translation", "res://assets/data/shot_session_4/physics.sidespin.translation", "res://assets/data/shot_session_4/physics.carry.translation", "res://assets/data/shot_session_4/physics.total.translation", "res://assets/data/shot_session_4/physics.rollout.translation", "res://assets/data/shot_session_4/physics.apex.translation", "res://assets/data/shot_session_4/physics.hang.translation", "res://assets/data/shot_session_4/physics.landing.translation", "res://assets/data/shot_session_4/physics.landing.translation", "res://assets/data/shot_session_4/physics.initial.translation", "res://assets/data/shot_session_4/physics.initial.translation", "res://assets/data/shot_session_4/physics.initial.translation", "res://assets/data/shot_session_4/physics.initial.translation", "res://assets/data/shot_session_4/physics.peak.translation", "res://assets/data/shot_session_4/physics.carry.translation"] + +source_file="res://assets/data/shot_session_4/physics.csv" +dest_files=["res://assets/data/shot_session_4/physics.filename.translation", "res://assets/data/shot_session_4/physics.speed.translation", "res://assets/data/shot_session_4/physics.vla.translation", "res://assets/data/shot_session_4/physics.hla.translation", "res://assets/data/shot_session_4/physics.total.translation", "res://assets/data/shot_session_4/physics.spin.translation", "res://assets/data/shot_session_4/physics.backspin.translation", "res://assets/data/shot_session_4/physics.sidespin.translation", "res://assets/data/shot_session_4/physics.carry.translation", "res://assets/data/shot_session_4/physics.total.translation", "res://assets/data/shot_session_4/physics.rollout.translation", "res://assets/data/shot_session_4/physics.apex.translation", "res://assets/data/shot_session_4/physics.hang.translation", "res://assets/data/shot_session_4/physics.landing.translation", "res://assets/data/shot_session_4/physics.landing.translation", "res://assets/data/shot_session_4/physics.initial.translation", "res://assets/data/shot_session_4/physics.initial.translation", "res://assets/data/shot_session_4/physics.initial.translation", "res://assets/data/shot_session_4/physics.initial.translation", "res://assets/data/shot_session_4/physics.peak.translation", "res://assets/data/shot_session_4/physics.carry.translation"] + +[params] + +compress=1 +delimiter=0 +unescape_keys=false +unescape_translations=true diff --git a/assets/data/shot_session_4/shot_3w_31.json b/assets/data/shot_session_4/shot_3w_31.json new file mode 100644 index 0000000..216c75b --- /dev/null +++ b/assets/data/shot_session_4/shot_3w_31.json @@ -0,0 +1,15 @@ +{ + "BallData": { + "Speed": 106.87007141113281, + "SpinAxis": 8.875988960266113, + "TotalSpin": 3661.97802734375, + "BackSpin": 3618.12451171875, + "SideSpin": 565.0298461914062, + "HLA": -2.3514275550842285, + "VLA": 15.696219444274902, + "CarryDistance": 0 + }, + "ShotDataOptions": { + "ContainsBallData": true + } +} \ No newline at end of file diff --git a/assets/data/shot_session_4/shot_3w_32.json b/assets/data/shot_session_4/shot_3w_32.json new file mode 100644 index 0000000..bd0e576 --- /dev/null +++ b/assets/data/shot_session_4/shot_3w_32.json @@ -0,0 +1,15 @@ +{ + "BallData": { + "Speed": 105.44798278808594, + "SpinAxis": 2.282492160797119, + "TotalSpin": 5714.34375, + "BackSpin": 5709.81005859375, + "SideSpin": 227.58212280273438, + "HLA": -1.3830540180206299, + "VLA": 18.523700714111328, + "CarryDistance": 0 + }, + "ShotDataOptions": { + "ContainsBallData": true + } +} \ No newline at end of file diff --git a/assets/data/shot_session_4/shot_3w_33.json b/assets/data/shot_session_4/shot_3w_33.json new file mode 100644 index 0000000..1dcc28b --- /dev/null +++ b/assets/data/shot_session_4/shot_3w_33.json @@ -0,0 +1,15 @@ +{ + "BallData": { + "Speed": 99.71961212158203, + "SpinAxis": 1.5523085594177246, + "TotalSpin": 6997.06689453125, + "BackSpin": 6994.4990234375, + "SideSpin": 189.547607421875, + "HLA": 0.5366247892379761, + "VLA": 20.512962341308594, + "CarryDistance": 0 + }, + "ShotDataOptions": { + "ContainsBallData": true + } +} \ No newline at end of file diff --git a/assets/data/shot_session_4/shot_3w_34.json b/assets/data/shot_session_4/shot_3w_34.json new file mode 100644 index 0000000..19ee3bd --- /dev/null +++ b/assets/data/shot_session_4/shot_3w_34.json @@ -0,0 +1,15 @@ +{ + "BallData": { + "Speed": 114.64269256591797, + "SpinAxis": 12.76738166809082, + "TotalSpin": 3501.513427734375, + "BackSpin": 3414.939697265625, + "SideSpin": 773.81103515625, + "HLA": 2.3896894454956055, + "VLA": 15.343537330627441, + "CarryDistance": 0 + }, + "ShotDataOptions": { + "ContainsBallData": true + } +} \ No newline at end of file diff --git a/assets/data/shot_session_4/shot_3w_35.json b/assets/data/shot_session_4/shot_3w_35.json new file mode 100644 index 0000000..5fb35bc --- /dev/null +++ b/assets/data/shot_session_4/shot_3w_35.json @@ -0,0 +1,15 @@ +{ + "BallData": { + "Speed": 117.91869354248047, + "SpinAxis": 13.255024909973145, + "TotalSpin": 3735.05029296875, + "BackSpin": 3635.54541015625, + "SideSpin": 856.3938598632812, + "HLA": 3.596027374267578, + "VLA": 14.403079986572266, + "CarryDistance": 0 + }, + "ShotDataOptions": { + "ContainsBallData": true + } +} \ No newline at end of file diff --git a/assets/data/shot_session_4/shot_5i_25.json b/assets/data/shot_session_4/shot_5i_25.json new file mode 100644 index 0000000..72ee4f6 --- /dev/null +++ b/assets/data/shot_session_4/shot_5i_25.json @@ -0,0 +1,15 @@ +{ + "BallData": { + "Speed": 89.0816421508789, + "SpinAxis": 6.181509017944336, + "TotalSpin": 5261.822265625, + "BackSpin": 5231.22900390625, + "SideSpin": 566.585205078125, + "HLA": 1.1250039339065552, + "VLA": 16.712512969970703, + "CarryDistance": 0 + }, + "ShotDataOptions": { + "ContainsBallData": true + } +} \ No newline at end of file diff --git a/assets/data/shot_session_4/shot_5i_26.json b/assets/data/shot_session_4/shot_5i_26.json new file mode 100644 index 0000000..59eb0b2 --- /dev/null +++ b/assets/data/shot_session_4/shot_5i_26.json @@ -0,0 +1,15 @@ +{ + "BallData": { + "Speed": 106.30802917480469, + "SpinAxis": 3.401366949081421, + "TotalSpin": 4113.97412109375, + "BackSpin": 4106.72705078125, + "SideSpin": 244.08287048339844, + "HLA": -3.6300268173217773, + "VLA": 15.46248722076416, + "CarryDistance": 0 + }, + "ShotDataOptions": { + "ContainsBallData": true + } +} \ No newline at end of file diff --git a/assets/data/shot_session_4/shot_5i_27.json b/assets/data/shot_session_4/shot_5i_27.json new file mode 100644 index 0000000..df1265d --- /dev/null +++ b/assets/data/shot_session_4/shot_5i_27.json @@ -0,0 +1,15 @@ +{ + "BallData": { + "Speed": 84.90103149414062, + "SpinAxis": 30, + "TotalSpin": 2262.935302734375, + "BackSpin": 1959.7593994140625, + "SideSpin": 1131.4676513671875, + "HLA": 5.728759288787842, + "VLA": 6.988064765930176, + "CarryDistance": 0 + }, + "ShotDataOptions": { + "ContainsBallData": true + } +} \ No newline at end of file diff --git a/assets/data/shot_session_4/shot_5i_28.json b/assets/data/shot_session_4/shot_5i_28.json new file mode 100644 index 0000000..6364e3d --- /dev/null +++ b/assets/data/shot_session_4/shot_5i_28.json @@ -0,0 +1,15 @@ +{ + "BallData": { + "Speed": 86.0079116821289, + "SpinAxis": 1.0062899589538574, + "TotalSpin": 4178.9423828125, + "BackSpin": 4178.2978515625, + "SideSpin": 73.39129638671875, + "HLA": -1.642360806465149, + "VLA": 15.909771919250488, + "CarryDistance": 0 + }, + "ShotDataOptions": { + "ContainsBallData": true + } +} \ No newline at end of file diff --git a/assets/data/shot_session_4/shot_5i_29.json b/assets/data/shot_session_4/shot_5i_29.json new file mode 100644 index 0000000..bfa6d0c --- /dev/null +++ b/assets/data/shot_session_4/shot_5i_29.json @@ -0,0 +1,15 @@ +{ + "BallData": { + "Speed": 76.23262023925781, + "SpinAxis": -0, + "TotalSpin": 3695.345947265625, + "BackSpin": 3695.345947265625, + "SideSpin": -0, + "HLA": 0.6680475473403931, + "VLA": 6.137054443359375, + "CarryDistance": 0 + }, + "ShotDataOptions": { + "ContainsBallData": true + } +} \ No newline at end of file diff --git a/assets/data/shot_session_4/shot_5i_30.json b/assets/data/shot_session_4/shot_5i_30.json new file mode 100644 index 0000000..df164d7 --- /dev/null +++ b/assets/data/shot_session_4/shot_5i_30.json @@ -0,0 +1,15 @@ +{ + "BallData": { + "Speed": 96.81482696533203, + "SpinAxis": 17.491016387939453, + "TotalSpin": 6358.1552734375, + "BackSpin": 6064.18017578125, + "SideSpin": 1910.9833984375, + "HLA": 0.7057520151138306, + "VLA": 18.188323974609375, + "CarryDistance": 0 + }, + "ShotDataOptions": { + "ContainsBallData": true + } +} \ No newline at end of file diff --git a/assets/data/shot_session_4/shot_6i_19.json b/assets/data/shot_session_4/shot_6i_19.json new file mode 100644 index 0000000..68d5fc0 --- /dev/null +++ b/assets/data/shot_session_4/shot_6i_19.json @@ -0,0 +1,15 @@ +{ + "BallData": { + "Speed": 85.61466979980469, + "SpinAxis": 10.93720531463623, + "TotalSpin": 4622.83251953125, + "BackSpin": 4538.8623046875, + "SideSpin": 877.1040649414062, + "HLA": 2.86521577835083, + "VLA": 14.704109191894531, + "CarryDistance": 0 + }, + "ShotDataOptions": { + "ContainsBallData": true + } +} \ No newline at end of file diff --git a/assets/data/shot_session_4/shot_6i_20.json b/assets/data/shot_session_4/shot_6i_20.json new file mode 100644 index 0000000..9637119 --- /dev/null +++ b/assets/data/shot_session_4/shot_6i_20.json @@ -0,0 +1,15 @@ +{ + "BallData": { + "Speed": 78.8414306640625, + "SpinAxis": -0, + "TotalSpin": 4288.84033203125, + "BackSpin": 4288.84033203125, + "SideSpin": -0, + "HLA": -0.7441554665565491, + "VLA": 9.696846961975098, + "CarryDistance": 0 + }, + "ShotDataOptions": { + "ContainsBallData": true + } +} \ No newline at end of file diff --git a/assets/data/shot_session_4/shot_6i_21.json b/assets/data/shot_session_4/shot_6i_21.json new file mode 100644 index 0000000..64ac92f --- /dev/null +++ b/assets/data/shot_session_4/shot_6i_21.json @@ -0,0 +1,15 @@ +{ + "BallData": { + "Speed": 91.87206268310547, + "SpinAxis": 11.457609176635742, + "TotalSpin": 5966.81298828125, + "BackSpin": 5847.90576171875, + "SideSpin": 1185.264892578125, + "HLA": 0.6693671345710754, + "VLA": 17.748432159423828, + "CarryDistance": 0 + }, + "ShotDataOptions": { + "ContainsBallData": true + } +} \ No newline at end of file diff --git a/assets/data/shot_session_4/shot_6i_22.json b/assets/data/shot_session_4/shot_6i_22.json new file mode 100644 index 0000000..e3e1f55 --- /dev/null +++ b/assets/data/shot_session_4/shot_6i_22.json @@ -0,0 +1,15 @@ +{ + "BallData": { + "Speed": 76.87886047363281, + "SpinAxis": 30.000001907348633, + "TotalSpin": 3780.129150390625, + "BackSpin": 3273.687744140625, + "SideSpin": 1890.064697265625, + "HLA": 14.363093376159668, + "VLA": 7.652320861816406, + "CarryDistance": 0 + }, + "ShotDataOptions": { + "ContainsBallData": true + } +} \ No newline at end of file diff --git a/assets/data/shot_session_4/shot_6i_23.json b/assets/data/shot_session_4/shot_6i_23.json new file mode 100644 index 0000000..3b71428 --- /dev/null +++ b/assets/data/shot_session_4/shot_6i_23.json @@ -0,0 +1,15 @@ +{ + "BallData": { + "Speed": 86.70178985595703, + "SpinAxis": 11.905055046081543, + "TotalSpin": 4195.89697265625, + "BackSpin": 4105.646484375, + "SideSpin": 865.57373046875, + "HLA": 2.7515037059783936, + "VLA": 15.366101264953613, + "CarryDistance": 0 + }, + "ShotDataOptions": { + "ContainsBallData": true + } +} \ No newline at end of file diff --git a/assets/data/shot_session_4/shot_6i_24.json b/assets/data/shot_session_4/shot_6i_24.json new file mode 100644 index 0000000..731cd0b --- /dev/null +++ b/assets/data/shot_session_4/shot_6i_24.json @@ -0,0 +1,15 @@ +{ + "BallData": { + "Speed": 90.75262451171875, + "SpinAxis": 14.938874244689941, + "TotalSpin": 5270.267578125, + "BackSpin": 5092.14013671875, + "SideSpin": 1358.6138916015625, + "HLA": 2.9778048992156982, + "VLA": 14.838003158569336, + "CarryDistance": 0 + }, + "ShotDataOptions": { + "ContainsBallData": true + } +} \ No newline at end of file diff --git a/assets/data/shot_session_4/shot_9i_12.json b/assets/data/shot_session_4/shot_9i_12.json new file mode 100644 index 0000000..e6140ba --- /dev/null +++ b/assets/data/shot_session_4/shot_9i_12.json @@ -0,0 +1,15 @@ +{ + "BallData": { + "Speed": 66.1781234741211, + "SpinAxis": 30, + "TotalSpin": 3095.80224609375, + "BackSpin": 2681.04345703125, + "SideSpin": 1547.901123046875, + "HLA": 13.952177047729492, + "VLA": 1.4252058267593384, + "CarryDistance": 0 + }, + "ShotDataOptions": { + "ContainsBallData": true + } +} \ No newline at end of file diff --git a/assets/data/shot_session_4/shot_9i_13.json b/assets/data/shot_session_4/shot_9i_13.json new file mode 100644 index 0000000..1e8256f --- /dev/null +++ b/assets/data/shot_session_4/shot_9i_13.json @@ -0,0 +1,15 @@ +{ + "BallData": { + "Speed": 73.08172607421875, + "SpinAxis": 21.311983108520508, + "TotalSpin": 4978.82763671875, + "BackSpin": 4638.3515625, + "SideSpin": 1809.535400390625, + "HLA": 11.28537368774414, + "VLA": 12.50617790222168, + "CarryDistance": 0 + }, + "ShotDataOptions": { + "ContainsBallData": true + } +} \ No newline at end of file diff --git a/assets/data/shot_session_4/shot_9i_14.json b/assets/data/shot_session_4/shot_9i_14.json new file mode 100644 index 0000000..b9db715 --- /dev/null +++ b/assets/data/shot_session_4/shot_9i_14.json @@ -0,0 +1,15 @@ +{ + "BallData": { + "Speed": 87.12720489501953, + "SpinAxis": 4.686331748962402, + "TotalSpin": 5730.39892578125, + "BackSpin": 5711.24169921875, + "SideSpin": 468.17791748046875, + "HLA": 0.3370228707790375, + "VLA": 22.102890014648438, + "CarryDistance": 0 + }, + "ShotDataOptions": { + "ContainsBallData": true + } +} \ No newline at end of file diff --git a/assets/data/shot_session_4/shot_9i_15.json b/assets/data/shot_session_4/shot_9i_15.json new file mode 100644 index 0000000..03f824a --- /dev/null +++ b/assets/data/shot_session_4/shot_9i_15.json @@ -0,0 +1,15 @@ +{ + "BallData": { + "Speed": 75.34832763671875, + "SpinAxis": 2.922011613845825, + "TotalSpin": 6790.0107421875, + "BackSpin": 6781.1826171875, + "SideSpin": 346.1318054199219, + "HLA": -1.2664518356323242, + "VLA": 23.702733993530273, + "CarryDistance": 0 + }, + "ShotDataOptions": { + "ContainsBallData": true + } +} \ No newline at end of file diff --git a/assets/data/shot_session_4/shot_9i_16.json b/assets/data/shot_session_4/shot_9i_16.json new file mode 100644 index 0000000..25be82c --- /dev/null +++ b/assets/data/shot_session_4/shot_9i_16.json @@ -0,0 +1,15 @@ +{ + "BallData": { + "Speed": 65.73352813720703, + "SpinAxis": 30, + "TotalSpin": 1782.9024658203125, + "BackSpin": 1544.038818359375, + "SideSpin": 891.4512329101562, + "HLA": 6.987959384918213, + "VLA": 0, + "CarryDistance": 0 + }, + "ShotDataOptions": { + "ContainsBallData": true + } +} \ No newline at end of file diff --git a/assets/data/shot_session_4/shot_9i_17.json b/assets/data/shot_session_4/shot_9i_17.json new file mode 100644 index 0000000..d7a4201 --- /dev/null +++ b/assets/data/shot_session_4/shot_9i_17.json @@ -0,0 +1,15 @@ +{ + "BallData": { + "Speed": 79.40605163574219, + "SpinAxis": 30, + "TotalSpin": 4369.1787109375, + "BackSpin": 3783.81982421875, + "SideSpin": 2184.58935546875, + "HLA": 16.37236976623535, + "VLA": 14.918102264404297, + "CarryDistance": 0 + }, + "ShotDataOptions": { + "ContainsBallData": true + } +} \ No newline at end of file diff --git a/assets/data/shot_session_4/shot_9i_18.json b/assets/data/shot_session_4/shot_9i_18.json new file mode 100644 index 0000000..b7c333a --- /dev/null +++ b/assets/data/shot_session_4/shot_9i_18.json @@ -0,0 +1,15 @@ +{ + "BallData": { + "Speed": 74.62457275390625, + "SpinAxis": 6.121354579925537, + "TotalSpin": 6417.95068359375, + "BackSpin": 6381.357421875, + "SideSpin": 684.3759765625, + "HLA": 2.520951509475708, + "VLA": 23.596555709838867, + "CarryDistance": 0 + }, + "ShotDataOptions": { + "ContainsBallData": true + } +} \ No newline at end of file diff --git a/assets/data/shot_session_4/shot_diff_analysis.csv b/assets/data/shot_session_4/shot_diff_analysis.csv new file mode 100644 index 0000000..9021b09 --- /dev/null +++ b/assets/data/shot_session_4/shot_diff_analysis.csv @@ -0,0 +1,53 @@ +shot_name,speed_mph,vla_deg,hla_deg,total_spin_rpm,spin_axis_deg,launch_regime_key,carry_window,physics_carry_yd,flightscope_carry_yd,diff_carry_yd,physics_carry_raw_yd,diff_carry_raw_yd,physics_total_yd,flightscope_total_yd,diff_total_yd,rollout_physics_yd,rollout_flightscope_yd,diff_rollout_yd,physics_apex_ft,flightscope_apex_ft,diff_apex_ft,carry_exception_regime,carry_exception_offset_yd,carry_exception_source,carry_exception_applied,status +shot_3w_31,106.9,15.7,-2.4,3662,8.9,I-S3-V1-P1,150-180,150.2,150.3,-0.1,150.2,-0.1,155.2,158.8,-3.6,5.0,8.5,-3.5,50.1,53.7,-3.6,,,,false,pass +shot_3w_32,105.5,18.5,-1.4,5714,2.3,I-S3-V2-P3,115-150,151.5,146.0,5.5,151.5,5.5,161.0,148.8,12.2,9.5,2.8,6.7,73.3,71.9,1.4,,,,false,severe +shot_3w_33,99.7,20.5,0.5,6997,1.6,I-S2-V2-P3,115-150,141.2,132.0,9.2,141.2,9.2,146.6,133.4,13.2,5.4,1.4,4.0,64.6,72.8,-8.2,,,,false,severe +shot_3w_34,114.6,15.3,2.4,3502,12.8,D-S3-V1-P1,150-180,170.2,166.6,3.6,170.2,3.6,177.6,175.4,2.2,7.4,8.8,-1.4,57.8,60.3,-2.5,,,,false,moderate +shot_3w_35,117.9,14.4,3.6,3735,13.3,D-S3-V1-P1,150-180,176.4,171.9,4.5,176.4,4.5,183.0,180.2,2.8,6.6,8.3,-1.7,58.0,61.1,-3.1,,,,false,moderate +shot_5i_25,89.1,16.7,1.1,5262,6.2,I-S2-V1-P2,<115,107.9,110.8,-2.9,107.9,-2.9,108.9,116.1,-7.2,1.0,5.3,-4.3,34.6,40.1,-5.5,,,,false,moderate +shot_5i_26,106.3,15.5,-3.6,4114,3.4,I-S3-V1-P2,115-150,151.8,148.7,3.1,151.8,3.1,160.9,155.9,5.0,9.1,7.2,1.9,57.4,54.5,2.9,,,,false,moderate +shot_5i_27,84.9,7.0,5.7,2263,30.0,I-S1-V0-P0,<115,53.3,55.3,-2.0,53.3,-2.0,102.9,92.1,10.8,49.6,36.8,12.8,5.6,5.8,-0.2,,,,false,severe +shot_5i_28,86.0,15.9,-1.6,4179,1.0,I-S2-V1-P2,<115,102.9,103.1,-0.2,102.9,-0.2,107.7,114.6,-6.9,4.8,11.5,-6.7,37.2,32.2,5.0,,,,false,moderate +shot_5i_29,76.2,6.1,0.7,3695,-0.0,I-S1-V0-P1,<115,52.5,46.2,6.3,52.5,6.3,87.1,73.3,13.8,34.6,27.1,7.5,5.3,4.3,1.0,,,,false,severe +shot_5i_30,96.8,18.2,0.7,6358,17.5,I-S2-V2-P3,115-150,129.5,124.7,4.8,129.5,4.8,131.8,127.7,4.1,2.3,3.0,-0.7,48.4,55.5,-7.1,,,,false,moderate +shot_6i_19,85.6,14.7,2.9,4623,10.9,I-S2-V1-P2,<115,98.4,98.9,-0.5,98.4,-0.5,99.3,110.8,-11.5,0.9,11.9,-11.0,28.8,28.6,0.2,,,,false,severe +shot_6i_20,78.8,9.7,-0.7,4289,-0.0,I-S1-V0-P2,<115,69.3,69.4,-0.1,69.3,-0.1,101.0,89.6,11.4,31.7,20.2,11.5,11.5,11.5,0.0,,,,false,severe +shot_6i_21,91.9,17.8,0.7,5967,11.5,I-S2-V1-P3,115-150,117.3,116.4,0.9,117.3,0.9,118.6,120.1,-1.5,1.3,3.7,-2.4,40.8,47.6,-6.8,,,,false,pass +shot_6i_22,76.9,7.7,14.4,3780,30.0,I-S1-V0-P1,<115,55.3,50.8,4.5,55.3,4.5,89.6,78.8,10.8,34.3,28.0,6.3,6.9,6.0,0.9,,,,false,severe +shot_6i_23,86.7,15.4,2.8,4196,11.9,I-S2-V1-P2,,103.5,,,103.5,,107.2,,,3.7,,,35.9,,,,,,false, +shot_6i_24,90.8,14.8,3.0,5270,14.9,I-S2-V1-P2,,107.9,,,107.9,,108.2,,,0.3,,,30.6,,,,,,false, +shot_9i_12,66.2,1.4,13.9,3096,30.0,I-S1-V0-P1,,8.9,,,8.9,,50.0,,,41.1,,,0.2,,,,,,false, +shot_9i_13,73.1,12.5,11.3,4979,21.3,I-S1-V1-P2,,59.5,,,59.5,,57.1,,,-2.4,,,11.6,,,,,,false, +shot_9i_14,87.1,22.1,0.3,5730,4.7,I-S2-V2-P3,<115,111.1,111.2,-0.1,111.1,-0.1,115.1,113.9,1.2,4.0,2.7,1.3,49.4,55.8,-6.4,,,,false,pass +shot_9i_15,75.3,23.7,-1.3,6790,2.9,I-S1-V2-P3,<115,84.8,87.7,-2.9,84.8,-2.9,100.1,89.3,10.8,15.3,1.6,13.7,40.2,43.9,-3.7,,,,false,severe +shot_9i_16,65.7,0.0,7.0,1783,30.0,I-S1-V0-P0,,2.4,,,2.4,,53.8,,,51.4,,,0.1,,,,,,false, +shot_9i_17,79.4,14.9,16.4,4369,30.0,I-S1-V1-P2,<115,78.9,80.9,-2.0,78.9,-2.0,79.0,95.6,-16.6,0.1,14.7,-14.6,20.8,21.4,-0.6,,,,false,severe +shot_9i_18,74.6,23.6,2.5,6418,6.1,I-S1-V2-P3,<115,83.8,86.6,-2.8,83.8,-2.8,97.5,88.8,8.7,13.7,2.2,11.5,38.8,42.3,-3.5,,,,false,moderate +shot_lw_36,29.1,41.7,3.7,4205,0.0,C-S0-V4-P2,,16.5,,,16.5,,23.2,,,6.7,,,11.7,,,,,,false, +shot_lw_37,42.8,36.4,5.5,5160,8.2,C-S0-V4-P2,,30.6,,,30.6,,39.4,,,8.8,,,20.0,,,,,,false, +shot_lw_38,47.6,37.8,6.1,5609,5.6,C-S0-V4-P3,<115,36.7,42.4,-5.7,36.7,-5.7,45.5,43.4,2.1,8.8,1.0,7.8,26.5,30.5,-4.0,,,,false,moderate +shot_lw_39,15.2,29.0,1.9,3481,-0.0,C-S0-V3-P1,,4.2,,,4.2,,7.5,,,3.3,,,1.8,,,,,,false, +shot_lw_40,17.8,31.3,2.6,3617,-0.0,C-S0-V3-P1,,6.0,,,6.0,,10.0,,,4.0,,,2.8,,,,,,false, +shot_lw_41,23.8,25.8,0.3,3617,-0.0,C-S0-V3-P1,,9.4,,,9.4,,16.7,,,7.3,,,3.5,,,,,,false, +shot_lw_42,40.4,40.3,6.8,4337,12.6,C-S0-V4-P2,,28.6,,,28.6,,38.0,,,9.4,,,21.1,,,,,,false, +shot_lw_43,37.5,21.8,7.6,3734,-0.0,C-S0-V2-P1,,20.2,,,20.2,,33.8,,,13.6,,,6.6,,,,,,false, +shot_lw_44,39.7,30.6,2.5,5259,0.0,C-S0-V3-P2,,25.8,,,25.8,,34.2,,,8.4,,,13.1,,,,,,false, +shot_lw_45,31.7,32.1,1.8,4379,-2.8,C-S0-V3-P2,,17.7,,,17.7,,26.0,,,8.3,,,8.9,,,,,,false, +shot_lw_46,20.9,19.7,0.8,2793,0.0,C-S0-V2-P1,,6.0,,,6.0,,13.6,,,7.6,,,1.6,,,,,,false, +shot_lw_50,18.5,47.1,6.8,4535,18.1,C-S0-V4-P2,,7.2,,,7.2,,9.7,,,2.5,,,5.9,,,,,,false, +shot_lw_51,32.2,29.4,9.6,5077,14.1,C-S0-V3-P2,,17.6,,,17.6,,24.8,,,7.2,,,7.9,,,,,,false, +shot_lw_52,31.0,52.0,-0.1,3965,15.1,C-S0-V4-P1,,17.8,,,17.8,,23.4,,,5.6,,,18.2,,,,,,false, +shot_pw_1,69.8,20.1,-0.6,3577,8.0,I-S1-V2-P1,<115,67.1,74.8,-7.7,67.1,-7.7,69.4,83.7,-14.3,2.3,8.9,-6.6,25.9,26.2,-0.3,,,,false,severe +shot_pw_10,76.3,26.8,0.7,5989,4.9,I-S1-V3-P3,<115,89.1,91.5,-2.4,89.1,-2.4,93.6,93.2,0.4,4.5,1.7,2.8,48.6,52.8,-4.2,,,,false,pass +shot_pw_11,76.3,27.4,-0.6,6296,5.2,I-S1-V3-P3,<115,88.5,91.1,-2.6,88.5,-2.6,92.9,92.5,0.4,4.4,1.4,3.0,50.4,54.2,-3.8,,,,false,pass +shot_pw_2,53.2,25.0,0.2,4085,3.0,C-S0-V2-P2,<115,43.7,48.5,-4.8,43.7,-4.8,60.3,56.0,4.3,16.6,7.5,9.1,18.6,20.2,-1.6,,,,false,moderate +shot_pw_3,62.8,31.1,6.6,6129,6.3,W-S1-V3-P3,<115,60.4,67.3,-6.9,60.4,-6.9,72.5,68.6,3.9,12.1,1.3,10.8,37.9,41.8,-3.9,,,,false,moderate +shot_pw_4,40.1,4.8,16.4,2730,20.4,C-S0-V0-P1,,6.3,,,6.3,,31.1,,,24.8,,,0.4,,,,,,false, +shot_pw_47,46.7,24.6,2.3,3699,-0.0,C-S0-V2-P1,<115,33.5,37.4,-3.9,33.5,-3.9,49.2,45.2,4.0,15.7,7.8,7.9,13.4,14.6,-1.2,,,,false,moderate +shot_pw_48,46.5,25.5,3.8,4318,0.6,C-S0-V3-P2,<115,33.6,37.9,-4.3,33.6,-4.3,47.2,44.5,2.7,13.6,6.6,7.0,14.3,15.6,-1.3,,,,false,moderate +shot_pw_49,60.3,22.6,3.5,4044,5.0,I-S1-V2-P2,<115,53.1,59.3,-6.2,53.1,-6.2,72.4,68.0,4.4,19.3,8.7,10.6,20.9,22.8,-1.9,,,,false,moderate +shot_pw_5,28.7,9.0,7.2,2764,-0.0,C-S0-V0-P1,,5.6,,,5.6,,18.5,,,12.9,,,0.7,,,,,,false, +shot_pw_6,68.7,26.1,1.1,4149,8.2,I-S1-V3-P2,<115,70.2,78.4,-8.2,70.2,-8.2,90.1,83.1,7.0,19.9,4.7,15.2,35.0,38.6,-3.6,,,,false,severe +shot_pw_7,76.8,25.2,3.7,6565,8.2,I-S1-V3-P3,<115,89.1,91.1,-2.0,89.1,-2.0,104.8,92.6,12.2,15.7,1.5,14.2,45.8,49.5,-3.7,,,,false,severe +shot_pw_8,33.3,17.4,4.2,3183,-0.0,C-S0-V1-P1,,13.5,,,13.5,,27.2,,,13.7,,,3.3,,,,,,false, +shot_pw_9,76.6,28.6,4.9,7133,5.7,I-S1-V3-P3,,87.4,,,87.4,,100.9,,,13.5,,,54.0,,,,,,false, diff --git a/assets/data/shot_session_4/shot_diff_analysis.csv.import b/assets/data/shot_session_4/shot_diff_analysis.csv.import new file mode 100644 index 0000000..9759e59 --- /dev/null +++ b/assets/data/shot_session_4/shot_diff_analysis.csv.import @@ -0,0 +1,19 @@ +[remap] + +importer="csv_translation" +type="Translation" +uid="uid://6pj2k2lkyyb" + +[deps] + +files=["res://assets/data/shot_session_4/shot_diff_analysis.speed.translation", "res://assets/data/shot_session_4/shot_diff_analysis.vla.translation", "res://assets/data/shot_session_4/shot_diff_analysis.hla.translation", "res://assets/data/shot_session_4/shot_diff_analysis.total.translation", "res://assets/data/shot_session_4/shot_diff_analysis.spin.translation", "res://assets/data/shot_session_4/shot_diff_analysis.launch.translation", "res://assets/data/shot_session_4/shot_diff_analysis.carry.translation", "res://assets/data/shot_session_4/shot_diff_analysis.physics.translation", "res://assets/data/shot_session_4/shot_diff_analysis.flightscope.translation", "res://assets/data/shot_session_4/shot_diff_analysis.diff.translation", "res://assets/data/shot_session_4/shot_diff_analysis.physics.translation", "res://assets/data/shot_session_4/shot_diff_analysis.diff.translation", "res://assets/data/shot_session_4/shot_diff_analysis.physics.translation", "res://assets/data/shot_session_4/shot_diff_analysis.flightscope.translation", "res://assets/data/shot_session_4/shot_diff_analysis.diff.translation", "res://assets/data/shot_session_4/shot_diff_analysis.rollout.translation", "res://assets/data/shot_session_4/shot_diff_analysis.rollout.translation", "res://assets/data/shot_session_4/shot_diff_analysis.diff.translation", "res://assets/data/shot_session_4/shot_diff_analysis.physics.translation", "res://assets/data/shot_session_4/shot_diff_analysis.flightscope.translation", "res://assets/data/shot_session_4/shot_diff_analysis.diff.translation", "res://assets/data/shot_session_4/shot_diff_analysis.en.translation", "res://assets/data/shot_session_4/shot_diff_analysis.en.translation", "res://assets/data/shot_session_4/shot_diff_analysis.en.translation", "res://assets/data/shot_session_4/shot_diff_analysis.carry.translation", "res://assets/data/shot_session_4/shot_diff_analysis.status.translation"] + +source_file="res://assets/data/shot_session_4/shot_diff_analysis.csv" +dest_files=["res://assets/data/shot_session_4/shot_diff_analysis.speed.translation", "res://assets/data/shot_session_4/shot_diff_analysis.vla.translation", "res://assets/data/shot_session_4/shot_diff_analysis.hla.translation", "res://assets/data/shot_session_4/shot_diff_analysis.total.translation", "res://assets/data/shot_session_4/shot_diff_analysis.spin.translation", "res://assets/data/shot_session_4/shot_diff_analysis.launch.translation", "res://assets/data/shot_session_4/shot_diff_analysis.carry.translation", "res://assets/data/shot_session_4/shot_diff_analysis.physics.translation", "res://assets/data/shot_session_4/shot_diff_analysis.flightscope.translation", "res://assets/data/shot_session_4/shot_diff_analysis.diff.translation", "res://assets/data/shot_session_4/shot_diff_analysis.physics.translation", "res://assets/data/shot_session_4/shot_diff_analysis.diff.translation", "res://assets/data/shot_session_4/shot_diff_analysis.physics.translation", "res://assets/data/shot_session_4/shot_diff_analysis.flightscope.translation", "res://assets/data/shot_session_4/shot_diff_analysis.diff.translation", "res://assets/data/shot_session_4/shot_diff_analysis.rollout.translation", "res://assets/data/shot_session_4/shot_diff_analysis.rollout.translation", "res://assets/data/shot_session_4/shot_diff_analysis.diff.translation", "res://assets/data/shot_session_4/shot_diff_analysis.physics.translation", "res://assets/data/shot_session_4/shot_diff_analysis.flightscope.translation", "res://assets/data/shot_session_4/shot_diff_analysis.diff.translation", "res://assets/data/shot_session_4/shot_diff_analysis.en.translation", "res://assets/data/shot_session_4/shot_diff_analysis.en.translation", "res://assets/data/shot_session_4/shot_diff_analysis.en.translation", "res://assets/data/shot_session_4/shot_diff_analysis.carry.translation", "res://assets/data/shot_session_4/shot_diff_analysis.status.translation"] + +[params] + +compress=1 +delimiter=0 +unescape_keys=false +unescape_translations=true diff --git a/assets/data/shot_session_4/shot_lw_36.json b/assets/data/shot_session_4/shot_lw_36.json new file mode 100644 index 0000000..0a2b57b --- /dev/null +++ b/assets/data/shot_session_4/shot_lw_36.json @@ -0,0 +1,15 @@ +{ + "BallData": { + "Speed": 29.153017044067383, + "SpinAxis": 5.008955668017734E-06, + "TotalSpin": 4205.09130859375, + "BackSpin": 4205.09130859375, + "SideSpin": 0.0003676207270473242, + "HLA": 3.713641405105591, + "VLA": 41.69316482543945, + "CarryDistance": 0 + }, + "ShotDataOptions": { + "ContainsBallData": true + } +} \ No newline at end of file diff --git a/assets/data/shot_session_4/shot_lw_37.json b/assets/data/shot_session_4/shot_lw_37.json new file mode 100644 index 0000000..2d76a5e --- /dev/null +++ b/assets/data/shot_session_4/shot_lw_37.json @@ -0,0 +1,15 @@ +{ + "BallData": { + "Speed": 42.757484436035156, + "SpinAxis": 8.238965034484863, + "TotalSpin": 5160.267578125, + "BackSpin": 5107.00830078125, + "SideSpin": 739.4767456054688, + "HLA": 5.458024501800537, + "VLA": 36.36957550048828, + "CarryDistance": 0 + }, + "ShotDataOptions": { + "ContainsBallData": true + } +} \ No newline at end of file diff --git a/assets/data/shot_session_4/shot_lw_38.json b/assets/data/shot_session_4/shot_lw_38.json new file mode 100644 index 0000000..e34520c --- /dev/null +++ b/assets/data/shot_session_4/shot_lw_38.json @@ -0,0 +1,15 @@ +{ + "BallData": { + "Speed": 47.605255126953125, + "SpinAxis": 5.595749855041504, + "TotalSpin": 5608.5654296875, + "BackSpin": 5581.83837890625, + "SideSpin": 546.8860473632812, + "HLA": 6.062678813934326, + "VLA": 37.81819534301758, + "CarryDistance": 0 + }, + "ShotDataOptions": { + "ContainsBallData": true + } +} \ No newline at end of file diff --git a/assets/data/shot_session_4/shot_lw_39.json b/assets/data/shot_session_4/shot_lw_39.json new file mode 100644 index 0000000..26395b1 --- /dev/null +++ b/assets/data/shot_session_4/shot_lw_39.json @@ -0,0 +1,15 @@ +{ + "BallData": { + "Speed": 15.186184883117676, + "SpinAxis": -0, + "TotalSpin": 3481.1201171875, + "BackSpin": 3481.1201171875, + "SideSpin": -0, + "HLA": 1.8557125329971313, + "VLA": 28.999353408813477, + "CarryDistance": 0 + }, + "ShotDataOptions": { + "ContainsBallData": true + } +} \ No newline at end of file diff --git a/assets/data/shot_session_4/shot_lw_40.json b/assets/data/shot_session_4/shot_lw_40.json new file mode 100644 index 0000000..45d23c7 --- /dev/null +++ b/assets/data/shot_session_4/shot_lw_40.json @@ -0,0 +1,15 @@ +{ + "BallData": { + "Speed": 17.8015079498291, + "SpinAxis": -0, + "TotalSpin": 3617.15087890625, + "BackSpin": 3617.15087890625, + "SideSpin": -0, + "HLA": 2.5577502250671387, + "VLA": 31.325681686401367, + "CarryDistance": 0 + }, + "ShotDataOptions": { + "ContainsBallData": true + } +} \ No newline at end of file diff --git a/assets/data/shot_session_4/shot_lw_41.json b/assets/data/shot_session_4/shot_lw_41.json new file mode 100644 index 0000000..7a44870 --- /dev/null +++ b/assets/data/shot_session_4/shot_lw_41.json @@ -0,0 +1,15 @@ +{ + "BallData": { + "Speed": 23.82435417175293, + "SpinAxis": -0, + "TotalSpin": 3616.908203125, + "BackSpin": 3616.908203125, + "SideSpin": -0, + "HLA": 0.3415270149707794, + "VLA": 25.811668395996094, + "CarryDistance": 0 + }, + "ShotDataOptions": { + "ContainsBallData": true + } +} \ No newline at end of file diff --git a/assets/data/shot_session_4/shot_lw_42.json b/assets/data/shot_session_4/shot_lw_42.json new file mode 100644 index 0000000..f567f9d --- /dev/null +++ b/assets/data/shot_session_4/shot_lw_42.json @@ -0,0 +1,15 @@ +{ + "BallData": { + "Speed": 40.424259185791016, + "SpinAxis": 12.641061782836914, + "TotalSpin": 4336.79541015625, + "BackSpin": 4231.67236328125, + "SideSpin": 949.0755615234375, + "HLA": 6.7914910316467285, + "VLA": 40.34182357788086, + "CarryDistance": 0 + }, + "ShotDataOptions": { + "ContainsBallData": true + } +} \ No newline at end of file diff --git a/assets/data/shot_session_4/shot_lw_43.json b/assets/data/shot_session_4/shot_lw_43.json new file mode 100644 index 0000000..5f8b311 --- /dev/null +++ b/assets/data/shot_session_4/shot_lw_43.json @@ -0,0 +1,15 @@ +{ + "BallData": { + "Speed": 37.532474517822266, + "SpinAxis": -0, + "TotalSpin": 3734.1171875, + "BackSpin": 3734.1171875, + "SideSpin": -0, + "HLA": 7.556422233581543, + "VLA": 21.795082092285156, + "CarryDistance": 0 + }, + "ShotDataOptions": { + "ContainsBallData": true + } +} \ No newline at end of file diff --git a/assets/data/shot_session_4/shot_lw_44.json b/assets/data/shot_session_4/shot_lw_44.json new file mode 100644 index 0000000..e486995 --- /dev/null +++ b/assets/data/shot_session_4/shot_lw_44.json @@ -0,0 +1,15 @@ +{ + "BallData": { + "Speed": 39.69778060913086, + "SpinAxis": 5.008955668017734E-06, + "TotalSpin": 5258.5673828125, + "BackSpin": 5258.5673828125, + "SideSpin": 0.0004597185179591179, + "HLA": 2.5489213466644287, + "VLA": 30.63658905029297, + "CarryDistance": 0 + }, + "ShotDataOptions": { + "ContainsBallData": true + } +} \ No newline at end of file diff --git a/assets/data/shot_session_4/shot_lw_45.json b/assets/data/shot_session_4/shot_lw_45.json new file mode 100644 index 0000000..dcaa5c3 --- /dev/null +++ b/assets/data/shot_session_4/shot_lw_45.json @@ -0,0 +1,15 @@ +{ + "BallData": { + "Speed": 31.719989776611328, + "SpinAxis": -2.8347320556640625, + "TotalSpin": 4379.33154296875, + "BackSpin": 4373.97265625, + "SideSpin": -216.58082580566406, + "HLA": 1.825545310974121, + "VLA": 32.09777069091797, + "CarryDistance": 0 + }, + "ShotDataOptions": { + "ContainsBallData": true + } +} \ No newline at end of file diff --git a/assets/data/shot_session_4/shot_lw_46.json b/assets/data/shot_session_4/shot_lw_46.json new file mode 100644 index 0000000..722505d --- /dev/null +++ b/assets/data/shot_session_4/shot_lw_46.json @@ -0,0 +1,15 @@ +{ + "BallData": { + "Speed": 20.84807586669922, + "SpinAxis": 5.008955668017734E-06, + "TotalSpin": 2792.970458984375, + "BackSpin": 2792.970458984375, + "SideSpin": 0.0002441692049615085, + "HLA": 0.8516455888748169, + "VLA": 19.710819244384766, + "CarryDistance": 0 + }, + "ShotDataOptions": { + "ContainsBallData": true + } +} \ No newline at end of file diff --git a/assets/data/shot_session_4/shot_lw_50.json b/assets/data/shot_session_4/shot_lw_50.json new file mode 100644 index 0000000..9086b51 --- /dev/null +++ b/assets/data/shot_session_4/shot_lw_50.json @@ -0,0 +1,15 @@ +{ + "BallData": { + "Speed": 18.508426666259766, + "SpinAxis": 18.13753890991211, + "TotalSpin": 4534.626953125, + "BackSpin": 4309.310546875, + "SideSpin": 1411.6253662109375, + "HLA": 6.7650909423828125, + "VLA": 47.06576919555664, + "CarryDistance": 0 + }, + "ShotDataOptions": { + "ContainsBallData": true + } +} \ No newline at end of file diff --git a/assets/data/shot_session_4/shot_lw_51.json b/assets/data/shot_session_4/shot_lw_51.json new file mode 100644 index 0000000..c283bf4 --- /dev/null +++ b/assets/data/shot_session_4/shot_lw_51.json @@ -0,0 +1,15 @@ +{ + "BallData": { + "Speed": 32.17839050292969, + "SpinAxis": 14.128337860107422, + "TotalSpin": 5076.90771484375, + "BackSpin": 4923.33837890625, + "SideSpin": 1239.24609375, + "HLA": 9.629976272583008, + "VLA": 29.45030975341797, + "CarryDistance": 0 + }, + "ShotDataOptions": { + "ContainsBallData": true + } +} \ No newline at end of file diff --git a/assets/data/shot_session_4/shot_lw_52.json b/assets/data/shot_session_4/shot_lw_52.json new file mode 100644 index 0000000..8ce654f --- /dev/null +++ b/assets/data/shot_session_4/shot_lw_52.json @@ -0,0 +1,15 @@ +{ + "BallData": { + "Speed": 31.04414939880371, + "SpinAxis": 15.11589241027832, + "TotalSpin": 3964.699462890625, + "BackSpin": 3827.522216796875, + "SideSpin": 1033.8837890625, + "HLA": -0.06188550591468811, + "VLA": 51.99532699584961, + "CarryDistance": 0 + }, + "ShotDataOptions": { + "ContainsBallData": true + } +} \ No newline at end of file diff --git a/assets/data/shot_session_4/shot_pw_1.json b/assets/data/shot_session_4/shot_pw_1.json new file mode 100644 index 0000000..b35deb8 --- /dev/null +++ b/assets/data/shot_session_4/shot_pw_1.json @@ -0,0 +1,15 @@ +{ + "BallData": { + "Speed": 69.84241485595703, + "SpinAxis": 7.978987216949463, + "TotalSpin": 3576.952880859375, + "BackSpin": 3542.324462890625, + "SideSpin": 496.51654052734375, + "HLA": -0.5776121616363525, + "VLA": 20.06692886352539, + "CarryDistance": 0 + }, + "ShotDataOptions": { + "ContainsBallData": true + } +} \ No newline at end of file diff --git a/assets/data/shot_session_4/shot_pw_10.json b/assets/data/shot_session_4/shot_pw_10.json new file mode 100644 index 0000000..1046a55 --- /dev/null +++ b/assets/data/shot_session_4/shot_pw_10.json @@ -0,0 +1,15 @@ +{ + "BallData": { + "Speed": 76.33145904541016, + "SpinAxis": 4.903220176696777, + "TotalSpin": 5988.5712890625, + "BackSpin": 5966.65625, + "SideSpin": 511.8606872558594, + "HLA": 0.6494220495223999, + "VLA": 26.80206298828125, + "CarryDistance": 0 + }, + "ShotDataOptions": { + "ContainsBallData": true + } +} \ No newline at end of file diff --git a/assets/data/shot_session_4/shot_pw_11.json b/assets/data/shot_session_4/shot_pw_11.json new file mode 100644 index 0000000..65c25ac --- /dev/null +++ b/assets/data/shot_session_4/shot_pw_11.json @@ -0,0 +1,15 @@ +{ + "BallData": { + "Speed": 76.25743103027344, + "SpinAxis": 5.221688747406006, + "TotalSpin": 6296.34033203125, + "BackSpin": 6270.21044921875, + "SideSpin": 573.0271606445312, + "HLA": -0.6321487426757812, + "VLA": 27.34678840637207, + "CarryDistance": 0 + }, + "ShotDataOptions": { + "ContainsBallData": true + } +} \ No newline at end of file diff --git a/assets/data/shot_session_4/shot_pw_2.json b/assets/data/shot_session_4/shot_pw_2.json new file mode 100644 index 0000000..f1fd1e7 --- /dev/null +++ b/assets/data/shot_session_4/shot_pw_2.json @@ -0,0 +1,15 @@ +{ + "BallData": { + "Speed": 53.24530029296875, + "SpinAxis": 3.0019383430480957, + "TotalSpin": 4085.01708984375, + "BackSpin": 4079.411376953125, + "SideSpin": 213.93128967285156, + "HLA": 0.2284337431192398, + "VLA": 24.975675582885742, + "CarryDistance": 0 + }, + "ShotDataOptions": { + "ContainsBallData": true + } +} \ No newline at end of file diff --git a/assets/data/shot_session_4/shot_pw_3.json b/assets/data/shot_session_4/shot_pw_3.json new file mode 100644 index 0000000..6ab40f3 --- /dev/null +++ b/assets/data/shot_session_4/shot_pw_3.json @@ -0,0 +1,15 @@ +{ + "BallData": { + "Speed": 62.81332778930664, + "SpinAxis": 6.306427955627441, + "TotalSpin": 6128.75341796875, + "BackSpin": 6091.666015625, + "SideSpin": 673.2179565429688, + "HLA": 6.572988033294678, + "VLA": 31.14988136291504, + "CarryDistance": 0 + }, + "ShotDataOptions": { + "ContainsBallData": true + } +} \ No newline at end of file diff --git a/assets/data/shot_session_4/shot_pw_4.json b/assets/data/shot_session_4/shot_pw_4.json new file mode 100644 index 0000000..fd1d8f3 --- /dev/null +++ b/assets/data/shot_session_4/shot_pw_4.json @@ -0,0 +1,15 @@ +{ + "BallData": { + "Speed": 40.09353256225586, + "SpinAxis": 20.390636444091797, + "TotalSpin": 2730.538818359375, + "BackSpin": 2559.4404296875, + "SideSpin": 951.3712158203125, + "HLA": 16.406291961669922, + "VLA": 4.8382954597473145, + "CarryDistance": 0 + }, + "ShotDataOptions": { + "ContainsBallData": true + } +} \ No newline at end of file diff --git a/assets/data/shot_session_4/shot_pw_47.json b/assets/data/shot_session_4/shot_pw_47.json new file mode 100644 index 0000000..76d702d --- /dev/null +++ b/assets/data/shot_session_4/shot_pw_47.json @@ -0,0 +1,15 @@ +{ + "BallData": { + "Speed": 46.664215087890625, + "SpinAxis": -0, + "TotalSpin": 3699.0830078125, + "BackSpin": 3699.0830078125, + "SideSpin": -0, + "HLA": 2.2612733840942383, + "VLA": 24.60323143005371, + "CarryDistance": 0 + }, + "ShotDataOptions": { + "ContainsBallData": true + } +} \ No newline at end of file diff --git a/assets/data/shot_session_4/shot_pw_48.json b/assets/data/shot_session_4/shot_pw_48.json new file mode 100644 index 0000000..465ce1d --- /dev/null +++ b/assets/data/shot_session_4/shot_pw_48.json @@ -0,0 +1,15 @@ +{ + "BallData": { + "Speed": 46.553585052490234, + "SpinAxis": 0.5770735740661621, + "TotalSpin": 4318.443359375, + "BackSpin": 4318.22412109375, + "SideSpin": 43.4939079284668, + "HLA": 3.828127861022949, + "VLA": 25.522111892700195, + "CarryDistance": 0 + }, + "ShotDataOptions": { + "ContainsBallData": true + } +} \ No newline at end of file diff --git a/assets/data/shot_session_4/shot_pw_49.json b/assets/data/shot_session_4/shot_pw_49.json new file mode 100644 index 0000000..b60404b --- /dev/null +++ b/assets/data/shot_session_4/shot_pw_49.json @@ -0,0 +1,15 @@ +{ + "BallData": { + "Speed": 60.2983283996582, + "SpinAxis": 4.964601993560791, + "TotalSpin": 4043.842041015625, + "BackSpin": 4028.6708984375, + "SideSpin": 349.9551696777344, + "HLA": 3.4499943256378174, + "VLA": 22.55554962158203, + "CarryDistance": 0 + }, + "ShotDataOptions": { + "ContainsBallData": true + } +} \ No newline at end of file diff --git a/assets/data/shot_session_4/shot_pw_5.json b/assets/data/shot_session_4/shot_pw_5.json new file mode 100644 index 0000000..c66e3d5 --- /dev/null +++ b/assets/data/shot_session_4/shot_pw_5.json @@ -0,0 +1,15 @@ +{ + "BallData": { + "Speed": 28.682497024536133, + "SpinAxis": -0, + "TotalSpin": 2764.113037109375, + "BackSpin": 2764.113037109375, + "SideSpin": -0, + "HLA": 7.193963050842285, + "VLA": 8.999276161193848, + "CarryDistance": 0 + }, + "ShotDataOptions": { + "ContainsBallData": true + } +} \ No newline at end of file diff --git a/assets/data/shot_session_4/shot_pw_6.json b/assets/data/shot_session_4/shot_pw_6.json new file mode 100644 index 0000000..79eaed9 --- /dev/null +++ b/assets/data/shot_session_4/shot_pw_6.json @@ -0,0 +1,15 @@ +{ + "BallData": { + "Speed": 68.69302368164062, + "SpinAxis": 8.230823516845703, + "TotalSpin": 4148.7509765625, + "BackSpin": 4106.01611328125, + "SideSpin": 593.94091796875, + "HLA": 1.07403564453125, + "VLA": 26.099424362182617, + "CarryDistance": 0 + }, + "ShotDataOptions": { + "ContainsBallData": true + } +} \ No newline at end of file diff --git a/assets/data/shot_session_4/shot_pw_7.json b/assets/data/shot_session_4/shot_pw_7.json new file mode 100644 index 0000000..8ce0acc --- /dev/null +++ b/assets/data/shot_session_4/shot_pw_7.json @@ -0,0 +1,15 @@ +{ + "BallData": { + "Speed": 76.84967803955078, + "SpinAxis": 8.159395217895508, + "TotalSpin": 6565.20849609375, + "BackSpin": 6498.74951171875, + "SideSpin": 931.7833251953125, + "HLA": 3.7163591384887695, + "VLA": 25.203109741210938, + "CarryDistance": 0 + }, + "ShotDataOptions": { + "ContainsBallData": true + } +} \ No newline at end of file diff --git a/assets/data/shot_session_4/shot_pw_8.json b/assets/data/shot_session_4/shot_pw_8.json new file mode 100644 index 0000000..1341402 --- /dev/null +++ b/assets/data/shot_session_4/shot_pw_8.json @@ -0,0 +1,15 @@ +{ + "BallData": { + "Speed": 33.32025146484375, + "SpinAxis": -0, + "TotalSpin": 3183.36181640625, + "BackSpin": 3183.36181640625, + "SideSpin": -0, + "HLA": 4.222119331359863, + "VLA": 17.36110496520996, + "CarryDistance": 0 + }, + "ShotDataOptions": { + "ContainsBallData": true + } +} \ No newline at end of file diff --git a/assets/data/shot_session_4/shot_pw_9.json b/assets/data/shot_session_4/shot_pw_9.json new file mode 100644 index 0000000..77baf87 --- /dev/null +++ b/assets/data/shot_session_4/shot_pw_9.json @@ -0,0 +1,15 @@ +{ + "BallData": { + "Speed": 76.60264587402344, + "SpinAxis": 5.7096943855285645, + "TotalSpin": 7133.119140625, + "BackSpin": 7097.72998046875, + "SideSpin": 709.6605224609375, + "HLA": 4.919938087463379, + "VLA": 28.642845153808594, + "CarryDistance": 0 + }, + "ShotDataOptions": { + "ContainsBallData": true + } +} \ No newline at end of file diff --git a/game/GolfBall.cs b/game/GolfBall.cs index cc6a1d9..9a3daab 100644 --- a/game/GolfBall.cs +++ b/game/GolfBall.cs @@ -66,6 +66,7 @@ public partial class GolfBall : CharacterBody3D // Player public Vector3 ShotStartPos { get; set; } = Vector3.Zero; public Vector3 ShotDirection { get; set; } = new Vector3(1.0f, 0.0f, 0.0f); // Normalized horizontal direction public float AimYawOffsetDeg { get; set; } = 0.0f; // Camera/world rotation offset applied at launch + public float LaunchSpeedMph { get; private set; } = 0.0f; public float LaunchAngleDeg { get; private set; } = 0.0f; public float LaunchSpinRpm { get; set; } = 0.0f; // Stored for bounce calculations public float RolloutImpactSpinRpm { get; set; } = 0.0f; // Spin when first landing (for friction calculation) @@ -287,7 +288,9 @@ private PhysicsParams CreatePhysicsParams() FloorNormal, rolloutImpactSpin: RolloutImpactSpinRpm, ballProfile: BallProfile, - initialLaunchAngleDeg: LaunchAngleDeg + initialLaunchAngleDeg: LaunchAngleDeg, + launchSpeedMph: LaunchSpeedMph, + launchSpinRpm: LaunchSpinRpm ).ToPhysicsParams(); } @@ -517,6 +520,7 @@ public void Reset() Omega = Vector3.Zero; _substepAccumulator = 0.0f; AimYawOffsetDeg = 0.0f; + LaunchSpeedMph = 0.0f; LaunchSpinRpm = 0.0f; RolloutImpactSpinRpm = 0.0f; RefreshLieSurfaceFromGroundProbe(); @@ -554,6 +558,11 @@ public void HitFromData(Dictionary data) float totalSpin = (float)spinData["total"]; float spinAxis = (float)spinData["axis"]; + // Log regime override once per shot + RegimeScaleOverride regimeScale = BallProfile.ResolveScaleOverride(speedMph, vlaDeg, totalSpin, out string regimeKey, out string matchedOverrideKey); + if (!string.IsNullOrEmpty(matchedOverrideKey)) + PhysicsLogger.Info($"[Regime] {regimeKey} matched={matchedOverrideKey} drag={regimeScale.DragScaleMultiplier:F3} lift={regimeScale.LiftScaleMultiplier:F3}"); + // Build launch vectors from monitor data var launch = _shotSetup.BuildLaunchVectors(speedMph, vlaDeg, hlaDeg, totalSpin, spinAxis); Vector3 launchVelocity = (Vector3)launch["velocity"]; @@ -588,6 +597,7 @@ public void HitFromData(Dictionary data) Omega = launchOmega; ShotStartPos = Position; ShotDirection = launchDirection; + LaunchSpeedMph = speedMph; LaunchAngleDeg = vlaDeg; LaunchSpinRpm = totalSpin; diff --git a/tests/PhysicsTests/DistanceBenchmarkTests.cs b/tests/PhysicsTests/DistanceBenchmarkTests.cs index dc3c579..2d803be 100644 --- a/tests/PhysicsTests/DistanceBenchmarkTests.cs +++ b/tests/PhysicsTests/DistanceBenchmarkTests.cs @@ -69,7 +69,7 @@ public void WoodLowShot_Benchmark() tolerance: 10.0f); } -[Test] + [Test] public void DriveShot_Benchmark() { // Full driver shot diff --git a/tests/PhysicsTests/FlightProfileTests.cs b/tests/PhysicsTests/FlightProfileTests.cs index 7907910..7c6074b 100644 --- a/tests/PhysicsTests/FlightProfileTests.cs +++ b/tests/PhysicsTests/FlightProfileTests.cs @@ -27,13 +27,13 @@ public void FlightProfile_DefaultValues_MatchOriginalConstants() Assert.That(p.CdPolyD, Is.EqualTo(-3.14383e-16f)); Assert.That(p.HighReCdCap, Is.EqualTo(0.2f)); Assert.That(p.LowReCdFloor, Is.EqualTo(0.38f)); - Assert.That(p.CdMin, Is.EqualTo(0.22f)); + Assert.That(p.CdMin, Is.EqualTo(0.223f)); Assert.That(p.ClMaxBase, Is.EqualTo(0.268f)); Assert.That(p.ClMaxHighSpin, Is.EqualTo(0.32f)); Assert.That(p.SpinDragMultiplierCoeff, Is.EqualTo(4.0f)); Assert.That(p.SpinDragMultiplierMax, Is.EqualTo(1.20f)); Assert.That(p.LowLaunchLiftRecoveryMax, Is.EqualTo(1.08f)); - Assert.That(p.HighLaunchDragBoostMax, Is.EqualTo(1.18f)); + Assert.That(p.HighLaunchDragBoostMax, Is.EqualTo(1.24f)); } [Test] @@ -97,6 +97,103 @@ public void BallPhysicsProfile_CustomFlight_OverridesDefault() Assert.That(profile.ResolvedFlight.ClMaxBase, Is.EqualTo(0.30f)); Assert.That(profile.ResolvedBounce, Is.SameAs(BounceProfile.Default)); } + + [Test] + [Category("RolloutPhysics")] + [Category("FlightProfile")] + public void ShotRegimeKey_BuildsExpectedBins() + { + Assert.That(ShotRegimeKey.Build(68.7f, 26.1f, 4149.0f), Is.EqualTo("I-S1a-V3-P2")); + Assert.That(ShotRegimeKey.Build(125.0f, 11.0f, 2300.0f), Is.EqualTo("D-S4-V1-P0")); + Assert.That(ShotRegimeKey.Build(52.0f, 37.0f, 5652.0f), Is.EqualTo("C-S0-V4-P3")); + } + + [Test] + [Category("RolloutPhysics")] + [Category("FlightProfile")] + public void BallPhysicsProfile_RegimeScaleOverrides_UseMostSpecificMatch() + { + var profile = new BallPhysicsProfile + { + RegimeScaleOverrides = new System.Collections.Generic.Dictionary + { + ["I"] = new() { LiftScaleMultiplier = 1.02f }, + ["I-S1a-V3"] = new() { LiftScaleMultiplier = 1.06f }, + ["I-S1a-V3-P2"] = new() { LiftScaleMultiplier = 1.11f }, + }, + }; + + RegimeScaleOverride match = profile.ResolveScaleOverride(68.7f, 26.1f, 4149.0f, out string regimeKey, out string matchedKey); + + Assert.That(regimeKey, Is.EqualTo("I-S1a-V3-P2")); + Assert.That(matchedKey, Is.EqualTo("I-S1a-V3-P2")); + Assert.That(match.LiftScaleMultiplier, Is.EqualTo(1.11f)); + } + + [Test] + [Category("RolloutPhysics")] + [Category("FlightProfile")] + public void BallPhysicsProfile_FromJson_LoadsRegimeScaleOverrides() + { + const string json = """ + { + "DragScaleMultiplier": 1.01, + "RegimeScaleOverrides": { + "I-S1a-V3-P2": { + "DragScaleMultiplier": 0.97, + "LiftScaleMultiplier": 1.05 + } + } + } + """; + + BallPhysicsProfile profile = BallPhysicsProfile.FromJson(json); + RegimeScaleOverride match = profile.ResolveScaleOverride(68.7f, 26.1f, 4149.0f, out _, out string matchedKey); + + Assert.That(profile.DragScaleMultiplier, Is.EqualTo(1.01f)); + Assert.That(matchedKey, Is.EqualTo("I-S1a-V3-P2")); + Assert.That(match.DragScaleMultiplier, Is.EqualTo(0.97f)); + Assert.That(match.LiftScaleMultiplier, Is.EqualTo(1.05f)); + } + + [Test] + [Category("RolloutPhysics")] + [Category("FlightProfile")] + public void PhysicsParamsFactory_AppliesRegimeScaleOverrides() + { + var factory = new PhysicsParamsFactory(); + var profile = new BallPhysicsProfile + { + DragScaleMultiplier = 1.01f, + LiftScaleMultiplier = 1.02f, + RegimeScaleOverrides = new System.Collections.Generic.Dictionary + { + ["I-S1a-V3-P2"] = new() + { + DragScaleMultiplier = 0.98f, + LiftScaleMultiplier = 1.08f, + KineticFrictionMultiplier = 0.95f, + }, + }, + }; + + ResolvedPhysicsParams resolved = factory.Create( + airDensity: 1.2f, + airViscosity: 0.000018f, + dragScale: 1.0f, + liftScale: 1.0f, + surfaceType: PhysicsEnums.SurfaceType.Fairway, + floorNormal: Vector3.Up, + ballProfile: profile, + initialLaunchAngleDeg: 26.1f, + launchSpeedMph: 68.7f, + launchSpinRpm: 4149.0f + ); + + Assert.That(resolved.DragScale, Is.EqualTo(1.01f * 0.98f).Within(0.0001f)); + Assert.That(resolved.LiftScale, Is.EqualTo(1.02f * 1.08f).Within(0.0001f)); + Assert.That(resolved.KineticFriction, Is.LessThan(SurfacePhysicsCatalog.Get(PhysicsEnums.SurfaceType.Fairway).KineticFriction)); + } } /// @@ -209,6 +306,35 @@ public void IncreasedSpinDragMultiplierMax_DecreasesHighSpinCarry() "Increasing spin drag max should decrease carry for high-spin wedge shots"); } + [Test] + [Category("PhysicsRuntime")] + [Category("FlightProfile")] + public void RegimeScaleOverride_OnlyAffectsMatchingShortShot() + { + var profile = new BallPhysicsProfile + { + RegimeScaleOverrides = new System.Collections.Generic.Dictionary + { + ["I-S1a-V3-P2"] = new() + { + DragScaleMultiplier = 0.96f, + LiftScaleMultiplier = 1.06f, + }, + }, + }; + + Godot.Collections.Dictionary shortShot = TestShotLoader.LoadTestShot("wedge_test_shot.json"); + Godot.Collections.Dictionary driverShot = TestShotLoader.LoadTestShot("driver1.json"); + + float baselineShort = (float)_adapter.SimulateCarryOnlyFromJson(shortShot)["carry_yd"]; + float tweakedShort = (float)_adapter.SimulateCarryOnlyWithProfile(shortShot, profile)["carry_yd"]; + float baselineDriver = (float)_adapter.SimulateCarryOnlyFromJson(driverShot)["carry_yd"]; + float tweakedDriver = (float)_adapter.SimulateCarryOnlyWithProfile(driverShot, profile)["carry_yd"]; + + Assert.That(tweakedShort, Is.GreaterThan(baselineShort)); + Assert.That(tweakedDriver, Is.EqualTo(baselineDriver).Within(0.1f)); + } + // ── FlightScope calibration tests ── private static readonly string FlightScopeReferencePath = diff --git a/tests/PhysicsTests/RolloutPhysicsTests.cs b/tests/PhysicsTests/RolloutPhysicsTests.cs index 49e76f0..257b070 100644 --- a/tests/PhysicsTests/RolloutPhysicsTests.cs +++ b/tests/PhysicsTests/RolloutPhysicsTests.cs @@ -206,12 +206,13 @@ public void BumpShot_SpinMultiplier_IncreasedFrom_PreviousVersion() [Test] [Category("RolloutPhysics")] - public void SampleFlightAerodynamics_WedgeBand_UsesRelievedDrag() + public void SampleFlightAerodynamics_WedgeBand_UsesRelievedDragWithProgressiveCap() { FlightAerodynamicsSample sample = BuildFlightSample(24.45f, 0.45f, 26.8f); Assert.That(sample.Reynolds, Is.InRange(70000.0f, 71000.0f)); - Assert.That(sample.SpinDragMultiplier, Is.InRange(1.04f, 1.05f)); + // Progressive cap raises effective multiplier above pure relief + Assert.That(sample.SpinDragMultiplier, Is.InRange(1.18f, 1.26f)); Assert.That(sample.LowLaunchLiftScale, Is.EqualTo(1.0f).Within(0.0001f)); Assert.That(sample.LiftCoefficient, Is.GreaterThan(0.20f)); } @@ -229,15 +230,13 @@ public void SampleFlightAerodynamics_LowLaunchWood_UsesLiftRecovery() [Test] [Category("RolloutPhysics")] - public void SampleFlightAerodynamics_CheckedBand_ReboundsAboveWedgeRelief() + public void SampleFlightAerodynamics_CheckedBand_AtExpectedLevel() { - FlightAerodynamicsSample wedgeSample = BuildFlightSample(24.45f, 0.45f, 26.8f); FlightAerodynamicsSample checkedSample = BuildFlightSample(33.57f, 0.70f, 38.5f); Assert.That(checkedSample.Reynolds, Is.InRange(96000.0f, 98000.0f)); - Assert.That(checkedSample.SpinDragMultiplier, Is.InRange(1.18f, 1.19f)); + Assert.That(checkedSample.SpinDragMultiplier, Is.InRange(1.23f, 1.27f)); Assert.That(checkedSample.LowLaunchLiftScale, Is.EqualTo(1.0f).Within(0.0001f)); - Assert.That(checkedSample.SpinDragMultiplier, Is.GreaterThan(wedgeSample.SpinDragMultiplier)); } [Test] @@ -252,12 +251,15 @@ public void SpinDragMultiplier_MidSpinBand_KeepsFullCapUntilReliefWindow() [Test] [Category("RolloutPhysics")] - public void SpinDragMultiplier_WedgeBand_RelievesDragWithoutUsingUltraHighSpinCap() + public void SpinDragMultiplier_WedgeBand_RelievedButWithProgressiveCap() { float multiplier = BallPhysics.GetSpinDragMultiplier(0.45f, 75000.0f); - Assert.That(multiplier, Is.InRange(1.04f, 1.05f), - "Wedge spin ratios in the transitional-Re band should enter the reduced-drag relief band."); + // With default SpinDragProgressiveCapBoostMax=0.25, the relief is partially + // offset by the progressive cap. Result is between pure relief (~1.04) and + // full cap (1.20). + Assert.That(multiplier, Is.InRange(1.20f, 1.26f), + "Wedge spin ratios with progressive cap should be above pure relief but below flat cap."); } [Test] @@ -266,44 +268,41 @@ public void SpinDragMultiplier_HighReWedgeBand_FadesBackTowardFullDragCap() { float multiplier = BallPhysics.GetSpinDragMultiplier(0.45f, 103000.0f); - Assert.That(multiplier, Is.InRange(1.19f, 1.20f), - "The wedge relief should fade out in the higher-Re regime."); + // At high Re, relief fades out. Progressive cap still applies. + Assert.That(multiplier, Is.InRange(1.35f, 1.42f), + "The wedge relief should fade out in the higher-Re regime, progressive cap active."); } [Test] [Category("RolloutPhysics")] - public void SpinDragMultiplier_CheckedBand_ReboundsAboveWedgeBand() + public void SpinDragMultiplier_CheckedBand_AtExpectedLevel() { - float wedgeBandMultiplier = BallPhysics.GetSpinDragMultiplier(0.45f, 75000.0f); float checkedBandMultiplier = BallPhysics.GetSpinDragMultiplier(0.70f, 95000.0f); - Assert.That(checkedBandMultiplier, Is.GreaterThan(wedgeBandMultiplier), - "Checked spin ratios should rebound above the wedge drag cap."); - Assert.That(checkedBandMultiplier, Is.InRange(1.17f, 1.18f)); + Assert.That(checkedBandMultiplier, Is.InRange(1.23f, 1.26f), + "Checked spin ratios with progressive cap should be above pure ultra-high level."); } [Test] [Category("RolloutPhysics")] public void SpinDragMultiplier_UltraHighSpin_ReachesReboundCap() { - float wedgeBandMultiplier = BallPhysics.GetSpinDragMultiplier(0.45f, 75000.0f); float ultraHighSpinMultiplier = BallPhysics.GetSpinDragMultiplier(0.88f, 90000.0f); - Assert.That(ultraHighSpinMultiplier, Is.GreaterThan(wedgeBandMultiplier), - "Flop spin ratios should continue to the ultra-high-spin rebound cap."); - Assert.That(ultraHighSpinMultiplier, Is.InRange(1.20f, 1.21f)); + Assert.That(ultraHighSpinMultiplier, Is.InRange(1.20f, 1.22f), + "Flop spin ratios should reach the ultra-high-spin rebound cap."); } [Test] [Category("RolloutPhysics")] - public void SpinDragProgressiveCap_DefaultProfile_IdenticalToCurrentBehavior() + public void SpinDragProgressiveCap_DefaultProfile_AppliesProgressiveBoost() { - // Default profile has BoostMax=0, so progressive cap adds nothing. - // SR=0.40 at high Re should still get the standard cap of 1.20. + // Default profile has BoostMax=0.25, so at SR=0.40 the progressive cap + // raises the effective cap above the flat 1.20. float multiplier = FlightAerodynamicsModel.GetSpinDragMultiplier(0.40f, 120000.0f, FlightProfile.Default); - Assert.That(multiplier, Is.EqualTo(1.20f).Within(0.001f), - "Default profile (BoostMax=0) must produce identical results to pre-change behavior."); + Assert.That(multiplier, Is.InRange(1.28f, 1.30f), + "Default profile progressive cap should boost effective cap above flat 1.20 for mid-high SR."); } [Test] @@ -348,12 +347,14 @@ public void SpinDragProgressiveCap_IsMonotonic() [Test] [Category("RolloutPhysics")] - public void MidSpinClBoost_DefaultProfile_ReturnsOne() + public void MidSpinClBoost_DefaultProfile_AppliesBoost() { + // Default profile has MidSpinClBoostMax=0.50, SrStart=0.17, SrEnd=0.31. + // SR=0.22 is inside the bell curve, so boost should be > 1.0. float boost = FlightAerodynamicsModel.GetMidSpinClBoost(0.22f, FlightProfile.Default); - Assert.That(boost, Is.EqualTo(1.0f).Within(0.0001f), - "Default profile (MidSpinClBoostMax=0) must return 1.0 (no boost)."); + Assert.That(boost, Is.GreaterThan(1.30f), + "Default profile should apply mid-spin Cl boost for SR in [0.17, 0.31]."); } [Test] @@ -361,10 +362,11 @@ public void MidSpinClBoost_DefaultProfile_ReturnsOne() public void MidSpinClBoost_BellPeaksNearMidpoint() { var profile = new FlightProfile { MidSpinClBoostMax = 0.10f }; - float boost = FlightAerodynamicsModel.GetMidSpinClBoost(0.225f, profile); + // Midpoint of default SrStart=0.17, SrEnd=0.31 is SR=0.24 + float boost = FlightAerodynamicsModel.GetMidSpinClBoost(0.24f, profile); Assert.That(boost, Is.InRange(1.09f, 1.10f), - "Bell should peak near 1.10 at midpoint of [0.10, 0.35]."); + "Bell should peak near 1.10 at midpoint of [0.17, 0.31]."); } [Test] @@ -391,13 +393,14 @@ public void MidSpinClBoost_AboveSrEnd_NoBoost() [Test] [Category("RolloutPhysics")] - public void MidSpinClBoost_Shot9Regime_GetsNearFullBoost() + public void MidSpinClBoost_Shot9Regime_GetsSignificantBoost() { var profile = new FlightProfile { MidSpinClBoostMax = 0.10f }; + // SR=0.213 is in the rising phase of bell [0.17, 0.31] float boost = FlightAerodynamicsModel.GetMidSpinClBoost(0.213f, profile); - Assert.That(boost, Is.GreaterThan(1.09f), - "Shot 9 (SR=0.213) should get near-full boost."); + Assert.That(boost, Is.GreaterThan(1.05f), + "Shot 9 (SR=0.213) should get significant boost."); } [Test] @@ -484,7 +487,7 @@ public void WoodLowShot_Distance_Baseline() Assert.Pass("Baseline: 122.5/180.1 yd (wood_low_test_shot.json)"); } -[Test] + [Test] [Explicit("Requires manual validation in Godot - cannot run in dotnet test")] [Category("DistanceBenchmark")] public void FlopShot_Distance_Baseline() diff --git a/tools/shot_calibration/README.md b/tools/shot_calibration/README.md index d5eb81d..98b557f 100644 --- a/tools/shot_calibration/README.md +++ b/tools/shot_calibration/README.md @@ -37,8 +37,8 @@ python tools/shot_calibration/calibrate.py run # One session only (outputs stay in that session's directory) python tools/shot_calibration/calibrate.py run --session assets/data/shot_session_3 -# Disable carry exception layer (pure physics baseline) -python tools/shot_calibration/calibrate.py run --no-carry-exceptions +# Optional: explicitly enable carry exception layer (diagnostic-only) +python tools/shot_calibration/calibrate.py run --carry-exceptions assets/data/calibration/carry_exception_profile.json ``` ### Analyze (compare + diagnose + accuracy reports) @@ -59,6 +59,8 @@ python tools/shot_calibration/calibrate.py analyze --session assets/data/shot_se python tools/shot_calibration/calibrate.py analyze --carry-exceptions assets/data/calibration/carry_exception_profile.json ``` +`run` and `analyze` default to raw physics comparison (no carry exception layer) unless you explicitly pass `--carry-exceptions`. + The `analyze` command: 1. Compares `physics.csv` vs `flightscope.csv` → `shot_diff_analysis.csv` 2. Prints a diagnostic report @@ -117,9 +119,9 @@ Profile overrides are JSON files loaded at runtime — no C# rebuild needed betw For calibration-only analysis, `compare_csv.py` can apply a bounded, regime-based carry correction layer after raw physics output. -- Default profile path: `assets/data/calibration/carry_exception_profile.json` -- Auto-loaded by `compare_csv.py` and `calibrate.py` when present -- Disable with `--no-carry-exceptions` +- Default mode: disabled (raw physics only) +- Enable explicitly with `--carry-exceptions assets/data/calibration/carry_exception_profile.json` +- Disable explicitly with `--no-carry-exceptions` The layer supports: @@ -357,7 +359,7 @@ When different failing shots need opposite adjustments to the same parameter, it | `export_physics_json.gd` | Simulate all shots, write JSON | Godot | | `physics_export_data.gd` | Shared helper for shot discovery | (not run directly) | | `export_flightscope_csv.py` | Export FlightScope reference as CSV | Python | -| `compare_csv.py` | Diff physics vs FlightScope (+ optional carry exception layer) → `shot_diff_analysis.csv` | Python | +| `compare_csv.py` | Diff physics vs FlightScope (raw by default; optional carry exception layer when explicitly enabled) → `shot_diff_analysis.csv` | Python | | `calibration_analyzer.py` | Generate diagnostic report from diff CSV | Python | | `generate_profile.py` | Build profile override JSON from diagnostics | Python | | `flightscope_scraper.py` | Scrape FlightScope trajectory optimizer | Python + Chrome/Brave | diff --git a/tools/shot_calibration/calibrate.py b/tools/shot_calibration/calibrate.py index e0b6dc9..8ecc653 100644 --- a/tools/shot_calibration/calibrate.py +++ b/tools/shot_calibration/calibrate.py @@ -6,7 +6,7 @@ Usage: python tools/shot_calibration/calibrate.py run python tools/shot_calibration/calibrate.py run --profile assets/data/calibration/calibration_profile.json - python tools/shot_calibration/calibrate.py run --no-carry-exceptions + python tools/shot_calibration/calibrate.py run --carry-exceptions assets/data/calibration/carry_exception_profile.json python tools/shot_calibration/calibrate.py analyze python tools/shot_calibration/calibrate.py analyze --session assets/data/shot_session_3 python tools/shot_calibration/calibrate.py analyze --carry-exceptions assets/data/calibration/carry_exception_profile.json @@ -35,7 +35,6 @@ SOT_CSV = os.path.join(DATA_DIR, "SOT", "flightscope_SoT.csv") DIFF_CSV = os.path.join(CALIBRATION_DIR, "shot_diff_analysis.csv") DEFAULT_PROFILE = os.path.join(CALIBRATION_DIR, "calibration_profile.json") -DEFAULT_CARRY_EXCEPTION_PROFILE = os.path.join(CALIBRATION_DIR, "carry_exception_profile.json") sys.path.insert(0, SCRIPT_DIR) from calibration_analyzer import load_diff_csv, analyze, format_report @@ -175,7 +174,7 @@ def run_command(cmd, description, cwd=None): def resolve_carry_exception_profile(args): - """Resolve optional carry-exception profile path from CLI args/default.""" + """Resolve optional carry-exception profile path from CLI args only.""" if getattr(args, "no_carry_exceptions", False): return None @@ -183,9 +182,6 @@ def resolve_carry_exception_profile(args): if explicit: return os.path.normpath(os.path.join(PROJECT_ROOT, explicit)) if not os.path.isabs(explicit) else os.path.normpath(explicit) - if os.path.exists(DEFAULT_CARRY_EXCEPTION_PROFILE): - return DEFAULT_CARRY_EXCEPTION_PROFILE - return None @@ -524,10 +520,121 @@ def _compute_accuracy_stats(diffs, thresholds): } -def _generate_accuracy_reports(diff_csv, output_dir, top_n=20): +def _safe_float(value): + try: + return float(value) + except (TypeError, ValueError): + return None + + +def _get_numeric(row, primary_key, fallback_key=None): + value = _safe_float(row.get(primary_key)) + if value is not None or fallback_key is None: + return value + return _safe_float(row.get(fallback_key)) + + +def _percentage(count, total): + if total <= 0: + return 0.0 + return round(count / total * 100, 1) + + +def _window_target_abs_yd(carry_yd): + if carry_yd is None: + return 3.0 + if carry_yd < 115.0: + return 1.0 + if carry_yd <= 150.0: + return 3.0 + if carry_yd <= 180.0: + return 6.0 + if carry_yd <= 200.0: + return 10.0 + return 15.0 + + +def _resolve_critical_baseline(args, output_dir): + explicit = getattr(args, "critical_baseline", None) + if explicit: + return os.path.normpath(os.path.join(PROJECT_ROOT, explicit)) if not os.path.isabs(explicit) else os.path.normpath(explicit) + + candidates = sorted( + os.path.join(output_dir, name) + for name in os.listdir(output_dir) + if name.startswith("openfairway_critical_carry_") and name.endswith(".csv") + ) + return candidates[-1] if candidates else None + + +def _summarize_baseline_comparison(ref_rows, baseline_path): + if not baseline_path or not os.path.exists(baseline_path): + return None + + current_by_name = {row["shot_name"]: row for row in ref_rows if row.get("shot_name")} + with open(baseline_path, "r") as f: + baseline_rows = [row for row in csv.DictReader(f) if row.get("shot_name")] + + improved = 0 + regressed = 0 + unchanged = 0 + within_target_now = 0 + missing = [] + remaining = [] + + for baseline_row in baseline_rows: + shot_name = baseline_row["shot_name"] + current_row = current_by_name.get(shot_name) + if current_row is None: + missing.append(shot_name) + continue + + prev_abs = abs(_get_numeric(baseline_row, "diff_carry_raw_yd", "diff_carry_yd") or 0.0) + curr_abs = abs(_get_numeric(current_row, "diff_carry_raw_yd", "diff_carry_yd") or 0.0) + carry_yd = _get_numeric(current_row, "flightscope_carry_yd") + if carry_yd is None: + carry_yd = _get_numeric(baseline_row, "flightscope_carry_yd") + target_abs = _window_target_abs_yd(carry_yd) + + if curr_abs < prev_abs - 0.05: + improved += 1 + elif curr_abs > prev_abs + 0.05: + regressed += 1 + else: + unchanged += 1 + + if curr_abs <= target_abs: + within_target_now += 1 + + remaining.append({ + "shot_name": shot_name, + "current_abs_yd": round(curr_abs, 1), + "baseline_abs_yd": round(prev_abs, 1), + "target_abs_yd": round(target_abs, 1), + "carry_window": current_row.get("carry_window") or baseline_row.get("carry_window") or "", + }) + + remaining.sort(key=lambda row: row["current_abs_yd"], reverse=True) + + tracked = len(baseline_rows) - len(missing) + return { + "path": baseline_path, + "shots": len(baseline_rows), + "tracked_shots": tracked, + "missing_shots": missing, + "improved": improved, + "regressed": regressed, + "unchanged": unchanged, + "within_target_now": within_target_now, + "within_target_now_pct": _percentage(within_target_now, tracked), + "top_remaining_outliers": remaining[:10], + } + + +def _generate_accuracy_reports(diff_csv, output_dir, top_n=20, critical_baseline=None): """Read shot_diff_analysis.csv and generate accuracy report files. - Returns list of paths written. + Returns tuple of (list_of_paths_written, full_summary_dict). """ with open(diff_csv, "r") as f: reader = csv.DictReader(f) @@ -540,16 +647,13 @@ def _generate_accuracy_reports(diff_csv, output_dir, top_n=20): or float(r.get("flightscope_total_yd", 0) or 0) > 0 ] - carry_diffs = [float(r["diff_carry_yd"]) for r in ref_rows if r.get("diff_carry_yd")] + carry_diffs = [_get_numeric(r, "diff_carry_yd") for r in ref_rows] + carry_diffs = [d for d in carry_diffs if d is not None] + carry_raw_diffs = [_get_numeric(r, "diff_carry_raw_yd", "diff_carry_yd") for r in ref_rows] + carry_raw_diffs = [d for d in carry_raw_diffs if d is not None] total_diffs = [float(r["diff_total_yd"]) for r in ref_rows if r.get("diff_total_yd")] apex_diffs = [float(r["diff_apex_ft"]) for r in ref_rows if r.get("diff_apex_ft")] - def _safe_float(value): - try: - return float(value) - except (TypeError, ValueError): - return None - short_rows = [ r for r in ref_rows if _safe_float(r.get("flightscope_carry_yd")) is not None @@ -593,26 +697,68 @@ def _safe_float(value): apex_accuracy = {f"{k}_ft": v for k, v in apex_stats.items() if k != "within_pct"} apex_accuracy["within_pct_ft"] = apex_stats.get("within_pct", {}) - short_carry_diffs = [float(r["diff_carry_yd"]) for r in short_rows if r.get("diff_carry_yd")] + short_carry_diffs = [_get_numeric(r, "diff_carry_yd") for r in short_rows] + short_carry_diffs = [d for d in short_carry_diffs if d is not None] short_stats = _compute_accuracy_stats(short_carry_diffs, [0.5, 1, 2, 3]) short_accuracy = {f"{k}_yd": v for k, v in short_stats.items() if k != "within_pct"} short_accuracy["within_pct_yd"] = short_stats.get("within_pct", {}) - mid_115_150_diffs = [float(r["diff_carry_yd"]) for r in mid_115_150_rows if r.get("diff_carry_yd")] + mid_115_150_diffs = [_get_numeric(r, "diff_carry_yd") for r in mid_115_150_rows] + mid_115_150_diffs = [d for d in mid_115_150_diffs if d is not None] mid_115_150_stats = _compute_accuracy_stats(mid_115_150_diffs, [1, 2, 3, 5]) mid_115_150_accuracy = {f"{k}_yd": v for k, v in mid_115_150_stats.items() if k != "within_pct"} mid_115_150_accuracy["within_pct_yd"] = mid_115_150_stats.get("within_pct", {}) - mid_150_180_diffs = [float(r["diff_carry_yd"]) for r in mid_150_180_rows if r.get("diff_carry_yd")] + mid_150_180_diffs = [_get_numeric(r, "diff_carry_yd") for r in mid_150_180_rows] + mid_150_180_diffs = [d for d in mid_150_180_diffs if d is not None] mid_150_180_stats = _compute_accuracy_stats(mid_150_180_diffs, [3, 5, 6, 7, 10]) mid_150_180_accuracy = {f"{k}_yd": v for k, v in mid_150_180_stats.items() if k != "within_pct"} mid_150_180_accuracy["within_pct_yd"] = mid_150_180_stats.get("within_pct", {}) - long_carry_diffs = [float(r["diff_carry_yd"]) for r in long_rows if r.get("diff_carry_yd")] - long_stats = _compute_accuracy_stats(long_carry_diffs, [3, 5, 7, 10]) + long_carry_diffs = [_get_numeric(r, "diff_carry_yd") for r in long_rows] + long_carry_diffs = [d for d in long_carry_diffs if d is not None] + long_stats = _compute_accuracy_stats(long_carry_diffs, [3, 5, 7, 10, 15]) long_accuracy = {f"{k}_yd": v for k, v in long_stats.items() if k != "within_pct"} long_accuracy["within_pct_yd"] = long_stats.get("within_pct", {}) + short_raw_diffs = [_get_numeric(r, "diff_carry_raw_yd", "diff_carry_yd") for r in short_rows] + short_raw_diffs = [d for d in short_raw_diffs if d is not None] + short_raw_stats = _compute_accuracy_stats(short_raw_diffs, [0.5, 1, 2, 3]) + short_physics_accuracy = {f"{k}_yd": v for k, v in short_raw_stats.items() if k != "within_pct"} + short_physics_accuracy["within_pct_yd"] = short_raw_stats.get("within_pct", {}) + + mid_115_150_raw_diffs = [_get_numeric(r, "diff_carry_raw_yd", "diff_carry_yd") for r in mid_115_150_rows] + mid_115_150_raw_diffs = [d for d in mid_115_150_raw_diffs if d is not None] + mid_115_150_raw_stats = _compute_accuracy_stats(mid_115_150_raw_diffs, [1, 2, 3, 5]) + mid_115_150_physics = {f"{k}_yd": v for k, v in mid_115_150_raw_stats.items() if k != "within_pct"} + mid_115_150_physics["within_pct_yd"] = mid_115_150_raw_stats.get("within_pct", {}) + + mid_150_180_raw_diffs = [_get_numeric(r, "diff_carry_raw_yd", "diff_carry_yd") for r in mid_150_180_rows] + mid_150_180_raw_diffs = [d for d in mid_150_180_raw_diffs if d is not None] + mid_150_180_raw_stats = _compute_accuracy_stats(mid_150_180_raw_diffs, [3, 5, 6, 7, 10]) + mid_150_180_physics = {f"{k}_yd": v for k, v in mid_150_180_raw_stats.items() if k != "within_pct"} + mid_150_180_physics["within_pct_yd"] = mid_150_180_raw_stats.get("within_pct", {}) + + long_raw_diffs = [_get_numeric(r, "diff_carry_raw_yd", "diff_carry_yd") for r in long_rows] + long_raw_diffs = [d for d in long_raw_diffs if d is not None] + long_raw_stats = _compute_accuracy_stats(long_raw_diffs, [3, 5, 7, 10, 15]) + long_physics_accuracy = {f"{k}_yd": v for k, v in long_raw_stats.items() if k != "within_pct"} + long_physics_accuracy["within_pct_yd"] = long_raw_stats.get("within_pct", {}) + + physics_within_3 = sum(1 for d in carry_raw_diffs if abs(d) <= 3.0) + residual_candidates = [] + short_residual = 0 + for row in ref_rows: + raw_diff = _get_numeric(row, "diff_carry_raw_yd", "diff_carry_yd") + carry_yd = _safe_float(row.get("flightscope_carry_yd")) + if raw_diff is None: + continue + target_abs = _window_target_abs_yd(carry_yd) + if abs(raw_diff) > target_abs: + residual_candidates.append(row) + if carry_yd is not None and carry_yd < 115.0: + short_residual += 1 + full_summary = { "timestamp": datetime.datetime.now().strftime("%Y-%m-%dT%H:%M"), "total_shots": len(all_rows), @@ -638,17 +784,64 @@ def _safe_float(value): "carry_accuracy": carry_accuracy, "total_accuracy": total_accuracy, "apex_accuracy": apex_accuracy, + "physics_only_priority_gates": { + "short_carry_lt_115yd": { + "shots": len(short_rows), + "carry_accuracy": short_physics_accuracy, + }, + "carry_115_150yd": { + "shots": len(mid_115_150_rows), + "carry_accuracy": mid_115_150_physics, + }, + "carry_150_180yd": { + "shots": len(mid_150_180_rows), + "carry_accuracy": mid_150_180_physics, + }, + "long_carry_gt_200yd": { + "shots": len(long_rows), + "carry_accuracy": long_physics_accuracy, + }, + }, + "objectives": { + "physics_only": { + "shots": len(carry_raw_diffs), + "within_3yd_pct": _percentage(physics_within_3, len(carry_raw_diffs)), + "residual_outliers_gt_window_target": len(residual_candidates), + }, + "short_shot_priority": { + "shots": len(short_rows), + "goal_within_1yd_pct": 80.0, + "actual_within_1yd_pct": short_raw_stats.get("within_pct", {}).get("1", 0.0), + "actual_within_0.5yd_pct": short_raw_stats.get("within_pct", {}).get("0.5", 0.0), + "actual_within_3yd_pct": short_raw_stats.get("within_pct", {}).get("3", 0.0), + }, + "residual_regime_candidates": { + "count": len(residual_candidates), + "short_count": short_residual, + "by_window": { + "<115": sum(1 for row in residual_candidates if _safe_float(row.get("flightscope_carry_yd")) is not None and _safe_float(row.get("flightscope_carry_yd")) < 115.0), + "115-150": sum(1 for row in residual_candidates if _safe_float(row.get("flightscope_carry_yd")) is not None and 115.0 < _safe_float(row.get("flightscope_carry_yd")) <= 150.0), + "150-180": sum(1 for row in residual_candidates if _safe_float(row.get("flightscope_carry_yd")) is not None and 150.0 < _safe_float(row.get("flightscope_carry_yd")) <= 180.0), + "180-200": sum(1 for row in residual_candidates if _safe_float(row.get("flightscope_carry_yd")) is not None and 180.0 < _safe_float(row.get("flightscope_carry_yd")) <= 200.0), + ">200": sum(1 for row in residual_candidates if _safe_float(row.get("flightscope_carry_yd")) is not None and _safe_float(row.get("flightscope_carry_yd")) > 200.0), + }, + }, + }, } + baseline_summary = _summarize_baseline_comparison(ref_rows, critical_baseline) + if baseline_summary is not None: + full_summary["critical_baseline"] = baseline_summary + full_path = os.path.join(output_dir, f"openfairway_accuracy_summary_{timestamp}.json") with open(full_path, "w") as f: json.dump(full_summary, f, indent=2) f.write("\n") written.append(full_path) - # --- 2. Critical carry CSV (top 20 by |diff_carry_yd|) --- + # --- 2. Critical carry CSV (top N by |raw diff_carry_yd|) --- sorted_by_carry = sorted( ref_rows, - key=lambda r: abs(float(r.get("diff_carry_yd", 0) or 0)), + key=lambda r: abs(_get_numeric(r, "diff_carry_raw_yd", "diff_carry_yd") or 0.0), reverse=True, )[:top_n] carry_csv_path = os.path.join(output_dir, f"openfairway_critical_carry_{timestamp}.csv") @@ -678,7 +871,7 @@ def _safe_float(value): writer.writerows(sorted_by_overall) written.append(overall_csv_path) - return written + return written, full_summary def cmd_analyze(args): @@ -783,10 +976,41 @@ def cmd_analyze(args): # Step 4: Generate accuracy reports print("\n--- Generating accuracy reports ---") - report_paths = _generate_accuracy_reports(diff_csv, report_output_dir, top_n=args.show) + critical_baseline = _resolve_critical_baseline(args, report_output_dir) + if critical_baseline: + print(f" Critical baseline: {critical_baseline}") + report_paths, report_summary = _generate_accuracy_reports( + diff_csv, + report_output_dir, + top_n=args.show, + critical_baseline=critical_baseline, + ) for p in report_paths: print(f" {p}") + objectives = report_summary.get("objectives", {}) + physics_only = objectives.get("physics_only", {}) + short_priority = objectives.get("short_shot_priority", {}) + print( + " Physics-only within ±3 yd: " + f"{physics_only.get('within_3yd_pct', 0.0):.1f}%" + ) + print( + " Short shots <115 yd within ±1 yd: " + f"{short_priority.get('actual_within_1yd_pct', 0.0):.1f}%" + ) + print( + " Short shots <115 yd within ±0.5 yd: " + f"{short_priority.get('actual_within_0.5yd_pct', 0.0):.1f}%" + ) + + baseline_summary = report_summary.get("critical_baseline") + if baseline_summary: + print( + " Baseline critical shots improved/regressed: " + f"{baseline_summary.get('improved', 0)}/{baseline_summary.get('regressed', 0)}" + ) + # Step 5: Save iteration snapshot os.makedirs(history_dir, exist_ok=True) iteration_num = _get_next_iteration(history_dir) @@ -926,7 +1150,7 @@ def parse_args(): run_parser.add_argument("--export-flightscope", action="store_true", help="Run export_flightscope_csv.py instead of using SoT CSV") run_parser.add_argument("--session", default=None, help="Session directory path (all outputs go into session dir)") run_parser.add_argument("--no-sessions", action="store_true", help="Exclude session directories (standard shots only)") - run_parser.add_argument("--carry-exceptions", default=None, help="Path to carry exception profile JSON") + run_parser.add_argument("--carry-exceptions", default=None, help="Path to carry exception profile JSON (explicit opt-in; default disabled)") run_parser.add_argument("--no-carry-exceptions", action="store_true", help="Disable carry exception profile") analyze_parser = subparsers.add_parser("analyze", help="Post-scrape analysis: compare, diagnose, generate accuracy reports") @@ -934,7 +1158,8 @@ def parse_args(): analyze_parser.add_argument("--no-sessions", action="store_true", help="Exclude session directories (standard shots only)") analyze_parser.add_argument("--flightscope-export", action="store_true", help="Re-export FlightScope CSV before comparing") analyze_parser.add_argument("--show", type=int, default=20, help="Number of worst shots to include in critical CSVs (default: 20)") - analyze_parser.add_argument("--carry-exceptions", default=None, help="Path to carry exception profile JSON") + analyze_parser.add_argument("--critical-baseline", default=None, help="Optional prior critical-carry CSV to compare against (defaults to latest existing report in assets/data)") + analyze_parser.add_argument("--carry-exceptions", default=None, help="Path to carry exception profile JSON (explicit opt-in; default disabled)") analyze_parser.add_argument("--no-carry-exceptions", action="store_true", help="Disable carry exception profile") subparsers.add_parser("status", help="Show last iteration summary") diff --git a/tools/shot_calibration/carry_exception_layer.py b/tools/shot_calibration/carry_exception_layer.py index 19c699a..2958e8b 100644 --- a/tools/shot_calibration/carry_exception_layer.py +++ b/tools/shot_calibration/carry_exception_layer.py @@ -72,8 +72,10 @@ def build_regime_key(speed_mph, vla_deg, total_spin_rpm): if speed_mph < 60.0: speed_bin = "S0" + elif speed_mph < 72.0: + speed_bin = "S1a" elif speed_mph < 85.0: - speed_bin = "S1" + speed_bin = "S1b" elif speed_mph < 105.0: speed_bin = "S2" elif speed_mph < 120.0: diff --git a/tools/shot_calibration/compare_csv.py b/tools/shot_calibration/compare_csv.py index 922df25..b8c3d78 100644 --- a/tools/shot_calibration/compare_csv.py +++ b/tools/shot_calibration/compare_csv.py @@ -12,16 +12,13 @@ import os import sys -from carry_exception_layer import apply_carry_exceptions, load_profile +from carry_exception_layer import apply_carry_exceptions, build_regime_key, load_profile SCRIPT_DIR = os.path.dirname(__file__) DEFAULT_OUTPUT_PATH = os.path.normpath( os.path.join(SCRIPT_DIR, "..", "..", "assets", "data", "calibration", "shot_diff_analysis.csv") ) -DEFAULT_CARRY_EXCEPTION_PROFILE = os.path.normpath( - os.path.join(SCRIPT_DIR, "..", "..", "assets", "data", "calibration", "carry_exception_profile.json") -) CARRY_PASS = 3.0 CARRY_MODERATE = 7.0 @@ -35,6 +32,8 @@ "hla_deg", "total_spin_rpm", "spin_axis_deg", + "launch_regime_key", + "carry_window", "physics_carry_yd", "flightscope_carry_yd", "diff_carry_yd", @@ -123,6 +122,21 @@ def classify_status(diff_carry, diff_total): return "pass" +def classify_carry_window(carry_yd): + """Bucket carry distance into the same priority windows used by analysis.""" + if carry_yd is None: + return "" + if carry_yd < 115.0: + return "<115" + if carry_yd <= 150.0: + return "115-150" + if carry_yd <= 180.0: + return "150-180" + if carry_yd <= 200.0: + return "180-200" + return ">200" + + def build_row(shot_name, physics_row, flightscope_row): speed = choose_input_value( physics_row.get("speed_mph"), @@ -144,6 +158,7 @@ def build_row(shot_name, physics_row, flightscope_row): physics_row.get("spin_axis_deg"), flightscope_row.get("spin_axis_deg"), ) + regime_key = build_regime_key(speed, vla, spin) p_carry = parse_metric(physics_row.get("carry_yd")) f_carry = parse_metric(flightscope_row.get("carry_yd")) @@ -168,6 +183,8 @@ def build_row(shot_name, physics_row, flightscope_row): "hla_deg": fmt_decimal(hla, 1), "total_spin_rpm": fmt_decimal(spin, 0), "spin_axis_deg": fmt_decimal(spin_axis, 1), + "launch_regime_key": regime_key, + "carry_window": classify_carry_window(f_carry), "physics_carry_yd": fmt_decimal(p_carry, 1), "flightscope_carry_yd": fmt_decimal(f_carry, 1), "diff_carry_yd": fmt_decimal(diff_carry, 1), @@ -214,12 +231,12 @@ def parse_args(): parser.add_argument( "--carry-exceptions", default=None, - help="Optional path to carry exception profile JSON", + help="Optional path to carry exception profile JSON (explicit opt-in; default is disabled)", ) parser.add_argument( "--no-carry-exceptions", action="store_true", - help="Disable carry exception profile loading (even if default profile exists)", + help="Disable carry exception profile loading", ) return parser.parse_args() @@ -232,12 +249,7 @@ def main(): all_shots = sorted(set(physics.keys()) | set(flightscope.keys())) rows = [build_row(shot, physics.get(shot, {}), flightscope.get(shot, {})) for shot in all_shots] - carry_profile_path = None - if not args.no_carry_exceptions: - if args.carry_exceptions: - carry_profile_path = os.path.normpath(args.carry_exceptions) - elif os.path.exists(DEFAULT_CARRY_EXCEPTION_PROFILE): - carry_profile_path = DEFAULT_CARRY_EXCEPTION_PROFILE + carry_profile_path = None if args.no_carry_exceptions else (os.path.normpath(args.carry_exceptions) if args.carry_exceptions else None) applied = 0 if carry_profile_path: diff --git a/tools/shot_calibration/test_carry_exception_layer.py b/tools/shot_calibration/test_carry_exception_layer.py index 0334ccc..ab41627 100644 --- a/tools/shot_calibration/test_carry_exception_layer.py +++ b/tools/shot_calibration/test_carry_exception_layer.py @@ -155,7 +155,7 @@ def test_short_priority_consumes_top_n_budget(self): "long_max_abs_yd": 6.0, }, "offset_yd_by_regime": { - "I-S1-V2-P2": -1.0, + "I-S1a-V2-P2": -1.0, "D-S4-V1-P1": 6.0, }, } @@ -191,7 +191,7 @@ def test_shot_offset_precedence_over_regime(self): "long_max_abs_yd": 6.0, }, "offset_yd_by_regime": { - "I-S1-V1-P1": -1.0, + "I-S1b-V1-P1": -1.0, }, "offset_yd_by_shot_name": { "s3_shot_5i_11": -3.2, diff --git a/ui/RangeDispersionPlot.cs b/ui/RangeDispersionPlot.cs index c295587..ef37b8a 100644 --- a/ui/RangeDispersionPlot.cs +++ b/ui/RangeDispersionPlot.cs @@ -44,6 +44,8 @@ public partial class RangeDispersionPlot : Control private readonly List _shots = new(); private bool _clubOverlayEnabled = true; + private readonly HashSet _visibleClubs = new(StringComparer.OrdinalIgnoreCase); + private bool _hasClubVisibilityFilter; private sealed class ClubOverlay { @@ -97,6 +99,24 @@ public void SetClubOverlayEnabled(bool enabled) QueueRedraw(); } + public void SetVisibleClubs(IReadOnlyCollection clubLabels) + { + _visibleClubs.Clear(); + _hasClubVisibilityFilter = clubLabels != null; + + if (clubLabels != null) + { + foreach (string clubLabel in clubLabels) + { + string normalized = RangeClubCatalog.NormalizeLabel(clubLabel); + if (!string.IsNullOrWhiteSpace(normalized)) + _visibleClubs.Add(normalized); + } + } + + QueueRedraw(); + } + public static Color ResolveClubColor(string clubLabel) { string normalized = RangeClubCatalog.NormalizeLabel(clubLabel); @@ -128,15 +148,24 @@ public override void _Draw() return; } + if (!HasVisibleShots()) + { + DrawCenteredLabel("All clubs hidden.", plotRect); + return; + } + List overlays = _clubOverlayEnabled ? BuildClubOverlays(plotRect) : new List(); foreach (ClubOverlay overlay in overlays) - DrawClubEllipse(overlay); + DrawClubEllipse(plotRect, overlay); foreach (RangeDispersionShot shot in _shots) { + if (!IsClubVisible(shot.ClubLabel)) + continue; + Vector2 point = MapShotToPlot(plotRect, shot, FixedXAbsMaxYards, FixedYMinYards, FixedYMaxYards); Color pointColor = ResolveClubColor(shot.ClubLabel); DrawCircle(point, 4.0f, pointColor); @@ -288,6 +317,9 @@ private List BuildClubOverlays(Rect2 plotRect) continue; string clubLabel = RangeClubCatalog.NormalizeLabel(shot.ClubLabel); + if (!IsClubVisible(clubLabel)) + continue; + if (!groups.TryGetValue(clubLabel, out List clubShots)) { clubShots = new List(); @@ -330,7 +362,7 @@ private List BuildClubOverlays(Rect2 plotRect) return overlays; } - private void DrawClubEllipse(ClubOverlay overlay) + private void DrawClubEllipse(Rect2 plotRect, ClubOverlay overlay) { List points = BuildEllipsePolyline(overlay.Center, overlay.MajorAxis, overlay.MajorRadius, overlay.MinorRadius); if (points.Count < 2) @@ -339,8 +371,11 @@ private void DrawClubEllipse(ClubOverlay overlay) Color stroke = new Color(overlay.Color.R, overlay.Color.G, overlay.Color.B, 0.82f); for (int i = 0; i < points.Count - 1; i++) { - DrawLine(points[i], points[i + 1], EllipseShadowColor, 3.6f, antialiased: true); - DrawLine(points[i], points[i + 1], stroke, 2.4f, antialiased: true); + if (!TryClipLineToRect(plotRect, points[i], points[i + 1], out Vector2 clippedFrom, out Vector2 clippedTo)) + continue; + + DrawLine(clippedFrom, clippedTo, EllipseShadowColor, 3.6f, antialiased: true); + DrawLine(clippedFrom, clippedTo, stroke, 2.4f, antialiased: true); } } @@ -566,4 +601,79 @@ private static bool IsFinite(float value) { return !float.IsNaN(value) && !float.IsInfinity(value); } + + private bool HasVisibleShots() + { + foreach (RangeDispersionShot shot in _shots) + { + if (shot != null && IsClubVisible(shot.ClubLabel)) + return true; + } + + return false; + } + + private bool IsClubVisible(string clubLabel) + { + if (!_hasClubVisibilityFilter) + return true; + + string normalized = RangeClubCatalog.NormalizeLabel(clubLabel); + return _visibleClubs.Contains(normalized); + } + + private static bool TryClipLineToRect( + Rect2 rect, + Vector2 from, + Vector2 to, + out Vector2 clippedFrom, + out Vector2 clippedTo) + { + clippedFrom = from; + clippedTo = to; + + float t0 = 0.0f; + float t1 = 1.0f; + Vector2 delta = to - from; + + if (!ClipTest(-delta.X, from.X - rect.Position.X, ref t0, ref t1)) + return false; + if (!ClipTest(delta.X, rect.End.X - from.X, ref t0, ref t1)) + return false; + if (!ClipTest(-delta.Y, from.Y - rect.Position.Y, ref t0, ref t1)) + return false; + if (!ClipTest(delta.Y, rect.End.Y - from.Y, ref t0, ref t1)) + return false; + + clippedFrom = from + (delta * t0); + clippedTo = from + (delta * t1); + return true; + } + + private static bool ClipTest(float p, float q, ref float t0, ref float t1) + { + const float epsilon = 0.0001f; + if (Mathf.Abs(p) <= epsilon) + return q >= 0.0f; + + float ratio = q / p; + if (p < 0.0f) + { + if (ratio > t1) + return false; + + if (ratio > t0) + t0 = ratio; + } + else + { + if (ratio < t0) + return false; + + if (ratio < t1) + t1 = ratio; + } + + return true; + } } diff --git a/ui/RangeDispersionPopup.cs b/ui/RangeDispersionPopup.cs index e6c477a..f15e5bc 100644 --- a/ui/RangeDispersionPopup.cs +++ b/ui/RangeDispersionPopup.cs @@ -33,10 +33,13 @@ public partial class RangeDispersionPopup : CanvasLayer private ItemList _compareRightLegend; private readonly List _sessions = new(); + private readonly Dictionary> _singleViewDisabledClubsBySession = + new(System.StringComparer.OrdinalIgnoreCase); private bool _isRangeMode; private bool _isCompareMode; private bool _isSyncingSelectors; private string _activeSessionFileName = string.Empty; + private string _singleViewLegendSessionKey = string.Empty; private RangeDispersionSession _activeDraftSession; public override void _Ready() @@ -74,6 +77,7 @@ public override void _Ready() _sessionOption.ItemSelected += OnSessionSelected; _compareLeftOption.ItemSelected += OnCompareOptionChanged; _compareRightOption.ItemSelected += OnCompareOptionChanged; + _singleLegend.GuiInput += OnSingleLegendGuiInput; _titleLabel.Text = "Shot Dispersion"; Visible = false; @@ -101,6 +105,8 @@ public override void _ExitTree() _compareLeftOption.ItemSelected -= OnCompareOptionChanged; if (_compareRightOption != null) _compareRightOption.ItemSelected -= OnCompareOptionChanged; + if (_singleLegend != null) + _singleLegend.GuiInput -= OnSingleLegendGuiInput; } public override void _UnhandledInput(InputEvent @event) @@ -281,6 +287,7 @@ private void ReloadSessions() _sessions.AddRange(loaded); SortSessionsNewestFirst(); + PruneSingleViewLegendState(); if (!IsDraftActive() && !HasSession(_activeSessionFileName)) _activeSessionFileName = _sessions.Count > 0 ? _sessions[0].FileName : string.Empty; @@ -369,6 +376,35 @@ private void ApplyViewState() RefreshSingleView(); } + private void OnSingleLegendGuiInput(InputEvent @event) + { + if (_isCompareMode || !Visible || _singleLegend == null) + return; + + if (@event is not InputEventMouseButton mouseEvent) + return; + + if (!mouseEvent.Pressed || mouseEvent.ButtonIndex != MouseButton.Left) + return; + + int itemIndex = _singleLegend.GetItemAtPosition(_singleLegend.GetLocalMousePosition(), false); + if (itemIndex < 0) + return; + + string clubLabel = GetLegendClubLabel(_singleLegend, itemIndex); + if (string.IsNullOrWhiteSpace(clubLabel)) + return; + + if (!_singleViewDisabledClubsBySession.TryGetValue(_singleViewLegendSessionKey, out HashSet disabledClubs)) + return; + + if (!disabledClubs.Add(clubLabel)) + disabledClubs.Remove(clubLabel); + + RefreshSingleView(); + GetViewport().SetInputAsHandled(); + } + private void RefreshSingleView() { RangeDispersionSession session = IsDraftActive() @@ -378,16 +414,23 @@ private void RefreshSingleView() { _singleSummaryLabel.Text = "No dispersion sessions found."; _singleSummaryLabel.Visible = true; + _singleViewLegendSessionKey = string.Empty; + _singlePlot.SetVisibleClubs(null); _singlePlot.SetShots(null); PopulateLegend(_singleLegend, null); return; } + string sessionKey = BuildSingleViewSessionKey(session, IsDraftActive()); + HashSet disabledClubs = GetOrCreateDisabledClubs(sessionKey, session.Shots); + _singleViewLegendSessionKey = sessionKey; + _singleSummaryLabel.Text = string.Empty; _singleSummaryLabel.Visible = false; _singlePlot.SetClubOverlayEnabled(true); + _singlePlot.SetVisibleClubs(BuildVisibleClubs(session.Shots, disabledClubs)); _singlePlot.SetShots(session.Shots); - PopulateLegend(_singleLegend, session.Shots); + PopulateLegend(_singleLegend, session.Shots, disabledClubs, interactive: true); } private void RefreshCompareView() @@ -413,13 +456,19 @@ private void RefreshCompareView() _compareLeftPlot.SetClubOverlayEnabled(false); _compareRightPlot.SetClubOverlayEnabled(false); + _compareLeftPlot.SetVisibleClubs(null); + _compareRightPlot.SetVisibleClubs(null); _compareLeftPlot.SetShots(leftSession?.Shots); _compareRightPlot.SetShots(rightSession?.Shots); PopulateLegend(_compareLeftLegend, leftSession?.Shots); PopulateLegend(_compareRightLegend, rightSession?.Shots); } - private static void PopulateLegend(ItemList legend, IReadOnlyList shots) + private static void PopulateLegend( + ItemList legend, + IReadOnlyList shots, + ISet disabledClubs = null, + bool interactive = false) { if (legend == null) return; @@ -440,8 +489,20 @@ private static void PopulateLegend(ItemList legend, IReadOnlyList group in groups) { int itemIndex = legend.ItemCount; - legend.AddItem($"{group.Key} ({group.Count()})"); - legend.SetItemCustomFgColor(itemIndex, RangeDispersionPlot.ResolveClubColor(group.Key)); + bool isDisabled = disabledClubs != null && disabledClubs.Contains(group.Key); + string label = $"{group.Key} ({group.Count()})"; + if (interactive && isDisabled) + label += " (off)"; + + legend.AddItem(label); + legend.SetItemMetadata(itemIndex, group.Key); + + Color baseColor = RangeDispersionPlot.ResolveClubColor(group.Key); + Color finalColor = isDisabled + ? baseColor.Lerp(new Color(0.68f, 0.72f, 0.80f, 0.82f), 0.72f) + : baseColor; + + legend.SetItemCustomFgColor(itemIndex, finalColor); } } @@ -457,6 +518,101 @@ private static int ResolveClubSortOrder(string clubLabel) return int.MaxValue; } + private static string BuildSingleViewSessionKey(RangeDispersionSession session, bool isDraft) + { + if (isDraft) + return DraftSessionMetadata; + + return session?.FileName ?? string.Empty; + } + + private HashSet GetOrCreateDisabledClubs(string sessionKey, IReadOnlyList shots) + { + if (!_singleViewDisabledClubsBySession.TryGetValue(sessionKey, out HashSet disabledClubs)) + { + disabledClubs = new HashSet(System.StringComparer.OrdinalIgnoreCase); + _singleViewDisabledClubsBySession[sessionKey] = disabledClubs; + } + + HashSet clubsInSession = CollectSessionClubs(shots); + disabledClubs.RemoveWhere(club => !clubsInSession.Contains(club)); + return disabledClubs; + } + + private static HashSet BuildVisibleClubs( + IReadOnlyList shots, + HashSet disabledClubs) + { + var visibleClubs = new HashSet(System.StringComparer.OrdinalIgnoreCase); + if (shots == null || shots.Count == 0) + return visibleClubs; + + foreach (RangeDispersionShot shot in shots) + { + if (shot == null) + continue; + + string clubLabel = RangeClubCatalog.NormalizeLabel(shot.ClubLabel); + if (disabledClubs.Contains(clubLabel)) + continue; + + visibleClubs.Add(clubLabel); + } + + return visibleClubs; + } + + private static HashSet CollectSessionClubs(IReadOnlyList shots) + { + var clubs = new HashSet(System.StringComparer.OrdinalIgnoreCase); + if (shots == null) + return clubs; + + foreach (RangeDispersionShot shot in shots) + { + if (shot == null) + continue; + + clubs.Add(RangeClubCatalog.NormalizeLabel(shot.ClubLabel)); + } + + return clubs; + } + + private static string GetLegendClubLabel(ItemList legend, int itemIndex) + { + if (legend == null || itemIndex < 0 || itemIndex >= legend.ItemCount) + return string.Empty; + + Variant metadata = legend.GetItemMetadata(itemIndex); + string clubLabel = metadata.VariantType == Variant.Type.String + ? (string)metadata + : metadata.ToString(); + + return RangeClubCatalog.NormalizeLabel(clubLabel); + } + + private void PruneSingleViewLegendState() + { + var activeSessionKeys = new HashSet(System.StringComparer.OrdinalIgnoreCase) + { + DraftSessionMetadata + }; + + foreach (RangeDispersionSession session in _sessions) + { + if (!string.IsNullOrWhiteSpace(session?.FileName)) + activeSessionKeys.Add(session.FileName); + } + + string[] staleKeys = _singleViewDisabledClubsBySession.Keys + .Where(key => !activeSessionKeys.Contains(key)) + .ToArray(); + + foreach (string staleKey in staleKeys) + _singleViewDisabledClubsBySession.Remove(staleKey); + } + private void ReplaceOrAddSession(RangeDispersionSession updatedSession) { if (updatedSession == null) diff --git a/ui/SettingsPanel.cs b/ui/SettingsPanel.cs index fe533ae..6620fd1 100644 --- a/ui/SettingsPanel.cs +++ b/ui/SettingsPanel.cs @@ -54,6 +54,9 @@ public enum SettingsTab private Label _shotRecordingHelper; private FileDialog _shotRecordingFileDialog; private TabContainer _tabs; + private ScrollContainer _playerTabScroll; + private ScrollContainer _displayTabScroll; + private ScrollContainer _gameTabScroll; private GridContainer _panelsGrid; private Label _panelsEmptyLabel; private PanelContainer _panelCardTemplate; @@ -82,28 +85,31 @@ public override void _Ready() _rootControl = GetNode("Root"); _panelShadow = GetNode("Root/PanelShadow"); _panel = GetNode("Root/Panel"); - _playerNameInput = GetNode("Root/Panel/Margin/Content/Tabs/Player/PlayerCard/PlayerCardMargin/PlayerCardRow/PlayerNameInput"); - _rangeDefaultClubCard = GetNode("Root/Panel/Margin/Content/Tabs/Player/RangeDefaultClubCard"); - _rangeDefaultClubOption = GetNode("Root/Panel/Margin/Content/Tabs/Player/RangeDefaultClubCard/RangeDefaultClubMargin/RangeDefaultClubRow/RangeDefaultClubOption"); - _testShotsCheck = GetNode("Root/Panel/Margin/Content/Tabs/Player/PlayerTestShotsCard/PlayerTestShotsMargin/PlayerTestShotsRow/TestShotsCheck"); - _resolutionOption = GetNode("Root/Panel/Margin/Content/Tabs/Display/DisplayResolutionCard/DisplayResolutionMargin/DisplayResolutionRow/ResolutionOption"); - _fullscreenCheck = GetNode("Root/Panel/Margin/Content/Tabs/Display/DisplayResolutionCard/DisplayResolutionMargin/DisplayResolutionRow/FullscreenCheck"); - _cameraDistanceSlider = GetNode("Root/Panel/Margin/Content/Tabs/Game/CameraDistanceCard/CameraDistanceMargin/CameraDistanceContent/CameraDistanceRow/CameraDistanceSlider"); - _cameraDistanceValue = GetNode("Root/Panel/Margin/Content/Tabs/Game/CameraDistanceCard/CameraDistanceMargin/CameraDistanceContent/CameraDistanceRow/CameraDistanceValue"); - _cameraDistanceHelper = GetNode