burr 0.23.0

Design-rule checks for CAD-as-code workflows.
Documentation
name: Check

on:
  workflow_dispatch:
  pull_request:
  push:
    branches:
      - main

permissions:
  contents: read

jobs:
  core:
    name: Core
    runs-on: ubuntu-latest
    steps:
      - name: Checkout
        uses: actions/checkout@v4

      - name: Setup Node
        uses: actions/setup-node@v4
        with:
          node-version: "24"

      - name: Setup Rust
        uses: dtolnay/rust-toolchain@stable

      - name: Setup uv
        uses: astral-sh/setup-uv@v5

      - name: Setup Python
        run: uv python install 3.11

      - name: Install
        run: npm install

      - name: Sync Python workspace
        run: uv sync --all-packages

      - name: Check
        run: npm run check

  build123d:
    name: Build123d Examples
    runs-on: ubuntu-latest
    steps:
      - name: Checkout
        uses: actions/checkout@v4

      - name: Setup Node
        uses: actions/setup-node@v4
        with:
          node-version: "24"

      - name: Setup Rust
        uses: dtolnay/rust-toolchain@stable

      - name: Setup uv
        uses: astral-sh/setup-uv@v5

      - name: Setup Python
        run: uv python install 3.11

      - name: Install Node dependencies
        run: npm install

      - name: Sync Python workspace
        run: uv sync --all-packages

      - name: Check build123d examples
        run: npm run check:build123d

      - name: Check optional OCP STEP backend
        run: npm run check:ocp

      - name: Check mixed-intent CAD proof
        run: npm run check:mixed-intent

      - name: Check bearing-seat CAD proof
        run: npm run check:bearing-seat

      - name: Check counterbore CAD proof
        run: npm run check:counterbore

      - name: Check heat-set insert pocket CAD proof
        run: npm run check:insert-pocket

      - name: Check straight-slot CAD proof
        run: npm run check:slots

      - name: Check receipt explanations
        run: npm run check:explain

      - name: Check printable gallery
        run: npm run check:gallery

      - name: Check gallery render proof
        run: npm run check:gallery:render

      - name: Confirm generated artifacts are untracked
        run: |
          test -z "$(git status --short --untracked-files=no)"

  fresh-install:
    name: Fresh Install
    if: github.event_name == 'workflow_dispatch'
    runs-on: ubuntu-latest
    steps:
      - name: Checkout
        uses: actions/checkout@v4

      - name: Setup Node
        uses: actions/setup-node@v4
        with:
          node-version: "24"

      - name: Setup Rust
        uses: dtolnay/rust-toolchain@stable

      - name: Setup uv
        uses: astral-sh/setup-uv@v5

      - name: Setup Python
        run: uv python install 3.11

      - name: Install Node dependencies
        run: npm install

      - name: Check published install and starter fix loop
        run: npm run check:fresh-install