Component version metadata is derived from the current git HEAD commit, commit date, and latest reachable git label/tag.
git_commit: short commit reference (git rev-parse --short=12 HEAD)git_commit_date: commit timestamp (git show -s --format=%cI HEAD)git_commit_date_friendly: human-friendly datetime text (for example 23 Apr 2026 00:59:06 UTC+01:00)git_label: latest reachable label/tag from git describe --tags --abbrev=0 (empty when no label is available)effective_label: label used in rendered version text:
git rev-list --count <git_label>..HEAD1.2.3 or v1.2.3) are patch-advanced by (<commits_since_label> + 1)
1.2.3 -> 1.2.4 at label commit, 1.2.5 after one additional commitmajor.minor labels (for example 1.2 or v1.2) are normalized as major.minor.0, then patch-advanced by (<commits_since_label> + 1)
1.2 -> 1.2.1 at label commit, 1.2.2 after one additional commitversion: formatted as:
<effective_label> <git_commit> (<git_commit_date_friendly>) when a label exists<git_commit> (<git_commit_date_friendly>) when no label existsGenerated files:
provider/src/opamp_provider/version.jsonagent_broker/opamp_broker/version.jsonconsumer/src/opamp_consumer/version.jsonconsumer-sim/version.jsonThe generator script is:
scripts/update_component_versions.pyVersion generation logic is centralized in one place (scripts/update_component_versions.py) and feeds all service version.json files.
Runtime loading remains component-local (component_version.py in each service) to preserve packaging boundaries:
opamp-provider --help and opamp-provider --versionhttp://localhost:8080/helppython -m opamp_broker.broker_app --help and --version--help): includes component_version in JSON outputpython consumer-sim/src/consumer_sim_launcher.py --help and --versionThe pre-commit hook updates and stages component version files automatically:
.githooks/pre-commitInstall hook path once per clone:
./scripts/install_git_hooks.shscripts\\install_git_hooks.cmdGUI clients:
.git/hooks/pre-commit (without overriding unrelated custom hooks) to cover clients that rely on legacy hook lookup.git config --local --get core.hooksPath (expected: .githooks)Build/package scripts refresh component version metadata before producing artifacts:
scripts/build_artifacts.shscripts/build_artifacts.cmdpython dev-tools/main.py build release-assetsagent_broker/scripts/package.shagent_broker/scripts/package.ps1