simrig 0.3.0__tar.gz → 0.5.0__tar.gz

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (128) hide show
  1. simrig-0.5.0/AGENTS.md +44 -0
  2. simrig-0.5.0/CHANGELOG.md +201 -0
  3. simrig-0.5.0/MANIFEST.in +5 -0
  4. simrig-0.5.0/PKG-INFO +522 -0
  5. simrig-0.5.0/README.md +490 -0
  6. simrig-0.5.0/docs/agent_workflow.md +236 -0
  7. simrig-0.5.0/docs/remote-gpu.md +213 -0
  8. simrig-0.5.0/docs/skill-installation.md +103 -0
  9. simrig-0.5.0/examples/README.md +83 -0
  10. simrig-0.5.0/examples/demo_reach.py +237 -0
  11. simrig-0.5.0/examples/learned_reach/README.md +132 -0
  12. simrig-0.5.0/examples/learned_reach/controllers/ik.py +40 -0
  13. simrig-0.5.0/examples/learned_reach/controllers/near_miss.py +47 -0
  14. simrig-0.5.0/examples/learned_reach/controllers/random.py +7 -0
  15. simrig-0.5.0/examples/learned_reach/controllers/zero.py +7 -0
  16. simrig-0.5.0/examples/learned_reach/evaluator.py +76 -0
  17. simrig-0.5.0/examples/learned_reach/preview.py +38 -0
  18. simrig-0.5.0/examples/learned_reach/results.json +164 -0
  19. simrig-0.5.0/examples/learned_reach/results.md +47 -0
  20. simrig-0.5.0/examples/learned_reach/task.json +246 -0
  21. simrig-0.5.0/examples/learned_reach/verify.py +77 -0
  22. simrig-0.5.0/examples/models/simple_arm.xml +38 -0
  23. simrig-0.5.0/examples/mujoco_reach/README.md +92 -0
  24. simrig-0.5.0/examples/mujoco_reach/controllers/ik.py +31 -0
  25. simrig-0.5.0/examples/mujoco_reach/controllers/zero.py +11 -0
  26. simrig-0.5.0/examples/mujoco_reach/evaluator.py +144 -0
  27. simrig-0.5.0/examples/mujoco_reach/task.json +67 -0
  28. simrig-0.5.0/examples/vision_cartpole.py +153 -0
  29. {simrig-0.3.0 → simrig-0.5.0}/pyproject.toml +2 -2
  30. {simrig-0.3.0 → simrig-0.5.0}/simrig/__init__.py +58 -0
  31. {simrig-0.3.0 → simrig-0.5.0}/simrig/_version.py +1 -1
  32. {simrig-0.3.0 → simrig-0.5.0}/simrig/browser_render.py +19 -0
  33. simrig-0.5.0/simrig/browser_shell.py +333 -0
  34. simrig-0.5.0/simrig/cli.py +1076 -0
  35. {simrig-0.3.0 → simrig-0.5.0}/simrig/core.py +2 -1
  36. simrig-0.5.0/simrig/custom_env.py +252 -0
  37. simrig-0.5.0/simrig/evaluation_suite.py +352 -0
  38. simrig-0.5.0/simrig/evaluator.py +248 -0
  39. simrig-0.5.0/simrig/failures.py +107 -0
  40. simrig-0.5.0/simrig/gates.py +361 -0
  41. {simrig-0.3.0 → simrig-0.5.0}/simrig/huggingface.py +7 -5
  42. {simrig-0.3.0 → simrig-0.5.0}/simrig/io.py +6 -1
  43. {simrig-0.3.0 → simrig-0.5.0}/simrig/live_view.py +12 -0
  44. {simrig-0.3.0 → simrig-0.5.0}/simrig/model_view.py +135 -5
  45. simrig-0.5.0/simrig/networks.py +80 -0
  46. simrig-0.5.0/simrig/playground_backend.py +1360 -0
  47. simrig-0.5.0/simrig/playground_evaluator.py +96 -0
  48. simrig-0.5.0/simrig/predicates.py +386 -0
  49. simrig-0.5.0/simrig/presets.py +200 -0
  50. {simrig-0.3.0 → simrig-0.5.0}/simrig/preview.py +572 -99
  51. simrig-0.5.0/simrig/progress.py +218 -0
  52. simrig-0.5.0/simrig/ranking.py +131 -0
  53. simrig-0.3.0/simrig/lambda_cloud.py → simrig-0.5.0/simrig/remote.py +86 -34
  54. {simrig-0.3.0 → simrig-0.5.0}/simrig/rendering.py +11 -0
  55. simrig-0.5.0/simrig/rollout.py +212 -0
  56. simrig-0.5.0/simrig/run_manifest.py +162 -0
  57. simrig-0.5.0/simrig/runtime.py +372 -0
  58. {simrig-0.3.0 → simrig-0.5.0}/simrig/scaffold.py +8 -0
  59. simrig-0.5.0/simrig/success.py +142 -0
  60. simrig-0.5.0/simrig/task_contract.py +668 -0
  61. {simrig-0.3.0 → simrig-0.5.0}/simrig/three_scene.py +25 -0
  62. simrig-0.5.0/simrig/validate_env.py +499 -0
  63. simrig-0.5.0/simrig.egg-info/PKG-INFO +522 -0
  64. simrig-0.5.0/simrig.egg-info/SOURCES.txt +109 -0
  65. {simrig-0.3.0 → simrig-0.5.0}/simrig.egg-info/requires.txt +1 -1
  66. simrig-0.5.0/skills/simrig/SKILL.md +418 -0
  67. simrig-0.5.0/skills/simrig/agents/openai.yaml +4 -0
  68. simrig-0.5.0/skills/simrig/references/custom-environments.md +179 -0
  69. simrig-0.5.0/skills/simrig/references/evaluation-and-operations.md +368 -0
  70. simrig-0.5.0/skills/simrig/references/remote-gpu.md +75 -0
  71. simrig-0.5.0/skills/simrig/references/task-design.md +217 -0
  72. simrig-0.5.0/tests/fixtures/analytic_reach/README.md +21 -0
  73. simrig-0.5.0/tests/fixtures/analytic_reach/controllers/reward_trap.json +3 -0
  74. simrig-0.5.0/tests/fixtures/analytic_reach/controllers/valid.json +3 -0
  75. simrig-0.5.0/tests/fixtures/analytic_reach/planar_reach_evaluator.py +104 -0
  76. simrig-0.5.0/tests/fixtures/analytic_reach/planar_reach_task.json +132 -0
  77. simrig-0.5.0/tests/test_cli.py +508 -0
  78. {simrig-0.3.0 → simrig-0.5.0}/tests/test_custom_env.py +93 -1
  79. simrig-0.5.0/tests/test_demo_reach.py +59 -0
  80. simrig-0.5.0/tests/test_evaluation_suite.py +197 -0
  81. simrig-0.5.0/tests/test_evaluator.py +149 -0
  82. simrig-0.5.0/tests/test_gates.py +152 -0
  83. simrig-0.5.0/tests/test_huggingface.py +73 -0
  84. simrig-0.5.0/tests/test_learned_reach.py +83 -0
  85. {simrig-0.3.0 → simrig-0.5.0}/tests/test_live_view.py +2 -0
  86. {simrig-0.3.0 → simrig-0.5.0}/tests/test_model_view.py +58 -0
  87. simrig-0.5.0/tests/test_networks.py +71 -0
  88. simrig-0.5.0/tests/test_playground_backend.py +502 -0
  89. simrig-0.5.0/tests/test_predicates.py +157 -0
  90. simrig-0.5.0/tests/test_presets.py +95 -0
  91. simrig-0.5.0/tests/test_preview.py +124 -0
  92. simrig-0.5.0/tests/test_progress.py +107 -0
  93. simrig-0.3.0/tests/test_lambda_cloud.py → simrig-0.5.0/tests/test_remote.py +110 -54
  94. {simrig-0.3.0 → simrig-0.5.0}/tests/test_rendering.py +35 -1
  95. simrig-0.5.0/tests/test_rollout.py +102 -0
  96. simrig-0.5.0/tests/test_run_manifest.py +63 -0
  97. {simrig-0.3.0 → simrig-0.5.0}/tests/test_runtime.py +58 -1
  98. simrig-0.5.0/tests/test_scaffold.py +167 -0
  99. simrig-0.5.0/tests/test_skill_guidance.py +53 -0
  100. simrig-0.5.0/tests/test_task_contract.py +166 -0
  101. simrig-0.3.0/PKG-INFO +0 -268
  102. simrig-0.3.0/README.md +0 -236
  103. simrig-0.3.0/simrig/browser_shell.py +0 -130
  104. simrig-0.3.0/simrig/cli.py +0 -643
  105. simrig-0.3.0/simrig/custom_env.py +0 -109
  106. simrig-0.3.0/simrig/playground_backend.py +0 -623
  107. simrig-0.3.0/simrig/presets.py +0 -93
  108. simrig-0.3.0/simrig/runtime.py +0 -134
  109. simrig-0.3.0/simrig/validate_env.py +0 -211
  110. simrig-0.3.0/simrig.egg-info/PKG-INFO +0 -268
  111. simrig-0.3.0/simrig.egg-info/SOURCES.txt +0 -47
  112. simrig-0.3.0/tests/test_cli.py +0 -279
  113. simrig-0.3.0/tests/test_demo_reach.py +0 -34
  114. simrig-0.3.0/tests/test_huggingface.py +0 -36
  115. simrig-0.3.0/tests/test_playground_backend.py +0 -65
  116. simrig-0.3.0/tests/test_presets.py +0 -34
  117. simrig-0.3.0/tests/test_scaffold.py +0 -67
  118. {simrig-0.3.0 → simrig-0.5.0}/LICENSE +0 -0
  119. {simrig-0.3.0 → simrig-0.5.0}/setup.cfg +0 -0
  120. {simrig-0.3.0 → simrig-0.5.0}/simrig/mujoco_backend.py +0 -0
  121. {simrig-0.3.0 → simrig-0.5.0}/simrig/paths.py +0 -0
  122. {simrig-0.3.0 → simrig-0.5.0}/simrig.egg-info/dependency_links.txt +0 -0
  123. {simrig-0.3.0 → simrig-0.5.0}/simrig.egg-info/entry_points.txt +0 -0
  124. {simrig-0.3.0 → simrig-0.5.0}/simrig.egg-info/top_level.txt +0 -0
  125. {simrig-0.3.0 → simrig-0.5.0}/tests/test_core.py +0 -0
  126. {simrig-0.3.0 → simrig-0.5.0}/tests/test_jax_compat.py +0 -0
  127. {simrig-0.3.0 → simrig-0.5.0}/tests/test_mujoco_integration.py +0 -0
  128. {simrig-0.3.0 → simrig-0.5.0}/tests/test_paths.py +0 -0
simrig-0.5.0/AGENTS.md ADDED
@@ -0,0 +1,44 @@
1
+ # SimRig Agent Guidelines
2
+
3
+ SimRig helps users move from robot models or known simulation tasks toward a
4
+ safe training/evaluation workflow. Prefer existing MuJoCo Playground envs when
5
+ one fits. Custom `*.py` env modules can be smoked/trained after they implement
6
+ reset/step correctly.
7
+
8
+ ## Workflow
9
+
10
+ 1. Inspect first.
11
+ - For raw MJCF/XML or Menagerie models, run model inspection before proposing
12
+ training.
13
+ - Compilation and short stepping are useful checks, but they do not prove a
14
+ model is trainable.
15
+ 2. Prefer existing trainable environments.
16
+ - If a MuJoCo Playground environment exists for the user's robot/task, use
17
+ `simrig inspect-env`, then `simrig smoke`, then `simrig train`.
18
+ - For an attached or downloaded Brax policy, use `simrig eval` for headless
19
+ checks and `simrig demo` for a desktop MuJoCo viewer.
20
+ - Use `simrig preview` when the agent or user needs a browser-visible
21
+ localhost preview with orbit/zoom camera controls.
22
+ - Use `simrig view-model` to inspect raw Menagerie/XML robots with joint sliders.
23
+ - Use `simrig demo` only when a human wants the native desktop MuJoCo viewer.
24
+ 3. Custom envs (module path ending in `.py`).
25
+ - Scaffold with `simrig new-env` only after the user chooses a task.
26
+ - Run `simrig validate-env PATH` (structure) then `simrig validate-env PATH --runtime`.
27
+ - Only propose `simrig smoke PATH` / `simrig train PATH` after runtime validation
28
+ passes (or the user explicitly wants to debug failures).
29
+ - Do not invent rewards/observations from model names alone.
30
+ - Prefer obs dict keys `state` and `privileged_state` for SimRig PPO defaults.
31
+ 4. Keep generated code editable and ordinary.
32
+ - Do not hide reward logic or environment assumptions in opaque configs.
33
+ 5. Be backend-aware.
34
+ - SimRig v0 supports MuJoCo and MuJoCo Playground.
35
+ - Isaac Lab is a future backend and should not be assumed available.
36
+
37
+ ## Safety Rules
38
+
39
+ - Do not claim a raw Menagerie model is trainable because it compiles.
40
+ - Do not infer rewards, observations, or termination from model names alone.
41
+ - Do not invent a complete reward function just to make `new-env` look done.
42
+ - Run smoke tests before long training runs.
43
+ - Use `smoke` preset before `local` or `large`.
44
+ - `--preset large` is PPO scale. `simrig remote` is SSH to another Linux GPU.
@@ -0,0 +1,201 @@
1
+ # Changelog
2
+
3
+ ## Unreleased
4
+
5
+ ## 0.5.0 - 2026-08-31
6
+
7
+ ### Compatibility and scope
8
+
9
+ - Evaluation-suite reports now use schema v2. Do not rank them with older
10
+ reports; rerun evaluation with complete metric/event/contact evidence.
11
+ - Learned rollouts verify recorded environment source and model identities.
12
+ Checkpoints trained against the old reaching environment must not silently
13
+ run against its corrected source. Reproduce their original environment or
14
+ train a new policy on the corrected environment.
15
+ - Shared policy playback currently supports `action_repeat=1`; other control
16
+ rates fail explicitly. GPU vision and native desktop playback were not
17
+ validated by the new CPU reaching reference.
18
+ - The learned reaching reference demonstrates training, independent evaluation,
19
+ and preview, but both learned and random controls pass its 24 arrival cases.
20
+ Its verifier therefore fails the baseline-discrimination expectation. This
21
+ release does not claim a demanding manipulation skill or hardware readiness.
22
+ - Task/reward design remains agent-owned. Reward probes analyze existing
23
+ reports; they do not automatically search for new exploits.
24
+
25
+ ### Changes
26
+
27
+ - Replace the README's Go1 workflow GIF with a recorded dual-Panda A→B→A
28
+ mixed-controller exchange. The GIF labels the expert replay, learned catch,
29
+ and scripted restow; detailed compatibility and evaluation limits remain in
30
+ the release notes and source demo documentation.
31
+ - Show green success, red failure, or neutral unknown outcomes in policy previews
32
+ using environment success metrics. Keep episode completion separate from task
33
+ success, and replace survival wording with neutral step counts.
34
+ - Share policy loading and checked rollout execution across headless eval,
35
+ browser preview, native demo, and a reusable Playground evaluator adapter.
36
+ Restore final parameter files and Orbax checkpoints with recorded network
37
+ normalization and environment identity checks.
38
+ - Add task-owned reset/measurement hooks, reusable evaluator instances, unique
39
+ trial reports, report schema v2, missing-evidence outcomes, strict seed coverage,
40
+ and invalid numerical state/action checks. Empty contact streams require
41
+ declared measurement coverage; mixed identities and unknown samples cannot
42
+ silently pass promotion.
43
+ - Add a real learned-reaching acceptance reference with IK, zero, random, and
44
+ near-miss controls, a separately reserved holdout suite, and scenario-matched
45
+ previews. Fix stale post-integration site positions in the reaching environment
46
+ discovered by the independent evaluator; keep its reward formula and threshold.
47
+ - Add `preview --seed` and `eval --output`; preserve unique reports by default.
48
+
49
+ - Add versioned task contracts with `simrig task init`, `validate`, `freeze`,
50
+ and semantic `diff`. Frozen contracts use canonical content hashes and can
51
+ enforce resolved timestep, wall-time, GPU-hour, and metric abort budgets.
52
+ - Add task-agnostic `simrig gate` promotion suites over independent JSON
53
+ evaluation reports, including required seed/scenario coverage and grouped
54
+ metric requirements.
55
+ - Add `simrig reward-audit` to flag obvious disagreement between reward and
56
+ independently recorded task success.
57
+ - Write v2 `run_manifest.json` lifecycle records with contract identity,
58
+ checkpoint lineage, bounded local source/XML/asset closure hashes, richer Git
59
+ state, actual progress, GPU-hours, optional cost, and failure status.
60
+ - Replace the old cloud SSH path with `simrig remote`. The host is any
61
+ already-running Linux GPU over SSH. SimRig still does not provision or stop
62
+ machines.
63
+ - Rename the large PPO preset from `cloud` to `large`. `--preset large` is
64
+ scale, not a remote launcher. `--preset cloud` remains a hidden alias, and
65
+ old run `config.json` files that recorded `"preset": "cloud"` still load.
66
+ - Write `metrics.jsonl` and `progress.json` during PPO, and add `simrig status`
67
+ plus richer `simrig remote status` (step count, eval reward, ETA).
68
+ - Add `simrig train --resume` / `simrig remote train --resume` to restore Brax
69
+ Orbax checkpoints.
70
+ - Report `task_success` from `state.metrics["success"]` or `SUCCESS_SPEC`
71
+ instead of always leaving it unknown.
72
+ - Add a backend-neutral evaluator plugin protocol and `simrig eval-suite` for
73
+ frozen scenario-by-seed matrices, with evaluator/source hashes in reports and
74
+ run manifests.
75
+ - Add generic event, sustained-signal, metric, sequence, and contact predicates
76
+ with a stable machine-readable terminal failure taxonomy.
77
+ - Add per-condition promotion reports, coverage-failing bounded checkpoint
78
+ evaluation, report-based reward probes, and reward-independent checkpoint
79
+ ranking.
80
+ - Add explicit task-contract schema migration and purpose-specific exact,
81
+ training-resume, checkpoint-evaluation, and result-comparison policies.
82
+ - Add a native MuJoCo controller-evaluation example with explicit task semantics,
83
+ actual actuator stepping, an IK controller, and a zero-action baseline. Keep
84
+ the synthetic reward-trap case under test fixtures, not public checkpoints.
85
+ - Forward additional Brax PPO settings, including adaptive-KL scheduling and
86
+ advantage/value-loss controls, from environment training configuration.
87
+ - Include examples, test fixtures, and skill documentation in source archives
88
+ so their tests and documented examples can run outside a Git checkout.
89
+ - Strengthen the SimRig agent skill with a mandatory, user-confirmed Physical
90
+ Success Definition gate before reward, termination, environment authoring, or
91
+ training for new task semantics, including feasibility checks, counterexamples,
92
+ controls, and independent promotion evidence.
93
+
94
+ ## 0.4.0 - 2026-08-17
95
+
96
+ - Require Python 3.11+, test the supported boundary in CI, and make static
97
+ vision validation parse literal metadata without importing JAX or Playground.
98
+ - Publish a five-seed-tested, 1,000-step vision CartPole reference checkpoint
99
+ and download its sibling `config.json` with `hf://` policies so vision CNNs
100
+ reconstruct from Hub artifacts without manual metadata setup.
101
+ - Make policy previews task-aware: hide unsupported command controls, accept
102
+ environment-defined command fields, expose episode state and survival, add
103
+ optional automatic reset, and label physics, policy-observation, sensor, and
104
+ browser display rates separately.
105
+ - Keep Three.js previews headless-safe by lazily starting the optional native
106
+ Sensor renderer and selecting EGL before MuJoCo import on display-less Linux.
107
+ - Pin the tested Warp 1.13 runtime and bridge MuJoCo 3.10's stale internal
108
+ `GraphMode` import so CUDA vision environments can construct and step. The
109
+ vision reference also normalizes Warp's unbatched singleton renderer axis so
110
+ checkpoint evaluation receives logical HWC pixels.
111
+ - Show live, selectable named cameras inside Three.js model and policy previews:
112
+ an authored-pose/FOV Three.js emulation by default, plus a native MuJoCo
113
+ sensor comparison, while preserving the independent human orbit camera.
114
+ - Add declarative custom-env vision CNN selection across train/eval/demo/preview,
115
+ rendered-frame validation with CUDA/Warp capability reporting, and a complete
116
+ MJX-rendered cartpole vision PPO reference.
117
+ - Resolve registered MuJoCo Playground training from each task's tuned Brax PPO
118
+ and network configuration while preserving SimRig's bounded smoke/local gates.
119
+ - Add `--impl auto|jax|warp`, GPU-aware Warp fallback, reproducible `--seed`,
120
+ and opt-out domain randomization for local and remote training.
121
+ - Record the resolved implementation, network, randomizer, source hashes, Git
122
+ state, JAX devices, precision environment, and exact CLI overrides in every run.
123
+ - Reconstruct recorded implementations and network layouts for eval, demo, and
124
+ browser preview, while preserving legacy checkpoint compatibility.
125
+ - Add a full pinned Playground CI job that validates, smokes, trains, and reloads
126
+ the custom reaching example.
127
+
128
+ ## 0.3.0 - 2026-08-01
129
+
130
+ - Add an SSH GPU workflow with connection and GPU checks, project sync/setup,
131
+ remote smoke and PPO training, detached-run status, and run-artifact download.
132
+ - Add a remote GPU operations guide covering SSH keys, persistent storage,
133
+ smoke-before-scale gates, port forwarding, and stopping billable VMs.
134
+ - Pin the Playground training stack and require Python 3.11+ during remote
135
+ preparation instead of silently resolving an older environment on Python
136
+ 3.10.
137
+ - Record Python and package versions in every training run and refuse eval,
138
+ demo, or preview under a different runtime unless the user explicitly allows
139
+ a qualitative mismatch.
140
+ - Validate SSH identity files, restrict authentication to the selected key,
141
+ fail closed when port forwarding cannot be established, and support older
142
+ macOS `rsync` clients.
143
+ - Require the final policy, metrics, and checkpoint artifacts before reporting
144
+ a detached remote run as completed; fetched runs now include a shutdown-cost
145
+ reminder.
146
+ - Evaluation results distinguish rollout completion from task success and state
147
+ clearly when no task-specific success evaluator is configured.
148
+
149
+ ## 0.2.2 - 2026-07-31
150
+
151
+ - `LiveWebViewer` lets ordinary MuJoCo Python scripts publish their existing
152
+ `MjModel`/`MjData` state to the interactive Three.js viewer without handing
153
+ control or simulation stepping to SimRig.
154
+ - Live script viewers can track a named body and draw its browser-side path.
155
+ - Package metadata links PyPI users back to the repository, issues, and
156
+ changelog.
157
+ - CI installs its NumPy test dependency, validates built distributions, and
158
+ uses Node.js 24-compatible GitHub Actions.
159
+ - Tagged releases publish through PyPI Trusted Publishing and create a GitHub
160
+ Release with the wheel and source distribution attached.
161
+
162
+ ## 0.2.1 - 2026-07-31
163
+
164
+ - `simrig preview` now uses the Three.js/WebGL renderer by default, with a
165
+ server-side rollout clock, live geom-transform updates, and a tracking camera
166
+ that follows the evaluated robot without coupling orbit controls to frame
167
+ rendering.
168
+ - `simrig preview --render-mode mujoco` retains the streamed MuJoCo policy
169
+ preview for fully local/offline rendering.
170
+
171
+ ## 0.2.0 - 2026-07-31
172
+
173
+ - `simrig view-model` now defaults to a GPU-accelerated Three.js/WebGL viewer
174
+ with smooth orbit, zoom, pan, physically based materials, lighting, shadows,
175
+ and responsive browser rendering.
176
+ - The browser model viewer serves compiled MuJoCo mesh and primitive geometry,
177
+ filters collision-only geometry from the default visual scene, and updates
178
+ geom transforms when joint controls change.
179
+ - Model viewing starts from the first authored MJCF keyframe when one exists;
180
+ **Reset Joints** restores that pose.
181
+ - `simrig view-model --render-mode mujoco` retains the streamed MuJoCo renderer,
182
+ and `--render-mode topdown` retains the schematic fallback.
183
+ - `simrig eval` accepts reproducible `--seed` rollouts and fixed
184
+ `--command` values for command-conditioned environments.
185
+ - `simrig --version` reports the package version from one shared source.
186
+ - The reaching example samples reachable planar targets and keeps its rendered
187
+ target marker synchronized with environment state.
188
+ - Codex discovers the repository skill through `.agents/skills/simrig`.
189
+ - Custom `*.py` env modules can be used with `inspect-env`, `smoke`, `train`, `eval`, `demo`, and `preview`.
190
+ - `validate-env --runtime` imports the module and runs construct/reset/step checks when possible.
191
+ - `new-env` scaffold includes `make_env()` and documents the smoke/train path.
192
+ - JAX 0.10 + Brax 0.14 compat shim for `device_put_replicated` so `simrig train` works.
193
+ - Example custom-env test drive: `examples/demo_reach.py` + `examples/models/simple_arm.xml`.
194
+
195
+ ## 0.1.0
196
+
197
+ - Agent- and human-friendly CLI for MuJoCo Playground inspect, smoke, train, eval, and browser preview.
198
+ - Model inspection for MuJoCo / Menagerie assets with honest trainability status.
199
+ - Basic custom-env foothold: `simrig new-env` scaffold and `simrig validate-env` static checklist.
200
+ - Hugging Face `hf://` policy loading for eval/demo/preview.
201
+ - Open-source packaging: LICENSE, CONTRIBUTING, CI, and 10-minute quickstart docs.
@@ -0,0 +1,5 @@
1
+ include AGENTS.md CHANGELOG.md
2
+ recursive-include docs *.md
3
+ recursive-include examples *.md *.py *.json *.xml
4
+ recursive-include skills *.md *.yaml
5
+ recursive-include tests *.py *.json *.md