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

209 lines
11 KiB
Markdown

# JetStream Remaining Parity Verification (2026-02-23)
## Targeted Gate
Command:
```bash
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:
```bash
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:
```bash
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:
```bash
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:
```bash
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:
```bash
dotnet test -v minimal
```
Result:
- Passed: `826`
- Failed: `0`
- Skipped: `0`
- Duration: `~1m 15s`
## Deep Operational Parity Gate (2026-02-23)
Command:
```bash
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:
```bash
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:
```bash
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:
```bash
dotnet test -v minimal
```
Result:
- Passed: `869`
- Failed: `0`
- Skipped: `0`
- Duration: `~1m 18s`