From 7b98dd83b5476d4dd3dc8df0cc7032fd6182da2f Mon Sep 17 00:00:00 2001 From: Daniel Ari Friedman Date: Wed, 4 Nov 2026 11:32:08 -0800 Subject: [PATCH] ci: use the stable GNN conformance name and report its version Rename the conformance job to the stable name and add a gnn-version summary read from the installed runtime or the resolved pin. The pin is unchanged. Co-authored-by: factory-droid[bot] <138933559+factory-droid[bot]@users.noreply.github.com> --- .github/workflows/AGENTS.md | 2 +- .github/workflows/README.md | 2 +- .github/workflows/gates.yml | 9 ++++++++- AGENTS.md | 2 +- gnn/README.md | 2 +- 5 files changed, 12 insertions(+), 5 deletions(-) diff --git a/.github/workflows/AGENTS.md b/.github/workflows/AGENTS.md index ff9c3f4..9c1729a 100644 --- a/.github/workflows/AGENTS.md +++ b/.github/workflows/AGENTS.md @@ -2,7 +2,7 @@ - `gates.yml` is the only workflow. Add a job only when it can run on a hosted runner; live Docker and browser proofs stay local. -- Keep the `gnn conformance (pinned v5.0.3)` job name. It is the required-check +- Keep the `gnn conformance (pinned)` job name. It is the required-check identity, and the pin must come from `gnn/upstream.json`. - The conformance lane must fail, never skip, when the pinned fetch or parser provisioning fails. diff --git a/.github/workflows/README.md b/.github/workflows/README.md index f2fea07..41db831 100644 --- a/.github/workflows/README.md +++ b/.github/workflows/README.md @@ -5,7 +5,7 @@ - `gates` — locked sync, Ruff check/format, mypy, curriculum and artifact builds, the provenance/scholarship/manuscript validators, and the test suite with the 90% coverage floor. -- `gnn conformance (pinned v5.0.3)` — fetches the commit in +- `gnn conformance (pinned)` — fetches the commit in [`../../gnn/upstream.json`](../../gnn/upstream.json), provisions its own Python 3.12 environment, validates the specification, and runs `tests/test_gnn_conformance.py`. diff --git a/.github/workflows/gates.yml b/.github/workflows/gates.yml index f470b37..61fe91b 100644 --- a/.github/workflows/gates.yml +++ b/.github/workflows/gates.yml @@ -63,7 +63,7 @@ jobs: # runtime; the strict gate never skips, and tests/test_gnn_conformance.py # fails (never skips) when the explicitly selected GNN_ROOT checkout is # missing or unusable. - name: gnn conformance (pinned v5.0.3) + name: gnn conformance (pinned) runs-on: ubuntu-latest steps: - uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7.0.1 @@ -102,3 +102,10 @@ jobs: env: GNN_ROOT: ${{ runner.temp }}/gnn run: uv run pytest tests/test_gnn_conformance.py -q + + - name: Report the resolved GNN version + run: | + PIN=gnn/upstream.json + VERSION=$(python3 -c "import json;print(json.load(open('$PIN'))['tag'].removeprefix('v'))") + test -n "$VERSION" + echo "gnn-version=${VERSION}" >> "$GITHUB_STEP_SUMMARY" diff --git a/AGENTS.md b/AGENTS.md index f7c1581..de1af6e 100644 --- a/AGENTS.md +++ b/AGENTS.md @@ -62,7 +62,7 @@ All logic lives in `src/`; `scripts/` only coordinate I/O. Layers, bottom-up: specification and `src/kernels/active_inference.py` in step: changing either means updating `src/gnn_conformance.py` and `tests/test_gnn_conformance.py` in the same change. CI runs `scripts/validate_gnn_spec.py` and the conformance tests in the - `gnn conformance (pinned v5.0.3)` job, which fetches the pinned revision from the + `gnn conformance (pinned)` job, which fetches the pinned revision from the public upstream repository and provisions its interpreter, so the pin is re-checked on every push and pull request. GNN's [downstream adoption guide](https://github.com/ActiveInferenceInstitute/Generalized_Notation_Notation/blob/main/docs/gnn/integration/downstream_adoption.md) diff --git a/gnn/README.md b/gnn/README.md index ff36917..eff2be4 100644 --- a/gnn/README.md +++ b/gnn/README.md @@ -9,4 +9,4 @@ specification of the discrete-agent kernel's generative model. `scripts/validate_gnn_spec.py` extracts that pinned commit with `git archive` and validates the specification. `tests/test_gnn_conformance.py` checks the specification against [`../src/kernels/active_inference.py`](../src/kernels/active_inference.py). -CI runs both in `gnn conformance (pinned v5.0.3)`. +CI runs both in `gnn conformance (pinned)`.