From fa6483665d83ad77e968949f31c244d4ff394a16 Mon Sep 17 00:00:00 2001 From: cmichaelsd Date: Mon, 3 Aug 2026 11:55:56 +0900 Subject: [PATCH] ENG-39 ENG-39.01/.02: Add the pull_request CI gate, and verify it needs nothing Mirrors Forman's workflow: checkout, setup-python 3.11, `pip install -e ".[dev]"`, then `ruff check`, `ruff format --check` and `pytest` as three separate steps so a failure names itself. The four `run:` values are byte-for-byte the commands ENG-39.02 verified in a throwaway Python 3.11.15 venv: all four exit 0, with `ruff check` clean, 19 files already formatted and 87 tests passing. No secrets and no `permissions:` block. The pinned Forman dependency resolves over unauthenticated https - verified with every Anthropic, Linear and GitHub token unset, no credential helper and `GIT_TERMINAL_PROMPT=0` - and the suite passes inside a fresh network namespace, so nothing in it reaches the network. Sub-tasks .01 and .02 land in one commit: .02 changed no files, it only verified what .01 wrote. Co-Authored-By: Claude Opus 5 --- .github/workflows/ci.yml | 27 +++++++++++++++++++++++++++ 1 file changed, 27 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..71c688f --- /dev/null +++ b/.github/workflows/ci.yml @@ -0,0 +1,27 @@ +name: CI + +on: pull_request + +jobs: + test: + runs-on: ubuntu-latest + steps: + - name: Check out the repository + uses: actions/checkout@v4 + + - name: Set up Python + uses: actions/setup-python@v5 + with: + python-version: '3.11' + + - name: Install dependencies + run: pip install -e ".[dev]" + + - name: Lint + run: ruff check + + - name: Check formatting + run: ruff format --check + + - name: Test + run: pytest