Branch archaeology & provenance#
DATED SNAPSHOT (2026-06-24) — read as history. Since then:
cleanup-modernizationIS pushed to A2R-Lab/GATO (CI-verified receipts); the Python package movedpython/bsqp/→python/gato/; the recovered data lives underexamples/benchmarks/data/; the June fig3 chain (benchmark_fig8.py,benchmark_pinocchio.py,reproduce_fig3_{scalability,heatmap}.py) lived inexamples/archive/until 2026-10-01 (git history) — the paper’s Fig-3 path isexamples/paper-figures/reproduce_fig3_fair.py; the notebooks named below were folded intoexamples/explore.ipynb/paper-figures/visualizations.ipynb;ImprovedForceEstimator/CEMForceEstimatorwere re-imported (python/gato/estimators.py). The deletion gate below was never executed: items 1 (dynamics validated) and 3 (branch pushed) are cleared, item 2 (fair Fig-3) landed 07-30, item 4 (explicit approval) is still open.
This repo’s main/ICRA-26 (the clean, GRiD/GLASS-vendored, migrated solver) is an unrelated
git history to the older Alex-Du-era development branches (empty merge-base — they share no
common ancestor). Those older branches are each a full pre-migration-API world that carried the
paper’s experiment harnesses, notebooks, and measured result data which were never consolidated
onto main.
This document records, per branch, what unique content it held and where that content now lives, so the stale branches can be deleted with confidence. It is the output of a full read-only audit of all 24 branches (2026-06-21). Paper = GATO: GPU-Accelerated Batched Trajectory Optimization (arXiv:2510.07625), fixed-base Indy7 (6-DoF) + iiwa14 (7-DoF).
Paper experiment → canonical source → where it lives now#
Paper element |
Canonical source branch:path |
Measured data recovered? |
Now in this repo |
|---|---|---|---|
CS1 hyperparameter (Fig 4): iiwa14 per-batch ρ, normalized-merit-vs-SQP-iter |
clean nb |
YES — |
|
Fig 3 scalability (Indy7 batch×N solve-time) |
|
PARTIAL — 23/24 point-to-point cells (missing |
|
Fig 3 heatmap |
|
input |
|
Fig 3 CPU baseline |
|
none |
pending (port: dead ctor kwargs |
CS2 disturbance (Fig 5): Indy7 fig8 under random external force |
old |
none (figures only) → re-run from scratch |
pending |
CS3a pick-place / Table I: iiwa14 + pendulum, success-rate-vs-batch |
|
none → re-run |
|
CS3b hardware (physical robot) |
|
n/a |
pending (hardware-blocked) |
MPCGPU baseline (Fig 3 GPU competitor) |
|
|
pending (frozen-pin build) |
Success metric (CS3a), identical across the old notebooks and the modern API: a goal is
reached iff ‖ee − goal‖ < 0.05 m and L1(Δq) < 1.0 before a per-goal timeout, else
timeout. The modern MPC_GATO.run_mpc_goals already exposes this as stats['goal_outcomes'].
Lost in migration, to re-import for CS3a fidelity: ImprovedForceEstimator (fibonacci-sphere)
and CEMForceEstimator — only the generic ForceEstimator survived. Source: hardware/
iiwa14_demo force_estimator*.py.
API note: the current python/gato/interface.py still exposes the old BSQP surface
(solve/stats/reset_dual/set_f_ext_B), so most harness ports are trivial renames
(e.g. set_f_ext_batch → set_f_ext_B), not rewrites.
Recovered measured data (so figures re-plot without a GPU)#
examples/paper-figures/gato_hparam_batch_results.pkl— CS1 (Fig 4), 84 KB; next to its consumerreproduce_fig4_hparam.pysince 2026-10-01. (was a 5-byte empty stub onmain.)data/fig3_scalability_p2p/— 23/24 Indy7 point-to-point solve-time cells. Seedata/README.md.data/legacy_mpcgpu_solvetime_csv/— 11 early SQP solve-time CSVs (unique todev/ROS_dev/adu/multisolve-v2).