Problem
.github/workflows/sdk-publish.yml only runs on v* tag push, and it only runs the build — it does not run pytest. There is no test CI on push or PR at all. That means:
- Regressions land on main with no machine-verified signal.
- Platform-specific code paths (
fcntl on POSIX, msvcrt on Windows) are never exercised outside a single developer's local box.
- macOS parity is assumed via code-path equivalence with Linux, not verified.
Proposed
Add .github/workflows/test.yml that runs on:
push to main
pull_request targeting main
Matrix: { os: [ubuntu-latest, macos-latest, windows-latest], python: [\"3.11\", \"3.12\"] } — 6 jobs.
Each job:
- Checkout
- Setup Python
- Install
uv
cd Gradata && uv sync --all-extras --dev
uv run pytest tests/ -q
Acceptance
Out of scope
- Coverage gates
- Lint / type check jobs (separate workflow)
- Branch protection rule changes (repo settings)
Problem
.github/workflows/sdk-publish.ymlonly runs onv*tag push, and it only runs the build — it does not runpytest. There is no test CI on push or PR at all. That means:fcntlon POSIX,msvcrton Windows) are never exercised outside a single developer's local box.Proposed
Add
.github/workflows/test.ymlthat runs on:pushtomainpull_requesttargetingmainMatrix:
{ os: [ubuntu-latest, macos-latest, windows-latest], python: [\"3.11\", \"3.12\"] }— 6 jobs.Each job:
uvcd Gradata && uv sync --all-extras --devuv run pytest tests/ -qAcceptance
src/gradata/Out of scope