test: restore into the same body scene; V3 mock asserts current=False

The checkpoint loader requires matching body count and geometry, so the
round-trip test rebuilds the three-circle scene before loading instead of
an empty simulation (loader unchanged). run_case.main now calls
verify_source(..., current=False); the two dry-run/run mock assertions
follow.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
This commit is contained in:
Claude
2026-10-20 18:33:48 +00:00
co-authored by Claude Opus 5.5
parent c33af7a66d
commit 34b30c434f
2 changed files with 5 additions and 5 deletions
@@ -1,6 +1,6 @@
"""Checkpoint save -> load round trip for a scene with passive bodies. Requires GPU.
A fresh Simulation restored from the checkpoint must hold the same populations,
A fresh Simulation with the same scene, restored from the checkpoint must hold the same populations,
flags, body count and step count, and must stay bitwise identical to the original
after both continue for the same number of steps. Checkpoints with Jets are
refused (documented limitation) and are not covered here.
@@ -36,8 +36,8 @@ class CheckpointBodiesGPU(unittest.TestCase):
restored = None
try:
saved = sim.save_checkpoint(path)
restored = make_sim()
restored.initialize()
# The loader requires the same body count and geometry: rebuild the scene.
restored = scene()
restored.load_checkpoint(saved)
self.assertEqual(restored.bodies.count, len(CIRCLES))
@@ -361,7 +361,7 @@ class ProjectedPairsTests(unittest.TestCase):
patch.object(run_case, "runtime_identity", side_effect=AssertionError("CUDA reached")), \
redirect_stdout(stdout):
self.assertEqual(run_case.main(), 0)
verify.assert_called_once_with(REPO, MOCK_REVISION)
verify.assert_called_once_with(REPO, MOCK_REVISION, current=False)
self.assertTrue(json.loads(stdout.getvalue())["dry_run"])
self.assertFalse(output.exists())
@@ -454,7 +454,7 @@ class ProjectedPairsTests(unittest.TestCase):
else:
self.assertEqual(run_case.main(), 0)
receipt = json.loads(output.read_text())
verify.assert_called_once_with(REPO, MOCK_REVISION)
verify.assert_called_once_with(REPO, MOCK_REVISION, current=False)
self.assertEqual(selectors, ["projected_linear" if early else "constant"] if depth == 2 else [])
self.assertEqual(receipt["source"], source())
self.assertEqual(receipt["runtime_identity"], RUNTIME)