Rate of Closure Suite: Camera Tracking, Playback, File I/O & Static Web Distribution (consolidated 11 PRs) - #4410
Rate of Closure Suite: Camera Tracking, Playback, File I/O & Static Web Distribution (consolidated 11 PRs)#4410dieterolson wants to merge 386 commits into
Conversation
…n workspaces Expose the qualified Waterloo/Penner capability optimizer as a primary Shot Optimizer module in both clients: strict cross-runtime capability-optimization-workflow/v1 authoring and persistence, off-UI-thread execution with truthful progress and cooperative cancellation, complete scalar-ensemble/v1 cohort retention, ranked alternatives, stage-qualified scatter axes, bounded raw-row paging, spreadsheet-safe CSV, and stable JSON. The React panel is lazy-loaded so the main Vite chunk stays under the 500 kB warning threshold, and saved v1 layouts reveal newly registered modules. Handoff documents are updated in this implementation commit per fleet policy. Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
…t reveal Add PyQt workflow/worker/GUI suites and React workflow, worker-client, run, panel, and results tests for the Shot Optimizer slice; extend primary-navigation coverage so saved layouts reveal newly registered modules and the new tab registers exactly once in both clients. Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
… gates Add the SPEC 1.14.6 change-log row, document the end-user workflow in the capability optimization spec, and update the campaign handoff with the recovered slice and its verified gate evidence. Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
No material source change; handoff pointer update only. Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
…cess The dict-splat construction of CapabilityWorkflowInputs failed the hosted delta-mypy gate because **dict[str, float] cannot be proven against the integer fields. Build the snapshot with explicit typed keyword arguments instead; behavior is unchanged. Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
Handoff update for implementation commit 101020b per fleet policy; no source change. Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
The prior note wrongly framed the 3.10 StrEnum ImportError as a stack-wide defect to fix in source. requires-python is >=3.11 and only quality-gate and tests (3.11) are required checks, so the 3.10 lane is a stale-matrix artifact. No source change. Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
The observation contract has only complete/no_impact/failed members, so a horizon nonconvergence is normalized into failed. Reporting a bare "failed N" reads as numerical breakage when the retained reason says the flight simply did not reach the ground inside the configured horizon. Both clients now append the retained reason codes with counts, which is data the adapter already carries per row. Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
A descending launch starts at z=0 and is already below ground once the t > dt guard permits the crossing check, so the interpolation ratio went negative and extrapolated the crossing to a negative sample time. That raised RangeError: timeS must be nonnegative, which the observation layer absorbed as an untyped evaluator_exception on 12 of 96 samples of a default driver search while Python reported none. Clamping the ratio to [0, 1] keeps the crossing inside the detecting step, so these samples report nonconverged and match the Python runtime. Also builds _lerp_vector's 3-tuple explicitly instead of carrying an unused type: ignore, and coerces _curve to float, clearing the hosted delta-mypy gate. Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
Brings in the evaluator branch descending-launch and delta-mypy repairs. Resolves the two documentation conflicts by keeping both slices: SPEC.md retains the 1.14.6 workspace row above the amended 1.14.5 evaluator row at header version 1.14.6, and the tool handoff keeps the workspace completion record ahead of the evaluator repair entry. Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
feat(rate-of-closure): matched PyQt6/React capability optimization workspaces
feat(rate-of-closure): bind optimizer to full flight
feat(rate-of-closure): stream capability optimizer samples
The per-slice stacked-branch cautions described the stack while it was open and now read as active constraints, so state plainly that #4283, #4289, and #4294 are merged onto this branch, how they were folded, what was verified here (1426 Python, 624 React), and that the incomplete CI matrix reflects 25 of 28 org runners being offline rather than failures. Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
# Conflicts: # AGENT_HANDOFF.md
# Conflicts: # AGENT_HANDOFF.md # SPEC.md # src/rate_of_closure/web/src/model/flight.ts # src/shared/python/swing_sim/flight/tests/test_contract_api.py
…-of-closure-batch # Conflicts: # SPEC.md # src/shared/python/golf_club/__init__.py # tests/ops/test_cross_repo_python_integration.py # tests/shared/python/golf_club/test_contracts.py
…-closure-batch # Conflicts: # SPEC.md
…e-of-closure-batch # Conflicts: # SPEC.md
…losure-batch # Conflicts: # SPEC.md
…ated/rate-of-closure-batch # Conflicts: # AGENT_HANDOFF.md # SPEC.md # docs/development/RATE_OF_CLOSURE_CAMPAIGN_HANDOFF.md # src/rate_of_closure/AGENT_HANDOFF.md
…d/rate-of-closure-batch # Conflicts: # AGENT_HANDOFF.md # SPEC.md # docs/development/RATE_OF_CLOSURE_CAMPAIGN_HANDOFF.md # src/rate_of_closure/AGENT_HANDOFF.md
…lidated/rate-of-closure-batch # Conflicts: # AGENT_HANDOFF.md # SPEC.md # docs/development/RATE_OF_CLOSURE_CAMPAIGN_HANDOFF.md # src/rate_of_closure/AGENT_HANDOFF.md
…/rate-of-closure-batch # Conflicts: # AGENT_HANDOFF.md # SPEC.md # docs/development/RATE_OF_CLOSURE_CAMPAIGN_HANDOFF.md # src/rate_of_closure/AGENT_HANDOFF.md
…ted/rate-of-closure-batch # Conflicts: # AGENT_HANDOFF.md # SPEC.md # docs/development/RATE_OF_CLOSURE_CAMPAIGN_HANDOFF.md # src/rate_of_closure/AGENT_HANDOFF.md
…ed/rate-of-closure-batch # Conflicts: # AGENT_HANDOFF.md # SPEC.md # docs/development/RATE_OF_CLOSURE_CAMPAIGN_HANDOFF.md # src/rate_of_closure/AGENT_HANDOFF.md
…e-of-closure-batch # Conflicts: # AGENT_HANDOFF.md # SPEC.md
There was a problem hiding this comment.
💡 Codex Review
Here are some automated review suggestions for this pull request.
Reviewed commit: e44baa9e94
ℹ️ About Codex in GitHub
Your team has set up Codex to review pull requests in this repo. Reviews are triggered when you
- Open a pull request for review
- Mark a draft as ready
- Comment "@codex review".
If Codex has suggestions, it will comment; otherwise it will react with 👍.
Codex can also answer questions or update the PR. Try commenting "@codex address that feedback".
| <<<<<<< HEAD | ||
| ======= |
There was a problem hiding this comment.
Resolve the facade merge conflict
Importing shared.python.golf_club now raises a SyntaxError at this unresolved conflict marker; the Rate of Closure simulation imports this facade through simulation/ground_clearance.py, so the application and most of its tests cannot even initialize. This was reproduced with python -m compileall -q src and during Rate of Closure test collection.
Useful? React with 👍 / 👎.
| <<<<<<< HEAD | ||
| ======= | ||
| "CATEGORY_TURF", | ||
| >>>>>>> origin/feat/4274-regional-surface-ui |
There was a problem hiding this comment.
Remove merge markers from collected tests
Once the production facade is repaired, pytest still cannot collect this module because the conflict markers are invalid Python syntax. The same unresolved markers also remain in tests/ops/test_cross_repo_python_integration.py, so both test files need their intended branches reconciled before CI can run.
Useful? React with 👍 / 👎.
| @@ -0,0 +1 @@ | |||
| Subproject commit 9c673194ef4c9a55595c3799d4fddd0d7e28c561 | |||
There was a problem hiding this comment.
Remove local worktree gitlinks from the repository
This and five other .codex-worktrees/* entries were committed as gitlinks without corresponding .gitmodules records. In any checkout that runs submodule tooling, git submodule status fails with “no submodule mapping,” and git submodule update --init --recursive exits 128 because no URL exists, so these local worktree artifacts should not be tracked.
Useful? React with 👍 / 👎.
Consolidates Rate of Closure PRs into a single batch (#4378 #4369 #4274 #4284 #4273 #4192):\n\n- Closes #4339: feat(rate): add matched regional surface plan editors\n- Closes #4342: feat(rate): add canonical regional plan file I/O\n- Closes #4358: feat(rate-of-closure): add canonical camera preset parity\n- Closes #4362: feat(rate): track clubhead in matched camera views (#4284)\n- Closes #4363: feat(rate): add bounded ground-result playback (#4274)\n- Closes #4364: feat(rate): project qualified post-ground spatial targets (#4192)\n- Closes #4368: feat(rate): add regional-ground request file controls (#4273)\n- Closes #4371: fix(rate): type regional outcome validation failures (#4369)\n- Closes #4376: feat(rate-of-closure): recover durable authority jobs\n- Closes #4388: Rate of Closure: qualify deterministic static web distribution\n- Closes #4402: Add Proximal–Distal Dynamics Companion Guide