What
Establish semantic versioning (SemVer) with Git tagged releases for all internal ecosystem libraries, enabling downstream projects to pin specific versions instead of tracking main branch.
- Current: Internal dependencies (common_system, thread_system, container_system, logger_system, monitoring_system, network_system) are referenced by branch name (
main) in FetchContent and CI workflows
- Expected: Each project publishes tagged releases (e.g.,
v0.2.0), and downstream consumers reference specific tags
- Scope: Release process, CI tagging, vcpkg overlay port versioning, FetchContent GIT_TAG references
Why
- Referencing
main branch makes builds non-reproducible; the same build config can produce different results on different days
- SOUP traceability (IEC 62304) requires exact version identification for all components
- Breaking changes in upstream libraries can silently propagate to downstream projects
- Impact: Build reproducibility and SOUP compliance are compromised for all internal dependencies
Where
- All ecosystem repositories: common_system, thread_system, container_system, logger_system, monitoring_system, network_system, database_system
- Affected files per repo: CMakeLists.txt (project version), .github/workflows/ (release workflow), vcpkg.json (version field)
- Downstream references: FetchContent GIT_TAG, vcpkg overlay ports REF/SHA512, CI checkout
How
Technical Approach
- Define version policy: SemVer (MAJOR.MINOR.PATCH)
- Create release workflow per repository (GitHub Actions)
- Update all FetchContent declarations to use tagged versions
- Update vcpkg overlay ports with tagged refs and SHA512 hashes
- Add version compatibility checks in CMake
Sub-Tasks
Acceptance Criteria
What
Establish semantic versioning (SemVer) with Git tagged releases for all internal ecosystem libraries, enabling downstream projects to pin specific versions instead of tracking
mainbranch.main) in FetchContent and CI workflowsv0.2.0), and downstream consumers reference specific tagsWhy
mainbranch makes builds non-reproducible; the same build config can produce different results on different daysWhere
How
Technical Approach
Sub-Tasks
mainto tagged versionsAcceptance Criteria
mainbranch