Skip to content

feat(rate-of-closure): add launch monitor convention registry - #4203

Closed
dieterolson wants to merge 31 commits into
feat/4189-dplanefrom
feat/4181-launch-monitor-registry
Closed

feat(rate-of-closure): add launch monitor convention registry#4203
dieterolson wants to merge 31 commits into
feat/4189-dplanefrom
feat/4181-launch-monitor-registry

Conversation

@dieterolson

Copy link
Copy Markdown
Collaborator

Summary

  • add immutable, source-backed Python and TypeScript convention registries for app-native, TrackMan-comparable, and Foresight-comparable parameters
  • make reference point, event time, frame, geometry, sign, unit, status, availability, and provenance explicit
  • reject silent comparisons through typed incompatibility reasons and reusable exact point/frame transforms
  • pin the complete cross-client wire catalog with a shared SHA-256 golden contract and explicit v0 migration
  • document interoperability boundaries, primary sources, and no-endorsement/device-emulation claims

Verification

  • python -m pytest src/shared/python/swing_sim/impact/tests/test_dplane.py src/shared/python/swing_sim/conventions/tests/test_registry.py -q (20 passed)
  • python -m ruff check src/shared/python/swing_sim/conventions
  • python -m ruff format --check src/shared/python/swing_sim/conventions
  • python -m mypy --strict --no-incremental --disable-error-code=type-arg src/shared/python/swing_sim/conventions (4 source files clean; the disabled code isolates an unrelated existing ai/education.py generic annotation failure reached through package imports)
  • npm test -- --run (57 files, 365 tests)
  • npm run type-check
  • npm run lint -- --max-warnings=0
  • npm run build
  • git diff --check

Stack

Refs #4180
Refs #4181

@dieterolson

Copy link
Copy Markdown
Collaborator Author

Release-hardening follow-up 3d899c8: comparison compatibility now includes sign_rule; the Foresight-comparable Launch Direction sign fails closed as unspecified instead of inheriting an unsupported positive-right rule; Python/TypeScript golden parity and tests were updated. Also fixes the scoped Python 3.12 NumPy return typing defect. Local gates: 11 Python tests, 8 web tests, type-check, ESLint, Vite build, Ruff, Black, strict Python 3.12 mypy, diff check.

dieterolson and others added 11 commits August 6, 2026 16:30
…r-analytics

feat(rate-of-closure): add launch monitor analytics tabs
…y' into feat/4193-launch-direction-registry-integration
…ion-registry-integration

feat(rate-of-closure): add launch direction conventions
* feat(swing-sim): add spatial target contract (#4192)

* feat(flight): add canonical result metric catalog

* feat(ball-flight): add reproducible wind comparison

* feat(flight): add desired-flight inverse solver

* fix(ci): satisfy Python 3.12 delta typing

* feat(ball-flight): analyze wind estimate uncertainty

* feat(ball-flight): add interactive 3d playback

* fix(ball-flight): distinguish apex and landing events

* feat(flight): add impact solution families

* feat(flight): add capability-aware shot optimizer

* feat(flight): add variability and downside objectives

* fix(ball-flight): preserve responsive plot aspect ratio

* fix(ball-flight): preserve playback canvas aspect ratio

* style(rate-of-closure): format analytics modules

* refactor(rate-of-closure): split flight explorer controls

* fix(rate-of-closure): preserve typed explorer values

* docs(ball-flight): reconcile integration specification

* docs(rate-of-closure): add campaign integration handoff

* fix(ball-flight): harden wind uncertainty risk metrics

* docs(rate-of-closure): record wind strategy v2 handoff

* docs(rate-of-closure): record draft integration PR

* docs(rate-of-closure): verify wedge AoA worked example

* style(rate-of-closure): satisfy PR Ruff format gate

* docs: checkpoint variation and wedge campaign handoff

* fix(rate-of-closure): support pinned CI mypy

* docs: record pinned CI mypy recovery

* refactor(rate-of-closure): split simulation tab controller

* docs(rate-of-closure): record base sync recovery

* docs(rate-of-closure): record rendered design audit

* feat(rate-of-closure): complete spatial target workflows and responsive layout

* docs(rate-of-closure): refresh campaign handoff evidence

* fix(rate-of-closure): satisfy pinned CI type contracts

* docs(rate-of-closure): record pinned CI compatibility fix

* fix(rate-of-closure): narrow target frame for pinned mypy

* docs(rate-of-closure): record final pinned CI correction

* fix(rate-of-closure): reserve themed wrapped form height

* docs(rate-of-closure): record themed layout verification

* fix(variation): preserve paired landing rows

* docs(wedge): separate physical and synthetic examples

* fix(ci): type NumPy variation intermediates

* feat(rate-web): add frame-explicit manual delivery controls

* feat(rate-of-closure): declare manual delivery geometry

* docs(rate-web): declare manual impact model boundary

* test(rate-of-closure): pin wedge manual delivery parity

* fix(rate-web): validate current run and delivered loft

* fix(rate-of-closure): preserve manual delivery precision

* fix(rate-of-closure): gate source-specific pose controls

* fix(rate-web): enforce active model contracts

* fix(rate-web): fail closed on incomplete v5 settings

* fix(rate-of-closure): reject truncated v5 run settings

* fix(rate-web): require canonical v5 ball setup

* fix(rate-of-closure): align visible simulation inputs

* fix(rate-of-closure): reject unemitted schema versions

* docs(swing-sim): clarify automatic backend fallback

* fix(rate-of-closure): keep compact controls readable

* fix(rate-of-closure): prevent shaft datum truncation

* docs(rate-of-closure): record validated campaign handoff
@d-sorgcodexagent

Copy link
Copy Markdown
Contributor

2026-08-10 repaired parent propagated normally

Exact repaired #4202 head 7d8d2f06dc797021d01939691e58f8425b652b33 is now carried into this unchanged-base draft through merge commit 12dd76a8dbcc106c4683f2f2e53076f8dc6f1b76 (parents: prior child 31cbc007d4c85b5479b7cd0fb0969124eab2af67, then repaired parent). No rebase, retarget, force-push, or parent rewrite occurred.

The code trees already agreed on the explicit D-plane ndarray boundaries; reconciliation was limited to retaining both branches' canonical handoff/SPEC histories and bumping the child spec to 1.14.9. Post-reconciliation evidence: 25 focused D-plane, impact-contract, impact-kinematics, and impact-scene tests passed; docs governance, changed-file-size, and whitespace gates passed.

Typing evidence is stated precisely: the exact parent hosted pinned quality gate is green. The local Windows MyPy 1.15 environment cannot parse the installed Python-3.12-only NumPy stub syntax under the branch's Python 3.11 target, and WSL currently fails to start with E_FAIL; neither local attempt is claimed as passing.

This PR remains draft. Fresh current-head protected CI, review, and all dependency-order gates are required before any merge.

@d-sorgcodexagent
d-sorgcodexagent Bot marked this pull request as ready for review August 11, 2026 18:59
codex-scheduled added 2 commits August 11, 2026 15:15
…1-launch-monitor-registry

# Conflicts:
#	AGENT_HANDOFF.md
#	src/rate_of_closure/AGENT_HANDOFF.md
#	src/rate_of_closure/simulation/kinetics.py
@dieterolson

Copy link
Copy Markdown
Collaborator Author

Consolidated into #4410. Closing to eliminate CI runner load.

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