name: OCS control contract on: push: branches: [main] pull_request: workflow_dispatch: jobs: native: strategy: fail-fast: false matrix: os: [ubuntu-latest, windows-latest, macos-latest] runs-on: ${{ matrix.os }} timeout-minutes: 60 steps: - uses: actions/checkout@v4 - uses: dtolnay/rust-toolchain@stable - name: Validate control contract run: cargo test --lib app::control::tests - name: Validate MCP packaging scripts if: runner.os != 'Windows' run: python3 -m py_compile docs/automation/mcp_smoke.py packaging/mcpb/pack.py mcp: runs-on: ubuntu-latest steps: - uses: actions/checkout@v4 - uses: dtolnay/rust-toolchain@stable - run: cargo test --lib mcp::tests - run: cargo build - run: python3 docs/automation/mcp_smoke.py target/debug/OpenCADStudio - run: python3 packaging/mcpb/pack.py --version 0.0.0 --linux /bin/true --windows /bin/true --macos /bin/true --output /tmp/OpenCADStudio.mcpb --server-json /tmp/server.json web: runs-on: ubuntu-latest steps: - uses: actions/checkout@v4 - uses: dtolnay/rust-toolchain@stable with: targets: wasm32-unknown-unknown - run: cargo check --lib --target wasm32-unknown-unknown