Skip to content

Add Boston Dynamics Atlas DRC Tier 1 profile #1

Add Boston Dynamics Atlas DRC Tier 1 profile

Add Boston Dynamics Atlas DRC Tier 1 profile #1

Workflow file for this run

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