Skip to content
Closed
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
35 changes: 35 additions & 0 deletions AGENT_HANDOFF.md
Original file line number Diff line number Diff line change
@@ -1,5 +1,40 @@
# AGENT_HANDOFF — Tools

## 2026-08-11 local #4273 React request-workspace ownership

The unpublished `codex/4273-ground-variation-file-ui` branch starts from exact
PR #4366 head `8dfb1189c13f0fce99901e1ffbba152d813f9006`. Its read-only integration audit
found that PyQt already has a main-window owner for both editors, while React
kept the variation plan and regional draft/import evidence in mutually
exclusive panel-local state. Switching tabs destroyed one side of the request,
so binding File commands at that boundary would have been misleading.

This bounded prerequisite adds one App-owned reducer and hook. The variation
plan, analysis-execution selection, regional draft, and exact imported request
now survive panel unmount/remount; both panels are controlled adapters. A typed
request port composes only current state and transactionally applies a complete
request after validating the two ground keys, global bounded noise, plan/base
equality, identities, caps, and editor-qualified regional evidence. Invalid
apply leaves every prior field unchanged, and the disclosed illustrative
regional draft cannot be composed until explicitly edited or imported. The
toolstrip receives the reserved
typed port but exposes no new command in this slice.

React now names the existing Python-owned ground restitution and rolling-
resistance keys so applied plans remain inspectable. The scalar browser runner
rejects those inputs visibly instead of routing them into unrelated flight
physics. No physics, file dialog, upload/download, PyQt, browser-persistence,
or filesystem semantics changed. TDD captured the missing owner and navigation
reset. The complete React suite passes 763 tests across 121 files; TypeScript,
ESLint, and the production Vite build pass. The campaign manifest and its eight
tests, documentation governance, blocking-quality policy, module-size budget,
and diff checks also pass. Vite retains its inherited main-chunk warning.

Keep #4273/#4267 open. The next bounded child may add strict browser
serialization and contextual File controls plus the PyQt native controller,
using this owner rather than an imperative registry or illustrative fallback.
No push or GitHub write occurred from this branch.

## 2026-08-11 local #4273 seeded-request persistence

The unpublished `codex/4273-ground-variation-persistence` branch starts from
Expand Down
29 changes: 27 additions & 2 deletions SPEC.md
Original file line number Diff line number Diff line change
Expand Up @@ -26,8 +26,8 @@
| **Owner** | D-sorganization |
| **Primary Language(s)** | Python 3.11+, Rust, JavaScript, TypeScript |
| **License** | MIT |
| **Current Version** | 1.14.57 |
| **Spec Version** | 1.14.57 |
| **Current Version** | 1.14.58 |
| **Spec Version** | 1.14.58 |
| **Last Spec Update** | 2026-08-11 |

## 2. Purpose & Mission
Expand All @@ -46,6 +46,29 @@ Comprehensive monorepo housing 45+ utility tools for data processing, scientific

## 3. Goals & Non-Goals

### 2026-08-11 React Regional-Ground Variation Workspace Ownership

- One App-owned reducer now retains the complete physical variation-plan
editor, analysis-execution choice, regional-surface draft, and exact imported
regional request while the mutually exclusive workspace panels unmount.
`VariationPanel` and `RegionalSurfacePlanPanel` are controlled adapters; no
module-local fallback can silently replace the user's current request state.
- A typed request port composes only the current editors and validates launch
mode, the two supported base-material keys, global explicit `[0, 1]` bounds,
base-plan equality, identifiers, row caps, and editor-qualified regional
evidence. Whole-request apply validates and derives every replacement field
before dispatch, so invalid input cannot partially mutate the workspace.
The disclosed illustrative regional draft is never eligible for composition
until the user explicitly edits it or imports qualified evidence.
- The web registry names normal restitution and rolling resistance so an
applied request remains inspectable. The existing scalar browser runner
rejects those inputs visibly because the regional-ground pipeline has not
been integrated there; this slice changes no physics.
- This session-state prerequisite excludes File-menu controls, upload/download
serialization, native dialogs, PyQt wiring, browser filesystem claims,
execution-pipeline integration, protected publication, and #4273/#4267
completion.

### 2026-08-11 Seeded Regional-Ground Request Persistence

- A strict v1 application envelope stores the existing immutable seeded
Expand Down Expand Up @@ -3153,6 +3176,8 @@ Active development with stable core, continuous tool expansion, and web API in p

| Date | Version | Changes |
| ---- | ------- | ------- |
| 2026-08-11 | 1.14.58 | feat(ground-study, #4273): lift the React variation plan, execution policy, regional draft, and exact imported evidence into one App-owned transactional workspace; make both panels controlled across navigation; expose a typed compose/apply request port; register the two inspectable ground inputs while failing closed before unsupported scalar-browser execution; retain File controls, PyQt wiring, browser persistence, pipeline integration, protected release, and issue/epic completion as open. |
| 2026-08-11 | 1.14.57 | feat(ground-study, #4273): add strict canonical bounded seeded regional-ground request persistence without UI or physics. |
| 2026-08-11 | 1.14.56 | docs(ground-study, #4365): record ready publication of the seeded base-material variation runner at implementation `8c9c9512c61bac6f958ae7c7c0fe58e8f70525bf`, stacked on exact #4364 head `f13f0908dd2a553cf4d114afd31bb474d1b967c7`; retain protected checks, UI/overlay/persistence, solver/wind, compiled/downstream parity, release, and #4273/#4267 completion as open. |
| 2026-08-11 | 1.14.55 | feat(ground-study, #4273 #4267): add deterministic VariationPlan-driven base normal-restitution and rolling-resistance studies with immutable per-trial provenance, exact injected flight-through-regional-ground execution, bounded sampled-input scalar ensembles, typed-null unavailable rows, and fail-before-execution validation; retain region overlays, UI/persistence, solver/wind integration, compiled/downstream parity, protected release, and issue/epic completion as open. |
| 2026-08-11 | 1.14.54 | feat(ground-target, #4192 #4273 #4267): add a UI-neutral complete-rest-only projection from exact flight-through-regional-ground evidence to the existing `SpatialTarget`; record the sole `GroundFrame.TARGET`, retain final x/z, replace ball-center y exactly once with declared landing-surface elevation, reuse `SpatialTarget.miss` signs and geometry, type aerial targets as `AERIAL_REQUIRES_FLIGHT_TRAJECTORY`, preserve every unqualified/censored outcome as null with exact phase/reason/digest evidence, and expose a bounded ordered target scalar ensemble while leaving UI, persistence, solver/capability, aerial-trajectory, compiled-runtime, protected-release, and issue completion open. |
Expand Down
25 changes: 25 additions & 0 deletions docs/development/RATE_OF_CLOSURE_CAMPAIGN_HANDOFF.md
Original file line number Diff line number Diff line change
@@ -1,5 +1,30 @@
# Rate of Closure Ball-Flight Campaign Handoff

## 2026-08-11 local #4273 React request-workspace ownership

- The unpublished `codex/4273-ground-variation-file-ui` child starts from exact
PR #4366 head `8dfb1189c13f0fce99901e1ffbba152d813f9006`. Audit showed a clean PyQt
main-window composition seam but no React owner above the mutually exclusive
Variation and Ground Surfaces panels; navigation discarded one editor.
- A UI-neutral reducer and App-owned hook now retain the physical variation
plan, analysis policy, regional draft, and exact imported request across
navigation. Both panels are controlled. A reserved typed toolstrip port
snapshots only current state and validates a complete replacement before one
atomic reducer transition, so invalid requests cannot partially apply. The
disclosed illustrative draft remains ineligible until edited or imported.
- The two existing Rate ground input keys are inspectable in the web registry.
Browser scalar execution fails closed with a visible unsupported-path status;
no regional physics was reimplemented or approximated.
- RED captured the missing owner and navigation reset. All 763 React tests in
121 files pass, as do TypeScript, ESLint, the production Vite build, campaign
manifest validation plus eight tests, docs governance, blocking-quality
policy, the scoped 400-line module budget, and diff checks. Vite reports only
its inherited main-chunk size warning.
- This local slice adds no File controls, request upload/download adapter,
native dialog, PyQt wiring, persistent browser workspace, or protected
evidence. Keep #4273/#4267 open and stack those remaining clients only on
this state owner. No branch was pushed and no GitHub state changed.

## 2026-08-11 local #4273 seeded-request persistence

- The unpublished `codex/4273-ground-variation-persistence` branch starts from
Expand Down
16 changes: 14 additions & 2 deletions docs/release/rate_of_closure_campaign.v1.json
Original file line number Diff line number Diff line change
Expand Up @@ -1394,6 +1394,18 @@
"kind": "repository_path",
"value": "src/rate_of_closure/application/regional_ground_variation_request.py"
},
{
"kind": "repository_path",
"value": "src/rate_of_closure/web/src/model/regionalGroundVariationWorkspace.ts"
},
{
"kind": "repository_path",
"value": "src/rate_of_closure/web/src/hooks/useRegionalGroundVariationWorkspace.ts"
},
{
"kind": "repository_path",
"value": "src/rate_of_closure/web/src/App.workspaceState.test.tsx"
},
{
"kind": "repository_path",
"value": "src/rate_of_closure/simulation/ground_playback.py"
Expand Down Expand Up @@ -1447,12 +1459,12 @@
"ground-regional-ui-helper-local-d217",
"ground-regional-io-local-8e1c"
],
"evidence_gap": "The contract, flight-transfer, impact/bounce, static-plane skid/roll, regional-surface, regional-plan wire, regional-editor, regional request-I/O, regional execution, evidence-readback, complete-result, ledger-inspection, trajectory-export, repeated-bounce result-wire, repeated-bounce request-wire, UI-neutral repeated-bounce execution, flight-to-bounce composition, full flight-through-regional-ground composition, qualified study-adapter, matched ground-playback, post-ground target, and seeded base-material variation carriers remain open on PRs 4285, 4288, 4302, 4304, 4332, 4335, 4339, 4342, 4350, 4351, 4352, 4353, 4354, 4355, 4356, 4357, 4359, 4360, 4361, 4363, 4364, and 4365. PR 4361 adds a UI-neutral complete-rest-only adapter into existing flight metrics and scalar ensembles while retaining partial, censored, cancelled, failed, non-settled, missing-summary, and transfer-failure outcomes as typed nullable rows. PR 4363 adds matched import-only PyQt6 and React playback with phase-safe absolute time, bounded presentation, and no physics. PR 4364 maps only qualified final x/z through the sole target frame, substitutes declared surface elevation once, reuses SpatialTarget miss geometry, and emits bounded typed target rows. PR 4365 varies only base normal restitution and rolling resistance with deterministic plan-bound provenance and qualified nullable scalar outputs. An unpublished exact-#4365 local child adds strict canonical 1 MiB seeded-request JSON plus bounded native atomic persistence, but has no UI, browser file operation, carrier, or protected evidence. Fresh protected evidence, regional-overlay variation, solver/capability invocation, variation UI, UI pipeline invocation, direct editor handoff, workspace embedding, measured calibration, changing geometry, rendered visual QA, camera presets/tracking, compiled-runtime physics, and downstream parity remain absent.",
"evidence_gap": "The contract, flight-transfer, impact/bounce, static-plane skid/roll, regional-surface, regional-plan wire, regional-editor, regional request-I/O, regional execution, evidence-readback, complete-result, ledger-inspection, trajectory-export, repeated-bounce result-wire, repeated-bounce request-wire, UI-neutral repeated-bounce execution, flight-to-bounce composition, full flight-through-regional-ground composition, qualified study-adapter, matched ground-playback, post-ground target, and seeded base-material variation carriers remain open on PRs 4285, 4288, 4302, 4304, 4332, 4335, 4339, 4342, 4350, 4351, 4352, 4353, 4354, 4355, 4356, 4357, 4359, 4360, 4361, 4363, 4364, and 4365. PR 4361 adds a UI-neutral complete-rest-only adapter into existing flight metrics and scalar ensembles while retaining partial, censored, cancelled, failed, non-settled, missing-summary, and transfer-failure outcomes as typed nullable rows. PR 4363 adds matched import-only PyQt6 and React playback with phase-safe absolute time, bounded presentation, and no physics. PR 4364 maps only qualified final x/z through the sole target frame, substitutes declared surface elevation once, reuses SpatialTarget miss geometry, and emits bounded typed target rows. PR 4365 varies only base normal restitution and rolling resistance with deterministic plan-bound provenance and qualified nullable scalar outputs. One unpublished exact-#4365 local child adds strict canonical 1 MiB seeded-request JSON plus bounded native atomic persistence. Its exact-#4366 child now adds React-only App-owned variation/regional editor state, exact imported-evidence retention, transactional compose/apply validation, and an unused typed File-command seam. It adds no File controls, browser serialization, PyQt wiring, physics execution, carrier, or protected evidence. Fresh protected evidence, regional-overlay variation, solver/capability invocation, UI pipeline invocation, direct editor handoff, measured calibration, changing geometry, rendered visual QA, camera presets/tracking, compiled-runtime physics, and downstream parity remain absent.",
"limitations": [
"Airborne flight must first terminate against physical terrain and preserve terminal angular velocity.",
"Current UpstreamDrift terrain and putting implementations are reference inputs rather than the qualified authority.",
"The #4270 rigid impact law does not consume firmness, grass, compressibility, moisture, or rolling-resistance fields.",
"Published open PR #4365 supports seeded variation only on the base surface; an unpublished child adds canonical request persistence only, while regional overlays, UI, workspace embedding, browser file operations, and solver/capability consumption remain absent.",
"Published open PR #4365 supports seeded variation only on the base surface; unpublished children add canonical request persistence and React session-state ownership only. File controls, browser upload/download serialization, PyQt wiring, regional overlays, UI pipeline execution, and solver/capability consumption remain absent.",
"Published open PR #4304 qualifies one immutable planar profile and optional finite tangent-axis edge; open PR #4332 adds bounded coplanar material overlays; open PR #4335 adds a strict Python/TypeScript plan wire boundary and Python resolver; open PR #4339 adds matched PyQt6/React request editors; open PR #4342 adds editor-qualified canonical request import/export with native atomic semantics and explicit browser limitations; open PR #4350 adds UI-neutral Python regional execution plus an embedded-plan-bound result/provenance envelope with validated transition crossings; open PR #4351 adds matched strict plan-bound evidence import/readback; open PR #4352 completes all frozen summary/result fields, warnings, calibration, provider identity, and observed-phase readback; open PR #4353 adds bounded ground-event and regional-transition ledger inspection; open PR #4354 adds bounded raw trajectory inspection plus native-atomic and browser-download canonical evidence export; open PR #4355 adds strict import-only Python/TypeScript RepeatedBounceResult evidence serialization and parsing with exact nested invariants, a 1 MiB bound, and canonical SHA parity; open PR #4356 adds the strict paired request envelope; open PR #4357 adds the UI-neutral Python request-to-solver binding; open PR #4359 adds strict composition from qualified flight output through the existing transfer and request boundaries to that executor; open PR #4360 composes the existing flight, bounce, regional skid/roll, and complete-result authorities behind one strict non-fabricating evidence contract; open PR #4361 adds a complete-rest-only Python adapter into existing metric and scalar-ensemble contracts without promoting censored numeric endpoints; open PR #4363 adds strict phase-safe import-only playback to matched PyQt6/React workspaces; and open PR #4364 evaluates only qualified landing targets while retaining typed nulls for aerial and every unqualified outcome. Changing normals, height or velocity discontinuities, terrain deformation, torsional-spin damping, roll-to-skid transitions, direct editor handoff, persistence, aerial target trajectory evaluation, measured calibration, workspace model-input persistence, rendered visual QA, camera presets/tracking, compiled or TypeScript regional physics, solver/capability invocation, variation UI, wind strategy, and downstream surface adapters remain unimplemented."
],
"depends_on_issues": [
Expand Down
29 changes: 29 additions & 0 deletions src/rate_of_closure/AGENT_HANDOFF.md
Original file line number Diff line number Diff line change
@@ -1,5 +1,34 @@
# AGENT_HANDOFF — rate_of_closure

## 2026-08-11 local #4273 React request-workspace ownership

The unpublished `codex/4273-ground-variation-file-ui` child starts from exact
PR #4366 head `8dfb1189c13f0fce99901e1ffbba152d813f9006`. React previously owned the
variation and regional-surface inputs inside separate panels that unmount on
navigation. The new App-owned reducer/hook retains the complete request-editor
state and exact imported regional evidence; both panels are controlled.

`RegionalGroundVariationRequestTs` and its typed port provide a future
File-command seam. Snapshot uses only the current plan and current regional
draft/import evidence. Complete apply validates all fields and derives the
editor draft before dispatch, so invalid input cannot partially replace state.
The disclosed illustrative regional draft is not composable until the user
explicitly edits it or imports qualified evidence.
The web registry exposes the two existing ground-material keys, while the
scalar browser runner rejects them with a visible unsupported-path message.
No physics or persistence behavior is added.

RED captured the missing owner and tab-reset behavior. The full React suite is
green at 763 tests in 121 files. TypeScript, ESLint, Vite production build,
campaign manifest validation and its eight tests, documentation governance,
blocking-quality policy, scoped module-size, and diff gates pass; the Vite
main-chunk warning is inherited.

File controls, strict combined-schema TypeScript serialization, browser
upload/download, PyQt native actions, pipeline execution, protected review,
publication, and downstream parity remain open. Keep #4273/#4267 open. No push
or GitHub write occurred.

## 2026-08-11 local #4273 seeded-request persistence

The unpublished `codex/4273-ground-variation-persistence` child starts from
Expand Down
Loading
Loading