From df9fcbe1fd450d0c7a8aae0fcf2e0e7590a3bca0 Mon Sep 17 00:00:00 2001 From: Ugur Cekmez Date: Wed, 26 Aug 2026 21:59:19 +0300 Subject: [PATCH] ci: run the reference implementation test suites MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Both reference stacks ship test suites — Node vitest, Python pytest with a 100% coverage gate — and no CI job ran either of them. The workflow covers every `@eep-dev/*` and `eep-*-python` package plus cross-impl, but skipped the stacks in `examples/eep-reference-implementation/`. README describes that directory as the stack "used by contributors and CI to exercise Layer 1 discovery, Layer 2 subscribe/stream, Layer 3 pulse and the gate endpoints against shared parity fixtures". CI did not use it. A subscribe handler reading `callback_url` when the schema defines `delivery_url` shipped undetected as a direct result. The Python job deliberately installs the workspace packages from source before the app's own dependencies. Without that, the job tests whatever `eep-gates` currently resolves from PyPI rather than the tree the PR changes, so a regression would surface only after a release — and a stale local copy can make the suite fail for reasons that have nothing to do with the change under review. Verified by reproducing both jobs locally from clean environments: Node 18 passed, Python 27 passed at 100% coverage. Refs: EEP audit 2026-08, follow-on from finding A1 Signed-off-by: Ugur Cekmez --- .github/workflows/test.yml | 46 ++++++++++++++++++++++++++++++++++++++ 1 file changed, 46 insertions(+) diff --git a/.github/workflows/test.yml b/.github/workflows/test.yml index 687ec9d..09b31b4 100644 --- a/.github/workflows/test.yml +++ b/.github/workflows/test.yml @@ -439,6 +439,52 @@ jobs: # ──────────────────────────────────────────────────────────────────── # Schema → types drift gate # ──────────────────────────────────────────────────────────────────── + # The reference stacks ship test suites (Node vitest, Python pytest with a + # 100% coverage gate) that no job ran. README calls this the stack + # "contributors and CI use to exercise Layer 1 discovery, Layer 2 + # subscribe/stream, Layer 3 pulse and the gate endpoints" — so it needs to + # actually run. A subscribe handler reading the wrong request field shipped + # undetected because nothing here executed these tests. + test-reference-implementation-node: + runs-on: ubuntu-latest + defaults: + run: + working-directory: examples/eep-reference-implementation/node + steps: + - uses: actions/checkout@v7 # renovate: pin + - uses: actions/setup-node@v7 # renovate: pin + with: + node-version: '22' + - name: Build linked workspace dependencies + run: | + for dep in gates signer validator; do + (cd "../../../packages/@eep-dev/$dep" && npm ci && npm run build) + done + - run: npm install + - run: npx vitest run + + test-reference-implementation-python: + runs-on: ubuntu-latest + defaults: + run: + working-directory: examples/eep-reference-implementation/python + steps: + - uses: actions/checkout@v7 # renovate: pin + - uses: actions/setup-python@v6 # renovate: pin + with: + python-version: '3.11' + # Install the workspace sources, not the published wheels. Otherwise + # this job tests whatever is currently on PyPI rather than the tree the + # PR changes, and a regression here would go unnoticed until release. + - name: Install workspace EEP packages from source + run: | + python -m pip install --upgrade pip + pip install -e ../../../packages/eep-gates-python + pip install -e ../../../packages/eep-signer-python + pip install -e ../../../packages/eep-validator-python + - run: pip install -e . pytest pytest-cov httpx + - run: python -m pytest tests/ -q + # The Internet-Draft is the document this project intends to submit for # standardisation. It described a different manifest than the one that # ships — different field names, different required set — and nothing