Skip to content

ADR-0001: Lockstep Versioning Across All Modules

Status: ACCEPTED Date: 2026-03-18 Supersedes: N/A Superseded by: N/A

Context

The backend-platform is a multi-module Maven reactor with 28 build modules. Without a unified versioning policy, individual modules could drift to independent version tracks, making it difficult to determine compatibility between modules and complicating dependency management.

Source: docs/versioning-policy.md, docs/archive/plans/2026-03-18-pom-version-cleanup.md

Decision

All modules inherit a single version from the root pom.xml (currently 2.0.0) by default. Child modules omit <version> and rely on dependencyManagement in the root parent. Module-local versions are used only when a module is intentionally released on its own track (currently only slaunchx-support-file at 2.1.0). Family-managed modules (infra-audit, infra-gateway, support-secure-transport) version submodules from their own parent POMs.

Consequences

  • Simpler release process: bumping the root version advances most modules at once.
  • Clear audit trail: intentional version divergence is documented in the versioning policy.
  • Harder to release a single module hotfix without touching the root version; family-managed modules mitigate this for high-change SDKs.

Alternatives Considered

  • Fully independent versioning per module: Rejected because the overhead of tracking N independent version tracks outweighs the flexibility, especially given the tight coupling between infrastructure SDKs and the app layer.
  • Git tag-based versioning: Rejected because Maven reactor builds rely on POM-declared versions for dependency resolution; tags alone do not satisfy this.

Internal Handbook