test(rate-of-closure): recover ten stranded test modules covering source already on main (remainder of #4466) - #4527
Merged
Conversation
|
You have reached your Codex usage limits for code reviews. You can see your limits in the Codex usage dashboard. |
…rce already on main (#4103) Extracted from `consolidated/rate-closure-remainder-2026-08-13` (#4466). The slice programme that has been landing that branch piecemeal (#4517-#4523) took source modules but left their suites behind. The clearest case: the five `ground_playback` modules #4522 put on `main` arrived with ZERO test coverage — grepping the whole repo for `ground_playback` matches `SPEC.md` and the source files themselves, and nothing under `tests/`. This is test-only. No source file is touched, so every assertion here runs against `main`'s implementation exactly as it stands. 93 tests pass unmodified: tests/rate_of_closure/test_ground_playback.py tests/rate_of_closure/test_capability_observation_adapter.py tests/rate_of_closure/test_chip_forgiveness_analysis.py tests/rate_of_closure/test_ground_study_scalar_adapter.py tests/rate_of_closure/test_regional_ground_study_adapter.py tests/rate_of_closure/test_regional_ground_target_projection.py tests/rate_of_closure/test_scalar_ensemble_contract.py tests/rate_of_closure/test_wind_strategy_plot_adapter.py tests/rate_of_closure/regional_ground_target_support.py (shared helper) tests/shared/python/test_canonical_numeric_json.py Eleven further stranded suites were run against `main` and deliberately left out rather than widening this change to chase their dependencies: test_chip_forgiveness_runner.py SimulationEnsembleResult.runs test_club_assembly_simulation_adapter.py SimulationRun.club_assembly_usage test_regional_ground_result_golden.py __fixtures__ golden absent test_club_assembly_binding.py __fixtures__ golden absent test_clubhead_engineering_sidecar.py __fixtures__ golden absent test_ground_playback_workspace_v2.py __fixtures__ golden absent test_regional_ground_variation_request_io.py ui.pyqt6 module of same name test_campaign_release_manifest.py scripts/rate_campaign_manifest test_browser_companion_harness.py sibling browser_companion_harness tests/ops/test_maturin_swing_core_workflow.py workflow file absent tests/ops/test_rate_of_closure_windows_state_workflow.py workflow file absent `test_regional_ground_variation.py` is excluded for a genuine behavioural divergence that deserves its own fix: one bounds case expects the module's own validation error, but on `main` a DbC pre-condition ("lower must be") raises first. `test_regional_ground_variation_execution.py` imports from it, so it is excluded too. Verified with the repo venv (Python 3.11, PyQt6, QT_QPA_PLATFORM=offscreen): 93 passed, 0 failed. ruff 0.14.10 check and format --check clean on all 10 files. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
dieterolson
force-pushed
the
remainder/extract-2026-08-17
branch
from
August 18, 2026 07:19
4a6692e to
8b53958
Compare
dieterolson
added a commit
that referenced
this pull request
Aug 18, 2026
Only conflict was SPEC.md's Change Log: both remainder PRs prepended a row, so #4527's 1.17.28 (now on main) collided with this branch's 1.17.29. Resolved keeping both, ordered 1.17.29 above 1.17.28 above 1.17.27. The table is newest-first, so the higher version goes first -- a mechanical "take theirs first" would have produced 1.17.28 / 1.17.29 / 1.17.27, silently breaking the ordering, which is what a first pass here did before it was caught. SPEC.md is CRLF on main (see 26159e2, which rewrote its line endings while .gitattributes pins eol=lf for *.py only), so this was edited in binary mode: CRLF 6133 unchanged, bare LF still 0. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
dieterolson
added a commit
that referenced
this pull request
Aug 18, 2026
… main Two things, neither of them a defect in the ported code. 1. quality-gate failed at "Type Check (Mypy)" with a single error: `variation/registry.py:404: error: Returning Any`. That function is PRE-EXISTING and byte-identical on main (line 374 there) -- this PR did not introduce it. It surfaced only because CI runs mypy on CHANGED FILES ONLY, so putting registry.py into a diff exposed a latent error that main never checks. The cause is a delta-CI artifact rather than a real typing problem: the delegate `registry_mode_policy.keys_for_mode` IS annotated `-> tuple[str, ...]`, but it is not among the changed files, so with `ignore_missing_imports` its import resolves to `Any` and returning that directly trips `warn_return_any`. Fixed by binding to an annotated local, which narrows a value that genuinely has that type rather than asserting something untrue. Verified: zero mypy errors across all four ported files. 2. Re-synced onto main after #4527 and #4528 merged, which collided in SPEC.md's Change Log. Main's max is now 1.17.29, and this branch had also claimed 1.17.28 -- a straight union produced TWO rows at 1.17.28. Renumbered this change to 1.17.30 and re-sorted the 2026-08-18 block version-descending; verified four rows, zero duplicate versions. Edited in binary mode so the file's CRLF endings survive (6134 CRLF, 0 bare LF). Part of #4142 Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Extracted remainder of #4466. Test-only — no source file is touched.
Why
#4466 is being absorbed into
mainas reviewable slices (#4517–#4523). Those slices took source modules but left their suites behind on the branch. The clearest case: the fiveground_playbackmodules that #4522 landed arrived onmainwith zero test coverage — grepping the whole repo forground_playbackmatchesSPEC.mdand the source files themselves, and nothing undertests/.This recovers the suites that already pass against
mainunchanged, so the coverage stops depending on a branch that cannot be merged.What
Ten files, all under
tests/. Because no source changes, every assertion runs againstmain's implementation exactly as it stands.tests/rate_of_closure/test_ground_playback.pysimulation/ground_playback*(#4522) — previously untestedtests/rate_of_closure/test_capability_observation_adapter.pytests/rate_of_closure/test_chip_forgiveness_analysis.pytests/rate_of_closure/test_ground_study_scalar_adapter.pytests/rate_of_closure/test_regional_ground_study_adapter.pytests/rate_of_closure/test_regional_ground_target_projection.pytests/rate_of_closure/test_scalar_ensemble_contract.pytests/rate_of_closure/test_wind_strategy_plot_adapter.pytests/rate_of_closure/regional_ground_target_support.pytests/shared/python/test_canonical_numeric_json.pyswing_sim/canonical_numeric_jsonVerification
Repo venv (Python 3.11, PyQt6,
QT_QPA_PLATFORM=offscreen): 93 passed, 0 failed.Pinned ruff 0.14.10:
checkandformat --checkclean on all ten files.Deliberately excluded
Eleven further stranded suites were run against
mainand left out rather than widening this PR to chase their dependencies:test_chip_forgiveness_runner.pySimulationEnsembleResult.runsabsent frommaintest_club_assembly_simulation_adapter.pySimulationRun.club_assembly_usageabsent frommaintest_regional_ground_result_golden.py__fixtures__golden absent frommaintest_club_assembly_binding.py__fixtures__golden absent frommaintest_clubhead_engineering_sidecar.py__fixtures__golden absent frommaintest_ground_playback_workspace_v2.py__fixtures__golden absent frommaintest_regional_ground_variation_request_io.pyui.pyqt6module of the same nametest_campaign_release_manifest.pyscripts/rate_campaign_manifesttest_browser_companion_harness.pybrowser_companion_harnesshelpertests/ops/test_maturin_swing_core_workflow.pymainlackstests/ops/test_rate_of_closure_windows_state_workflow.pymainlackstest_regional_ground_variation.pyis excluded for a genuine behavioural divergence that deserves its own fix: one bounds case expects the module's own validation error, but onmaina DbC pre-condition (lower must be) raises first.test_regional_ground_variation_execution.pyimports from it, so it is excluded too.Note on unrelated CI
ruff format --checkis currently red onmainfor four files undersrc/data_processing/data_processor/python/that this PR does not touch. That is being fixed separately.Part of #4103
🤖 Generated with Claude Code