Skip to content

fix(examples): make the Luxo lamp evaluate as connected solids - #1381

Open
w1ne wants to merge 2 commits into
developfrom
fix/luxo-lamp-connected-solids-20261113
Open

w1ne wants to merge 2 commits into
developfrom
fix/luxo-lamp-connected-solids-20261113

Conversation

@w1ne

@w1ne w1ne commented Nov 13, 2026

Copy link
Copy Markdown
Owner

Summary

examples/kinematic/luxo-lamp.kcad.ts now evaluates cleanly. On develop, kernelcad evaluate fails with 10 errors (5 union.disconnected, 5 union.member-overlap). The mechanism validate test still passes, so the smoke test exempted the file with a stale "hinge visibility" reason, and nothing detected the defect.

Reproduction (develop 80f7542be)

npx tsx src/agent/cli/index.ts evaluate examples/kinematic/luxo-lamp.kcad.ts --json   # ok:false, 10 union errors

Root causes and changes (example source only)

Defect Change
Spring posts and the neck stem have their own .material() and overlap a body that uses the same material Fuse beam + posts + yoke, and stem + fat neck + post, then call .material() once
Elbow and wrist fork plates float beside the 14 mm beam (fork gap 18 mm) Fork-width distal yoke on each beam; the clevis pocket leaves two cheeks that carry the plates
Upper beam starts 6 mm in front of its tongue; lower beam only touches its tongue Both beams start 2 mm inside the tongue
The shoulder clevis pocket removes the column top under the spring mast The mast stands on the base disc
Shade, socket and wrist post float The slim stem carries the shade; the socket starts in the shade wall; the post rises from the stem
Added link mass moves the shoulder drop test to 5.1° (limit 5°) Shoulder spring restLengthMm 36 → 34 mm: 3.7° drift (develop 3.8°)

The luxo-lamp exemption is removed from tests/integration/fast/exampleParseSmoke.test.ts, so evaluate is now covered (1.6 s; budget 15 s).

Results

  • evaluate: ok:true, 106 features, 0 diagnostics.
  • validate --include-physics --include-interference: mechanism: real. 8 poses across 3 joints, no collisions, holds under gravity.
  • exampleParseSmoke -t 'luxo-lamp|classifies': 3 passed.
  • KCAD_SLOW=1 luxoLampClevis.{test,validate.test,mjcf.test} + exampleSweepGate: 11 passed.
  • scripts/typecheckExamples.ts: no errors in this file. The existing errors are in other files.
  • I read drift values with a local threshold override that is not committed. Engine code is unchanged.

Demo

docs/demos/luxo-lamp-connected-solids-20261113/demo.mp4: a static local turntable that I inspected visually (frames at 0.5 s and 3 s). Provenance and hashes are in capture-settings.json. The dark shade colour is the same on develop.

Limits

Gallery artifacts under docs/demos/gallery/luxo-lamp/ are not regenerated. The tendon co-calibration follow-up noted in the source remains open.

🤖 Generated with Claude Code

github-actions Bot and others added 2 commits November 13, 2026 16:57
`kernelcad evaluate examples/kinematic/luxo-lamp.kcad.ts` failed with
5 union.disconnected and 5 union.member-overlap errors, while the
mechanism validate test still passed. The smoke test exempted it with a
stale "hinge visibility" reason.

- Fuse each arm's beam, spring posts and new distal yoke before one
  .material() call; same for the head neck stem, fat neck and post.
- Add a fork-width yoke at each beam end so the elbow and wrist fork
  plates (outboard of the 14 mm beam) are carried by the link.
- Start both beams 2 mm inside their clevis tongue.
- Stand the shoulder spring mast on the base disc; the clevis pocket
  removes the column top under it.
- Carry the shade on the neck stem, the socket on the shade wall, and
  the wrist post on the stem.
- Shorten the shoulder spring rest length 36 -> 34 mm to restore the
  drop-test margin (3.7 deg drift vs 3.8 deg on develop; limit 5 deg).

Remove the smoke-test exemption so evaluate stays covered.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Signed-off-by: w1ne <41898282+w1ne@users.noreply.github.com>
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Signed-off-by: w1ne <41898282+w1ne@users.noreply.github.com>

This branch has not been deployed

No deployments
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