diff --git a/docs/superpowers/plans/2026-04-23-sim-air-insert-ring-bar.md b/docs/superpowers/plans/2026-04-23-sim-air-insert-ring-bar.md index f3925e6..184a1ab 100644 --- a/docs/superpowers/plans/2026-04-23-sim-air-insert-ring-bar.md +++ b/docs/superpowers/plans/2026-04-23-sim-air-insert-ring-bar.md @@ -49,6 +49,7 @@ - Modify: `roboimi/utils/constants.py` (later in implementation) - Modify: `roboimi/assets/robots/diana_med.py` (later in implementation) - Modify: `roboimi/envs/double_pos_ctrl_env.py` (later in implementation) +- Create: `roboimi/envs/double_air_insert_env.py` (minimal stub in this task) - [ ] **Step 1: Write failing tests for task config and sampling helpers** @@ -81,6 +82,7 @@ Implement only enough to make the new tests pass: - add new task config entry - add the new placement sampler - add the new robot asset class +- create a minimal importable `double_air_insert_env.py` stub and class/function surface needed for factory dispatch tests - add the factory dispatch branch / headless wiring - update eval reset dispatch for the new task @@ -95,7 +97,7 @@ Expected: - [ ] **Step 7: Commit Task 1** Run: -`git add tests/test_air_insert_env.py tests/test_eval_vla_headless.py tests/test_robot_asset_paths.py roboimi/utils/act_ex_utils.py roboimi/utils/constants.py roboimi/assets/robots/diana_med.py roboimi/envs/double_pos_ctrl_env.py roboimi/demos/vla_scripts/eval_vla.py && git commit -m "feat(env): register sim air insert ring bar task"` +`git add tests/test_air_insert_env.py tests/test_eval_vla_headless.py tests/test_robot_asset_paths.py roboimi/utils/act_ex_utils.py roboimi/utils/constants.py roboimi/assets/robots/diana_med.py roboimi/envs/double_pos_ctrl_env.py roboimi/envs/double_air_insert_env.py roboimi/demos/vla_scripts/eval_vla.py && git commit -m "feat(env): register sim air insert ring bar task"` --- @@ -215,9 +217,9 @@ Add tests covering: Keep the tests unit-level; do not require a full MuJoCo rollout for every assertion. -- [ ] **Step 2: Write a small failing integration/smoke test for stepping the new task path** +- [ ] **Step 2: Write a real failing headless smoke test for the new task path** -If practical with mocks/fakes, add a smoke test that verifies the policy can be used with the new environment interface without shape/dispatch mismatches. +Add a deterministic integration/smoke test that instantiates `make_sim_env('sim_air_insert_ring_bar', headless=True)`, resets with sampled named task state, and steps a few actions or scripted-policy outputs. Use the real task XML and task-specific environment wiring so broken includes, joint names, or dispatch mismatches are caught. - [ ] **Step 3: Run the scripted-policy tests and verify they fail** @@ -255,6 +257,16 @@ Run: Expected: - PASS with 0 failures +- [ ] **Step 6b: Run the mandatory real headless smoke check** + +Run a focused smoke command that instantiates the real task, resets with sampled state, and steps a few actions using the new scripted policy or a deterministic action sequence. + +Example command (adjust module/test helper if needed): +`/home/droid/.conda/envs/roboimi/bin/python -m unittest tests.test_air_insert_env.AirInsertEnvSmokeTest -v` + +Expected: +- PASS, proving the real XML/assets/env wiring instantiate and step correctly in headless mode + - [ ] **Step 7: Commit Task 4** Run: