Skip to content

feat(rate-of-closure): add launch direction conventions - #4209

Merged
d-sorgcodexagent[bot] merged 6 commits into
feat/4181-launch-monitor-registryfrom
feat/4193-launch-direction-registry-integration
Aug 7, 2026
Merged

feat(rate-of-closure): add launch direction conventions#4209
d-sorgcodexagent[bot] merged 6 commits into
feat/4181-launch-monitor-registryfrom
feat/4193-launch-direction-registry-integration

Conversation

@dieterolson

Copy link
Copy Markdown
Collaborator

Summary

  • rename Launch Azimuth to Launch Direction throughout the Rate of Closure Python and React surfaces
  • add explicit app-native and TrackMan display conventions while keeping the internal left-positive physics frame visible and losslessly converted
  • consume the canonical launch-monitor convention registry, preserve legacy persistence aliases, and reject conflicting migrated values
  • derive selector status and provenance from the registry instead of maintaining a competing vendor-definition table

Validation

  • 643 relevant Python tests passed with 4 expected Rust-wheel skips
  • 382 React tests passed across 58 files
  • focused final gates: 23 Python and 18 web tests
  • production build, TypeScript, ESLint, Ruff, Black, targeted mypy, placeholder, and whitespace gates passed

Evidence boundary

  • the public Foresight definition did not explicitly establish a numeric left/right sign convention; this adapter therefore exposes app-native and TrackMan choices only instead of inventing a Foresight conversion
  • draft stacked on feat/4181-launch-monitor-registry
  • the parallel wind PR feat(ball-flight): add reproducible wind comparison #4207 touches the same explorer surfaces and will require an explicit integration pass after both contracts are reviewed

Refs #4180
Refs #4191
Refs #4193

@dieterolson

Copy link
Copy Markdown
Collaborator Author

Release-hardening follow-up 332fabd makes the unavailable Foresight-comparable Launch Direction convention visible (disabled) in both PyQt and React selectors with an explicit source/handedness explanation instead of silently omitting it. TDD focused PyQt and React tests passed, plus TypeScript type-check, ESLint, production build, Ruff, Black, strict Python 3.12 mypy, and diff check.

@dieterolson

dieterolson commented Aug 7, 2026

Copy link
Copy Markdown
Collaborator Author

Exact combined-state quality recovery is published on head 9858917.

The earlier branch-local fix e308962 passed in isolation, but #4212 advanced the parent branch and the GitHub merge ref exposed seven additional mypy 1.13 errors. The parent head 8526f7e was merged normally into this child as da0ce66 with no manual conflicts, rebase, or retarget.

Combined-state corrections use the already proven typed-array and UI-boundary patterns:

  • remove two casts that became redundant with the updated dependency types;
  • guard the optional Qt vertical header;
  • retain concrete NumPy ndarray types across four plotting catalog return boundaries.

Post-commit exact evidence:

  • Ruff 0.14.10 check and format: 17 changed Python files passed
  • mypy 1.13 on Python 3.12: 13 child-delta source files passed
  • Python focused tests: 74 passed
  • React focused tests: 33 passed
  • TypeScript type-check and ESLint: passed
  • minimum-test and changed-assertion contracts: passed
  • Bandit: zero medium/high findings
  • module-size and diff gates: passed

The push was a normal fast-forward. This PR remains gated by fresh exact-head protected CI; no force-push, admin merge, retarget, rebase, or check bypass was used.

@d-sorgcodexagent
d-sorgcodexagent Bot marked this pull request as ready for review August 7, 2026 03:07
@d-sorgcodexagent
d-sorgcodexagent Bot merged commit 4b659ac into feat/4181-launch-monitor-registry Aug 7, 2026
6 of 13 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