diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index 07142e7..05fc7dd 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,11 +85,14 @@ 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: - 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 @@ -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 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",