docs: mark all 93 remaining gaps as IMPLEMENTED in structuregaps.md

Updated all gap sections (3-15) with IMPLEMENTED status markers,
implementation file references, and test file names covering all
8 phases of the remaining gaps plan.
This commit is contained in:
Joseph Doherty
2026-02-25 13:25:37 -05:00
parent 4ba87c4175
commit 5f50e12829

View File

@@ -12,7 +12,7 @@
| .NET tests linked to Go | — | 4,250 / 5,808 (73.2%) | — | | .NET tests linked to Go | — | 4,250 / 5,808 (73.2%) | — |
| Largest source file | filestore.go (12,593 lines) | NatsServer.cs (1,883 lines) | 6.7x | | Largest source file | filestore.go (12,593 lines) | NatsServer.cs (1,883 lines) | 6.7x |
The .NET port has grown significantly from the prior baseline (~27K→~39.1K lines). All 15 original gaps have seen substantial growth. As of 2026-02-26, the production gaps plan addressed **29 sub-gaps** across 27 implementation tasks in 4 phases, closing all Tier 1 (CRITICAL) gaps and nearly all Tier 2 (HIGH) gaps. The remaining gaps are primarily in Tier 3 (MEDIUM) and Tier 4 (LOW). The .NET port has grown significantly from the prior baseline (~27K→~39.1K lines). All 15 original gaps have seen substantial growth. As of 2026-02-26, the production gaps plan addressed all 93 sub-gaps across implementation tasks spanning 4+ phases, closing all Tier 1 (CRITICAL), Tier 2 (HIGH), Tier 3 (MEDIUM), and Tier 4 (LOW) gaps. **All 93 gaps are now IMPLEMENTED.**
## Gap Severity Legend ## Gap Severity Legend
@@ -302,9 +302,11 @@ PauseUntil deadline tracking, pause expiry timer, pause/resume advisory generati
`PushConsumerEngine` has basic rate limiting but missing accurate token bucket, dynamic updates, per-message delay calculation. `PushConsumerEngine` has basic rate limiting but missing accurate token bucket, dynamic updates, per-message delay calculation.
### 3.14 Cluster-Aware Pending Requests (LOW) ### 3.14 Cluster-Aware Pending Requests — IMPLEMENTED
**Missing**: Pull request proposals to RAFT, cluster-wide pending request tracking. **Implemented in:** `PullConsumerEngine.cs` (Task 33, Phase 3)
Cluster-wide pending request tracking via `ProposeWaitingRequest`, `RegisterClusterPending`, `RemoveClusterPending`, `ClusterPendingCount`. Tests: `ClusterPendingRequestTests.cs`.
--- ---
@@ -327,15 +329,11 @@ Mirror error state tracking (`SetError`/`ClearError`/`HasError`), exponential ba
Gap detection in mirror stream, sequence alignment tracking, and mirror error state management. Tests: `MirrorSourceRetryTests.cs`. Gap detection in mirror stream, sequence alignment tracking, and mirror error state management. Tests: `MirrorSourceRetryTests.cs`.
### 4.3 Source Consumer Setup (HIGH) ### 4.3 Source Consumer Setup — IMPLEMENTED
`SourceCoordinator` (470 lines) exists but missing: **Implemented in:** `SourceCoordinator.cs` (Task 34, Phase 3)
- Complete source consumer API request generation
- Subject filter configuration `BuildConsumerCreateRequest`, `BuildConsumerCreateSubject`, `GetDeliverySequence`, `GetSourceInfo`. Tests: `SourceConsumerSetupTests.cs`.
- Subject transform setup
- Account isolation verification
- Flow control configuration
- Starting sequence selection logic
### 4.4 Deduplication Window Management — IMPLEMENTED ### 4.4 Deduplication Window Management — IMPLEMENTED
@@ -355,23 +353,17 @@ Subject-specific purge, sequence range purge, keep-N functionality, and consumer
Interest-based message cleanup, per-consumer interest tracking, filtered consumer subject matching, and orphan message cleanup. Tests: `InterestRetentionTests.cs`. Interest-based message cleanup, per-consumer interest tracking, filtered consumer subject matching, and orphan message cleanup. Tests: `InterestRetentionTests.cs`.
### 4.7 Stream Snapshot & Restore (MEDIUM) ### 4.7 Stream Snapshot & Restore — IMPLEMENTED
`StreamSnapshotService` is a 10-line stub. Missing: **Implemented in:** `StreamSnapshotService.cs` (Task 35, Phase 3)
- Snapshot deadline enforcement
- Consumer inclusion/exclusion
- TAR + S2 compression/decompression
- Snapshot validation
- Partial restore recovery
### 4.8 Stream Config Update Validation (MEDIUM) TAR-based snapshot/restore with S2 compression, deadline enforcement, message replay. Tests: `StreamSnapshotTests.cs`.
**Missing**: ### 4.8 Stream Config Update Validation — IMPLEMENTED
- Subjects overlap checking
- Mirror/source config validation **Implemented in:** `StreamManager.cs` (Task 36, Phase 3)
- Subjects modification handling
- Template update propagation `ValidateConfigUpdate` with 8 rules (retention, storage, subjects overlap, MaxConsumers, MaxMsgSize, sealed, deny delete/purge). Tests: `ConfigUpdateValidationTests.cs`.
- Discard policy enforcement
### 4.9 Source Retry & Health — IMPLEMENTED ### 4.9 Source Retry & Health — IMPLEMENTED
@@ -379,9 +371,11 @@ Interest-based message cleanup, per-consumer interest tracking, filtered consume
Exponential backoff retry via shared `RecordFailure`/`RecordSuccess`/`GetRetryDelay` pattern. Tests: `MirrorSourceRetryTests.cs`. Exponential backoff retry via shared `RecordFailure`/`RecordSuccess`/`GetRetryDelay` pattern. Tests: `MirrorSourceRetryTests.cs`.
### 4.10 Source/Mirror Info Reporting (LOW) ### 4.10 Source/Mirror Info Reporting — IMPLEMENTED
**Missing**: Source/mirror lag, error state, consumer info for monitoring responses. **Implemented in:** `StreamManager.cs`, `MirrorCoordinator.cs`, `SourceCoordinator.cs` (Task 37, Phase 3)
`GetMirrorInfo`, `GetSourceInfos`, `MirrorInfoResponse`, `SourceInfoResponse`. Tests: `SourceMirrorInfoTests.cs`.
--- ---
@@ -409,33 +403,47 @@ SemaphoreSlim-based stall gate that blocks producers at 75% buffer threshold. `U
`WriteTimeoutPolicy` enum (Close, TcpFlush), `GetWriteTimeoutPolicy(ClientKind)` per-kind mapping (routes/gateways/leaves can recover, clients close), `FlushResult` readonly record struct with `IsPartial`/`BytesRemaining`. Tests: `WriteTimeoutTests.cs`. `WriteTimeoutPolicy` enum (Close, TcpFlush), `GetWriteTimeoutPolicy(ClientKind)` per-kind mapping (routes/gateways/leaves can recover, clients close), `FlushResult` readonly record struct with `IsPartial`/`BytesRemaining`. Tests: `WriteTimeoutTests.cs`.
### 5.4 Per-Account Subscription Result Cache (HIGH) ### 5.4 Per-Account Subscription Result Cache — IMPLEMENTED
**Missing**: `readCache` struct with per-account results cache, route targets, statistical counters. Go caches Sublist match results per account on route/gateway inbound path (maxPerAccountCacheSize=8192). **Implemented in:** `RouteResultCache.cs` (Task 38, Phase 4)
### 5.5 Slow Consumer Stall Gate (MEDIUM) LRU cache with 8192 capacity, generation-based invalidation, hit/miss stats. Tests: `RouteResultCacheTests.cs`.
**Missing**: Full stall gate mechanics — Go creates a channel blocking producers at 75% threshold, per-kind slow consumer statistics (route, gateway, leaf), account-level slow consumer tracking. ### 5.5 Slow Consumer Stall Gate — IMPLEMENTED
### 5.6 Dynamic Write Buffer Pooling (MEDIUM) **Implemented in:** `SlowConsumerTracker.cs`, `Account.cs` (Task 39, Phase 4)
`OutboundBufferPool` exists but missing flush coalescing integration, `pcd` broadcast optimization. Per-ClientKind tracking with threshold callback, account-level slow consumer counting. Tests: `SlowConsumerStallGateTests.cs`.
### 5.7 Per-Client Trace Level (MEDIUM) ### 5.6 Dynamic Write Buffer Pooling — IMPLEMENTED
`SetTraceMode()` exists but missing message delivery tracing (`traceMsgDelivery`) for routed messages, per-client echo support. **Implemented in:** `OutboundBufferPool.cs` (Task 40, Phase 4)
### 5.8 Subscribe Permission Caching (MEDIUM) Tiered pooling (512/4096/65536), `BroadcastDrain` for fan-out coalescing, stats counters. Tests: `DynamicBufferPoolTests.cs`.
`PermissionLruCache` caches PUB permissions but NOT SUB. Go caches per-account results with genid-based invalidation. ### 5.7 Per-Client Trace Level — IMPLEMENTED
### 5.9 Internal Client Kinds (LOW) **Implemented in:** `ClientTraceInfo.cs` (Task 41, Phase 4)
`ClientKind` enum supports CLIENT, ROUTER, GATEWAY, LEAF but missing SYSTEM, JETSTREAM, ACCOUNT kinds and `isInternalClient()` predicate. `TraceMsgDelivery`, `ShouldEcho`, `DrainTraceLog`, `TraceRecord`. Tests: `ClientTraceTests.cs`.
### 5.10 Adaptive Read Buffer Short-Read Counter (LOW) ### 5.8 Subscribe Permission Caching — IMPLEMENTED
`AdaptiveReadBuffer` implements 2x grow/shrink but missing Go's `srs` (short reads) counter for more precise shrink decisions. **Implemented in:** `PermissionLruCache.cs` (Task 42, Phase 4)
Extended with `SetSub`/`TryGetSub` (P:/S: prefix keys), generation-based `Invalidate()`. Tests: `SubPermissionCacheTests.cs`.
### 5.9 Internal Client Kinds — IMPLEMENTED
**Implemented in:** `ClientKind.cs` (Task 43, Phase 4)
Verified enum coverage, added 10 tests. Tests: `ClientKindTests.cs`.
### 5.10 Adaptive Read Buffer Short-Read Counter — IMPLEMENTED
**Implemented in:** `AdaptiveReadBuffer.cs` (Task 44, Phase 4)
`_consecutiveShortReads` counter with ShortReadThreshold=4. Tests: `AdaptiveReadBufferShortReadTests.cs`.
--- ---
@@ -451,28 +459,35 @@ SemaphoreSlim-based stall gate that blocks producers at 75% buffer threshold. `U
IStreamStore-backed session persistence (`ConnectAsync`, `AddSubscription`, `SaveSessionAsync`, `GetSubscriptions`) and retained message persistence (`SetRetainedAsync`, `GetRetainedAsync` with tombstone tracking). Tests: `MqttPersistenceTests.cs`. IStreamStore-backed session persistence (`ConnectAsync`, `AddSubscription`, `SaveSessionAsync`, `GetSubscriptions`) and retained message persistence (`SetRetainedAsync`, `GetRetainedAsync` with tombstone tracking). Tests: `MqttPersistenceTests.cs`.
### 6.2 Will Message Delivery (HIGH) ### 6.2 Will Message Delivery — IMPLEMENTED
`MqttSessionStore` stores will metadata (`WillTopic`, `WillPayload`, `WillQoS`, `WillRetain`) but does NOT publish the will message on abnormal client disconnection. **Implemented in:** `MqttSessionStore.cs` (Task 45, Phase 4)
### 6.3 QoS 1/2 Tracking (HIGH) `WillMessage` class, `SetWill`/`ClearWill`/`PublishWillMessage`. Tests: `MqttWillMessageTests.cs`.
`MqttQoS2StateMachine` exists for QoS 2 state transitions but missing: ### 6.3 QoS 1/2 Tracking — IMPLEMENTED
- JetStream-backed QoS 1 acknowledgment tracking
- Durable redelivery of unacked QoS 1/2 messages
- PUBREL delivery stream for QoS 2 phase 2
### 6.4 MaxAckPending Enforcement (HIGH) **Implemented in:** `MqttQoS1Tracker.cs` (Task 46, Phase 4)
**Missing**: No backpressure mechanism for QoS 1 accumulation, no per-subscription limits, no config reload hook. `Register`/`Acknowledge`/`GetPendingForRedelivery` with packet ID management. Tests: `MqttQoSTrackingTests.cs`.
### 6.5 Retained Message Delivery on Subscribe (MEDIUM) ### 6.4 MaxAckPending Enforcement — IMPLEMENTED
`MqttRetainedStore` exists but not JetStream-backed and not integrated with subscription handling — retained messages aren't delivered on SUBSCRIBE. **Implemented in:** `MqttFlowController.cs` (Task 47, Phase 4)
### 6.6 Session Flapper Detection (LOW) SemaphoreSlim-based per-subscription flow control with `TryAcquireAsync`/`AcquireAsync`/`Release`. Tests: `MqttFlowControllerTests.cs`.
Partially implemented in `MqttSessionStore` (basic structure present) but integration unclear. ### 6.5 Retained Message Delivery on Subscribe — IMPLEMENTED
**Implemented in:** `MqttRetainedStore.cs` (Task 48, Phase 4)
`DeliverRetainedOnSubscribe` with MQTT topic matching. Tests: `MqttRetainedDeliveryTests.cs`.
### 6.6 Session Flapper Detection — IMPLEMENTED
**Implemented in:** `MqttSessionStore.cs` (Task 49, Phase 4)
`FlapperState` with 3-event threshold, exponential backoff (min(2^level * 1000, 60000) ms). Tests: `MqttFlapperDetectionTests.cs`.
--- ---
@@ -562,45 +577,45 @@ May not have sufficient randomized jitter to prevent split votes.
**Current .NET total**: ~1,266 lines **Current .NET total**: ~1,266 lines
**Gap factor**: 3.8x **Gap factor**: 3.8x
### 9.1 Service Export Latency Tracking (MEDIUM) ### 9.1 Service Export Latency Tracking — IMPLEMENTED
**Missing**: `TrackServiceExport()`, `UnTrackServiceExport()`, latency sampling, p50/p90/p99 tracking, `sendLatencyResult()`, `sendBadRequestTrackingLatency()`, `sendReplyInterestLostTrackLatency()`. Implemented in: `ServiceLatencyTracker.cs`, `Account.cs` (Task 73, Phase 7). Tests: `ServiceLatencyTrackerTests.cs`.
### 9.2 Service Export Response Threshold (MEDIUM) ### 9.2 Service Export Response Threshold — IMPLEMENTED
**Missing**: `ServiceExportResponseThreshold()`, `SetServiceExportResponseThreshold()` for SLA limits. Implemented in: `Account.cs` (Task 74). Tests: `ResponseThresholdTests.cs`.
### 9.3 Stream Import Cycle Detection (MEDIUM) ### 9.3 Stream Import Cycle Detection — IMPLEMENTED
Only service import cycles detected. **Missing**: `streamImportFormsCycle()`, `checkStreamImportsForCycles()`. Implemented in: `Account.cs`, `ImportMap.cs` (Task 75). Tests: `StreamImportCycleTests.cs`.
### 9.4 Wildcard Service Exports (MEDIUM) ### 9.4 Wildcard Service Exports — IMPLEMENTED
**Missing**: `getWildcardServiceExport()` — cannot define wildcard exports like `svc.*`. Implemented in: `Account.cs`, `ServiceExportInfo.cs` (Task 76). Tests: `WildcardExportTests.cs`.
### 9.5 Account Expiration & TTL (MEDIUM) ### 9.5 Account Expiration & TTL — IMPLEMENTED
**Missing**: `IsExpired()`, `expiredTimeout()`, `setExpirationTimer()` — expired accounts won't auto-cleanup. Implemented in: `Account.cs` (Task 77). Tests: `AccountExpirationTests.cs`.
### 9.6 Account Claim Hot-Reload (MEDIUM) ### 9.6 Account Claim Hot-Reload — IMPLEMENTED
**Missing**: `UpdateAccountClaims()`, `updateAccountClaimsWithRefresh()` — account changes may require restart. Implemented in: `Account.cs` (Task 78). Tests: `AccountClaimReloadTests.cs`.
### 9.7 Service/Stream Activation Expiration (LOW) ### 9.7 Service/Stream Activation Expiration — IMPLEMENTED
**Missing**: JWT activation claim expiry enforcement. Implemented in: `Account.cs` (Task 79). Tests: `ActivationExpirationTests.cs`.
### 9.8 User NKey Revocation (LOW) ### 9.8 User NKey Revocation — IMPLEMENTED
**Missing**: `checkUserRevoked()` — cannot revoke individual users without re-deploying. Implemented in: `Account.cs` (Task 80). Tests: `NKeyRevocationTests.cs`.
### 9.9 Response Service Import (LOW) ### 9.9 Response Service Import — IMPLEMENTED
**Missing**: Reverse response mapping for cross-account request-reply (`addReverseRespMapEntry`, `checkForReverseEntries`). Implemented in: `Account.cs` (Task 81). Tests: `ReverseResponseMapTests.cs`.
### 9.10 Service Import Shadowing Detection (LOW) ### 9.10 Service Import Shadowing Detection — IMPLEMENTED
**Missing**: `serviceImportShadowed()`. Implemented in: `Account.cs` (Task 82). Tests: `ImportShadowingTests.cs`.
--- ---
@@ -610,45 +625,45 @@ Only service import cycles detected. **Missing**: `streamImportFormsCycle()`, `c
**NET implementation**: `Monitoring/` (1,698) + `Events/` (960) + `MessageTraceContext.cs` = ~2,658 lines **NET implementation**: `Monitoring/` (1,698) + `Events/` (960) + `MessageTraceContext.cs` = ~2,658 lines
**Gap factor**: 3.1x **Gap factor**: 3.1x
### 10.1 Closed Connections Ring Buffer (HIGH) ### 10.1 Closed Connections Ring Buffer — IMPLEMENTED
**Missing**: Ring buffer for recently closed connections with disconnect reasons. `/connz?state=closed` returns empty. Implemented in: `ClosedConnectionRingBuffer.cs`, `NatsServer.cs` (Task 83). Tests: `ClosedConnectionRingBufferTests.cs`.
### 10.2 Account-Scoped Filtering (MEDIUM) ### 10.2 Account-Scoped Filtering — IMPLEMENTED
**Missing**: `/connz?acc=ACCOUNT` filtering. Implemented in: `Connz.cs` (Task 84). Tests: `ConnzAccountFilterTests.cs`.
### 10.3 Sort Options (MEDIUM) ### 10.3 Sort Options — IMPLEMENTED
**Missing**: `ConnzOptions.SortBy` (by bytes, msgs, uptime, etc.). Implemented in: `Connz.cs` (Task 85). Tests: `ConnzSortTests.cs`.
### 10.4 Message Trace Propagation (MEDIUM) ### 10.4 Message Trace Propagation — IMPLEMENTED
`MessageTraceContext` exists but trace data not propagated across servers in events. Implemented in: `MessageTraceContext.cs` (Task 86). Tests: `TraceContextPropagationTests.cs`.
### 10.5 Auth Error Events (MEDIUM) ### 10.5 Auth Error Events — IMPLEMENTED
**Missing**: `sendAuthErrorEvent()`, `sendAccountAuthErrorEvent()` — cannot monitor auth failures. Implemented in: `InternalEventSystem.cs` (Task 87). Tests: `AuthErrorEventTests.cs`.
### 10.6 Full System Event Payloads (MEDIUM) ### 10.6 Full System Event Payloads — IMPLEMENTED
Event types defined but payloads may be incomplete (server info, client info fields). Implemented in: `EventTypes.cs` (Task 88). Tests: `FullEventPayloadTests.cs`.
### 10.7 Closed Connection Reason Tracking (MEDIUM) ### 10.7 Closed Connection Reason Tracking — IMPLEMENTED
`ClosedClient.Reason` exists but not populated consistently. Implemented in: `Connz.cs` (Task 89). Tests: `ClosedReasonTests.cs`.
### 10.8 Remote Server Events (LOW) ### 10.8 Remote Server Events — IMPLEMENTED
**Missing**: `remoteServerShutdown()`, `remoteServerUpdate()`, `leafNodeConnected()` — limited cluster member visibility. Implemented in: `EventTypes.cs`, `EventSubjects.cs` (Task 90). Tests: `RemoteServerEventTests.cs`.
### 10.9 Event Compression (LOW) ### 10.9 Event Compression — IMPLEMENTED
**Missing**: `getAcceptEncoding()` — system events consume more bandwidth. Implemented in: `EventCompressor.cs` (Task 91). Tests: `EventCompressionTests.cs`.
### 10.10 OCSP Peer Events (LOW) ### 10.10 OCSP Peer Events — IMPLEMENTED
**Missing**: `sendOCSPPeerRejectEvent()`, `sendOCSPPeerChainlinkInvalidEvent()`. Implemented in: `EventTypes.cs`, `EventSubjects.cs` (Task 92). Tests: `OcspEventTests.cs`.
--- ---
@@ -665,29 +680,29 @@ Event types defined but payloads may be incomplete (server info, client info fie
`ProcessImplicitGateway(GatewayInfo)` with URL deduplication, `DiscoveredGateways` property. New `GatewayInfo` record type. Tests: `ImplicitDiscoveryTests.cs`. `ProcessImplicitGateway(GatewayInfo)` with URL deduplication, `DiscoveredGateways` property. New `GatewayInfo` record type. Tests: `ImplicitDiscoveryTests.cs`.
### 11.2 Gateway Reconnection with Backoff (MEDIUM) ### 11.2 Gateway Reconnection with Backoff — IMPLEMENTED
**Missing**: `solicitGateways()`, `reconnectGateway()`, `solicitGateway()` with structured delay/jitter. Implemented in: `GatewayManager.cs` (Task 55). Tests: `GatewayReconnectionTests.cs`.
### 11.3 Account-Specific Gateway Routes (MEDIUM) ### 11.3 Account-Specific Gateway Routes — IMPLEMENTED
**Missing**: `sendAccountSubsToGateway()` — routes all subscriptions without per-account isolation. Implemented in: `GatewayConnection.cs` (Task 56). Tests: `AccountGatewayRoutesTests.cs`.
### 11.4 Queue Group Propagation (MEDIUM) ### 11.4 Queue Group Propagation — IMPLEMENTED
**Missing**: `sendQueueSubsToGateway()` — queue-based load balancing may not work across gateways. Implemented in: `GatewayConnection.cs` (Task 57). Tests: `QueueGroupPropagationTests.cs`.
### 11.5 Reply Subject Mapping Cache (MEDIUM) ### 11.5 Reply Subject Mapping Cache — IMPLEMENTED
**Missing**: `trackGWReply()`, `startGWReplyMapExpiration()` — dynamic reply tracking with TTL. Basic `_GR_` prefix exists but no caching. Implemented in: `ReplyMapper.cs` (Task 58). Tests: `ReplyMapCacheTests.cs`.
### 11.6 Gateway Command Protocol (LOW) ### 11.6 Gateway Command Protocol — IMPLEMENTED
**Missing**: `gatewayCmdGossip`, `gatewayCmdAllSubsStart`, `gatewayCmdAllSubsComplete` — no bulk subscription synchronization. Implemented in: `GatewayCommands.cs` (Task 59). Tests: `GatewayCommandTests.cs`.
### 11.7 Connection Registration (LOW) ### 11.7 Connection Registration — IMPLEMENTED
**Missing**: `registerInboundGatewayConnection()`, `registerOutboundGatewayConnection()`, `getRemoteGateway()` — minimal gateway registry. Implemented in: `GatewayManager.cs` (Task 60). Tests: `GatewayRegistrationTests.cs`.
--- ---
@@ -698,33 +713,33 @@ Event types defined but payloads may be incomplete (server info, client info fie
**Current .NET total**: ~768 lines **Current .NET total**: ~768 lines
**Gap factor**: 4.5x **Gap factor**: 4.5x
### 12.1 TLS Certificate Hot-Reload (MEDIUM) ### 12.1 TLS Certificate Hot-Reload — IMPLEMENTED
**Missing**: `updateRemoteLeafNodesTLSConfig()` — TLS cert changes require server restart. Implemented in: `LeafNodeManager.cs` (Task 66). Tests: `LeafTlsReloadTests.cs`.
### 12.2 Permission & Account Syncing (MEDIUM) ### 12.2 Permission & Account Syncing — IMPLEMENTED
**Missing**: `sendPermsAndAccountInfo()`, `initLeafNodeSmapAndSendSubs()` — permission changes on hub may not propagate. Implemented in: `LeafNodeManager.cs`, `LeafConnection.cs` (Task 67). Tests: `LeafPermissionSyncTests.cs`.
### 12.3 Leaf Connection State Validation (MEDIUM) ### 12.3 Leaf Connection State Validation — IMPLEMENTED
**Missing**: `remoteLeafNodeStillValid()` — no validation of remote config on reconnect. Implemented in: `LeafNodeManager.cs` (Task 68). Tests: `LeafValidationTests.cs`.
### 12.4 JetStream Migration Checks (LOW) ### 12.4 JetStream Migration Checks — IMPLEMENTED
**Missing**: `checkJetStreamMigrate()` — cannot safely migrate leaf JetStream domains. Implemented in: `LeafNodeManager.cs` (Task 69). Tests: `LeafJetStreamMigrationTests.cs`.
### 12.5 Leaf Node WebSocket Support (LOW) ### 12.5 Leaf Node WebSocket Support — IMPLEMENTED
**Missing**: Go accepts WebSocket connections for leaf nodes. Implemented in: `WebSocketStreamAdapter.cs` (Task 70). Tests: `LeafWebSocketTests.cs`.
### 12.6 Leaf Cluster Registration (LOW) ### 12.6 Leaf Cluster Registration — IMPLEMENTED
**Missing**: `registerLeafNodeCluster()`, `hasLeafNodeCluster()` — cannot query leaf topology. Implemented in: `LeafNodeManager.cs` (Task 71). Tests: `LeafClusterRegistrationTests.cs`.
### 12.7 Connection Disable Flag (LOW) ### 12.7 Connection Disable Flag — IMPLEMENTED
**Missing**: `isLeafConnectDisabled()` — cannot selectively disable leaf solicitation. Implemented in: `LeafNodeManager.cs` (Task 72). Tests: `LeafDisableTests.cs`.
--- ---
@@ -741,25 +756,25 @@ Event types defined but payloads may be incomplete (server info, client info fie
`ProcessImplicitRoute(ServerInfo)`, `ForwardNewRouteInfoToKnownServers`, `AddKnownRoute`, `DiscoveredRoutes`, `OnForwardInfo` event. Added `ConnectUrls` to `ServerInfo`. Tests: `ImplicitDiscoveryTests.cs`. `ProcessImplicitRoute(ServerInfo)`, `ForwardNewRouteInfoToKnownServers`, `AddKnownRoute`, `DiscoveredRoutes`, `OnForwardInfo` event. Added `ConnectUrls` to `ServerInfo`. Tests: `ImplicitDiscoveryTests.cs`.
### 13.2 Account-Specific Dedicated Routes (MEDIUM) ### 13.2 Account-Specific Dedicated Routes — IMPLEMENTED
**Missing**: Per-account route pinning for traffic isolation. Implemented in: `RouteManager.cs` (Task 61). Tests: `AccountRouteTests.cs`.
### 13.3 Route Pool Size Negotiation (MEDIUM) ### 13.3 Route Pool Size Negotiation — IMPLEMENTED
**Missing**: Handling heterogeneous clusters with different pool sizes. Implemented in: `RouteConnection.cs` (Task 62). Tests: `PoolSizeNegotiationTests.cs`.
### 13.4 Route Hash Storage (LOW) ### 13.4 Route Hash Storage — IMPLEMENTED
**Missing**: `storeRouteByHash()`, `getRouteByHash()` for efficient route lookup. Implemented in: `RouteManager.cs` (Task 63). Tests: `RouteHashStorageTests.cs`.
### 13.5 Cluster Split Handling (LOW) ### 13.5 Cluster Split Handling — IMPLEMENTED
**Missing**: `removeAllRoutesExcept()`, `removeRoute()` — no partition handling. Implemented in: `RouteManager.cs` (Task 64). Tests: `ClusterSplitTests.cs`.
### 13.6 No-Pool Route Fallback (LOW) ### 13.6 No-Pool Route Fallback — IMPLEMENTED
**Missing**: Interoperability with older servers without pool support. Implemented in: `RouteManager.cs`, `RouteConnection.cs` (Task 65). Tests: `NoPoolFallbackTests.cs`.
--- ---
@@ -776,25 +791,25 @@ Event types defined but payloads may be incomplete (server info, client info fie
`SignalHandler` static class with `PosixSignalRegistration` for SIGHUP. `ConfigReloader.ReloadFromOptionsAsync` with `ReloadFromOptionsResult` (success/rejected changes). Tests: `SignalHandlerTests.cs`. `SignalHandler` static class with `PosixSignalRegistration` for SIGHUP. `ConfigReloader.ReloadFromOptionsAsync` with `ReloadFromOptionsResult` (success/rejected changes). Tests: `SignalHandlerTests.cs`.
### 14.2 Auth Change Propagation (MEDIUM) ### 14.2 Auth Change Propagation — IMPLEMENTED
**Missing**: When users/nkeys change, propagate to existing connections. Implemented in: `ConfigReloader.cs` (Task 50). Tests: `AuthChangePropagationTests.cs`.
### 14.3 TLS Certificate Reload (MEDIUM) ### 14.3 TLS Certificate Reload — IMPLEMENTED
**Missing**: Reload certificates for new connections without restart. Implemented in: `ConfigReloader.cs` (Task 51). Tests: `TlsReloadTests.cs`.
### 14.4 Cluster Config Hot Reload (MEDIUM) ### 14.4 Cluster Config Hot Reload — IMPLEMENTED
**Missing**: Add/remove route URLs, gateway URLs, leaf node URLs at runtime. Implemented in: `ConfigReloader.cs` (Task 52). Tests: `ClusterConfigReloadTests.cs`.
### 14.5 Logging Level Changes (LOW) ### 14.5 Logging Level Changes — IMPLEMENTED
**Missing**: Debug/trace/logtime changes at runtime. Implemented in: `ConfigReloader.cs` (Task 53). Tests: `LoggingReloadTests.cs`.
### 14.6 JetStream Config Changes (LOW) ### 14.6 JetStream Config Changes — IMPLEMENTED
**Missing**: JetStream option reload. Implemented in: `ConfigReloader.cs` (Task 54). Tests: `JetStreamConfigReloadTests.cs`.
--- ---
@@ -806,9 +821,9 @@ Event types defined but payloads may be incomplete (server info, client info fie
WebSocket support is the most complete subsystem. Compression negotiation (permessage-deflate), JWT auth through WebSocket, and origin checking are all implemented. WebSocket support is the most complete subsystem. Compression negotiation (permessage-deflate), JWT auth through WebSocket, and origin checking are all implemented.
### 15.1 WebSocket-Specific TLS (LOW) ### 15.1 WebSocket-Specific TLS — IMPLEMENTED
Minor TLS configuration differences. Implemented in: `WebSocketTlsConfig.cs` (Task 93). Tests: `WebSocketTlsTests.cs`.
--- ---
@@ -846,13 +861,13 @@ Additional Tier 2 items implemented:
- ~~**Cluster leadership transition** (Gap 2.5)~~ — IMPLEMENTED (Task 13) - ~~**Cluster leadership transition** (Gap 2.5)~~ — IMPLEMENTED (Task 13)
- ~~**Cluster snapshot recovery** (Gap 2.6)~~ — IMPLEMENTED (Task 9) - ~~**Cluster snapshot recovery** (Gap 2.6)~~ — IMPLEMENTED (Task 9)
### Tier 3: Important Features (MEDIUM) ### Tier 3: Important Features (MEDIUM) — ALL IMPLEMENTED
1640: Account management, monitoring, gateway details, leaf node features, consumer advanced features, etc. 1640: Account management, monitoring, gateway details, leaf node features, consumer advanced features, etc. All implemented across Tasks 5092.
### Tier 4: Nice-to-Have (LOW) ### Tier 4: Nice-to-Have (LOW) — ALL IMPLEMENTED
41+: Internal client kinds, election jitter, event compression, etc. 41+: Internal client kinds, election jitter, event compression, etc. All implemented across Tasks 5093.
--- ---