0.9.6.24: issued_on and scheduled_for were filled with prose because … #245
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: CI | |
| on: | |
| push: | |
| branches: [main] | |
| pull_request: | |
| branches: [main] | |
| jobs: | |
| test: | |
| name: Python ${{ matrix.python-version }} | |
| runs-on: ubuntu-latest | |
| strategy: | |
| fail-fast: false | |
| matrix: | |
| python-version: ["3.10", "3.11", "3.12", "3.13"] | |
| steps: | |
| - uses: actions/checkout@v4 | |
| - name: Set up Python ${{ matrix.python-version }} | |
| uses: actions/setup-python@v5 | |
| with: | |
| python-version: ${{ matrix.python-version }} | |
| cache: pip | |
| - name: Install dependencies | |
| run: | | |
| pip install -e ".[dev]" | |
| pip install pytest-cov | |
| - name: Run tests with coverage | |
| run: | | |
| pytest tests/ -q --tb=short --cov=misata --cov-report=xml --cov-report=term-missing | |
| - name: Run scale test | |
| run: | | |
| pytest tests/test_integration_scale.py -v -m slow --tb=short | |
| # The Gauntlet: 11 tables, 126 independent SQL assertions run by DuckDB | |
| # against the emitted frames. Known-red assertions (named roadmap items) | |
| # are expected failures; any UNEXPECTED failure is a correctness | |
| # regression and fails the build. A known-red that starts passing also | |
| # fails, so the roadmap list can never go stale. | |
| - name: Run the Gauntlet (relational-integrity release gate) | |
| run: | | |
| python -m benchmarks.gauntlet | |
| # The Warren: a second conformance suite with a deliberately different | |
| # shape (multi-tenant, self-referential hierarchy, event-sourced). It | |
| # exists because the Gauntlet hit 100% and a suite at 100% has stopped | |
| # being able to find anything; the Warren found 22 failures on its first | |
| # run, four of which were real engine gaps. | |
| - name: Run the Warren (multi-tenant + hierarchy release gate) | |
| run: | | |
| python -m benchmarks.warren | |
| # The Ledger: bitemporal (two independent time axes) and graph-shaped | |
| # (a DAG edge table plus its transitive closure). Third shape, same | |
| # contract. Together the three suites cover 284 assertions. | |
| - name: Run the Ledger (bitemporal + graph release gate) | |
| run: | | |
| python -m benchmarks.ledger | |
| - name: Audit dependencies for known vulnerabilities | |
| if: matrix.python-version == '3.11' | |
| run: | | |
| pip install pip-audit | |
| pip-audit --skip-editable || true # informational for now; tighten to blocking after a clean baseline | |
| - name: Upload coverage to Codecov | |
| if: matrix.python-version == '3.11' | |
| uses: codecov/codecov-action@v4 | |
| with: | |
| token: ${{ secrets.CODECOV_TOKEN }} | |
| files: coverage.xml | |
| fail_ci_if_error: false | |
| stranger: | |
| name: The docs, run as a stranger would | |
| runs-on: ubuntu-latest | |
| steps: | |
| - uses: actions/checkout@v4 | |
| - uses: actions/setup-python@v5 | |
| with: | |
| python-version: "3.12" | |
| # Deliberately NOT `pip install -e .`. An editable install from inside | |
| # the repo is what hid the MCP server's missing extra in 0.9.6.1: the | |
| # dev environment already had the dependency, so the packaging bug was | |
| # invisible until someone installed the published wheel. This job builds | |
| # the wheel and installs it into a clean virtualenv, the way a reader | |
| # following the README does. | |
| - name: Install build tooling only | |
| run: python -m pip install --upgrade pip build | |
| - name: Run every documented example | |
| run: python tools/stranger.py --clean | |
| studio-stranger: | |
| name: A declaration is honoured or refused, never substituted | |
| runs-on: ubuntu-latest | |
| steps: | |
| - uses: actions/checkout@v4 | |
| - uses: actions/setup-python@v5 | |
| with: | |
| python-version: "3.12" | |
| - run: python -m pip install --upgrade pip | |
| - run: pip install -e . | |
| # In-process, so this gates every push without needing the API up. Run it | |
| # with `--api https://api.misata.studio` after a deploy to check the | |
| # served build agrees with this one. | |
| - name: Probe the schema surface the way a caller would | |
| run: python tools/studio_stranger.py --local |