|
| 1 | +# RELEASE.md |
| 2 | + |
| 3 | +## Overview |
| 4 | +This document describes the release process for the project. It outlines how release candidates are prepared, how testing is performed, how the final package is published, and what conventions the project uses for versioning and communication. The goal is to ensure reliability, transparency, and predictability for users and contributors. |
| 5 | + |
| 6 | +## Release Cadence |
| 7 | +Releases are prepared weekly, with work occurring roughly on the following schedule: |
| 8 | + |
| 9 | +- **Mon–Tue:** Identify and finalize high‑priority pull requests for inclusion. |
| 10 | +- **Wed:** Merge selected pull requests, lock down changes, and cut the release. |
| 11 | + |
| 12 | +This schedule may shift depending on team availability, urgency of fixes, and the stability of the codebase. |
| 13 | + |
| 14 | +## Versioning |
| 15 | +This project follows **[Semantic Versioning (semver)](https://semver.org)**. Breaking changes must be clearly documented and highlighted in release notes. |
| 16 | + |
| 17 | +## Pre‑Release Coordination |
| 18 | +### 1. Identify Candidate Pull Requests |
| 19 | +Early in the week, maintainers review open pull requests and determine which ones should be included in the upcoming release. |
| 20 | + |
| 21 | +### 2. Merge or Defer Selected Pull Requests |
| 22 | +By mid‑week, all targeted PRs should be merged or explicitly deferred. No new PRs should be merged once the release process begins. |
| 23 | + |
| 24 | +## Release Process |
| 25 | +### 1. Freeze `main` |
| 26 | +Once the release process begins, no new PRs may be merged into `main`. |
| 27 | + |
| 28 | +### 2. Run the Full Test Suite |
| 29 | +All tests must pass before proceeding. The suite includes unit tests, integration tests, and example workflows. Issues are classified into quick fixes or larger problems requiring release delay. This should be run against python versions 3.11, 3.12, and 3.13. |
| 30 | + |
| 31 | +### 3. Trigger Release Automation |
| 32 | +A GitHub Actions workflow handles the CI pipeline, branch cutting, and publishing to PyPI. |
| 33 | + |
| 34 | +## Post‑Release Steps |
| 35 | +### 1. Announcement & Communication |
| 36 | +When a release includes noteworthy updates—especially breaking API changes—maintainers should publish release notes and communicate updates publicly. |
| 37 | + |
| 38 | +### 2. Documentation Synchronization |
| 39 | +Documentation must be updated before the release is finalized. API Documentation is automatically generated. |
| 40 | + |
| 41 | +### 3. Transparency: Test Strategy & Results |
| 42 | +Testing methodology and coverage information may be made public where appropriate. |
| 43 | + |
| 44 | +## Release Types |
| 45 | +- **Fix releases** – bug fixes and stability improvements |
| 46 | +- **Feature releases** – new capabilities, backward compatible |
| 47 | +- **Breaking releases** – major API revisions |
| 48 | + |
| 49 | +## Supported Use Cases & Stability |
| 50 | +The project is in **beta**, so users should expect rapid iteration and occasional breaking changes. |
| 51 | + |
| 52 | +## Future Improvements |
| 53 | +Future enhancements may include: |
| 54 | +- add package dependency tests |
| 55 | + - ensure each piece of mellea can run with only its necessary mellea package (ie huggingface with mellea[hf]) |
| 56 | +- release candidate branch |
| 57 | + - the job supports a branch selector; we should make sure it works as expected |
| 58 | + - this also means we need to keep track of which PRs need to be double merged (ie into both the release and main branches) |
| 59 | +- improved PR coordination |
| 60 | + - this becomes less necessary with a candidate release branch |
| 61 | +- publishing a standardized test strategy |
0 commit comments