Skip to content

fix(rate-of-closure): harden forgiveness evidence contracts - #4204

Closed
dieterolson wants to merge 2 commits into
feat/4164-wedge-forgivenessfrom
fix/4164-forgiveness-contracts
Closed

fix(rate-of-closure): harden forgiveness evidence contracts#4204
dieterolson wants to merge 2 commits into
feat/4164-wedge-forgivenessfrom
fix/4164-forgiveness-contracts

Conversation

@dieterolson

Copy link
Copy Markdown
Collaborator

Summary

  • preserve unsupported turf outcomes and apply explicit out-of-domain penalties/constraints
  • convert ordinary per-trial retained post-processing faults into auditable failure records while preserving cancellation
  • strengthen browser turf DbC and reject nonfinite evidence in statistics and JSON/CSV exports
  • prevent custom-target objective ID aliasing by deriving stable IDs from the actual target at nine-decimal precision
  • document the retained-run evidence and failure boundaries

Verification

  • python -m pytest tests/rate_of_closure/test_chip_forgiveness_analysis.py tests/rate_of_closure/test_chip_forgiveness_runner.py tests/rate_of_closure/test_variation_gui.py -q (29 passed)
  • focused Ruff check and format check
  • focused browser tests (3 files, 19 passed)
  • npm run type-check
  • npm run lint -- --max-warnings=0
  • git diff --check

Stack and remaining scope

Refs #4164

@github-actions

Copy link
Copy Markdown
Contributor

⚠️ SPEC.md Update Required

Source files were modified in this PR but SPEC.md was not updated.

Per the Specification-Driven Development Policy:

  • Any PR that adds, removes, or changes functionality must update SPEC.md
  • Update the relevant sections (features, architecture, tests, dependencies, etc.)
  • Bump the Spec Version if making substantive changes

To resolve:

  1. Update SPEC.md to reflect your changes, OR
  2. Add the spec-exempt label if this PR genuinely doesn't affect the spec (e.g., pure refactor with no behavior change)

This check is enforced by the spec-check CI workflow.

@dieterolson

Copy link
Copy Markdown
Collaborator Author

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