Context. The physically-real digital body — and the quarantine that keeps a JVM-only dependency from contaminating the multiplatform libraries. com.neuronrobotics:mujoco-java is an Apache-2.0 JNI binding to DeepMind's MuJoCo (Maven Central, ~3.1.x; Windows/Linux/macOS x86_64 + macOS arm64 — no iOS/native). It loads MJCF (the same format MjcfImporter targets) and can simulate muscles with activation dynamics — i.e. the Activation/EMS path, in software, before any electrode.
Objective. A new JVM-only Gradle module :sim-mujoco depending on a pinned mujoco-java + ampere-core. Implement MujocoSimLoad : Load.
Changes
- New module
:sim-mujoco (JVM-only). Pin/vendor mujoco-java.
MujocoSimLoad: load an MJCF for the morphology, consume the Motor-kind emission envelope + MotorFrames, step MuJoCo, emit ProprioceptionSignal (observed) + ContactSignal (both : Event, via AgentEventApi). LoadClass = Mechanical for rigid bodies; a simulated-Embodied variant for muscle MJCFs.
Quarantine — how it's actually enforced (recon §8: there is NO ArchUnit/Konsist today)
ampere-core & Phosphor declare no Gradle dependency on :sim-mujoco or mujoco-java → any MuJoCo symbol in those modules is a compile error. That IS the firewall — module-graph + compile-time, not a linter.
:sim-mujoco is the only module that depends on mujoco-java.
- A hard automated gate (so the build fails by rule, not merely by missing-dependency) is added separately — see the boundary-guard ticket; land it before 0.8.0 for belt-and-suspenders.
Validation
Load an MJCF hand; drive a trajectory; assert the emitted Observation diverges from the commanded Pose under gravity/contact (non-tautological — the divergence the agency loop needs); assert a ContactSignal on collision. Activation bonus: a muscle MJCF — command activation, assert a joint angle emerges (validates actuation-space, no hardware).
Notes / out of scope
May ship as a stub MujocoSimLoad behind the real module boundary first (boundary > physics, early); full physics wants published 0.8.0. No EMS/servo hardware. DoD: if any new Event types are added, follow recon §8 (EventRegistry/@SerialName/CLI handler/concept cell).
Scope ~5 pts · Model: Sonnet, high thinking (JNI + MJCF + physics).
Context. The physically-real digital body — and the quarantine that keeps a JVM-only dependency from contaminating the multiplatform libraries.
com.neuronrobotics:mujoco-javais an Apache-2.0 JNI binding to DeepMind's MuJoCo (Maven Central, ~3.1.x; Windows/Linux/macOS x86_64 + macOS arm64 — no iOS/native). It loads MJCF (the same formatMjcfImportertargets) and can simulate muscles with activation dynamics — i.e. theActivation/EMS path, in software, before any electrode.Objective. A new JVM-only Gradle module
:sim-mujocodepending on a pinnedmujoco-java+ampere-core. ImplementMujocoSimLoad : Load.Changes
:sim-mujoco(JVM-only). Pin/vendormujoco-java.MujocoSimLoad: load an MJCF for the morphology, consume theMotor-kind emission envelope +MotorFrames, step MuJoCo, emitProprioceptionSignal(observed) +ContactSignal(both: Event, viaAgentEventApi).LoadClass = Mechanicalfor rigid bodies; a simulated-Embodiedvariant for muscle MJCFs.Quarantine — how it's actually enforced (recon §8: there is NO ArchUnit/Konsist today)
ampere-core& Phosphor declare no Gradle dependency on:sim-mujocoormujoco-java→ any MuJoCo symbol in those modules is a compile error. That IS the firewall — module-graph + compile-time, not a linter.:sim-mujocois the only module that depends onmujoco-java.Validation
Load an MJCF hand; drive a trajectory; assert the emitted Observation diverges from the commanded Pose under gravity/contact (non-tautological — the divergence the agency loop needs); assert a
ContactSignalon collision. Activation bonus: a muscle MJCF — command activation, assert a joint angle emerges (validates actuation-space, no hardware).Notes / out of scope
May ship as a stub
MujocoSimLoadbehind the real module boundary first (boundary > physics, early); full physics wants published 0.8.0. No EMS/servo hardware. DoD: if any newEventtypes are added, follow recon §8 (EventRegistry/@SerialName/CLI handler/concept cell).Scope ~5 pts · Model: Sonnet, high thinking (JNI + MJCF + physics).