Generated design docs and implementation plans via Codex for: - Batch 13: FileStore Read/Query - Batch 14: FileStore Write/Lifecycle - Batch 15: MsgBlock + ConsumerFileStore - Batch 18: Server Core - Batch 19: Accounts Core - Batch 20: Accounts Resolvers - Batch 21: Events + MsgTrace - Batch 22: Monitoring All plans include mandatory verification protocol and anti-stub guardrails. Updated batches.md with file paths and planned status.
24 KiB
Batch 22 Monitoring Implementation Plan
For Codex: REQUIRED SUB-SKILL: Use
executeplanto implement this plan task-by-task.
Goal: Port and verify Batch 22 (Monitoring) by implementing 70 deferred monitoring features from server/monitor.go and replacing/validating 29 mapped deferred tests with real behavioral assertions.
Architecture: Implement monitoring runtime in domain-focused NatsServer partial files (Connz, Route/Sub, Varz, Gateway/Leaf, Account/JSz, Health/Raft) and keep monitor DTO/sort/query helpers in Monitor/*. Execute in six feature groups (each <=20 IDs), then run mapped test waves and only promote complete -> verified once all related tests pass.
Tech Stack: .NET 10, C# latest, xUnit 3, Shouldly, NSubstitute, PortTracker CLI, SQLite (porting.db)
Design doc: docs/plans/2026-02-27-batch-22-monitoring-design.md
Batch 22 Scope
- Batch ID:
22 - Name:
Monitoring - Dependencies:
18,19 - Go source:
golang/nats-server/server/monitor.go - Features:
70 - Tests:
29
Reference commands (run before starting work):
dotnet run --project tools/NatsNet.PortTracker -- batch show 22 --db porting.db
dotnet run --project tools/NatsNet.PortTracker -- batch list --db porting.db
dotnet run --project tools/NatsNet.PortTracker -- report summary --db porting.db
Primary production files:
- Create/Modify:
dotnet/src/ZB.MOM.NatsNet.Server/NatsServer.Monitoring.Connz.cs - Create/Modify:
dotnet/src/ZB.MOM.NatsNet.Server/NatsServer.Monitoring.RouteSub.cs - Create/Modify:
dotnet/src/ZB.MOM.NatsNet.Server/NatsServer.Monitoring.Varz.cs - Create/Modify:
dotnet/src/ZB.MOM.NatsNet.Server/NatsServer.Monitoring.GatewayLeaf.cs - Create/Modify:
dotnet/src/ZB.MOM.NatsNet.Server/NatsServer.Monitoring.AccountJsz.cs - Create/Modify:
dotnet/src/ZB.MOM.NatsNet.Server/NatsServer.Monitoring.HealthRaft.cs - Modify:
dotnet/src/ZB.MOM.NatsNet.Server/Monitor/MonitorTypes.cs - Modify:
dotnet/src/ZB.MOM.NatsNet.Server/Monitor/MonitorSortOptions.cs - Modify:
dotnet/src/ZB.MOM.NatsNet.Server/ClientTypes.cs
Primary mapped test files:
dotnet/tests/ZB.MOM.NatsNet.Server.Tests/ImplBacklog/MonitoringHandlerTests.Impltests.csdotnet/tests/ZB.MOM.NatsNet.Server.Tests/ImplBacklog/RouteHandlerTests.Impltests.csdotnet/tests/ZB.MOM.NatsNet.Server.Tests/ImplBacklog/LeafNodeHandlerTests.Impltests.csdotnet/tests/ZB.MOM.NatsNet.Server.Tests/ImplBacklog/AccountTests.Impltests.csdotnet/tests/ZB.MOM.NatsNet.Server.Tests/ImplBacklog/EventsHandlerTests.Impltests.csdotnet/tests/ZB.MOM.NatsNet.Server.Tests/ImplBacklog/JetStreamJwtTests.Impltests.csdotnet/tests/ZB.MOM.NatsNet.Server.Tests/ImplBacklog/ConfigReloaderTests.Impltests.cs
MANDATORY VERIFICATION PROTOCOL
NON-NEGOTIABLE: Every Batch 22 feature and mapped test must follow this protocol.
Per-Feature Verification Loop (REQUIRED for every feature ID)
- Read feature metadata and Go implementation first:
dotnet run --project tools/NatsNet.PortTracker -- feature show <feature_id> --db porting.db
# then inspect monitor.go around go_line_number/go_line_count
- Write the mapped C# behavior in the target file only (no placeholders).
- Build immediately after each feature (or tight pair of coupled features):
dotnet build dotnet/
- Run the smallest related test filter immediately:
dotnet test dotnet/tests/ZB.MOM.NatsNet.Server.Tests/ \
--filter "FullyQualifiedName~MonitoringHandlerTests|FullyQualifiedName~RouteHandlerTests|FullyQualifiedName~LeafNodeHandlerTests|FullyQualifiedName~AccountTests|FullyQualifiedName~EventsHandlerTests|FullyQualifiedName~JetStreamJwtTests|FullyQualifiedName~ConfigReloaderTests"
- Keep feature ID in
complete-candidateonly if build and related tests are green. - If red, fix before moving on. Do not stack unresolved failures.
Stub Detection Check (REQUIRED after every feature group and test wave)
Run these checks before any status promotion:
# Feature/test placeholder detector
grep -R -n -E "(NotImplementedException|TODO|PLACEHOLDER|Assert\.True\(true\)|throw new Exception\(\"TODO\"\))" \
dotnet/src/ZB.MOM.NatsNet.Server/NatsServer.Monitoring*.cs \
dotnet/src/ZB.MOM.NatsNet.Server/Monitor/*.cs \
dotnet/src/ZB.MOM.NatsNet.Server/ClientTypes.cs \
dotnet/tests/ZB.MOM.NatsNet.Server.Tests/ImplBacklog/MonitoringHandlerTests.Impltests.cs \
dotnet/tests/ZB.MOM.NatsNet.Server.Tests/ImplBacklog/RouteHandlerTests.Impltests.cs \
dotnet/tests/ZB.MOM.NatsNet.Server.Tests/ImplBacklog/LeafNodeHandlerTests.Impltests.cs \
dotnet/tests/ZB.MOM.NatsNet.Server.Tests/ImplBacklog/AccountTests.Impltests.cs \
dotnet/tests/ZB.MOM.NatsNet.Server.Tests/ImplBacklog/EventsHandlerTests.Impltests.cs \
dotnet/tests/ZB.MOM.NatsNet.Server.Tests/ImplBacklog/JetStreamJwtTests.Impltests.cs \
dotnet/tests/ZB.MOM.NatsNet.Server.Tests/ImplBacklog/ConfigReloaderTests.Impltests.cs
# Empty-body detector (features)
grep -R -n -E "^[[:space:]]*(public|internal|private|protected)[^{;=]*\)[[:space:]]*\{[[:space:]]*\}$" \
dotnet/src/ZB.MOM.NatsNet.Server/NatsServer.Monitoring*.cs \
dotnet/src/ZB.MOM.NatsNet.Server/Monitor/*.cs
# Fake-test detector for known placeholder pattern in ImplBacklog files
grep -R -n -E "var goFile = \"server/|ShouldContain\(\"Should\"\)|ShouldNotBeNullOrWhiteSpace\(\);[[:space:]]*$" \
dotnet/tests/ZB.MOM.NatsNet.Server.Tests/ImplBacklog/MonitoringHandlerTests.Impltests.cs \
dotnet/tests/ZB.MOM.NatsNet.Server.Tests/ImplBacklog/RouteHandlerTests.Impltests.cs \
dotnet/tests/ZB.MOM.NatsNet.Server.Tests/ImplBacklog/LeafNodeHandlerTests.Impltests.cs \
dotnet/tests/ZB.MOM.NatsNet.Server.Tests/ImplBacklog/AccountTests.Impltests.cs \
dotnet/tests/ZB.MOM.NatsNet.Server.Tests/ImplBacklog/EventsHandlerTests.Impltests.cs \
dotnet/tests/ZB.MOM.NatsNet.Server.Tests/ImplBacklog/JetStreamJwtTests.Impltests.cs \
dotnet/tests/ZB.MOM.NatsNet.Server.Tests/ImplBacklog/ConfigReloaderTests.Impltests.cs
Any new hit must be fixed or deferred with explicit reason.
Build Gate (REQUIRED after each feature group)
dotnet build dotnet/
Build succeeded is mandatory before moving any feature IDs in that group to complete.
Test Gate (REQUIRED before marking any features verified)
All related test classes must pass before any Batch 22 feature moves complete -> verified:
dotnet test dotnet/tests/ZB.MOM.NatsNet.Server.Tests/ --filter "FullyQualifiedName~ZB.MOM.NatsNet.Server.Tests.ImplBacklog.MonitoringHandlerTests"
dotnet test dotnet/tests/ZB.MOM.NatsNet.Server.Tests/ --filter "FullyQualifiedName~ZB.MOM.NatsNet.Server.Tests.ImplBacklog.RouteHandlerTests"
dotnet test dotnet/tests/ZB.MOM.NatsNet.Server.Tests/ --filter "FullyQualifiedName~ZB.MOM.NatsNet.Server.Tests.ImplBacklog.LeafNodeHandlerTests"
dotnet test dotnet/tests/ZB.MOM.NatsNet.Server.Tests/ --filter "FullyQualifiedName~ZB.MOM.NatsNet.Server.Tests.ImplBacklog.AccountTests"
dotnet test dotnet/tests/ZB.MOM.NatsNet.Server.Tests/ --filter "FullyQualifiedName~ZB.MOM.NatsNet.Server.Tests.ImplBacklog.EventsHandlerTests"
dotnet test dotnet/tests/ZB.MOM.NatsNet.Server.Tests/ --filter "FullyQualifiedName~ZB.MOM.NatsNet.Server.Tests.ImplBacklog.JetStreamJwtTests"
dotnet test dotnet/tests/ZB.MOM.NatsNet.Server.Tests/ --filter "FullyQualifiedName~ZB.MOM.NatsNet.Server.Tests.ImplBacklog.ConfigReloaderTests"
No feature may be verified while these related tests fail or remain placeholder-style.
Status Update Protocol (REQUIRED)
- Max
15IDs perfeature batch-updateortest batch-updatecommand. - Required progression:
deferred/not_started -> stubwhen active work starts.stub -> completeonly after stub checks + group build gate.complete -> verifiedonly after full related test gate passes.
- Evidence required before each status chunk:
- successful build output,
- successful related test output,
- clean stub scan output,
- explicit list of IDs being updated.
Example (feature chunk <=15):
dotnet run --project tools/NatsNet.PortTracker -- \
feature batch-update --ids "2166,2167,2168,2169,2170,2171,2172,2173,2174,2175,2176,2177,2178" \
--set-status complete --db porting.db --execute
Checkpoint Protocol Between Tasks (REQUIRED)
After each major task (every feature group and every test wave):
dotnet build dotnet/
dotnet test dotnet/tests/ZB.MOM.NatsNet.Server.Tests/
git add dotnet/src/ZB.MOM.NatsNet.Server dotnet/tests/ZB.MOM.NatsNet.Server.Tests/ImplBacklog porting.db
git commit -m "<task checkpoint message>"
ANTI-STUB GUARDRAILS (NON-NEGOTIABLE)
Forbidden Patterns
For Batch 22 mapped features and tests, these are forbidden:
throw new NotImplementedException()- Empty method bodies for mapped features
// TODO,// PLACEHOLDER, or temporary fake logic in mapped methods- Trivial default-return stubs for non-trivial behavior (
return null,return 0,return false,return string.Empty) - Placeholder test bodies that do not execute Batch 22 production code
- Literal/self assertions used as fake test pass criteria (for example
"...".ShouldContain("Should")) - Placeholder signature pattern
var goFile = "server/..."without real Arrange/Act/Assert on production code
Hard Limits
- Maximum
~20features per implementation task group - Maximum
15IDs per status-update command - One active feature-group status cycle at a time (start, implement, gate, update)
- Zero tolerance for unresolved stub-scan hits in touched files
- Mandatory checkpoint (build + test + commit) between tasks
If You Get Stuck (REQUIRED)
- Stop on the blocked feature/test ID immediately.
- Remove any partial placeholder code; do not keep a stub.
- Mark as deferred with explicit blocker reason:
dotnet run --project tools/NatsNet.PortTracker -- feature update <id> --status deferred --override "blocked: <specific reason>" --db porting.db
dotnet run --project tools/NatsNet.PortTracker -- test update <id> --status deferred --override "blocked: <specific reason>" --db porting.db
- Continue with next unblocked ID.
- Do not write fake-pass tests to bypass blockers.
Feature Groups (<=20 IDs each)
Group 1 (13 IDs): Connz foundations and query decode
2166,2167,2168,2169,2170,2171,2172,2173,2174,2175,2176,2177,2178
Scope focus:
newSubsDetailList,newSubsListConnzcore +ConnInfo.fill- query decode helpers (
decodeBool,decodeUint64,decodeInt,decodeState,decodeSubs) /connzhandler
Group 2 (9 IDs): Route/Sub/stack/ipqueue monitoring
2179,2180,2181,2182,2183,2184,2185,2186,2187
Scope focus:
Routez,Subsz, sub detail projections/routez,/subsz,/stacksz,/ipqueueszhandlers
Group 3 (11 IDs): Varz core and root-level metadata
2188,2189,2190,2191,2192,2193,2194,2195,2196,2197,2198
Scope focus:
- uptime and TLS helper projections
- root endpoint output
- varz creation and reload/runtime update paths
/varzhandler
Group 4 (10 IDs): Gateway monitor projections and handlers
2199,2200,2201,2202,2203,2204,2205,2206,2207,2208
Scope focus:
- gateway monitor options and inbound/outbound projections
/gatewayzhandler
Group 5 (13 IDs): Leaf/Account monitor surfaces and detail projections
2209,2210,2211,2212,2213,2214,2215,2216,2217,2218,2219,2220,2221
Scope focus:
Leafz,AccountStatz,Accountz- response helper wrappers (
ResponseHandler,handleResponse) ClosedState.String- account import/export/detail projections (
newExtServiceLatency,newExtImport,accountInfo,accountDetail)
Group 6 (14 IDs): JSz, healthz, expvar/profile, raftz
2222,2223,2224,2225,2226,2227,2228,2229,2230,2231,2232,2233,2234,2235
Scope focus:
JszAccount,Jsz,/jsz- health type serialization and
/healthzinternals /debug/varsand profile reporting/raftzendpoint and aggregation
Mapped Test Waves (29 IDs)
Wave 1 (13 IDs): MonitoringHandlerTests
2064,2087,2090,2092,2093,2112,2117,2120,2121,2143,2150,2157,2165
Target file:
dotnet/tests/ZB.MOM.NatsNet.Server.Tests/ImplBacklog/MonitoringHandlerTests.Impltests.cs
Execution notes:
- Replace placeholder methods with real endpoint behavior assertions.
Benchmark_*mapped entries must still assert measurable behavior in deterministic unit-test style if kept as tests; if they must remain benchmark-only, keep deferred with explicit reason.
Wave 2 (16 IDs): Cross-class monitor dependencies
89,318,1393,1394,1930,1964,1980,1981,1982,2004,2772,2815,2831,2837,2851,2857
Target files:
AccountTests.Impltests.csEventsHandlerTests.Impltests.csJetStreamJwtTests.Impltests.csLeafNodeHandlerTests.Impltests.csConfigReloaderTests.Impltests.csRouteHandlerTests.Impltests.cs
Execution notes:
- Validate each test still maps to Batch 22 features (
Connz,Routez,Subsz,Varz,Leafz,Accountz,Jsz,profilez) and rewrite assertions around those paths.
Task 1: Preflight and Batch Start
Files:
- Read:
docs/standards/dotnet-standards.md - Read:
docs/plans/2026-02-27-batch-22-monitoring-design.md - Read:
golang/nats-server/server/monitor.go
Step 1: Confirm scope and dependencies
dotnet run --project tools/NatsNet.PortTracker -- batch show 22 --db porting.db
dotnet run --project tools/NatsNet.PortTracker -- batch list --db porting.db
dotnet run --project tools/NatsNet.PortTracker -- report summary --db porting.db
Step 2: Start batch
dotnet run --project tools/NatsNet.PortTracker -- batch start 22 --db porting.db
Step 3: Baseline gate
dotnet build dotnet/
dotnet test dotnet/tests/ZB.MOM.NatsNet.Server.Tests/
Step 4: Commit checkpoint
git add porting.db
git commit -m "chore(batch22): start monitoring batch"
Task 2: Implement Feature Group 1 (13 IDs)
Files:
- Create/Modify:
dotnet/src/ZB.MOM.NatsNet.Server/NatsServer.Monitoring.Connz.cs - Modify:
dotnet/src/ZB.MOM.NatsNet.Server/Monitor/MonitorTypes.cs - Modify:
dotnet/src/ZB.MOM.NatsNet.Server/Monitor/MonitorSortOptions.cs
Step 1: Move IDs to stub
dotnet run --project tools/NatsNet.PortTracker -- feature batch-update --ids "2166,2167,2168,2169,2170,2171,2172,2173,2174,2175,2176,2177,2178" --set-status stub --db porting.db --execute
Step 2: Execute Per-Feature Verification Loop for all 13 IDs
Step 3: Run Stub Detection Check + Build Gate
Step 4: Move IDs to complete
dotnet run --project tools/NatsNet.PortTracker -- feature batch-update --ids "2166,2167,2168,2169,2170,2171,2172,2173,2174,2175,2176,2177,2178" --set-status complete --db porting.db --execute
Step 5: Run Checkpoint Protocol
Task 3: Implement Feature Group 2 (9 IDs)
Files:
- Create/Modify:
dotnet/src/ZB.MOM.NatsNet.Server/NatsServer.Monitoring.RouteSub.cs - Modify:
dotnet/src/ZB.MOM.NatsNet.Server/Monitor/MonitorTypes.cs
Step 1: Move IDs to stub
dotnet run --project tools/NatsNet.PortTracker -- feature batch-update --ids "2179,2180,2181,2182,2183,2184,2185,2186,2187" --set-status stub --db porting.db --execute
Step 2: Execute Per-Feature Verification Loop for all 9 IDs
Step 3: Run Stub Detection Check + Build Gate
Step 4: Move IDs to complete
dotnet run --project tools/NatsNet.PortTracker -- feature batch-update --ids "2179,2180,2181,2182,2183,2184,2185,2186,2187" --set-status complete --db porting.db --execute
Step 5: Run Checkpoint Protocol
Task 4: Implement Feature Group 3 (11 IDs)
Files:
- Create/Modify:
dotnet/src/ZB.MOM.NatsNet.Server/NatsServer.Monitoring.Varz.cs - Modify:
dotnet/src/ZB.MOM.NatsNet.Server/Monitor/MonitorTypes.cs
Step 1: Move IDs to stub
dotnet run --project tools/NatsNet.PortTracker -- feature batch-update --ids "2188,2189,2190,2191,2192,2193,2194,2195,2196,2197,2198" --set-status stub --db porting.db --execute
Step 2: Execute Per-Feature Verification Loop for all 11 IDs
Step 3: Run Stub Detection Check + Build Gate
Step 4: Move IDs to complete
dotnet run --project tools/NatsNet.PortTracker -- feature batch-update --ids "2188,2189,2190,2191,2192,2193,2194,2195,2196,2197,2198" --set-status complete --db porting.db --execute
Step 5: Run Checkpoint Protocol
Task 5: Implement Feature Group 4 (10 IDs)
Files:
- Create/Modify:
dotnet/src/ZB.MOM.NatsNet.Server/NatsServer.Monitoring.GatewayLeaf.cs - Modify:
dotnet/src/ZB.MOM.NatsNet.Server/Monitor/MonitorTypes.cs
Step 1: Move IDs to stub
dotnet run --project tools/NatsNet.PortTracker -- feature batch-update --ids "2199,2200,2201,2202,2203,2204,2205,2206,2207,2208" --set-status stub --db porting.db --execute
Step 2: Execute Per-Feature Verification Loop for all 10 IDs
Step 3: Run Stub Detection Check + Build Gate
Step 4: Move IDs to complete
dotnet run --project tools/NatsNet.PortTracker -- feature batch-update --ids "2199,2200,2201,2202,2203,2204,2205,2206,2207,2208" --set-status complete --db porting.db --execute
Step 5: Run Checkpoint Protocol
Task 6: Implement Feature Group 5 (13 IDs)
Files:
- Create/Modify:
dotnet/src/ZB.MOM.NatsNet.Server/NatsServer.Monitoring.AccountJsz.cs - Modify:
dotnet/src/ZB.MOM.NatsNet.Server/ClientTypes.cs - Modify:
dotnet/src/ZB.MOM.NatsNet.Server/Monitor/MonitorTypes.cs
Step 1: Move IDs to stub
dotnet run --project tools/NatsNet.PortTracker -- feature batch-update --ids "2209,2210,2211,2212,2213,2214,2215,2216,2217,2218,2219,2220,2221" --set-status stub --db porting.db --execute
Step 2: Execute Per-Feature Verification Loop for all 13 IDs
Step 3: Run Stub Detection Check + Build Gate
Step 4: Move IDs to complete
dotnet run --project tools/NatsNet.PortTracker -- feature batch-update --ids "2209,2210,2211,2212,2213,2214,2215,2216,2217,2218,2219,2220,2221" --set-status complete --db porting.db --execute
Step 5: Run Checkpoint Protocol
Task 7: Implement Feature Group 6 (14 IDs)
Files:
- Create/Modify:
dotnet/src/ZB.MOM.NatsNet.Server/NatsServer.Monitoring.HealthRaft.cs - Modify:
dotnet/src/ZB.MOM.NatsNet.Server/Monitor/MonitorTypes.cs
Step 1: Move IDs to stub
dotnet run --project tools/NatsNet.PortTracker -- feature batch-update --ids "2222,2223,2224,2225,2226,2227,2228,2229,2230,2231,2232,2233,2234,2235" --set-status stub --db porting.db --execute
Step 2: Execute Per-Feature Verification Loop for all 14 IDs
Step 3: Run Stub Detection Check + Build Gate
Step 4: Move IDs to complete
dotnet run --project tools/NatsNet.PortTracker -- feature batch-update --ids "2222,2223,2224,2225,2226,2227,2228,2229,2230,2231,2232,2233,2234,2235" --set-status complete --db porting.db --execute
Step 5: Run Checkpoint Protocol
Task 8: Implement Test Wave 1 (MonitoringHandler class)
Files:
- Modify:
dotnet/tests/ZB.MOM.NatsNet.Server.Tests/ImplBacklog/MonitoringHandlerTests.Impltests.cs
Mapped IDs:
2064,2087,2090,2092,2093,2112,2117,2120,2121,2143,2150,2157,2165
Step 1: Move IDs to stub (max 15, one command valid)
dotnet run --project tools/NatsNet.PortTracker -- test batch-update --ids "2064,2087,2090,2092,2093,2112,2117,2120,2121,2143,2150,2157,2165" --set-status stub --db porting.db --execute
Step 2: Rewrite each mapped test with real Arrange/Act/Assert behavior
Step 3: Run class filter and stub checks
dotnet test dotnet/tests/ZB.MOM.NatsNet.Server.Tests/ --filter "FullyQualifiedName~ZB.MOM.NatsNet.Server.Tests.ImplBacklog.MonitoringHandlerTests"
Step 4: Move passing IDs to verified; keep blocked IDs deferred with reason
dotnet run --project tools/NatsNet.PortTracker -- test batch-update --ids "<passing IDs, max 15>" --set-status verified --db porting.db --execute
# for blocked IDs:
dotnet run --project tools/NatsNet.PortTracker -- test update <id> --status deferred --override "blocked: <reason>" --db porting.db
Step 5: Run Checkpoint Protocol
Task 9: Implement Test Wave 2 (Cross-class mapped tests)
Files:
- Modify:
AccountTests.Impltests.cs - Modify:
EventsHandlerTests.Impltests.cs - Modify:
JetStreamJwtTests.Impltests.cs - Modify:
LeafNodeHandlerTests.Impltests.cs - Modify:
ConfigReloaderTests.Impltests.cs - Modify:
RouteHandlerTests.Impltests.cs
Mapped IDs:
89,318,1393,1394,1930,1964,1980,1981,1982,2004,2772,2815,2831,2837,2851,2857
Step 1: Move IDs to stub in chunks <=15
dotnet run --project tools/NatsNet.PortTracker -- test batch-update --ids "89,318,1393,1394,1930,1964,1980,1981,1982,2004,2772,2815,2831,2837,2851" --set-status stub --db porting.db --execute
dotnet run --project tools/NatsNet.PortTracker -- test batch-update --ids "2857" --set-status stub --db porting.db --execute
Step 2: Rewrite mapped tests with real production assertions
Step 3: Run per-class filters + related endpoint filters
dotnet test dotnet/tests/ZB.MOM.NatsNet.Server.Tests/ --filter "FullyQualifiedName~AccountTests"
dotnet test dotnet/tests/ZB.MOM.NatsNet.Server.Tests/ --filter "FullyQualifiedName~EventsHandlerTests"
dotnet test dotnet/tests/ZB.MOM.NatsNet.Server.Tests/ --filter "FullyQualifiedName~JetStreamJwtTests"
dotnet test dotnet/tests/ZB.MOM.NatsNet.Server.Tests/ --filter "FullyQualifiedName~LeafNodeHandlerTests"
dotnet test dotnet/tests/ZB.MOM.NatsNet.Server.Tests/ --filter "FullyQualifiedName~ConfigReloaderTests"
dotnet test dotnet/tests/ZB.MOM.NatsNet.Server.Tests/ --filter "FullyQualifiedName~RouteHandlerTests"
Step 4: Move passing IDs to verified, defer blocked IDs with reason
dotnet run --project tools/NatsNet.PortTracker -- test batch-update --ids "<passing IDs chunk 1, max 15>" --set-status verified --db porting.db --execute
dotnet run --project tools/NatsNet.PortTracker -- test batch-update --ids "<passing IDs chunk 2, max 15>" --set-status verified --db porting.db --execute
Step 5: Run Checkpoint Protocol
Task 10: Promote Features to Verified (After Test Gate)
Files:
- Modify:
porting.db
Step 1: Run full related test gate (all seven classes)
Step 2: Promote features 2166-2235 from complete to verified in chunks <=15
dotnet run --project tools/NatsNet.PortTracker -- feature batch-update --ids "2166,2167,2168,2169,2170,2171,2172,2173,2174,2175,2176,2177,2178,2179,2180" --set-status verified --db porting.db --execute
dotnet run --project tools/NatsNet.PortTracker -- feature batch-update --ids "2181,2182,2183,2184,2185,2186,2187,2188,2189,2190,2191,2192,2193,2194,2195" --set-status verified --db porting.db --execute
dotnet run --project tools/NatsNet.PortTracker -- feature batch-update --ids "2196,2197,2198,2199,2200,2201,2202,2203,2204,2205,2206,2207,2208,2209,2210" --set-status verified --db porting.db --execute
dotnet run --project tools/NatsNet.PortTracker -- feature batch-update --ids "2211,2212,2213,2214,2215,2216,2217,2218,2219,2220,2221,2222,2223,2224,2225" --set-status verified --db porting.db --execute
dotnet run --project tools/NatsNet.PortTracker -- feature batch-update --ids "2226,2227,2228,2229,2230,2231,2232,2233,2234,2235" --set-status verified --db porting.db --execute
Step 3: Checkpoint Protocol
Task 11: Final Batch 22 Closure
Files:
- Modify:
porting.db - Generate:
reports/current.md(via script)
Step 1: Full regression and final stub audit
dotnet build dotnet/
dotnet test dotnet/tests/ZB.MOM.NatsNet.Server.Tests/
grep -R -n -E "(NotImplementedException|TODO|PLACEHOLDER|Assert\.True\(true\)|var goFile = \"server/|ShouldContain\(\"Should\"\))" \
dotnet/src/ZB.MOM.NatsNet.Server/NatsServer.Monitoring*.cs \
dotnet/tests/ZB.MOM.NatsNet.Server.Tests/ImplBacklog
Step 2: Validate tracker state
dotnet run --project tools/NatsNet.PortTracker -- batch show 22 --db porting.db
dotnet run --project tools/NatsNet.PortTracker -- report summary --db porting.db
dotnet run --project tools/NatsNet.PortTracker -- batch complete 22 --db porting.db
Step 3: Generate report and commit
./reports/generate-report.sh
git add dotnet/src/ZB.MOM.NatsNet.Server dotnet/tests/ZB.MOM.NatsNet.Server.Tests/ImplBacklog porting.db reports/
git commit -m "feat(batch22): complete monitoring endpoints and mapped tests"