Commit Graph

470 Commits

Author SHA1 Message Date
Joseph Doherty
61b1a00800 feat: phase C jetstream depth test parity — 34 new tests across 7 subsystems
Stream lifecycle, publish/ack, consumer delivery, retention policy,
API endpoints, cluster formation, and leader failover tests ported
from Go nats-server reference. 1006 total tests passing.
2026-02-23 19:55:31 -05:00
Joseph Doherty
28d379e6b7 feat: phase B distributed substrate test parity — 39 new tests across 5 subsystems
FileStore basics (4), MemStore/retention (10), RAFT election/append (16),
config reload parity (3), monitoring endpoints varz/connz/healthz (6).
972 total tests passing, 0 failures.
2026-02-23 19:41:30 -05:00
Joseph Doherty
7ffee8741f feat: phase A foundation test parity — 64 new tests across 11 subsystems
Port Go NATS server test behaviors to .NET:
- Client pub/sub (5 tests): simple, no-echo, reply, queue distribution, empty body
- Client UNSUB (4 tests): unsub, auto-unsub max, unsub after auto, disconnect cleanup
- Client headers (3 tests): HPUB/HMSG, server info headers, no-responders 503
- Client lifecycle (3 tests): connect proto, max subscriptions, auth timeout
- Client slow consumer (1 test): pending limit detection and disconnect
- Parser edge cases (3 tests + 2 bug fixes): PUB arg variations, malformed protocol, max control line
- SubList concurrency (13 tests): race on remove/insert/match, large lists, invalid subjects, wildcards
- Server config (4 tests): ephemeral port, server name, name defaults, lame duck
- Route config (3 tests): cluster formation, cross-cluster messaging, reconnect
- Gateway basic (2 tests): cross-cluster forwarding, no echo to origin
- Leaf node basic (2 tests): hub-to-spoke and spoke-to-hub forwarding
- Account import/export (2 tests): stream export/import delivery, isolation

Also fixes NatsParser.ParseSub/ParseUnsub to throw ProtocolViolationException
for short command lines instead of ArgumentOutOfRangeException.

Full suite: 933 passed, 0 failed (up from 869).
2026-02-23 19:26:30 -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
560b9332d5 merge: integrate strict full go parity worktree 2026-02-23 16:31:21 -05:00
Joseph Doherty
081ff1b0db docs: synchronize strict full go parity evidence and status 2026-02-23 15:03:35 -05:00
Joseph Doherty
1c0fc8fc11 feat: add runtime profiling parity and close config runtime drift 2026-02-23 14:56:27 -05:00
Joseph Doherty
148ff9ebb6 feat: implement jetstream governance runtime parity semantics 2026-02-23 14:54:30 -05:00
Joseph Doherty
0413ff6ae9 feat: implement strict raft consensus and convergence parity 2026-02-23 14:53:18 -05:00
Joseph Doherty
56177a7099 feat: enforce filestore durability and recovery invariants 2026-02-23 14:51:30 -05:00
Joseph Doherty
3896512f84 feat: complete jetstream mirror source strict runtime parity 2026-02-23 14:50:18 -05:00
Joseph Doherty
7bea35aaa8 feat: harden jetstream consumer state machine parity 2026-02-23 14:48:47 -05:00
Joseph Doherty
cdde3c7a1d feat: implement strict retention runtime parity for jetstream 2026-02-23 14:47:24 -05:00
Joseph Doherty
b2312c0dac feat: enforce mqtt auth tls and keepalive semantics 2026-02-23 14:45:37 -05:00
Joseph Doherty
7dcf5776b3 feat: implement mqtt session and qos ack runtime semantics 2026-02-23 14:43:08 -05:00
Joseph Doherty
7faf42c588 feat: implement mqtt packet-level parser and writer 2026-02-23 14:41:23 -05:00
Joseph Doherty
958c4aa8ed feat: harden gateway reply remap and leaf loop transparency 2026-02-23 14:40:07 -05:00
Joseph Doherty
d83b37fec1 feat: make inter-server interest propagation idempotent 2026-02-23 14:38:23 -05:00
Joseph Doherty
6a05308143 feat: enforce account-scoped remote delivery semantics 2026-02-23 14:36:44 -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
080e0fcbed Merge branch 'codex/jetstream-deep-operational-parity' 2026-02-23 13:43:29 -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
0ca0c971a9 Merge branch 'codex/jetstream-post-baseline-parity' 2026-02-23 12:11:34 -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
7023d78599 fix: normalize Go wildcard API subjects in gap inventory 2026-02-23 11:08:00 -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
ee6809aedc docs: refresh differences for remaining jetstream parity 2026-02-23 10:22:39 -05:00
Joseph Doherty
4adc9367e6 fix: stabilize jetstream go api inventory extraction 2026-02-23 10:20:09 -05:00
Joseph Doherty
0047575bc2 Merge branch 'codex/jetstream-remaining-parity-executeplan'
# Conflicts:
#	differences.md
2026-02-23 10:16:47 -05:00
Joseph Doherty
f46b331921 feat: complete remaining jetstream parity implementation plan 2026-02-23 10:16:16 -05:00
Joseph Doherty
e553db6d40 docs: add Authentication, Clustering, JetStream, Monitoring overviews; update existing docs
New files:
- Documentation/Authentication/Overview.md — all 7 auth mechanisms with real source
  snippets (NKey/JWT/username-password/token/TLS mapping), nonce generation, account
  system, permissions, JWT permission templates
- Documentation/Clustering/Overview.md — route TCP handshake, in-process subscription
  propagation, gateway/leaf node stubs, honest gaps list
- Documentation/JetStream/Overview.md — API surface (4 handled subjects), streams,
  consumers, storage (MemStore/FileStore), in-process RAFT, mirror/source, gaps list
- Documentation/Monitoring/Overview.md — all 12 endpoints with real field tables,
  Go compatibility notes

Updated files:
- GettingStarted/Architecture.md — 14-subdirectory tree, real NatsClient/NatsServer
  field snippets, 9 new Go reference rows, Channel write queue design choice
- GettingStarted/Setup.md — xUnit 3, 100 test files grouped by area
- Operations/Overview.md — 99 test files, accurate Program.cs snippet, limitations
  section renamed to "Known Gaps vs Go Reference" with 7 real gaps
- Server/Overview.md — grouped fields, TLS/WS accept path, lame-duck mode, POSIX signals
- Configuration/Overview.md — 14 subsystem option tables, 24-row CLI table, LogOverrides
- Server/Client.md — Channel write queue, 4-task RunAsync, CommandMatrix, real fields

All docs verified against codebase 2026-02-23; 713 tests pass.
2026-02-23 10:14:18 -05:00
Joseph Doherty
9efe787cab docs: update differences.md with accurate JetStream and clustering gaps
Add sections 11 (JetStream) and 12 (Clustering) with verified coverage
tables. Correct sections 2-4 where ROUTER/GATEWAY/LEAF and RS+/RS-/RMSG
were previously marked Y but are partial or stub implementations:

- ROUTER: handshake + in-memory subscription tracking only; no RMSG
- GATEWAY/LEAF: config-only stubs with no networking
- RS+/RS-/RMSG: command matrix only; no wire routing
- JetStream: 4 of ~20 API subjects implemented; RAFT is in-memory
  simulation with no persistence or network transport
2026-02-23 09:56:09 -05:00
Joseph Doherty
c7bbf45c8f docs: add remaining jetstream parity plan 2026-02-23 09:51:21 -05:00
Joseph Doherty
fb449b8dd7 docs: add remaining jetstream parity design 2026-02-23 09:47:11 -05:00
Joseph Doherty
3fea2da2cf Fix merge regressions after jetstream parity merge 2026-02-23 08:56:15 -05:00
Joseph Doherty
a8985ecb1a Merge branch 'codex/jetstream-full-parity-executeplan' into main
# Conflicts:
#	differences.md
#	docs/plans/2026-02-23-jetstream-full-parity-plan.md
#	src/NATS.Server/Auth/Account.cs
#	src/NATS.Server/Configuration/ConfigProcessor.cs
#	src/NATS.Server/Monitoring/VarzHandler.cs
#	src/NATS.Server/NatsClient.cs
#	src/NATS.Server/NatsOptions.cs
#	src/NATS.Server/NatsServer.cs
2026-02-23 08:53:44 -05:00