Bump version numbers in server.json #6
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: Cross-SDK Test Suite | |
| # Finding 32: cross-SDK test workflow that runs Python, TypeScript, and | |
| # Go test suites in parallel and gates merges on cross-SDK ASD drift. | |
| # | |
| # The asd-drift-gate job runs first and acts as a hard precondition: | |
| # if the on-disk TS or Go glyph files don't match what would be | |
| # generated from the canonical Python source, all SDK test jobs are | |
| # skipped and the merge is blocked. This is the enforcement mechanism | |
| # for ADR-001 -- the canonical semantic dictionary is the single source | |
| # of truth, and the SDK files must always be regenerable. | |
| on: | |
| push: | |
| branches: [main] | |
| pull_request: | |
| branches: [main] | |
| workflow_dispatch: | |
| permissions: | |
| contents: read | |
| jobs: | |
| # ── Drift gate ──────────────────────────────────────────────────── | |
| asd-drift-gate: | |
| name: ASD cross-SDK no-drift gate | |
| runs-on: ubuntu-latest | |
| steps: | |
| - uses: actions/checkout@v4 | |
| - name: Set up Python | |
| uses: actions/setup-python@v5 | |
| with: | |
| python-version: "3.12" | |
| - name: Run gen_asd.py --check | |
| run: | | |
| python3 tools/gen_asd.py --check | |
| echo | |
| echo "ASD cross-SDK files are in sync with canonical Python source." | |
| # ── Python SDK ──────────────────────────────────────────────────── | |
| python-tests: | |
| name: Python SDK tests | |
| runs-on: ubuntu-latest | |
| needs: asd-drift-gate | |
| strategy: | |
| fail-fast: false | |
| matrix: | |
| python-version: ["3.10", "3.11", "3.12"] | |
| steps: | |
| - uses: actions/checkout@v4 | |
| - name: Set up Python ${{ matrix.python-version }} | |
| uses: actions/setup-python@v5 | |
| with: | |
| python-version: ${{ matrix.python-version }} | |
| - name: Install both packages from their pyproject.toml files | |
| # Editable installs of osmp[test] (the SDK with all test extras) and | |
| # osmp_mcp (the MCP server) pull in their declared dependencies | |
| # automatically. The "test" extras group in sdk/python/pyproject.toml | |
| # is the canonical source of truth for what the test suite needs -- | |
| # if a new test dep is required, add it to that group, not here. | |
| # CI always matches what real users get from PyPI plus exactly the | |
| # extras the test suite covers. | |
| run: | | |
| python -m pip install --upgrade pip | |
| pip install -e "sdk/python[test]" | |
| pip install -e osmp_mcp | |
| - name: Run pytest | |
| run: | | |
| python -m pytest tests/ -v --tb=short | |
| # ── TypeScript SDK ──────────────────────────────────────────────── | |
| typescript-tests: | |
| name: TypeScript SDK tests | |
| runs-on: ubuntu-latest | |
| needs: asd-drift-gate | |
| strategy: | |
| fail-fast: false | |
| matrix: | |
| node-version: ["18.x", "20.x", "22.x"] | |
| steps: | |
| - uses: actions/checkout@v4 | |
| - name: Set up Node.js ${{ matrix.node-version }} | |
| uses: actions/setup-node@v4 | |
| with: | |
| node-version: ${{ matrix.node-version }} | |
| - name: Install TypeScript SDK dependencies | |
| working-directory: sdk/typescript | |
| run: npm install | |
| - name: Type check | |
| working-directory: sdk/typescript | |
| run: npx tsc --noEmit | |
| - name: Run vitest | |
| working-directory: sdk/typescript | |
| run: npm test | |
| # ── Go SDK ──────────────────────────────────────────────────────── | |
| go-tests: | |
| name: Go SDK tests | |
| runs-on: ubuntu-latest | |
| needs: asd-drift-gate | |
| strategy: | |
| fail-fast: false | |
| matrix: | |
| go-version: ["1.21", "1.22", "1.23"] | |
| steps: | |
| - uses: actions/checkout@v4 | |
| - name: Set up Go ${{ matrix.go-version }} | |
| uses: actions/setup-go@v5 | |
| with: | |
| go-version: ${{ matrix.go-version }} | |
| cache-dependency-path: sdk/go/go.sum | |
| - name: Download modules | |
| working-directory: sdk/go | |
| run: go mod download | |
| - name: Vet | |
| working-directory: sdk/go | |
| run: go vet ./... | |
| - name: Test | |
| working-directory: sdk/go | |
| run: go test -v ./... | |
| # ── Aggregated status check ─────────────────────────────────────── | |
| cross-sdk-status: | |
| name: Cross-SDK test status | |
| runs-on: ubuntu-latest | |
| needs: [asd-drift-gate, python-tests, typescript-tests, go-tests] | |
| if: always() | |
| steps: | |
| - name: Check all jobs | |
| run: | | |
| if [[ "${{ needs.asd-drift-gate.result }}" != "success" ]]; then | |
| echo "ASD drift gate failed" | |
| exit 1 | |
| fi | |
| if [[ "${{ needs.python-tests.result }}" != "success" ]]; then | |
| echo "Python tests failed" | |
| exit 1 | |
| fi | |
| if [[ "${{ needs.typescript-tests.result }}" != "success" ]]; then | |
| echo "TypeScript tests failed" | |
| exit 1 | |
| fi | |
| if [[ "${{ needs.go-tests.result }}" != "success" ]]; then | |
| echo "Go tests failed" | |
| exit 1 | |
| fi | |
| echo "All cross-SDK tests passed." |