Skip to content

feat(eval): export Pi conversation transcripts - #3441

Merged
TomCC7 merged 0 commit into
cc/feat/libero-code-policy-evalfrom
cc/eval/pi-transaction-viz
Aug 14, 2026
Merged

feat(eval): export Pi conversation transcripts#3441
TomCC7 merged 0 commit into
cc/feat/libero-code-policy-evalfrom
cc/eval/pi-transaction-viz

Conversation

@TomCC7

@TomCC7 TomCC7 commented Aug 11, 2026

Copy link
Copy Markdown
Member

Superseded by #3470. During the stack reorder, GitHub marked this draft merged into its former feature-branch base; it did not merge to main. Review and continue the transcript change in #3470.

Contribution path

This change retains Pi session JSONL and exports a self-contained HTML transcript with complete Python calls and results. The replacement PR carries the same rewritten commit on the corrected base.

@TomCC7 TomCC7 changed the title cc/eval/pi transaction viz feat(eval): export Pi conversation transcripts Aug 11, 2026
@codecov

codecov Bot commented Aug 11, 2026

Copy link
Copy Markdown

❌ 4 Tests Failed:

Tests completed Failed Passed Skipped
3792 4 3788 175
View the top 3 failed test(s) by shortest run time
dimos.codebase_checks.test_no_init_files::test_no_init_files
Stack Traces | 0.021s run time
def test_no_init_files():
        dimos_dir = DIMOS_PROJECT_ROOT / "dimos"
        init_files = sorted(dimos_dir.rglob("__init__.py"))
        # The root dimos/__init__.py is allowed for the porcelain lazy import.
        init_files = [f for f in init_files if f != dimos_dir / "__init__.py"]
        if init_files:
            listing = "\n".join(f"  - {f.relative_to(dimos_dir)}" for f in init_files)
>           raise AssertionError(
                f"Found __init__.py files in dimos/:\n{listing}\n\n"
                "__init__.py files are not allowed because they lead to unnecessary "
                "extraneous imports. Everything should be imported straight from the "
                "source module."
            )
E           AssertionError: Found __init__.py files in dimos/:
E             - benchmark/libero_pro/__init__.py
E             - .../libero_pro/proto/__init__.py
E           
E           __init__.py files are not allowed because they lead to unnecessary extraneous imports. Everything should be imported straight from the source module.

dimos_dir  = PosixPath('.../dimos/dimos/dimos')
init_files = [PosixPath('.../dimos/dimos/dimos/benchmark/libero_pro/__init__.py'), PosixPath('.../dimos/dimos/dimos/.../libero_pro/proto/__init__.py')]
listing    = '  - benchmark/libero_pro/__init__.py\n  - .../libero_pro/proto/__init__.py'

dimos/codebase_checks/test_no_init_files.py:25: AssertionError
dimos.benchmark.evaluation.test_policy_runtime::test_policy_result_larger_than_pipe_buffer_does_not_deadlock
Stack Traces | 2s run time
def test_policy_result_larger_than_pipe_buffer_does_not_deadlock() -> None:
        context = multiprocessing.get_context("spawn")
        messages, worker_messages = context.Pipe(duplex=False)
        start_event = context.Event()
        result_sending = context.Event()
        process = context.Process(
            target=_send_large_policy_error,
            args=(worker_messages, start_event, result_sending),
            daemon=True,
        )
        process.start()
        worker_messages.close()
        execution = _PolicyExecutionProcess(process, messages, start_event)
        execution.start()
>       assert result_sending.wait(timeout=2)
E       assert False
E        +  where False = wait(timeout=2)
E        +    where wait = <Event at 0xff2ae8a816d0 unset>.wait

context    = <multiprocessing.context.SpawnContext object at 0xff2be7374ec0>
execution  = <dimos.benchmark.evaluation.runtime._PolicyExecutionProcess object at 0xff2aeab523c0>
messages   = <multiprocessing.connection.Connection object at 0xff2ae8a82390>
process    = <SpawnProcess name='SpawnProcess-5' pid=15880 parent=3089 started daemon>
result_sending = <Event at 0xff2ae8a816d0 unset>
start_event = <Event at 0xff2ae8a82900 set>
worker_messages = <multiprocessing.connection.Connection object at 0xff2ae8a81580>

.../benchmark/evaluation/test_policy_runtime.py:192: AssertionError
dimos.codebase_checks.test_inline_heavy_imports::test_heavy_imports_are_inline
Stack Traces | 2.31s run time
def test_heavy_imports_are_inline() -> None:
        """Fail if any file imports cv2/open3d/rerun at module level."""
        hits = find_eager_heavy_imports()
        if hits:
            listing = "\n".join(
                f"  - dimos/{f}:{line}: `{module}`"
                for f, lines in sorted(hits.items())
                for line, module in lines
            )
>           raise AssertionError(
                f"Found module-level import(s) of {'/'.join(HEAVY_MODULES)}:\n{listing}\n\n"
                "These libraries load large native extensions into every process that "
                "transitively imports the module. Import them inside the function or "
                "method that uses them; imports needed only for type annotations go "
                "under `if TYPE_CHECKING:`."
            )
E           AssertionError: Found module-level import(s) of cv2/open3d/rerun:
E             - .../benchmark/libero_pro/video.py:9: `cv2`
E           
E           These libraries load large native extensions into every process that transitively imports the module. Import them inside the function or method that uses them; imports needed only for type annotations go under `if TYPE_CHECKING:`.

hits       = {'benchmark/libero_pro/video.py': [(9, 'cv2')]}
listing    = '  - .../benchmark/libero_pro/video.py:9: `cv2`'

dimos/codebase_checks/test_inline_heavy_imports.py:92: AssertionError
dimos.robot.test_all_blueprints_generation::test_all_blueprints_is_current
Stack Traces | 3.99s run time
def test_all_blueprints_is_current() -> None:
        root = DIMOS_PROJECT_ROOT / "dimos"
        all_blueprints, all_modules = _scan_for_blueprints(root)
    
        common = set(all_blueprints.keys()) & set(all_modules.keys())
        assert not common, (
            f"Names must be unique across blueprints and modules, "
            f"but these appear in both: {sorted(common)}"
        )
    
        generated_content = _generate_all_blueprints_content(all_blueprints, all_modules)
    
        file_path = root / "robot" / "all_blueprints.py"
    
        if "CI" in os.environ:
            if not file_path.exists():
                pytest.fail(f"all_blueprints.py does not exist at {file_path}")
    
            current_content = file_path.read_text()
            if current_content != generated_content:
                diff = difflib.unified_diff(
                    current_content.splitlines(keepends=True),
                    generated_content.splitlines(keepends=True),
                    fromfile="all_blueprints.py (current)",
                    tofile="all_blueprints.py (generated)",
                )
                diff_str = "".join(diff)
>               pytest.fail(
                    f"all_blueprints.py is out of date. Run "
                    f"`pytest dimos/robot/test_all_blueprints_generation.py` locally to update.\n\n"
                    f"Diff:\n{diff_str}"
                )
E               Failed: all_blueprints.py is out of date. Run `pytest dimos/robot/test_all_blueprints_generation.py` locally to update.
E               
E               Diff:
E               --- all_blueprints.py (current)
E               +++ all_blueprints.py (generated)
E               @@ -225,6 +225,9 @@
E                    "joystick-module": "dimos.robot.unitree.b1.joystick_module.JoystickModule",
E                    "keyboard-teleop": "dimos.robot.unitree.keyboard_teleop.KeyboardTeleop",
E                    "keyboard-teleop-module": "dimos.teleop.keyboard.keyboard_teleop_module.KeyboardTeleopModule",
E               +    "libero-connection": "dimos.benchmark.libero_pro.connection.LiberoConnection",
E               +    "libero-recorder": "dimos.benchmark.libero_pro.connection.LiberoRecorder",
E               +    "libero-video-recorder": "dimos.benchmark.libero_pro.video.LiberoVideoRecorder",
E                    "local-planner": "dimos.navigation.cmu_nav.modules.local_planner.local_planner.LocalPlanner",
E                    "manipulation-module": "dimos.manipulation.manipulation_module.ManipulationModule",
E                    "map": "dimos.robot.unitree.type.map.Map",

all_blueprints = {'a1z-planner-coordinator': 'dimos.robot.manipulators.a1z.blueprints.basic:a1z_planner_coordinator', 'alfred-nav': 'di...rs.a1z.blueprints.basic:coordinator_a1z', 'coordinator-basic': 'dimos.control.blueprints.basic:coordinator_basic', ...}
all_modules = {'alfred-high-level': 'dimos.robot.diy.alfred.effector_high_level.AlfredHighLevel', 'arm-command-module': 'dimos.teleo...t_extensions.ArmTeleopModule', 'b-box-navigation-module': 'dimos.navigation.bbox_navigation.BBoxNavigationModule', ...}
common     = set()
current_content = '# Copyright 2025-2026 Dimensional Inc.\n#\n# Licensed under the Apache License, Version 2.0 (the "License");\n# you m...sted.blueprints.cloudflare.WristCamera",\n    "zed-camera": "dimos.hardware.sensors.camera.zed.camera.ZEDCamera",\n}\n'
diff       = <generator object unified_diff at 0xffd7a745dd80>
diff_str   = '--- all_blueprints.py (current)\n+++ all_blueprints.py (generated)\n@@ -225,6 +225,9 @@\n     "joystick-module": "dim...dule": "dimos.manipulation.manipulation_module.ManipulationModule",\n     "map": "dimos.robot.unitree.type.map.Map",\n'
file_path  = PosixPath('.../dimos/robot/all_blueprints.py')
generated_content = '# Copyright 2025-2026 Dimensional Inc.\n#\n# Licensed under the Apache License, Version 2.0 (the "License");\n# you m...sted.blueprints.cloudflare.WristCamera",\n    "zed-camera": "dimos.hardware.sensors.camera.zed.camera.ZEDCamera",\n}\n'
root       = PosixPath('.../dimos/dimos/dimos')

dimos/robot/test_all_blueprints_generation.py:76: Failed

To view more test analytics, go to the Test Analytics Dashboard
📋 Got 3 mins? Take this short survey to help us improve Test Analytics.

@TomCC7 TomCC7 closed this Aug 14, 2026
@TomCC7
TomCC7 force-pushed the cc/eval/pi-transaction-viz branch from e4a2381 to eed454b Compare August 14, 2026 20:30
@TomCC7
TomCC7 merged commit eed454b into feat/evals-framework Aug 14, 2026
@TomCC7
TomCC7 deleted the cc/eval/pi-transaction-viz branch August 14, 2026 20:30
@TomCC7
TomCC7 restored the cc/eval/pi-transaction-viz branch August 14, 2026 20:33
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