compare_devbox_sandbox.py | Runloop runloop.devbox.create(), devbox.cmd.exec() and file APIs versus Tensorlake Sandbox.create(), command and file APIs. | Create from pinned environments; run success, nonzero-exit, stdout/stderr, Unicode and binary file cases. Compare raw output, then test an explicit line adapter or byte-preserving file capture if required. Cover empty output, no final newline, multiple final newlines, and failures. Assert exit status, bytes, modes, and ownership. |
compare_shell_process.py | Runloop devbox.shell(name).exec() versus Tensorlake persistent PTY or explicit per-command environment and working directory; Runloop asynchronous command versus Tensorlake managed process. | Change directory and export a variable, then submit concurrent dependent commands. Assert ordering and continuity; cancel queued and running work; verify one background process and captured output. |
compare_lifecycle.py | Runloop devbox suspend/resume versus Tensorlake named sandbox suspend/resume; test Tensorlake ephemeral timeout separately. | Start a long-lived counter and write a sentinel. On resume assert disk contents on both, Runloop process restart policy, and no duplicate Tensorlake process. Verify timeout and cleanup states. |
compare_network.py | Runloop blueprint network policy and tunnels versus Tensorlake networking. | Test an allowed destination, denied destination, authenticated inbound request, and anonymous inbound request. Require each expected allow or deny result. |
compare_image.py | Runloop blueprint provisioning versus Tensorlake registered image provisioning. | Check package versions, user, working directory, startup command, file modes, ports, and absence of embedded runtime secrets. |
compare_snapshot.py | Runloop devbox.snapshot_disk() and restore versus Tensorlake sandbox.checkpoint(checkpoint_type=...) and Sandbox.create(snapshot_id=...). | Drain writers before the final Runloop snapshot and record its event cursor. Use a fixture with large file, symlink, executable mode, database backup, and external mount. Wait for Tensorlake checkpoint completion before terminating the source; compare manifests and application invariants after restoration. Check filesystem and memory types independently. |
compare_axon.py | Runloop Axon paginated events, SQL APIs, and Broker versus the chosen target journal, subscription, database, and Tensorlake workflow calls. | Freeze publishers and Broker turns, record the last accepted sequence, export every event page and each SQL table in stable pages, then verify the source event count and sequence range, check rows_read_limit_reached on each SQL page, and compare an independent source row count, hashes, and schema after import. Test reconnect/replay, retry, concurrent writes, failed SQL batch, and cancellation. Require no lost accepted events or duplicate external effects. A missing target component leaves this check incomplete. |
compare_benchmark.py | Retained Runloop scenario fixtures, scorer definitions, and results versus Harbor or custom harness output on Tensorlake. | Map each source scenario and scorer ID to a versioned task and verifier. Run fixed passing, failing, partial-credit, timeout, and infrastructure-error cases; compare per-scorer values, weights, aggregate, classification, and artifacts. Missing source definitions leave equivalence unverified. |