Skip to content

release: coordinate the Python 3.12 core floor #208

Description

@Jammy2211

Overview

Coordinate the five-package core release that publishes the already-merged Python 3.12 floor in dependency order. This phase does not add source changes: it locks exact main SHAs, records the pre-floor fallback releases, runs the release rehearsal/integration gates after authorization, and verifies the published metadata on both sides of the floor.

Manual release execution is human-required. TestPyPI/PyPI uploads, tags, and the final release will not be dispatched until the human chooses the version and explicitly authorizes this release.

Plan

  • Record the current unyanked PyPI releases that Python 3.11 can continue to resolve.
  • Lock and verify clean synchronized main SHAs for PyAutoNerves, PyAutoArray, PyAutoFit, PyAutoGalaxy, and PyAutoLens.
  • Obtain the human version choice and explicit authorization for the coordinated manual release.
  • After authorization, run the full Stage 0-3 release validation: preflight, unit evidence, TestPyPI rehearsal, exact-wheel workspace integration, ingest, and Heart verdict.
  • Require Heart GREEN for release; do not carry the development YELLOW acknowledgement into a release.
  • Delegate packaging/tagging/publication to the Build/Hands release path in dependency order.
  • Verify published wheels install on Python 3.12/3.13, reject the new exact release on 3.11, and preserve the recorded older unyanked fallback. Do not yank usable historical wheels.
Detailed release plan

Current PyPI fallback census (2026-07-29)

Distribution Last compatible unyanked release Current Requires-Python
autoconf 2026.7.15.1 >=3.9
autoarray 2026.7.29.1 >=3.9
autofit 2026.7.29.1 >=3.9
autogalaxy 2026.7.29.1 >=3.9
autolens 2026.7.29.1 >=3.9

These versions remain usable Python 3.11 fallback candidates after newer releases declare >=3.12.

Exact source heads

Repository Main SHA State
PyAutoNerves a9bf45612ecdf53abb586def7e5635ac7d84872d clean, equals origin/main
PyAutoArray 41c55a44f50ad3966591dd6317c59dd55beac7ba clean, equals origin/main
PyAutoFit 241f2d69c4d8d0d1df19765431caacfcc3468da9 clean, equals origin/main
PyAutoGalaxy b9d9927fae6b8b3359764f51c512fc2852a78793 clean, equals origin/main
PyAutoLens b40fb0ba6281eb868151f76226f5420a08ba44e7 clean, equals origin/main

Affected repositories

  • PyAutoHands (primary release executor)
  • PyAutoHeart (release validation and verdict)
  • PyAutoNerves
  • PyAutoArray
  • PyAutoFit
  • PyAutoGalaxy
  • PyAutoLens

Branch survey

This is a release of already-merged code. No feature branch is proposed; every package must be built from the exact clean main heads above.

Implementation and validation steps

  1. Refresh Heart and run the Release Agent Stage 0/1 preflight without dispatch.
  2. Ask for the coordinated version/minor choice and explicit release authorization.
  3. Only after that authorization, dispatch the TestPyPI rehearsal and capture exact artifacts and commit SHAs.
  4. Dispatch Heart release-mode workspace validation against the exact TestPyPI version.
  5. Ingest rehearsal and integration artifacts; require a fresh Heart GREEN verdict.
  6. Invoke the Build release door with the chosen version. No force on YELLOW or RED.
  7. Check PyPI JSON/wheel metadata, supported installs, below-floor rejection, and Python 3.11 fallback behavior.
  8. Record results in PyAutoMind and this issue. Issue closure remains a separate human action.

Key files and workflows

  • PyAutoHands .github/workflows/release.yml
  • PyAutoHands pre_build.sh
  • PyAutoHeart .github/workflows/workspace-validation.yml
  • PyAutoHeart heart/checks/verify_install.sh
  • PyAutoBrain release validate / release door

Original Prompt

Click to expand starting prompt

Python 3.12 floor — Phase 3: coordinated core release

Recheck PyPI last-compatible unyanked versions, obtain the human version choice, pass fresh Heart/pre-build gates, and release PyAutoNerves, PyAutoArray, PyAutoFit, PyAutoGalaxy, and PyAutoLens coherently. Verify the published wheels reject Python 3.11 and install on 3.12/3.13. Do not yank usable historical wheels. Record every unyanked pre-floor fallback that pip can still select so Phase 6 describes rollback behavior accurately rather than promising a hard resolution error.

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions