Skip to content

sim: fork PushShapes into frozen per-version packages (v1/v2/v3) - #542

Draft
ElmoPA wants to merge 2 commits into
rldb/video-and-annotationsfrom
sim/version-fork
Draft

sim: fork PushShapes into frozen per-version packages (v1/v2/v3)#542
ElmoPA wants to merge 2 commits into
rldb/video-and-annotationsfrom
sim/version-fork

Conversation

@ElmoPA

@ElmoPA ElmoPA commented Aug 6, 2026

Copy link
Copy Markdown
Contributor

Physics changed twice without the data recording which version produced it, so
historical episodes could not be reproduced. A v2-collected u_socket episode
replays to coverage 0.000 under v3 friction (stored 0.953) -- that divergence is
why 1384 episodes had to be regenerated, and it was only discoverable by hand.

Fork each era into a frozen package so any dataset can be replayed under the sim
that made it:

v1 git HEAD geometry L15=8 L20=24 L25=20 L29=52 no u_socket
v2 pre-v3 snapshot L15=3 L20=3 L25=54 L29=54 solid_pusher
v3 current same geometry + pocket-bottom-only socket friction

Verified by replay (Tsimulation/examples/replay_zarr.py):
u_socket_3000_v2 under v2 -> 0.953 vs stored 0.953 reproduces
u_socket_3000_v3_replacements under v3 -> 0.956 vs stored 0.975 reproduces
u_socket_3000_v2 under v3 -> 0.000 vs stored 0.953 diverges

Also:

  • pushshapes/init exposes get_env/get_module/available_versions and aliases
    the historical module paths in sys.modules, so all 12 existing importers keep
    working unchanged and see the same module objects (constants included).
  • v3 stamps sim_version into episode_init, at the env layer so every collector
    inherits it. New data is self-describing instead of era-inferred from which
    optional keys happen to be present.
  • replay_zarr and mouse_collect take --sim-version; teleop no longer silently
    inherits whatever CURRENT_VERSION happens to be.
  • Removed redundant Tsimulator/ duplicate trees and 86 untracked *.bak files.
    Content preserved: Tsimulator/sim_v1 == v1/ and sim_v2 == v2/, byte-identical.

Known remaining: Tsimulation_legacy/ (v1 duplicate) is still live with 16
referrers via the PUSHSHAPES_SIM env-var switch; that mechanism and this registry
are not yet reconciled.

Co-Authored-By: Claude Opus 5 (1M context) noreply@anthropic.com
Claude-Session: https://claude.ai/code/session_029adb0d-ec6d-4577-a617-65f29c6bc23a

Physics changed twice without the data recording which version produced it, so
historical episodes could not be reproduced. A v2-collected u_socket episode
replays to coverage 0.000 under v3 friction (stored 0.953) -- that divergence is
why 1384 episodes had to be regenerated, and it was only discoverable by hand.

Fork each era into a frozen package so any dataset can be replayed under the sim
that made it:

  v1  git HEAD geometry      L15=8  L20=24 L25=20 L29=52   no u_socket
  v2  pre-v3 snapshot        L15=3  L20=3  L25=54 L29=54   solid_pusher
  v3  current                same geometry + pocket-bottom-only socket friction

Verified by replay (Tsimulation/examples/replay_zarr.py):
  u_socket_3000_v2              under v2 -> 0.953 vs stored 0.953   reproduces
  u_socket_3000_v3_replacements under v3 -> 0.956 vs stored 0.975   reproduces
  u_socket_3000_v2              under v3 -> 0.000 vs stored 0.953   diverges

Also:
- pushshapes/__init__ exposes get_env/get_module/available_versions and aliases
  the historical module paths in sys.modules, so all 12 existing importers keep
  working unchanged and see the same module objects (constants included).
- v3 stamps `sim_version` into episode_init, at the env layer so every collector
  inherits it. New data is self-describing instead of era-inferred from which
  optional keys happen to be present.
- replay_zarr and mouse_collect take --sim-version; teleop no longer silently
  inherits whatever CURRENT_VERSION happens to be.
- Removed redundant Tsimulator/ duplicate trees and 86 untracked *.bak files.
  Content preserved: Tsimulator/sim_v1 == v1/ and sim_v2 == v2/, byte-identical.

Known remaining: Tsimulation_legacy/ (v1 duplicate) is still live with 16
referrers via the PUSHSHAPES_SIM env-var switch; that mechanism and this registry
are not yet reconciled.

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_029adb0d-ec6d-4577-a617-65f29c6bc23a
@ElmoPA
ElmoPA force-pushed the graphite-base/542 branch from 9cb385b to bb52176 Compare August 7, 2026 12:25
@ElmoPA
ElmoPA changed the base branch from graphite-base/542 to rldb/video-and-annotations August 7, 2026 13:34
@ElmoPA
ElmoPA changed the base branch from rldb/video-and-annotations to graphite-base/542 August 7, 2026 13:35
@ElmoPA
ElmoPA changed the base branch from graphite-base/542 to rldb/video-and-annotations August 7, 2026 18:20
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant