Skip to content

Resolve remote memory2 replays for Go2#3186

Draft
xiaoyaoqilan wants to merge 10 commits into
dimensionalOS:mainfrom
xiaoyaoqilan:codex/remote-replay-go2
Draft

Resolve remote memory2 replays for Go2#3186
xiaoyaoqilan wants to merge 10 commits into
dimensionalOS:mainfrom
xiaoyaoqilan:codex/remote-replay-go2

Conversation

@xiaoyaoqilan

Copy link
Copy Markdown
Contributor

Summary

  • add dimos-replay://owner/repository/object-id replay URIs
  • download remote memory2 databases on demand
  • verify content hashes, validate SQLite integrity, and cache verified recordings locally
  • let the existing replay flow select the downloaded database through DIMOS_REPLAY_DB
  • support the requested dimos --replay run unitree-go2 workflow

Motivation

This is PR 4 of the #3158 implementation stack. A recording uploaded in one location can be selected and replayed from another location without manually copying database files.

Stack dependency

Validation

  • remote URI parsing, download, hash checking, cache reuse, and invalid-database paths are covered by tests
  • targeted replay/Go2 tests passed
  • ruff check, format checks, and targeted mypy passed

@autofix-ci

autofix-ci Bot commented Jul 25, 2026

Copy link
Copy Markdown
Contributor

Hi! I'm autofix logoautofix.ci, a bot that automatically fixes trivial issues such as code formatting in pull requests.

I would like to apply some automated changes to this pull request, but it looks like I don't have the necessary permissions to do so. To get this pull request into a mergeable state, please do one of the following two things:

  1. Allow edits by maintainers for your pull request, and then re-trigger CI (for example by pushing a new commit).
  2. Manually fix the issues identified for your pull request (see the GitHub Actions output for details on what I would like to change).

@codecov

codecov Bot commented Jul 25, 2026

Copy link
Copy Markdown

❌ 1 Tests Failed:

Tests completed Failed Passed Skipped
3072 1 3071 177
View the top 1 failed test(s) by shortest run time
dimos.protocol.pubsub.impl.webrtc.test_replay_repository_cli::test_serve_rejects_missing_s3_bucket
Stack Traces | 0.013s run time
tmp_path = PosixPath('.../pytest-0/popen-gw0/test_serve_rejects_missing_s3_0')

    def test_serve_rejects_missing_s3_bucket(tmp_path: Path) -> None:
        result = runner.invoke(
            replay_repository_cli.replay_repository_app,
            ["serve", "--root", str(tmp_path), "--backend", "s3"],
        )
    
        assert result.exit_code == 2
>       assert "--s3-bucket is required" in result.output
E       assert '--s3-bucket is required' in "\x1b[33mUsage: \x1b[0mroot serve [OPTIONS]\n\x1b[2mTry \x1b[0m\x1b[2;34m'root serve \x1b[0m\x1b[1;2;34m-\x1b[0m\x1b[1;2;34m-help\x1b[0m\x1b[2;34m'\x1b[0m\x1b[2m for help.\x1b[0m\n\x1b[31m╭─\x1b[0m\x1b[31m Error \x1b[0m\x1b[31m─────────────────────────────────────────────────────────────────────\x1b[0m\x1b[31m─╮\x1b[0m\n\x1b[31m│\x1b[0m Invalid value: DIMOS_REPLAY_S3_BUCKET or \x1b[1;36m-\x1b[0m\x1b[1;36m-s3\x1b[0m\x1b[1;36m-bucket\x1b[0m is required for the s3  \x1b[31m│\x1b[0m\n\x1b[31m│\x1b[0m backend                                                                      \x1b[31m│\x1b[0m\n\x1b[31m╰──────────────────────────────────────────────────────────────────────────────╯\x1b[0m\n"
E        +  where "\x1b[33mUsage: \x1b[0mroot serve [OPTIONS]\n\x1b[2mTry \x1b[0m\x1b[2;34m'root serve \x1b[0m\x1b[1;2;34m-\x1b[0m\x1b[1;2;34m-help\x1b[0m\x1b[2;34m'\x1b[0m\x1b[2m for help.\x1b[0m\n\x1b[31m╭─\x1b[0m\x1b[31m Error \x1b[0m\x1b[31m─────────────────────────────────────────────────────────────────────\x1b[0m\x1b[31m─╮\x1b[0m\n\x1b[31m│\x1b[0m Invalid value: DIMOS_REPLAY_S3_BUCKET or \x1b[1;36m-\x1b[0m\x1b[1;36m-s3\x1b[0m\x1b[1;36m-bucket\x1b[0m is required for the s3  \x1b[31m│\x1b[0m\n\x1b[31m│\x1b[0m backend                                                                      \x1b[31m│\x1b[0m\n\x1b[31m╰──────────────────────────────────────────────────────────────────────────────╯\x1b[0m\n" = <Result SystemExit(2)>.output

result     = <Result SystemExit(2)>
tmp_path   = PosixPath('.../pytest-0/popen-gw0/test_serve_rejects_missing_s3_0')

.../impl/webrtc/test_replay_repository_cli.py:154: AssertionError

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

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