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 smoke script if: runner.os != 'Windows' run: python3 -m py_compile docs/automation/mcp_smoke.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 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