{
 "schema": "simcompare.ablation.grid.v1",
 "study": "A2 insertion: can a setting move the engine gap?",
 "declared": "2026-10-18, before any A2 outcome was observed",
 "base_plan": "results/review-insertion-01/plans/insert-eval.json",
 "checkpoints": {
  "seed0": "results/review-resumed-01/runs/insert-force0-seed0",
  "seed4": "results/review-resumed-01/runs/insert-force0-seed4",
  "seed2": "results/review-resumed-01/runs/insert-force0-seed2"
 },
 "checkpoint_sha256": {
  "seed0": "74569e22b6c7",
  "seed4": "9540ebdca9d3",
  "seed2": "3e9c65df58e6"
 },
 "reference": true,
 "index_sets": {
  "new50": [
   8,
   9,
   10,
   11,
   12,
   13,
   14,
   15,
   16,
   17,
   18,
   19,
   20,
   21,
   22,
   23,
   24,
   25,
   26,
   27,
   28,
   29,
   30,
   31,
   32,
   33,
   34,
   35,
   36,
   37,
   38,
   39,
   40,
   41,
   42,
   43,
   44,
   45,
   46,
   47,
   48,
   49,
   50,
   51,
   52,
   53,
   54,
   55,
   56,
   57
  ],
  "screen25": [
   8,
   9,
   10,
   11,
   12,
   13,
   14,
   15,
   16,
   17,
   18,
   19,
   20,
   33,
   34,
   35,
   36,
   37,
   38,
   39,
   40,
   41,
   42,
   43,
   44
  ]
 },
 "index_note": "Test indices 8-32 are the 25 new starts at 0.10 mm radial clearance, 33-57 at 0.25 mm. screen25 = first 13 + first 12, fixed before results.",
 "shard_scenes": {
  "mujoco_cpu": 10,
  "physx_gpu": 5,
  "physx": 5
 },
 "nominal_physics": {
  "common": "1 ms physics = control step, friction 0.2 on every collider, raw stops 40 N / 4 Nm",
  "mujoco": "Euler, Newton solver 100 iterations, tolerance 1e-10, elliptic cone, impratio 1, noslip 0, solref (0.01, 1), solimp (0.99, 0.999, 0.001, 0.5, 2); read from the frozen scene MJCF",
  "physx": "TGS, articulation 100 position / 1 velocity iterations, contact offset 10 um, rest offset 0, max depenetration velocity unauthored (read back), GPU dynamics"
 },
 "analysis": "Exploratory screen. Paired per (start, controller) against compare_to on shared starts; exact McNemar on discordant pairs; nominal-repeat discordance is the noise floor. Confirmation of the top 2-3 settings at 50 starts is a separate declared run.",
 "conditions": [
  {
   "id": "mujoco-nominal",
   "backend": "mujoco_cpu",
   "physics": {},
   "indices": "new50",
   "compare_to": null,
   "rationale": "audit configuration; must reproduce review-evaluation-02 exactly"
  },
  {
   "id": "physx-nominal",
   "backend": "physx_gpu",
   "physics": {},
   "indices": "new50",
   "compare_to": null,
   "rationale": "audit configuration; reproduction check against review-evaluation-02"
  },
  {
   "id": "mujoco-nominal-repeat",
   "backend": "mujoco_cpu",
   "physics": {},
   "indices": "new50",
   "compare_to": "mujoco-nominal",
   "rationale": "noise floor: fresh processes, unchanged"
  },
  {
   "id": "physx-nominal-repeat",
   "backend": "physx_gpu",
   "physics": {},
   "indices": "new50",
   "compare_to": "physx-nominal",
   "rationale": "noise floor: fresh processes, unchanged"
  },
  {
   "id": "mujoco-step-0.5ms",
   "backend": "mujoco_cpu",
   "physics": {
    "substeps": 2
   },
   "indices": "new50",
   "compare_to": "mujoco-nominal",
   "rationale": "physics step; controller held at 1 kHz"
  },
  {
   "id": "mujoco-step-0.25ms",
   "backend": "mujoco_cpu",
   "physics": {
    "substeps": 4
   },
   "indices": "new50",
   "compare_to": "mujoco-nominal",
   "rationale": "physics step; controller held at 1 kHz"
  },
  {
   "id": "mujoco-friction-0.1",
   "backend": "mujoco_cpu",
   "physics": {
    "friction": 0.1
   },
   "indices": "new50",
   "compare_to": "mujoco-nominal",
   "rationale": "sliding friction"
  },
  {
   "id": "mujoco-friction-0.5",
   "backend": "mujoco_cpu",
   "physics": {
    "friction": 0.5
   },
   "indices": "new50",
   "compare_to": "mujoco-nominal",
   "rationale": "sliding friction"
  },
  {
   "id": "mujoco-timeconst-2ms",
   "backend": "mujoco_cpu",
   "physics": {
    "timeconst_s": 0.002
   },
   "indices": "new50",
   "compare_to": "mujoco-nominal",
   "rationale": "stiffer contact (refsafe minimum at 1 ms); HA2"
  },
  {
   "id": "mujoco-timeconst-5ms",
   "backend": "mujoco_cpu",
   "physics": {
    "timeconst_s": 0.005
   },
   "indices": "new50",
   "compare_to": "mujoco-nominal",
   "rationale": "stiffer contact; HA2"
  },
  {
   "id": "mujoco-timeconst-20ms",
   "backend": "mujoco_cpu",
   "physics": {
    "timeconst_s": 0.02
   },
   "indices": "new50",
   "compare_to": "mujoco-nominal",
   "rationale": "softer contact (MuJoCo default timeconst)"
  },
  {
   "id": "mujoco-timeconst-0.5ms-step-0.25ms",
   "backend": "mujoco_cpu",
   "physics": {
    "substeps": 4,
    "timeconst_s": 0.0005
   },
   "indices": "new50",
   "compare_to": "mujoco-nominal",
   "rationale": "stiffest reachable contact: refsafe minimum at a 0.25 ms step; HA2"
  },
  {
   "id": "mujoco-solimp-default",
   "backend": "mujoco_cpu",
   "physics": {
    "solimp": [
     0.9,
     0.95,
     0.001,
     0.5,
     2
    ]
   },
   "indices": "new50",
   "compare_to": "mujoco-nominal",
   "rationale": "MuJoCo default impedance (softer than the scene)"
  },
  {
   "id": "mujoco-solimp-harder",
   "backend": "mujoco_cpu",
   "physics": {
    "solimp": [
     0.999,
     0.9999,
     0.0005,
     0.5,
     2
    ]
   },
   "indices": "new50",
   "compare_to": "mujoco-nominal",
   "rationale": "harder impedance, narrower width"
  },
  {
   "id": "mujoco-cone-pyramidal",
   "backend": "mujoco_cpu",
   "physics": {
    "cone": "pyramidal"
   },
   "indices": "new50",
   "compare_to": "mujoco-nominal",
   "rationale": "friction cone; the scene nominal is elliptic (MuJoCo default is pyramidal)"
  },
  {
   "id": "mujoco-impratio-10",
   "backend": "mujoco_cpu",
   "physics": {
    "impratio": 10
   },
   "indices": "new50",
   "compare_to": "mujoco-nominal",
   "rationale": "elliptic cone with impratio 10 (stiffer friction)"
  },
  {
   "id": "mujoco-noslip-10",
   "backend": "mujoco_cpu",
   "physics": {
    "noslip_iterations": 10
   },
   "indices": "new50",
   "compare_to": "mujoco-nominal",
   "rationale": "noslip post-solve"
  },
  {
   "id": "physx-step-0.5ms",
   "backend": "physx_gpu",
   "physics": {
    "substeps": 2
   },
   "indices": "screen25",
   "compare_to": "physx-nominal",
   "rationale": "physics step; controller held at 1 kHz"
  },
  {
   "id": "physx-step-0.25ms",
   "backend": "physx_gpu",
   "physics": {
    "substeps": 4
   },
   "indices": "screen25",
   "compare_to": "physx-nominal",
   "rationale": "physics step; controller held at 1 kHz"
  },
  {
   "id": "physx-friction-0.1",
   "backend": "physx_gpu",
   "physics": {
    "friction": 0.1
   },
   "indices": "screen25",
   "compare_to": "physx-nominal",
   "rationale": "sliding friction (static = dynamic)"
  },
  {
   "id": "physx-friction-0.5",
   "backend": "physx_gpu",
   "physics": {
    "friction": 0.5
   },
   "indices": "screen25",
   "compare_to": "physx-nominal",
   "rationale": "sliding friction (static = dynamic)"
  },
  {
   "id": "physx-contact-offset-100um",
   "backend": "physx_gpu",
   "physics": {
    "contact_offset_m": 0.0001
   },
   "indices": "screen25",
   "compare_to": "physx-nominal",
   "rationale": "contact generation envelope; HA1"
  },
  {
   "id": "physx-contact-offset-1mm",
   "backend": "physx_gpu",
   "physics": {
    "contact_offset_m": 0.001
   },
   "indices": "screen25",
   "compare_to": "physx-nominal",
   "rationale": "contact generation envelope (part-one primitive value); HA1"
  },
  {
   "id": "physx-rest-offset-5um",
   "backend": "physx_gpu",
   "physics": {
    "rest_offset_m": 5e-06
   },
   "indices": "screen25",
   "compare_to": "physx-nominal",
   "rationale": "positive rest offset; shrinks effective clearance by 10 um"
  },
  {
   "id": "physx-iterations-25-1",
   "backend": "physx_gpu",
   "physics": {
    "position_iterations": 25,
    "velocity_iterations": 1
   },
   "indices": "screen25",
   "compare_to": "physx-nominal",
   "rationale": "solver iterations"
  },
  {
   "id": "physx-iterations-4-0",
   "backend": "physx_gpu",
   "physics": {
    "position_iterations": 4,
    "velocity_iterations": 0
   },
   "indices": "screen25",
   "compare_to": "physx-nominal",
   "rationale": "Isaac Lab locomotion iterations"
  },
  {
   "id": "physx-solver-pgs",
   "backend": "physx_gpu",
   "physics": {
    "solver": "PGS"
   },
   "indices": "screen25",
   "compare_to": "physx-nominal",
   "rationale": "solver type"
  },
  {
   "id": "physx-depenetration-5",
   "backend": "physx_gpu",
   "physics": {
    "max_depenetration_velocity_m_s": 5.0
   },
   "indices": "screen25",
   "compare_to": "physx-nominal",
   "rationale": "RoboLab value; HA1, candidate cause of 100 N spikes"
  },
  {
   "id": "physx-depenetration-1",
   "backend": "physx_gpu",
   "physics": {
    "max_depenetration_velocity_m_s": 1.0
   },
   "indices": "screen25",
   "compare_to": "physx-nominal",
   "rationale": "Isaac Lab ANYmal value; HA1"
  },
  {
   "id": "physx-depenetration-0.1",
   "backend": "physx_gpu",
   "physics": {
    "max_depenetration_velocity_m_s": 0.1
   },
   "indices": "screen25",
   "compare_to": "physx-nominal",
   "rationale": "strongly limited; HA1"
  },
  {
   "id": "physx-cpu",
   "backend": "physx",
   "physics": {},
   "indices": "screen25",
   "compare_to": "physx-nominal",
   "rationale": "execution path CPU vs GPU; two Isaac threads as in the PhysX direction pilot",
   "isaac_threads": 2
  }
 ]
}
