-
Purpose: Milestones mark the completion of project cycles and achievement of predefined goals. A milestone is a timeline point marking the end of a project cycle, where a set of goals defined at the start of the cycle have been completed. Goals could be tasks associated with feature development, testing phase completion, etc. List & Open issues.
-
Types of Milestones: Differentiate between major, minor and patch release releases to track progress effectively.
Make a milestone related to a release on possibly a minor release schedule (e.g. monthly schedule). Differentiate between the different types of releases (minor, major, patch).
2. Git Workflow Branching Model (Made with mermaid)
-
main: Stores official release history with tagged version numbers (see top row in the diagram above).
-
develop: This branch is the integration branch for features.
-
feature: Branch off of
developfor new feature development. Features get merged todevelop(never to main). -
bug: For fixing specific bugs introduced during the production phase.
-
hotfix: Quickly corrects bugs in the latest release version; branched off
main. -
release/vX.Y.Z: Temporary branch created from
develop; used to:- Collect Scriv changelog fragments here.
- Apply final QA or documentation updates.
- Merge into
mainwhen ready and tag the release.
Branches created for the purpose of a Pull Request should be directly related to an open issue within the project’s issue tracker. This ensures that all code changes are tied to specific tasks or features, facilitating better organisation and tracking of contributions. Below are the branch naming conventions:
-
Feature:
feature/<issue number>/short-description -
Bug:
bug/<issue number>/short-description -
Hotfix:
hotfix/<issue number>/short-description -
Release:
release/v<MAJOR>.<MINOR>.<PATCH>
Notes:
- Replace
<ISSUE_NUMBER>with the tracker issue number. - Keep short-description concise.
- Release branches are short-lived and should not include ongoing development.
Replace with the corresponding issue number and provide a brief description of the changes in `short_description`.
-
Pull the latest changes from the remote repository
-
Checkout
develop -
Create a new feature branch
-
Ensure the feature branch’s commits align with the defined scope
Tip: Keep feature branch development focused on the defined scope outlined in the corresponding issue. Avoid introducing unrelated changes. Instead, open a new issue for out-of-scope features or bugs, creating a separate branch for their development.
-
Run training and metrics validation tests locally to confirm no breaking behaviour or errors were introduced. Include test reports as per the PR template.
-
Open a Pull Request to start the review process, ensuring to map the branch correctly to the target branch (i.e.
feature->developorhotfix->main). -
In the description of the Pull Request, explicitly state whether the PR resolves or closes an open issue by using one of the following formats:
-
"Solves #"
-
"Closes #"
-
Example: "Solves #12345" or "Closes #8679".
-
Ensure that the PR meets the defined requirements and passes Continuous Integration (CI) tests.
-
Assign a reviewer, assign yourself as assignee, select the correct project, choose the correct label that describes the nature of the issue (e.g. bug, enhancement, etc), choose Milestone if applicable if the issue is associated with a specific milestone or target release.
-
Address reviewer feedback in threads and iterate as needed, implementing the requested changes or explaining why the task is implemented in the manner it is. Respect the rule: Whoever opens the thread/conversation in the Pull Request is responsible for closing it.
- Approval and Merging: Once the reviewer approves the PR and all feedback is addressed, merge the feature branch into develop. Note, it is the reviewer who is responsible for merging the PR when satisfied with the changes.
WaveDiff uses Scriv to manage its changelog and release notes.
Instead of editing CHANGELOG.md directly during development, contributors add small changelog fragments describing user-visible changes. These fragments are committed alongside pull requests and collected automatically when preparing a release.
This approach:
- Avoids merge conflicts on the changelog
- Ensures consistent, structured release notes
- Keeps release notes focused on user impact
- Fragments are stored in
changelog.d/ - Each fragment corresponds to a single pull request
- Fragments must be staged and committed as part of the PR
- Contributors create fragments using:
scriv create
Notes:
- Do not collect fragments in your PR; leave [Unreleased] in CHANGELOG.md.
- [Unreleased] is always at the top; contributors never write directly into it.
Fragment creation and writing guidelines are documented in CONTRIBUTING.md.
- Changelog fragments should reflect what is merged, not how it is implemented.
- Feature branches should include only feature-related fragments
- Bug fixes discovered during feature development should be moved to a separate branch and pull request, with their own fragment This separation keeps release notes accurate and enables clean backports
-
Each milestone targets a release (feature, patch, etc).
-
Create release branch with
git checkout -b release/vX.Y.Z developupon completing a milestone -
Collect changelog fragments and generate release notes using:
scriv collect --version vX.Y.Z
-
Ensure all checklist items for the release are completed.
-
Merge the PR into main and tag the release.
-
Regularly review and refine the workflow based on team feedback and lessons learned.
-
Encourage collaboration and communication among team members to streamline processes and enhance productivity.
-
Maintain up-to-date documentation outlining the development workflow and procedures.
-
Provide training to new team members and ensure existing members are familiar with the workflow and best practices.
-
Explore automation tools to streamline repetitive tasks, such as testing, code formatting, and deployment.
-
Integrate with CI/CD pipelines for automated testing and deployment processes.
