Files
mxaccessgw/docs/audit/fragments/10-testing.md
T

24 KiB
Raw Blame History

Cluster 10 — Testing

Docs audited: docs/GatewayTesting.md, docs/ClientBehaviorFixtures.md, docs/ParityFixtureMatrix.md, docs/CrossLanguageSmokeMatrix.md, docs/ToolchainLinks.md.

Verified against: src/ZB.MOM.WW.MxGateway.Tests/**, src/ZB.MOM.WW.MxGateway.Worker.Tests/**, src/ZB.MOM.WW.MxGateway.IntegrationTests/**, scripts/run-client-e2e-tests.ps1, scripts/validate-client-behavior-fixtures.ps1, scripts/discover-testmachine-tags.ps1, clients/proto/fixtures/**.


DOC / LINES / GatewayTesting.md / 322324 CLAIM / "the script builds the .NET CLI (dotnet build) and installs the Java CLI (gradle :mxgateway-cli:installDist) once" CLAIM_TYPE / command VERDICT / wrong EVIDENCE / scripts/run-client-e2e-tests.ps1:542 — actual invocation is gradle :zb-mom-ww-mxgateway-cli:installDist; clients/java/settings.gradle:26 — the Gradle subproject is named zb-mom-ww-mxgateway-cli, not mxgateway-cli CODE_AREA / test.cmd SEVERITY / high PROPOSED_FIX / Replace :mxgateway-cli:installDist with :zb-mom-ww-mxgateway-cli:installDist in GatewayTesting.md line 323.


DOC / LINES / clients/proto/fixtures/smoke/cross-language-smoke-matrix.json / multiple Java command entries CLAIM / Java bundled and optional commands use gradle :mxgateway-cli:run (e.g. gradle :mxgateway-cli:run --args="close-session ...") CLAIM_TYPE / command VERDICT / wrong EVIDENCE / clients/java/settings.gradle:26 — Gradle subproject name is zb-mom-ww-mxgateway-cli; the :mxgateway-cli:run task does not exist and would fail. scripts/run-client-e2e-tests.ps1:542 uses the correct :zb-mom-ww-mxgateway-cli:installDist CODE_AREA / test.cmd SEVERITY / high PROPOSED_FIX / Replace every :mxgateway-cli:run in the smoke matrix JSON with :zb-mom-ww-mxgateway-cli:run. Also update the installDist reference in any bundled command if present.


DOC / LINES / GatewayTesting.md / 4044 CLAIM / "WorkerLiveMxAccessSmokeTests in src/ZB.MOM.WW.MxGateway.IntegrationTests/ … It is skipped unless MXGATEWAY_RUN_LIVE_MXACCESS_TESTS=1 is set" CLAIM_TYPE / path, config-key VERDICT / accurate EVIDENCE / src/ZB.MOM.WW.MxGateway.IntegrationTests/WorkerLiveMxAccessSmokeTests.cs:25 ([LiveMxAccessFact]); src/ZB.MOM.WW.MxGateway.IntegrationTests/IntegrationTestEnvironment.cs:13 (LiveMxAccessVariableName = GatewayContractInfo.LiveMxAccessOptInVariableName); src/ZB.MOM.WW.MxGateway.Contracts/GatewayContractInfo.cs:28 ("MXGATEWAY_RUN_LIVE_MXACCESS_TESTS") CODE_AREA / test.envgate SEVERITY / low PROPOSED_FIX / flag only


DOC / LINES / GatewayTesting.md / 76 CLAIM / "All six tests are gated by the same MXGATEWAY_RUN_LIVE_MXACCESS_TESTS=1 opt-in variable" CLAIM_TYPE / term, config-key VERDICT / accurate EVIDENCE / src/ZB.MOM.WW.MxGateway.IntegrationTests/WorkerLiveMxAccessSmokeTests.cs — exactly 6 [LiveMxAccessFact] attributes at lines 33, 122, 238, 296, 440, 571 CODE_AREA / test.envgate SEVERITY / low PROPOSED_FIX / flag only


DOC / LINES / GatewayTesting.md / 8283 CLAIM / Worker build command: dotnet build src/ZB.MOM.WW.MxGateway.Worker/ZB.MOM.WW.MxGateway.Worker.csproj -p:Platform=x86 CLAIM_TYPE / command, path VERDICT / accurate EVIDENCE / src/ZB.MOM.WW.MxGateway.Worker/ZB.MOM.WW.MxGateway.Worker.csproj exists; PlatformTarget=x86 is set in the Worker.Tests csproj (src/ZB.MOM.WW.MxGateway.Worker.Tests/ZB.MOM.WW.MxGateway.Worker.Tests.csproj:6) CODE_AREA / test.cmd SEVERITY / low PROPOSED_FIX / flag only


DOC / LINES / GatewayTesting.md / 89 CLAIM / Live MXAccess smoke run: dotnet test src/ZB.MOM.WW.MxGateway.IntegrationTests/ZB.MOM.WW.MxGateway.IntegrationTests.csproj --filter FullyQualifiedName~WorkerLiveMxAccessSmokeTests CLAIM_TYPE / command, path VERDICT / accurate EVIDENCE / src/ZB.MOM.WW.MxGateway.IntegrationTests/ZB.MOM.WW.MxGateway.IntegrationTests.csproj exists; class name WorkerLiveMxAccessSmokeTests confirmed at src/ZB.MOM.WW.MxGateway.IntegrationTests/WorkerLiveMxAccessSmokeTests.cs:25 CODE_AREA / test.cmd SEVERITY / low PROPOSED_FIX / flag only


DOC / LINES / GatewayTesting.md / 94101 CLAIM / Optional live smoke variables table: MXGATEWAY_LIVE_MXACCESS_WORKER_EXE, MXGATEWAY_LIVE_MXACCESS_ITEM, MXGATEWAY_LIVE_MXACCESS_CLIENT_NAME, MXGATEWAY_LIVE_MXACCESS_EVENT_TIMEOUT_SECONDS with stated defaults CLAIM_TYPE / config-key VERDICT / accurate EVIDENCE / src/ZB.MOM.WW.MxGateway.IntegrationTests/IntegrationTestEnvironment.cs:1417 — all four constant names match exactly; defaults match (TestChildObject.TestInt line 39, ZB.MOM.WW.MxGateway.IntegrationTests line 45, 15 seconds line 51) CODE_AREA / test.envgate SEVERITY / low PROPOSED_FIX / flag only


DOC / LINES / GatewayTesting.md / 100101 CLAIM / Optional variables MXGATEWAY_LIVE_MXACCESS_WRITE_SECURED_USER (default admin) and MXGATEWAY_LIVE_MXACCESS_WRITE_SECURED_PASSWORD (default admin123) "are gated by the same opt-in variable" CLAIM_TYPE / config-key VERDICT / accurate EVIDENCE / src/ZB.MOM.WW.MxGateway.IntegrationTests/WorkerLiveMxAccessSmokeTests.cs:974977 — variable names and defaults exactly match; note these constants are NOT in IntegrationTestEnvironment (they live inline in ResolveLiveMxAccessSecuredCredentials), which is an internal code organisation matter not a doc error CODE_AREA / test.envgate SEVERITY / low PROPOSED_FIX / flag only


DOC / LINES / GatewayTesting.md / 1016 CLAIM / "FakeWorkerHarness in src/ZB.MOM.WW.MxGateway.Tests/Gateway/Workers/Fakes/ … uses the same WorkerFrameReader, WorkerFrameWriter, and WorkerEnvelope contract" CLAIM_TYPE / path, term VERDICT / accurate EVIDENCE / src/ZB.MOM.WW.MxGateway.Tests/Gateway/Workers/Fakes/FakeWorkerHarness.cs:55 (CreateConnectedPairAsync) and :90 (ConnectToGatewayPipeAsync) confirm both methods exist CODE_AREA / test.cmd SEVERITY / low PROPOSED_FIX / flag only


DOC / LINES / GatewayTesting.md / 2226 CLAIM / FakeWorkerHarness scripts: WorkerHello, WorkerReady, command replies, ordered WorkerEvent frames, WorkerHeartbeat frames, WorkerFault frames, shutdown acknowledgements, malformed payloads, oversized frame headers, slow/hung workers CLAIM_TYPE / behavior-rule VERDICT / accurate EVIDENCE / src/ZB.MOM.WW.MxGateway.Tests/Gateway/Workers/Fakes/FakeWorkerHarness.cs:208 (SendWorkerHelloAsync), :233 (SendWorkerReadyAsync), :317 (WorkerEvent), :329 (WorkerFault), :353 (SendHeartbeatAsync), :373 (shutdown ack), :394 (malformed payload), :412 (oversized frame header) CODE_AREA / test.cmd SEVERITY / low PROPOSED_FIX / flag only


DOC / LINES / GatewayTesting.md / 109113 CLAIM / "src/ZB.MOM.WW.MxGateway.Worker.Tests/Probes/ partitions runtime probes … ZB.MOM.WW.MxGateway.Worker.Tests.Probes namespace so a discovery filter … can target or exclude them" CLAIM_TYPE / path, term VERDICT / accurate EVIDENCE / src/ZB.MOM.WW.MxGateway.Worker.Tests/Probes/ contains AlarmsLiveSmokeTests.cs, AlarmClientWmProbeTests.cs, WnWrapConsumerProbeTests.cs; namespace confirmed at AlarmsLiveSmokeTests.cs:9 CODE_AREA / test.cmd SEVERITY / low PROPOSED_FIX / flag only


DOC / LINES / GatewayTesting.md / 118131 CLAIM / Three probes: AlarmsLiveSmokeTests, AlarmClientWmProbeTests, WnWrapConsumerProbeTests, all [Fact(Skip = "...")] by default CLAIM_TYPE / term VERDICT / accurate EVIDENCE / src/ZB.MOM.WW.MxGateway.Worker.Tests/Probes/AlarmsLiveSmokeTests.cs:47 ([Fact(Skip = "Live dev-rig smoke test …")]); all three classes confirmed in directory listing CODE_AREA / test.cmd SEVERITY / low PROPOSED_FIX / flag only


DOC / LINES / GatewayTesting.md / 139143 CLAIM / "GalaxyRepositoryLiveTests in src/ZB.MOM.WW.MxGateway.IntegrationTests/Galaxy/ … skipped unless MXGATEWAY_RUN_LIVE_GALAXY_TESTS=1" CLAIM_TYPE / path, config-key VERDICT / accurate EVIDENCE / src/ZB.MOM.WW.MxGateway.IntegrationTests/Galaxy/GalaxyRepositoryLiveTests.cs:6; src/ZB.MOM.WW.MxGateway.IntegrationTests/Galaxy/LiveGalaxyRepositoryFactAttribute.cs:9 ("MXGATEWAY_RUN_LIVE_GALAXY_TESTS") CODE_AREA / test.envgate SEVERITY / low PROPOSED_FIX / flag only


DOC / LINES / GatewayTesting.md / 145148 CLAIM / GalaxyRepositoryLiveTests covers TestConnectionAsync, GetLastDeployTimeAsync, GetHierarchyAsync, GetAttributesAsync; hierarchy/attributes assert non-empty CLAIM_TYPE / term VERDICT / accurate EVIDENCE / src/ZB.MOM.WW.MxGateway.IntegrationTests/Galaxy/GalaxyRepositoryLiveTests.cs:10 (TestConnection), :20 (GetLastDeployTime), :31 (GetHierarchy, Assert.NotEmpty), :50 (GetAttributes, Assert.NotEmpty) CODE_AREA / test.cmd SEVERITY / low PROPOSED_FIX / flag only


DOC / LINES / GatewayTesting.md / 154 CLAIM / Galaxy live tests run: dotnet test src/ZB.MOM.WW.MxGateway.IntegrationTests/ZB.MOM.WW.MxGateway.IntegrationTests.csproj --filter FullyQualifiedName~GalaxyRepositoryLiveTests CLAIM_TYPE / command, path VERDICT / accurate EVIDENCE / src/ZB.MOM.WW.MxGateway.IntegrationTests/ZB.MOM.WW.MxGateway.IntegrationTests.csproj exists; class GalaxyRepositoryLiveTests at Galaxy/GalaxyRepositoryLiveTests.cs:7 CODE_AREA / test.cmd SEVERITY / low PROPOSED_FIX / flag only


DOC / LINES / GatewayTesting.md / 161 CLAIM / MXGATEWAY_LIVE_GALAXY_CONN default: Server=localhost;Database=ZB;Integrated Security=True;TrustServerCertificate=True;Encrypt=False; CLAIM_TYPE / config-key VERDICT / accurate EVIDENCE / src/ZB.MOM.WW.MxGateway.Server/Galaxy/GalaxyRepositoryOptions.cs:1617 — exact string match; LiveGalaxyRepositoryFactAttribute.cs:32 falls back to this constant CODE_AREA / test.envgate SEVERITY / low PROPOSED_FIX / flag only


DOC / LINES / GatewayTesting.md / 168199 CLAIM / "GalaxyFilterInputSafetyTests in src/ZB.MOM.WW.MxGateway.Tests/Galaxy/" exercises GalaxyGlobMatcher and GalaxyHierarchyProjector with described adversarial inputs; GalaxyGlobMatcher applies a 100 ms regex timeout CLAIM_TYPE / path, term, behavior-rule VERDICT / accurate EVIDENCE / src/ZB.MOM.WW.MxGateway.Tests/Galaxy/GalaxyFilterInputSafetyTests.cs:33 (class), :6091 (adversarial cases); src/ZB.MOM.WW.MxGateway.Server/Galaxy/GalaxyGlobMatcher.cs:69 (TimeSpan.FromMilliseconds(100)) CODE_AREA / test.cmd SEVERITY / low PROPOSED_FIX / flag only


DOC / LINES / GatewayTesting.md / 172174 CLAIM / "re-frames the original 'Galaxy SQL injection' concern (Tests-002 in code-reviews/Tests/findings.md)" CLAIM_TYPE / cross-ref VERDICT / accurate EVIDENCE / code-reviews/Tests/findings.md exists; src/ZB.MOM.WW.MxGateway.Tests/Galaxy/GalaxyFilterInputSafetyTests.cs:16 references finding Tests-002 CODE_AREA / test.cmd SEVERITY / low PROPOSED_FIX / flag only


DOC / LINES / GatewayTesting.md / 174178 CLAIM / GalaxyRepository issues only four constant SQL statements: HierarchySql, AttributesSql, SELECT 1, SELECT time_of_last_deploy FROM galaxy CLAIM_TYPE / behavior-rule VERDICT / accurate EVIDENCE / src/ZB.MOM.WW.MxGateway.Server/Galaxy/GalaxyRepository.cs:26 (SELECT 1), :40 (SELECT time_of_last_deploy FROM galaxy), :117 (HierarchySql), :176 (AttributesSql) CODE_AREA / test.cmd SEVERITY / low PROPOSED_FIX / flag only


DOC / LINES / GatewayTesting.md / 203206 CLAIM / "DashboardLdapLiveTests in src/ZB.MOM.WW.MxGateway.IntegrationTests/ … skipped unless MXGATEWAY_RUN_LIVE_LDAP_TESTS=1" CLAIM_TYPE / path, config-key VERDICT / accurate EVIDENCE / src/ZB.MOM.WW.MxGateway.IntegrationTests/DashboardLdapLiveTests.cs:14; LiveLdapFactAttribute.cs:5 ("MXGATEWAY_RUN_LIVE_LDAP_TESTS") CODE_AREA / test.envgate SEVERITY / low PROPOSED_FIX / flag only


DOC / LINES / GatewayTesting.md / 230 CLAIM / LDAP live tests run: dotnet test src/ZB.MOM.WW.MxGateway.IntegrationTests/ZB.MOM.WW.MxGateway.IntegrationTests.csproj --filter FullyQualifiedName~DashboardLdapLiveTests CLAIM_TYPE / command VERDICT / accurate EVIDENCE / src/ZB.MOM.WW.MxGateway.IntegrationTests/DashboardLdapLiveTests.cs:14 — class name matches filter CODE_AREA / test.cmd SEVERITY / low PROPOSED_FIX / flag only


DOC / LINES / GatewayTesting.md / 237243 CLAIM / scripts/discover-testmachine-tags.ps1 queries TestMachine_001TestMachine_020 for attributes: ProtectedValue, TestChangingInt, TestBoolArray, TestIntArray, TestDateTimeArray, TestStringArray CLAIM_TYPE / command VERDICT / accurate EVIDENCE / scripts/discover-testmachine-tags.ps1:511 — param $Attributes default matches exactly CODE_AREA / test.cmd SEVERITY / low PROPOSED_FIX / flag only


DOC / LINES / GatewayTesting.md / 370372 CLAIM / Cross-language smoke matrix filter: dotnet test src/ZB.MOM.WW.MxGateway.Tests/ZB.MOM.WW.MxGateway.Tests.csproj --filter FullyQualifiedName~CrossLanguageSmokeMatrixTests CLAIM_TYPE / command VERDICT / accurate EVIDENCE / src/ZB.MOM.WW.MxGateway.Tests/Contracts/CrossLanguageSmokeMatrixTests.cs:5 — class name matches CODE_AREA / test.cmd SEVERITY / low PROPOSED_FIX / flag only


DOC / LINES / GatewayTesting.md / 374378 CLAIM / Parity fixture matrix filter: dotnet test src/ZB.MOM.WW.MxGateway.Tests/ZB.MOM.WW.MxGateway.Tests.csproj --filter FullyQualifiedName~ParityFixtureMatrixTests CLAIM_TYPE / command VERDICT / accurate EVIDENCE / src/ZB.MOM.WW.MxGateway.Tests/Contracts/ParityFixtureMatrixTests.cs:6 — class name matches CODE_AREA / test.cmd SEVERITY / low PROPOSED_FIX / flag only


DOC / LINES / GatewayTesting.md / 380390 CLAIM / Fake worker test filters: FakeWorkerHarnessTests, SessionWorkerClientFactoryFakeWorkerTests, GatewayEndToEndFakeWorkerSmokeTests, WorkerClientTests all in the main tests project; WorkerPipeSessionTests in Worker.Tests with -p:Platform=x86 CLAIM_TYPE / command VERDICT / accurate EVIDENCE / FakeWorkerHarnessTests.cs:9, SessionWorkerClientFactoryFakeWorkerTests.cs:13, GatewayEndToEndFakeWorkerSmokeTests.cs:19, WorkerClientTests.cs:11; src/ZB.MOM.WW.MxGateway.Worker.Tests/Ipc/WorkerPipeSessionTests.cs:17; Worker.Tests.csproj:6 (<PlatformTarget>x86</PlatformTarget>) CODE_AREA / test.cmd SEVERITY / low PROPOSED_FIX / flag only


DOC / LINES / ClientBehaviorFixtures.md / 811 CLAIM / "The fixture manifest is clients/proto/fixtures/behavior/manifest.json. clients/proto/proto-inputs.json references the fixture root through behaviorFixtureRoot" CLAIM_TYPE / path VERDICT / accurate EVIDENCE / clients/proto/fixtures/behavior/manifest.json exists; clients/proto/proto-inputs.json:23 ("behaviorFixtureRoot": "clients/proto/fixtures/behavior") CODE_AREA / test.matrix SEVERITY / low PROPOSED_FIX / flag only


DOC / LINES / ClientBehaviorFixtures.md / 3136 CLAIM / Command reply fixtures in clients/proto/fixtures/behavior/command-replies/ parsing as mxaccess_gateway.v1.MxCommandReply CLAIM_TYPE / path VERDICT / accurate EVIDENCE / clients/proto/fixtures/behavior/command-replies/register.ok.reply.json and write.mxaccess-failure.reply.json exist CODE_AREA / test.matrix SEVERITY / low PROPOSED_FIX / flag only


DOC / LINES / ClientBehaviorFixtures.md / 4860 CLAIM / Event stream fixtures in clients/proto/fixtures/behavior/event-streams/; event families: OnDataChange, OnWriteComplete, OperationComplete, OnBufferedDataChange CLAIM_TYPE / path, term VERDICT / accurate EVIDENCE / clients/proto/fixtures/behavior/event-streams/session-event-stream.json exists CODE_AREA / test.matrix SEVERITY / low PROPOSED_FIX / flag only


DOC / LINES / ClientBehaviorFixtures.md / 9496 CLAIM / Validation: powershell -ExecutionPolicy Bypass -File scripts/validate-client-behavior-fixtures.ps1; "The script runs the focused C# contract tests that parse all protobuf JSON fixtures" CLAIM_TYPE / command VERDICT / accurate EVIDENCE / scripts/validate-client-behavior-fixtures.ps1:1015 — runs dotnet test on ZB.MOM.WW.MxGateway.Tests.csproj with filter ClientBehaviorFixtureTests; src/ZB.MOM.WW.MxGateway.Tests/Contracts/ClientBehaviorFixtureTests.cs:11 class exists CODE_AREA / test.cmd SEVERITY / low PROPOSED_FIX / flag only


DOC / LINES / ParityFixtureMatrix.md / 811 CLAIM / "The matrix lives in clients/proto/fixtures/parity/parity-fixture-matrix.json. It references the local MXAccess capture set under C:/Users/dohertj2/Desktop/mxaccess/captures" CLAIM_TYPE / path VERDICT / accurate EVIDENCE / clients/proto/fixtures/parity/parity-fixture-matrix.json exists; host-specific path is unverifiable from this repo CODE_AREA / test.matrix SEVERITY / low PROPOSED_FIX / flag only


DOC / LINES / ParityFixtureMatrix.md / 3740 CLAIM / "WriteSecured remains a documented gap because the current captures show 0x80004021 before MXAccess emits a value-bearing write body. OperationComplete and public OnBufferedDataChange batches also remain documented gaps" CLAIM_TYPE / behavior-rule VERDICT / accurate EVIDENCE / clients/proto/fixtures/parity/parity-fixture-matrix.json:280291 (WriteSecured documented_gap), :369 (OperationComplete documented_gap), :382 (OnBufferedDataChange documented_gap) CODE_AREA / test.matrix SEVERITY / low PROPOSED_FIX / flag only


DOC / LINES / ParityFixtureMatrix.md / 91 CLAIM / Validation: dotnet test src/ZB.MOM.WW.MxGateway.Tests/ZB.MOM.WW.MxGateway.Tests.csproj --filter FullyQualifiedName~ParityFixtureMatrixTests CLAIM_TYPE / command VERDICT / accurate EVIDENCE / src/ZB.MOM.WW.MxGateway.Tests/Contracts/ParityFixtureMatrixTests.cs:6 — class name matches CODE_AREA / test.cmd SEVERITY / low PROPOSED_FIX / flag only


DOC / LINES / CrossLanguageSmokeMatrix.md / 89 CLAIM / "The matrix lives in clients/proto/fixtures/smoke/cross-language-smoke-matrix.json" CLAIM_TYPE / path VERDICT / accurate EVIDENCE / clients/proto/fixtures/smoke/cross-language-smoke-matrix.json exists CODE_AREA / test.matrix SEVERITY / low PROPOSED_FIX / flag only


DOC / LINES / CrossLanguageSmokeMatrix.md / 3839 CLAIM / Integration gate: $env:MXGATEWAY_INTEGRATION = "1" CLAIM_TYPE / config-key VERDICT / accurate EVIDENCE / clients/proto/fixtures/smoke/cross-language-smoke-matrix.json:6 ("variable": "MXGATEWAY_INTEGRATION"); src/ZB.MOM.WW.MxGateway.Tests/Contracts/CrossLanguageSmokeMatrixTests.cs:18 asserts this exact value CODE_AREA / test.envgate SEVERITY / low PROPOSED_FIX / flag only


DOC / LINES / CrossLanguageSmokeMatrix.md / 4349 CLAIM / Shared inputs table: MXGATEWAY_ENDPOINT (default localhost:5000), MXGATEWAY_API_KEY, MXGATEWAY_TEST_ITEM (TestChildObject.TestInt), MXGATEWAY_TEST_WRITE_VALUE CLAIM_TYPE / config-key VERDICT / accurate EVIDENCE / clients/proto/fixtures/smoke/cross-language-smoke-matrix.json:1016 — all four variable names and the localhost:5000 fallback match exactly; CrossLanguageSmokeMatrixTests.cs:2325 asserts these CODE_AREA / test.envgate SEVERITY / low PROPOSED_FIX / flag only


DOC / LINES / CrossLanguageSmokeMatrix.md / 99101 CLAIM / Validation: dotnet test src/ZB.MOM.WW.MxGateway.Tests/ZB.MOM.WW.MxGateway.Tests.csproj --filter FullyQualifiedName~CrossLanguageSmokeMatrixTests CLAIM_TYPE / command VERDICT / accurate EVIDENCE / src/ZB.MOM.WW.MxGateway.Tests/Contracts/CrossLanguageSmokeMatrixTests.cs:5 — class name matches CODE_AREA / test.cmd SEVERITY / low PROPOSED_FIX / flag only


DOC / LINES / CrossLanguageSmokeMatrix.md / 5865 CLAIM / "the Rust CLI, which is pin-only and needs --ca-file or --require-certificate-validation" CLAIM_TYPE / term VERDICT / accurate EVIDENCE / clients/rust/crates/mxgw-cli/src/main.rs:426 (ca_file: Option<PathBuf>), :433 (require_certificate_validation: bool) CODE_AREA / test.cmd SEVERITY / low PROPOSED_FIX / flag only


DOC / LINES / CrossLanguageSmokeMatrix.md / 64 CLAIM / "Python uses trust-on-first-use" CLAIM_TYPE / behavior-rule VERDICT / accurate EVIDENCE / clients/python/tests/test_tls.py:114 (test_default_tls_connects_via_tofu) and :5 (doc string confirms TOFU default) CODE_AREA / test.cmd SEVERITY / low PROPOSED_FIX / flag only


DOC / LINES / ToolchainLinks.md / 61 CLAIM / "Go | 1.26.2 windows/amd64" CLAIM_TYPE / version VERDICT / unverifiable EVIDENCE / clients/go/go.mod:3 specifies go 1.26 (minimum requirement); ToolchainLinks records the installed binary version (1.26.2) which is a host-specific measurement not assertable from the repo. The go.mod minimum (1.26) is consistent with the stated installed version (1.26.2). Mark unverifiable — host install path. CODE_AREA / test.toolchain SEVERITY / low PROPOSED_FIX / flag only


DOC / LINES / ToolchainLinks.md / 8486 CLAIM / "rustc | 1.95.0" and "cargo | 1.95.0" CLAIM_TYPE / version VERDICT / unverifiable EVIDENCE / clients/rust/Cargo.toml:4 — edition 2021; no rust-version field pins a minimum; host install version is not assertable from the repo. CODE_AREA / test.toolchain SEVERITY / low PROPOSED_FIX / flag only


DOC / LINES / ToolchainLinks.md / 107113 CLAIM / Python packages table: grpcio==1.80.0, grpcio-tools==1.80.0, protobuf==6.33.6, pytest==9.0.3, pytest-asyncio==1.3.0, click==8.3.3, typer==0.25.0 CLAIM_TYPE / version VERDICT / unverifiable EVIDENCE / clients/python/pyproject.toml:42 specifies "pytest-asyncio>=1.3,<2" (range constraint, not a pinned version); the == version pins in ToolchainLinks reflect the installed state of the host machine at time of writing, not a locked requirement file committed to the repo. Internally consistent for their stated purpose (documenting installed versions). CODE_AREA / test.toolchain SEVERITY / low PROPOSED_FIX / flag only


DOC / LINES / ToolchainLinks.md / 123 CLAIM / "Gradle | 9.4.1 | C:\Tools\gradle-9.4.1\bin\gradle.bat" CLAIM_TYPE / version VERDICT / unverifiable EVIDENCE / clients/java/settings.gradle:23 — no Gradle wrapper or toolchain version constraint committed. Host-specific install; unverifiable from the repo. CODE_AREA / test.toolchain SEVERITY / low PROPOSED_FIX / flag only


DOC / LINES / GatewayTesting.md / (gap) CLAIM / (undocumented) IntegrationTestEnvironment.ResolveRepositoryRoot uses a parent-walk that accepts either .git marker or *.sln/*.slnx files, with an optional stopBoundary parameter added for test isolation (IntegrationTests-025). No prose in GatewayTesting.md explains this behaviour or what to do when the walk fails. CLAIM_TYPE / behavior-rule VERDICT / gap EVIDENCE / src/ZB.MOM.WW.MxGateway.IntegrationTests/IntegrationTestEnvironment.cs:100157 — ResolveRepositoryRoot with stopBoundary, throws InvalidOperationException on failure with actionable message. Gap: the doc mentions only MXGATEWAY_LIVE_MXACCESS_WORKER_EXE as an escape hatch; the error message itself (line 155) explains what to do, but the docs omit the root-not-found failure mode. CODE_AREA / test.envgate SEVERITY / low PROPOSED_FIX / Add a short note under "Live MXAccess Smoke" explaining that if the worker path resolver cannot locate the repository root it throws with a descriptive message; set MXGATEWAY_LIVE_MXACCESS_WORKER_EXE to bypass.


DOC / LINES / GatewayTesting.md / (gap) CLAIM / (undocumented) LiveGalaxyRepositoryFactAttribute exposes MXGATEWAY_LIVE_GALAXY_CONN as its own constant (ConnectionStringVariableName) separate from IntegrationTestEnvironment. This is not the same pattern as the MXAccess variables (which are centralised in IntegrationTestEnvironment). A developer running from CLAUDE.md's test table might look for this constant in the wrong class. CLAIM_TYPE / config-key VERDICT / gap EVIDENCE / src/ZB.MOM.WW.MxGateway.IntegrationTests/Galaxy/LiveGalaxyRepositoryFactAttribute.cs:11 — ConnectionStringVariableName lives here, not in IntegrationTestEnvironment CODE_AREA / test.envgate SEVERITY / low PROPOSED_FIX / flag only — the table in GatewayTesting.md correctly names the variable; the inconsistent home is a code-organisation note not a doc error.


Summary

Verdict counts

Verdict Count
accurate 26
wrong 2
stale 0
unverifiable 4
gap 2

Severity counts

Severity Count
high 2
medium 0
low 30

High-severity findings

  • GatewayTesting.md line 323 — wrong Gradle task name: The prose says the e2e script installs the Java CLI via gradle :mxgateway-cli:installDist, but the script actually uses :zb-mom-ww-mxgateway-cli:installDist (matching the actual Gradle subproject name zb-mom-ww-mxgateway-cli in clients/java/settings.gradle). A developer copying the documented command would get a Gradle "task not found" error.

  • clients/proto/fixtures/smoke/cross-language-smoke-matrix.json — wrong Java Gradle task in all Java command entries: Every Java command in the smoke fixture uses gradle :mxgateway-cli:run but the Gradle subproject is named :zb-mom-ww-mxgateway-cli. Running any Java smoke command from the fixture verbatim would fail. The unit tests that validate the matrix shape (CrossLanguageSmokeMatrixTests) do not check the literal Gradle task name, so this error passes CI undetected.