Skip to content

feat(rate-of-closure): complete scatter export parity - #4280

Closed
d-sorgcodexagent[bot] wants to merge 11 commits into
feat/4218-toolstrip-workspacefrom
feat/4144-variation-export-continuation
Closed

feat(rate-of-closure): complete scatter export parity#4280
d-sorgcodexagent[bot] wants to merge 11 commits into
feat/4218-toolstrip-workspacefrom
feat/4144-variation-export-continuation

Conversation

@d-sorgcodexagent

Copy link
Copy Markdown
Contributor

Summary

  • add complete selected-axis scatter CSV export in PyQt6 and React
  • preserve every raw trial, typed outcome, and unavailable value in the export
  • add the PyQt accessible raw-trial scatter table and share its population code with the matrix view
  • keep changed production modules below 400 lines and changed functions at or below 50 lines
  • update both Rate of Closure handoffs with the live epic audit and the uncovered wind/capability many-trial boundaries

Scope and stack

This is a narrow continuation of #4144 stacked on draft PR #4279. It does not modify the toolstrip PR and it does not claim the universal many-trial epic is complete.

The audit confirmed two dependent gaps:

Validation

  • Python/PyQt/shared swing: 890 passed, 1 expected optional-Rust skip, 15 existing warnings
  • React: 89 files / 545 tests passed
  • Ruff check and format: passed
  • Black: passed (Python 3.13 versus configured 3.14 parser warning only)
  • targeted mypy: passed
  • TypeScript: passed
  • ESLint with zero warnings: passed
  • Vite production build: passed, 166 modules
  • git diff --check: passed

Release boundary

Draft only. Protected exact-head checks, review, parent-stack merge order, UpstreamDrift consumption, bounded large-ensemble execution, nonlinear sensitivity, and the remaining many-trial adapters are still required. Queued, skipped, or zero-job workflows are not passing evidence.

Refs #4142
Refs #4144
Refs #4199

@github-actions

github-actions Bot commented Aug 8, 2026

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.

@d-sorgcodexagent

Copy link
Copy Markdown
Contributor Author

Read-only CI diagnosis (2026-08-08) — both failing checks on the current head are now root-caused:

  1. Spec Check (Verify SPEC.md freshness, run 31222218937): the branch changes src/** relative to its base but adds no dated SPEC.md §12 row. Fix: add the changelog row on this branch (or apply the spec-exempt label if genuinely behavior-neutral, which this parity slice is not).

  2. CI Standard → tests (3.10) (run 31222218989): every tests/rate_of_closure module fails collection with ImportError: cannot import name 'StrEnum' from 'enum' under Python 3.10. StrEnum was added in Python 3.11; many Rate/swing_sim modules import it bare (rate_of_closure/application/commands.py, simulation/manual_delivery.py, view_workspace.py, swing_sim/conventions/registry.py, swing_sim/impact/dplane.py, the swing_sim/flight contract modules, and more) while the repo already ships shared.python.compatibility.StrEnum exactly for 3.10. This is not introduced by this PR — it is stack-wide and will hit every PR in the feat: Swing–Impact–Ball-Flight Simulation Platform (consolidated — epic #4103) #4119-descendant stack whose diff triggers the Rate test matrix. It should be fixed once, low in the stack (switch the bare imports to the shared compatibility shim), rather than per-PR.

Not pushing to this branch from the capability-optimization-ui session; leaving the fix to the owning continuation per stack discipline.

@dieterolson

Copy link
Copy Markdown
Collaborator

Correction to my previous comment (point 2 was wrong).

I checked further and my StrEnum prescription above was incorrect. Please do not convert the bare from enum import StrEnum imports to the compatibility shim on my earlier advice:

  • pyproject.toml has declared requires-python = ">=3.11" since 2026-05-14, so enum.StrEnum is a legitimate import for this codebase. The shared.python.compatibility shim exists for older subsystems (p1am, sidekick), not as a repo-wide requirement.
  • Branch protection on main requires exactly ["quality-gate", "tests (3.11)"]. tests (3.10) is not a required check, and ci-standard.yml documents this directly in the matrix comment: "Only tests (3.11) is a required check", with fail-fast: false specifically so a non-required lane cannot cancel the required one.

So the 3.10 ImportError is a stale-matrix artifact — the lane tests a Python version the package declares unsupported — not a merge blocker for this PR and not something to refactor around. If it is worth addressing at all, the correct fix is to the CI matrix (drop 3.10, or exclude the 3.11+-only suites from that lane), owned by whoever maintains ci-standard.yml — not to the source imports.

Point 1 stands and is the actual actionable blocker here: Spec Check fails because this branch changes src/** without a dated SPEC.md §12 row. That is the one to fix.

Apologies for the misdirection.

dieterolson and others added 4 commits August 9, 2026 17:49
…4-variation-export-continuation

# Conflicts:
#	src/rate_of_closure/AGENT_HANDOFF.md
# Conflicts:
#	SPEC.md
#	docs/development/RATE_OF_CLOSURE_CAMPAIGN_HANDOFF.md
@d-sorgcodexagent

Copy link
Copy Markdown
Contributor Author

2026-08-10 repaired workspace parent propagated normally

Exact repaired #4279 head 61b7f48b5aeb7d57246b4963da3df086e79cbe15 is now carried into this unchanged-base draft through merge commit b90e5021a59e2081415b51ef29fbed06377bc201 (parents: prior child 8bcc49fc4e16e5e43be0b7f0f03c3017d5b79d0c, then repaired parent). No rebase, retarget, force-push, or history rewrite occurred.

The merge tree had no feature-code conflict; only the four append-only handoff/SPEC surfaces required semantic reconciliation. The variation/export functionality is unchanged. 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 #4279 quality gate was green before propagation.

This PR remains draft. Fresh current-head protected CI, review, and dependency-order gates are required before any merge. Downstream #4281 and later children must receive this head only by later normal parent-first propagation.

@d-sorgcodexagent
d-sorgcodexagent Bot marked this pull request as ready for review August 11, 2026 18:59
codex-scheduled added 2 commits August 11, 2026 15:33
…4-variation-export-continuation

# Conflicts:
#	AGENT_HANDOFF.md
#	src/rate_of_closure/AGENT_HANDOFF.md
@dieterolson

Copy link
Copy Markdown
Collaborator

Consolidated into #4410. Closing to eliminate CI runner load.

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