> **2026-09-30 update:** Newton grasp replays now use explicit shape damping 0.2 at 0.5 ms. The 2 N run completes the grasp; 1 N loses the ball. Other engines and compression controls are unchanged. Historical Newton failures below are diagnostic history, not the currently displayed grasp. See [revision notes](REVISION-2026-09-30.md) and [source hashes/results](revision-summary.json).

Public reproduction note: archive aliases and `SIMCOMPARE_ROOT` are portable placeholders; use your own archive and checkout locations. Private deployment identifiers are omitted.

# Deformable experiment checkpoint — 2026-09-23

This supersedes the **status** paragraph of DEFORM-PROTOCOL-2026-09-23.md;
that file retains the original capability protocol and diagnostic history.

## What is implemented

- Five standalone compression adapters and five articulated Panda routes.
- Shared 60 mm nominal ball, E=20 kPa, nu=.3, density=1000 kg/m³, friction=.5.
- Frozen 4.5 s joint reference: close .3–.8 s, lift 1–1.8 s, hold to 2.3 s,
  lower to 3.1 s, open 3.3–3.7 s. Explicit PD with a common 1 or 2 N limit
  on each finger actuator, not a guarantee of that measured contact force.
- `deform_grasp*.py` stop at the first sampled nonfinite/inverted element and
  preserve the valid prefix with `status=failed`; process exit zero means
  a recording was saved, NOT that simulation passed.
- Native Newton MJWarp/VBD lagged proxy coupling, not an Isaac Lab frontend run.
- Blog replay with deforming surfaces, centroid paths, overlay/split layout,
  timeline, explicit stopped-run warnings, native MuJoCo contact arrows and
  mesh-derived ball weight. Internal forces/table reactions are not drawn.
- Native force instruments attempted for SAP, VBD and PhysX; not validated.

## Evidence and reproducibility

Instance 52239750: RTX PRO 5000 Blackwell, driver595.84. Remote working directory
`SIMCOMPARE_ROOT`. No host driver modifications. Three isolated Python3.12
environments: `.venv-newton` (Newton1.5.2, MuJoCo/MJWarp3.11, Warp1.16),
`.venv-genesis` (Genesis1.4.1, float64 GPU), `.venv-isaac` (IsaacSim6.1.0.0).
Exact package snapshots: `results/deform-provenance/` and `environment-locks/`.

Local full recordings: repository-root `output/archive-deformable/results/`.
The earlier capability/provenance backup may also be under the harness's own
`output/archive-deformable/`; use the repository-root results for this completed sweep.
`deform-grasp-03/` contains all ten trials; `deform-forcecheck/` the instrument
audits; `deform-01/` and `deform-controls/` native compression/repeat/half-dt.
Older `deform-grasp-02/` and `deform-capability/` are diagnostics, not replacements
for the selected trial set. Preserve files rather than overwriting failed runs.

On a fresh compatible Linux GPU instance, sync the harness, assets, and lockfiles
to `SIMCOMPARE_ROOT` (exclude local output, caches and all virtualenvs).
Use `setup/deform_install.sh` once in fresh isolated environments. Do not run it
over active environments. Register the supplied supervisor configs for long jobs:
`deform_sweep.conf` invokes `setup/deform_sweep.py`, and `deform_forcecheck.conf`
invokes the instrument controls. The sweep skips existing files; choose a new
output directory for a rerun. `deform_reference.py` regenerates the reference,
but reuse the archived `assets/deform-grasp-reference.json` for exact comparison.

Build blog data from local evidence:

```sh
.venv/bin/python experiments/simcompare/deform_publish.py \
  output/archive-deformable/results output/deform-blog-stage/assets/deformable
```

Plot in an environment with NumPy and Matplotlib:
`python deform_outcomes.py results results/deform-report`.
Viewer sources: `viewer/deform.{html,js}`. Blog targets: `replay/deform.js`, served by `replay/index.html?deform=1`
and `assets/deformable/`. No external simulation is needed for replay.

## Observed grasp outcomes (single trials, not success rates)

| Route | 1 N finger limit | 2 N finger limit |
|---|---|---|
| CPU MuJoCo | inversion gate 1.345 s | completed; mean hold lift65.64 mm |
| Native MJWarp | gate1.335 s | hold lift60.09 mm; gate2.525 s |
| PhysX GPU | gate.066 s | gate1.536 s |
| Genesis FEM/SAP | completed, no sustained lift | completed, no sustained lift |
| Newton MJWarp/VBD | gate.6355 s | gate.6205 s |

Hold metric is vertex-centroid displacement relative to first sample, averaged
1.9–2.2 s; not mass-weighted COM. Native samples are nominally 5 ms apart,
published replay 10 ms. Failed prefixes are not padded or extrapolated.
Sampling phases differ by up to one integration step between adapters.

## Force validity

Zero-gravity compression audit measures nodal momentum-rate plus summed plate
reactions. Maximum absolute residual components were approximately3.01 N for
Genesis and8.47 N for VBD. These instruments have NOT passed an accounting
check; whether extraction, timing, solver forces or the test itself is wrong is
not yet isolated. Their forces remain in raw diagnostics but are withheld from
both compression and grasp published arrows. PhysX's rigid-contact tensor probe
returned all zero despite compression; do not substitute it for soft-body loads.
Native MuJoCo contacts are labeled provisional native measurements, not independently
validated load cells. Published force omission is null, never zero.

## Limits and next useful checks

1. PhysX1N fails before closure; isolate a gravity/table-only settle and repeat
   initialization, check full native tet connectivity and collision offsets.
2. Audit unloaded FK and controlled force/torque response in all new adapters,
   especially Newton coupling. Same tape does not prove same imported actuator.
3. Genesis remeshes and uses a different material law; its rigid importer warns
   that elliptic cone wasn't honored. Fix/check that before claiming parity.
4. Couple only the intended rigid contact shapes, test VBD independently, then
   decrease coupled timestep; don't interpret a failed adapter as engine incapability.
5. Mesh convergence, grasp repeats, half-step controls, validated load-cell
   instruments, material calibration and real-world ground truth remain open.

All five standalone compression geometry cycles passed earlier gates. This does
not establish grasp robustness or five-way material equivalence. Compression CPU
vs nativeMJWarp loads2.151/1.632 N include different contact penetration.
No policy is used here. There is no accuracy winner from this evidence.

Verification:33 Python regression tests passed in the native simulation environment;
six deformable/publisher tests pass locally; JS syntax checked. Browser checked
grasp hold, failure warnings, overlay, and compression selection. Old PhysX rigid
adapter defaults are preserved but its shared GPU-aware refactor has not had a
fresh remote rigid PhysX regression rollout in this turn.
