eval(deltawire): prepare 72-run preflight and semantic oracles #69
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: Verify Pitot lab | |
| on: | |
| pull_request: | |
| paths: | |
| - "labs/15-pitot/**" | |
| - "go.work" | |
| - ".github/workflows/pitot-lab.yml" | |
| push: | |
| branches: [main] | |
| paths: | |
| - "labs/15-pitot/**" | |
| - "go.work" | |
| - ".github/workflows/pitot-lab.yml" | |
| workflow_dispatch: | |
| permissions: | |
| contents: read | |
| concurrency: | |
| group: pitot-lab-${{ github.workflow }}-${{ github.ref }} | |
| cancel-in-progress: true | |
| jobs: | |
| runtime: | |
| name: Runtime (${{ matrix.os }}) | |
| strategy: | |
| fail-fast: false | |
| matrix: | |
| os: [ubuntu-latest, macos-latest, windows-latest] | |
| runs-on: ${{ matrix.os }} | |
| defaults: | |
| run: | |
| working-directory: labs/15-pitot/pitot | |
| steps: | |
| - uses: actions/checkout@v7 | |
| - uses: actions/setup-go@v7 | |
| with: | |
| go-version-file: labs/15-pitot/pitot/go.mod | |
| cache-dependency-path: labs/15-pitot/pitot/go.mod | |
| - name: Show toolchain | |
| run: go version | |
| # The module must stand on its own, independent of the workspace, so the | |
| # released projection is coherent. GOWORK=off proves that. | |
| - name: Test module (isolated) | |
| env: | |
| GOWORK: "off" | |
| run: go test ./... | |
| - name: Install Real Host CLIs | |
| if: matrix.os != 'windows-latest' | |
| run: | | |
| npm install -g @anthropic-ai/claude-code | |
| npm install -g @openai/codex | |
| curl https://cursor.com/install -fsS | bash | |
| - name: Run Claude CLI E2E Integration Test | |
| if: matrix.os != 'windows-latest' | |
| timeout-minutes: 2 | |
| run: bash labs/15-pitot/tests/e2e_claude_cli_test.sh < /dev/null | |
| working-directory: ${{ github.workspace }} | |
| - name: Run Cursor CLI E2E Integration Test | |
| if: matrix.os != 'windows-latest' | |
| timeout-minutes: 2 | |
| run: bash labs/15-pitot/tests/e2e_cursor_cli_test.sh < /dev/null | |
| working-directory: ${{ github.workspace }} | |
| - name: Run Codex CLI E2E Integration Test | |
| if: matrix.os != 'windows-latest' | |
| timeout-minutes: 2 | |
| run: bash labs/15-pitot/tests/e2e_codex_cli_test.sh < /dev/null | |
| working-directory: ${{ github.workspace }} | |
| - name: Build reference executable | |
| env: | |
| GOWORK: "off" | |
| run: go build ./cmd/pitot | |
| wind-tunnel: | |
| name: Wind tunnel (HEAD-to-HEAD) | |
| runs-on: ubuntu-latest | |
| steps: | |
| - uses: actions/checkout@v7 | |
| - uses: actions/setup-go@v7 | |
| with: | |
| go-version-file: labs/15-pitot/pitot/go.mod | |
| cache-dependency-path: labs/15-pitot/pitot/go.mod | |
| # Runs from the repo root so the committed go.work binds every co-resident | |
| # module at HEAD. This is where the future Boatstack <-> Pitot leg lands. | |
| - name: Integrated HEAD check | |
| run: go test -tags windtunnel ./labs/15-pitot/pitot/windtunnel/ | |
| import-boundary: | |
| name: Sensor-innocence boundary | |
| runs-on: ubuntu-latest | |
| steps: | |
| - uses: actions/checkout@v7 | |
| - uses: actions/setup-go@v7 | |
| with: | |
| go-version-file: labs/15-pitot/pitot/go.mod | |
| cache-dependency-path: labs/15-pitot/pitot/go.mod | |
| - name: Enforce sensor does not import bridge | |
| run: bash labs/15-pitot/scripts/check_import_boundary.sh | |
| projection: | |
| name: Generated distribution | |
| runs-on: ubuntu-latest | |
| steps: | |
| - uses: actions/checkout@v7 | |
| with: | |
| fetch-depth: 0 | |
| - uses: actions/setup-go@v7 | |
| with: | |
| go-version-file: labs/15-pitot/pitot/go.mod | |
| cache-dependency-path: labs/15-pitot/pitot/go.mod | |
| - uses: actions/setup-python@v6 | |
| with: | |
| python-version: "3.11" | |
| - uses: actions/setup-node@v4 | |
| with: | |
| node-version: "20" | |
| - name: Require an append-only release message | |
| if: github.event_name == 'pull_request' | |
| run: >- | |
| python labs/15-pitot/scripts/release_notes.py check-policy | |
| --repo . | |
| --base "${{ github.event.pull_request.base.sha }}" | |
| --head "${{ github.event.pull_request.head.sha }}" | |
| - name: Generate Types | |
| run: bash labs/15-pitot/scripts/generate_types.sh | |
| - name: Verify generated Python SDK syntax | |
| run: python -m py_compile labs/15-pitot/pitot-distribution/sdk/python/pitot/types.py | |
| - name: Verify projection and public surface | |
| run: python -m unittest discover -s labs/15-pitot/tests -p 'test_*.py' |