Skip to content

feat(rate-of-closure): add chip forgiveness decision analysis - #4190

Closed
d-sorgcodexagent[bot] wants to merge 2 commits into
feat/4162-wedge-impact-visualizationfrom
feat/4164-wedge-forgiveness
Closed

feat(rate-of-closure): add chip forgiveness decision analysis#4190
d-sorgcodexagent[bot] wants to merge 2 commits into
feat/4162-wedge-impact-visualizationfrom
feat/4164-wedge-forgiveness

Conversation

@d-sorgcodexagent

Copy link
Copy Markdown
Contributor

Summary

Adds a production-hardened, single-candidate chip-shot forgiveness decision-analysis slice to the rate-of-closure swing variation workbench.

  • retains every trial as a typed contact cohort, including ball miss and numerical failure outcomes
  • reports expected loss, worst-tail CVaR, Wilson cohort intervals, deterministic bootstrap confidence intervals, and convergence evidence
  • exports complete reproducibility manifests plus per-trial CSV/JSON evidence
  • exposes the analysis in both standalone PyQt6 and React interfaces
  • mirrors physical-domain validation and deterministic inference across Python and TypeScript
  • excludes illustrative turf metrics from ranking loss and labels the model boundary explicitly

Acceptance Evidence

  • Python: 844 passed, 2 optional build123d skips, 15 warnings
  • Web: 58 files, 367 tests passed
  • Focused feature tests: 27 Python and 29 web tests passed
  • Ruff check and format: passed
  • mypy (20 source files): passed
  • production module-budget gate: passed
  • ESLint, TypeScript, and Vite production build: passed
  • live browser QA at http://localhost:5270/: 4/4 swing runs completed; cohorts, loss/CVaR/Wilson evidence, scatter matrices, and exports rendered; no browser warnings or errors
  • standalone PyQt6 launcher remained live during verification

Deliberate Open Scope

This is a bounded implementation slice for #4164 and does not close the issue. The following acceptance work remains:

  • multi-candidate wedge/technique sweep and integrated Pareto comparison UI
  • browser Web Worker execution, responsive cancellation, and large-run performance/memory budgets
  • broader arc-envelope and sensitivity analyses across loft, bounce, grind, and delivery candidates
  • calibrated turf/contact validation; the current reduced firm-fairway model is explicitly illustrative
  • no universal best-technique or universal bounce ranking is claimed

Stack

Base: feat/4162-wedge-impact-visualization (#4179)

Related: #4158, #4164

@dieterolson

Copy link
Copy Markdown
Collaborator

Superseded by #4466, which consolidates all 43 open src/rate_of_closure PRs into one
branch. Closing this one is measured, not assumed: verify_coverage.sh reports
safe=43 NOT-covered=0 against consolidated/rate-closure-remainder-2026-08-13, so this
PR's head is contained and nothing here is dropped.

Stacks were folded top-down (each child into its own parent, then the parent upward), so
non-tip work is included rather than skipped — including 8067ca79a (#4171, CAD export
artifact validation) and f9afa9d96 (#4309, strict ground result playback), each of which
lived in exactly one PR and is absent from its stack tip.

The consolidation also repairs defects the merge exposed, listed in #4466: two unguarded
datetime.UTC imports that break the Python 3.10 lane, a PyQt module registry that could no
longer construct the main window, the club-assembly binding and STL/sidecar controls that had
been dropped from the wired tree, and a filelock dependency that would have failed
tests (3.11) at collection.

Reopen this PR if you need its branch; the branch itself is untouched.

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