sim: fork PushShapes into frozen per-version packages (v1/v2/v3) - #542
Draft
ElmoPA wants to merge 2 commits into
Draft
sim: fork PushShapes into frozen per-version packages (v1/v2/v3)#542ElmoPA wants to merge 2 commits into
ElmoPA wants to merge 2 commits into
Conversation
This was referenced Aug 6, 2026
Contributor
Author
ElmoPA
changed the base branch from
rldb/video-and-annotations
to
graphite-base/542
August 7, 2026 00:54
This was referenced Aug 7, 2026
ElmoPA
force-pushed
the
sim/version-fork
branch
from
August 7, 2026 12:01
d80489a to
69d6836
Compare
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
force-pushed
the
sim/version-fork
branch
from
August 7, 2026 12:11
69d6836 to
877c56e
Compare
ElmoPA
force-pushed
the
graphite-base/542
branch
from
August 7, 2026 12:25
9cb385b to
bb52176
Compare
ElmoPA
changed the base branch from
graphite-base/542
to
rldb/video-and-annotations
August 7, 2026 13:34
ElmoPA
changed the base branch from
rldb/video-and-annotations
to
graphite-base/542
August 7, 2026 13:35
ElmoPA
changed the base branch from
graphite-base/542
to
rldb/video-and-annotations
August 7, 2026 18:20
This was referenced Aug 21, 2026
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.

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:
the historical module paths in sys.modules, so all 12 existing importers keep
working unchanged and see the same module objects (constants included).
sim_versioninto episode_init, at the env layer so every collectorinherits it. New data is self-describing instead of era-inferred from which
optional keys happen to be present.
inherits whatever CURRENT_VERSION happens to be.
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