Release and Upgrade Notes
This page explains how to think about PolePosition releases and generated project upgrades.
Release Status
PolePosition is currently beta software. The project lifecycle shape is stable enough for normal use, while some surfaces are intentionally still growing:
- module templates
- opt-in integration scaffolds
- example scenarios
- production hardening guidance
Read Feature Status for the current maturity map.
Upgrade the CLI
If PolePosition was installed with uv tool:
uv tool upgrade poleposition
If it was installed with pip:
python -m pip install --upgrade poleposition
Then verify:
polepos version
Use polepos upgrade inside a generated project for a read-only readiness
report that includes the CLI version, package, database mode, recorded module
templates, enabled integrations, and current polepos check status.
Publish a Release
Repository releases publish to PyPI through GitHub Actions and PyPI Trusted
Publishing. The workflow is .github/workflows/release.yml, and it runs when a
GitHub release is published.
Before the first trusted publish, configure the existing PyPI project with a GitHub Actions Trusted Publisher:
PyPI project: poleposition
Owner: polepos
Repository: poleposition
Workflow name: release.yml
Environment name: pypi
The release workflow builds the source distribution and wheel, checks the
package metadata with twine check, and publishes through
pypa/gh-action-pypi-publish without a PYPI_API_TOKEN secret. The publish job
is the only job with id-token: write; keep that permission scoped to the
publish job if the workflow grows.
The pypi GitHub Actions environment is intentionally part of the trusted
publisher identity. Configure any required reviewer or branch/tag restrictions
on that environment in GitHub before relying on automated publishing.
Generated Projects Are Not Auto-Rewritten
Upgrading the CLI does not rewrite an existing generated project. New versions can add better defaults for future projects and new lifecycle commands, but existing application code stays under your control.
Use:
polepos check
to verify whether the project still follows the PolePosition lifecycle contract.
Module Service Layout
New generated modules use a module-local services/ package instead of a root
service.py file:
src/<package>/modules/customers/
services/
__init__.py
customers_service.py
Existing generated projects are not rewritten automatically. If an older module
still uses service.py, either keep managing it manually or move the service
class into the new layout and update imports before relying on the latest
polepos check lifecycle expectations.
Recommended Upgrade Flow
For an existing generated project:
uv tool upgrade poleposition
cd shop-api
polepos upgrade
polepos check --fix
polepos check
uv sync --extra dev
uv run pytest
If polepos check reports drift, restore the expected file, marker, import,
dependency, setting, or env value. If your team intentionally owns that surface
manually, document the drift in the project.
When Release Notes Matter Most
Pay close attention to release notes when a change touches:
- generated project structure
- managed markers
- module generation
- integration generation
- Alembic or database command behavior
polepos checkexpectations
Those areas affect whether lifecycle commands can keep growing a project safely.
Generated App Dependency Upgrades
Generated projects declare their own dependencies in the generated
pyproject.toml. Upgrade them like normal application dependencies:
uv add "fastapi[standard]>=0.115.0"
uv sync --extra dev
uv run pytest
polepos check
Review generated migrations before applying them to shared environments.
Changelog
Repository changes are summarized in the Changelog.