Files
mxaccessgw/docs/audit/fragments/11-clients.md
T

14 KiB
Raw Blame History

Cluster 11 — Clients

Auditor: automated read-only audit Date: 2026-06-03 Scope: clients/dotnet, clients/go, clients/java, clients/python, clients/rust — README.md, *ClientDesign.md; docs/ClientLibrariesDesign.md; docs/ClientPackaging.md


DOC: docs/ClientPackaging.md LINES: 5152 CLAIM: Build and test commands reference clients/dotnet/ZB.MOM.WW.MxGateway.Client.sln (.sln extension) CLAIM_TYPE: command VERDICT: wrong EVIDENCE: clients/dotnet/ZB.MOM.WW.MxGateway.Client.slnx:1 — only a .slnx file exists; no .sln file is present CODE_AREA: client.dotnet SEVERITY: high PROPOSED_FIX: Replace .sln with .slnx in both dotnet build and dotnet test lines: dotnet build clients/dotnet/ZB.MOM.WW.MxGateway.Client.slnx / dotnet test clients/dotnet/ZB.MOM.WW.MxGateway.Client.slnx --no-build


DOC: docs/ClientPackaging.md LINES: 159160 CLAIM: "The Python package is mxaccess-gateway-client. Generated modules live under clients/python/src/mxgateway/generated." CLAIM_TYPE: config-key VERDICT: wrong EVIDENCE: clients/python/pyproject.toml:6 — name = "zb-mom-ww-mxaccess-gateway-client"; clients/python/src/zb_mom_ww_mxgateway/generated/ — actual generated path CODE_AREA: client.python SEVERITY: high PROPOSED_FIX: Correct both: package name → zb-mom-ww-mxaccess-gateway-client; generated path → clients/python/src/zb_mom_ww_mxgateway/generated


DOC: docs/ClientPackaging.md LINES: 187 CLAIM: python -m mxgateway_cli version --json CLAIM_TYPE: command VERDICT: wrong EVIDENCE: clients/python/src/zb_mom_ww_mxgateway_cli/__main__.py — actual module is zb_mom_ww_mxgateway_cli; clients/python/pyproject.toml:48 — entry point zb_mom_ww_mxgateway_cli.commands:main CODE_AREA: client.python SEVERITY: high PROPOSED_FIX: Replace with python -m zb_mom_ww_mxgateway_cli version --json


DOC: docs/ClientPackaging.md LINES: 193194, 201, 217, 225227 CLAIM: Java workspace uses mxgateway-client and mxgateway-cli as subproject names; Gradle task paths use :mxgateway-client:generateProto, :mxgateway-client:jar, :mxgateway-cli:installDist, :mxgateway-cli:run CLAIM_TYPE: command VERDICT: wrong EVIDENCE: clients/java/settings.gradle:2526 — include 'zb-mom-ww-mxgateway-client' and include 'zb-mom-ww-mxgateway-cli'; Gradle task paths are derived from subproject names CODE_AREA: client.java SEVERITY: high PROPOSED_FIX: Replace all :mxgateway-client: references with :zb-mom-ww-mxgateway-client: and :mxgateway-cli: with :zb-mom-ww-mxgateway-cli: throughout ClientPackaging.md


DOC: clients/rust/README.md LINES: 65 CLAIM: cargo run -p mxgw-cli -- stream-alarms --session-id <session-id> --max-messages 1 --json CLAIM_TYPE: command VERDICT: wrong EVIDENCE: clients/rust/crates/mxgw-cli/src/main.rs:282295 — StreamAlarms struct has fields filter_prefix, max_events, json, jsonl (via ConnectionArgs); no session_id, flag is --max-events not --max-messages CODE_AREA: client.rust SEVERITY: high PROPOSED_FIX: Replace with cargo run -p mxgw-cli -- stream-alarms --max-events 1 --json (no --session-id; change --max-messages to --max-events)


DOC: clients/rust/README.md LINES: 66 CLAIM: cargo run -p mxgw-cli -- acknowledge-alarm --session-id <session-id> --alarm-reference "\\Galaxy\Area001.Pump001.PumpFault" --json CLAIM_TYPE: command VERDICT: wrong EVIDENCE: clients/rust/crates/mxgw-cli/src/main.rs:298311 — AcknowledgeAlarm struct has fields reference, comment, operator, json (via ConnectionArgs); flag is --reference not --alarm-reference, and session_id is absent CODE_AREA: client.rust SEVERITY: high PROPOSED_FIX: Replace with cargo run -p mxgw-cli -- acknowledge-alarm --reference "\\Galaxy\Area001.Pump001.PumpFault" --json


DOC: clients/go/README.md LINES: 143 CLAIM: import pb "gitea.dohertylan.com/dohertj2/mxaccessgw/clients/go/internal/generated/galaxy_repository/v1" CLAIM_TYPE: path VERDICT: wrong EVIDENCE: clients/go/internal/generated/ — flat directory; all .pb.go files are package generated. Actual import path used in library code: "gitea.dohertylan.com/dohertj2/mxaccessgw/clients/go/internal/generated" (clients/go/mxgateway/galaxy.go:11, types.go:3, session.go:13) CODE_AREA: client.go SEVERITY: high PROPOSED_FIX: Replace the import path with pb "gitea.dohertylan.com/dohertj2/mxaccessgw/clients/go/internal/generated" (drop the /galaxy_repository/v1 suffix)


DOC: docs/ClientLibrariesDesign.md LINES: 410 CLAIM: Python generated code lives under clients/python/src/mxgateway/generated CLAIM_TYPE: path VERDICT: wrong EVIDENCE: clients/python/src/zb_mom_ww_mxgateway/generated/ — actual path; no mxgateway directory under src/ CODE_AREA: client.python SEVERITY: high PROPOSED_FIX: Replace with clients/python/src/zb_mom_ww_mxgateway/generated


DOC: clients/dotnet/DotnetClientDesign.md LINES: 3536 CLAIM: Layout includes ZB.MOM.WW.MxGateway.Client.IntegrationTests/ project CLAIM_TYPE: path VERDICT: wrong EVIDENCE: ls clients/dotnet/ — directory does not exist; .slnx file (clients/dotnet/ZB.MOM.WW.MxGateway.Client.slnx:911) contains only three projects (Client, Cli, Tests) CODE_AREA: client.dotnet SEVERITY: medium PROPOSED_FIX: Remove the ZB.MOM.WW.MxGateway.Client.IntegrationTests/ entry from the layout section, or note it as "not yet created"


DOC: clients/python/PythonClientDesign.md LINES: 215 CLAIM: "Publishable package name should be stable, for example: mxaccess-gateway-client" CLAIM_TYPE: config-key VERDICT: stale EVIDENCE: clients/python/pyproject.toml:6 — actual name is zb-mom-ww-mxaccess-gateway-client; the "example" name was never adopted CODE_AREA: client.python SEVERITY: medium PROPOSED_FIX: Update the example to zb-mom-ww-mxaccess-gateway-client to reflect the chosen name


DOC: clients/dotnet/DotnetClientDesign.md LINES: 55 CLAIM: "Grpc.Tools for generation" listed as an expected package CLAIM_TYPE: config-key VERDICT: stale EVIDENCE: clients/dotnet/ZB.MOM.WW.MxGateway.Client/ZB.MOM.WW.MxGateway.Client.csproj — no Grpc.Tools reference; the client uses a project reference to the shared contracts csproj for generated types. clients/dotnet/README.md:17 correctly notes this is "reserved for future use" CODE_AREA: client.dotnet SEVERITY: medium PROPOSED_FIX: Remove Grpc.Tools from the "Expected packages" list or qualify it as "future, if client-local generation is adopted"


DOC: clients/go/GoClientDesign.md LINES: 2830 CLAIM: internal/generated/ contains only mxaccess_gateway.pb.go and mxaccess_gateway_grpc.pb.go CLAIM_TYPE: path VERDICT: stale EVIDENCE: clients/go/internal/generated/ — 5 files present: galaxy_repository.pb.go, galaxy_repository_grpc.pb.go, mxaccess_gateway.pb.go, mxaccess_gateway_grpc.pb.go, mxaccess_worker.pb.go CODE_AREA: client.go SEVERITY: medium PROPOSED_FIX: Add the missing galaxy_repository and mxaccess_worker generated files to the layout listing


DOC: docs/ClientPackaging.md LINES: 116 CLAIM: "The Rust workspace builds the mxgateway-client library crate and the mxgw CLI crate." CLAIM_TYPE: term VERDICT: wrong EVIDENCE: clients/rust/Cargo.toml:2 — name = "zb-mom-ww-mxgateway-client"; crates/mxgw-cli/Cargo.toml:4 — package name mxgw-cli, binary name mxgw CODE_AREA: client.rust SEVERITY: medium PROPOSED_FIX: Change "mxgateway-client" to "zb-mom-ww-mxgateway-client" (the library crate name); "mxgw CLI crate" is acceptable since the binary is named mxgw


DOC: clients/rust/RustClientDesign.md LINES: 278 CLAIM: mxgw stream-alarms [--filter-prefix <prefix>] [--max-events <n>] CLAIM_TYPE: command VERDICT: accurate EVIDENCE: clients/rust/crates/mxgw-cli/src/main.rs:282295 — StreamAlarms struct has filter_prefix: Option<String>, max_events: usize; test at line 2053 confirms --max-events flag name CODE_AREA: client.rust SEVERITY: low PROPOSED_FIX: flag only — design doc is accurate; the discrepancy is in README.md (already captured above)


DOC: docs/ClientPackaging.md LINES: (no entry) CLAIM: (gap) scripts/pack-clients.ps1 — the canonical multi-language pack and publish script — is not mentioned in ClientPackaging.md CLAIM_TYPE: behavior-rule VERDICT: gap EVIDENCE: scripts/pack-clients.ps1:140 — packs all five clients into dist/, supports -Publish to upload to Gitea feeds; ClientPackaging.md has no reference to it CODE_AREA: client.packaging SEVERITY: medium PROPOSED_FIX: Add a "Packing all clients at once" section to ClientPackaging.md pointing to scripts/pack-clients.ps1 with the example invocations from the script's .SYNOPSIS


DOC: docs/ClientPackaging.md LINES: (no entry for Python build method) CLAIM: (gap) Python README and ClientPackaging.md document pip wheel . --no-deps as the build command; scripts/pack-clients.ps1 uses python -m build (the PEP 517 standard tool). The dev dependency build>=1.2,<2 is listed in pyproject.toml but the README's wheel command bypasses it. CLAIM_TYPE: command VERDICT: gap EVIDENCE: clients/python/pyproject.toml:43 — "build>=1.2,<2" in dev deps; scripts/pack-clients.ps1:156 — python -m build; clients/python/README.md:43 — pip wheel . --no-deps CODE_AREA: client.python SEVERITY: low PROPOSED_FIX: Note in Python README and ClientPackaging.md that python -m build (using the build package already in dev deps) is the canonical wheel-build method; pip wheel is an alternative


DOC: clients/java/README.md LINES: 37 CLAIM: gradle :zb-mom-ww-mxgateway-client:generateProto CLAIM_TYPE: command VERDICT: accurate EVIDENCE: clients/java/settings.gradle:25 — include 'zb-mom-ww-mxgateway-client'; build.gradle:4 — id 'com.google.protobuf' applied to that subproject CODE_AREA: client.java SEVERITY: low PROPOSED_FIX: flag only


DOC: clients/java/README.md LINES: 314 CLAIM: implementation 'com.zb.mom.ww.mxgateway:zb-mom-ww-mxgateway-client:0.1.0' CLAIM_TYPE: config-key VERDICT: accurate EVIDENCE: clients/java/build.gradle:1516 — group = 'com.zb.mom.ww.mxgateway', version = '0.1.0'; subproject name zb-mom-ww-mxgateway-client is the artifact ID CODE_AREA: client.java SEVERITY: low PROPOSED_FIX: flag only


DOC: clients/rust/README.md LINES: 83 CLAIM: "tonic 0.13.1 exposes no public hook to inject a custom certificate verifier" CLAIM_TYPE: version VERDICT: accurate EVIDENCE: clients/rust/Cargo.toml:40 — tonic = { version = "0.13.1", features = ["transport", "tls-ring"] } CODE_AREA: client.rust SEVERITY: low PROPOSED_FIX: flag only


DOC: clients/dotnet/README.md LINES: 2223 CLAIM: Build and test with dotnet build clients/dotnet/ZB.MOM.WW.MxGateway.Client.slnx / dotnet test clients/dotnet/ZB.MOM.WW.MxGateway.Client.slnx --no-build CLAIM_TYPE: command VERDICT: accurate EVIDENCE: clients/dotnet/ZB.MOM.WW.MxGateway.Client.slnx:1 — file exists with .slnx extension CODE_AREA: client.dotnet SEVERITY: low PROPOSED_FIX: flag only


DOC: clients/dotnet/README.md LINES: 331 CLAIM: dotnet add package ZB.MOM.WW.MxGateway.Client --version 0.1.0 CLAIM_TYPE: version VERDICT: accurate EVIDENCE: clients/dotnet/Directory.Build.props:14 — <Version>0.1.0</Version>; clients/dotnet/ZB.MOM.WW.MxGateway.Client/ZB.MOM.WW.MxGateway.Client.csproj:21 — <PackageId>ZB.MOM.WW.MxGateway.Client</PackageId> CODE_AREA: client.dotnet SEVERITY: low PROPOSED_FIX: flag only


DOC: clients/go/README.md LINES: 292, 297 CLAIM: go get gitea.dohertylan.com/dohertj2/mxaccessgw/clients/go@v0.1.0; import "gitea.dohertylan.com/dohertj2/mxaccessgw/clients/go/mxgateway" CLAIM_TYPE: path VERDICT: accurate EVIDENCE: clients/go/go.mod:1 — module gitea.dohertylan.com/dohertj2/mxaccessgw/clients/go; mxgateway/ subdirectory exists CODE_AREA: client.go SEVERITY: low PROPOSED_FIX: flag only


DOC: clients/go/README.md LINES: 310312 CLAIM: pwsh scripts/tag-go-module.ps1 -Version v0.1.1 -Push creates an annotated tag clients/go/v0.1.1 CLAIM_TYPE: command VERDICT: accurate EVIDENCE: scripts/tag-go-module.ps1:39 — $tag = "clients/go/$Version"; line 54 — git tag -a $tag; line 2529 — -Version and -Push parameters exist CODE_AREA: client.go SEVERITY: low PROPOSED_FIX: flag only


DOC: clients/python/README.md LINES: 288290 CLAIM: pip install --index-url https://gitea.dohertylan.com/api/packages/dohertj2/pypi/simple/ zb-mom-ww-mxaccess-gateway-client CLAIM_TYPE: path VERDICT: accurate EVIDENCE: clients/python/pyproject.toml:6 — name = "zb-mom-ww-mxaccess-gateway-client" matches the pip install name CODE_AREA: client.python SEVERITY: low PROPOSED_FIX: flag only


DOC: clients/rust/README.md LINES: 257274 CLAIM: Gitea Cargo registry at sparse+https://gitea.dohertylan.com/api/packages/dohertj2/cargo/, registry name dohertj2-gitea, crate zb-mom-ww-mxgateway-client = { version = "0.1.0", registry = "dohertj2-gitea" } CLAIM_TYPE: path VERDICT: accurate EVIDENCE: clients/rust/Cargo.toml:14 — publish = ["dohertj2-gitea"]; version = "0.1.0"; registry name matches CODE_AREA: client.rust SEVERITY: low PROPOSED_FIX: flag only


DOC: clients/java/README.md LINES: 297299 CLAIM: Maven feed at https://gitea.dohertylan.com/api/packages/dohertj2/maven; publish via gradle :zb-mom-ww-mxgateway-client:publish CLAIM_TYPE: path VERDICT: accurate EVIDENCE: clients/java/build.gradle:72 — url = 'https://gitea.dohertylan.com/api/packages/dohertj2/maven'; maven-publish plugin applied to zb-mom-ww-mxgateway-client CODE_AREA: client.java SEVERITY: low PROPOSED_FIX: flag only


DOC: clients/go/README.md LINES: 3940 CLAIM: Build and test with go test ./... / go build ./... / go vet ./... from clients/go CLAIM_TYPE: command VERDICT: accurate EVIDENCE: clients/go/go.mod:1 — module root at clients/go; standard Go toolchain commands apply CODE_AREA: client.go SEVERITY: low PROPOSED_FIX: flag only


DOC: clients/java/README.md LINES: 265267 CLAIM: Build and test with gradle test from clients/java CLAIM_TYPE: command VERDICT: accurate EVIDENCE: clients/java/settings.gradle:2526 — include 'zb-mom-ww-mxgateway-client' and include 'zb-mom-ww-mxgateway-cli'; root build.gradle applies useJUnitPlatform() to all java subprojects CODE_AREA: client.java SEVERITY: low PROPOSED_FIX: flag only