d2d2e5f68f
Restores the `code-reviews/` tree (was unwritten on this working copy)
and re-reviews every module per `REVIEW-PROCESS.md` against HEAD
`d692232`. The diff in scope is the five commits since the last sweep:
`dc9c0c9` (ZB.MOM.WW gateway-side rename + slnx migrate),
`397d3c5` (client SDK rename + the missing alarm-RPC proto types and
the .NET DiscoverHierarchyOptions POCO), `27ed651` (role-based LDAP
auth + HubToken bearer, drop PathBase), `6594359` (sidebar layout +
three SignalR push hubs), and `d692232` (EventsHub publisher + doc
refresh).
Module status
| Module | Open | Total | Delta this pass |
|---|---|---|---|
| Server | 8 | 43 | +6 |
| Contracts | 2 | 17 | +2 |
| Tests | 2 | 26 | +2 |
| IntegrationTests | 3 | 24 | +3 |
| Client.Java | 5 | 31 | +5 |
| Client.Rust | 1 | 21 | +1 |
| Worker | 0 | 25 | 0 (rename-only diff, clean) |
| Worker.Tests | 0 | 30 | 0 (rename-only diff, clean) |
| Client.Dotnet | 0 | 17 | 0 (rename + alarm-fix diff, clean) |
| Client.Python | 0 | 21 | 0 (rename + alarm-fix diff, clean) |
| Client.Go | 0 | 21 | 0 (rename + alarm-fix diff, clean) |
Total new findings: 19. Severity breakdown: 1 Medium-security
(Server-038), 4 Medium-documentation/coverage, 14 Low.
New findings
* Server-038 (Medium / Security) — EventsHub.SubscribeSession accepts
any session id from any Viewer; no per-session ACL guards the
EventsHub group fan-out.
* Server-039 (Low / Error handling) — HubTokenService.Validate
accepts a payload with null Name/NameIdentifier.
* Server-040 (Low / Conventions) — MapGroupsToRoles undocumented
full-vs-RDN lookup precedence.
* Server-041 (Low / Design adherence) — EventStreamService calls
IDashboardEventBroadcaster.Publish without a try/catch — fragile
seam relying on the never-throw contract.
* Server-042 (Low / Performance) — DashboardSnapshotPublisher tight
retry loop with no backoff (vs AlarmsHubPublisher 5s delay).
* Server-043 (Low / Documentation) — HubTokenService singleton
sharing across login + hub-token validation undocumented.
* Contracts-016 (Low / Conventions) — QueryActiveAlarmsRequest.session_id
reserved-for-future-use ambiguity.
* Contracts-017 (Low / Documentation) — rpc QueryActiveAlarms doc
omits the alarm_filter_prefix filter description.
* Tests-025 (Low / Conventions) — duplicate NullDashboardEventBroadcaster
fakes in EventStreamServiceTests and GatewayEndToEndFakeWorkerSmokeTests.
* Tests-026 (Medium / Testing coverage) — no test proves
EventStreamService actually calls IDashboardEventBroadcaster.Publish.
* IntegrationTests-022 (Low / Conventions) — ResolveRepositoryRoot
silent fallback to Directory.GetCurrentDirectory().
* IntegrationTests-023 (Low / Testing coverage) — DashboardLdapLiveTests
success-path asserts ldap_group but not the Role claim.
* IntegrationTests-024 (Low / Conventions) — inline
NullDashboardEventBroadcaster fake duplicates Tests-side copies.
* Client.Java-027 (Medium / Documentation) — README + JavaClientDesign
Gradle task names still use the old short project names.
* Client.Java-028 (Medium / Design adherence) — JavaClientDesign
build-layout shows the old `com/dohertylan/mxgateway/` package paths.
* Client.Java-029 (Low / Documentation) — README installDist path
cites the wrong directory.
* Client.Java-030 (Low / Testing coverage) — no Java test exercises
the regenerated QueryActiveAlarmsRequest RPC.
* Client.Java-031 (Low / Conventions) — README prose uses old short
project names instead of canonical prefixed ones.
* Client.Rust-021 (Low / Design adherence) — RustClientDesign.md
"Crate layout" shows an aspirational nested `crates/zb-mom-ww-mxgateway-client/`
that does not exist; actual layout is the flat top-level crate.
Two pre-existing pending findings (Server-031 lock-contention,
Server-032 bounded event channel) remain unchanged — neither was
touched by this wave of commits.
Process notes
- The `code-reviews/` tree was not in this working copy's git
history (the local extract pre-dates the divergent branch that
carried the reviews). Restored from `dd7ca16` via
`git checkout dd7ca16 -- code-reviews/` before the re-review.
- Some "Resolved" entries in the restored findings.md reference
fixes that landed on the divergent branch (the same one that
carried the reviews) and are not present on the current main
lineage. The re-review treats those statuses as historical;
the new pass only files findings against HEAD's actual state.
- `python code-reviews/regen-readme.py --check` is green.
Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
51 KiB
51 KiB
Code Reviews
Cross-module code review index for the mxaccessgw codebase. The review process is defined in ../REVIEW-PROCESS.md.
Each module's findings.md is the source of truth; this file is generated from them by regen-readme.py and must not be edited by hand.
Module status
| Module | Reviewer | Date | Commit | Status | Open | Total |
|---|---|---|---|---|---|---|
| Client.Dotnet | Claude Code | 2026-05-24 | d692232 |
Reviewed | 0 | 17 |
| Client.Go | Claude Code | 2026-05-24 | d692232 |
Reviewed | 0 | 21 |
| Client.Java | Claude Code | 2026-05-24 | d692232 |
Reviewed | 5 | 31 |
| Client.Python | Claude Code | 2026-05-24 | d692232 |
Reviewed | 0 | 21 |
| Client.Rust | Claude Code | 2026-05-24 | d692232 |
Reviewed | 1 | 21 |
| Contracts | Claude Code | 2026-05-24 | d692232 |
Reviewed | 2 | 17 |
| IntegrationTests | Claude Code | 2026-05-24 | d692232 |
Reviewed | 3 | 24 |
| Server | Claude Code | 2026-05-24 | d692232 |
Reviewed | 8 | 43 |
| Tests | Claude Code | 2026-05-24 | d692232 |
Reviewed | 2 | 26 |
| Worker | Claude Code | 2026-05-24 | d692232 |
Reviewed | 0 | 25 |
| Worker.Tests | Claude Code | 2026-05-24 | d692232 |
Reviewed | 0 | 30 |
Pending findings
Findings with status Open or In Progress, ordered by severity.
| ID | Severity | Category | Location | Description |
|---|---|---|---|---|
| Client.Java-027 | Medium | Documentation & comments | clients/java/README.md:36,107-175,185,205,220, clients/java/JavaClientDesign.md:195-211 |
Commit 397d3c5 renamed the gradle subprojects to zb-mom-ww-mxgateway-client and zb-mom-ww-mxgateway-cli in settings.gradle, but did not propagate that rename into the README's documented gradle commands or into `JavaClientDesign.md… |
| Client.Java-028 | Medium | Documentation & comments | clients/java/JavaClientDesign.md:23-27 |
The build-layout block in JavaClientDesign.md still shows the old Java package paths com/dohertylan/mxgateway/client/ and com/dohertylan/mxgateway/cli/. The actual source tree was moved to com/zb/mom/ww/mxgateway/{client,cli}/ in c… |
| Server-031 | Medium | Concurrency & thread safety | src/MxGateway.Server/Workers/WorkerClient.cs:392-422 (gateway-side heartbeat watchdog); src/MxGateway.Worker/Ipc/WorkerPipeSession.cs:588-617 (worker-side heartbeat loop); src/MxGateway.Worker/Ipc/WorkerFrameWriter.cs:14,67-76 (shared _writeLock) |
Surfaced during the 2026-05-20 cross-language e2e re-run against gateway b794c46. The .NET phase succeeded through open-session/register/bulk-subscribe/bulk-read/bulk-unsubscribe/stream-events/write but then failed on its t… |
| Server-032 | Medium | Error handling & resilience | src/MxGateway.Server/Workers/WorkerClient.cs:70-77,463-484 (gateway-side _events channel); src/MxGateway.Server/Configuration/EventOptions.cs:8 (default capacity 10,000); src/MxGateway.Server/Grpc/EventStreamService.cs (consumer) |
Surfaced during the 2026-05-20 cross-language e2e re-run against gateway b794c46. The Java phase advised ~55 items (item-handle 63) before failing on the next advise call with the Server-030 diagnostic `Session ... is not ready. Sess… |
| Server-038 | Medium | Security | src/ZB.MOM.WW.MxGateway.Server/Dashboard/Hubs/EventsHub.cs:23-44 |
EventsHub is gated by [Authorize(Policy = DashboardAuthenticationDefaults.HubClientsPolicy)], which checks only that the caller carries a dashboard role (Admin or Viewer). SubscribeSession(sessionId) accepts any non-empty session id… |
| Tests-026 | Medium | Testing coverage | src/ZB.MOM.WW.MxGateway.Tests/Gateway/Grpc/EventStreamServiceTests.cs, src/ZB.MOM.WW.MxGateway.Server/Grpc/EventStreamService.cs:123-126 |
The new IDashboardEventBroadcaster is wired into EventStreamService at line 123 (commit d692232) and the broadcaster's Publish is the only path that mirrors per-session events into the dashboard EventsHub. The unit tests inject `… |
| Client.Java-029 | Low | Documentation & comments | clients/java/README.md:208-209 |
The packaging section states "The library jar is under zb-mom-ww-mxgateway-client/build/libs. The installed CLI distribution is under zb-mom-ww-mxgateway-cli/build/install/mxgateway-cli." The library-jar path is correct, but the instal… |
| Client.Java-030 | Low | Testing coverage | clients/java/zb-mom-ww-mxgateway-client/src/test/java/com/zb/mom/ww/mxgateway/client/ |
Commit 397d3c5 added the missing QueryActiveAlarmsRequest proto message and the corresponding rpc QueryActiveAlarms to mxaccess_gateway.proto. The Java client now generates the request type and the gRPC stub method, and `MxGatewayC… |
| Client.Java-031 | Low | mxaccessgw conventions | clients/java/README.md:13,17,26 |
The README prose at lines 13–26 introduces the subprojects as mxgateway-client and mxgateway-cli (the old short names) when discussing the layout. Those are no longer the actual subproject names — settings.gradle declares `zb-mom-ww-… |
| Client.Rust-021 | Low | Design-document adherence | clients/rust/RustClientDesign.md:14-33 |
The crate-name change in commit 397d3c5 (top-level mxgateway-client → zb-mom-ww-mxgateway-client) is reflected in Cargo.toml, Cargo.lock, every use zb_mom_ww_mxgateway_client:: import, and build.rs. The "Recommended layout" b… |
| Contracts-016 | Low | Code organization & conventions | src/ZB.MOM.WW.MxGateway.Contracts/Protos/mxaccess_gateway.proto:31-41 (QueryActiveAlarmsRequest) |
The new public message QueryActiveAlarmsRequest (added in commit 397d3c5) has session_id = 1 with a comment "session_id is currently unused (the snapshot is session-less) but reserved so a future per-session view can be added without… |
| Contracts-017 | Low | Documentation & comments | src/ZB.MOM.WW.MxGateway.Contracts/Protos/mxaccess_gateway.proto:23-29 (the rpc QueryActiveAlarms block) |
The RPC comment on QueryActiveAlarms describes the stream order ("Point-in-time snapshot of the currently-active alarm set served from the gateway's always-on alarm monitor cache") and the session-less semantic, but does not mention that… |
| IntegrationTests-022 | Low | Code organization & conventions | src/ZB.MOM.WW.MxGateway.IntegrationTests/IntegrationTestEnvironment.cs:103-138 (ResolveRepositoryRoot / IsRepositoryRoot) |
The walker introduced in dc9c0c9 searches parents for a directory containing src/ plus either .git or a *.slnx/*.sln file, falling back to Directory.GetCurrentDirectory() when nothing matches. The fallback masks misconfiguratio… |
| IntegrationTests-023 | Low | Testing coverage | src/ZB.MOM.WW.MxGateway.IntegrationTests/DashboardLdapLiveTests.cs:14-29 |
AuthenticateAsync_AdminInGwAdminGroup_Succeeds asserts the principal carries an LdapGroupClaimType claim containing GwAdmin (line 26-28). After the 27ed651 refactor, DashboardAuthenticator.CreatePrincipal also emits a `ClaimTypes… |
| IntegrationTests-024 | Low | Code organization & conventions | src/ZB.MOM.WW.MxGateway.IntegrationTests/WorkerLiveMxAccessSmokeTests.cs (NullDashboardEventBroadcaster private class at end of file) |
The inline NullDashboardEventBroadcaster private class is the third copy in the repository (the other two live in EventStreamServiceTests and GatewayEndToEndFakeWorkerSmokeTests under the Tests module — see Tests-025). Each carries a… |
| Server-039 | Low | Error handling & resilience | src/ZB.MOM.WW.MxGateway.Server/Dashboard/HubTokenService.cs:37-58 |
HubTokenService.Validate deserializes the protected JSON payload and trusts payload.Roles even when payload.Name and payload.NameIdentifier are both null. The resulting ClaimsPrincipal has the MxGateway.Dashboard.HubToken sch… |
| Server-040 | Low | Code organization & conventions | src/ZB.MOM.WW.MxGateway.Server/Dashboard/DashboardAuthenticator.cs:140-160 (MapGroupsToRoles) |
MapGroupsToRoles checks each LDAP group against the role map twice — first by the full group string, then by ExtractFirstRdnValue(group) — and TryGetValue short-circuits on the first hit. The precedence ("full match wins over RDN mat… |
| Server-041 | Low | Design-document adherence | src/ZB.MOM.WW.MxGateway.Server/Grpc/EventStreamService.cs:123-126, src/ZB.MOM.WW.MxGateway.Server/Dashboard/Hubs/IDashboardEventBroadcaster.cs:6-10 |
IDashboardEventBroadcaster.Publish is documented as "Implementations must never throw — broadcast failures are best-effort and must not disrupt the source gRPC stream." EventStreamService honors that contract by passing the call throug… |
| Server-042 | Low | Performance & resource management | src/ZB.MOM.WW.MxGateway.Server/Dashboard/Hubs/DashboardSnapshotPublisher.cs:18-41 |
DashboardSnapshotPublisher.ExecuteAsync reads from IDashboardSnapshotService.WatchSnapshotsAsync inside an outer try that catches OperationCanceledException only. A failure inside WatchSnapshotsAsync (e.g. the snapshot service th… |
| Server-043 | Low | Documentation & comments | src/ZB.MOM.WW.MxGateway.Server/Dashboard/HubTokenService.cs:1, src/ZB.MOM.WW.MxGateway.Server/Dashboard/DashboardServiceCollectionExtensions.cs:24 |
HubTokenService is registered as a singleton (good — data protection providers are thread-safe and a single protector instance is correct) and shared by both DashboardHubConnectionFactory (per-circuit scoped, mints fresh tokens from th… |
| Tests-025 | Low | Code organization & conventions | src/ZB.MOM.WW.MxGateway.Tests/Gateway/Grpc/EventStreamServiceTests.cs:285-289, src/ZB.MOM.WW.MxGateway.Tests/Gateway/GatewayEndToEndFakeWorkerSmokeTests.cs:417-421 |
Commit d692232 widened the EventStreamService constructor with an IDashboardEventBroadcaster parameter. Two test files now carry an identical private sealed class NullDashboardEventBroadcaster : IDashboardEventBroadcaster with a si… |
Closed findings
Findings with status Resolved, Won't Fix, or Deferred.
| ID | Severity | Status | Category | Location |
|---|---|---|---|---|
| Server-001 | Critical | Resolved | Security | src/MxGateway.Server/GatewayApplication.cs:147-149, src/MxGateway.Server/Dashboard/DashboardEndpointRouteBuilderExtensions.cs:55-58, src/MxGateway.Server/Dashboard/Components/Routes.razor:1-15 |
| Client.Go-001 | High | Resolved | Correctness & logic bugs | clients/go/mxgateway/errors.go:88-93, clients/go/mxgateway/errors.go:117-128 |
| Client.Java-013 | High | Resolved | Testing coverage | clients/java/mxgateway-cli/src/test/java/com/dohertylan/mxgateway/cli/MxGatewayCliTests.java:212-304, clients/java/mxgateway-cli/src/main/java/com/dohertylan/mxgateway/cli/MxGatewayCli.java:1214-1244 |
| Client.Python-018 | High | Resolved | Code organization & conventions | clients/python/pyproject.toml:11 |
| Client.Rust-001 | High | Resolved | mxaccessgw conventions | clients/rust/src/options.rs:98,143 |
| Client.Rust-002 | High | Resolved | mxaccessgw conventions | clients/rust/src/session.rs:522 |
| Client.Rust-003 | High | Resolved | Correctness & logic bugs | clients/rust/crates/mxgw-cli/src/main.rs:1051 |
| Client.Rust-012 | High | Resolved | mxaccessgw conventions | clients/rust/src/galaxy.rs:282 |
| Client.Rust-013 | High | Resolved | mxaccessgw conventions | src/MxGateway.Contracts/Protos/mxaccess_gateway.proto:414-424 (origin); clients/rust/src/generated.rs:11-31 (suppression site) |
| IntegrationTests-001 | High | Resolved | Design-document adherence | src/MxGateway.IntegrationTests/Galaxy/LiveGalaxyRepositoryFactAttribute.cs:7, src/MxGateway.IntegrationTests/Galaxy/GalaxyRepositoryLiveTests.cs |
| IntegrationTests-002 | High | Resolved | Design-document adherence | src/MxGateway.IntegrationTests/DashboardLdapLiveTests.cs:13, src/MxGateway.Server/Configuration/LdapOptions.cs:27 |
| Server-003 | High | Resolved | Security | src/MxGateway.Server/Dashboard/DashboardAuthorizationHandler.cs:39,54-59, src/MxGateway.Server/Dashboard/DashboardAuthenticator.cs:236-258 |
| Server-017 | High | Resolved | Security | src/MxGateway.Server/Security/Authorization/GatewayGrpcScopeResolver.cs:13-27, src/MxGateway.Server/Grpc/MxAccessGatewayService.cs:173-247, docs/Authorization.md:108-110 |
| Tests-001 | High | Resolved | Testing coverage | src/MxGateway.Tests/Gateway/Grpc/MxAccessGatewayServiceTests.cs:483-489 |
| Tests-002 | High | Resolved | Security | src/MxGateway.Tests/Gateway/Grpc/GalaxyRepositoryGrpcServiceTests.cs:198-210 |
| Worker-001 | High | Resolved | Concurrency & thread safety | src/MxGateway.Worker/MxAccess/WnWrapAlarmConsumer.cs:204-207 |
| Worker-002 | High | Resolved | Correctness & logic bugs | src/MxGateway.Worker/Ipc/WorkerPipeSession.cs:545-549 |
| Worker-003 | High | Resolved | Correctness & logic bugs | src/MxGateway.Worker/Ipc/WorkerPipeSession.cs:399-403, :416-419 |
| Worker.Tests-001 | High | Resolved | Testing coverage | src/MxGateway.Worker.Tests/Sta/ (no StaMessagePumpTests.cs) |
| Worker.Tests-002 | High | Resolved | Testing coverage | src/MxGateway.Worker.Tests/MxAccess/MxAccessStaSessionTests.cs, src/MxGateway.Worker.Tests/MxAccess/MxAccessEventMapperTests.cs |
| Client.Dotnet-001 | Medium | Resolved | Error handling & resilience | clients/dotnet/MxGateway.Client/GrpcMxGatewayClientTransport.cs:190-199, clients/dotnet/MxGateway.Client/GrpcGalaxyRepositoryClientTransport.cs:131-140 |
| Client.Dotnet-002 | Medium | Resolved | Testing coverage | clients/dotnet/MxGateway.Client.Tests/FakeGatewayTransport.cs:145-148, clients/dotnet/MxGateway.Client.Tests/MxGatewayClientSessionTests.cs:236-256 |
| Client.Dotnet-003 | Medium | Resolved | Concurrency & thread safety | clients/dotnet/MxGateway.Client/MxGatewaySession.cs:659-663, clients/dotnet/MxGateway.Client/MxGatewayClient.cs:230-240 |
| Client.Go-002 | Medium | Resolved | Error handling & resilience | clients/go/mxgateway/session.go:440-516 |
| Client.Go-003 | Medium | Resolved | Correctness & logic bugs | clients/go/cmd/mxgw-go/main.go:517-532 |
| Client.Java-001 | Medium | Resolved | Security | clients/java/mxgateway-client/src/main/java/com/dohertylan/mxgateway/client/MxGatewaySecrets.java:30-32 |
| Client.Java-002 | Medium | Resolved | Concurrency & thread safety | clients/java/mxgateway-client/src/main/java/com/dohertylan/mxgateway/client/MxEventStream.java:31,66-92 |
| Client.Java-003 | Medium | Resolved | mxaccessgw conventions | clients/java/mxgateway-client/src/main/java/com/dohertylan/mxgateway/client/MxGatewayClient.java:119-140 |
| Client.Java-004 | Medium | Resolved | Correctness & logic bugs | clients/java/mxgateway-client/src/main/java/com/dohertylan/mxgateway/client/MxGatewaySession.java:114-120,157-163,191-197 |
| Client.Java-005 | Medium | Resolved | Error handling & resilience | clients/java/mxgateway-client/src/main/java/com/dohertylan/mxgateway/client/MxGatewaySession.java:92-105 |
| Client.Java-014 | Medium | Resolved | Concurrency & thread safety | clients/java/mxgateway-client/src/main/java/com/dohertylan/mxgateway/client/MxEventStream.java:59-65,117-124 |
| Client.Java-015 | Medium | Resolved | Concurrency & thread safety | clients/java/mxgateway-client/src/main/java/com/dohertylan/mxgateway/client/MxGatewayChannels.java:112-138, MxGatewayClient.java:183-191,224-232,322-329, GalaxyRepositoryClient.java:164-170,212-214 |
| Client.Java-021 | Medium | Resolved | Concurrency & thread safety | clients/java/mxgateway-client/src/main/java/com/dohertylan/mxgateway/client/DeployEventStream.java:96-135 |
| Client.Python-003 | Medium | Resolved | Error handling & resilience | clients/python/src/mxgateway/client.py:125-137,155-173 |
| Client.Python-005 | Medium | Resolved | Performance & resource management | clients/python/src/mxgateway/galaxy.py:117-140 |
| Client.Python-009 | Medium | Resolved | Testing coverage | clients/python/tests/ |
| Client.Python-013 | Medium | Resolved | Security | clients/python/src/mxgateway_cli/commands.py:757-762 |
| Client.Rust-005 | Medium | Resolved | Correctness & logic bugs | clients/rust/src/session.rs:489-520 |
| Client.Rust-006 | Medium | Resolved | Error handling & resilience | clients/rust/src/session.rs:531-555 |
| Client.Rust-015 | Medium | Resolved | Error handling & resilience | clients/rust/crates/mxgw-cli/src/main.rs:1053-1070 |
| Client.Rust-016 | Medium | Resolved | Testing coverage | clients/rust/tests/client_behavior.rs, clients/rust/src/session.rs:489-519,654-768 |
| Client.Rust-018 | Medium | Resolved | Error handling & resilience | clients/rust/crates/mxgw-cli/src/main.rs:1098-1170; scripts/bench-read-bulk.ps1:347-365; siblings: clients/go/cmd/mxgw-go/main.go:600-648, clients/python/src/mxgateway_cli/commands.py:614-662, clients/dotnet/MxGateway.Client.Cli/MxGatewayClientCli.cs:685-770, clients/java/mxgateway-cli/src/main/java/com/dohertylan/mxgateway/cli/MxGatewayCli.java:855-940 |
| Contracts-002 | Medium | Resolved | Error handling & resilience | src/MxGateway.Contracts/Protos/mxaccess_gateway.proto:384-385, :95 |
| Contracts-009 | Medium | Resolved | Design-document adherence | docs/Contracts.md:13-24 |
| IntegrationTests-003 | Medium | Resolved | Correctness & logic bugs | src/MxGateway.IntegrationTests/WorkerLiveMxAccessSmokeTests.cs:89-97 |
| IntegrationTests-004 | Medium | Resolved | Error handling & resilience | src/MxGateway.IntegrationTests/WorkerLiveMxAccessSmokeTests.cs:108-111 |
| IntegrationTests-005 | Medium | Resolved | Testing coverage | src/MxGateway.IntegrationTests/WorkerLiveMxAccessSmokeTests.cs |
| IntegrationTests-006 | Medium | Resolved | Testing coverage | src/MxGateway.IntegrationTests/DashboardLdapLiveTests.cs |
| IntegrationTests-012 | Medium | Resolved | Correctness & logic bugs | src/MxGateway.IntegrationTests/WorkerLiveMxAccessSmokeTests.cs:147-151 |
| IntegrationTests-014 | Medium | Resolved | Testing coverage | src/MxGateway.IntegrationTests/WorkerLiveMxAccessSmokeTests.cs |
| IntegrationTests-017 | Medium | Resolved | Correctness & logic bugs | src/MxGateway.IntegrationTests/WorkerLiveMxAccessSmokeTests.cs:350-407 |
| IntegrationTests-019 | Medium | Resolved | Security | src/MxGateway.IntegrationTests/WorkerLiveMxAccessSmokeTests.cs:497-534 |
| Server-002 | Medium | Resolved | Design-document adherence | src/MxGateway.Server/Program.cs:24, src/MxGateway.Server/GatewayApplication.cs |
| Server-004 | Medium | Resolved | Code organization & conventions | src/MxGateway.Server/Security/Authentication/ApiKeyAdminCommandLineParser.cs:227-233, src/MxGateway.Server/Security/Authentication/ApiKeyAdminCliRunner.cs:53-77, src/MxGateway.Server/Dashboard/DashboardApiKeyManagementService.cs:21-67 |
| Server-005 | Medium | Resolved | Error handling & resilience | src/MxGateway.Server/Galaxy/GalaxyHierarchyRefreshService.cs:22-28, src/MxGateway.Server/Galaxy/GalaxyHierarchyCache.cs:184 |
| Server-006 | Medium | Resolved | Correctness & logic bugs | src/MxGateway.Server/Sessions/SessionManager.cs:84-114 |
| Server-015 | Medium | Resolved | Concurrency & thread safety | src/MxGateway.Server/Sessions/GatewaySession.cs:8-15,266-308,720-775 |
| Server-016 | Medium | Resolved | Error handling & resilience | src/MxGateway.Server/Sessions/GatewaySession.cs:790-797, src/MxGateway.Server/Sessions/SessionManager.cs:237-258 |
| Server-021 | Medium | Resolved | Testing coverage | src/MxGateway.Server/Grpc/MxAccessGatewayService.cs:266-664, src/MxGateway.Tests/Gateway/Grpc/MxAccessGatewayServiceTests.cs |
| Server-030 | Medium | Resolved | Error handling & resilience | src/MxGateway.Server/Sessions/GatewaySession.cs:952-980 |
| Server-033 | Medium | Resolved | Error handling & resilience | src/MxGateway.Server/Galaxy/GalaxyHierarchyCache.cs:265-323 (TryRestoreFromDiskAsync), :84-99 (_firstLoad / WaitForFirstLoadAsync); src/MxGateway.Server/Grpc/GalaxyRepositoryGrpcService.cs:141-163 (WaitForCacheBootstrap) |
| Tests-003 | Medium | Resolved | Performance & resource management | src/MxGateway.Tests/Security/Authentication/SqliteAuthStoreTests.cs:170-176, src/MxGateway.Tests/Security/Authentication/ApiKeyAdminCliRunnerTests.cs:252-258 |
| Tests-004 | Medium | Resolved | Testing coverage | src/MxGateway.Tests/Security/Authorization/GatewayGrpcAuthorizationInterceptorTests.cs |
| Tests-005 | Medium | Resolved | Testing coverage | src/MxGateway.Tests/Gateway/Grpc/EventStreamServiceTests.cs:239-261, src/MxGateway.Tests/Gateway/Sessions/SessionManagerTests.cs |
| Tests-006 | Medium | Resolved | Concurrency & thread safety | src/MxGateway.Tests/Gateway/Workers/WorkerClientTests.cs:76, src/MxGateway.Tests/Gateway/Workers/FakeWorkerHarnessTests.cs:122 |
| Tests-013 | Medium | Resolved | Testing coverage | src/MxGateway.Server/Sessions/GatewaySession.cs:449-679, src/MxGateway.Tests/Gateway/Sessions/SessionManagerTests.cs |
| Tests-016 | Medium | Resolved | Testing coverage | src/MxGateway.Tests/Galaxy/GalaxyHierarchyCacheTests.cs:29-41,115-124 |
| Tests-020 | Medium | Resolved | Testing coverage | src/MxGateway.Tests/Gateway/Grpc/MxAccessGatewayServiceConstraintTests.cs:275-347, src/MxGateway.Server/Grpc/MxAccessGatewayService.cs:803-829 |
| Worker-004 | Medium | Resolved | Correctness & logic bugs | src/MxGateway.Worker/Ipc/WorkerPipeSession.cs:565-588 |
| Worker-005 | Medium | Resolved | Error handling & resilience | src/MxGateway.Worker/MxAccess/MxAccessStaSession.cs:205-258 (production alarm poll loop) |
| Worker-006 | Medium | Resolved | Correctness & logic bugs | src/MxGateway.Worker/Ipc/WorkerPipeSession.cs:117-124, src/MxGateway.Worker/MxAccess/MxAccessStaSession.cs:386-491 |
| Worker-007 | Medium | Resolved | mxaccessgw conventions | src/MxGateway.Worker/MxAccess/MxAccessComServer.cs:130-150 |
| Worker-008 | Medium | Resolved | Concurrency & thread safety | src/MxGateway.Worker/MxAccess/MxAccessStaSession.cs:205-249, :429-447 |
| Worker-016 | Medium | Resolved | Concurrency & thread safety | src/MxGateway.Worker/MxAccess/MxAccessStaSession.cs:261-265 |
| Worker-017 | Medium | Resolved | Error handling & resilience | src/MxGateway.Worker/Sta/StaRuntime.cs:280-288, src/MxGateway.Worker/Ipc/WorkerPipeSession.cs:602-631 |
| Worker-023 | Medium | Resolved | Error handling & resilience | src/MxGateway.Worker/Ipc/WorkerPipeSession.cs:610-668, src/MxGateway.Worker/MxAccess/MxAccessCommandExecutor.cs:124-153 |
| Worker.Tests-003 | Medium | Resolved | Concurrency & thread safety | src/MxGateway.Worker.Tests/Sta/StaRuntimeTests.cs:46-48 |
| Worker.Tests-004 | Medium | Resolved | Concurrency & thread safety | src/MxGateway.Worker.Tests/MxAccess/MxAccessStaSessionTests.cs:281-329 |
| Worker.Tests-005 | Medium | Resolved | Performance & resource management | src/MxGateway.Worker.Tests/Ipc/WorkerFrameProtocolTests.cs:20-31,103-105, src/MxGateway.Worker.Tests/Ipc/WorkerPipeSessionTests.cs:28-31 |
| Worker.Tests-006 | Medium | Resolved | Performance & resource management | src/MxGateway.Worker.Tests/MxAccess/MxAccessStaSessionTests.cs:282,305,315,323 |
| Worker.Tests-007 | Medium | Resolved | Design-document adherence | docs/WorkerFrameProtocol.md:38-49 |
| Worker.Tests-016 | Medium | Resolved | Code organization & conventions | src/MxGateway.Worker.Tests/MxAccess/AlarmCommandExecutorTests.cs:317-393 |
| Worker.Tests-017 | Medium | Resolved | Testing coverage | src/MxGateway.Worker.Tests/Ipc/WorkerPipeSessionTests.cs |
| Worker.Tests-018 | Medium | Resolved | Correctness & logic bugs | src/MxGateway.Worker.Tests/MxAccess/MxAccessLiveComCreationTests.cs:18-31, 35-73, 75-145, 148-220, 222-342 |
| Client.Dotnet-004 | Low | Resolved | Error handling & resilience | clients/dotnet/MxGateway.Client/MxGatewayClient.cs:283-294, clients/dotnet/MxGateway.Client/GalaxyRepositoryClient.cs:392-403 |
| Client.Dotnet-005 | Low | Resolved | Correctness & logic bugs | clients/dotnet/MxGateway.Client/MxGatewaySession.cs:82,124,175 |
| Client.Dotnet-006 | Low | Resolved | Code organization & conventions | clients/dotnet/MxGateway.Client/MxGatewayClientOptions.cs:50, clients/dotnet/MxGateway.Client/MxGatewayClientContractInfo.cs:10-14 |
| Client.Dotnet-007 | Low | Resolved | Documentation & comments | clients/dotnet/MxGateway.Client/MxGatewayClient.cs:185-192 |
| Client.Dotnet-008 | Low | Resolved | Correctness & logic bugs | clients/dotnet/MxGateway.Client.Cli/MxGatewayCliSecretRedactor.cs:9-17 |
| Client.Dotnet-009 | Low | Resolved | Concurrency & thread safety | clients/dotnet/MxGateway.Client/GalaxyRepositoryClient.cs:26,339-348,445-448 |
| Client.Dotnet-010 | Low | Resolved | Correctness & logic bugs | clients/dotnet/MxGateway.Client.Cli/MxGatewayClientCli.cs:638,896,1261,1279 |
| Client.Dotnet-011 | Low | Resolved | Concurrency & thread safety | clients/dotnet/MxGateway.Client.Cli/MxGatewayClientCli.cs:857-858,922-963,1014-1015 |
| Client.Dotnet-012 | Low | Resolved | Code organization & conventions | clients/dotnet/MxGateway.Client/MxGateway.Client.csproj, clients/dotnet/MxGateway.Client.Cli/MxGateway.Client.Cli.csproj, clients/dotnet/MxGateway.Client.Tests/MxGateway.Client.Tests.csproj |
| Client.Dotnet-013 | Low | Resolved | Code organization & conventions | clients/dotnet/MxGateway.Client/DiscoverHierarchyOptions.cs:3-24, clients/dotnet/MxGateway.Client/GalaxyRepositoryClient.cs:185-187, clients/dotnet/MxGateway.Client.Cli/IMxGatewayCliClient.cs:6 |
| Client.Dotnet-014 | Low | Resolved | Testing coverage | clients/dotnet/MxGateway.Client.Tests/MxGatewayClientAlarmsTests.cs:76-98, clients/dotnet/MxGateway.Client.Tests/FakeGatewayTransport.cs:212-231 |
| Client.Dotnet-015 | Low | Resolved | Correctness & logic bugs | clients/dotnet/MxGateway.Client.Cli/MxGatewayClientCli.cs:221-236, clients/dotnet/MxGateway.Client.Cli/MxGatewayClientCli.cs:596-1065 |
| Client.Dotnet-016 | Low | Resolved | Concurrency & thread safety | clients/dotnet/MxGateway.Client.Cli/MxGatewayClientCli.cs:922-976 |
| Client.Dotnet-017 | Low | Resolved | Error handling & resilience | clients/dotnet/MxGateway.Client.Cli/MxGatewayClientCli.cs:1190-1262 |
| Client.Go-004 | Low | Resolved | mxaccessgw conventions | clients/go/mxgateway/alarms_test.go:153-154, clients/go/mxgateway/galaxy_test.go:58-59 |
| Client.Go-005 | Low | Resolved | Design-document adherence | clients/go/mxgateway/client.go:64,68, clients/go/mxgateway/galaxy.go:83,87 |
| Client.Go-006 | Low | Resolved | Error handling & resilience | clients/go/mxgateway/errors.go:9-130 |
| Client.Go-007 | Low | Resolved | Correctness & logic bugs | clients/go/mxgateway/session.go:526-532 |
| Client.Go-008 | Low | Resolved | Testing coverage | clients/go/mxgateway/ (test files) |
| Client.Go-009 | Low | Resolved | Code organization & conventions | clients/go/mxgateway/galaxy.go:60-93,241-256, clients/go/mxgateway/client.go:41-74,190-205 |
| Client.Go-010 | Low | Resolved | Documentation & comments | clients/go/mxgateway/client.go:39-40 |
| Client.Go-011 | Low | Resolved | Correctness & logic bugs | clients/go/mxgateway/alarms_test.go:66-73 |
| Client.Go-012 | Low | Resolved | Documentation & comments | clients/go/cmd/mxgw-go/main.go:1063-1065, clients/go/cmd/mxgw-go/main.go:88-104 |
| Client.Go-013 | Low | Resolved | Concurrency & thread safety | clients/go/cmd/mxgw-go/main.go:1246-1249, clients/go/cmd/mxgw-go/main.go:1257-1262 |
| Client.Go-014 | Low | Resolved | Error handling & resilience | clients/go/mxgateway/session.go:602, clients/go/mxgateway/galaxy.go:189 |
| Client.Go-015 | Low | Resolved | Code organization & conventions | clients/go/cmd/mxgw-go/main.go:410-512 |
| Client.Go-016 | Low | Resolved | Testing coverage | clients/go/mxgateway/galaxy_test.go:382-429 |
| Client.Go-017 | Low | Resolved | Error handling & resilience | clients/go/cmd/mxgw-go/main.go:954-991 |
| Client.Go-018 | Low | Resolved | Concurrency & thread safety | clients/go/cmd/mxgw-go/main.go:593-623 |
| Client.Go-019 | Low | Resolved | Documentation & comments | clients/go/cmd/mxgw-go/main.go:710-716, clients/go/cmd/mxgw-go/main.go:1204,1213 |
| Client.Go-020 | Low | Resolved | Code organization & conventions | clients/go/cmd/mxgw-go/main.go:753-802, clients/go/cmd/mxgw-go/main.go:1199-1275 |
| Client.Go-021 | Low | Resolved | Testing coverage | clients/go/cmd/mxgw-go/main_test.go, clients/go/cmd/mxgw-go/main.go:363-520,522-655 |
| Client.Java-006 | Low | Resolved | Performance & resource management | clients/java/mxgateway-client/src/main/java/com/dohertylan/mxgateway/client/MxGatewayClient.java:323-328, clients/java/mxgateway-client/src/main/java/com/dohertylan/mxgateway/client/GalaxyRepositoryClient.java:279-284 |
| Client.Java-007 | Low | Resolved | Testing coverage | clients/java/mxgateway-client/src/test/java/com/dohertylan/mxgateway/client/ |
| Client.Java-008 | Low | Resolved | Error handling & resilience | clients/java/mxgateway-client/src/main/java/com/dohertylan/mxgateway/client/MxGatewayClient.java:298-304 |
| Client.Java-009 | Low | Resolved | Code organization & conventions | clients/java/mxgateway-client/src/main/java/com/dohertylan/mxgateway/client/GalaxyRepositoryClient.java:310-391, clients/java/mxgateway-client/src/main/java/com/dohertylan/mxgateway/client/MxGatewayClient.java:346-413 |
| Client.Java-010 | Low | Resolved | Documentation & comments | clients/java/mxgateway-client/src/main/java/com/dohertylan/mxgateway/client/MxGatewayClient.java:269-272, clients/java/README.md:76 |
| Client.Java-011 | Low | Resolved | Performance & resource management | clients/java/mxgateway-client/src/main/java/com/dohertylan/mxgateway/client/MxEventStream.java:37-63 |
| Client.Java-012 | Low | Resolved | Correctness & logic bugs | clients/java/mxgateway-cli/src/main/java/com/dohertylan/mxgateway/cli/MxGatewayCli.java:667-674 |
| Client.Java-016 | Low | Resolved | Code organization & conventions | clients/java/mxgateway-client/src/main/java/com/dohertylan/mxgateway/client/MxGatewayClient.java:361-391, GalaxyRepositoryClient.java:285-315 |
| Client.Java-017 | Low | Resolved | Documentation & comments | clients/java/mxgateway-client/src/main/java/com/dohertylan/mxgateway/client/MxEventStream.java:25-36, clients/java/README.md:99-107 |
| Client.Java-018 | Low | Resolved | Security | clients/java/mxgateway-client/src/main/java/com/dohertylan/mxgateway/client/MxGatewaySecrets.java:54-66 |
| Client.Java-019 | Low | Resolved | Performance & resource management | clients/java/mxgateway-client/src/main/java/com/dohertylan/mxgateway/client/MxGatewayClient.java:362-391, GalaxyRepositoryClient.java:286-315 |
| Client.Java-020 | Low | Resolved | Correctness & logic bugs | clients/java/mxgateway-cli/src/main/java/com/dohertylan/mxgateway/cli/MxGatewayCli.java:244-254, galaxy_repository.proto:94 |
| Client.Java-022 | Low | Resolved | Documentation & comments | clients/java/mxgateway-client/src/main/java/com/dohertylan/mxgateway/client/MxGatewayChannels.java:161-172 |
| Client.Java-023 | Low | Resolved | Correctness & logic bugs | clients/java/mxgateway-cli/src/main/java/com/dohertylan/mxgateway/cli/MxGatewayCli.java:1054, src/MxGateway.Contracts/Protos/mxaccess_gateway.proto:634 |
| Client.Java-024 | Low | Resolved | Correctness & logic bugs | clients/java/mxgateway-cli/src/main/java/com/dohertylan/mxgateway/cli/MxGatewayCli.java:855-883 |
| Client.Java-025 | Low | Resolved | Code organization & conventions | clients/java/mxgateway-cli/src/main/java/com/dohertylan/mxgateway/cli/MxGatewayCli.java:1176-1185 |
| Client.Java-026 | Low | Resolved | Testing coverage | clients/java/mxgateway-cli/src/test/java/com/dohertylan/mxgateway/cli/MxGatewayCliTests.java |
| Client.Python-001 | Low | Resolved | Documentation & comments | clients/python/pyproject.toml:8,25, clients/python/src/mxgateway_cli/commands.py:25 |
| Client.Python-002 | Low | Resolved | Code organization & conventions | clients/python/src/mxgateway/__init__.py:27 |
| Client.Python-004 | Low | Resolved | Correctness & logic bugs | clients/python/src/mxgateway_cli/commands.py:386,402-404 |
| Client.Python-006 | Low | Resolved | Concurrency & thread safety | clients/python/src/mxgateway/client.py:74-82, clients/python/src/mxgateway/galaxy.py:85-93, clients/python/src/mxgateway/session.py:38-55 |
| Client.Python-007 | Low | Resolved | Error handling & resilience | clients/python/src/mxgateway/client.py:204-213 |
| Client.Python-008 | Low | Resolved | Correctness & logic bugs | clients/python/src/mxgateway/values.py:62-67,83-88 |
| Client.Python-010 | Low | Resolved | Code organization & conventions | clients/python/src/mxgateway/session.py:404, clients/python/src/mxgateway_cli/commands.py:422-425 |
| Client.Python-011 | Low | Resolved | Error handling & resilience | clients/python/src/mxgateway/errors.py:122-148 |
| Client.Python-012 | Low | Won't Fix | mxaccessgw conventions | clients/python/src/mxgateway/client.py:84-108, clients/python/src/mxgateway/session.py:57-77 |
| Client.Python-014 | Low | Resolved | Code organization & conventions | clients/python/src/mxgateway_cli/commands.py:22-23 |
| Client.Python-015 | Low | Resolved | Testing coverage | clients/python/src/mxgateway_cli/commands.py:273-294,564-647, clients/python/tests/ |
| Client.Python-016 | Low | Resolved | Testing coverage | clients/python/src/mxgateway_cli/commands.py:25,757-775,805-830 |
| Client.Python-017 | Low | Resolved | Documentation & comments | clients/python/pyproject.toml:5-25, clients/python/src/mxgateway/ |
| Client.Python-019 | Low | Resolved | Code organization & conventions | clients/python/pyproject.toml:60-61, clients/python/src/mxgateway_cli/ |
| Client.Python-020 | Low | Resolved | Testing coverage | clients/python/tests/, scripts/ |
| Client.Python-021 | Low | Resolved | Documentation & comments | clients/python/src/mxgateway_cli/commands.py, clients/python/README.md:235-258 |
| Client.Rust-004 | Low | Resolved | Documentation & comments | clients/rust/src/version.rs:7 |
| Client.Rust-007 | Low | Resolved | Design-document adherence | clients/rust/RustClientDesign.md:14-55 |
| Client.Rust-008 | Low | Resolved | Performance & resource management | clients/rust/src/value.rs:161-261 |
| Client.Rust-009 | Low | Resolved | Testing coverage | clients/rust/tests/client_behavior.rs, clients/rust/src/galaxy.rs |
| Client.Rust-010 | Low | Resolved | Error handling & resilience | clients/rust/src/client.rs:255-268, clients/rust/src/galaxy.rs:204-216 |
| Client.Rust-011 | Low | Resolved | mxaccessgw conventions | clients/rust/src/session.rs:469 |
| Client.Rust-014 | Low | Resolved | mxaccessgw conventions | clients/rust/crates/mxgw-cli/src/main.rs:450,497 |
| Client.Rust-017 | Low | Resolved | Design-document adherence | clients/rust/RustClientDesign.md:79-99,156-163 |
| Client.Rust-019 | Low | Resolved | Design-document adherence | clients/rust/RustClientDesign.md:96-100 |
| Client.Rust-020 | Low | Resolved | Documentation & comments | clients/rust/src/session.rs:31-46; clients/rust/src/lib.rs:14-39 |
| Contracts-001 | Low | Resolved | Design-document adherence | docs/Grpc.md:13 (and :3, :32, :39) |
| Contracts-003 | Low | Won't Fix | Code organization & conventions | src/MxGateway.Contracts/MxGateway.Contracts.csproj:10 |
| Contracts-004 | Low | Resolved | Documentation & comments | src/MxGateway.Contracts/GatewayContractInfo.cs:3-6 |
| Contracts-005 | Low | Resolved | mxaccessgw conventions | src/MxGateway.Contracts/Protos/mxaccess_gateway.proto, src/MxGateway.Contracts/Protos/mxaccess_worker.proto |
| Contracts-006 | Low | Resolved | Correctness & logic bugs | src/MxGateway.Contracts/Protos/mxaccess_gateway.proto:647 |
| Contracts-007 | Low | Resolved | Testing coverage | src/MxGateway.Tests/Contracts/ProtobufContractRoundTripTests.cs |
| Contracts-008 | Low | Resolved | Design-document adherence | src/MxGateway.Contracts/Protos/mxaccess_gateway.proto:451-459, :627-636 |
| Contracts-010 | Low | Resolved | Testing coverage | src/MxGateway.Tests/Contracts/ProtobufContractRoundTripTests.cs |
| Contracts-011 | Low | Resolved | Security | src/MxGateway.Contracts/Protos/mxaccess_gateway.proto:392-397, :406-412 |
| Contracts-012 | Low | Resolved | Documentation & comments | src/MxGateway.Contracts/Protos/galaxy_repository.proto:120 |
| Contracts-013 | Low | Resolved | Documentation & comments | src/MxGateway.Tests/Contracts/GatewayContractInfoTests.cs:14 |
| Contracts-014 | Low | Resolved | Documentation & comments | src/MxGateway.Contracts/Protos/mxaccess_gateway.proto:549-553 |
| Contracts-015 | Low | Resolved | Documentation & comments | src/MxGateway.Contracts/Protos/mxaccess_gateway.proto:571-582 |
| IntegrationTests-007 | Low | Resolved | Concurrency & thread safety | src/MxGateway.IntegrationTests/WorkerLiveMxAccessSmokeTests.cs:20, src/MxGateway.IntegrationTests/Galaxy/GalaxyRepositoryLiveTests.cs:5, src/MxGateway.IntegrationTests/DashboardLdapLiveTests.cs:9 |
| IntegrationTests-008 | Low | Resolved | Code organization & conventions | src/MxGateway.IntegrationTests/LiveLdapFactAttribute.cs, src/MxGateway.IntegrationTests/Galaxy/LiveGalaxyRepositoryFactAttribute.cs, src/MxGateway.IntegrationTests/LiveMxAccessFactAttribute.cs |
| IntegrationTests-009 | Low | Resolved | Documentation & comments | src/MxGateway.IntegrationTests/WorkerLiveMxAccessSmokeTests.cs:372-375 |
| IntegrationTests-010 | Low | Resolved | Correctness & logic bugs | src/MxGateway.IntegrationTests/WorkerLiveMxAccessSmokeTests.cs:366-369 |
| IntegrationTests-011 | Low | Resolved | Documentation & comments | src/MxGateway.IntegrationTests/WorkerLiveMxAccessSmokeTests.cs:236-240, src/MxGateway.IntegrationTests/WorkerLiveMxAccessSmokeTests.cs:183-187 |
| IntegrationTests-013 | Low | Resolved | Performance & resource management | src/MxGateway.IntegrationTests/WorkerLiveMxAccessSmokeTests.cs:519-609 |
| IntegrationTests-015 | Low | Resolved | Code organization & conventions | src/MxGateway.IntegrationTests/WorkerLiveMxAccessSmokeTests.cs:30,119,201, src/MxGateway.IntegrationTests/DashboardLdapLiveTests.cs:13,32,48,67,84, src/MxGateway.IntegrationTests/Galaxy/GalaxyRepositoryLiveTests.cs:10,22,34,52 |
| IntegrationTests-016 | Low | Resolved | Code organization & conventions | src/MxGateway.IntegrationTests/Galaxy/LiveGalaxyRepositoryFactAttribute.cs:26, src/MxGateway.Server/Galaxy/GalaxyRepositoryOptions.cs:13 |
| IntegrationTests-018 | Low | Resolved | Code organization & conventions | src/MxGateway.IntegrationTests/WorkerLiveMxAccessSmokeTests.cs:1037, src/MxGateway.IntegrationTests/WorkerLiveMxAccessSmokeTests.cs:595 |
| IntegrationTests-020 | Low | Resolved | Correctness & logic bugs | src/MxGateway.IntegrationTests/WorkerLiveMxAccessSmokeTests.cs:616-622 |
| IntegrationTests-021 | Low | Resolved | Testing coverage | src/MxGateway.IntegrationTests/WorkerLiveMxAccessSmokeTests.cs:579-622 |
| Server-007 | Low | Resolved | Performance & resource management | src/MxGateway.Server/Galaxy/GalaxyHierarchyProjector.cs:55-70 |
| Server-008 | Low | Resolved | Performance & resource management | src/MxGateway.Server/Grpc/GalaxyRepositoryGrpcService.cs:111-134,160-189 |
| Server-009 | Low | Resolved | Error handling & resilience | src/MxGateway.Server/Security/Authentication/AuthSqliteConnectionFactory.cs:15-32 |
| Server-010 | Low | Resolved | Security | src/MxGateway.Server/Security/Authentication/SqliteApiKeyAdminStore.cs:91-114, src/MxGateway.Server/Dashboard/Components/Pages/ApiKeysPage.razor:168-172 |
| Server-011 | Low | Resolved | Code organization & conventions | src/MxGateway.Server/Sessions/WorkerAlarmRpcDispatcher.cs:1-46 |
| Server-012 | Low | Resolved | Documentation & comments | CLAUDE.md (Authentication section and apikey create example) |
| Server-013 | Low | Resolved | Testing coverage | src/MxGateway.Tests/Gateway/Dashboard/DashboardAuthorizationHandlerTests.cs, src/MxGateway.Tests/Gateway/GatewayApplicationTests.cs |
| Server-014 | Low | Resolved | Documentation & comments | src/MxGateway.Server/Grpc/MxAccessGatewayService.cs:162-171,191-198,206-214,229-237 |
| Server-018 | Low | Resolved | Performance & resource management | src/MxGateway.Server/Galaxy/GalaxyGlobMatcher.cs:15 |
| Server-019 | Low | Resolved | Correctness & logic bugs | src/MxGateway.Server/Sessions/WorkerAlarmRpcDispatcher.cs:183-221 |
| Server-020 | Low | Resolved | Code organization & conventions | src/MxGateway.Server/Dashboard/Components/Pages/DashboardHome.razor:1-2, …/GalaxyPage.razor:1-2, …/ApiKeysPage.razor:1-2, …/EventsPage.razor:1-2, …/SessionsPage.razor:1-2, …/WorkersPage.razor:1-2, …/SettingsPage.razor:1-2, …/SessionDetailsPage.razor:1-2 |
| Server-022 | Low | Resolved | Documentation & comments | src/MxGateway.Server/Sessions/IAlarmRpcDispatcher.cs:8-29 |
| Server-023 | Low | Resolved | Documentation & comments | src/MxGateway.Server/Sessions/NotWiredAlarmRpcDispatcher.cs:10-26 |
| Server-024 | Low | Resolved | Correctness & logic bugs | src/MxGateway.Server/Galaxy/GalaxyGlobMatcher.cs:56-77 |
| Server-025 | Low | Resolved | Code organization & conventions | src/MxGateway.Server/Grpc/GalaxyRepositoryGrpcService.cs:19-25, src/MxGateway.Server/Galaxy/IGalaxyRepository.cs |
| Server-026 | Low | Resolved | Error handling & resilience | src/MxGateway.Server/Configuration/GatewayOptionsValidator.cs:17-32, src/MxGateway.Server/Configuration/AlarmsOptions.cs |
| Server-027 | Low | Resolved | Design-document adherence | docs/Authorization.md:120-141,176-181 |
| Server-028 | Low | Resolved | Testing coverage | src/MxGateway.Tests/Security/Authorization/GatewayGrpcScopeResolverTests.cs:13-20, src/MxGateway.Tests/Gateway/Sessions/GatewaySessionTests.cs |
| Server-029 | Low | Resolved | Documentation & comments | src/MxGateway.Server/Grpc/MxAccessGatewayService.cs:52-58 |
| Server-034 | Low | Resolved | Error handling & resilience | src/MxGateway.Server/Galaxy/GalaxyHierarchySnapshotStore.cs:87-115 (TryLoadAsync) |
| Server-035 | Low | Resolved | Performance & resource management | src/MxGateway.Server/Galaxy/GalaxyHierarchyCache.cs:176 (call site), :327-352 (PersistSnapshotAsync) |
| Server-036 | Low | Resolved | Error handling & resilience | src/MxGateway.Server/Galaxy/GalaxyHierarchyCache.cs:345-348 (PersistSnapshotAsync catch) |
| Server-037 | Low | Resolved | Testing coverage | src/MxGateway.Tests/Galaxy/GalaxyHierarchySnapshotStoreTests.cs, src/MxGateway.Tests/Galaxy/GalaxyHierarchyCacheTests.cs |
| Tests-007 | Low | Resolved | Code organization & conventions | src/MxGateway.Tests/Gateway/Grpc/MxAccessGatewayServiceTests.cs:682, src/MxGateway.Tests/Gateway/Grpc/GalaxyRepositoryGrpcServiceTests.cs:324, src/MxGateway.Tests/Gateway/GatewayEndToEndFakeWorkerSmokeTests.cs:460, src/MxGateway.Tests/Security/Authorization/GatewayGrpcAuthorizationInterceptorTests.cs:233 |
| Tests-008 | Low | Resolved | mxaccessgw conventions | src/MxGateway.Tests/Gateway/Sessions/WorkerAlarmRpcDispatcherTests.cs:1-9, src/MxGateway.Tests/Gateway/Sessions/NotWiredAlarmRpcDispatcherTests.cs:1-3, src/MxGateway.Tests/Gateway/Sessions/SessionManagerAlarmAutoSubscribeTests.cs:1 |
| Tests-009 | Low | Resolved | Documentation & comments | src/MxGateway.Tests/Gateway/Sessions/SessionManagerTests.cs:36-37,99,365 |
| Tests-010 | Low | Resolved | Security | src/MxGateway.Tests/Gateway/Dashboard/DashboardAuthorizationHandlerTests.cs:26-36 |
| Tests-011 | Low | Resolved | Correctness & logic bugs | src/MxGateway.Tests/Gateway/GatewayEndToEndFakeWorkerSmokeTests.cs:233-301 |
| Tests-012 | Low | Resolved | Concurrency & thread safety | src/MxGateway.Tests/Gateway/Workers/Fakes/FakeWorkerHarness.cs:62, src/MxGateway.Tests/Gateway/Workers/WorkerClientTests.cs:472 |
| Tests-014 | Low | Resolved | Performance & resource management | src/MxGateway.Tests/Gateway/GatewayApplicationTests.cs:18,33,44,62,81,105, src/MxGateway.Tests/Gateway/Dashboard/DashboardCookieOptionsTests.cs:17 |
| Tests-015 | Low | Resolved | Correctness & logic bugs | src/MxGateway.Tests/Gateway/GatewayEndToEndFakeWorkerSmokeTests.cs:374-379,87 |
| Tests-017 | Low | Resolved | Concurrency & thread safety | src/MxGateway.Tests/Gateway/Workers/WorkerClientTests.cs:346-364 |
| Tests-018 | Low | Resolved | Code organization & conventions | src/MxGateway.Tests/Galaxy/GalaxyHierarchyCacheTests.cs:32, src/MxGateway.Tests/Gateway/Dashboard/DashboardSnapshotServiceTests.cs:45,51,57,105,134,163,167,202-209,284,317,523, src/MxGateway.Tests/Gateway/Sessions/SessionManagerTests.cs:40 |
| Tests-019 | Low | Resolved | Documentation & comments | docs/GatewayTesting.md, code-reviews/Tests/findings.md (Tests-002 re-triage) |
| Tests-021 | Low | Resolved | Code organization & conventions | src/MxGateway.Tests/Galaxy/GalaxyHierarchyCacheTests.cs:159-171, src/MxGateway.Tests/Gateway/Workers/FakeWorkerHarnessTests.cs:226-236, src/MxGateway.Tests/Gateway/Workers/WorkerClientTests.cs:620-630, src/MxGateway.Tests/Gateway/Sessions/SessionManagerTests.cs:766-… |
| Tests-022 | Low | Resolved | Testing coverage | src/MxGateway.Tests/Gateway/Sessions/SessionManagerBulkTests.cs:52-61,90-99,126-135,163-172,202-211,238-247,282-294,339-360,413-434,484-506,553-567,663-688 |
| Tests-023 | Low | Resolved | Correctness & logic bugs | src/MxGateway.Tests/Gateway/Sessions/SessionWorkerClientFactoryFakeWorkerTests.cs:334-374 |
| Tests-024 | Low | Resolved | Testing coverage | src/MxGateway.Server/Grpc/MxAccessGatewayService.cs:713-730,784-801,859-876, src/MxGateway.Tests/Gateway/Grpc/MxAccessGatewayServiceConstraintTests.cs |
| Worker-009 | Low | Resolved | Performance & resource management | src/MxGateway.Worker/Ipc/WorkerFrameReader.cs:31,49, src/MxGateway.Worker/Ipc/WorkerFrameWriter.cs:57-58 |
| Worker-010 | Low | Resolved | Correctness & logic bugs | src/MxGateway.Worker/Conversion/VariantConverter.cs:204-226 |
| Worker-011 | Low | Resolved | Correctness & logic bugs | src/MxGateway.Worker/Ipc/WorkerPipeClient.cs:169-171 |
| Worker-012 | Low | Resolved | Documentation & comments | src/MxGateway.Worker/MxAccess/MxAccessAlarmEventSink.cs:44-55, src/MxGateway.Worker/MxAccess/WnWrapAlarmConsumer.cs:38-43, src/MxGateway.Worker/MxAccess/MxAccessEventMapper.cs:106-112 |
| Worker-013 | Low | Resolved | Testing coverage | src/MxGateway.Worker/Sta/StaMessagePump.cs |
| Worker-014 | Low | Resolved | Code organization & conventions | src/MxGateway.Worker/MxAccess/AlarmCommandHandler.cs:33, :202 |
| Worker-015 | Low | Resolved | Correctness & logic bugs | src/MxGateway.Worker/MxAccess/MxAccessEventQueue.cs:115-145 |
| Worker-018 | Low | Resolved | Error handling & resilience | src/MxGateway.Worker/MxAccess/WnWrapAlarmConsumer.cs:160-161 |
| Worker-019 | Low | Resolved | Code organization & conventions | src/MxGateway.Worker/MxAccess/WnWrapAlarmConsumer.cs:59, :188 |
| Worker-020 | Low | Resolved | Correctness & logic bugs | src/MxGateway.Worker/Ipc/WorkerPipeSession.cs:405, :423 |
| Worker-021 | Low | Resolved | Correctness & logic bugs | src/MxGateway.Worker/Ipc/WorkerPipeSession.cs:111-118, :790-805, :136-139 |
| Worker-022 | Low | Resolved | Code organization & conventions | src/MxGateway.Worker/MxAccess/MxAlarmSnapshot.cs:12, :26, :49 |
| Worker-024 | Low | Resolved | Concurrency & thread safety | src/MxGateway.Worker/MxAccess/AlarmCommandHandler.cs:63-187, src/MxGateway.Worker/MxAccess/MxAccessStaSession.cs:191-323 |
| Worker-025 | Low | Resolved | Correctness & logic bugs | src/MxGateway.Worker/Ipc/WorkerPipeSession.cs:111-117 |
| Worker.Tests-008 | Low | Resolved | Documentation & comments | src/MxGateway.Worker.Tests/Conversion/VariantConverterTests.cs:175-182 |
| Worker.Tests-009 | Low | Resolved | Code organization & conventions | src/MxGateway.Worker.Tests/MxAccess/AlarmCommandHandlerTests.cs, AlarmDispatcherTests.cs, AlarmCommandExecutorTests.cs, AlarmRecordTransitionMapperTests.cs, WnWrapAlarmConsumerXmlTests.cs |
| Worker.Tests-010 | Low | Resolved | Correctness & logic bugs | src/MxGateway.Worker.Tests/MxAccess/MxAccessStaSessionTests.cs:230-258 |
| Worker.Tests-011 | Low | Resolved | Documentation & comments | src/MxGateway.Worker.Tests/Sta/StaCommandDispatcherTests.cs:92-112 |
| Worker.Tests-012 | Low | Resolved | Testing coverage | src/MxGateway.Worker.Tests/Ipc/WorkerFrameProtocolTests.cs |
| Worker.Tests-013 | Low | Resolved | Concurrency & thread safety | src/MxGateway.Worker.Tests/Ipc/WorkerPipeSessionTests.cs:539-546 |
| Worker.Tests-014 | Low | Resolved | Code organization & conventions | src/MxGateway.Worker.Tests/Ipc/WorkerPipeClientTests.cs:194, WorkerPipeSessionTests.cs:622, Sta/StaCommandDispatcherTests.cs:348, MxAccess/MxAccessStaSessionTests.cs:334, MxAccess/MxAccessCommandExecutorTests.cs:1124 |
| Worker.Tests-015 | Low | Resolved | Testing coverage | src/MxGateway.Worker.Tests/MxAccess/MxAccessEventQueueTests.cs |
| Worker.Tests-019 | Low | Resolved | mxaccessgw conventions | src/MxGateway.Worker.Tests/AlarmsLiveSmokeTests.cs:45, src/MxGateway.Worker.Tests/AlarmClientWmProbeTests.cs:143, src/MxGateway.Worker.Tests/WnWrapConsumerProbeTests.cs:55 |
| Worker.Tests-020 | Low | Resolved | Concurrency & thread safety | src/MxGateway.Worker.Tests/MxAccess/MxAccessValueCacheTests.cs:88-108 |
| Worker.Tests-021 | Low | Resolved | Error handling & resilience | src/MxGateway.Worker.Tests/Ipc/WorkerFrameProtocolTests.cs |
| Worker.Tests-022 | Low | Resolved | Testing coverage | src/MxGateway.Worker.Tests/MxAccess/WnWrapAlarmConsumerXmlTests.cs |
| Worker.Tests-023 | Low | Resolved | Documentation & comments | src/MxGateway.Worker.Tests/AlarmClientWmProbeTests.cs (779 lines), src/MxGateway.Worker.Tests/WnWrapConsumerProbeTests.cs (287 lines), src/MxGateway.Worker.Tests/AlarmsLiveSmokeTests.cs (270 lines) |
| Worker.Tests-024 | Low | Resolved | Correctness & logic bugs | src/MxGateway.Worker.Tests/MxAccess/AlarmCommandHandlerTests.cs:42-54 |
| Worker.Tests-025 | Low | Resolved | mxaccessgw conventions | src/MxGateway.Worker.Tests/TestSupport/LiveMxAccessFactAttribute.cs:23, src/MxGateway.IntegrationTests/IntegrationTestEnvironment.cs:5, src/MxGateway.IntegrationTests/LiveMxAccessFactAttribute.cs:9-12 |
| Worker.Tests-026 | Low | Resolved | Code organization & conventions | src/MxGateway.Worker/MxAccess/MxAccessSession.cs:74-88 |
| Worker.Tests-027 | Low | Resolved | Concurrency & thread safety | src/MxGateway.Worker.Tests/TestSupport/FakeRuntimeSession.cs:174, 179-187 |
| Worker.Tests-028 | Low | Resolved | Design-document adherence | docs/GatewayTesting.md, src/MxGateway.Worker.Tests/Probes/ |
| Worker.Tests-029 | Low | Resolved | Code organization & conventions | src/MxGateway.Worker.Tests/Probes/AlarmsLiveSmokeTests.cs:9, src/MxGateway.Worker.Tests/Probes/AlarmClientWmProbeTests.cs:14, src/MxGateway.Worker.Tests/Probes/WnWrapConsumerProbeTests.cs:10 |
| Worker.Tests-030 | Low | Resolved | Documentation & comments | src/MxGateway.Worker.Tests/Ipc/WorkerPipeSessionTests.cs:862-890 |