feat(rate-of-closure): add application toolstrip and independent plot workspaces - #4279
feat(rate-of-closure): add application toolstrip and independent plot workspaces#4279d-sorgcodexagent[bot] wants to merge 18 commits into
Conversation
|
CI follow-up: the initial quality-gate failure was isolated to Ruff formatting one renderer return statement; lint and behavior were already green. Commit 3f587cc applies the formatter-only change. Focused simulation/screw tests pass 52/52, and Ruff lint/format, Black, mypy, and diff integrity pass locally. New protected checks are now authoritative. |
|
…8-toolstrip-workspace # Conflicts: # AGENT_HANDOFF.md # SPEC.md # docs/development/RATE_OF_CLOSURE_CAMPAIGN_HANDOFF.md # src/rate_of_closure/AGENT_HANDOFF.md
…8-toolstrip-workspace # Conflicts: # SPEC.md
2026-08-10 repaired launch-registry parent propagated normallyExact repaired #4203 head The merge tree had no feature-code conflict; only the four append-only handoff/SPEC surfaces required semantic reconciliation. Evidence after reconciliation: 25 focused D-plane, impact-contract, impact-kinematics, and impact-scene tests passed; docs governance, changed-file-size, and whitespace gates passed. Exact parent #4203 quality gate was green before this propagation. This PR remains draft. Fresh current-head protected CI, review, and dependency-order gates are required before any merge. Downstream children must receive this head only by later normal parent-first propagation. |
…8-toolstrip-workspace # Conflicts: # AGENT_HANDOFF.md # src/rate_of_closure/AGENT_HANDOFF.md
|
Consolidated into #4410. Closing to eliminate CI runner load. |
Summary
Why
The prior workbench reused a single selected plot, left zoom/autoscale and legend control ambiguous, and drew the entire swing path during playback. The application shell also lacked one discoverable, cross-client command surface and a strict persistence boundary. These defects made comparison workflows hard to inspect and allowed client behavior to drift.
User impact
Users can now keep multiple plots visible, tune each plot independently, restore fitted axes, move or hide legends, and replay swing animations reliably without a permanent path dominating the frame. PyQt6 and React expose the same application-level command IDs and module-management concepts. Incomplete File adapters remain visibly disabled with reasons instead of pretending to save partial state.
Validation
swing_corewheel), 15 existing warningsgit diff --check: passedTracking
Implements the current toolstrip/plot/playback slice of #4218, #4224, and #4225.
The read-only ground and cross-client audits are tracked separately in #4267 and #4260. This PR does not claim to implement the qualified bounce/roll solver or close those epics.
Stack
This draft targets
feat/4181-launch-monitor-registry/ PR #4203. It must not be merged ahead of its parent, and protected checks/reviews remain authoritative.