Commit Graph

60 Commits

Author SHA1 Message Date
Joseph Doherty
25d78b77f3 feat(batch1): complete proto/const/ciphers/nkey/jwt feature set 2026-02-28 06:37:02 -05:00
Joseph Doherty
3c98c4c4fd feat(batch1): implement proto varint encoder parity 2026-02-28 06:35:12 -05:00
Joseph Doherty
c1ae46fc66 feat(batch1): add mapped proto scan helpers with boundary tests 2026-02-28 06:33:09 -05:00
Joseph Doherty
d8d71eab95 feat(batch1): implement jwt wipe and nonce-required internal logic 2026-02-28 06:30:23 -05:00
Joseph Doherty
f9b582dcca feat(batch1): add init parity hooks for ciphers and constants 2026-02-28 06:05:06 -05:00
Joseph Doherty
44d1f4c515 test(batch0): port mqtt implementable tests 2026-02-28 05:19:51 -05:00
Joseph Doherty
a7819ea14c test(batch0): port jetstream consumer/engine implementable tests 2026-02-28 05:14:59 -05:00
Joseph Doherty
e279b832bb test(batch0): port jetstream small/deterministic implementable tests 2026-02-28 05:07:05 -05:00
Joseph Doherty
9bf1d99068 test(batch0): port concurrency implementable tests 2026-02-28 05:02:39 -05:00
Joseph Doherty
7712b6b7bd test(batch0): port monitoring/events/server implementable tests 2026-02-28 04:59:21 -05:00
Joseph Doherty
a7cfcc24e8 test(batch0): port routing/gateway/leaf/websocket implementable tests 2026-02-28 04:49:28 -05:00
Joseph Doherty
27bbd63ce2 test(batch0): port account/auth/options implementable tests 2026-02-28 04:39:13 -05:00
Joseph Doherty
ee0827d7d4 Reconcile batch 0 with 553 implementable tests and add design/plan docs
Map 553 deferred tests whose feature dependencies are all verified into
batch 0 (batch_tests table). Add Codex-generated design and implementation
plan for batch 0 execution.
2026-02-27 13:20:29 -05:00
Joseph Doherty
c5e0416793 Add batch commands to PortTracker CLI and migrate batch tables into porting.db
Implements batch list/show/ready/next/start/complete commands with dependency
validation, migrates 42 implementation batches (2377 features, 2087 tests) from
porting_batches.db into the live tracking database, and documents the batch
workflow in AGENTS.md.
2026-02-27 13:02:43 -05:00
Joseph Doherty
fe3fd7c74d Port impltests backlog batch files and complete the latest parity test slice. Update tracker/report databases so verified status matches the passing batch evidence. 2026-02-27 12:42:31 -05:00
Joseph Doherty
b94a67be6e Implement deferred core utility parity APIs/tests and refresh tracking artifacts 2026-02-27 10:27:05 -05:00
Joseph Doherty
c0aaae9236 chore: verify 43 already-implemented features across scheduler, monitor sort, errors, sdm, ring modules 2026-02-27 10:04:33 -05:00
Joseph Doherty
a660e38575 Implement deferred WaitQueue, DiskAvailability, and NoOpCache behavior with tests 2026-02-27 09:58:37 -05:00
Joseph Doherty
8849265780 Eliminate PortTracker stub backlog by implementing Raft/file-store/stream/server/client/OCSP stubs and adding coverage. This makes all tracked stub features/tests executable and verified in the current porting phase. 2026-02-27 08:56:26 -05:00
Joseph Doherty
ba4f41cf71 feat: implement SubscriptionIndex + JetStreamMemStore cluster — 39 features verified
Add SubscriptionIndex factory methods, notification wrappers, and
ValidateMapping. Implement 24 MemStore methods (TTL, scheduling, SDM,
age-check, purge/compact/reset) with JetStream header helpers and
constants. Verified features: 987 → 1026.
2026-02-27 06:19:47 -05:00
Joseph Doherty
7a338dd510 feat: add audit-verified status updates with override tracking
Status updates (feature/test update and batch-update) now verify the
requested status against Roslyn audit classification. Mismatches
require --override "reason" to force. Overrides are logged to a new
status_overrides table and reviewable via 'override list' command.
2026-02-27 05:50:15 -05:00
Joseph Doherty
4972f998b7 feat: run unit test audit — classify 2680 deferred tests
Reset 2680 deferred unit tests to unknown and ran audit against
dotnet/tests/. Results: 18 reclassified as stub (JetStreamErrors
and SignalHandler test stubs), 2662 remain deferred.
2026-02-27 05:36:34 -05:00
Joseph Doherty
0c9eb2a06c fix: correct 87 dotnet_class name mismatches and re-audit
Fixed 630 features with wrong class names in the DB:
- JetStreamErrors -> JsApiErrors (208)
- RaftNode -> IRaftNode (169)
- JetStreamMemoryStore -> JetStreamMemStore (80)
- 42 *Option -> *ReloadOption mappings
- 13 Sort* -> SortBy* mappings
- 21 other class name corrections

Re-audit reclassified 192 features from deferred:
  verified: 987 (+412 from initial 575)
  stub:     168 (+59 from initial 109)
  deferred: 2500 (-192 from initial 2692)
  n_a:      18 (unchanged)
2026-02-27 05:26:55 -05:00
Joseph Doherty
a91cfbc7bd feat: run feature status audit — classify 3394 unknown features
Automated classification using Roslyn syntax tree analysis:
  verified:  575
  stub:      109
  n_a:       18
  deferred:  2692
2026-02-27 05:21:45 -05:00
Joseph Doherty
11ec33da53 fix: mark server module features as deferred, not verified
Add 'deferred' to features.status CHECK constraint (table migration).
Server module (module_id=8) 3394 features: verified → deferred.
These features have ported implementations but their unit tests are
deferred pending a runnable .NET server end-to-end.
Small module features (modules 1-7, 9-12) remain verified.
2026-02-26 21:53:53 -05:00
Joseph Doherty
6a1df6b6f8 feat(p7-10): mark deferred tests, add integration tests, close Phase 7
- 2126 server-integration tests marked deferred
- NatsServerBehaviorTests.cs replaces UnitTest1.cs placeholder
- Server module and all features marked verified
- stub tests cleared to deferred
2026-02-26 20:14:38 -05:00
Joseph Doherty
f0faaffe69 feat(p7-09): JetStream unit tests — versioning (12), dirstore (12), batching/errors deferred (66)
Port session P7-09: add tests from jetstream_versioning_test.go (T:1791–1808),
dirstore_test.go (T:285–296), jetstream_batching_test.go (T:716–744),
jetstream_errors_test.go (T:1381–1384), and accounts_test.go (T:80–110).

- JetStreamVersioningTests: 12 active unit tests + 6 deferred (server-required)
- DirectoryStoreTests: 12 filesystem tests using fake JWTs (no NKeys dependency)
- JetStreamBatchingTests: 29 deferred stubs (all require running JetStream cluster)
- JetStreamErrorsTests: 4 deferred stubs (NewJS* factories not yet ported)
- accounts_test.go T:80–110: 31 deferred (all use RunServerWithConfig)

Fix DirJwtStore.cs expiration bugs:
  - Use DateTimeOffset.UtcNow.UtcTicks (not Unix-relative ticks) for expiry comparison
  - Replace in-place JwtItem mutation with new-object replacement so DrainStale
    can detect stale heap entries via ReferenceEquals check

Add JetStreamVersioning.cs methods: SetStaticStreamMetadata,
SetDynamicStreamMetadata, CopyStreamMetadata, SetStaticConsumerMetadata,
SetDynamicConsumerMetadata, SetDynamicConsumerInfoMetadata, CopyConsumerMetadata.

Tests: 725 pass, 53 skipped/deferred, 0 failures.
DB: +24 complete, +66 deferred.
2026-02-26 20:02:00 -05:00
Joseph Doherty
6e90eea736 feat(p7-07): defer all 249 filestore tests — FileStore implementation is a stub
All methods on JetStreamFileStore throw NotImplementedException (session 18
placeholder). Marked all 249 unit_tests (IDs 351–599) for server/filestore_test.go
as deferred in porting.db. No test file created; tests will be written once the
FileStore implementation is ported. All 701 existing unit tests continue to pass.
2026-02-26 19:40:05 -05:00
Joseph Doherty
0950580967 feat(p7-06): port memstore & store interface tests (38 tests)
Add JetStreamMemoryStoreTests (27 tests, T:2023-2056) and
StorageEngineTests (11 tests, T:2943-2957) covering the JetStream
memory store and IStreamStore interface. Fix 10 bugs in MemStore.cs
discovered during test authoring: FirstSeq constructor, Truncate(0)
SubjectTree reset, PurgeEx subject-filtered implementation,
UpdateConfig MaxMsgsPer enforcement, FilteredStateLocked partial
range scan, StoreRawMsgLocked DiscardNewPer, MultiLastSeqs maxSeq
fallback scan + LastNeedsUpdate recalculation, AllLastSeqs
LastNeedsUpdate recalculation, LoadLastLocked LazySubjectState
recalculation, GetSeqFromTime ts==last equality, and timestamp
precision (100-ns throughout). 20 tests deferred (internal fields,
benchmarks, TTL, filestore-only). All 701 unit tests pass.
2026-02-26 19:35:58 -05:00
Joseph Doherty
917cd33442 feat(p7-05): fill signal & log stubs — SignalHandlerTests, ServerLoggerTests
- Add RemovePassFromTrace, RemoveAuthTokenFromTrace, RemoveSecretsFromTrace
  static methods to ServerLogging (mirrors removeSecretsFromTrace/redact in
  server/client.go); uses same regex patterns as Go source to redact only the
  first match's value with [REDACTED].
- Update ClientConnection.RemoveSecretsFromTrace stub to delegate to
  ServerLogging.RemoveSecretsFromTrace.
- Add 2 unit tests to SignalHandlerTests (T:2919 invalid command, T:2920 invalid
  PID); mark 14 process-injection/subprocess tests as deferred ([Fact(Skip=…)]).
- Create ServerLoggerTests with 3 test methods (T:2020, T:2021, T:2022) covering
  NoPasswordsFromConnectTrace, RemovePassFromTrace (8 theory cases),
  RemoveAuthTokenFromTrace (8 theory cases).
- DB: 3 log tests → complete, 2 signal tests → complete, 14 signal tests → deferred.
- All 663 unit tests pass (was 645), 14 deferred skipped.
2026-02-26 19:15:57 -05:00
Joseph Doherty
364329cc1e feat(p7-04): fill auth & config-check stubs — 1 written, 39 deferred
auth_test.go (6): T:153 GetAuthErrClosedState written as pure unit test;
T:147/149-152 use RunServer/RunServerWithConfig → deferred.
auth_callout_test.go (31): all use NewAuthTest (RunServer) → all deferred.
config_check_test.go (3): depend on Go .conf-format parser not yet ported → deferred.
Adds 7 new test methods to AuthHandlerTests; suite grows 638→645.
2026-02-26 19:07:44 -05:00
Joseph Doherty
91f86b9f51 feat(p7-03): fill jwt_test.go stubs — all 88 marked deferred
All 88 unit test stubs in server/jwt_test.go (IDs 1809–1896) depend on
server infrastructure (RunServer, opTrustBasicSetup, newClientForServer,
s.LookupAccount, s.UpdateAccountClaims, etc.) and cannot be exercised as
pure unit tests. Marked all 88 as 'deferred' for Phase 8 integration testing.
Full suite remains at 638 passing tests.
2026-02-26 19:04:02 -05:00
Joseph Doherty
f0b4138459 feat(p7-02): fill opts_test.go stubs — ServerOptionsTests
Write 3 unit tests portable without a running server:
- ListenMonitoringDefault (T:2524): SetBaselineOptions propagates Host → HttpHost
- GetStorageSize (T:2576): StorageSizeJsonConverter.Parse K/M/G/T suffixes
- ClusterNameAndGatewayNameConflict (T:2571): ValidateOptions returns ErrClusterNameConfigConflict

Mark 74 opts_test.go stubs deferred: tests require either the NATS
conf-format parser (not yet ported), a running server (RunServer/NewServer),
or CLI flag-parsing infrastructure (ConfigureOptions).

Fix StorageSizeJsonConverter.Parse to return 0 for empty input,
matching Go getStorageSize("") == (0, nil).

Total unit tests: 638 passing.
2026-02-26 19:00:18 -05:00
Joseph Doherty
8b63a6f6c2 feat(p7-01): verify 11 small modules (114 tests), mark thw benchmarks n/a 2026-02-26 18:53:54 -05:00
Joseph Doherty
08620388f1 feat(p7-01): add 'deferred' status to unit_tests schema
SQLite table recreated (no ALTER TABLE support for CHECK constraints).
porting-schema.sql updated to match. Row count unchanged at 3257.
2026-02-26 18:50:50 -05:00
Joseph Doherty
8c380e7ca6 feat: session B — auth implementation + signals (26 stubs complete)
Implement ConfigureAuthorization, CheckAuthentication, and full auth
dispatch in NatsServer.Auth.cs; add HandleSignals in NatsServer.Signals.cs;
extend AuthHandler with GetAuthErrClosedState, ValidateProxies,
GetTlsAuthDcs, CheckClientTlsCertSubject, ProcessUserPermissionsTemplate;
add ReadOperatorJwt/ValidateTrustedOperators to JwtProcessor; add
AuthCallout stub; add auth accessor helpers to ClientConnection; add
NATS.NKeys package for NKey signature verification; 12 new tests pass.
2026-02-26 17:38:46 -05:00
Joseph Doherty
9c1ffc0995 feat: session A — config binding via appsettings.json (67 stubs complete)
Add JSON attributes to ServerOptions, four custom JSON converters
(NatsDurationJsonConverter, TlsVersionJsonConverter, NatsUrlJsonConverter,
StorageSizeJsonConverter), ServerOptionsConfiguration for JSON file/string
binding, and 15 tests covering config parsing, duration parsing, and size
parsing. Mark 67 opts.go features complete in porting.db.
2026-02-26 17:18:28 -05:00
Joseph Doherty
a58e8e2572 feat: port sessions 21-23 — Streams, Consumers, MQTT, WebSocket & OCSP
Session 21 (402 features, IDs 3195-3387, 584-792):
- JetStream/StreamTypes.cs: StreamInfo, ConsumerInfo, SequenceInfo,
  JSPubAckResponse, WaitQueue, ClusterInfo, PeerInfo, message types,
  ConsumerAction enum, CreateConsumerRequest, PriorityGroupState
- JetStream/NatsStream.cs: NatsStream class (stub methods, IDisposable)
- JetStream/NatsConsumer.cs: NatsConsumer class (stub methods, IDisposable)
- Updated JetStreamApiTypes.cs: removed duplicate StreamInfo/ConsumerInfo stubs

Session 22 (153 features, IDs 2252-2404):
- Mqtt/MqttConstants.cs: all MQTT protocol constants, packet types, flags
- Mqtt/MqttTypes.cs: MqttSession, MqttSubscription, MqttWill, MqttJsa,
  MqttAccountSessionManager, MqttHandler and supporting types
- Mqtt/MqttHandler.cs: per-client MQTT state, MqttServerExtensions stubs

Session 23 (97 features, IDs 3506-3543, 2443-2501):
- WebSocket/WebSocketConstants.cs: WsOpCode enum, frame bits, close codes
- WebSocket/WebSocketTypes.cs: WsReadInfo, SrvWebsocket (replaces stub),
  WebSocketHandler stubs
- Auth/Ocsp/OcspTypes.cs: OcspMode, OcspMonitor (replaces stub),
  IOcspResponseCache (replaces stub), NoOpCache, LocalDirCache

All features (3503 complete, 0 not_started). Phase 6 now at 58.9%.
2026-02-26 16:31:42 -05:00
Joseph Doherty
e6bc76b315 feat: port session 20 — JetStream Cluster & Raft types
Port IRaftNode (37-method interface), Raft, RaftState, EntryType, Entry,
AppendEntry, CommittedEntry, VoteRequest/VoteResponse, PeerState from
jetstream_cluster.go; JetStreamCluster, StreamAssignment, ConsumerAssignment,
EntryOp (19 values) and supporting types from jetstream_cluster.go.

Removes IRaftNode stub from NatsServerTypes.cs.
429 features marked complete (IDs 2599-2796, 1520-1750).
2026-02-26 16:23:39 -05:00
Joseph Doherty
84d450b4a0 feat: port session 19 — JetStream Core
- JetStreamTypes: JetStreamConfig, JetStreamStats, JetStreamAccountLimits,
  JetStreamTier, JetStreamAccountStats, JetStream engine, JsAccount, JsaUsage
- JetStreamApiTypes: 50+ JSApi request/response types, API subject constants
- JetStreamErrors: JsApiError + JsApiErrors with all 203 error codes
- JetStreamVersioning: version constants and API level helpers
- JetStreamBatching: Batching, BatchGroup, BatchStagedDiff, BatchApply
- Removed JetStreamConfig/JetStreamState stubs from NatsServerTypes.cs
- 374 features complete (IDs 1368-1519, 1751-1972)
2026-02-26 16:14:40 -05:00
Joseph Doherty
3cffa5b156 feat: port session 18 — JetStream File Store
- FileStoreTypes: FileStoreConfig, FileStreamInfo, FileConsumerInfo, Psi,
  Cache, MsgId, CompressionInfo, ErrBadMsg, FileStoreDefaults constants
- FileStore: JetStreamFileStore implementing IStreamStore (26 methods stubbed)
  with State/Type/Stop/Register* properly implemented
- MessageBlock: MessageBlock type with all 40+ fields, ConsumerFileStore stub
- 312 features complete (IDs 951-1262)
2026-02-26 16:06:50 -05:00
Joseph Doherty
5a2c8a3250 feat: port session 17 — Store Interfaces & Memory Store
- StoreTypes: IStreamStore/IConsumerStore interfaces, StreamConfig/ConsumerConfig,
  all enums (StorageType, RetentionPolicy, DiscardPolicy, AckPolicy, etc.),
  StreamState, SimpleState, LostStreamData, DeleteBlocks/Range/Slice, StoreMsg
- MemStore: JetStreamMemStore with full message CRUD, state tracking, age expiry
- ConsumerMemStore: ConsumerMemStore with delivery/ack state tracking
- DiskAvailability: cross-platform disk space checker
- 135 features complete (IDs 3164-3194, 2068-2165, 827-832)
2026-02-26 16:02:03 -05:00
Joseph Doherty
77403e3d31 feat: port sessions 14-16 — Routes, Leaf Nodes & Gateways
Session 14 (57 features, IDs 2895-2951):
- RouteTypes: RouteType enum, Route, RouteInfo, ConnectInfo, ASubs, GossipMode

Session 15 (71 features, IDs 1979-2049):
- LeafNodeTypes: Leaf, LeafNodeCfg (replaces stub), LeafConnectInfo

Session 16 (91 features, IDs 1263-1353):
- GatewayTypes: GatewayInterestMode, SrvGateway (replaces stub), GatewayCfg,
  Gateway, OutSide, InSide, SitAlly, GwReplyMap, GwReplyMapping
2026-02-26 15:50:51 -05:00
Joseph Doherty
ce45dff994 feat: port sessions 12 & 13 — Events/Monitoring/MsgTrace + Config Reload
Session 12 (218 features, IDs 854-950, 2166-2251, 2405-2439):
- EventTypes: system subjects, event message types, InternalState, ConnectEventMsg,
  DisconnectEventMsg, AccountNumConns, ServerIdentity, DataStats
- MonitorTypes: Connz, ConnInfo, ConnzOptions, ConnState, ProxyInfo, TlsPeerCert
- MonitorSortOptions: SortOpt, ConnInfos, all 13 sort comparers
- MsgTraceTypes: IMsgTrace, MsgTraceBase + 6 concrete types, custom JSON converter

Session 13 (89 features, IDs 2800-2888):
- ReloadOptions: IReloadOption interface, NoopReloadOption base, 50 option classes
  covering logging, TLS, auth, cluster, JetStream, MQTT, OCSP, misc
2026-02-26 15:46:14 -05:00
Joseph Doherty
12a14ec476 feat: port session 11 — Accounts & Directory JWT Store
- Account: full Account class (200 features) with subject mappings,
  connection counting, export/import checks, expiration timers
- DirJwtStore: directory-based JWT storage with sharding and expiry
- AccountResolver: IAccountResolver, MemoryAccountResolver,
  UrlAccountResolver, DirAccountResolver, CacheDirAccountResolver
- AccountTypes: all supporting types (AccountLimits, SConns, ExportMap,
  ImportMap, ServiceExport, StreamExport, ServiceLatency, etc.)
- 34 unit tests (599 total), 234 features complete (IDs 150-349, 793-826)
2026-02-26 15:37:08 -05:00
Joseph Doherty
06779a1f77 feat: port session 10 — Server Core Runtime, Accept Loops & Listeners
Ports server/server.go lines 2577–4782 (~1,881 Go LOC), implementing ~97
features (IDs 3051–3147) across three new partial-class files.

New files:
- NatsServer.Lifecycle.cs: Shutdown, WaitForShutdown, RemoveClient,
  SendLDMToClients, LameDuckMode, LDMClientByID, rate-limit logging,
  DisconnectClientByID, SendAsyncInfoToClients
- NatsServer.Listeners.cs: AcceptLoop, GetServerListener, InProcessConn,
  AcceptConnections, GenerateInfoJson, CopyInfo, CreateClient/Ex/InProcess,
  StartMonitoring (HTTP/HTTPS), AddConnectURLs/RemoveConnectURLs,
  TlsVersion/TlsVersionFromString, GetClientConnectURLs, ResolveHostPorts,
  PortsInfo/PortFile/LogPorts, ReadyForListeners, GetRandomIP, AcceptError
- Internal/WaitGroup.cs: Go-style WaitGroup using TaskCompletionSource

Modified:
- Auth/AuthTypes.cs: Account now implements INatsAccount (stub)
- NatsServerTypes.cs: ServerInfo.ShallowClone(), removed duplicate RefCountedUrlSet
- NatsServer.cs: _info promoted to internal for test access
- Properties/AssemblyInfo.cs: InternalsVisibleTo(DynamicProxyGenAssembly2)
- ServerTests.cs: 20 new session-10 unit tests (GenerateInfoJson, TlsVersion,
  CopyInfo, GetRandomIP — Test IDs 2895, 2906)

All 565 unit tests + 1 integration test pass.
2026-02-26 15:08:23 -05:00
Joseph Doherty
0df93c23b0 feat: port session 09 — Server Core Init & Config
Port server/server.go account management and initialization (~1950 LOC):

- NatsServer.cs: full server struct fields (atomic counters, locks, maps,
  stubs for gateway/websocket/mqtt/ocsp/leafnode)
- NatsServer.Init.cs: factory methods (New/NewServer/NewServerFromConfig),
  compression helpers (ValidateAndNormalizeCompressionOption,
  SelectCompressionMode, SelectS2AutoModeBasedOnRtt, CompressOptsEqual),
  cluster-name management, validation (ValidateCluster, ValidatePinnedCerts,
  ValidateOptions), trusted-key processing, CLI helpers, running-state checks,
  and Start() stub
- NatsServer.Accounts.cs: account management (ConfigureAccounts,
  LookupOrRegisterAccount, RegisterAccount, SetSystemAccount,
  SetDefaultSystemAccount, SetSystemAccountInternal, CreateInternalClient*,
  ShouldTrackSubscriptions, RegisterAccountNoLock, SetAccountSublist,
  SetRouteInfo, LookupAccount, LookupOrFetchAccount, UpdateAccount,
  UpdateAccountWithClaimJwt, FetchRawAccountClaims, FetchAccountClaims,
  VerifyAccountClaims, FetchAccountFromResolver, GlobalAccountOnly,
  StandAloneMode, ConfiguredRoutes, ActivePeers, ComputeRoutePoolIdx)
- NatsServerTypes.cs: ServerInfo, ServerStats, NodeInfo, ServerProtocol,
  CompressionMode constants, AccountClaims stub, InternalState stub, and
  cross-session stubs for JetStream/gateway/websocket/mqtt/ocsp
- AuthTypes.cs: extend Account stub with Issuer, ClaimJwt, RoutePoolIdx,
  Incomplete, Updated, Sublist, Server fields, and IsExpired()
- ServerOptions.cs: add Accounts property (List<Account>)
- ServerTests.cs: 38 standalone tests (IDs 2866, 2882, plus compression
  and validation helpers); server-dependent tests marked n/a

Features: 77 complete (IDs 2974–3050)
Tests: 2 complete (2866, 2882); 18 n/a (server-dependent)
All tests: 545 unit + 1 integration pass
2026-02-26 14:18:18 -05:00
Joseph Doherty
11b387e442 feat: port session 08 — Client Connection & PROXY Protocol
- ClientConnection: full connection lifecycle, string/identity helpers,
  SplitSubjectQueue, KindString, MsgParts, SetHeader, message header
  manipulation (GenHeader, RemoveHeader, SliceHeader, GetHeader)
- ClientTypes: ClientConnectionType, ClientProtocol, ClientFlags,
  ReadCacheFlags, ClosedState, PmrFlags, DenyType, ClientOptions,
  ClientInfo, NbPool, RouteTarget, ClientKindHelpers
- NatsMessageHeaders: complete header utility class (GenHeader,
  RemoveHeaderIfPrefixPresent, RemoveHeaderIfPresent, SliceHeader,
  GetHeader, SetHeader, GetHeaderKeyIndex)
- ProxyProtocol: PROXY protocol v1/v2 parser (ReadV1Header,
  ParseV2Header, ReadProxyProtoHeader sync entry point)
- ServerErrors: add ErrAuthorization sentinel
- Tests: 32 standalone unit tests (proxy protocol: IDs 159-168,
  171-178, 180-181; client: IDs 200-201, 247-256)
- DB: 195 features → complete (387-581); 32 tests → complete;
  81 server-dependent tests → n/a

Features: 667 complete, 274 unit tests complete (17.2% overall)
2026-02-26 13:50:38 -05:00
Joseph Doherty
88b1391ef0 feat: port session 07 — Protocol Parser, Auth extras (TPM/certidp/certstore), Internal utilities & data structures
Session 07 scope (5 features, 17 tests, ~1165 Go LOC):
- Protocol/ParserTypes.cs: ParserState enum (79 states), PublishArgument, ParseContext
- Protocol/IProtocolHandler.cs: handler interface decoupling parser from client
- Protocol/ProtocolParser.cs: Parse(), ProtoSnippet(), OverMaxControlLineLimit(),
  ProcessPub/HeaderPub/RoutedMsgArgs/RoutedHeaderMsgArgs, ClonePubArg(), GetHeader()
- tests/Protocol/ProtocolParserTests.cs: 17 tests via TestProtocolHandler stub

Auth extras from session 06 (committed separately):
- Auth/TpmKeyProvider.cs, Auth/CertificateIdentityProvider/, Auth/CertificateStore/

Internal utilities & data structures (session 06 overflow):
- Internal/AccessTimeService.cs, ElasticPointer.cs, SystemMemory.cs, ProcessStatsProvider.cs
- Internal/DataStructures/GenericSublist.cs, HashWheel.cs
- Internal/DataStructures/SubjectTree.cs, SubjectTreeNode.cs, SubjectTreeParts.cs

All 461 tests pass (460 unit + 1 integration). DB updated for features 2588-2592 and tests 2598-2614.
2026-02-26 13:16:56 -05:00
Joseph Doherty
0a54d342ba feat: port session 06 — Authentication & JWT types, validators, cipher suites
Port independently-testable auth functions from auth.go, ciphersuites.go,
and jwt.go. Server-dependent methods (configureAuthorization, checkAuthentication,
auth callout, etc.) are stubbed for later sessions.

- AuthTypes: User, NkeyUser, SubjectPermission, ResponsePermission, Permissions,
  RoutePermissions, Account — all with deep Clone() methods
- AuthHandler: IsBcrypt, ComparePasswords, ValidateResponsePermissions,
  ValidateAllowedConnectionTypes, ValidateNoAuthUser, ValidateAuth,
  DnsAltNameLabels, DnsAltNameMatches, WipeSlice, ConnectionTypes constants
- CipherSuites: CipherMap, CipherMapById, DefaultCipherSuites,
  CurvePreferenceMap, DefaultCurvePreferences
- JwtProcessor: JwtPrefix, WipeSlice, ValidateSrc (CIDR matching),
  ValidateTimes (time-of-day ranges), TimeRange type
- ServerOptions: added Users, Nkeys, TrustedOperators properties
- 67 new unit tests (all 328 tests pass)
- DB: 18 features complete, 25 stubbed; 6 Go tests complete, 125 stubbed
2026-02-26 12:27:33 -05:00