Add Boston Dynamics Atlas DRC Tier 1 profile #1
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
| name: Atlas DRC Tier 1 contract | |
| on: | |
| workflow_dispatch: | |
| pull_request: | |
| paths: | |
| - "tunnel/**" | |
| - "bridge/common/**" | |
| - "bridge/boston_dynamics/atlas_drc_bridge/**" | |
| - "registry/vendors/boston-dynamics/atlas/**" | |
| - ".github/workflows/atlas-tier1.yml" | |
| push: | |
| branches: [boston-dynamics-atlas-tier-1] | |
| paths: | |
| - "tunnel/**" | |
| - "bridge/common/**" | |
| - "bridge/boston_dynamics/atlas_drc_bridge/**" | |
| - "registry/vendors/boston-dynamics/atlas/**" | |
| - ".github/workflows/atlas-tier1.yml" | |
| jobs: | |
| tunnel-and-contract: | |
| runs-on: ubuntu-latest | |
| steps: | |
| - uses: actions/checkout@v4 | |
| - uses: actions/setup-go@v5 | |
| with: | |
| go-version: "1.25" | |
| - name: Build and test the real Go Tunnel | |
| run: | | |
| make build | |
| make test | |
| - uses: actions/setup-python@v5 | |
| with: | |
| python-version: "3.10" | |
| - name: Install Atlas bridge dependencies | |
| run: | | |
| python -m pip install -r bridge/boston_dynamics/atlas_drc_bridge/requirements.txt | |
| python bridge/boston_dynamics/atlas_drc_bridge/download_atlas_model.py | |
| - name: Run fail-closed contracts | |
| env: | |
| PYTHONPATH: ${{ github.workspace }}/bridge/boston_dynamics/atlas_drc_bridge | |
| TUNNEL_BIN: ${{ github.workspace }}/bin/tunnel | |
| LD_LIBRARY_PATH: ${{ github.workspace }}/.zenoh-c/lib | |
| run: | | |
| python bridge/boston_dynamics/atlas_drc_bridge/tests/test_contract.py | |
| python bridge/boston_dynamics/atlas_drc_bridge/tests/test_registry_contract.py | |
| python bridge/boston_dynamics/atlas_drc_bridge/tests/test_bridge_contract.py | |
| python bridge/boston_dynamics/atlas_drc_bridge/tests/test_payment_gate.py | |
| python bridge/boston_dynamics/atlas_drc_bridge/tests/test_e2e_paid_action.py | |
| python bridge/boston_dynamics/atlas_drc_bridge/tests/test_x402_no_settlement.py | |
| atlas-mujoco: | |
| name: Atlas DRC MuJoCo state-feedback proof | |
| runs-on: ubuntu-latest | |
| needs: tunnel-and-contract | |
| steps: | |
| - uses: actions/checkout@v4 | |
| - uses: actions/setup-python@v5 | |
| with: | |
| python-version: "3.10" | |
| - name: Install dependencies and the pinned legacy Atlas source | |
| run: | | |
| python -m pip install --upgrade pip | |
| python -m pip install -r bridge/boston_dynamics/atlas_drc_bridge/requirements.txt | |
| python bridge/boston_dynamics/atlas_drc_bridge/download_atlas_model.py | |
| - name: Run actual MuJoCo wave | |
| env: | |
| PYTHONPATH: ${{ github.workspace }}/bridge/boston_dynamics/atlas_drc_bridge | |
| run: | | |
| python bridge/boston_dynamics/atlas_drc_bridge/tests/test_mujoco_runtime.py | |
| python bridge/boston_dynamics/atlas_drc_bridge/run_paid_wave.py --json-output bridge/boston_dynamics/atlas_drc_bridge/artifacts/mujoco_result.json | |
| - name: Upload MuJoCo evidence | |
| if: always() | |
| uses: actions/upload-artifact@v4 | |
| with: | |
| name: atlas-drc-mujoco-evidence | |
| path: bridge/boston_dynamics/atlas_drc_bridge/artifacts/mujoco_result.json | |
| retention-days: 90 | |
| if-no-files-found: error | |
| atlas-sim2sim: | |
| name: Atlas DRC Sim-to-Sim (MuJoCo + Webots) | |
| runs-on: ubuntu-latest | |
| needs: tunnel-and-contract | |
| steps: | |
| - uses: actions/checkout@v4 | |
| - uses: actions/setup-python@v5 | |
| with: | |
| python-version: "3.10" | |
| - name: Install simulators and dependencies | |
| run: | | |
| sudo apt-get update | |
| sudo apt-get install -y wget xvfb libgl1 libglu1-mesa libglib2.0-0 libgomp1 libfontconfig1 libxkbcommon0 libdbus-1-3 libx11-6 libx11-xcb1 libxcb1 libxext6 libxrender1 libxtst6 libxi6 libxss1 libqt5core5a libqt5gui5 libqt5widgets5 libqt5network5 libqt5svg5 libqt5webengine5 libqt5webenginecore5 libqt5webenginewidgets5 libqt5multimedia5 libqt5printsupport5 libqt5concurrent5 libxcb-icccm4 libxcb-image0 libxcb-keysyms1 libxcb-randr0 libxcb-render-util0 libxcb-xinerama0 libxcb-xkb1 libxkbcommon-x11-0 | |
| sudo apt-get install -y libsndio7.0 2>/dev/null || sudo apt-get install -y libsndio-dev 2>/dev/null || true | |
| python -m pip install --upgrade pip | |
| python -m pip install -r bridge/boston_dynamics/atlas_drc_bridge/requirements.txt | |
| python bridge/boston_dynamics/atlas_drc_bridge/download_atlas_model.py | |
| wget -q https://github.com/cyberbotics/webots/releases/download/R2025a/webots-R2025a-x86-64.tar.bz2 | |
| sudo tar xjf webots-R2025a-x86-64.tar.bz2 -C /usr/local | |
| rm webots-R2025a-x86-64.tar.bz2 | |
| - name: Run the same bounded policy in both simulators | |
| env: | |
| PYTHONPATH: ${{ github.workspace }}/bridge/boston_dynamics/atlas_drc_bridge | |
| WEBOTS_EXE: /usr/local/webots/webots | |
| QT_QPA_PLATFORM: offscreen | |
| run: xvfb-run -a -s "-screen 0 1280x1024x24" python bridge/boston_dynamics/atlas_drc_bridge/run_sim2sim_validation.py --timeout 90 | |
| - name: Upload Sim-to-Sim evidence | |
| if: always() | |
| uses: actions/upload-artifact@v4 | |
| with: | |
| name: atlas-drc-sim2sim-evidence | |
| path: bridge/boston_dynamics/atlas_drc_bridge/artifacts/ | |
| retention-days: 90 | |
| if-no-files-found: error | |
| atlas-base-sepolia-e2e: | |
| name: Atlas DRC Base Sepolia settlement evidence | |
| if: github.event_name == 'push' || github.event_name == 'workflow_dispatch' | |
| concurrency: | |
| group: atlas-drc-base-sepolia-${{ github.ref }} | |
| cancel-in-progress: false | |
| runs-on: ubuntu-latest | |
| needs: [tunnel-and-contract, atlas-mujoco, atlas-sim2sim] | |
| steps: | |
| - uses: actions/checkout@v4 | |
| - uses: actions/setup-go@v5 | |
| with: | |
| go-version: "1.25" | |
| - uses: actions/setup-python@v5 | |
| with: | |
| python-version: "3.10" | |
| - name: Install dependencies, legacy model, and real Tunnel | |
| run: | | |
| python -m pip install --upgrade pip | |
| python -m pip install -r bridge/boston_dynamics/atlas_drc_bridge/requirements.txt | |
| python bridge/boston_dynamics/atlas_drc_bridge/download_atlas_model.py | |
| make build | |
| - name: Start local Zenoh router | |
| run: | | |
| wget -q https://github.com/eclipse-zenoh/zenoh/releases/download/1.9.0/zenoh-1.9.0-x86_64-unknown-linux-gnu-standalone.zip | |
| unzip -q zenoh-1.9.0-x86_64-unknown-linux-gnu-standalone.zip -d .zenoh-router | |
| .zenoh-router/zenohd > zenohd.log 2>&1 & | |
| sleep 2 | |
| grep -q "zenohd" zenohd.log | |
| - name: Run live Base Sepolia proof and generate evidence | |
| env: | |
| PRIVATE_KEY: ${{ secrets.BASE_SEPOLIA_PRIVATE_KEY }} | |
| ROBO_PAYEE_ADDRESS: ${{ secrets.ROBO_PAYEE_ADDRESS }} | |
| TUNNEL_BIN: ${{ github.workspace }}/bin/tunnel | |
| LD_LIBRARY_PATH: ${{ github.workspace }}/.zenoh-c/lib | |
| PROXY_WS_URL: wss://api.fabric.foundation/api/core/ws/robot | |
| run: python bridge/boston_dynamics/atlas_drc_bridge/test_base_sepolia_tunnel_e2e.py | |
| - name: Upload generated Base Sepolia evidence | |
| if: always() | |
| uses: actions/upload-artifact@v4 | |
| with: | |
| name: atlas-drc-base-sepolia-evidence | |
| path: bridge/boston_dynamics/atlas_drc_bridge/artifacts/base_sepolia_result_*.json | |
| retention-days: 90 | |
| if-no-files-found: error |