feat(solver): KCSolve solver addon with assembly integration (#289) #304

Closed
forbes wants to merge 1 commits from feat/solver-assembly-integration into main
Owner

Summary

Adds the Kindred constraint solver as a pluggable Assembly workbench backend, covering phases 3d–5 of the solver roadmap.

SolveContext packing (phase 3d)

  • Pack/unpack SolveContext into .kc archive on document save

Solver addon (mods/solver)

  • Phase 1: Expression DAG, Newton-Raphson + BFGS, 3 basic constraints
  • Phase 2: Full constraint vocabulary — all 24 BaseJointKind types
  • Phase 3: Graph decomposition for cluster-by-cluster solving
  • Phase 4: Per-entity DOF diagnostics, overconstrained detection, half-space preference tracking, minimum-movement weighting
  • Phase 5: _build_system() extraction, diagnose(), drag protocol, joint limits warning

Assembly workbench integration

  • Preference-driven solver selection (reads Mod/Assembly/Solver param)
  • Solver backend combo box in Assembly preferences UI
  • resetSolver() on AssemblyObject for live preference switching (out-of-line definition — IKCSolver is forward-declared in the header)
  • Integration tests (TestKindredSolverIntegration.py)
  • In-client console test script (console_test_phase5.py)

Not in scope

  • Switching the default from ondsel to kindred (deferred to real-world validation)
  • Joint limit enforcement (inequality constraints need solver extension)
  • Kinematic simulation support
  • Per-entity DOF display in the UI panel
## Summary Adds the Kindred constraint solver as a pluggable Assembly workbench backend, covering phases 3d–5 of the solver roadmap. ### SolveContext packing (phase 3d) - Pack/unpack SolveContext into .kc archive on document save ### Solver addon (`mods/solver`) - **Phase 1:** Expression DAG, Newton-Raphson + BFGS, 3 basic constraints - **Phase 2:** Full constraint vocabulary — all 24 BaseJointKind types - **Phase 3:** Graph decomposition for cluster-by-cluster solving - **Phase 4:** Per-entity DOF diagnostics, overconstrained detection, half-space preference tracking, minimum-movement weighting - **Phase 5:** `_build_system()` extraction, `diagnose()`, drag protocol, joint limits warning ### Assembly workbench integration - Preference-driven solver selection (reads `Mod/Assembly/Solver` param) - Solver backend combo box in Assembly preferences UI - `resetSolver()` on AssemblyObject for live preference switching (out-of-line definition — `IKCSolver` is forward-declared in the header) - Integration tests (`TestKindredSolverIntegration.py`) - In-client console test script (`console_test_phase5.py`) ### Related - Solver repo PR: https://git.kindred-systems.com/kindred/solver/pulls/34 ### Not in scope - Switching the default from ondsel to kindred (deferred to real-world validation) - Joint limit enforcement (inequality constraints need solver extension) - Kinematic simulation support - Per-entity DOF display in the UI panel
forbes added 1 commit 2026-02-21 13:06:37 +00:00
feat(solver): KCSolve solver addon with assembly integration (#289)
Some checks failed
Build and Test / build (pull_request) Has been cancelled
9b04a48a86
Adds the Kindred constraint solver as a pluggable Assembly workbench
backend, covering phases 3d through 5 of the solver roadmap.

Phase 3d: SolveContext packing
- Pack/unpack SolveContext into .kc archive on document save

Solver addon (mods/solver):
- Phase 1: Expression DAG, Newton-Raphson + BFGS, 3 basic constraints
- Phase 2: Full constraint vocabulary — all 24 BaseJointKind types
- Phase 3: Graph decomposition for cluster-by-cluster solving
- Phase 4: Per-entity DOF diagnostics, overconstrained detection,
  half-space preference tracking, minimum-movement weighting
- Phase 5: _build_system extraction, diagnose(), drag protocol,
  joint limits warning

Assembly workbench integration:
- Preference-driven solver selection (reads Mod/Assembly/Solver param)
- Solver backend combo box in Assembly preferences UI
- resetSolver() on AssemblyObject for live preference switching
- Integration tests (TestKindredSolverIntegration.py)
- In-client console test script (console_test_phase5.py)
forbes closed this pull request 2026-02-21 13:09:21 +00:00
Some checks failed
Build and Test / build (pull_request) Has been cancelled

Pull request closed

Sign in to join this conversation.
No Reviewers
1 Participants
Notifications
Due Date
No due date set.
Dependencies

No dependencies set.

Reference: kindred/create#304