Skip to content

feat(ground): add passive impact and repeated bounce - #4302

Closed
d-sorgcodexagent[bot] wants to merge 8 commits into
feat/4269-flight-ground-transferfrom
feat/4270-ground-impact-bounce
Closed

feat(ground): add passive impact and repeated bounce#4302
d-sorgcodexagent[bot] wants to merge 8 commits into
feat/4269-flight-ground-transferfrom
feat/4270-ground-impact-bounce

Conversation

@d-sorgcodexagent

@d-sorgcodexagent d-sorgcodexagent Bot commented Aug 10, 2026

Copy link
Copy Markdown
Contributor

Summary

  • add a typed passive restitution/Coulomb sphere-plane impact solver with full sphere-spin coupling and moving-surface energy accounting
  • interpolate exact first contact and deterministic repeated ballistic recontact under versioned standard gravity
  • expose a validated impact/bounce prefix with exact events, trajectory samples, airborne-segment distance evidence, bounded cancellation/termination, and one terminal SKID handoff
  • preserve absolute public timestamps while measuring max_time_s from interpolated first contact and counting FIRST_CONTACT against max_events
  • pin the scientific contract, shared golden fixture, API surface, campaign authority, SPEC, and all durable handoffs

Tracks #4270 under ground-model epic #4267.

Exact stack evidence

No existing PR base was changed; this is the next normal child in the ground stack.

Verification at immutable implementation evidence

  • CPython 3.10.20 full ground suite: 82/82
  • CPython 3.11.9 full ground suite: 82/82
  • independent Python 3.13 full ground suite: 82/82
  • pinned mypy 1.13: 17 ground production modules, no issues
  • pinned Ruff 0.14.10 check/format: pass
  • campaign manifest validator: pass
  • campaign manifest tests: 8/8
  • documentation governance: pass
  • module/function/signature budgets: pass
  • shared golden SHA-256: 5831a8f8bf0fe18edf76c985503fdfe784df8e0eed89f85deb9c27085fb9f059
  • git diff --check: pass

Current-head CI correction

Hosted quality-gate run 31350134551 on the previous docs head exposed four actionable pinned-MyPy findings. Commit 920c46dee688815691e251777142126bf1489b1a binds the lazy serializer result to its declared mapping type and narrows the guarded output-grid time to a local float; physics, schema, numerical order, outputs, scope, and base are unchanged.

Current-head local revalidation:

  • CPython 3.10.20 full ground suite: 82/82
  • CPython 3.11.9 full ground suite: 82/82
  • pinned MyPy 1.13: exact failing 2-file slice and all 17 ground modules, no issues
  • Ruff check/format and git diff --check: pass

Deliberate boundary

This PR is not a final ground simulation. Issue #4271 retains skid, roll, rest, total distance, regional surfaces, and composition into GroundSimulationResult. The v1 bounce law deliberately does not consume firmness, grass, compressibility, moisture, or rolling resistance. PyQt/React UI, TypeScript/Rust/PyO3/WASM physics, and downstream UpstreamDrift integration remain separately tracked.

Release boundary

This is draft-PR evidence only. Protected CI, required review, parent integration, and ordinary release remain open; issue #4270 must not be closed before those gates pass.

@d-sorgcodexagent
d-sorgcodexagent Bot marked this pull request as ready for review August 11, 2026 19:00
@dieterolson

Copy link
Copy Markdown
Collaborator

Consolidated into #4409. 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