scripts/install.sh claims macOS and Linux. On Linux it currently cannot get past step 2/7.
Evidence
The only install-smoke run since the floor moved — run 32714791913, on the chore-python-314-floor PR, 2026-08-24:
smoke (ubuntu-latest) ==> step 1/7: checking the platform
smoke (ubuntu-latest) ==> step 2/7: finding Python >= 3.14
smoke (ubuntu-latest) installer: FAIL: no Python >= 3.14 found on PATH -- keel requires 3.14 or later.
smoke (macos-latest) found /opt/homebrew/bin/python3 (3.14.6) and installed cleanly, then was cancelled by fail-fast.
So the Linux leg has been red since 2d3934f raised the floor, and the green run everyone remembers (32575568030) was the 3.11-floor script.
Why it matters beyond CI
ubuntu-latest is a reasonable proxy for a mainstream Linux box. Python 3.14 is new enough that most distributions do not package it yet. The script's own header advertises "installs keel on macOS or Linux", and README.md publishes the one-liner without qualification — so a Linux reader is invited to run a command that will stop at step 2/7.
The candidate loop also narrowed to python3 python3.14, so a user who has 3.14 installed as, say, python3.14.4 or under pyenv without shimming python3 will also be turned away.
Options
- Say so where the one-liner is published — README and
docs/desktop-install.md — that Linux needs 3.14 installed first.
- Have the script name the remedy in its failure message (deadsnakes, pyenv, uv's own
uv python install 3.14) rather than just "install a newer Python".
- Reconsider whether the installer needs the repo's floor at all. It installs v0.11.2 wheels, which declare
requires-python = ">=3.11". The script is refusing Pythons the wheels it installs would run on.
Option 3 looks like the real bug: the floor that matters to an installer is the floor of the artifact being installed, not the floor of the development tree.
Verified against
Live raw.githubusercontent.com/CodeGateSoftware/keel/main/scripts/install.sh, git show v0.11.2:pyproject.toml (>=3.11), git show origin/main:pyproject.toml (>=3.14), and the run log above.
scripts/install.shclaims macOS and Linux. On Linux it currently cannot get past step 2/7.Evidence
The only
install-smokerun since the floor moved — run32714791913, on thechore-python-314-floorPR, 2026-08-24:smoke (macos-latest)found/opt/homebrew/bin/python3 (3.14.6)and installed cleanly, then was cancelled by fail-fast.So the Linux leg has been red since
2d3934fraised the floor, and the green run everyone remembers (32575568030) was the 3.11-floor script.Why it matters beyond CI
ubuntu-latestis a reasonable proxy for a mainstream Linux box. Python 3.14 is new enough that most distributions do not package it yet. The script's own header advertises "installs keel on macOS or Linux", andREADME.mdpublishes the one-liner without qualification — so a Linux reader is invited to run a command that will stop at step 2/7.The candidate loop also narrowed to
python3 python3.14, so a user who has 3.14 installed as, say,python3.14.4or under pyenv without shimmingpython3will also be turned away.Options
docs/desktop-install.md— that Linux needs 3.14 installed first.uv python install 3.14) rather than just "install a newer Python".requires-python = ">=3.11". The script is refusing Pythons the wheels it installs would run on.Option 3 looks like the real bug: the floor that matters to an installer is the floor of the artifact being installed, not the floor of the development tree.
Verified against
Live
raw.githubusercontent.com/CodeGateSoftware/keel/main/scripts/install.sh,git show v0.11.2:pyproject.toml(>=3.11),git show origin/main:pyproject.toml(>=3.14), and the run log above.