feat: add physical junction contact routing

Replace scripted junction handoff with kinematic CAD diverter colliders and contact-only B/C/D routing, validated by a 45-run engineering-derived matrix.

Co-authored-by: Cursor <cursoragent@cursor.com>
This commit is contained in:
Даня Архипов
2026-08-02 06:46:10 +00:00
parent 1586e9d2ab
commit dce7faee24
10 changed files with 858 additions and 216 deletions

View File

@@ -46,14 +46,23 @@ src/styles.css
| Classifier PDF | `official_sources/doc-1783095831.pdf` |
| Workspace / scoring PDFs | `input_info/doc-1783009942.pdf`, `doc-1783011400.pdf` |
## Physics roadmap (not completed)
## Physics status (ENGINEERING-DERIVED PHYSICAL VALIDATION)
1. Surface-velocity belt at 1 m/s with visual loop.
2. Contact-validated CAD diverter deflection for all playlist SKUs.
3. Calibrated per-SKU mass, COM, friction, damping.
4. Receiver capture verification under dynamic drops.
Implemented and covered by `src/domain/junctionContactPhysics.ts` (+ tests):
CCD for light/thin items exists in runtime/sim; that alone is **not** full contact validation.
1. Fixed timestep **1/120 s**, max **4** substeps, gravity **[0, 9.81, 0]**.
2. Belt target speed **1.0 m/s** via supported-body velocity coupling (stationary belt collider).
3. Single dynamic product body through junction; temporary scripted handoff removed.
4. LEFT/RIGHT diverter colliders: `kinematicPositionBased`, cuboid half-extents **[0.375, 0.05, 0.02]**, same pivot/yaw as CAD.
5. C/D change direction only by physical contact; B uses the open neutral corridor.
6. Receiver volumes are sensors for completion; they do not translate the body.
7. Deterministic matrix **45/45** correct receiver entries (3 profiles × 5 runs × B/C/D).
Still not production-certified:
- Per-SKU mass / COM / friction calibration against real hardware
- Visual full belt loop mesh with true surface velocity
- Owner visual review of contact behavior
## Compliance evidence rules