Skip to content

AGENTS.md: drop the process restatement and the pointers to specs #10

AGENTS.md: drop the process restatement and the pointers to specs

AGENTS.md: drop the process restatement and the pointers to specs #10

Workflow file for this run

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