Skip to content

eval(deltawire): prepare 72-run preflight and semantic oracles #69

eval(deltawire): prepare 72-run preflight and semantic oracles

eval(deltawire): prepare 72-run preflight and semantic oracles #69

Workflow file for this run

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'