Prepare Python 3.11 floors and phased 0.10 prereleases

Merged
MA
20d ago
+699-193

The 0.10 prerelease train needs sibling releases that include the Python 3.11 minimum. Raise every runtime sibling floor to the .dev0 of the sibling's next version, so each dependent's floor lifts to the release an earlier phase publishes. Exclude the earlier hosting CLI alpha that predates the Python floor change, and let the hosting CLI take the SDK's upcoming 0.1.0 train within its cap.

Make publish-last lockstep groups directional:

  • Early members (reflex-base) release on their own, from their own baseline, and get their own Dispatch checkbox.
  • A publish-last member (reflex) advances from its own baseline and needs every early member tagged at that version. An existing tag is reused; otherwise the early member is planned alongside. Planning checks the exact pin against the declared requirement, so a floor raised past the reusable tag stops the release before any changelog is bumped.
  • publish-last members need only the early members, never each other, so pin-exact groups with several late members cannot deadlock.
  • A package with an unsatisfiable pin is held back before its version is planned, so an action that does not apply to it cannot stop its siblings. A package whose needed partner is blocked is held back with it; an explicit selection that cannot release fails.
  • prepare-publish requires the early members' tags before a late member builds, including for a manual publish dispatch.
  • Groups without publish-last keep their symmetric behaviour and shared checkbox.

Release order

This is one valid schedule for the current branch. Component names below omit reflex-components-. Wait for each phase's uploads and tags before materializing the next; when new-prerelease-minor returns a new branch, use that branch for subsequent phases.

PhaseActionPackages and target versions
1continued-prereleasereflex-base 0.10.0a2
2new-prerelease-minorreflex-build-sdk 0.1.0a1, reflex-release 0.2.0a1, lucide 1.1.0a1
3new-prerelease-minorreflex-hosting-cli 0.2.0a1, sonner 0.10.0a1
4continued-prereleasecore, gridjs, moment 0.10.0a2
5new-prerelease-minordataeditor, react-player 0.10.0a1
6continued-prereleaseradix, plotly, recharts 0.10.0a2
7continued-prereleasecode 0.10.0a2
8continued-prereleasemarkdown 0.10.0a2
9continued-prereleasereflex 0.10.0a2, reusing the base tag from phase 1
10continued-prereleasereflex-docgen 0.10.0a2

Validation

  • The release, min-deps and workflow-gate unit suites pass, with new coverage for tag reuse, the plan-time pin check, independent late members, a blocked dependent held back ahead of an inapplicable action, and explicit selection of a blocked dependent.
  • Ruff, pyright, uv lock --check and reflex-release sync --check are clean.
  • scripts/check_min_deps.py passes for reflex-hosting-cli and reflex-release. It fails for reflex and the components on this branch because uv does not opt into prereleases for a transitive dev floor (hosting-cli on reflex-build-sdk, core on sonner). Those floors lift to published versions as the phases run, and the check does not run for pull requests into r/pre-*.

Submission checklist

  • Followed CONTRIBUTING.md and checked for an existing PR covering this change.
  • Added regression tests and verified them locally.
  • Updated documentation and package news fragments.
  • Linted and formatted the changes.

šŸ¤– Generated with Claude Code

https://claude.ai/code/session_01MZxGmMwCvKGcUJu6TK99jZ