Commit Graph

83 Commits

Author SHA1 Message Date
Joseph Doherty
e9b8855dce chore: mark ~211 Go tests as not_applicable in parity DB
norace (126), platform-specific (23), Go-specific (40), benchmarks (22)
2026-02-24 19:22:04 -05:00
Joseph Doherty
2dd807561e docs: add remaining Go parity implementation plan — 29 tasks, 8 tracks, ~1,418 tests 2026-02-24 19:20:35 -05:00
Joseph Doherty
4ab4f578e3 docs: add remaining Go parity design — 8 tracks, ~1,418 tests 2026-02-24 19:10:40 -05:00
Joseph Doherty
365cbb80ae test(parity): port 168 RAFT and JetStream cluster Go tests + DB update (B10+B11)
- RaftGoParityTests.cs: 86 tests covering elections, log replication, snapshots,
  membership changes, peer tracking (Go ref: raft_test.go)
- JetStreamClusterGoParityTests.cs: 66 tests covering stream/consumer CRUD,
  placement, leader failover, meta group (Go ref: jetstream_cluster_*_test.go)
- StreamReplicaGroupApplyTests.cs: 16 tests for per-stream RAFT apply logic
- test_parity.db: 1,241 mapped Go tests (up from 1,148, +93 new mappings)
2026-02-24 17:29:48 -05:00
Joseph Doherty
579063dabd test(parity): port 373 Go tests across protocol and services subsystems (C11+E15)
Protocol (C11):
- ClientProtocolGoParityTests: 45 tests (header stripping, tracing, limits, NRG)
- ConsumerGoParityTests: 60 tests (filters, actions, pinned, priority groups)
- JetStreamGoParityTests: 38 tests (stream CRUD, purge, mirror, retention)

Services (E15):
- MqttGoParityTests: 65 tests (packet parsing, QoS, retained, sessions)
- WsGoParityTests: 58 tests (compression, JWT auth, frame encoding)
- EventGoParityTests: 56 tests (event DTOs, serialization, health checks)
- AccountGoParityTests: 28 tests (route mapping, system account, limits)
- MonitorGoParityTests: 23 tests (connz filtering, pagination, sort)

DB: 1,148/2,937 mapped (39.1%), up from 1,012 (34.5%)
2026-02-24 16:52:15 -05:00
Joseph Doherty
94878d3dcc feat(monitoring+events): add connz filtering, event payloads, and message trace context (E12+E13+E14)
- Add ConnzHandler with sorting, filtering, pagination, CID lookup, and closed connection ring buffer
- Add full Go events.go parity types (ConnectEventMsg, DisconnectEventMsg, ServerStatsMsg, etc.)
- Add MessageTraceContext for per-message trace propagation with header parsing
- 74 new tests (17 ConnzFilter + 16 EventPayload + 41 MessageTraceContext)
2026-02-24 16:17:21 -05:00
Joseph Doherty
02531dda58 feat(config+ws): add TLS cert reload, WS compression negotiation, WS JWT auth (E9+E10+E11)
E9: TLS Certificate Reload
- Add TlsCertificateProvider with Interlocked-swappable cert field
- New connections get current cert, existing connections keep theirs
- ConfigReloader.ReloadTlsCertificate rebuilds SslServerAuthenticationOptions
- NatsServer.ApplyConfigChanges triggers TLS reload on TLS config changes
- 11 tests covering cert swap, versioning, thread safety, config diff

E10: WebSocket Compression Negotiation (RFC 7692)
- Add WsDeflateNegotiator to parse Sec-WebSocket-Extensions parameters
- Parse server_no_context_takeover, client_no_context_takeover,
  server_max_window_bits, client_max_window_bits
- WsDeflateParams record struct with ToResponseHeaderValue()
- NATS always enforces no_context_takeover (matching Go server)
- WsUpgrade returns negotiated WsDeflateParams in upgrade result
- 22 tests covering parameter parsing, clamping, response headers

E11: WebSocket JWT Authentication
- Extract JWT from Authorization header (Bearer token), cookie, or ?jwt= query param
- Priority: Authorization header > cookie > query parameter
- WsUpgrade.TryUpgradeAsync now parses query string from request URI
- Add FailUnauthorizedAsync for 401 responses
- 24 tests covering all JWT extraction sources and priority ordering
2026-02-24 16:03:46 -05:00
Joseph Doherty
c6ecbbfbcc feat(config): add system account, SIGHUP reload, and auth change propagation (E6+E7+E8)
E6: Add IsSystemAccount property to Account, mark $SYS account as system,
add IsSystemSubject/IsSubscriptionAllowed/GetSubListForSubject helpers to
route $SYS.> subjects to the system account's SubList and block non-system
accounts from subscribing.

E7: Add ConfigReloader.ReloadAsync and ApplyDiff for structured async reload,
add ConfigReloadResult/ConfigApplyResult types. SIGHUP handler already wired
via PosixSignalRegistration in HandleSignals.

E8: Add PropagateAuthChanges to re-evaluate connected clients after auth
config reload, disconnecting clients whose credentials no longer pass
authentication with -ERR 'Authorization Violation'.
2026-02-24 15:48:48 -05:00
Joseph Doherty
18acd6f4e2 feat(jetstream): add mirror sync loop and source coordination with filtering (C9+C10) 2026-02-24 15:41:35 -05:00
Joseph Doherty
6ad8ab69bf docs: update test_parity.db with C7+C8, D4+D5, E4+E5 Go parity mappings 2026-02-24 15:35:55 -05:00
Joseph Doherty
1da1849ed6 docs: update test_parity.db with E4+E5 Go parity mappings 2026-02-24 15:31:48 -05:00
Joseph Doherty
d259a2d03e docs: update test_parity.db with C5+C6, D2+D3, E2+E3 Go parity mappings
- Consumer priority groups and pull timeout/filter mappings
- Route pool accounting and S2 compression mappings
- MQTT session persistence, QoS 2, and retained message mappings
- Total mapped: 924 → 938 of 2,937
2026-02-24 15:14:42 -05:00
Joseph Doherty
21d10582b3 docs: update test_parity.db with C3+C4, D1, E1 Go parity mappings
- 10 consumer delivery/redelivery mappings (PushConsumer, RedeliveryTracker)
- 7 gateway interest-only mode mappings (GatewayInterestTracker)
- 10 MQTT binary parser mappings (MqttBinaryDecoder)
- Total mapped: 909 → 924 of 2,937
2026-02-24 15:04:22 -05:00
Joseph Doherty
a201e8019a test(config): port Go opts_test.go config parsing tests
Adds OptsGoParityTests.cs with 49 tests porting 15 unmapped Go test
functions from server/opts_test.go: random port semantics, listen port
config variants, multiple users, authorization block parsing, options
defaults (TestDefaultSentinel), write_deadline parsing, path handling,
variable/env-var substitution chains, and unknown field tolerance.
2026-02-24 14:54:00 -05:00
Joseph Doherty
adee23f853 docs: update test_parity.db with AckProcessor Go parity mappings 2026-02-24 14:52:16 -05:00
Joseph Doherty
4092e15ace docs: update test_parity.db with FileStore Go parity mappings
Map 36 additional Go tests from filestore_test.go to .NET equivalents
in FileStoreGoParityTests.cs. FileStore mapped: 73 -> 109. Total: 893/2937.
2026-02-24 14:44:09 -05:00
Joseph Doherty
2a240c6355 docs: add implementation plan for all 15 structure gaps
50 tasks across 5 parallel tracks (A-E) with full TDD steps,
Go reference citations, file paths, and test_parity.db update
protocol. Task persistence file for session resumption.
2026-02-24 12:05:22 -05:00
Joseph Doherty
f1e42f1b5f docs: add full Go parity design for all 15 structure gaps
5-track parallel architecture (Storage, Consensus, Protocol,
Networking, Services) covering all CRITICAL/HIGH/MEDIUM gaps
identified in structuregaps.md. Feature-first approach with
test_parity.db updates. Targets ~1,194 additional Go test mappings.
2026-02-24 11:57:15 -05:00
Joseph Doherty
0a9db430d5 docs: add test_mappings table with FK relationships
Many-to-many mapping between go_tests and dotnet_tests via
test_mappings table. 988 mappings linking 857 Go tests to
690 .NET tests. Confidence levels: exact, comment_ref, keyword,
manual, auto.
2026-02-24 10:14:58 -05:00
Joseph Doherty
bff24d29c7 docs: add SQLite parity tracking database
test_parity.db contains go_tests (2,937 rows) and dotnet_tests
(2,966 rows) tables for querying Go-to-.NET test mapping across
Claude sessions. 857 mapped, 2,080 unmapped.
2026-02-24 10:12:42 -05:00
Joseph Doherty
0dc2b38415 docs: add Go-to-.NET gap analysis and test mapping
Research documents covering implementation gaps (structuregaps.md)
and full test function mapping (testmapping.md + CSV files) between
the Go NATS server and .NET port. 857/2937 Go tests mapped (29.2%),
2080 unmatched, 2966 .NET-only tests.
2026-02-24 10:07:29 -05:00
Joseph Doherty
c881bf1ed8 docs: mark all 17 tasks completed in task persistence file 2026-02-24 09:25:14 -05:00
Joseph Doherty
14019d4c58 docs: add full Go parity implementation plan (17 tasks, 3 phases)
Phase 1: RAFT transport, JetStream orchestration, FileStore S2/AEAD
Phase 2: JetStream cluster tests (~360), core tests (~100), FileStore (~100)
Phase 3: Stress, accounts/auth, message trace, config/reload, events
Target: 3,100+ tests from current 2,606
2026-02-24 05:42:29 -05:00
Joseph Doherty
0b349f8ecf docs: add full Go parity design
Bottom-up layered approach: implementation gaps first (RAFT transport,
JetStream orchestration, FileStore S2/crypto), then test ports across
3 phases targeting ~445 new tests for full Go behavioral parity.
2026-02-24 05:35:13 -05:00
Joseph Doherty
cf83148f5e docs: mark all 25 tasks completed in task persistence file
All tasks from the full production parity plan are now complete.
Final test suite: 2,606 passing, 0 failures, 27 skipped.
2026-02-23 22:56:14 -05:00
Joseph Doherty
f1353868af feat: Wave 6 batch 2 — accounts/auth, gateways, routes, JetStream API, JetStream cluster tests
Add comprehensive Go-parity test coverage across 5 subsystems:
- Accounts/Auth: isolation, import/export, auth mechanisms, permissions (82 tests)
- Gateways: connection, forwarding, interest mode, config (106 tests)
- Routes: connection, subscription, forwarding, config validation (78 tests)
- JetStream API: stream/consumer CRUD, pub/sub, features, admin (234 tests)
- JetStream Cluster: streams, consumers, failover, meta (108 tests)

Total: ~608 new test annotations across 22 files (+13,844 lines)
All tests pass individually; suite total: 2,283 passing, 3 skipped
2026-02-23 22:35:06 -05:00
Joseph Doherty
4a4d27c878 docs: add full production parity implementation plan
25 tasks across 6 waves targeting ~1,415 new tests:
- Wave 2: Internal data structures (AVL, SubjectTree, GSL, TimeHashWheel)
- Wave 3: FileStore block engine with 160 tests
- Wave 4: RAFT consensus (election, replication, snapshots, membership)
- Wave 5: JetStream clustering + NORACE concurrency
- Wave 6: Remaining subsystem test suites (config, MQTT, leaf, accounts,
  gateway, routes, monitoring, client, JetStream API/cluster)
2026-02-23 20:40:33 -05:00
Joseph Doherty
d445a9fae1 docs: add full production parity design
6-wave implementation plan covering RAFT consensus, FileStore block
engine, internal data structures, JetStream clustering, and remaining
subsystem test suites. Targets ~1,160 new tests for ~75% Go parity.
2026-02-23 20:31:57 -05:00
Joseph Doherty
36847b732d docs: add go-to-dotnet test parity implementation plan (30 tasks, 4 phases)
30-task plan across 4 gated phases:
- Phase A (Foundation): Client, Parser, SubList, Server, Routes, Gateways, Leaf Nodes, Accounts
- Phase B (Distributed Substrate): RAFT, Storage, Config/Reload, Monitoring
- Phase C (JetStream Depth): Core, Clustering
- Phase D (Protocol Surfaces): MQTT, JWT

Includes concrete test code, TDD steps, and task dependency tracking.
2026-02-23 17:36:07 -05:00
Joseph Doherty
f6fab376ad docs: add go-to-dotnet systematic test parity design
Systematic mapping of 3,451 Go test functions against .NET port
reveals ~18% coverage. Design defines 4-phase hybrid dependency-first
approach: Foundation (client/routing/sublist) -> Distributed substrate
(RAFT/storage) -> JetStream depth -> Protocol surfaces (MQTT/JWT).
2026-02-23 17:24:57 -05:00
Joseph Doherty
0684ca4861 docs: add post-strict full go parity plan 2026-02-23 17:01:29 -05:00
Joseph Doherty
b88cad96e8 docs: add post-strict full go parity design 2026-02-23 16:59:29 -05:00
Joseph Doherty
081ff1b0db docs: synchronize strict full go parity evidence and status 2026-02-23 15:03:35 -05:00
Joseph Doherty
ec373d36f6 test: add strict nats capability inventory guardrail 2026-02-23 14:32:55 -05:00
Joseph Doherty
f76b599e2d docs: add strict full go parity implementation plan 2026-02-23 14:27:04 -05:00
Joseph Doherty
ffb165fd8a docs: add strict full go parity design 2026-02-23 14:25:13 -05:00
Joseph Doherty
377ad4a299 feat: complete jetstream deep operational parity closure 2026-02-23 13:43:14 -05:00
Joseph Doherty
5506fc4705 docs: add jetstream deep operational parity plan 2026-02-23 13:19:20 -05:00
Joseph Doherty
47ab559ada docs: add jetstream deep operational parity design 2026-02-23 13:17:46 -05:00
Joseph Doherty
2b64d762f6 feat: execute full-repo remaining parity closure plan 2026-02-23 13:08:52 -05:00
Joseph Doherty
cbe1fa6121 docs: add full-repo remaining parity plan 2026-02-23 12:24:29 -05:00
Joseph Doherty
6d2bfc0660 docs: add full-repo remaining parity design 2026-02-23 12:21:33 -05:00
Joseph Doherty
b41e6ff320 feat: execute post-baseline jetstream parity plan 2026-02-23 12:11:19 -05:00
Joseph Doherty
c3763e83d6 docs: add post-baseline jetstream parity plan 2026-02-23 11:15:03 -05:00
Joseph Doherty
93e9134cce docs: add post-baseline jetstream parity design 2026-02-23 11:13:13 -05:00
Joseph Doherty
8bce096f55 feat: complete final jetstream parity transport and runtime baselines 2026-02-23 11:04:43 -05:00
Joseph Doherty
53585012f3 docs: add final remaining jetstream parity plan 2026-02-23 10:31:38 -05:00
Joseph Doherty
cc188fa84d docs: add final remaining jetstream parity design 2026-02-23 10:28:10 -05:00
Joseph Doherty
f46b331921 feat: complete remaining jetstream parity implementation plan 2026-02-23 10:16:16 -05:00
Joseph Doherty
c7bbf45c8f docs: add remaining jetstream parity plan 2026-02-23 09:51:21 -05:00