← Real2Sim home

IN PROGRESS · SIMULATION ONLY

State teacher →
visual student

Learning bottle picking with a UR5 and RG2 in the canonical MJLab Gaussian simulator. Phase 1 trains a rendering-free privileged-state PPO teacher. Phase 2 will train a 320×200 wrist-image ACT-style student and test recovery, regrasping and disturbance rejection.

Latest diagnostics · 13 Sep 2026

UR5 teacher learners stopped at the user's request with saved checkpoints (stop record). Two follow-up diagnostics on the stock MJLab YAM lift task: a cube → bottle asset swap, then a bottle collision/physics study. Neither qualifies a teacher. A separate state-only PPO policy in the SuperDex simulator passed 32/32 fresh-seed episodes in a narrow distribution; see simulator experiments.

Stock YAM lift: cube 384/384 vs bottle 0/384

Stock lift sanity check: cube → bottle

User selected the installed stock YAM task on 2026-09-13 after confirming this MJLab checkout has no Franka lift task. The previous UR5 teacher runs remain stopped. These experiments diagnose learning in the stock manipulation setup; they do not qualify the UR5 teacher or establish transfer to its controller.

Measured result

Task Completed updates at evaluated checkpoint Held-out successes
Stock cube 401 384 / 384
Canonical bottle substitution 401 0 / 384
Stock cube, selected checkpoint 501 384 / 384

The cube baseline learns. The bottle substitution has not learned goal reaching in this quick comparison. Bottle training completed 448 updates, then RSL-RL stopped when the raw actor observation group contained NaNs during the next rollout. Its last saved checkpoint is model_400.pt (401 completed updates). The cube was stopped gracefully after passing validation; the bottle learner and sequential monitor exited on the error. No learner is left running.

The task and PPO configs were identical except for the declared asset/clearance changes (results/baselines/launched_config_audit.json). The cube's logging-only resume is documented below, so the two stochastic trajectories are not an exact paired-RNG ablation. A single training seed and these checkpoints do not establish that the bottle is unlearnable or identify the source of the older UR5 failures.

Additional checks:

  • All 64 bottles remained upright for 4 seconds under zero native actions (nominal robot joint targets): this probe did not show spawn instability.
  • Early and checkpoint-401 bottle videos show the policy interacting with a tipped bottle. Illustrations are separate from the validation denominator.
  • A frozen checkpoint-401 policy with stochastic actions ran 1,000 vector steps in 4,096 worlds with native physics NaN capture enabled. It stayed finite and reported zero capacity-overflow flags. This fresh rollout did not reproduce the original learner's numerical failure; its exact cause remains unresolved.
  • The stock state observation omits object orientation. That remains unchanged for the bottle, as requested. No reward, observation, solver, controller or exploration tuning was introduced to make the bottle pass.

Artifacts:

  • Cube run: results/baselines/20260913T165026Z_yam_cube_seed42/
  • Bottle run: results/baselines/20260913T170300Z_yam_bottle_seed42/
  • Each run: evaluations/update_401/{summary,episodes}.json
  • Cube video: illustration/episode.mp4; bottle video: illustration_401/episode.mp4 inside their respective runs.
  • Comparison curves: results/baselines/comparison_curves.png.
  • Rest and physics checks: results/baselines/bottle_rest_audit.json and the bottle run's physics_probe/summary.json.

Experiment specification

  • Cube: Mjlab-Lift-Cube-Yam, installed stock state observations, joint-position actions, rewards, command/reset distribution, friction randomization and PPO.
  • Bottle: Mjlab-Lift-Bottle-Yam, created by calling the cube config factory and replacing the object spec with the canonical bottle asset. The scene key stays cube to preserve every observation/reward/command selector.
  • Required placement correction: reset origin z shifts upward by 0.029441457 m. The bottle bottom is 0.049441457 m below its origin versus 0.02 m for the cube. This preserves the stock 0–3 cm initial ground clearance. No rescaling or mass/friction/inertia editing. Bottle mass is its original 80 g; cube is 50 g.
  • Exact config-diff audit: results/baselines/asset_swap_audit.json. All PPO parameters are identical. Each task initializes from scratch with seed 42 and 4,096 worlds on GPU 0, up to the stock 5,000-update budget.
  • Native timing is 5 ms physics × 4 decimation = 50 Hz actions, with 20-second episodes. This is the stock YAM interface, not the UR5 teacher's 20 Hz interface.
  • Every 500 updates, a saved policy is evaluated deterministically on 384 full episodes, 128 each on seeds 1101/1102/1103. Observation noise and all sampled starts remain. Success means physical object origin comes within the native 5 cm goal threshold at least once in the episode. The native task teleports the object and resamples the goal every 8–12 seconds; evaluation preserves this behavior and records success before those teleports or episode resets.
  • The sequential monitor stops the cube learner after a checkpoint reaches ≥90% evaluation success, then starts fresh bottle training. The same gate finishes the bottle diagnostic. If the 5,000-update budget expires without passing, it records that outcome and makes no automatic task changes.

The cube learner was checkpointed and resumed at update 66 to reduce diagnostic JSON size (one standard deviation per action instead of duplicated batch rows). Exact actor, critic, normalization, optimizer, learning-rate and curriculum-counter restore checks passed. Fresh simulator episodes/RNG branch are documented; this is not an uninterrupted random-stream comparison. The initial and revised runner sources are saved in the run.

Current paths are in results/baselines/latest_cube.json and, once started, latest_bottle.json. The cube run's comparison.json records the live stage, evaluation summaries and selected checkpoints. Each run has run.json, progress.json, TensorBoard logs, source/config snapshots and atomic checkpoints.

Commands after sourcing mjlab_gs/env.sh:

# Stop the comparison handoff first, then the current learner gracefully:
touch CUBE_RUN/STOP_COMPARISON
touch CURRENT_RUN/STOP

# Resume an owned stopped learner, after removing its STOP marker:
python scripts/lift_baseline.py train --run RUN --resume RUN/checkpoints/stopped.pt

# Independent fixed-quota evaluation, always a new output directory:
python scripts/lift_baseline.py evaluate --checkpoint CHECKPOINT --output OUTPUT
YAM cube versus bottle training curves
Cube vs bottle training curves; training diagnostics, not held-out success. Scalars
Stock YAM cube policy. Curated illustration; excluded from rate denominator. Summary
YAM bottle policy, checkpoint 401 (0/384 validation). Curated illustration; excluded from rate denominator. Summary
Bottle collision and physics study

Bottle collision and physics study

The visual mesh is not used for collision. The original bottle already has three cylinder colliders and one ellipsoid collider; all 12 textured mesh geoms have both collision masks disabled. The compiled visual bounds are approximately 37.01 mm diameter × 98.88 mm height, matching the collider's outer bounds. Mass is 80 g, centre of mass is (0, 0, -0.006) m in the bottle frame, and the explicit inertia is positive. No asset-bound or collision-mask error was found.

The earlier learner NaN remains unexplained. This study does not establish that the visual mesh or the original primitives caused it.

Changes implemented

All variants are opt-in registered YAM tasks. The original YAM and UR5 bottle tasks retain their existing defaults. Visual vertices, mass, centre of mass and inertia were checked for exact equality across all variants.

Variant Change
Original Existing three cylinders + ellipsoid, 5 ms physics
Soft Same shapes/friction; all bottle contacts use solref=(.02,1), solimp=(.9,.95,.001,.5,2), condim=3
Capsule Three collision primitives: rounded capsule body, sphere cap, thin flat box base; original inertial preserved
Convex Replace each analytic cylinder with a purpose-built 16-sided convex prism; retain shoulder ellipsoid and contact settings
Substep Original collision asset, physics timestep 1 ms and decimation 20; policy stays at 50 Hz

The capsule proxy is deliberately coarser. Its rounded lower body and cap do not fill the original visual silhouette everywhere. Its maximum radius, bottom and top match the original. It is a grasping/physics ablation, not a newly calibrated physical model. The convex version preserves the shape much more closely (maximum radial chord error about 0.36 mm for the body).

Factory: mjlab_gs/src/mjlab_gs/tasks/bottle_collision.py. Task IDs append -Soft, -Capsule, -Convex or -Substep to Mjlab-Lift-Bottle-Yam. PPO configuration is identical for every task, and the registered episode length remains 20 seconds.

Matched tests and measurements

For each variant, 256 native YAM worlds undergo 200 settling steps followed by 1,000 prerecorded action steps. Half start upright, half horizontal, 3 cm above support. Resets occur at fixed 4-second intervals with fixed seeds. The action bank comes from the frozen bottle checkpoint at update 401, using stochastic actions. Every variant replays the exact same action tensor and checks exact equality of object poses and commanded goals at reset.

For this stress fixture only, ground-contact termination is disabled and timeout is extended, so a collision does not silently change the reset schedule. This is not a native success-rate evaluation. No PPO updates were run in this study. The original probe ran on GPU 0 and the alternatives on GPU 1 (same A6000 model); cross-run wall-clock differences are not a throughput benchmark.

Variant 95th percentile of per-world peak overlap Largest sampled overlap Upright after rest drop Nonfinite / overflow worlds
Original 4.802 mm 8.191 mm 128/128 0 / 0
Soft 7.065 mm 8.097 mm 128/128 0 / 0
Capsule 3.715 mm 4.913 mm 128/128 0 / 0
Convex 4.856 mm 8.171 mm 128/128 0 / 0
Substep 4.754 mm 7.690 mm 128/128 0 / 0

Overlap is MuJoCo-Warp's negative contact distance for contacts involving the bottle, sampled after each 50 Hz control step. NaN/Inf and capacity-overflow checks run at every physics substep. These overlap figures are sampled contact diagnostics, not bounds on every intermediate contact or measures of grasp success.

The capsule proxy reduced the largest sampled overlap by about 40% and the 95th-percentile per-world peak by about 23%. Softer contacts increased typical peak penetration. A 1 ms timestep reduced the largest sampled overlap by about 6%, with essentially unchanged 95th-percentile overlap. The convex replacement did not materially improve overlap in this fixture.

Next candidate: Mjlab-Lift-Bottle-Yam-Capsule. It is the strongest simple collision-only candidate in these measurements. Use fresh PPO initialization to test whether it also improves learning. This short stress test does not establish a fix for the previous rare NaN, and no retraining success is claimed.

Ready training configs: configs/yam_bottle_capsule.json, configs/yam_bottle_convex.json, and configs/yam_bottle_substep.json. These enable native NaN history capture under the new run's physics_dumps/ directory. They retain the stock PPO settings; none has been launched here.

Contact-engine findings

The installed MuJoCo-Warp io.py explicitly warns that the active cylinder–box and capsule–cylinder pairs cannot generate multiple contacts. A related upstream report reproduces alternating cylinder–box contacts in a reduced scene. This makes cylinder contact handling a plausible investigation target, but is not proof of the cause of our training failure: MuJoCo-Warp issue #1555.

The original bottle body uses a 4 ms contact time constant; the other bottle parts use 20 ms, with mixed 3D/4D friction constraints. MuJoCo advises a positive contact time constant at least twice the timestep and applies a safety clamp unless disabled. Effective pair parameters also depend on mixing and priority, so the raw 4 ms value alone does not prove instability: MuJoCo solver parameters.

Artifacts and reproduction

All evidence is under results/baselines/collision_study/:

  • asset_audit.json: compiled geometry, dimensions and contact settings.
  • proxy_audit.json: exact visual/inertial equality checks.
  • collision_overlay.png: visual vertices with collider projections.
  • comparison.json: measurements for all five variants.
  • actions.pt: shared action bank and reset states.
  • Per-variant summary.json, resolved env.json, stdout log and probe source.
  • bottle_collision_source.py and source_manifest.json: candidate source provenance.

After sourcing mjlab_gs/env.sh, reproduce the baseline with scripts/study_bottle_collision.py --profile original and a new output/action-bank path, then use that bank with --profile soft|capsule|convex|substep. The source's default checkpoint argument is required; this study used results/baselines/20260913T170300Z_yam_bottle_seed42/checkpoints/model_400.pt.

Bottle visual vertices with collider projections
Visual vertices with collider projections. Five-variant measurements

Current evidence

No qualified teacher or visual student yet. Optimizer checks and reward curves establish infrastructure and learning behavior; they do not establish reliable task success.

# Experiment status

Updated: 2026-09-14T08:43:01.742999+00:00.

Phase 1 remains active. No teacher is qualified and no final image policy is exported.

## Live owned teacher learners

No live owned teacher learner found; inspect run metadata before resuming.

The 37-state actor/critic uses rendering-free native PPO. Policy actions run at 20 Hz, the selected v4 controller updates joint targets at 125 Hz, and canonical physics runs at 1 kHz. Each run records its exact controller/reward/source configuration.

## Evidence and next decision

- Evaluation uses all sampled starts, fixed episode quotas, full 15 s episodes unless hard failure, and the success definition declared for that run. The current run uses native 5 cm goal proximity; older runs use strict contact/hold. No reachability metric or filtering.
- Validation seeds and clearly labeled restricted-DR diagnostics guide checkpoint selection. The 1,024-episode final seed set remains reserved.
- User-directed revision: native MJLab reach/bring rewards and native 5 cm goal-proximity episode success. Older strict-hold results retain their original labels and are not directly comparable.
- Native PPO continues at small DR scale 0.05, zero nominal mixing, 1,024 worlds, and a 20,000-update target. In the original continuing run, at update 2056 a documented correction selected arm joints for the speed penalty and bounded Gaussian action means. At update 3069, after checkpoint 3000 again scored 0/384 with no 2 cm lifts, a gripper-only Gaussian std floor of 0.5 was added to counter measured exploration collapse. Exact actor/critic/normalization/Adam/counter resume checks passed for both revisions. No scripted initialization or additional grasp reward terms.
- A single clean initialization, `20260913T134249Z_native_corrected_from_start_teacher_seed42`, now trains on GPU 0 with those corrected settings from update zero. The original continuing run stays on GPU 1. Same task/actor configuration was verified; fresh native reward-curriculum counters and a different GPU mean this is not a controlled one-factor ablation. Neither run is qualified.
- DR increases only after two consecutive complete 384-trial validation evaluations at the current scale both exceed 90%, with at most 3 percentage points spread. Evaluations occur every 1,000 updates; the learner continues uninterrupted.
- All randomized starts count. The small initial region is an explicitly restricted distribution, not an automatic reachability filter. No time-based DR widening or performance-based early stopping.
- Controller: previously verified Cartesian actions, direction-preserving IK and 125 Hz joint targets. No real-robot control.
- Phase 2 remains pending teacher competence. Existing image pipeline checks do not establish visual policy success.

Website: https://real2sim.sudhirpratapyadav.com/rl-training/ — croc publication via untu_vps, with verified preserved pages and video playback.

Run control: source canonical env.sh; use `python scripts/manage.py status|stop|resume RUN`. Full run history is in `results/index.json` and the published run table. No real-robot control is run.

Run history

RunStatusUpdatesVector steps
20260913T065517Z_native_ppo_resume_audit_seed41failed00
20260913T065553Z_native_ppo_resume_audit_seed41failed00
20260913T065719Z_native_ppo_resume_audit_seed41completed40960
20260913T070019Z_native_ppo_teacher_seed42stopped3337992
20260913T072133Z_contact_lift_ppo_teacher_seed42stopped43510440
20260913T075521Z_servo125_contact_teacher_seed42stopped2465904
20260913T081801Z_grasp_geometry_teacher_seed42stopped50212048
20260913T082948Z_linear_aperture_teacher_seed42stopped53612864
20260913T084625Z_bootstrap_ppo_teacher_seed42stopped50412096
20260913T092809Z_fixed_grasp_bootstrap_ppo_teacher_seed42stopped1984752
20260913T093744Z_frozen_normalization_grasp_ppo_teacher_seed42stopped1904560
20260913T100411Z_native_lift_restricted_long_teacher_seed42stopped6403153672
20260913T134249Z_native_corrected_from_start_teacher_seed42stopped262162904

Run data · Frozen evaluation protocol

Metric integrity

The current experiment uses native MJLab lift rewards and goal-proximity success: the bottle reaches within 5 cm of the goal during the episode. Training starts with small DR scale 0.05. DR widens only after two consecutive complete validation evaluations exceed 90%, with rates within three percentage points. Every sampled start counts; no reachability filtering. Earlier experiments used a stricter contact-and-hold criterion and remain labeled in the archive. Drops, penetration and motion diagnostics are retained.

Checkpoint selection uses validation seeds. A frozen final test reserves 1,024 episodes across four separate seeds and reports numerator, denominator and a 95% Wilson interval. Overall success below 90% can be acceptable when trajectory and failure evidence explain the distribution limits.

Curves, evaluations and videos

Training curve review

# Training curve review

20260913T134249Z_native_corrected_from_start_teacher_seed42; 2621 updates; DR 0.05.

Recent logged training success averages 0.00%; this is not the fixed-quota validation rate.

No learned lifting signal yet: recent average peak clearance is below 1 cm. Rising return alone does not establish grasp progress.

Recent episode length averages 299.9 control ticks. Compare return with length and the return-per-step proxy to distinguish surviving longer from higher reward per tick.

Success remains below 5% and reward per tick is flat across three windows. This is a low-success plateau, not a curriculum-promotion signal. Keep DR fixed and inspect reach/grasp/goal components.

Training continues. DR decisions require the recorded validation gate.

Training curve review

# Training curve review

20260913T100411Z_native_lift_restricted_long_teacher_seed42; 6403 updates; DR 0.05.

Recent logged training success averages 0.00%; this is not the fixed-quota validation rate.

No learned lifting signal yet: recent average peak clearance is below 1 cm. Rising return alone does not establish grasp progress.

Recent episode length averages 300.0 control ticks. Compare return with length and the return-per-step proxy to distinguish surviving longer from higher reward per tick.

Success remains below 5% and reward per tick is flat across three windows. This is a low-success plateau, not a curriculum-promotion signal. Keep DR fixed and inspect reach/grasp/goal components.

Training continues. DR decisions require the recorded validation gate.
Training curves for 20260913T100411Z_native_lift_restricted_long_teacher_seed42
20260913T100411Z_native_lift_restricted_long_teacher_seed42 — checkpoint action-distribution diagnostic; 16 full trials retained; not qualification.
Training curves for 20260913T100411Z_native_lift_restricted_long_teacher_seed42
20260913T100411Z_native_lift_restricted_long_teacher_seed42 — training diagnostics, not held-out success.
Training curves for 20260913T100411Z_native_lift_restricted_long_teacher_seed42
20260913T100411Z_native_lift_restricted_long_teacher_seed42 — validation evidence; full denominators.
Training curves for 20260913T100411Z_native_lift_restricted_long_teacher_seed42
20260913T100411Z_native_lift_restricted_long_teacher_seed42 — training trends and rolling means; not held-out success.
Training curves for saved_exploration_1000_2000
saved_exploration_1000_2000 — conditional command probabilities at saved deterministic states; not stochastic training frequencies or lift-success probabilities.
Training curves for 20260913T134249Z_native_corrected_from_start_teacher_seed42
20260913T134249Z_native_corrected_from_start_teacher_seed42 — training diagnostics, not held-out success.
Training curves for 20260913T134249Z_native_corrected_from_start_teacher_seed42
20260913T134249Z_native_corrected_from_start_teacher_seed42 — validation evidence; full denominators.
Training curves for 20260913T134249Z_native_corrected_from_start_teacher_seed42
20260913T134249Z_native_corrected_from_start_teacher_seed42 — training trends and rolling means; not held-out success.

Evaluation illustration_scale0.05: 0/1 native goal-proximity successes; scale 0.05.

Evaluation scale0.05: 0/384 native goal-proximity successes; scale 0.05.

Evaluation illustration_scale0.05: 0/1 native goal-proximity successes; scale 0.05.

Evaluation scale0.05: 0/384 native goal-proximity successes; scale 0.05.

Evaluation illustration_scale0.05: 0/1 native goal-proximity successes; scale 0.05.

Evaluation scale0.05: 0/384 native goal-proximity successes; scale 0.05.

Evaluation illustration_scale0.05: 0/1 native goal-proximity successes; scale 0.05.

Evaluation scale0.05: 0/384 native goal-proximity successes; scale 0.05.

Evaluation illustration_scale0.05: 0/1 native goal-proximity successes; scale 0.05.

Evaluation scale0.05: 0/384 native goal-proximity successes; scale 0.05.

Evaluation illustration_scale0.05: 0/1 native goal-proximity successes; scale 0.05.

Evaluation scale0.05: 0/384 native goal-proximity successes; scale 0.05.

Evaluation illustration_scale0.05: 0/1 native goal-proximity successes; scale 0.05.

Evaluation scale0.05: 0/384 native goal-proximity successes; scale 0.05.

Evaluation illustration_scale0.05: 0/1 native goal-proximity successes; scale 0.05.

Evaluation scale0.05: 0/384 native goal-proximity successes; scale 0.05.

seed1101_world0 · failure. Curated illustration; excluded from rate denominator. Metadata
seed1101_world0 · failure. Curated illustration; excluded from rate denominator. Metadata
seed1101_world0 · failure. Curated illustration; excluded from rate denominator. Metadata
seed1101_world0 · failure. Curated illustration; excluded from rate denominator. Metadata
seed1101_world0 · failure. Curated illustration; excluded from rate denominator. Metadata
seed1101_world0 · failure. Curated illustration; excluded from rate denominator. Metadata
seed1101_world0 · failure. Curated illustration; excluded from rate denominator. Metadata
seed1101_world0 · failure. Curated illustration; excluded from rate denominator. Metadata
Earlier experiments and diagnostics — archived evidence
Training curves for grasp_mechanics
grasp_mechanics — scripted nominal mechanics diagnostic; all 12 settings; not learned-policy success.
Training curves for gripper_exploration
gripper_exploration — declared nominal checkpoint failure trace; illustration, not a success-rate estimate.
Training curves for initialization_normalization
initialization_normalization — fixed-state actor initialization audit; not task-success evidence.
Training curves for servo_tracking
servo_tracking — controller tracking probes; not learned task success.
Training curves for 20260913T065719Z_native_ppo_resume_audit_seed41
20260913T065719Z_native_ppo_resume_audit_seed41 — training diagnostics, not held-out success.
Training curves for 20260913T070019Z_native_ppo_teacher_seed42
20260913T070019Z_native_ppo_teacher_seed42 — training diagnostics, not held-out success.
Training curves for 20260913T070019Z_native_ppo_teacher_seed42
20260913T070019Z_native_ppo_teacher_seed42 — validation evidence; full denominators.
Training curves for 20260913T070019Z_native_ppo_teacher_seed42
20260913T070019Z_native_ppo_teacher_seed42 — validation evidence; full denominators.
Training curves for 20260913T072133Z_contact_lift_ppo_teacher_seed42
20260913T072133Z_contact_lift_ppo_teacher_seed42 — training diagnostics, not held-out success.
Training curves for 20260913T072133Z_contact_lift_ppo_teacher_seed42
20260913T072133Z_contact_lift_ppo_teacher_seed42 — validation evidence; full denominators.
Training curves for 20260913T072133Z_contact_lift_ppo_teacher_seed42
20260913T072133Z_contact_lift_ppo_teacher_seed42 — validation evidence; full denominators.
Training curves for 20260913T075521Z_servo125_contact_teacher_seed42
20260913T075521Z_servo125_contact_teacher_seed42 — training diagnostics, not held-out success.
Training curves for 20260913T075521Z_servo125_contact_teacher_seed42
20260913T075521Z_servo125_contact_teacher_seed42 — validation evidence; full denominators.
Training curves for 20260913T075521Z_servo125_contact_teacher_seed42
20260913T075521Z_servo125_contact_teacher_seed42 — validation evidence; full denominators.
Training curves for 20260913T081801Z_grasp_geometry_teacher_seed42
20260913T081801Z_grasp_geometry_teacher_seed42 — training diagnostics, not held-out success.
Training curves for 20260913T081801Z_grasp_geometry_teacher_seed42
20260913T081801Z_grasp_geometry_teacher_seed42 — validation evidence; full denominators.
Training curves for 20260913T081801Z_grasp_geometry_teacher_seed42
20260913T081801Z_grasp_geometry_teacher_seed42 — validation evidence; full denominators.
Training curves for 20260913T082948Z_linear_aperture_teacher_seed42
20260913T082948Z_linear_aperture_teacher_seed42 — training diagnostics, not held-out success.
Training curves for 20260913T082948Z_linear_aperture_teacher_seed42
20260913T082948Z_linear_aperture_teacher_seed42 — validation evidence; full denominators.
Training curves for 20260913T082948Z_linear_aperture_teacher_seed42
20260913T082948Z_linear_aperture_teacher_seed42 — validation evidence; full denominators.
Training curves for 20260913T084625Z_bootstrap_ppo_teacher_seed42
20260913T084625Z_bootstrap_ppo_teacher_seed42 — training diagnostics, not held-out success.
Training curves for 20260913T084625Z_bootstrap_ppo_teacher_seed42
20260913T084625Z_bootstrap_ppo_teacher_seed42 — validation evidence; full denominators.
Training curves for 20260913T084625Z_bootstrap_ppo_teacher_seed42
20260913T084625Z_bootstrap_ppo_teacher_seed42 — validation evidence; full denominators.
Training curves for 20260913T092809Z_fixed_grasp_bootstrap_ppo_teacher_seed42
20260913T092809Z_fixed_grasp_bootstrap_ppo_teacher_seed42 — training diagnostics, not held-out success.
Training curves for 20260913T092809Z_fixed_grasp_bootstrap_ppo_teacher_seed42
20260913T092809Z_fixed_grasp_bootstrap_ppo_teacher_seed42 — validation evidence; full denominators.
Training curves for 20260913T092809Z_fixed_grasp_bootstrap_ppo_teacher_seed42
20260913T092809Z_fixed_grasp_bootstrap_ppo_teacher_seed42 — validation evidence; full denominators.
Training curves for 20260913T093744Z_frozen_normalization_grasp_ppo_teacher_seed42
20260913T093744Z_frozen_normalization_grasp_ppo_teacher_seed42 — training diagnostics, not held-out success.
Training curves for 20260913T093744Z_frozen_normalization_grasp_ppo_teacher_seed42
20260913T093744Z_frozen_normalization_grasp_ppo_teacher_seed42 — validation evidence; full denominators.
Training curves for 20260913T093744Z_frozen_normalization_grasp_ppo_teacher_seed42
20260913T093744Z_frozen_normalization_grasp_ppo_teacher_seed42 — validation evidence; full denominators.

evaluation: 384/pending strict grasp-and-hold successes; scale see report.

evaluation: 384/pending strict grasp-and-hold successes; scale see report.

evaluation: 0/pending strict grasp-and-hold successes; scale see report.

learned scripted initialization actor; no PPO yet; not qualified: 0.0/128 strict grasp-and-hold successes; scale 0.05.

learned scripted initialization actor; no PPO yet; not qualified: 0.0/1 strict grasp-and-hold successes; scale 0.0.

learned scripted initialization actor; no PPO yet; not qualified: 0.0/128 strict grasp-and-hold successes; scale 0.05.

learned scripted initialization actor; no PPO yet; not qualified: 0.0/128 strict grasp-and-hold successes; scale 0.05.

scripted restricted-DR initialization source; not learned-policy success: 64.0/64 strict grasp-and-hold successes; scale 0.05.

scripted restricted-DR initialization source; not learned-policy success: 64.0/64 strict grasp-and-hold successes; scale 0.05.

scripted restricted-DR initialization source; not learned-policy success: 64.0/64 strict grasp-and-hold successes; scale 0.05.

scripted restricted-DR initialization source; not learned-policy success: 64.0/64 strict grasp-and-hold successes; scale 0.05.

learned scripted initialization actor; no PPO yet; not qualified: 0.0/128 strict grasp-and-hold successes; scale 0.05.

learned scripted initialization actor; no PPO yet; not qualified: 0.0/128 strict grasp-and-hold successes; scale 0.05.

learned scripted initialization actor; no PPO yet; not qualified: 1.0/128 strict grasp-and-hold successes; scale 0.05.

learned scripted initialization actor; no PPO yet; not qualified: 0.0/128 strict grasp-and-hold successes; scale 0.05.

learned scripted initialization actor; no PPO yet; not qualified: 0.0/128 strict grasp-and-hold successes; scale 0.05.

learned scripted initialization actor; no PPO yet; not qualified: 0.0/128 strict grasp-and-hold successes; scale 0.05.

scripted restricted-DR initialization source; not learned-policy success: 64.0/64 strict grasp-and-hold successes; scale 0.05.

scripted restricted-DR initialization source; not learned-policy success: 64.0/64 strict grasp-and-hold successes; scale 0.05.

guide-labeled actor-mixture initialization source; not standalone learned-policy success: 0.0/64 strict grasp-and-hold successes; scale 0.05.

guide-labeled actor-mixture initialization source; not standalone learned-policy success: 0.0/64 strict grasp-and-hold successes; scale 0.05.

guide-labeled actor-mixture initialization source; not standalone learned-policy success: 0.0/64 strict grasp-and-hold successes; scale 0.05.

guide-labeled actor-mixture initialization source; not standalone learned-policy success: 0.0/64 strict grasp-and-hold successes; scale 0.05.

guide-labeled actor-mixture initialization source; not standalone learned-policy success: 0.0/64 strict grasp-and-hold successes; scale 0.05.

pre-fix infrastructure pilot; not checkpoint-selection evidence: 0/4 strict grasp-and-hold successes; scale 0.0.

Evaluation stopped_nominal: 0/128 strict grasp-and-hold successes; scale 0.0.

Evaluation illustration_scale0: 0/1 strict grasp-and-hold successes; scale 0.0.

Evaluation illustration_scale1: 0/1 strict grasp-and-hold successes; scale 1.0.

Evaluation scale0: 0/128 strict grasp-and-hold successes; scale 0.0.

Evaluation scale0.05: 0/128 strict grasp-and-hold successes; scale 0.05.

Evaluation scale0.15: 0/128 strict grasp-and-hold successes; scale 0.15.

Evaluation scale0.35: 0/128 strict grasp-and-hold successes; scale 0.35.

Evaluation scale0.65: 0/128 strict grasp-and-hold successes; scale 0.65.

Evaluation scale1: 0/384 strict grasp-and-hold successes; scale 1.0.

Evaluation illustration_scale0: 0/1 strict grasp-and-hold successes; scale 0.0.

Evaluation illustration_scale1: 0/1 strict grasp-and-hold successes; scale 1.0.

Evaluation scale0: 0/128 strict grasp-and-hold successes; scale 0.0.

Evaluation scale0.05: 0/128 strict grasp-and-hold successes; scale 0.05.

Evaluation scale0.15: 0/128 strict grasp-and-hold successes; scale 0.15.

Evaluation scale0.35: 0/128 strict grasp-and-hold successes; scale 0.35.

Evaluation scale0.65: 0/128 strict grasp-and-hold successes; scale 0.65.

Evaluation scale1: 0/384 strict grasp-and-hold successes; scale 1.0.

Evaluation illustration_scale0: 0/1 strict grasp-and-hold successes; scale 0.0.

Evaluation illustration_scale1: 0/1 strict grasp-and-hold successes; scale 1.0.

Evaluation scale0: 0/128 strict grasp-and-hold successes; scale 0.0.

Evaluation scale0.05: 0/128 strict grasp-and-hold successes; scale 0.05.

Evaluation scale0.15: 0/128 strict grasp-and-hold successes; scale 0.15.

Evaluation scale0.35: 0/128 strict grasp-and-hold successes; scale 0.35.

Evaluation scale0.65: 0/128 strict grasp-and-hold successes; scale 0.65.

Evaluation scale1: 0/384 strict grasp-and-hold successes; scale 1.0.

Evaluation illustration_scale0: 0/1 strict grasp-and-hold successes; scale 0.0.

Evaluation illustration_scale1: 0/1 strict grasp-and-hold successes; scale 1.0.

Evaluation scale0: 0/128 strict grasp-and-hold successes; scale 0.0.

Evaluation scale0.05: 0/128 strict grasp-and-hold successes; scale 0.05.

Evaluation scale0.15: 0/128 strict grasp-and-hold successes; scale 0.15.

Evaluation scale0.35: 0/128 strict grasp-and-hold successes; scale 0.35.

Evaluation scale0.65: 0/128 strict grasp-and-hold successes; scale 0.65.

Evaluation scale1: 0/384 strict grasp-and-hold successes; scale 1.0.

Evaluation illustration_scale0: 0/1 strict grasp-and-hold successes; scale 0.0.

Evaluation illustration_scale1: 0/1 strict grasp-and-hold successes; scale 1.0.

Evaluation scale0: 0/128 strict grasp-and-hold successes; scale 0.0.

Evaluation scale0.05: 0/128 strict grasp-and-hold successes; scale 0.05.

Evaluation scale0.15: 0/128 strict grasp-and-hold successes; scale 0.15.

Evaluation scale0.35: 0/128 strict grasp-and-hold successes; scale 0.35.

Evaluation scale0.65: 0/128 strict grasp-and-hold successes; scale 0.65.

Evaluation scale1: 0/384 strict grasp-and-hold successes; scale 1.0.

Evaluation illustration_scale0: 0/1 strict grasp-and-hold successes; scale 0.0.

Evaluation illustration_scale1: 0/1 strict grasp-and-hold successes; scale 1.0.

Evaluation scale0: 0/128 strict grasp-and-hold successes; scale 0.0.

Evaluation scale0.05: 0/128 strict grasp-and-hold successes; scale 0.05.

Evaluation scale0.15: 0/128 strict grasp-and-hold successes; scale 0.15.

Evaluation scale0.35: 0/128 strict grasp-and-hold successes; scale 0.35.

Evaluation scale0.65: 0/128 strict grasp-and-hold successes; scale 0.65.

Evaluation scale1: 0/384 strict grasp-and-hold successes; scale 1.0.

Evaluation illustration_scale0: 0/1 strict grasp-and-hold successes; scale 0.0.

Evaluation illustration_scale1: 0/1 strict grasp-and-hold successes; scale 1.0.

Evaluation scale0: 0/128 strict grasp-and-hold successes; scale 0.0.

Evaluation scale0.05: 0/128 strict grasp-and-hold successes; scale 0.05.

Evaluation scale0.15: 0/128 strict grasp-and-hold successes; scale 0.15.

Evaluation scale0.35: 0/128 strict grasp-and-hold successes; scale 0.35.

Evaluation scale0.65: 0/128 strict grasp-and-hold successes; scale 0.65.

Evaluation scale1: 0/384 strict grasp-and-hold successes; scale 1.0.

Evaluation illustration_scale0: 0/1 strict grasp-and-hold successes; scale 0.0.

Evaluation illustration_scale1: 0/1 strict grasp-and-hold successes; scale 1.0.

Evaluation scale0: 0/128 strict grasp-and-hold successes; scale 0.0.

Evaluation scale0.05: 0/128 strict grasp-and-hold successes; scale 0.05.

Evaluation scale0.15: 0/128 strict grasp-and-hold successes; scale 0.15.

Evaluation scale0.35: 0/128 strict grasp-and-hold successes; scale 0.35.

Evaluation scale0.65: 0/128 strict grasp-and-hold successes; scale 0.65.

Evaluation scale1: 0/384 strict grasp-and-hold successes; scale 1.0.

Evaluation illustration_scale0: 0/1 strict grasp-and-hold successes; scale 0.0.

Evaluation illustration_scale1: 0/1 strict grasp-and-hold successes; scale 1.0.

Evaluation scale0: 0/128 strict grasp-and-hold successes; scale 0.0.

Evaluation scale0.05: 0/128 strict grasp-and-hold successes; scale 0.05.

Evaluation scale0.15: 0/128 strict grasp-and-hold successes; scale 0.15.

Evaluation scale0.35: 0/128 strict grasp-and-hold successes; scale 0.35.

Evaluation scale0.65: 0/128 strict grasp-and-hold successes; scale 0.65.

Evaluation scale1: 0/384 strict grasp-and-hold successes; scale 1.0.

Evaluation illustration_scale0: 0/1 strict grasp-and-hold successes; scale 0.0.

Evaluation illustration_scale1: 0/1 strict grasp-and-hold successes; scale 1.0.

Evaluation scale0: 0/128 strict grasp-and-hold successes; scale 0.0.

Evaluation scale0.05: 0/128 strict grasp-and-hold successes; scale 0.05.

Evaluation scale0.15: 0/128 strict grasp-and-hold successes; scale 0.15.

Evaluation scale0.35: 0/128 strict grasp-and-hold successes; scale 0.35.

Evaluation scale0.65: 0/128 strict grasp-and-hold successes; scale 0.65.

Evaluation scale1: 0/384 strict grasp-and-hold successes; scale 1.0.

Evaluation illustration_scale0: 0/1 strict grasp-and-hold successes; scale 0.0.

Evaluation illustration_scale1: 0/1 strict grasp-and-hold successes; scale 1.0.

Evaluation scale0: 0/128 strict grasp-and-hold successes; scale 0.0.

Evaluation scale0.05: 0/128 strict grasp-and-hold successes; scale 0.05.

Evaluation scale0.15: 0/128 strict grasp-and-hold successes; scale 0.15.

Evaluation scale0.35: 0/128 strict grasp-and-hold successes; scale 0.35.

Evaluation scale0.65: 1/128 strict grasp-and-hold successes; scale 0.65.

Evaluation scale1: 3/384 strict grasp-and-hold successes; scale 1.0.

scripted_diagnostic · scripted diagnostic; not learned. Curated illustration; excluded from rate denominator. Metadata
scripted_diagnostic · scripted diagnostic; not learned. Curated illustration; excluded from rate denominator. Metadata
seed1101_world0 · failure. Curated illustration; excluded from rate denominator. Metadata
seed1101_world0 · failure. Curated illustration; excluded from rate denominator. Metadata
seed1101_world0 · failure. Curated illustration; excluded from rate denominator. Metadata
seed1101_world0 · failure. Curated illustration; excluded from rate denominator. Metadata
seed1101_world0 · failure. Curated illustration; excluded from rate denominator. Metadata
seed1101_world0 · failure. Curated illustration; excluded from rate denominator. Metadata
seed1101_world0 · failure. Curated illustration; excluded from rate denominator. Metadata
seed1101_world0 · failure. Curated illustration; excluded from rate denominator. Metadata
seed1101_world0 · failure. Curated illustration; excluded from rate denominator. Metadata
seed1101_world0 · failure. Curated illustration; excluded from rate denominator. Metadata
seed1101_world0 · failure. Curated illustration; excluded from rate denominator. Metadata
seed1101_world0 · failure. Curated illustration; excluded from rate denominator. Metadata
seed1101_world0 · failure. Curated illustration; excluded from rate denominator. Metadata
seed1101_world0 · failure. Curated illustration; excluded from rate denominator. Metadata
seed1101_world0 · failure. Curated illustration; excluded from rate denominator. Metadata
seed1101_world0 · failure. Curated illustration; excluded from rate denominator. Metadata
seed1101_world0 · failure. Curated illustration; excluded from rate denominator. Metadata
seed1101_world0 · failure. Curated illustration; excluded from rate denominator. Metadata
seed1101_world0 · failure. Curated illustration; excluded from rate denominator. Metadata
seed1101_world0 · failure. Curated illustration; excluded from rate denominator. Metadata
seed1101_world0 · failure. Curated illustration; excluded from rate denominator. Metadata
seed1101_world0 · failure. Curated illustration; excluded from rate denominator. Metadata
seed1101_world0 · failure. Curated illustration; excluded from rate denominator. Metadata

Decisions and evidence

Phase 1 progress report · Decision log · Protocol additions

Read experiment insights
# Experiment insights

This log records measured experiments and the decisions they support. No teacher or visual student is qualified yet. See `../context.md` for the inherited simulator baseline.

## 2026-09-13 — native runner audit and first evidence

GPU 1 is available; GPU 0's linux3 service is unrelated. Kept default teacher PPO,
37-float observations, no cameras and native 20 Hz / 1 kHz timing. Two startup
failures (partial-callable serialization and absence of pip in uv environment)
were fixed without simulator changes and retained in the index.

The 12-update seed-41 audit produced finite losses and nonzero finite gradients.
Reload verified exact actor/critic (including normalization) and Adam state,
learning rate and curriculum counter. Cooperative stop saved update 13 at vector
step 312, and reload then continued from update 14 without repeating its counter.
Simulator state and RNG are intentionally a fresh branch; this is not bitwise
trajectory continuation. Initial 4-episode nominal evaluation: 0/4 strict success,
95% Wilson interval [0, 0.490], mean final goal error 0.160 m. This is an early
pipeline check, not teacher qualification.

Code audit found direct evaluation inference bypassed the training wrapper's
component action clamp before previous-action observations were recorded. Added
the same clamp to canonical PPO load_policy so evaluation history matches training.
The initial pilot is retained as pre-fix diagnostic evidence and must not be used
for model selection. Canonical evaluator now also records terminal goal error and
accepts an optional recording callback; its quotas, success predicate, and physics
loop remain unchanged.

Dedicated /rl-training/ page and homepage card deployed using croc/untu_vps.
Initial public hash, existing-route, desktop and mobile QA passed.

Native offscreen recording was checked directly for simulator mutation: zero
change to qpos, qvel and observations across each render call in 30 policy steps.
Independent rendered/unrendered rollouts differed by 0.000600 at most; two
unrendered repeats differed by the same amount. Therefore this is a no-mutation
check on the identical task/controller, not a claim of bitwise replay across
separate GPU runs. The new recorder hides only the fragmented environment scan
in its private rendering model to improve visibility; robot/table/bottle meshes
and all simulator collision geometry remain intact.

## Checkpoint 100 — reward increase is not grasp learning

Seed 42, native PPO, 1024 worlds. Validation at DR 0 and 0.05 both scored 0/128
(strict success, Wilson 95% [0, 0.02914]). Nominal invalidity was 128/128; every
nominal episode had disallowed robot-room contact, peak penetration averaged
3.74 mm, and no bilateral contact or 2 cm lift. Mean final goal error was 0.221 m
(nominal) and 0.187 m (DR 0.05). These failures are not attributed to unreachable
starts. The complete nominal clip shows descent into/past the bottle and contact
with the table, without a controlled grasp/lift. Increasing reach reward alone
must not be interpreted as success. Continue the native baseline to the next
milestone; if contact/lift remains absent, test explicitly recorded grasp/lift
shaping or exploration changes while retaining the exact success predicate.

The publisher's long identifiers initially overflowed on mobile after curves
were added. Wrapping/box sizing was corrected, redeployed and verified. Public
checks passed nine file hashes, existing routes, desktop/mobile layout, and the
15-second pilot video's MIME, byte ranges, duration, seeking and playback.

First milestone complete: primary full teacher DR scored 0/384 over seeds 1101–1103 (Wilson 95% upper bound 0.99%); 49.5% of those episodes were invalid. Five nominal/restricted-DR suites each scored 0/128. All 1,024 validation episodes completed with no filtering. No seed from the final-test set was used. Two separately labeled video episodes are illustrations only. Phase 1 remains unqualified; Phase 2 training has not started.

## Native baseline paused; explicit contact/lift reward experiment launched

The native run stopped gracefully at 333 completed PPO updates (7,992 vector
steps, 8,183,808 transitions), preserving `stopped.pt`. Recent native training
had zero bilateral contact and lift, while entropy had fallen to ~1.58 and the
adaptive learning rate reached 1e-5. This supports testing the learning signal
rather than attributing failures to unreachable starts.

New run `20260913T072133Z_contact_lift_ppo_teacher_seed42` uses the same seed,
1,024 worlds, native PPO settings and teacher DR, initialized fresh. The only
experimental training change is optional `contact-lift-v1` shaping: pad-center
alignment (0.5), valid bilateral contact (0.5), contact-supported clearance (2.0),
and current hold progress (1.0), with native dt scaling. All added terms are
gated by the existing finite/contact/penetration/speed/force validity criteria.
The ordinary success predicate, episodes, physical controller and observations
are unchanged. Two invariant tests confirm the default remains native and
invalid/unilateral lifting cannot earn the contact-lift reward. Initial scaled
updates have finite gradients/losses/KL; task competence remains unproven.

The runner's `max_iterations` metadata inherited 5,000 from MJLab although the
explicit `learn(10000)` budget and progress `total_it` were 10,000. The native
field is unused by the wrapper's learning call. Future launches align these
metadata fields; existing run snapshots are retained exactly as executed.

The paused native checkpoint was re-evaluated nominally: 0/128 strict success, 0.0% invalid episodes, mean goal error 0.160 m, and no 2 cm lift. Avoiding collisions did not produce a grasp, supporting the contact/lift shaping experiment.

## Visual transfer and student infrastructure

The original single-frame ACT weights and outputs are unchanged after extracting
shared exportable features (exact equality). A 16-frame ACT variant accepts only
robot proprioception history, the commanded goal and current 320×200 RGB; its
scripted and eager outputs matched exactly and gradients were finite.

The first teacher-transfer check caught cached observations in the independent
observation manager. After bypassing that cache, all 37 teacher floats and the
resulting clamped actions matched the native state actor exactly over 24 steps
and two worlds. A short canonical visual rollout recorded 18 current image/action
pairs and passed exact causal-history/repeat-first checks. This is diagnostic
only, with zero completed episodes; it is not qualified teacher supervision.

The sharded distillation loop now supports bounded-memory loading, normalization,
validation loss, atomic checkpoints and cooperative stop/resume. A six-update
image optimizer check and its interrupted/resumed counterpart produced exactly
the same final model tensors. These checks do not establish visual task success.

## Controller audit — root cause beyond reward shaping

One-second canonical motion probes found that `max_dq=.001` with independent
joint clipping achieved only 5.7–6.1% of requested ±X displacement. Both requested
Z directions initially moved slightly the wrong way. The IK solver clips a
position correction relative to the measured joints; .001 rad is not an
integrated 1 rad/s velocity limit. Clipping individual joints also distorts the
linearized Cartesian correction direction. This explains a substantial control
bottleneck; earlier failures are not evidence of an unreachable-start ceiling.

An optional .02-rad direction-preserving correction with absolute 8 ms joint-target
deadlines achieved 70.4–73.5% of requested displacement in all six directions,
with peak arm speed below .54 rad/s, penetration below .515 mm and no disallowed
contact in those probes. The same policy is still 20 Hz, physics 1 kHz, and
actuator gains/force limits and all success thresholds are unchanged. Across 850
observed physics steps, actual arm-control writes changed only at the 8 ms
boundaries. A partial reset preserved the shared clock and other worlds' targets.
This matches the legacy 125 Hz target cadence, not a claim of identical IK paths.

The variant is explicit `mjlab-gs-cartesian-v4`; incompatible v3 checkpoint loading
is rejected. Canonical defaults and prior v3 runs retain their original behavior.
Run `20260913T075521Z_servo125_contact_teacher_seed42` now trains with this profile,
the same contact-lift shaping and seed/DR/PPO settings. Prior runs and their
checkpoints remain preserved. Qualification still requires learned task evidence.

The servo/transfer publication passed public QA for 43 files plus preserved
routes, mobile/desktop layout and video duration/seeking/playback. The first
v4 teacher checkpoint still scored 0/128 nominal successes; it is not qualified.
Further diagnosis should include a clearly labeled nominal grasp mechanics
positive-control probe (if needed), later learned checkpoints and grasp aperture/
contact trajectories. Such a probe must never be counted as learned-policy
success or used to filter the evaluation distribution.


## 2026-09-13 — grasp geometry isolated; new RL profile

The 125 Hz controller's first learned checkpoint scored **0/384** on full teacher DR (seeds 1101–1103); invalid episode rate was **89.06%**. Restricted nominal evaluation was also 0/128. These failures do not support attributing low success to unreachable starts. The run was cooperatively stopped after **246 completed updates**, preserving its optimizer/checkpoint and all evaluations.

A separately labeled scripted nominal mechanics grid tested all 12 combinations of pad-site target heights (bottle root +0, +15, +30 mm) and requested apertures (36, 33, 30, 25 mm). Root and +15 mm targets all exceeded the unchanged 3 mm penetration limit (5.26–8.37 mm). All four +30 mm targets achieved strict valid holds of 7.40–8.46 s, with peak penetration 0.514–1.473 mm. This establishes a feasible nominal grasp and identifies a conflict in the old pad-to-root shaping. It is **not learned-policy evaluation, a randomized performance estimate, or a reachability classifier**. Physics continues for diagnostic traces after any hard termination; validity is never reset. All planned settings are retained in `results/comparisons/grasp_mechanics/aperture_grid`.

Launched `20260913T081801Z_grasp_geometry_teacher_seed42`, fresh native PPO with `grasp-geometry-v2`. The new profile uses a pad midpoint target 30 mm along the bottle's local Z axis, broad/fine approach rewards, and a smooth measured-aperture incentive (open when distant, 33 mm when aligned). It replaces the old broad TCP-to-root reward and retains native goal/regularization/curriculum terms. Valid bilateral contact, lift and hold provide stronger rewards. Reward changes do not alter strict success, termination, scene, gains, randomization or sampling. Six reward/contract tests pass, including rotated-bottle geometry and invalid-episode reward suppression. PPO gradients and losses are finite in the new run. This teacher remains unqualified.

Two native-rendered scripted videos show the successful raised target and the invalid root target. Their labels explicitly distinguish mechanics diagnostics from learned policies. The image student remains at infrastructure-only checks pending teacher competence.


The student closed-loop adapter completed two full 15 s canonical visual episodes (600 steps, 74.1 s wall time), including an actual between-episode history reset. A partial-reset/causality test also passed with poisoned critic inputs. Diagnostic weights scored 0/2, as expected for unqualified infrastructure weights; every trial counted. These weights use their original v3 controller contract and cannot be treated as the intended v4 final export. Full protocol and episode evidence are in `results/student/infrastructure/closed_loop_reset_check/`.


## 2026-09-13 — aperture exploration comparison

Geometry-v2 checkpoint 100 produced **0/128** nominal strict successes with **0/128 invalid episodes** and zero bilateral contact. A separately declared full 15 s nominal trace (seed 1101, one episode; `results/comparisons/gripper_exploration/model100_nominal`) showed gripper action +1 throughout and measured spacing about 100.46 mm. The policy reached toward the bottle but never closed. The narrow Gaussian aperture reward has almost no value at that observed spacing when the target is near 33 mm, leaving a poor exploration signal.

Kept geometry-v2 running on GPU 1 as a comparison and launched fresh PPO `20260913T082948Z_linear_aperture_teacher_seed42` on available GPU 0 capacity. `grasp-aperture-v3` changes only the aperture reward kernel to bounded linear absolute-error progress over the 100.8 mm range. Its weight, all other reward terms, strict objective, controller and distribution match v2. The test confirms incremental reward for closure from the observed open state. This is a hypothesis under test, not a success claim. The unrelated GPU 0 service remains untouched. Both runs retain independent checkpoints/source/configs and monitored evaluation.

Two EPA horizon-capacity warnings appeared in the new run's early stdout; retain these logs and inspect whether they recur or affect contact validity before selecting a final policy. No simulator collision tolerance or capacity has been changed in response.


Source inspection confirms the EPA warning sets MuJoCo-Warp's per-world `EPA_HORIZON` overflow flag and exits that contact solve without a valid face. The flag persists until world reset. New evaluations now retain `physics_overflow_bits` for each completed trial, in addition to the unchanged ordinary success result and complete denominator. This enables a contact-fidelity audit; previous evaluations lack this field and must not be assumed overflow-free merely because they lack the new metadata.


## 2026-09-13 — scripted initialization source for continued RL

While retaining both uninitialized PPO comparisons, tested the verified raised-target scripted guide at teacher DR scale 0.05. It completed **64/64** strict successes on seed 2501 and **64/64** on seed 2502, all full 15 s episodes, with all 38,400 state/action pairs retained. These are scripted restricted-DR results, not learned-policy success or reachability estimates. The source uses canonical physics/controller and the same objective.

Fitted the native 37-state MLP actor to seed 2501 with seed 2502 supervision validation. All trajectories remain in the data; the loss explicitly balances five guide phases so long stationary holds do not dominate short closure transitions. Best validation action MAE was about 0.010, which does not prove closed-loop performance. A third-seed closed-loop evaluation is now running. This optional initialization keeps the eventual teacher an RL-trained policy: the native PPO critic/optimizer/counter start fresh, actor and normalization are loaded explicitly with a 0.15 initial exploration standard deviation, and the original full held-out teacher qualification remains required. No image-policy training or qualification is implied.


The fitted bootstrap actor's independent scale-0.05 closed-loop evaluation (seed 2504) was **0/128**, with 89.06% invalid episodes, mean peak penetration 3.468 mm, and mean bilateral-contact fraction 2.54%. Low supervised error did not establish closed-loop success. Both scripted source batches had zero physics overflow flags and peak penetration below 0.525 mm.

Launched `20260913T084625Z_bootstrap_ppo_teacher_seed42` on GPU 1 to test whether native PPO can refine the initialized actor's contact behavior. The audit verifies exact actor/normalization load, unchanged fresh critic, empty Adam state and zero counters. The script itself is not used at inference in this run: all rollout actions come from the learned stochastic state actor. The exploration standard deviation starts at 0.15 and is learned by PPO. Geometry-v2 has a cooperative stop scheduled after checkpoint 500, preserving that complete comparison milestone; linear-aperture-v3 continues separately on GPU 0. None is qualified.

The uninitialized linear-aperture checkpoint 100 also completed **0/384** full-DR successes with **97.40%** invalid episodes; nominal and scale 0.05 were each 0/128 with all episodes invalid. Retain these failures as evidence that dense aperture reward alone has not solved the grasp. Both milestone suites preserve all planned scale/seed trials and their success/failure videos.


## 2026-09-13 — corrective data for a state-actor initialization

The timed-guide initialization followed by PPO reverted to a wide, non-grasping aperture: checkpoint 100 was 0/128 nominal with no invalid episodes. Geometry-v2 checkpoint 500 likewise remained 0/128 nominal. Geometry-v2 stopped cleanly at 502 completed updates; linear-aperture-v3 stopped at 536, preserving checkpoint 500 and later stopped checkpoints. Their complete final milestone suites remain running and publishing.

A pose/contact-driven guide was introduced to test whether hidden fixed waits were contributing to imitation failure. It advances on measured alignment and six consecutive bilateral-contact control steps, with reopen/reacquire logic if contact is lost back at table level. It completed 64/64 strict successes on each of seeds 2505 and 2506 at scale 0.05. This remains a scripted source, not learned-policy qualification.

A native actor fitted with canonical observation noise and declared motion/closure-balanced loss reached 10 cm in **52/128** independent trials (seed 2507), but scored **0/128 strict successes**, with 115 invalid episodes and 43 drops. Corrective guide labels were then collected on a 50/50 action blend (seed 2508, 0/64 successes; all data retained). The next actor was 0/128 with 16 invalid episodes (seed 2509). A further policy-only rollout collection with guide labels (seed 2510, 0/64) produced a second corrective-data actor with **1/128 strict successes and zero invalid episodes** on seed 2511. Most trials still did not grasp. These are unqualified initialization experiments; ordinary denominators and all failures are retained.

A bounded three-round continuation now collects labels on the actor's own states, refits using all accumulated data, and evaluates on distinct seeds (2512–2517). Progress, child process identity and commands are recorded in `results/teacher/bootstrap/dagger_loop/progress.json`. Even a useful initialization must subsequently undergo native PPO and the entire original teacher qualification protocol. No image-policy training or final export has started.

A separate owned status writer now refreshes `insights/status.md` and the run index every 30 s, preventing long synchronous evaluation/publication jobs from leaving local status stale. It is recorded in `results/status_job.json` and can be stopped using `results/STATUS_STOP`.


Concurrent milestone publishers exposed a verification race: another completed milestone changed `index.html` between a verifier's manifest read and HTTP hash check. The publication lock already covered build/transfer/deploy; verification now holds the same lock in shared mode through all hash/browser checks. Publishers must wait for active audits, and verifiers wait for deployment completion. Failed audit logs remain recorded; monitors retry using the corrected verifier. Existing pages were not replaced by this failure.


## 2026-09-13 — fixed orientation and lower-noise PPO continuation

The bounded corrective-data continuation completed rounds 3–5, each with 0/128 strict successes (invalid rates 74.22%, 0%, 10.94%, respectively). No initialization was promoted. A guide with a fixed base-frame nominal orientation, computed by FK only, then completed 128/128 scripted scale-0.05 successes across seeds 2520–2521. This removes the previous guide's episode-specific orientation target; no new physics loop is used.

Two native actor checkpoints fitted to this source were tested on seed 2523. Global-MAE selection scored 0/128 strict success, with 75/128 reaching 10 cm; phase-balanced selection was also 0/128, with 70/128 reaching 10 cm. Both had all episodes invalid. The global fit's mean peak penetration was 6.731 mm. A separate nominal trace shows loss of grasp alignment, reopening and dropping: the first >3 mm penetration occurred at 4.3 s with an open command of +0.640 and 81.4 mm spacing, following a lost grasp. The peak penetration is therefore not adequately explained as simply too much gripper closure. The trace and all failures are retained.

Launched `20260913T092809Z_fixed_grasp_bootstrap_ppo_teacher_seed42` on GPU 0, using that global-fit actor with Gaussian exploration initialized to 0.05. Only the distribution standard-deviation parameters changed in `actor_rl_start.pt`; the actor mean and normalization are identical to the fitted source. This run uses clean privileged actor observations (`actor_observation_corruption=false`), with the same 37-value observation ordering, physical DR, controller, reward and strict objective. The change is explicit in config/task/source snapshots. Load audit passed for actor/normalization, fresh critic, fresh optimizer and zero counters. Early PPO updates have not yet established a successful teacher. The earlier timed-bootstrap PPO has a cooperative stop after its checkpoint-500 comparison.

The publication concurrency fix is verified: all three completed PPO milestones successfully republished and passed QA after their retained initial race failures. The latest explicit public audit passed **148 file hashes**, responsive desktop/mobile layout, **19 video seek/playback checks**, and preservation of the existing project routes. Future audits hold the shared publication lock throughout verification.


## 2026-09-13 — pretrained normalization drift isolated and fixed

A controlled fixed-state audit exposed a major problem in the earlier PPO initializations. After the very first PPO rollout/update, the actor normalizer's count changed from 19,200 fitted demonstration states to 43,776 states dominated by the initial rollout. Transplanting only those updated normalization buffers into the unchanged fitted actor increased raw normalized-action MAE on the fixed source-validation states from **0.01048 to 0.46952**. The actual first PPO checkpoint was **0.75009**. This isolates a change of input scale; it is not evidence of task success or a reachability limitation.

Launched `20260913T093744Z_frozen_normalization_grasp_ppo_teacher_seed42`, preserving the fitted actor normalization (`until=0` on the native normalizer) and using initial PPO learning rate 1e-4 rather than 1e-3. The critic normalizer remains trainable. The first real PPO checkpoint retained every actor normalization buffer exactly (count 19,200); the isolated normalization-only action shift was zero, and the actual update's mean applied-action shift was **0.00474**. Mean predicted-action MAE was **0.01268**. The loaded actor/normalization, fresh critic/Adam/counters and configured freeze all passed audit. Freeze is reapplied on resume; normalization tensors remain part of the saved checkpoint.

The superseded unfrozen run was cooperatively stopped, preserving its evidence. The corrected run is live on GPU 0 with clean privileged observations, initial exploration standard deviation 0.05, the same 37-state ordering, v4 control, physical DR and strict objective. It is still unqualified. Audit data and source are in `results/comparisons/initialization_normalization/`; held-out task qualification and the final image export remain outstanding.

## User-directed native lift baseline (2026-09-13, 10:04 UTC)

The user requested native lift-cube-style rewards and success, restricted DR, and sustained training without unnecessary restarts. This supersedes the earlier strict-hold primary criterion and time-driven DR schedule for new experiments. Old results retain their original definition.

- Run: `20260913T100411Z_native_lift_restricted_long_teacher_seed42`; fresh native PPO, no BC initialization or grasp reward additions; 1,024 worlds on cuda:1; 20,000 updates, checkpoints every 500.
- Native staged reach/bring reward, precise goal reward, and native action/joint regularization curriculum. Success is the actual inherited command episode latch for bottle-root distance < 5 cm to the goal. The former strict grasp-and-hold state remains a labeled diagnostic, not the primary gate.
- DR stays enabled with no nominal mixing, initially fixed at scale 0.05. Bottle table-local X is approximately [0.1540,0.1880] m and Y [-0.1326,-0.1144] m; table translation ±7.5 mm, base translation ±5 mm, table/base yaw ±0.75 degrees, initial arm perturbations ±[0.75,0.5,0.5,0.75,0.75,1.5] degrees. Physics randomization and randomized goals remain active. This is a small declared distribution, not a filtered reachable-only metric.
- Every 1,000 updates evaluate 128 trials each on seeds 1101–1103, all counted. Two consecutive complete evaluations at the same stage must both exceed 90%, with rates within 3 percentage points. Only then advance one stage through [0.05,0.10,0.15,0.25,0.35,0.50,0.65,0.80,1.0]. Changes apply on subsequent resets, without restarting the learner.
- No performance-based early stop. Continue the 20,000-update run unless explicitly redirected or a process/numerical failure prevents training. The old run was cooperatively stopped at 190 updates solely to enact the user's requested change.
- Pre-change evidence: frozen-normalization checkpoint 100 lifted above 10 cm in 15/128 nominal trials, but had 0/128 strict-hold successes. These numbers are not relabeled under the new criterion.

Canonical `objective.primary_success` selects the declared metric. Task spec is `bottle-lift-v6-native-goal` for new native-goal experiments; the legacy mode remains the default for old presets. Fixed evaluation quotas, raw invalidity and drop measurements remain. Native-success and old strict-success rates must not be pooled or plotted as if identical.

## Ongoing curve interpretation (user direction, 2026-09-13)

A read-only monitor now refreshes plots and written diagnoses every 100 PPO updates. It compares three 100-update windows within the current DR stage, tracking native success, return per control-tick proxy, episode length, peak lift, penetration, KL, learning rate and exploration standard deviation. Low-success plateaus, high-success saturation candidates and possible regressions are distinct labels. Histories shorter than 300 updates are explicitly insufficient for sustained plateau claims. These are heuristic prompts for inspecting the curves, not proof of stationarity or authority to stop training.

Curve publications are scheduled every 500 updates; fixed-quota evaluations remain every 1,000. The learner continues throughout. DR promotion still needs two complete >90% validation results at the same scale with rates within three percentage points. Reviews are stored under each run's `analysis/`, preserving per-update JSON records and a current Markdown review.

First visual review (82 updates): reward per step increased as well as episode duration, so the return gain is not solely longer survival. Recent penetration fell toward 1 mm; minibatch KL stayed near its 0.01 target and exploration std remained about 0.84 at the latest plotted point. However, native success remained zero and mean peak clearance was approximately 0.5 mm. This is early shaping/behavior improvement, not learned lifting or saturation. Keep training and DR unchanged. Plot: current run `plots/training_trends.png`; numerical review: `analysis/update000082.json`.

## Low-success plateau and gripper saturation (2026-09-13, checkpoint 1500)

The native-reward long run continues at DR 0.05. Checkpoint 1000 completed all 384 validation trials: 0 native-goal successes, 0 lifts above 2 cm, no invalid episodes. Return has plateaued near 25.44 with full 300-tick episodes. The last three 100-update windows have zero success and essentially unchanged 0.5 mm mean peak clearance. This is a stable low-success plateau, not instability or successful saturation.

A complete, declared 16-world checkpoint-1500 diagnostic found the gripper Gaussian mean in [2.7388,3.7502], while the applied action is clamped to [−1,+1]. Its standard deviation is 0.5353. The median analytical probability of drawing an action below −0.5 is approximately 2.3e−13 at observed clean-state deterministic rollout states; this is not an estimate of stochastic training success or a forecast of future PPO updates. All deterministic gripper means exceed the fully-open bound. The RZ mean also exceeds +1 throughout. Translation-axis standard deviations are only 0.025–0.038, which the single averaged exploration statistic conceals.

TCP approaches the bottle root and the pad midpoint sits approximately 2–3 cm above it; the gripper stays at about 100.46 mm aperture. Video and trajectory agree that the policy reaches but does not close. The native reward implementation is unchanged. The action-clipping/exploration interaction is now a concrete failure mechanism to track; it is not evidence of unreachable starts.

No learner restart, reward change or DR widening was made. Continue the requested long baseline and compare subsequent checkpoint evaluations and action distributions before deciding on a necessary correction. Evidence: current run `analysis/action_distribution_model1500_retry1/{audit,trajectory}.json`, `plots/action_bound_saturation.png`, and `evaluations/validation_model1000/scale0.05/summary.json`. An initial audit attempt failed before stepping because its model constructor received an unused CNN config field; its log remains preserved, and the corrected audit completed all trials.

## Native adapter correction at update 2056 (2026-09-13, 11:57 UTC)

Checkpoint 2000 again scored 0/384 native-goal successes, with no 2 cm lifts, confirming the sustained open-gripper plateau. Two concrete adaptations were corrected after controlled diagnostics, without resetting learned weights or starting another run.

1. The native joint-speed hinge now selects the six UR5 arm joints. Native YAM finger joints are prismatic; RG2 has six angular linkage joints. The same 0.5 threshold applied to those linkages imposed a large closure cost. In 16 scripted successful low-DR trials, the all-joint speed penalty contributed −19.3576 return, leaving total return 18.0542 and discounted return −2.6568. Arm-only selection gave return 37.4120 and discounted return 10.0007, with 16/16 successful grasps in both cases. The learned no-grasp policy earned about 25.44. These are scripted reward diagnostics, not learned successes. Separate GPU replays differed by up to 0.096 mm, so the initially requested 1 micrometre trajectory-identity check failed and is retained; same-trajectory reward-component accounting independently establishes the penalty size.
2. Gaussian action means now pass through tanh so they stay within the normalized action range. The underlying Gaussian sampling, log probabilities and PPO remain; samples still use the existing action clamp. This directly addresses means above +3 being clamped to fully open, with effectively no closure exploration. This is a bounded-mean Gaussian, not a tanh-squashed sample distribution.

All native reach/bring and goal reward terms and weights, the speed-weight curriculum, native 5 cm goal success, DR 0.05, controller, physics and observations remain. There are no extra grasp bonuses. The 20,000-update target remains.

The same managed run was cooperatively stopped after update 2056 and resumed with exact actor/critic tensors, normalization, Adam state, learning rate and counters restored. Resuming starts fresh simulator episodes and an explicitly new RNG branch. The pre-change checkpoint SHA256 is `f2248d3df43e1809083d358bac6dec84718807bfb69e94d66873472c58a764ad`; its copy, old/new configs and source snapshot are under `source/revisions/native_adapter_v1/`. The transition validator permits only the declared speed-penalty selector difference; the changed distribution is explicitly configured. A separate test verified actual canonical inference and a finite PPO update before the pause. The actual managed resume checks all passed.

Old checkpoints keep their original actor and reward configuration when evaluated. New checkpoints embed actor and launch metadata. Training plots mark the correction and window-based plateau analysis restarts at the revision boundary, avoiding comparisons of different reward settings. Current authoritative config: the run's `launch.json`; fresh reproduction config: `configs/teacher_native_adapter_long_seed42.json`. This necessary adaptation correction is the single exception to leaving this long baseline untouched; it is not a claim of task reliability. Continue training and inspect the scheduled evaluations.

Early post-correction observation (updates 2127–2129, 71–73 updates after the revision): logged bilateral-contact fraction is approximately 3.7–6.6%, compared with zero in the checkpoint-1000 evaluation. Mean peak clearance is only about 1.3–1.5 mm and training success remains zero. Contact exploration has reappeared, but this is not lifting competence or held-out improvement. Continue the run and use the next scheduled full-quota evaluation. Contact fraction and goal reward are now included in the periodic trend plots.

## Curve review at update 2402 (2026-09-13, 12:24 UTC)

Reviewed the actual trend plot and three post-revision 100-update windows, ending at updates 2202, 2302 and 2402. Native training success is zero in all three. Mean return rises 22.20 → 25.27 → 25.40, while episode duration reaches the full 300 ticks. Return per tick rises 0.07654 → 0.08425 → 0.08469: the most recent gain is only about 0.53%. This is approaching another low-success plateau; the automated three-window label remains mixed trends because the earliest window includes recovery from the adapter transition.

The early contact increase did not persist: mean bilateral-contact fraction declines 2.22% → approximately zero → zero, and mean peak clearance declines 0.944 → 0.500 → 0.500 mm. Thus reward recovery is not evidence of learned grasping. Mean KL remains 0.0110 → 0.0104 → 0.0107, with occasional spikes but no sustained divergence visible in these curves. Mean policy standard deviation falls 0.239 → 0.213 → 0.139; reduced exploration is a concern to inspect by action dimension at a later saved checkpoint, not proof of the exact failure mechanism.

Decision: retain the same learner, reward, controller and DR 0.05. No stop, restart or DR promotion. Next scheduled validation is checkpoint 3000, with every trial counted. The last completed validation remains checkpoint 2000: 0/384 native-goal successes; the post-correction training curves are not a replacement evaluation. Evidence: current run `analysis/update002402.json` and `plots/training_trends.png`. Periodic analysis/publication monitors and the learner were verified live.

## Checkpoint 2500: exploration contraction confirmed (2026-09-13)

The read-only, 16-trial action diagnostic at seed 1101 and DR 0.05 completed all trials: 0/16 native-goal successes, no 2 cm lifts, no invalid episodes. This small diagnostic is not the 384-trial validation suite. New checkpoint metadata correctly embeds the bounded-mean actor, native-arm-speed reward profile, DR 0.05 and optimizer state. SHA256: `3af15cbaf1c760b86a531a71489054e43cd32352c07f242f5bdae81bf6a25bd0`.

All deterministic action means are now within [-1,1], verifying the intended bounded-mean behavior. Nevertheless, gripper standard deviation contracted from 0.5353 at checkpoint 1500 to 0.1221 at checkpoint 2500. Its mean stays in [0.3802,0.99999] on these rollouts. Median analytical probability of a command below -0.5 is approximately 5.36e-35 at these observed clean-state deterministic rollout states. This is not a stochastic training success estimate. It shows that bounding the mean did not preserve closure exploration as PPO reduced its learned standard deviation. Per-action standard deviations in dx/dy/dz/rx/ry/rz/gripper order are [0.0387,0.0423,0.0402,0.0770,0.0790,0.2432,0.1221].

The update-2507 curve review now classifies a low-success plateau across three comparable 100-update windows. Numerical divergence does not explain the measured open-gripper behavior; the action evidence supports loss of useful closure exploration. It does not prove that more updates will escape this behavior. Decision: keep the user's long run active and DR fixed through the scheduled checkpoint-3000 validation; no new learner, extra video, reward edit or restart in this review. Preserve this evidence when judging whether a subsequent correction is necessary.

Evidence: current run `analysis/action_distribution_model2500/{audit,trajectory}.json` and `source.py`, `analysis/update002507.json`, and checkpoint `checkpoints/model_2500.pt`. The diagnostic uses each checkpoint's recorded launch/reward/distribution metadata; older checkpoints retain the archived pre-revision configuration.

## Checkpoint 3000 and gripper exploration floor (2026-09-13, 13:06 UTC)

The long run reached checkpoint 3000 without another interruption after update 2056. Full restricted-DR validation completed all 384 trials at scale 0.05: **0/384 native-goal successes**, Wilson 95% interval [0%, 0.9905%], no lifts above 2 cm, no invalid episodes, mean peak clearance 0.500 mm and mean final goal error 0.1592 m. Checkpoint SHA256: `c9f2cbeb0acdd243100492bf102dd646f78e8c34892fbe8619547b808ed154ac`. The ordinary success denominator remains intact.

Three-window curve reviews through update 3004 consistently identify a low-success plateau, with average policy std below 0.05. The checkpoint's per-action learned std is [0.0213, 0.0230, 0.0203, 0.0354, 0.0311, 0.0832, 0.0562]. Gripper std declined from 0.535 at checkpoint 1500 to 0.122 at 2500 and 0.056 at 3000. The earlier complete action diagnostic directly showed a fully open mean-policy gripper. Longer training in this window did not establish lifting or recover useful exploration.

A targeted correction adds a minimum effective Gaussian std of **0.5 for the gripper only**. Arm-action distributions, deterministic mean function, rewards, success definition, physics, controller, observations and DR remain unchanged. No actor weights or learned std parameters are reset. The floor is explicit actor configuration; Gaussian sampling, likelihood, entropy and KL all use the effective std. Diagnostic scripts now distinguish learned std parameters from the effective std used for sampling. Old configurations have no floor, preserving old checkpoint behavior.

Before the transition, `results/teacher/infrastructure/gripper_floor_resume_check/audit.json` passed exact actor/critic/Adam loading, task-spec identity, identical deterministic actions, unchanged six arm-action std values, correct gripper floor and Gaussian likelihood, canonical inference, and a real finite PPO update. These are infrastructure checks, not task success.

The same run was cooperatively stopped after **3069 completed updates** and resumed. The actual resume audit `resume_verification_update3069.json` passes exact actor/critic (including normalization), optimizer, learning-rate and counter restoration; fresh simulator episodes and a new RNG branch are explicitly recorded. Source checkpoint SHA256: `48c660288fcb451f83b27bc7ba160c160183436078b4d50adb3824898bda29bd`. Configs, source snapshot and lineage are retained under `source/revisions/gripper_exploration_floor_v1/`. Current config is the run's `launch.json`; fresh reproduction config is `configs/teacher_gripper_floor_long_seed42.json`.

Decision: continue this same 20,000-update run at DR 0.05. Do not stop for early post-transition return fluctuations. The next complete validation is checkpoint 4000; no DR promotion or teacher qualification has occurred. The numerical effect of the floor is proven; its usefulness for learning remains to be measured.

## Post-floor curve review at update 3405 (2026-09-13)

Reviewed the plot and three 100-update windows after the gripper-floor revision. Native training success is zero in every window. Return per tick is essentially flat: 0.084247, 0.084367, 0.084235. Mean episode return is 25.13, 25.25, 24.96, with nearly full-length episodes. Mean KL is 0.0110, 0.0112, 0.0114: no sustained numerical divergence is apparent.

Average effective action std now increases 0.111 → 0.128 → 0.150, unlike the preceding contraction. However, mean peak clearance is 0.757 → 0.536 → 0.507 mm, and bilateral-contact fraction is only 0.0376% → 0.00581% → 0.00228%. Restoring exploration has not yet produced learned lifting. This remains a low-success plateau; greater noise alone is not competence.

An inspection of the existing checkpoint-3000 failure traces (the first world for each of three validation seeds, not the whole validation distribution) also shows substantial wrist rotation. TCP Z-axis direction changes by approximately 31–37 degrees from its initial direction by episode end; total frame rotation is mostly larger yaw rotation. The saved video frame at 8 s still shows an open gripper over the bottle. These observations are secondary behavioral evidence, not proof that orientation is the cause or a reason to change control. No new video or learner was created for this review.

Decision: continue the same run and DR 0.05 through the scheduled checkpoint-4000 validation. Do not stop or retune based on this early post-floor review. Public deployment of the floor decision and checkpoint-3000 evidence passed 213-file hash verification, desktop/mobile and video checks, and preserved the existing routes; receipt `site_publish/qa/publication-20260913-091334.json`.

Evidence: current run `analysis/update003405.json`, `plots/training_trends.png`, checkpoint-3000 validation trace sidecars, and `analysis/checkpoint3000_at8s.png`.

## One clean initialization of the corrected task (2026-09-13, 13:42 UTC)

The continuing run still reports zero success after the gripper-floor revision. Its learned actor originated under the earlier all-joint speed penalty and developed saturated open-gripper means before corrections. Preserving its exact weights and optimizer also preserves that training history. Rather than making another change to that live learner, one clean native PPO initialization is now training alongside it: `20260913T134249Z_native_corrected_from_start_teacher_seed42` on GPU 0. The original run stays active on GPU 1.

The clean run uses the same corrected task, actor architecture/distribution, controller, native goal success, restricted DR 0.05, seed 42, 1,024 worlds and 20,000-update target. Arm-only speed regularization, bounded Gaussian means and the gripper std floor 0.5 are present from update zero. No demonstrations, bootstrap actor or checkpoint are loaded. Actor, critic, normalization, Adam and native curriculum counters start fresh. The native speed-weight ramp consequently starts at its first stage. This is not a controlled one-factor ablation; its purpose is to see whether learning the corrected task from the beginning can escape the continued policy's behavior.

`initialization_provenance.json` verifies no resume or bootstrap, a zero starting counter, and equality of the saved task specification and actor configuration with corrected continuing checkpoint 3500. The first saved checkpoint hash is `1334804815ff889b1b19d7b6bed452dbb56fff4ce88d98ffbdca13b5c73e6b27`. Initial PPO updates are finite. This establishes a valid start, not teacher success.

Config: `configs/teacher_native_corrected_from_start_seed42.json`. Full validation remains 384 unfiltered trials every 1,000 updates, with the same seeds and >90% two-evaluation DR gate. Its evaluator uses GPU 1; the original evaluator uses GPU 0. Both keep training during evaluation. Separate run-specific curve and milestone monitors are active; all outputs remain organized by run under `results/teacher/runs/`. No new variants or per-update videos are scheduled. Phase 1 is still incomplete.

## Checkpoint 4000: no measured improvement yet (2026-09-13)

The continuing run completed all **384/384** restricted-DR validation trials at scale 0.05: **0 successes**, no 2 cm lifts, no invalid episodes, mean peak clearance 0.500 mm and mean final goal error 0.16047 m. The native-goal success Wilson 95% interval is [0%, 0.9905%]. Checkpoint SHA256: `c8900a000823e670758ad8d6d323e842acd2ecdbafd36994dd112a1f1364b115`. No starts were excluded.

This is the first scheduled full validation after the gripper-floor revision at completed update 3069. The floor's implementation and checkpoint persistence are verified, but its task benefit is not: the measured result remains zero. The continuing run's curves through update 3806 still classify a low-success plateau with KL near its target. The clean initialization is also still in early training, with zero logged success at its 303-update review; it has not reached its first full validation.

Decision: retain both 20,000-update runs with the same corrected task and DR 0.05. Do not make another change on this result while the clean initialization accumulates its first substantial training window. Its first full validation is checkpoint 1000; the continuing run's next validation is checkpoint 5000. Neither run is promoted, teacher qualification remains incomplete, and the final held-out seed set stays reserved. Scheduled publication includes the full result and the usual single complete-episode illustration; no additional video jobs are requested.

Evidence: continuing run `evaluations/validation_model4000/scale0.05/{summary,protocol}.json` and complete episode records; clean run `20260913T134249Z_native_corrected_from_start_teacher_seed42`.

## Gripper reference geometry audit — no training change (2026-09-13)

A canonical-asset FK-only check measured the RG2 pad midpoint relative to its fixed TCP. With nominal downward orientation, the midpoint is 26.48 mm above the TCP when open and 8.30 mm below it at the calibrated 33 mm aperture (normalized gripper action -0.503). Thus closure moves the pad midpoint approximately 34.77 mm relative to the TCP. Maintaining the earlier neck-level pad target at bottle root +30 mm would require the TCP to be approximately +3.52 mm when open and +38.30 mm when closed. The native reaching Gaussian at the latter alignment is 0.964, versus 0.9997 when open.

This is geometry evidence, not proof that the native reward prevents grasping. The retained earlier aperture grid (`results/comparisons/grasp_mechanics/aperture_grid/summary.json`) already lifted the bottle approximately 14.7–15.0 cm with pad targets at the bottle root. Those trials failed the old strict penetration criterion, with roughly 7.7–8.4 mm peak penetration; their old success labels are not changed. The root is within the bottle body, not the table plane. A moving pad reference could be a later shaping choice, but the FK shift alone does not justify another correction or an impossibility claim.

Decision: no reward, observation, controller, metric or DR change. Continue both current long runs. Audit: `results/teacher/infrastructure/gripper_reference_fk/{audit.json,source.py}`; canonical robot `entity_spec` was compiled and forward kinematics evaluated, with no physics stepping or robot control.

## Native action regularization has different semantics here (2026-09-13)

The pinned native lift-cube task uses `JointPositionActionCfg` with a fixed default offset. Our canonical interface uses Cartesian position/orientation increments at 20 Hz. The copied `action_rate_l2` computes only the squared difference between successive raw commands. Repeating an absolute joint target holds the requested target; repeating a nonzero Cartesian rotation increment continues requesting rotation, while its action-rate cost is zero after the first step. The UR5 arm speed hinge still penalizes actual joint speeds above 0.5 rad/s, so this is not a claim that all motion is unpenalized.

This source-level difference is consistent with the persistent rotation visible in failure traces, but it does not prove the cause of zero lifting. A motion-magnitude or full arm-velocity penalty would be a separately declared later experiment, not a silent interpretation of the existing native coefficient. Decision: no reward or control change on this observation alone. Both current 20,000-update runs remain active with their recorded settings and ordinary unfiltered validation.

Sources: canonical `mjlab/src/mjlab/tasks/manipulation/lift_cube_env_cfg.py`, `mjlab/src/mjlab/tasks/manipulation/config/yam/env_cfgs.py`, `mjlab/src/mjlab/envs/mdp/rewards.py`, and `src/mjlab_gs/tasks/{actions,config}.py`.

## Corrected-from-start checkpoint 1000: complete evaluation (2026-09-13)

The clean run `20260913T134249Z_native_corrected_from_start_teacher_seed42` completed all 384 restricted-DR validation trials at scale 0.05: **0/384 native-goal successes**, zero lifts above 2 cm, no bilateral grasp contact in any trial, no invalid episodes, and 384 timeouts. Mean peak clearance is 0.500 mm and mean final goal error is 0.16047 m. The Wilson 95% success interval is [0%, 0.9905%]. Raw per-seed episode rows were checked against the complete aggregate; no starts were excluded. Checkpoint SHA256: `58d0c3b27061c431dde107c2673d1d64f94c12957941aaa34130f88c4037fffb`.

The three existing world-0 traces show a brief initial closure, followed by a fully open command from 0.65–0.80 s onward. Gripper commands exceed +0.9 for 95–96% of recorded frames; none of these traces has bilateral contact. Thus the clean policy can command closure, but these episodes do not coordinate closure with grasping. This is illustrative behavioral evidence, not proof of the learning failure's cause or a separate performance denominator.

The update-1002 curve review remains a low-success plateau: success is zero, return per tick is approximately 0.0849 and nearly flat over three 100-update windows, and mean KL is 0.0112–0.0125. The numerically stable optimizer has not established lifting. A clean initialization has not yet resolved the failure.

Decision: continue both current 20,000-update learners with their recorded settings and fixed DR 0.05. The original run's next full validation is checkpoint 5000; the clean run's next is checkpoint 2000. No further learner, reward/control adjustment or early stop is introduced here. Teacher qualification and Phase 2 remain pending. Evidence: clean run `analysis/checkpoint1000_review.json` and `evaluations/validation_model1000/scale0.05/`.

## Original continuation checkpoint 5000: plateau persists (2026-09-13)

The original continuation completed another full 384-trial evaluation at DR 0.05: **0/384 native-goal successes**, zero lifts above 2 cm, no bilateral-contact trials, no invalid episodes, and 384 timeouts. Mean peak clearance remains 0.500 mm; mean final goal error is 0.16047 m. Wilson 95% success interval: [0%, 0.9905%]. The complete raw episode rows match the aggregate. Checkpoint SHA256: `d177547b1ab497c9e769bcc857a790105e2d20627f887a62b1a0b14d8ad36cdf`.

In all three retained first-world traces, deterministic gripper commands remain above +0.997 throughout the episode: the gripper stays open. These illustrations support the previously observed failure behavior but do not identify its cause. Curve review 5008 is still a low-success plateau: three-window return per tick is 0.085058, 0.085064, 0.084975, with mean KL 0.01076, 0.01198, 0.01134 and essentially no clearance. The gripper exploration floor has persisted for more than 1,900 updates without improved deterministic validation success.

Decision: retain both already-running 20,000-update experiments and DR 0.05, with no further reward, action, initialization or optimizer change here. The clean run is just beyond 1,300 updates and continues toward its second complete evaluation at checkpoint 2000; original checkpoint 6000 is next. This is a continued learning failure, not an unreachable-start explanation, a curriculum-promotion signal or teacher qualification. Evidence: original run `analysis/checkpoint5000_review.json`, `analysis/update005008.json`, and `evaluations/validation_model5000/scale0.05/`.

## Clean run checkpoint 2000: no grasp improvement (2026-09-13)

The corrected-from-start run completed its second full 384-trial validation at DR 0.05: **0/384 native-goal successes**, zero lifts above 2 cm, zero trials with bilateral contact, no invalid episodes and 384 timeouts. Mean peak clearance is 0.500 mm; mean final goal error is 0.16047 m. Wilson 95% success interval: [0%, 0.9905%]. All raw per-seed episode rows match the aggregate; no starts were excluded. Checkpoint SHA256: `970b75da3892058aab497ceab84890ed5094c938741c108ba99e94e9874f4460`.

The first-world trace for each validation seed still shows brief initial closure followed by an open command from 0.45–0.60 s onward. Commands exceed +0.9 for 96.3–97.3% of frames, with no bilateral contact in these illustrations. This extends the checkpoint-1000 failure evidence; the extra 1,000 updates did not establish coordinated grasping. The trace sample is illustrative, not an alternate denominator or causal proof.

Curve review 2000 remains a low-success plateau. Across three 100-update windows, return per tick is 0.085152, 0.085144, 0.085137; average peak clearance stays near 0.500 mm, success stays zero, and mean KL is 0.01078, 0.01203, 0.01193. Numerical stability does not establish task competence.

Decision: both already-running 20,000-update experiments continue with the recorded settings and fixed DR 0.05. No new learner, reward/control change, checkpoint reset, DR promotion or teacher qualification is introduced here. The original continuation is approaching checkpoint 6000; the clean run continues toward checkpoint 3000. The failure remains a policy weakness under restricted DR, not an unsupported unreachable-start explanation. Evidence: clean run `analysis/checkpoint2000_review.json`, `analysis/update002000.json`, and `evaluations/validation_model2000/scale0.05/`.

## Saved-state exploration audit after clean checkpoint 2000 (2026-09-13)

A CPU-only comparison of the clean run's checkpoints 1000 and 2000 shows that upward-action standard deviation fell from 0.08910 to 0.03910, while the gripper's effective std remains 0.5. Using the recorded deterministic world-0 action means for all three evaluation seeds, at t >= 3 s the median conditional probability of a raw upward command >0.1 falls from 13.06% to 0.525%. For >0.25 it falls from 0.002501 to 8.01e-11 (probabilities, not percentages). The sign alone is not rare: P(dz > 0) stays near 0.5. Median P(gripper < -0.5) stays near 0.00135 around the open mean.

This is evidence of narrowing arm exploration at the saved states, alongside the zero-lift plateau. It is not a stochastic-policy success rate, not the empirical training-state distribution, and not a proof that these command thresholds are required for a lift. Both all-frame and explicitly labeled post-3-second diagnostics are retained; the ordinary validation denominator remains 384 with no exclusions. No new simulator, learner or video was run, and no training settings were changed.

The comparative graph has been prepared for the next scheduled publication with an explicit conditional-probability caption. Evidence and reproduction: clean run `analysis/saved_exploration_1000_2000/{analysis.json,interpretation.md,source.py,plots/saved_exploration.png}`; source command `scripts/analyze_saved_exploration.py`. Continue both existing long runs at DR 0.05.

## Frozen-policy sampling probe and original checkpoint 6000 (2026-09-13)

A single controlled sampling probe used the frozen clean checkpoint 2000 with all 128 trials per condition at DR 0.05 and development seed 1101. Saved Gaussian sampling produced 0/128 native-goal successes, zero 2 cm lifts and zero bilateral-contact trials. Applying a 0.3 minimum std to the six arm actions on a local actor copy also produced 0/128, zero lifts and zero contact trials. Penetration >3 mm increased from 1/128 to 64/128; all trials remained in the denominator. These are clean-observation, frozen-policy diagnostics, not training or qualification results.

Actor/normalizer tensors and the checkpoint file stayed unchanged. Initial actor observations, deterministic actions, positions and goals match exactly. Bottle-quaternion components differ by at most 1.1921e-7; the original strict bitwise audit failed after both conditions completed. A retained post-run review documents the float32 rounding difference without repeating or discarding trials. Original source, logs and comparison are preserved. Evidence: clean run `analysis/stochastic_exploration_checkpoint2000/{comparison.json,pairing_review.json,interpretation.md}` and both full condition summaries.

Decision: do not apply the tested 0.3 arm floor to either learner based on this probe. Extra independent noise did not immediately produce grasping and increased penetration diagnostics; this does not establish what learning with that floor would do. Continue the two current long runs unchanged.

The original continuation's checkpoint 6000 also completed all 384 validation trials at DR 0.05: **0/384 native-goal successes**, zero 2 cm lifts, no invalid episodes, mean peak clearance 0.500 mm and mean final goal error 0.16047 m. Wilson 95% interval: [0%, 0.9905%]. Checkpoint SHA256: `ce6fd7ca2db963d4907989272819cccebb69266856bb11aa74bb9b536eb2b085`. Raw trial counts were checked against the aggregate. Evidence: original run `analysis/checkpoint6000_review.json` and `evaluations/validation_model6000/scale0.05/`. No DR promotion or teacher qualification.

The clean checkpoint-2000 website transfer encountered two transient croc failures; its later retry transferred and deployed successfully, with public verification following. Failure history is retained in `milestones.json`; neither learner was stopped or restarted for publication.

## User-requested training stop (2026-09-13)

Both learners stopped gracefully after complete PPO updates: original continuation at 6,403 and clean run at 2,621. Latest stopped checkpoints were saved and their SHA256 hashes verified against `checkpoints/latest.json`. Neither learner process remains alive. No teacher is qualified. Do not resume or launch new training without a new explicit user request. Full checkpoint references: `insights/training_stop.json`.

Student qualification

The student will receive current wrist RGB, causal robot proprioception and a commanded goal. The 16-frame causal-history network and action conversion have passed infrastructure checks. A controller variant now uses verified 125 Hz target deadlines. Final policy checks must establish task competence, recovery, control compatibility and inference latency against the 50 ms period. No real-robot control is run.

Updated 2026-09-14T08:43:28.652035+00:00 · Simulator · Earlier ACT project