# Post-hoc controller-transfer trace analysis

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

Analyzed 2026-09-27, without running a simulator or changing the frozen selection.
Input: `output/archive-runtime/controller-transfer-02/evaluation/` in the
state-of-robot-aug-2026 workspace. All 48 held-out traces are included: two unique
controllers, four engines and six layouts; seed 0, one rollout per combination.

## Main result

Identical success counts hide different motion. The selected controller lowers
mean normalized squared arm effort by approximately 33–36% over the six layouts
but increases vertical hand deviation. Successful-layout deviations range from
submillimetres in Genesis to centimetres in the other backends. In the two narrow
layouts all engines fail, and deviations grow from about 8–11 cm to 25–31 cm.
This is a control-quality trade-off, not evidence of physical accuracy or a
causal diagnosis of an engine defect.

## Definitions and limits

- Height deviation is native hand-body world-Z position minus its first recorded
  position. The reference has constant height. The table reports minimum and
  maximum **per-rollout peak absolute deviations** within each layout group.
- The plot shows the first declared held-out layout (`test-0`), rather than a
  layout selected by discrepancy. All 1 ms position samples are plotted without
  smoothing. Baseline lasts 5 seconds; selected lasts 6 seconds.
- Effort is the mean across time and seven arm joints of squared commanded
  torque normalized by each joint's effort limit. The reported reduction compares
  equal-weight means over six layouts. It is not work, energy, or a same-duration
  comparison. Gains and push duration changed together.
- Pairwise distances match object identity and timestamp across engines within
  the same controller/layout. RMS is over object-time samples; final distances
  use the last recorded pre-step state. No alignment, permutation or time warping.
- Force values are net world-X pad force on loose blocks, summed over fingers;
  not grip force or unsigned contact load. The signed time integral uses
  `sum(Fx) * dt`. Poses are pre-step; native force readback corresponds to the
  following step, with Genesis exposing contacts after stepping. Integrals are
  integrals of recorded readback, not an independently validated impulse sensor.
  Peaks are sampling/solver-sensitive and are not a physical-accuracy ranking.
- The robot has analytic pad-only collisions, without other robot collisions.
  Large excursions are not validated predictions of a physical Panda.
- Layout ranges are not confidence intervals. Selection layouts were easy enough
  that every candidate passed. No repeated-seed robustness claim is supported.

## Provenance and reproduction

`trace-analysis.json` contains all 48 per-trial rows, compressed-source SHA-256
hashes, 72 matched engine-pair comparisons and aggregate metrics. The script checks
scene/reference matching across engines, uniform sampling and agreement of
recomputed peak height/force with the original per-trial records.

From the state-of-robot-aug-2026 repository (NumPy required, no simulation packages):

```sh
.venv/bin/python experiments/simcompare/controller_transfer_traces.py \
  output/archive-runtime/controller-transfer-02 \
  output/controller-transfer-analysis
```

The analysis script and its `push_report.py` dependency are also provided beside
this note. The original downloaded trace backups are not modified.
