Symptom
node dist/cli/index.js validate --include-interference examples/robot-hand/two-finger-coupled-gripper.kcad.ts reports mechanism: broken with 13 mechanism.interpenetration failures.
Representative failure:
Parts 'palm' and 'left-finger' overlap by 365.62 mm³ at pose sample 'rest' and are NOT joined by a mate that would explain the contact.
Palm overlaps each finger by ~366 mm³ at every sampled pose; finger-root cylinders also overlap palm geometry at the curl extremes.
Root cause
The fingers' hinge knuckles physically nest into the palm's hinge cheeks — a real clevis joint pattern — but the example uses pin-axis vec3 connectors instead of joint.clevis(...), so the joint-pair tolerance in mechanismTruth.ts:checkInterpenetration (which excludes contact-face overlap at declared revolute mates up to a fraction of the mate volume) doesn't recognise the contact as expected.
Fix scope
Rebuild the palm + finger hinges using joint.clevis(...) (the same primitive the Luxo lamp uses). The clevis primitive will:
- generate fork + tongue + pin geometry,
- union the geometry into the right parts,
- return connectors that the physics loop's joint-pair exclusion tolerance recognises as the contact face.
Estimate 1-2 hours given there are two hinges (left + right curl) and the coupled-mate transmission needs to keep working.
Spec
- docs/specs/2026-06-01-physics-grounded-loop-design.md §criterion 2
- docs/plans/2026-06-01-physics-loop-P3-sweep-and-demote.md
Symptom
node dist/cli/index.js validate --include-interference examples/robot-hand/two-finger-coupled-gripper.kcad.tsreportsmechanism: brokenwith 13mechanism.interpenetrationfailures.Representative failure:
Palm overlaps each finger by ~366 mm³ at every sampled pose; finger-root cylinders also overlap palm geometry at the curl extremes.
Root cause
The fingers' hinge knuckles physically nest into the palm's hinge cheeks — a real clevis joint pattern — but the example uses pin-axis vec3 connectors instead of
joint.clevis(...), so the joint-pair tolerance inmechanismTruth.ts:checkInterpenetration(which excludes contact-face overlap at declared revolute mates up to a fraction of the mate volume) doesn't recognise the contact as expected.Fix scope
Rebuild the palm + finger hinges using
joint.clevis(...)(the same primitive the Luxo lamp uses). The clevis primitive will:Estimate 1-2 hours given there are two hinges (left + right curl) and the coupled-mate transmission needs to keep working.
Spec