Skip to content

Add independent advisory Python 3.14 compatibility evidence (#2636) - #2820

Merged
kitamura-tetsuo merged 2 commits into
mainfrom
codex/issue-2636-python314-compat
Nov 9, 2026
Merged

kitamura-tetsuo merged 2 commits into
mainfrom
codex/issue-2636-python314-compat

Conversation

@kitamura-tetsuo

Copy link
Copy Markdown
Owner

Closes #2636

Scope and implementation

  • Add a distinct, advisory Python 3.14 GitHub Actions workflow with the prerequisite Run Python CI jobs with a consistent, explicitly selected uv version. #2634 policy: pinned astral-sh/setup-uv@v7, uv 0.7.22, uv sync --locked --dev --extra test; no lock regeneration or dependency fallback.
  • Verify Python 3.14 and exact clean source identity, Black/isort/Flake8/package-wide mypy, prepare the existing immutable Python-only management fixture, verify real headless Chromium, and run the full not opencode_live selection. Failures remain failures, without continue-on-error.
  • Trigger on relevant workflow/dependency-policy PR changes, manual dispatch and weekly scheduled verification. No production Python 3.12 workflow, publication gate, Docker/runtime selection, or deploy authority changes.
  • Extend the existing active workflow/uv lock policy regressions to cover the new workflow and mutations to pinned uv action/version and locked installation; update documentation.

Bounded verification

  • Existing Python 3.12 container fixture, no network: 20 passed in tests/test_ci_uv_lock_policy.py (including real temporary lock fixtures, invalid lock and missing package failure cases).
  • Black 26.10.1 --check, isort 9.0.2 --check-only, git diff --check passed.
  • Advisory incompatibility observed locally: a Python 3.14.4 uv sync --locked attempt failed at the locked transitive scipy==1.15.3 (through aider-chat), which tried source compilation and lacked a Fortran compiler. This is not a successful Python 3.14 compatibility result; no lock or production dependency was modified. GitHub Actions must report any similar lock or build issue as non-success.

Merge guard

Required Python 3.12 exact-head PR workflows, review and threads must pass. The Python 3.14 check is advisory evidence only: a red result cannot be relabeled green or used as production compatibility proof.

No production or beta deployment performed.

Copy link
Copy Markdown
Owner Author

CI repair on the same PR branch: initial head a1ee843ca9e24920db417222705c6544cd7d63ef failed advisory run 42685281808 because setup-python selected 3.14 but uv run python silently selected the repository-default 3.12 virtual environment. This is a real failure to exercise the requested interpreter, not a dependency compatibility finding. Commit 8853bb25 explicitly binds all uv commands to UV_PYTHON=3.14 and adds a policy regression; validated locally with UV_PYTHON=3.14 uv run --no-sync python --version returning 3.14.4. Python 3.12 focused policy tests remain 20/20 passed, Black/isort unchanged. Exact-head GitHub Actions for 8853bb25 are pending; no success or merge eligibility claimed before they finish.

Copy link
Copy Markdown
Owner Author

Advisory evidence from exact head 8853bb25e1a0d4d12820c8a3738a65c212cdfc21: Python 3.14 Compatibility run 42685550026 failed at the locked dependency-install step. The job now actually selects Python 3.14 (not the previous incorrect Python 3.12). Locked transitive scipy==1.15.3 is built from source because a compatible wheel was not selected; the clean GitHub runner's SciPy Meson configuration reports Dependency "OpenBLAS" not found. This is a precise missing native build prerequisite/unavailable-wheel outcome, not proof of application-level Python compatibility nor a reason to loosen uv sync --locked or alter the production 3.12 lock. The advisory workflow must remain red on this head. All required Python 3.12 workflows are separate and still running. No merge until exact-head required checks and review obligations pass.

@kitamura-tetsuo kitamura-tetsuo left a comment

Copy link
Copy Markdown
Owner Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

dot adversarial review

Target head: 8853bb2
Contract: #2636, updated_at 2026-10-26T08:03:45Z; #2636/REQ-001–REQ-004. Prerequisite #2634 supplies the selected uv/setup action and lock-admission semantics, not additional child obligations.

Reviewed the complete three-file changed manifest and test manifest, current AGENTS.md, prerequisite contract, pyproject dependency groups, the source-quality workflow, management-fixture preparation and Chromium preflight consumers. No demonstrated actionable implementation violation or qualifying material test-oracle gap was identified in this change.

Requirement correspondence:

  • #2636/REQ-001: independent advisory workflow selects setup-uv@v7/uv 0.7.22, setup-python 3.14 and UV_PYTHON=3.14; actual event checkout selects the head SHA, then locked admission, explicit interpreter/source checks, Black/isort/Flake8/package-wide mypy, immutable management fixture, real Chromium preflight and the complete not-opencode_live selection.
  • #2636/REQ-002: admission uses uv sync --locked before downstream commands, with ordinary failing step semantics and no failure suppression, dependency removal or lock-generation fallback. Existing real temporary-project stale-lock/unavailable-package oracles now consume this workflow's setup command, assert nonzero status, no downstream execution and byte-identical lock.
  • #2636/REQ-003: all changed files are the new advisory workflow/documentation and policy regression; no production Python 3.12, packaging, worker selection or release authority change is present.
  • #2636/REQ-004: active-workflow discovery includes the new job, new workflow-selection assertions cover interpreter/trigger/test selection, and mutation cases reject differing uv/action and unlocked/project-pip installs. The shared policy's unpinned-version negative oracle remains active.

Actual execution limitation, not a compatibility pass: exact-head advisory run 42685550026, job 129391271927 checked out this SHA, selected CPython 3.14.10 and failed locked dependency admission with exit 1 at 2026-11-09T19:40:47Z. The retained log shows locked scipy 1.15.3 (via aider-chat) source preparation failing because OpenBLAS was not found. Quality, fixture, browser and test steps were skipped after that failure; none is claimed executed or compatible. This is observable non-success evidence allowed by REQ-002, not grounds to upgrade/remove locked dependencies or weaken tests. Successful all-tests Python 3.14 compatibility remains unestablished. This COMMENT is neither merge approval nor runtime-migration approval.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

Produce advisory Python 3.14 compatibility evidence while preserving the Python 3.12 production baseline.

1 participant