Release invariant
Keep the Python package version, Git tag, generated wheel metadata, and GitHub Release tag synchronized.
Native artifact rule
For Ary2Tower, the wheel must contain the compiled CLtowers modules corresponding to the target CPython ABI. The release process should compile them as part of the matrix, not assume that a source checkout’s local .so/.pyd files are portable.
Recommended sequence
- Update package version and release metadata.
- Run the Ary2Tower Cython build in the target CI environment.
- Build source distribution and wheels.
- Inspect wheel contents for
CLtowersextensions. - Install each wheel into an isolated environment.
- Import
cooprecsysand inspectbackend_info(). - Run model smoke tests, especially exact-N Ary2Tower inference.
- Create/update the GitHub Release.
- Publish the already-validated artifacts.
Repository source vs installed package
The source path may be src/cooprecsys/...; the installed wheel is imported as:
import cooprecsys
Never use src.models... as the consumer-facing import path in examples or tests intended to run against an installed wheel.