From 7200023bcc57447390cdf88e5de772dc1dc2868c Mon Sep 17 00:00:00 2001 From: Joseph Doherty Date: Thu, 20 Aug 2026 09:22:28 -0400 Subject: [PATCH] fix(CLI-46): bump client versions past the already-published train + add PR-time drift guard .NET/Go/Python/Rust clients (plus Contracts, which releases in lockstep with the .NET Client) move 0.2.0 -> 0.2.1; Java moves 0.2.1 -> 0.2.2. This starts the next release train the finding recommended, since post-publish source changes (including the Python connect() event-loop fix, a8f86b5) had been sitting at already-published version numbers for nine days with nothing recording the divergence. - Note the pypi 0.2.0 connect() defect and its supersession by 0.2.1 in clients/python/README.md and docs/ClientPackaging.md. - Add scripts/check-client-versions.ps1: a PR-time guard that finds each client's latest publish tag (clients/go/vX.Y.Z for Go, the only client with a git tag; the other four publish straight to a registry with no tag, so the check reports "no tags found" and passes for them) and fails if clients/ changed since that tag while the version constant still equals the tag's version. Wired into .gitea/workflows/ci.yml's portable job next to the codegen freshness checks (needs fetch-depth: 0 for tag history). - Mark remediation batch A Done in archreview/2026-08-19/remediation/00-tracking.md. Verified on macOS: dotnet build clients/dotnet/...slnx (pass), cargo check --workspace (pass), python -m pytest (168 passed, 1 skipped), gradle test with JDK 17 (pass, no generated-tree churn to revert this time), gofmt -l + go build ./... + go test ./... (clean), and scripts/check-client-versions.ps1 via pwsh (pass; also verified it fails correctly when a version constant is rolled back). --- .gitea/workflows/ci.yml | 14 ++ .../2026-08-19/remediation/00-tracking.md | 2 +- .../ZB.MOM.WW.MxGateway.Client.csproj | 2 +- clients/go/mxgateway/version.go | 2 +- clients/java/README.md | 2 +- clients/java/build.gradle | 11 +- .../ww/mxgateway/cli/MxGatewayCliTests.java | 4 +- .../client/MxGatewayClientVersion.java | 2 +- clients/python/README.md | 9 + clients/python/pyproject.toml | 2 +- .../python/src/zb_mom_ww_mxgateway/version.py | 2 +- clients/rust/Cargo.lock | 4 +- clients/rust/Cargo.toml | 4 +- docs/ClientPackaging.md | 37 +++ scripts/check-client-versions.ps1 | 210 ++++++++++++++++++ .../ZB.MOM.WW.MxGateway.Contracts.csproj | 2 +- 16 files changed, 291 insertions(+), 18 deletions(-) create mode 100644 scripts/check-client-versions.ps1 diff --git a/.gitea/workflows/ci.yml b/.gitea/workflows/ci.yml index 06b305d..0697fca 100644 --- a/.gitea/workflows/ci.yml +++ b/.gitea/workflows/ci.yml @@ -23,7 +23,12 @@ jobs: # tests, the codegen/descriptor freshness guards, and the clients that build on Linux. runs-on: ubuntu-latest steps: + # fetch-depth: 0 (full history + tags): the CLI-46 client-version-freshness check below + # diffs each client's source against its last publish tag (e.g. clients/go/vX.Y.Z), which + # a shallow, tagless checkout cannot resolve. - uses: actions/checkout@v4 + with: + fetch-depth: 0 - uses: actions/setup-dotnet@v4 with: @@ -77,6 +82,15 @@ jobs: shell: pwsh run: ./scripts/check-codegen.ps1 + # CLI-46: catches a client whose source changed since its last publish + # tag while the version constant still reads that tag's already-shipped + # number — the drift the pack-clients.ps1/tag-go-module.ps1 collision + # guards only catch at actual publish time. Needs tag history, hence + # `fetch-depth: 0` on this job's checkout above. + - name: Client version freshness + shell: pwsh + run: ./scripts/check-client-versions.ps1 + - name: Gateway fake-worker tests run: dotnet test src/ZB.MOM.WW.MxGateway.Tests/ZB.MOM.WW.MxGateway.Tests.csproj -c Release --no-build diff --git a/archreview/2026-08-19/remediation/00-tracking.md b/archreview/2026-08-19/remediation/00-tracking.md index 1257225..184cc42 100644 --- a/archreview/2026-08-19/remediation/00-tracking.md +++ b/archreview/2026-08-19/remediation/00-tracking.md @@ -13,7 +13,7 @@ This plan is executed as **seven parallel batches**, each by one subagent workin | Batch | Branch | Findings | Model | Why this model | Status | |---|---|---|---|---|---| -| A | `fix/c3-client-versions` | CLI-46 | sonnet | Mechanical five-client bump + README note + one script guard; recipe is fully specified | Not started | +| A | `fix/c3-client-versions` | CLI-46 | sonnet | Mechanical five-client bump + README note + one script guard; recipe is fully specified | Done | | B | `fix/c3-glauth-doc` | TST-31 | sonnet | Reconcile a table against one TOML source of truth, re-derive one default, change an assert to a log | Not started | | C | `fix/c3-tracker-hygiene` | GWC-31 + housekeeping (close GWC-16/IPC-08/IPC-31, refresh TST-06/TST-17, register WRK-31) | sonnet | Cross-file comment/ID sweep needs care about what each ID *means*, but no logic changes | Not started | | D | `fix/c3-dashboard-acl` | SEC-40, SEC-41, GWC-38 | opus | Authorization semantics, fail-closed decisions, claims re-resolution; each needs a regression test | Not started | diff --git a/clients/dotnet/ZB.MOM.WW.MxGateway.Client/ZB.MOM.WW.MxGateway.Client.csproj b/clients/dotnet/ZB.MOM.WW.MxGateway.Client/ZB.MOM.WW.MxGateway.Client.csproj index 79bfdd9..668f82a 100644 --- a/clients/dotnet/ZB.MOM.WW.MxGateway.Client/ZB.MOM.WW.MxGateway.Client.csproj +++ b/clients/dotnet/ZB.MOM.WW.MxGateway.Client/ZB.MOM.WW.MxGateway.Client.csproj @@ -19,7 +19,7 @@ true ZB.MOM.WW.MxGateway.Client - 0.2.0 + 0.2.1 .NET 10 gRPC client for the MxAccessGateway service. Provides typed wrappers, retry, and a lazy-browse walker over the Galaxy Repository hierarchy. README.md