Files
natsdotnet/docs/plans/2026-02-23-jetstream-remaining-parity-verification.md

11 KiB

JetStream Remaining Parity Verification (2026-02-23)

Targeted Gate

Command:

dotnet test tests/NATS.Server.Tests --filter "FullyQualifiedName~JetStream|FullyQualifiedName~Raft|FullyQualifiedName~Route|FullyQualifiedName~Gateway|FullyQualifiedName~Leaf" -v minimal

Result:

  • Passed: 69
  • Failed: 0
  • Skipped: 0
  • Duration: ~10s

Full Suite Gate

Command:

dotnet test -v minimal

Result:

  • Passed: 768
  • Failed: 0
  • Skipped: 0
  • Duration: ~1m 11s

Focused Scenario Evidence

  • JetStreamApiProtocolIntegrationTests.Js_api_request_over_pub_reply_returns_response_message
  • JetStreamStreamMessageApiTests.Stream_msg_get_delete_and_purge_change_state
  • JetStreamDirectGetApiTests.Direct_get_returns_message_without_stream_info_wrapper
  • JetStreamSnapshotRestoreApiTests.Snapshot_then_restore_reconstructs_messages
  • JetStreamConsumerNextApiTests.Consumer_msg_next_respects_batch_request
  • JetStreamPushConsumerContractTests.Ack_all_advances_floor_and_clears_pending_before_sequence
  • RaftSafetyContractTests.Follower_rejects_stale_term_vote_and_append
  • JetStreamClusterControlApiTests.Stream_leader_stepdown_and_meta_stepdown_endpoints_return_success_shape
  • JetStreamAccountControlApiTests.Account_and_server_control_subjects_are_routable
  • JetStreamClusterControlExtendedApiTests.Peer_remove_and_consumer_stepdown_subjects_return_success_shape
  • RouteWireSubscriptionProtocolTests.RSplus_RSminus_frames_propagate_remote_interest_over_socket
  • RouteRmsgForwardingTests.Publish_on_serverA_reaches_remote_subscriber_on_serverB_via_RMSG
  • RoutePoolTests.Route_manager_establishes_default_pool_of_three_links_per_peer
  • GatewayProtocolTests.Gateway_link_establishes_and_forwards_interested_message
  • LeafProtocolTests.Leaf_link_propagates_subscription_and_message_flow
  • JetStreamStreamPolicyRuntimeTests.Discard_new_rejects_publish_when_max_bytes_exceeded
  • JetStreamStorageSelectionTests.Stream_with_storage_file_uses_filestore_backend
  • JetStreamConsumerSemanticsTests.Consumer_with_filter_subjects_only_receives_matching_messages
  • JetStreamFlowReplayBackoffTests.Replay_original_respects_message_timestamps_with_backoff_redelivery
  • JetStreamMirrorSourceAdvancedTests.Stream_with_multiple_sources_aggregates_messages_in_order
  • RaftTransportPersistenceTests.Raft_node_recovers_log_and_term_after_restart
  • MonitorClusterEndpointTests.Routez_gatewayz_leafz_accountz_return_non_stub_runtime_data
  • JetStreamMonitoringParityTests.Jsz_and_varz_include_expanded_runtime_fields
  • JetStreamIntegrationMatrixTests.Integration_matrix_executes_real_server_scenarios

Post-Baseline Gate (2026-02-23)

Command:

dotnet test tests/NATS.Server.Tests --filter "FullyQualifiedName~JetStream|FullyQualifiedName~Raft|FullyQualifiedName~Route|FullyQualifiedName~Gateway|FullyQualifiedName~Leaf|FullyQualifiedName~Account" -v minimal

Result:

  • Passed: 130
  • Failed: 0
  • Skipped: 0
  • Duration: ~15s

Command:

dotnet test -v minimal

Result:

  • Passed: 786
  • Failed: 0
  • Skipped: 0
  • Duration: ~1m 36s

Focused post-baseline evidence:

  • InterServerAccountProtocolTests.Aplus_Aminus_frames_include_account_scope_and_do_not_leak_interest_across_accounts
  • GatewayAdvancedSemanticsTests.Gateway_forwarding_remaps_reply_subject_with_gr_prefix_and_restores_on_return
  • LeafAdvancedSemanticsTests.Leaf_loop_marker_blocks_reinjected_message_and_account_mapping_routes_to_expected_account
  • JetStreamInternalClientTests.JetStream_enabled_server_creates_internal_jetstream_client_and_keeps_it_account_scoped
  • JetStreamStreamPolicyParityTests.Stream_rejects_oversize_message_and_prunes_by_max_age_and_per_subject_limits
  • JetStreamStreamConfigBehaviorTests.Stream_honors_dedup_window_and_sealed_delete_purge_guards
  • JetStreamConsumerDeliverPolicyParityTests.Deliver_policy_start_sequence_and_start_time_and_last_per_subject_match_expected_start_positions
  • JetStreamConsumerBackoffParityTests.Redelivery_honors_backoff_schedule_and_stops_after_max_deliver
  • JetStreamConsumerFlowControlParityTests.Push_consumer_emits_flow_control_frames_when_enabled
  • JetStreamMirrorSourceParityTests.Source_subject_transform_and_cross_account_mapping_copy_expected_messages_only
  • JetStreamFileStoreBlockParityTests.File_store_rolls_blocks_and_recovers_index_without_full_file_rewrite
  • JetStreamStoreExpiryParityTests.File_store_prunes_expired_messages_using_max_age_policy
  • RaftConsensusAdvancedParityTests.Leader_heartbeats_keep_followers_current_and_next_index_backtracks_on_mismatch
  • RaftSnapshotTransferParityTests.Snapshot_transfer_installs_snapshot_when_follower_falls_behind
  • RaftMembershipParityTests.Membership_changes_update_node_membership_state
  • JetStreamClusterGovernanceParityTests.Cluster_governance_applies_planned_replica_placement
  • JetStreamCrossClusterGatewayParityTests.Cross_cluster_jetstream_messages_use_gateway_forwarding_path
  • DifferencesParityClosureTests.Differences_md_has_no_remaining_jetstream_baseline_or_n_rows

Full-Repo Remaining Parity Gate (2026-02-23)

Command:

dotnet test tests/NATS.Server.Tests --filter "FullyQualifiedName~DifferencesParityClosureTests|FullyQualifiedName~PprofEndpointTests|FullyQualifiedName~AcceptLoopReloadLockTests|FullyQualifiedName~AcceptLoopErrorCallbackTests|FullyQualifiedName~AdaptiveReadBufferTests|FullyQualifiedName~OutboundBufferPoolTests|FullyQualifiedName~InterServerOpcodeRoutingTests|FullyQualifiedName~MessageTraceInitializationTests|FullyQualifiedName~SubListNotificationTests|FullyQualifiedName~SubListRemoteFilterTests|FullyQualifiedName~SubListQueueWeightTests|FullyQualifiedName~SubListMatchBytesTests|FullyQualifiedName~SubListHighFanoutOptimizationTests|FullyQualifiedName~SubListAsyncCacheSweepTests|FullyQualifiedName~RouteAccountScopedTests|FullyQualifiedName~RouteTopologyGossipTests|FullyQualifiedName~RouteCompressionTests|FullyQualifiedName~GatewayInterestOnlyParityTests|FullyQualifiedName~LeafHubSpokeMappingParityTests|FullyQualifiedName~AuthExtensionParityTests|FullyQualifiedName~ExternalAuthCalloutTests|FullyQualifiedName~ProxyAuthTests|FullyQualifiedName~ConnzParityFilterTests|FullyQualifiedName~ConnzParityFieldTests|FullyQualifiedName~VarzSlowConsumerBreakdownTests|FullyQualifiedName~JetStreamStreamRuntimeParityTests|FullyQualifiedName~JetStreamStreamFeatureToggleParityTests|FullyQualifiedName~JetStreamConsumerRuntimeParityTests|FullyQualifiedName~JetStreamConsumerFlowReplayParityTests|FullyQualifiedName~JetStreamFileStoreLayoutParityTests|FullyQualifiedName~JetStreamFileStoreCryptoCompressionTests|FullyQualifiedName~JetStreamMirrorSourceRuntimeParityTests|FullyQualifiedName~RaftConsensusRuntimeParityTests|FullyQualifiedName~RaftSnapshotTransferRuntimeParityTests|FullyQualifiedName~RaftMembershipRuntimeParityTests|FullyQualifiedName~JetStreamClusterGovernanceRuntimeParityTests|FullyQualifiedName~JetStreamCrossClusterRuntimeParityTests|FullyQualifiedName~MqttListenerParityTests|FullyQualifiedName~MqttPublishSubscribeParityTests" -v minimal

Result:

  • Passed: 41
  • Failed: 0
  • Skipped: 0
  • Duration: ~7s

Command:

dotnet test -v minimal

Result:

  • Passed: 826
  • Failed: 0
  • Skipped: 0
  • Duration: ~1m 15s

Deep Operational Parity Gate (2026-02-23)

Command:

dotnet test tests/NATS.Server.Tests --filter "FullyQualifiedName~JetStream|FullyQualifiedName~Raft|FullyQualifiedName~Gateway|FullyQualifiedName~Leaf|FullyQualifiedName~Route|FullyQualifiedName~DifferencesParityClosureTests|FullyQualifiedName~JetStreamParityTruthMatrixTests" -v minimal

Result:

  • Passed: 121
  • Failed: 0
  • Skipped: 0
  • Duration: ~15s

Command:

dotnet test -v minimal

Result:

  • Passed: 842
  • Failed: 0
  • Skipped: 0
  • Duration: ~1m 15s

Focused deep-operational evidence:

  • JetStreamParityTruthMatrixTests.Jetstream_parity_rows_require_behavior_test_and_docs_alignment
  • JetStreamParityTruthMatrixTests.Jetstream_differences_notes_have_no_contradictions_against_status_table_and_truth_matrix
  • JetStreamInternalClientRuntimeTests.Internal_jetstream_client_is_created_bound_to_sys_account_and_used_by_jetstream_service_lifecycle
  • JetStreamRetentionRuntimeParityTests.Workqueue_and_interest_retention_apply_correct_eviction_rules_under_ack_and_interest_changes
  • JetStreamDedupeWindowParityTests.Dedupe_window_expires_entries_and_allows_republish_after_window_boundary
  • JetStreamConsumerDeliverPolicyLongRunTests.Deliver_policy_last_per_subject_and_start_time_resolve_consistent_cursor_under_interleaved_subjects
  • JetStreamAckRedeliveryStateMachineTests.Ack_all_and_backoff_redelivery_follow_monotonic_floor_and_max_deliver_rules
  • JetStreamFlowControlReplayTimingTests.Push_flow_control_and_rate_limit_frames_follow_expected_timing_order_under_burst_load
  • JetStreamFileStoreDurabilityParityTests.File_store_recovers_block_index_map_after_restart_without_full_log_scan
  • JetStreamFileStoreCompressionEncryptionParityTests.Compression_and_encryption_roundtrip_is_versioned_and_detects_wrong_key_corruption
  • RaftAppendCommitParityTests.Leader_commits_only_after_quorum_and_rejects_conflicting_log_index_term_sequences
  • RaftOperationalConvergenceParityTests.Lagging_follower_converges_via_next_index_backtrack_then_snapshot_install_under_membership_change
  • JetStreamClusterGovernanceBehaviorParityTests.Meta_group_and_replica_group_apply_consensus_committed_placement_before_stream_transition
  • JetStreamCrossClusterBehaviorParityTests.Cross_cluster_jetstream_replication_propagates_committed_stream_state_not_just_forward_counter

Strict Full Parity Gate (2026-02-23)

Command:

dotnet test tests/NATS.Server.Tests --filter "FullyQualifiedName~NatsStrictCapabilityInventoryTests|FullyQualifiedName~AccountScopedDeliveryTests|FullyQualifiedName~InterestIdempotencyTests|FullyQualifiedName~RemapRuntimeTests|FullyQualifiedName~LoopTransparencyRuntimeTests|FullyQualifiedName~MqttPacketParserTests|FullyQualifiedName~MqttPacketWriterTests|FullyQualifiedName~MqttSessionRuntimeTests|FullyQualifiedName~MqttQosAckRuntimeTests|FullyQualifiedName~MqttAuthIntegrationTests|FullyQualifiedName~MqttKeepAliveTests|FullyQualifiedName~JetStreamRetentionRuntimeStrictParityTests|FullyQualifiedName~JetStreamConsumerStateMachineStrictParityTests|FullyQualifiedName~JetStreamMirrorSourceStrictRuntimeTests|FullyQualifiedName~JetStreamFileStoreRecoveryStrictParityTests|FullyQualifiedName~JetStreamFileStoreInvariantTests|FullyQualifiedName~RaftStrictConsensusRuntimeTests|FullyQualifiedName~RaftStrictConvergenceRuntimeTests|FullyQualifiedName~JetStreamMetaGovernanceStrictParityTests|FullyQualifiedName~JetStreamReplicaGovernanceStrictParityTests|FullyQualifiedName~PprofRuntimeParityTests|FullyQualifiedName~ConfigRuntimeParityTests|FullyQualifiedName~DifferencesParityClosureTests" -v minimal

Result:

  • Passed: 29
  • Failed: 0
  • Skipped: 0
  • Duration: ~8s

Command:

dotnet test -v minimal

Result:

  • Passed: 869
  • Failed: 0
  • Skipped: 0
  • Duration: ~1m 18s