Skip to content

fix: correct biomechanical form across 14 movements - #28

Merged
a-baran-orhan merged 1 commit into
mainfrom
fix/movement-form-corrections
Jul 10, 2026
Merged

fix: correct biomechanical form across 14 movements#28
a-baran-orhan merged 1 commit into
mainfrom
fix/movement-form-corrections

Conversation

@a-baran-orhan

Copy link
Copy Markdown
Member

Description

Applies form corrections surfaced by a movement-library review (analyzed with an external LLM, then verified against the actual DSL grammar, ROM tables, and the live renderer before applying). I rejected the report's suggestions that were factually wrong for this codebase — details below.

What changed

Neutral spine under load (the report's strongest, correct point):

  • squat, box-squat, chair-pose: replaced lumbar rounding (spine: flex) with a pelvis: hinge + neutral / slightly-extended spine. The forward lean now comes from the hips, not a rounded back — real athletic squat form. Verified in the viewer: torso is upright, chest proud.

Lunge reads as a lunge, not a static split squat:

  • forward-lunge: deepened the trailing knee (flex 45 → 80) and added a small travel: 0 0.3. Verified: the back knee now drops toward the floor.

Arms hang / pull correctly:

  • bent-over-row: shoulders: extend 55 (arms thrown backward) → shoulders: flex 65, which over a 70° hinge hangs the arms vertically; the row pull uses extend 10.
  • pull-up: pull the shoulders down toward the bar during the pull (flex 150 → 105) instead of holding them locked overhead.

Straighter 'long' limbs + cleaner detail:

  • crunch: neck: flex 20 → 8 (less chin-tuck).
  • seated-forward-fold: hinge at the hips (flex 90 → 115), cut spine: flex 60 → 25 so it folds instead of slouching from the mid-back.
  • bicycle-crunch, dead-bug: straighten the extended leg (knee ≈ 5) and add chest counter-rotation so the twist reads.
  • glute-bridge: hips: extend 15 → 20.

Supporting-foot planting:

  • single-leg-calf-raise, standing-hamstring-curl, standing-quad-stretch: added ground-lock: feet so the stance foot stays planted.

Where I disagreed with the report

  • "Flying cobra / floating body" is not a data problem. The report blamed missing pin on the floor exercises. The real cause was solver ordering (floor safety clamp running before reach-IK) — already fixed separately in fix: run reach-IK before the floor safety clamp (levitating cobra) #27. So I did not add the report's pin: hips floor / pin: pelvis floor lines (there is no floor pin anchor in the renderer; pins resolve against props/landmarks, and floor grounding is handled by ground-lock + the clamp).
  • ground-lock: foot_left is invalid DSL. ground-lock only accepts the effector groups hands/feet (resolved via mannequin.effectors); a bare foot_left resolves to nothing. So mountain-climber's per-foot suggestion wouldn't work as written, and supporting-foot locks here use the feet group, which the renderer already filters to only plant feet near the floor.
  • Mountain climber is not broken. With ground-lock: hands, feet, the driving foot lifts off the floor (hip/knee flex), so the near-floor planted-foot filter naturally excludes it — it isn't frozen. Left unchanged.
  • Skipped cosmetic-only score nudges (wall-sit arm position, etc.) that don't affect correctness.

Type of Change

  • Bug fix (non-breaking change which fixes an issue)

Checklist

  • Self-reviewed
  • npm run typecheck passes
  • npm run build compiles
  • npm test — 194/194 pass
  • npm run eval — 361/361 checks, 73 movements, 0 parse failures, 0 clamp warnings
  • Spot-checked squat and forward-lunge in the live viewer

Form corrections from a movement-library review, keeping the spine neutral
under load, fully extending 'straight' limbs, and adding missing supporting-
foot ground-locks so single-leg poses don't drift:

- squat/box-squat/chair-pose: replace lumbar rounding (spine: flex) with a
  hip hinge + neutral/slightly-extended spine (real athletic squat form).
- forward-lunge: deepen the trailing knee (flex 45 -> 80) and add a small
  forward travel so it reads as a lunge, not a static split squat.
- bent-over-row: hang the arms from shoulder flex ~65 (arms vertical over a
  70-deg hinge) instead of shoulder extend 55, which threw them backward.
- pull-up: bring shoulders down toward the bar (flex 150 -> 105) during the
  pull instead of holding them locked overhead.
- crunch: reduce neck flex 20 -> 8 (less chin-tuck).
- seated-forward-fold: hinge at the hips (flex 90 -> 115) and cut spine flex
  60 -> 25 so it folds instead of slouching from the mid-back.
- bicycle-crunch/dead-bug: straighten the 'long' leg (knee ~5) and add chest
  counter-rotation so the twist reads.
- glute-bridge: raise hip extension 15 -> 20.
- single-leg-calf-raise/standing-hamstring-curl/standing-quad-stretch: add
  ground-lock: feet so the stance foot stays planted.

All ground-lock/pin changes use the real DSL vocab (groups 'hands'/'feet');
per-foot ground-lock names the reviewer suggested (foot_left) are not valid
ground-lock effectors, so supporting-foot locks use the feet group with the
existing near-floor planted-foot filter. 194 tests + 361/361 eval pass.
@vercel

vercel Bot commented Jul 10, 2026

Copy link
Copy Markdown

The latest updates on your projects. Learn more about Vercel for GitHub.

Project Deployment Actions Updated (UTC)
posecode Ready Ready Preview, Comment Jul 10, 2026 7:33pm

@a-baran-orhan
a-baran-orhan merged commit 889b4d6 into main Jul 10, 2026
3 checks passed
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