Repository navigation
AGENTS.md: drop the process restatement and the pointers to specs #8
Workflow file for this run
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: | |
| jobs: | |
| check: | |
| runs-on: ubuntu-latest | |
| steps: | |
| - uses: actions/checkout@v4 | |
| - name: Install uv and Python 3.14 | |
| uses: astral-sh/setup-uv@v5 | |
| with: | |
| python-version: "3.14" | |
| enable-cache: true | |
| # `--extra serve` installs OpenEnv, which the `seahaven.openenv` module and | |
| # its tests need. Without it the type check and the transport tests would | |
| # be skipped here and run nowhere. | |
| - name: Install the project | |
| run: uv sync --locked --extra serve | |
| # The suites guard the OpenEnv modules with `pytest.importorskip`, so an | |
| # extra that is installed but does not import would skip them and leave | |
| # CI green having tested none of `seahaven serve`, the environment or the | |
| # client. This is the one step that fails instead. | |
| - name: The serve extra imports | |
| run: uv run python -c "import seahaven.openenv" | |
| - name: Format | |
| run: uv run ruff format --check | |
| - name: Lint | |
| run: uv run ruff check | |
| - name: Types | |
| run: uv run ty check | |
| - name: Tests | |
| run: uv run pytest | |
| # The reference world is its own package with its own suite, and its own | |
| # pytest rootdir: a world is tested the way a world's author tests one. | |
| - name: Reference world tests | |
| run: uv run pytest worlds/projecttracker | |
| # The example extension is its own package with its own suite too, and its | |
| # world is a copy of ProjectTracker under its `tests/`. What it proves is | |
| # the extension contract: that a protocol the framework knows nothing about | |
| # rides on the published seams. | |
| - name: Example extension tests | |
| run: uv run pytest extensions/seahaven-xmlrpc | |
| # Seahaven is vendored into other people's products: nothing it installs | |
| # at runtime is copyleft. The gate covers every extra the project declares, | |
| # so it has to run in the environment the `--extra serve` sync above built | |
| # -- an extra whose licences cannot be read is not cleared, it fails. | |
| - name: Dependency licences | |
| run: uv run python scripts/check_licences.py |