Skip to content

Validate the release tag and smoke-test the wheel without extras #85

Description

@bagowix

Problem

Two release risks are not covered by the current CI:

  1. The release workflow accepts any v* tag without checking that it matches the package version in interlock/version.py.
  2. The regular test suite runs from the source tree with all development dependencies and optional extras installed. An accidental import of an optional dependency from the core could therefore pass CI but make a plain pip install interlock-cb unusable.

For example, importing a Redis integration from interlock/__init__.py would work in the development environment, where redis is installed, but fail for users who install the core package only.

Proposed change

Add two small, independent checks:

  • a packaging smoke job in regular PR CI that builds the wheel, installs it without dependencies in a clean Python 3.11 environment, and imports the public package;
  • a release guard that verifies the pushed tag is exactly v{interlock.__version__} before publishing.

Acceptance criteria

  • PR CI builds the wheel and installs it into a clean Python 3.11 environment without optional extras or development dependencies.
  • The smoke test successfully imports interlock and verifies interlock.__version__.
  • The release workflow fails before the publish job when the tag and package version differ.
  • Existing build-once/artifact reuse, trusted publishing, and least-privilege permissions remain unchanged.
  • The distributed core remains dependency-free.

Non-goals

  • Automating changelog policy.
  • Adding a separate release checklist.
  • Duplicating metadata validation already performed by the build and PyPI upload tooling.

Metadata

Metadata

Assignees

Labels

enhancementNew feature or request

Projects

No projects

Milestone

No milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions