Propagate package version into cluster-reported version #159
Copy link
Copy link
Closed
Labels
state:agent-readyApproved for agent implementationApproved for agent implementationstate:pr-openedPR has been opened for this issuePR has been opened for this issue
Description
Context
During troubleshooting, someone installed the package via pip, but the cluster-reported version was still the default 0.1.0.
A follow-up note suggests the cluster-side version may currently be hardcoded and should likely be passed through as a build argument.
Problem
The cluster version shown at runtime can be incorrect, which makes debugging and support harder.
Expected behavior
The version reported by the cluster should match the version used to build and publish the artifact (for example, the pip package version).
Proposed direction
- Trace how version metadata is produced during build and publish.
- Propagate the real version into cluster artifacts and runtime (for example via build args or generated metadata).
- Remove any hardcoded fallback that masks the actual build version.
Acceptance criteria
- Installing a non-
0.1.0package no longer reports0.1.0by default. - Cluster version output matches the artifact and package version.
- Add automated coverage for the version propagation path (unit/integration as appropriate).
Reactions are currently unavailable
Metadata
Metadata
Assignees
Labels
state:agent-readyApproved for agent implementationApproved for agent implementationstate:pr-openedPR has been opened for this issuePR has been opened for this issue
Activity
pimlock commentedon Mar 6, 2026
Implementation Plan
Issue type:
fixComplexity: Medium
Confidence: High — root cause and required build-path changes are now clear
Summary
The cluster-reported version comes from
navigator-server's compile-timeCARGO_PKG_VERSION, but the Docker build path for server/cluster artifacts does not propagate the computed release cargo version (unlike wheel/CLI build paths). We will propagate one version source through component image builds and cluster chart packaging so deployed clusters report the artifact version instead of falling back to0.1.0, while still publishinglatestalongside the explicit version tag.Scope
deploy/docker/Dockerfile.server: acceptNEMOCLAW_CARGO_VERSIONand patch[workspace.package].versionbefore buildingnavigator-server.tasks/scripts/docker-build-component.sh: forwardNEMOCLAW_CARGO_VERSIONas a build arg for Rust component images without disturbing existing cache scope inputs.tasks/scripts/docker-publish-multiarch.sh: compute cargo version once, publish the same image as bothlatestand the explicit version tag, and pass the version into server/sandbox image builds.tasks/scripts/docker-build-cluster.sh,deploy/kube/manifests/navigator-helmchart.yaml,deploy/docker/cluster-entrypoint.sh: stop relying on hardcodednavigator-0.1.0.tgz; inject/use the packaged chart version dynamically..github/workflows/docker-build.ymland.github/workflows/publish.yml: ensure CI/publish builds pass the same computed cargo version into Docker build paths.Implementation Steps
NEMOCLAW_CARGO_VERSIONflow through Docker component build scripts andDockerfile.server, mirroring existing wheel build behavior and preserving current layer/cache scope behavior.0.1.0.latestand the explicit version tag, while using the same computed cargo version for Docker and Python artifacts.0.1.0build reports a matching version vianemoclaw cluster status, and confirm cache-sensitive paths (buildx layer cache / sccache inputs) remain unchanged apart from intended final-artifact invalidation.Test Plan
0.1.1-dev.0), deploy locally, and assert health endpoint/cluster statusreports that version.e2e/files are modified.Risks & Open Questions
Documentation Impact
architecture/build-containers.mdto describe version propagation for server binaries and cluster chart artifacts, including dual-tag publishing (latest+ explicit version).Revision 2 — incorporated feedback on dual-tag publishing and cache preservation
Revision 1 — initial plan
pimlock commentedon Mar 7, 2026
Agreed. I updated the plan to keep
latestwhile also publishing and wiring the explicit version tag through the cluster build path.I also tightened the implementation notes so version propagation does not leak into cache keys unnecessarily: the existing layer/buildx cache scopes and Rust/sccache configuration should remain stable, and verification will include checking that we only add explicit version build args where they affect the final artifact metadata rather than dependency-cache priming.
fix(build): propagate packaged version through cluster artifacts
pimlock commentedon Mar 7, 2026
Implementation Complete
PR: #164
What was built
The Docker and cluster packaging paths now receive the computed package version so deployed clusters stop reporting the default workspace version. Cluster publish flows now keep
latestand the explicit version tag aligned, and the cluster image resolves the packaged chart filename dynamically instead of hardcoding0.1.0.Tests
Docs updated
architecture/build-containers.mdThe issue will auto-close when the PR is merged.
pimlock commentedon Mar 7, 2026
Confirmed it prints the version now: