Skip to content

feat(ball-flight): add reproducible wind comparison - #4207

Draft
dieterolson wants to merge 3 commits into
feat/4181-launch-monitor-registryfrom
feat/4198-wind-physics
Draft

feat(ball-flight): add reproducible wind comparison#4207
dieterolson wants to merge 3 commits into
feat/4181-launch-monitor-registryfrom
feat/4198-wind-physics

Conversation

@dieterolson

Copy link
Copy Markdown
Collaborator

Summary

  • add a versioned, reproducible three-dimensional wind contract with steady wind, altitude shear, declared gusts, and seeded deterministic turbulence
  • integrate wind velocity at every Python and TypeScript Runge-Kutta stage and preserve the existing steady-wind Rust facade boundary
  • add paired common-input no-wind/selected-wind comparisons, physical locked-aspect 2D/3D plots, wind-to graphics, and explicit metric deltas in PyQt6 and React
  • document frames, meteorological bearing conversion, validation, and current model limitations

Validation

  • 41 focused shared-flight, explorer, and PyQt GUI tests passed after final refactor
  • 372 React tests passed across 58 files
  • Vite production build, TypeScript, ESLint, Ruff, Black, targeted strict mypy, and diff hygiene passed
  • browser visual QA confirmed the paired curves, legend, wind arrow, deltas, and physical plot scaling at http://127.0.0.1:5290/
  • all changed production Python/TypeScript modules are at or below 400 lines

Review boundaries

  • this is a draft stacked on feat/4181-launch-monitor-registry
  • [Ball Flight] Rename launch azimuth to Launch Direction and add switchable convention adapters #4193 independently updates the same explorer surfaces from Launch Azimuth to Launch Direction; integration conflict resolution is intentionally deferred until both contracts are reviewed
  • this PR does not yet implement uncertain wind ensembles, strategy distributions, forecast-estimate error, terrain wind, or real-time playback
  • dynamic wind is rejected by the current Rust facade rather than silently approximated; Python/TypeScript are the supported dynamic-wind paths

Refs #4191
Refs #4198

@dieterolson

Copy link
Copy Markdown
Collaborator Author

Hosted CI follow-up: manual CI Standard run 31128556303 reached the hosted Python 3.12 quality gate and exposed 21 NumPy-stub delta typing errors across four touched files; Ruff and formatting were already green. Commit 82e8f9d fixes all 21 without suppressions. Exact local reproduction under Python 3.12 now reports Success: no issues found in 4 source files; the 41 focused flight/PyQt tests also pass under Python 3.12. The original workflow still has self-hosted jobs queued, and PR synchronize workflows have not yet attached to the new head, so hosted CI remains pending rather than complete.

@dieterolson

Copy link
Copy Markdown
Collaborator Author

CI update: fresh-head run 31128829917 has now passed the hosted quality-gate on commit 82e8f9d, including the Python 3.12 delta mypy check that previously failed. The workflow remains queued because pick-runner and ix-brick-toolcache are waiting for the self-hosted fleet. Run: https://github.com/D-sorganization/Tools/actions/runs/31128829917. This is partial hosted evidence, not full CI completion.

@dieterolson

Copy link
Copy Markdown
Collaborator Author

Responsive-geometry hardening follow-up d668de1 prevents nonuniform browser scaling of both flight canvases by matching CSS aspect-ratio to the 860x260 and 860x220 backing dimensions and using width 100% / height auto. Added regression tests failed before the fix. Full local web gate: 59 files/374 tests, type-check, ESLint, production build, diff and module-size checks passed.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant