From fd511e23e5de243f7d7aad16eea2064e17634773 Mon Sep 17 00:00:00 2001 From: cmichaelsd Date: Mon, 3 Aug 2026 12:11:21 +0900 Subject: [PATCH 1/2] ENG-37 ENG-37.01: Add pull_request CI workflow: ruff gate, then pytest Forman had no CI, so a pull request carried no automated signal. This adds .github/workflows/ci.yml, triggered only on pull_request with GitHub's default activity types. Two jobs on ubuntu-latest, both pinned to Python 3.11 (the declared floor in requires-python, even though local venvs run 3.14): a lint job running `ruff check` then `ruff format --check`, and a test job gated on it via `needs:`, so a lint failure means pytest never runs. Splitting them gives two distinct check names in the PR UI. pytest is invoked bare; testpaths and pythonpath in pyproject handle discovery of the src-layout package. The suite is hermetic and the only runtime dependency comes from PyPI, so the workflow needs no secrets. Co-Authored-By: Claude Opus 5 --- .github/workflows/ci.yml | 41 ++++++++++++++++++++++++++++++++++++++++ 1 file changed, 41 insertions(+) create mode 100644 .github/workflows/ci.yml diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml new file mode 100644 index 0000000..b297aaf --- /dev/null +++ b/.github/workflows/ci.yml @@ -0,0 +1,41 @@ +name: CI + +on: + pull_request: + +jobs: + lint: + name: Lint + runs-on: ubuntu-latest + steps: + - uses: actions/checkout@v4 + + - uses: actions/setup-python@v5 + with: + python-version: '3.11' + + - name: Install dependencies + run: pip install -e ".[dev]" + + - name: Ruff check + run: ruff check + + - name: Ruff format check + run: ruff format --check + + test: + name: Test + needs: lint + runs-on: ubuntu-latest + steps: + - uses: actions/checkout@v4 + + - uses: actions/setup-python@v5 + with: + python-version: '3.11' + + - name: Install dependencies + run: pip install -e ".[dev]" + + - name: Pytest + run: pytest From ca5bb8156642c86e45fe9117b9e7ceff8001bf0e Mon Sep 17 00:00:00 2001 From: cmichaelsd Date: Mon, 3 Aug 2026 12:13:44 +0900 Subject: [PATCH 2/2] ENG-37 ENG-37.02: Empty commit to verify CI re-runs on PR synchronize Co-Authored-By: Claude Opus 5