Joseph Doherty
cfb49ef477
feat(batch8): implement store codec/helpers parity group A
2026-02-28 11:49:13 -05:00
Joseph Doherty
812088f7c4
feat(batch7): implement f2 reload orchestration and apply path
2026-02-28 11:08:19 -05:00
Joseph Doherty
3908ecdcb1
feat(batch7): implement f1 config receiver and reload helpers
2026-02-28 10:53:25 -05:00
Joseph Doherty
62169c82d9
feat(batch6-task6): port t1 opts reload jwt tests
2026-02-28 10:04:45 -05:00
Joseph Doherty
3c1ab92a3a
feat(batch6-task5): implement f4 permissions tls websocket mqtt cli options
2026-02-28 09:58:19 -05:00
Joseph Doherty
cd24ea01c5
feat(batch6-task4): implement f3 account authorization parsing
2026-02-28 09:47:32 -05:00
Joseph Doherty
eb0ab64b42
feat(batch6-task3): implement F2 jetstream leaf tls helpers
2026-02-28 09:37:42 -05:00
Joseph Doherty
4c8fb4e344
feat(batch6-task2): implement F1 opts parsing and verify features
2026-02-28 09:29:50 -05:00
Joseph Doherty
dc90025a37
feat(batch5): implement jetstream error constructors group11
2026-02-28 09:05:27 -05:00
Joseph Doherty
a15c8131cc
feat(batch5): implement jetstream error constructors group10
2026-02-28 09:00:03 -05:00
Joseph Doherty
eee3a431dd
feat(batch5): implement jetstream error constructors group09
2026-02-28 08:55:28 -05:00
Joseph Doherty
b96d3ae182
feat(batch5): implement jetstream error constructors group08
2026-02-28 08:51:21 -05:00
Joseph Doherty
a587e8e347
feat(batch5): implement jetstream error constructors group07
2026-02-28 08:47:21 -05:00
Joseph Doherty
aab2814201
feat(batch5): implement jetstream error constructors group06
2026-02-28 08:43:42 -05:00
Joseph Doherty
bc085a7da1
feat(batch5): implement jetstream error constructors group05
2026-02-28 08:40:12 -05:00
Joseph Doherty
e914b468b6
feat(batch5): implement jetstream error constructors group04
2026-02-28 08:36:38 -05:00
Joseph Doherty
802e3d6576
feat(batch5): implement jetstream error constructors group03
2026-02-28 08:32:48 -05:00
Joseph Doherty
35488a2b68
feat(batch5): implement jetstream error constructors group02
2026-02-28 08:29:20 -05:00
Joseph Doherty
9f30fe6033
feat(batch5): implement jetstream error helpers and group01 constructors
2026-02-28 08:25:56 -05:00
Joseph Doherty
b79b5f6222
feat(batch4-task3): implement error and rate-limit logging helpers
2026-02-28 08:01:04 -05:00
Joseph Doherty
b79e7aafe9
feat(batch4-task2): implement core logger wiring features
2026-02-28 07:56:32 -05:00
Joseph Doherty
7ebbaeb6b3
feat(batch3): implement service feature group
2026-02-28 07:37:17 -05:00
Joseph Doherty
beab0e60da
feat(batch3): implement send queue feature group
2026-02-28 07:31:12 -05:00
Joseph Doherty
6b67c83c0e
feat(batch3): verify client proxy protocol feature group
2026-02-28 07:24:45 -05:00
Joseph Doherty
c2a73b49f7
feat(batch2): verify memstore remainder features
2026-02-28 07:17:01 -05:00
Joseph Doherty
1a0ac59df8
feat(batch2): verify sublist helper remainder features
2026-02-28 07:11:42 -05:00
Joseph Doherty
3ace39d606
feat(batch2): verify parser remainder features
2026-02-28 07:06:09 -05:00
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
b94a67be6e
Implement deferred core utility parity APIs/tests and refresh tracking artifacts
2026-02-27 10:27:05 -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
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
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
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
a0c9c0094c
fix: session B — Go-faithful auth error states, NKey padding, permissions, signal disposal
2026-02-26 17:49:13 -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
aa1fb5ac4e
fix: session A — NoSystemAccount guard, MaxControlLine default, URL/TLS converter tests
2026-02-26 17:29:05 -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