From 5a775610e254834e3917fa8746e4317598b33e6e Mon Sep 17 00:00:00 2001 From: w4ffl35 <25737761+w4ffl35@users.noreply.github.com> Date: Sat, 19 Sep 2026 12:49:16 -0600 Subject: [PATCH 1/2] ci: run the required checks on GitHub-hosted runners (hq#14) The five *required* jobs (`lint`, `test (3.12)`, `core-boundary`, `published-surfaces`, `packaging-guards`) move from the three self-hosted runners to `ubuntu-latest`. spikeforge is public, so hosted minutes are free, and this takes the merge gate off the queue that has cost three waves (observed: spikeforge#52 queued 32+ min with zero progress; the last full run took 2h17m). The seven non-required heavy jobs stay on the self-hosted pool; they no longer sit in front of a merge. Refs Capsize-Games/hq#14 --- .github/workflows/ci.yml | 25 ++++++++++++++++++++----- 1 file changed, 20 insertions(+), 5 deletions(-) diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index 07142e7..71af603 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -54,7 +54,10 @@ jobs: echo "leaf=$leaf" >> "$GITHUB_OUTPUT" lint: # Static checks are interpreter-version agnostic; run them once. - runs-on: [self-hosted, linux, x64, spikeforge-ci] + # GitHub-hosted on purpose: spikeforge is public, so hosted minutes are + # free, and this keeps the *required* checks off the three self-hosted + # runners whose queue was the fleet's bottleneck (hq#14). + runs-on: ubuntu-latest steps: - uses: actions/checkout@v4 @@ -82,7 +85,10 @@ jobs: test: # The full suite across every supported interpreter (python_requires). needs: changes - runs-on: [self-hosted, linux, x64, spikeforge-ci] + # GitHub-hosted on purpose: spikeforge is public, so hosted minutes are + # free, and this keeps the *required* checks off the three self-hosted + # runners whose queue was the fleet's bottleneck (hq#14). + runs-on: ubuntu-latest strategy: fail-fast: false matrix: @@ -371,7 +377,10 @@ jobs: # # Deliberately torch-free: readme_renderer plus the stdlib is the whole # dependency set, so this stays one of the fastest jobs in the matrix. - runs-on: [self-hosted, linux, x64, spikeforge-ci] + # GitHub-hosted on purpose: spikeforge is public, so hosted minutes are + # free, and this keeps the *required* checks off the three self-hosted + # runners whose queue was the fleet's bottleneck (hq#14). + runs-on: ubuntu-latest steps: - uses: actions/checkout@v4 @@ -423,7 +432,10 @@ jobs: # The static half of the core boundary: no module-level import of a # forbidden root, and no function-local import outside the lazy shims. # Pure stdlib, so no dependencies are installed. - runs-on: [self-hosted, linux, x64, spikeforge-ci] + # GitHub-hosted on purpose: spikeforge is public, so hosted minutes are + # free, and this keeps the *required* checks off the three self-hosted + # runners whose queue was the fleet's bottleneck (hq#14). + runs-on: ubuntu-latest steps: - uses: actions/checkout@v4 @@ -502,7 +514,10 @@ jobs: packaging-guards: # The three lightweight topology guards: disjoint import roots (PEP 420), # console-script ownership, and satellite pins == compatibility.json. - runs-on: [self-hosted, linux, x64, spikeforge-ci] + # GitHub-hosted on purpose: spikeforge is public, so hosted minutes are + # free, and this keeps the *required* checks off the three self-hosted + # runners whose queue was the fleet's bottleneck (hq#14). + runs-on: ubuntu-latest steps: - uses: actions/checkout@v4 From 19817ebc26b9a8f34ba72fb6d92162d1abcc5516 Mon Sep 17 00:00:00 2001 From: w4ffl35 <25737761+w4ffl35@users.noreply.github.com> Date: Sat, 19 Sep 2026 12:51:12 -0600 Subject: [PATCH 2/2] fix(packaging): drop Python 3.10, which the core can no longer support MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit `#52` added `capsize-commons>=0.1.1` to the core dependencies for §14 logging, but `capsize-commons` requires Python >=3.11. The declared floor and the classifiers still said 3.10, and `test (3.10)` now fails at install: ERROR: Could not find a version that satisfies the requirement capsize-commons>=0.1.1 ... Ignored the following versions that require a different python version: 0.1.1 Requires-Python >=3.11 The failure was masked because #52 was merged on a clause-8 bypass without its checks completing; running the job exposed it. Raise `requires-python` to >=3.11, drop the 3.10 classifier, and drop the 3.10 CI matrix cell. Refs Capsize-Games/hq#3 Capsize-Games/hq#14 --- .github/workflows/ci.yml | 2 +- packages/spikeforge/pyproject.toml | 6 ++++-- 2 files changed, 5 insertions(+), 3 deletions(-) diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index 71af603..05fc7dd 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -92,7 +92,7 @@ jobs: strategy: fail-fast: false matrix: - python-version: ${{ fromJSON(needs.changes.outputs.leaf == 'true' && '["3.12"]' || '["3.10", "3.11", "3.12", "3.13"]') }} + python-version: ${{ fromJSON(needs.changes.outputs.leaf == 'true' && '["3.12"]' || '["3.11", "3.12", "3.13"]') }} steps: - uses: actions/checkout@v4 diff --git a/packages/spikeforge/pyproject.toml b/packages/spikeforge/pyproject.toml index f3bbafc..12831b4 100644 --- a/packages/spikeforge/pyproject.toml +++ b/packages/spikeforge/pyproject.toml @@ -21,7 +21,10 @@ description = "Spiking neural network toolkit: LIF training, NIR export with dri # files: the distribution metadata points at the root documents while # setuptools' sandbox only reads files inside the project directory. readme = "README.md" -requires-python = ">=3.10" +# 3.10 support was dropped when the core adopted `capsize-commons` +# (`requires-python >=3.11`) for §14 logging in hq#3/#52. The declared floor +# must match what the declared dependencies actually support. +requires-python = ">=3.11" license = "BSD-3-Clause" license-files = ["LICENSE"] authors = [ @@ -48,7 +51,6 @@ classifiers = [ "Intended Audience :: Science/Research", "Operating System :: OS Independent", "Programming Language :: Python :: 3", - "Programming Language :: Python :: 3.10", "Programming Language :: Python :: 3.11", "Programming Language :: Python :: 3.12", "Programming Language :: Python :: 3.13",