newton physics · ASV daily benchmark check · 2026-07-29

ASV daily benchmark check

No newton regressions. Monday’s py3.13 watch item resolved to a py3.13-venv effect (not newton); one new Kamino improvement; the 07-28 infra gap has backfilled. Daily monitoring digest for the public Newton ASV benchmark fleet — for review, not a decision report. Covers the gap since Monday 07-27, incl. Tuesday’s overnight infra failure.

Copy-paste for Slack
Benchmark check 2026-07-29 (Dylan)

Covering the gap since my Monday post — includes Tuesday's overnight infra failure (expected data hole, not a regression), the py3.13 SC-PV watch-item from Monday resolved, and one new Kamino improvement. No newton regressions.

:information_source: 07-28 overnight failed on the KitMaker/autokit publish race — warp-lang's 07-28 Linux wheel didn't get published in time, so the PLATO/asv runs on the Linux runners (5090 + 6000 Pro) had nothing to build against and errored out. Retried and resolved, data's backfilling. Net effect on the dashboard: SC-PV-02 is missing its 07-28 py3.13 point, that's the whole gap — both SC-PV runners are current through 07-29. So a 07-28 hole on those machines is this, not a regression. (job 30285206.)

:eyes: → :white_check_mark: the py3.13-only SC-PV step from Monday — resolved, and it's the environment, not newton. Monday I flagged HeightfieldCollision.time_simulate, FastInverseDynamics.time_eval_inverse_dynamics_force and NotifyDRLegs.time_notify_shape_properties stepping up together on py3.13 only. With more runs it's clearly a py3.13 venv bimodality, not a one-way step: on SC-PV-02 the py3.13 env flips between a fast and a slow mode run-to-run — 07-27 caught both on the same day (de2d06f3d fast, d124e5bd slow), with heightfield and inverse-dynamics moving together — while py3.12 is dead flat on the exact same newton commits. SC-PV-10 has just been parked in the slow mode since 07-24. Same newton commit produces both modes => it's the py3.13 virtualenv, full stop. It did NOT revert (the slow mode is real and recurs), so this is worth someone with SC-PV runner access diffing the py3.13 venv on those runners — the recommendation from Monday, now firmed up. Not a newton regression, keeping it out of #newton-dev.

:white_check_mark: the third one, shape_properties, got overtaken by a genuine newton win. #3677 [Kamino] Skip unused material updates dropped NotifyDRLegs.time_notify_shape_properties by ~half on every machine and both py envs at the 07-27 boundary (SC-PV-02 py3.12 1.0e-4->3.0e-5, SC-PV-10 py3.13 2.4e-4->6.2e-5, orin 4.3e-4->2.2e-4, thor 2.1e-4->1.0e-4). It touches solver_kamino.py + the notify test, so it's the real thing. The py3.13-vs-py3.12 gap on this metric is still ~2x but the absolute level is now low. Monday's deferred boundary step is superseded by this.

:white_check_mark: model_properties #3606 improvement (the 4-8x from Monday) still stable, no drift.

:warning: machine health — orin's back (was quiet since 07-23, now reporting 07-27 + 07-28), thor current 07-28, both SC-PV current 07-29. L40S is the one to watch: still stuck at 07-22, now 6 days silent (was 4 on Monday) — @Adenzler can you give the L40S runner a poke? GB10 Spark still silent 35 days, same standing issue.

:information_source: carry-overs, no action: CpuMuJoCoAnt orin creep has plateaued at +8% (3.82->3.84, not climbing now that orin's reporting again); FastExampleCablePile's +8% step at the 07-23 boundary is holding (cross-env, newton-side, low magnitude); KitchenG1 is still the top sweep flag but that's the version="2" workload fix (excluded in replace_hash.sh, not a regression). Hash-rewrite still holding at 0 mismatches.

@Viktor @Tobias — heads up: the new teleop track metrics (track_object_displacement_m, track_hand_object_contact_frame_pct, track_loop_time_cv_pct) are dominating the top of the sweep with 5x+ ratios, but they're behavioral/quality metrics with huge run-to-run spread (x27-x71), not timings — just noise in the regression sweep, ignore them there.

TL;DR

Data freshness

MachineLast dataStatus
SC-PV-02 07-29 (0a3e9e1b py3.13); py3.12 last 07-28 (0827c76e) OK — no 07-28 py3.13 point (KitMaker race; backfilled)
SC-PV-10 07-29 (0a3e9e1b py3.13); py3.12 last 07-28 (0827c76e) OK
jetson_agx_orin 07-28 (825f0c98) OK — recovered (was quiet since 07-23 on Monday)
jetson_agx_thor 07-28 (92ae9454) OK
adenzler-horde-L40S 07-22 (4a6e036f) silent 6 days — escalating (was 4 days Monday); needs a poke
SC-PV-SPARK-PS-07 (GB10) 2026-06-23 still silent 35 days — standing issue, predates everything, separate

07-28 infra failure (the data hole)

Known gap · infra Tuesday 07-28 overnight failed on the KitMaker/autokit publish race

The overnight PLATO/asv runs for the Linux runners (5090 = SC-PV-10, 6000 Pro = SC-PV-02) failed on 07-28: an autokit publishing race left warp-lang’s 07-28 Linux wheel unpublished, so the environments had nothing to build against. This is an infra failure, not a benchmark signal — resolved on retry, and the data has backfilled.

Observable residual on the dashboard: SC-PV-02 has no 07-28 py3.13 snapshot (it goes 07-27 d124e5bd → 07-29 0a3e9e1b); its py3.12 run on 07-28 (0827c76e) did land, and SC-PV-10 got both envs. Both SC-PV runners are current through 07-29.

Read as A missing or partial 07-28 point on the Linux runners is the KitMaker publish race (job 30285206), not a regression. Nothing to action — flagged so the gap isn’t misread.

Needs a look

Watch · env py3.13 venv bimodality on the SC-PV runners (Monday’s watch item, now resolved to env)

Monday’s three-benchmark py3.13 step is now clearly a bimodal py3.13 virtualenv, not a one-way regression and not a clean revert. The two coupled benchmarks flip between a fast and a slow mode:

Confirmed not a newton regression. The clincher: on SC-PV-02, two snapshots the same day (07-27) land in opposite modes on both benchmarks together, and py3.12 never moves on the identical newton commits. Mode is set by env state at run time, not by any newton commit. asv does not record pinned deps in these result files, so the specific package can’t be named from the data.

Recommended Someone with SC-PV runner access should diff the py3.13 virtualenv on the SC-PV runners (nightly deps — warp / mujoco-warp / CUDA libs are the usual suspects). The slow mode is now confirmed persistent/recurring (not a one-run cold-start), so this is worth a look. Env-side — not escalating to #newton-dev.

Series continuity

Findings

Six findings. One is a resolved-to-env watch (the py3.13 venv bimodality); one is a new confirmed improvement; one is a confirmed-stable improvement; two are carry-over watches; one is a known excluded workload fix. No genuine regressions.

Watch · env 1 · py3.13 venv bimodality on SC-PV (Monday’s watch item, resolved to env)

See Needs a look above. HeightfieldCollision.time_simulate (fast ~0.084 / slow ~0.105) and FastInverseDynamics.time_eval_inverse_dynamics_force (fast ~0.412 / slow ~0.537) flip together on py3.13; SC-PV-02 ran both modes on 07-27, py3.12 dead flat on the identical newton commits. Env, not newton; did not revert — recommend a py3.13 venv diff. The finer-grained NotifyDRLegs.time_notify_{body,joint,actuator}_* micro-benchmarks also read a touch high on SC-PV-10 py3.13 (all e-05 scale, noisy), consistent with the same py3.13 env overhead.

Improvement · new 2 · NotifyDRLegs.time_notify_shape_properties ~2× faster (#3677)

New since Monday. Steps down ~2× at the 07-27 boundary on every machine and both py envs: SC-PV-02 py3.12 1.0e-4→3.0e-5, SC-PV-10 py3.12 9.8e-5→2.8e-5 / py3.13 2.4e-4→6.2e-5, orin 4.3e-4→2.2e-4, thor 2.1e-4→1.0e-4. Cross-machine bracket intersects on #3677 (bfe8c313, “[Kamino] Skip unused material updates”) — which touches solver_kamino.py and test_solver_kamino_notify.py, exactly the notify path. Because it hits both py envs it is newton-side, not the py3.13 env issue. This supersedes the shape_properties boundary step deferred on Friday; new lower baseline (py3.13 still ~2× py3.12, the same env overhead, but at a low absolute level).

Improvement · confirmed stable 3 · NotifyDRLegs.time_notify_model_properties ~4–8× — stable

The #3606 improvement characterized Monday is holding flat: SC-PV-02 py3.13 ~6.1e-6, SC-PV-10 py3.13 ~5.3e-6, orin ~1.7e-5, thor ~9.0e-6 — no drift since the 07-22→07-23 drop. Confirmed stable, no re-analysis needed.

Watch · carry-over 4 · CpuMuJoCoAnt orin creep — plateaued at +8%

orin resumed reporting (07-27/07-28) and the value is holding, not climbing: 3.55 (07-13) → 3.71 (07-14) → 3.87 (07-20) → 3.82 (07-23) → 3.82 (07-27) → 3.84 (07-28). ~+8% cumulative, now a stable plateau rather than a creep. Still one CPU benchmark, still not classifiable to a commit — keeping open but no new movement.

Watch · minor 5 · FastExampleCablePile.time_simulate +8% step — holding

The 07-22→07-23 boundary step is holding: orin 0.2965 → 0.3211 (07-23) → 0.3204 (07-28), plus +5–6% on SC-PV py3.12/py3.13. Cross-env, so newton-side, low magnitude; holding at the stepped level, nothing new. Bracket unchanged from Monday ((a051c39a, 6de960ac]).

Not a regression 6 · FastKitchenG1.track_simulate [512] +2×, all machines

Still the top sweep flag (orin 2.07×, SC-PV-02 1.72×, SC-PV-10 1.30×), still the deliberate version="2" workload fix — the pre-v2 series omitted the kitchen scene, so the new numbers are the first correct ones. Hard-excluded from any history merge; recorded in replace_hash.sh. Not a regression.

Dismissed flags

Flags reviewed and dismissed · noisy new metrics / bimodal init / short-window artifacts