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 20 Accounts Resolvers Implementation Plan
For Codex: REQUIRED SUB-SKILL: Use
executeplanto implement this plan task-by-task.
Goal: Port and verify Batch 20 (Accounts Resolvers) by implementing 38 resolver/account features from server/accounts.go and validating 98 mapped tests without introducing stubs.
Architecture: Implement in existing account/resolver files (AccountResolver.cs, NatsServer.Accounts.cs, Account.cs, AccountTypes.cs) in two feature groups (19 IDs each), then verify/port mapped tests in class-based waves. Status changes are evidence-driven and chunked to max 15 IDs per update.
Tech Stack: .NET 10, C# latest, xUnit 3, Shouldly, NSubstitute, PortTracker CLI, SQLite (porting.db)
Design doc: docs/plans/2026-02-27-batch-20-accounts-resolvers-design.md
Batch 20 Scope
- Batch ID:
20 - Name:
Accounts Resolvers - Dependency: batch
19 - Go source:
golang/nats-server/server/accounts.go - Features:
38 - Tests:
98
Primary source files:
dotnet/src/ZB.MOM.NatsNet.Server/Accounts/AccountResolver.csdotnet/src/ZB.MOM.NatsNet.Server/NatsServer.Accounts.csdotnet/src/ZB.MOM.NatsNet.Server/Accounts/Account.csdotnet/src/ZB.MOM.NatsNet.Server/Accounts/AccountTypes.cs
Primary mapped test files:
dotnet/tests/ZB.MOM.NatsNet.Server.Tests/ImplBacklog/AccountTests.Impltests.csdotnet/tests/ZB.MOM.NatsNet.Server.Tests/ImplBacklog/ConfigReloaderTests.Impltests.csdotnet/tests/ZB.MOM.NatsNet.Server.Tests/ImplBacklog/NatsConsumerTests.Impltests.csdotnet/tests/ZB.MOM.NatsNet.Server.Tests/ImplBacklog/JetStreamEngineTests.Impltests.csdotnet/tests/ZB.MOM.NatsNet.Server.Tests/ImplBacklog/JwtProcessorTests.Impltests.csdotnet/tests/ZB.MOM.NatsNet.Server.Tests/ImplBacklog/EventsHandlerTests.Impltests.csdotnet/tests/ZB.MOM.NatsNet.Server.Tests/ImplBacklog/MonitoringHandlerTests.Impltests.csdotnet/tests/ZB.MOM.NatsNet.Server.Tests/ImplBacklog/MqttHandlerTests.Impltests.csdotnet/tests/ZB.MOM.NatsNet.Server.Tests/ImplBacklog/MqttExternalTests.Impltests.csdotnet/tests/ZB.MOM.NatsNet.Server.Tests/ImplBacklog/GatewayHandlerTests.Impltests.csdotnet/tests/ZB.MOM.NatsNet.Server.Tests/ImplBacklog/JetStreamBatchingTests.Impltests.csdotnet/tests/ZB.MOM.NatsNet.Server.Tests/ImplBacklog/JetStreamFileStoreTests.Impltests.csdotnet/tests/ZB.MOM.NatsNet.Server.Tests/ImplBacklog/ConcurrencyTests1.Impltests.csdotnet/tests/ZB.MOM.NatsNet.Server.Tests/ImplBacklog/ConcurrencyTests2.Impltests.csdotnet/tests/ZB.MOM.NatsNet.Server.Tests/ImplBacklog/NatsServerTests.Impltests.cs
MANDATORY VERIFICATION PROTOCOL
NON-NEGOTIABLE: Every feature and test in Batch 20 must follow this protocol.
Per-Feature Verification Loop (REQUIRED for every feature ID)
- Read feature metadata and Go source before editing:
dotnet run --project tools/NatsNet.PortTracker -- feature show <feature_id> --db porting.db sed -n '<start_line>,<end_line>p' golang/nats-server/server/accounts.go - Implement C# behavior in mapped file/class/method (no placeholders).
- Build immediately:
dotnet build dotnet/ - Run smallest related test filter immediately (class-level minimum):
dotnet test dotnet/tests/ZB.MOM.NatsNet.Server.Tests/ \ --filter "FullyQualifiedName~<RelatedClassName>" - Only after green build + related tests: add feature ID to group
completecandidate list. - If failing, fix before starting the next feature ID.
Stub Detection Check (REQUIRED after every feature group and test class)
Run on touched files and fail the task if new stub hits are introduced:
# Forbidden tokens and TODO markers
rg -n "(NotImplementedException|TODO|PLACEHOLDER|throw new Exception\(\"TODO\"\))" \
dotnet/src/ZB.MOM.NatsNet.Server/Accounts/AccountResolver.cs \
dotnet/src/ZB.MOM.NatsNet.Server/NatsServer.Accounts.cs \
dotnet/src/ZB.MOM.NatsNet.Server/Accounts/Account.cs \
dotnet/src/ZB.MOM.NatsNet.Server/Accounts/AccountTypes.cs \
dotnet/tests/ZB.MOM.NatsNet.Server.Tests/ImplBacklog/*.Impltests.cs
# Empty method-body detector
rg -n "^\s*(public|internal|private|protected)\s+[^=;]+\)\s*\{\s*\}$" \
dotnet/src/ZB.MOM.NatsNet.Server/Accounts/AccountResolver.cs \
dotnet/src/ZB.MOM.NatsNet.Server/NatsServer.Accounts.cs \
dotnet/src/ZB.MOM.NatsNet.Server/Accounts/Account.cs \
dotnet/src/ZB.MOM.NatsNet.Server/Accounts/AccountTypes.cs
If any new violations appear, remove/fix them or defer the blocked ID with reason. Do not continue.
Build Gate (REQUIRED after each feature group)
dotnet build dotnet/
Build succeeded is required before any group IDs move to complete or verified.
Test Gate (REQUIRED before setting any feature to verified)
All related mapped tests for that feature group must pass:
dotnet test dotnet/tests/ZB.MOM.NatsNet.Server.Tests/ --filter "FullyQualifiedName~ImplBacklog.AccountTests"
dotnet test dotnet/tests/ZB.MOM.NatsNet.Server.Tests/ --filter "FullyQualifiedName~ImplBacklog.JwtProcessorTests"
dotnet test dotnet/tests/ZB.MOM.NatsNet.Server.Tests/ --filter "FullyQualifiedName~ImplBacklog.ConfigReloaderTests"
dotnet test dotnet/tests/ZB.MOM.NatsNet.Server.Tests/ --filter "FullyQualifiedName~ImplBacklog.EventsHandlerTests"
dotnet test dotnet/tests/ZB.MOM.NatsNet.Server.Tests/ --filter "FullyQualifiedName~ImplBacklog.MonitoringHandlerTests"
dotnet test dotnet/tests/ZB.MOM.NatsNet.Server.Tests/ --filter "FullyQualifiedName~ImplBacklog.NatsConsumerTests"
dotnet test dotnet/tests/ZB.MOM.NatsNet.Server.Tests/ --filter "FullyQualifiedName~ImplBacklog.JetStreamEngineTests"
dotnet test dotnet/tests/ZB.MOM.NatsNet.Server.Tests/ --filter "FullyQualifiedName~ImplBacklog.ConcurrencyTests"
dotnet test dotnet/tests/ZB.MOM.NatsNet.Server.Tests/ --filter "FullyQualifiedName~ImplBacklog.Mqtt"
dotnet test dotnet/tests/ZB.MOM.NatsNet.Server.Tests/ --filter "FullyQualifiedName~ImplBacklog.GatewayHandlerTests"
dotnet test dotnet/tests/ZB.MOM.NatsNet.Server.Tests/ --filter "FullyQualifiedName~ImplBacklog.JetStreamBatchingTests"
dotnet test dotnet/tests/ZB.MOM.NatsNet.Server.Tests/ --filter "FullyQualifiedName~ImplBacklog.JetStreamFileStoreTests"
dotnet test dotnet/tests/ZB.MOM.NatsNet.Server.Tests/ --filter "FullyQualifiedName~ImplBacklog.NatsServerTests"
No feature ID may be set to verified until mapped tests are passing or explicitly deferred with reason.
Status Update Protocol (REQUIRED)
- Maximum
15IDs perfeature batch-updateortest batch-updatecommand. - Allowed status flow only:
deferred/not_started -> stub -> complete -> verified. - Each status update chunk requires evidence captured in notes/log:
- successful build summary
- successful related test summary
- clean stub-scan outcome for touched files
- Never bulk-update across unrelated groups/classes in one command.
Checkpoint Protocol Between Tasks (REQUIRED)
After every implementation/testing task before starting next task:
- Full build:
dotnet build dotnet/ - Full unit test run:
dotnet test dotnet/tests/ZB.MOM.NatsNet.Server.Tests/ - Commit checkpoint:
git add dotnet/src/ZB.MOM.NatsNet.Server/Accounts \ dotnet/src/ZB.MOM.NatsNet.Server/NatsServer.Accounts.cs \ dotnet/tests/ZB.MOM.NatsNet.Server.Tests/ImplBacklog \ porting.db git commit -m "<task-specific message>"
ANTI-STUB GUARDRAILS (NON-NEGOTIABLE)
Forbidden Patterns
The following patterns are forbidden in any completed Batch 20 feature or test:
throw new NotImplementedException()- Empty method bodies for mapped feature methods (
{ }) // TODOor// PLACEHOLDERinside newly implemented feature/test bodies- Placeholder pass assertions (
Assert.True(true), equivalent always-pass checks) - Fake behavior returns (
return null;,return string.Empty;,return 0;,return false;) where Go behavior is non-trivial - Tests with no real Arrange/Act/Assert against production code
Hard Limits
- Max
~20features per implementation group (this plan uses 19 + 19). - Max
15IDs per any status-update command. - Max one feature group in active status transition at a time.
- No feature may reach
verifiedwhile its mapped tests are still stubbed/unverified without explicit deferred reason. - Mandatory checkpoint commit after every task.
If You Get Stuck (REQUIRED BEHAVIOR)
- Stop work on the blocked ID immediately.
- Remove any partial placeholder code for that ID.
- Keep or set status to
deferredwith explicit 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 the next unblocked ID.
- Do not create stubs to preserve momentum.
Feature Groups (Max ~20)
Group 1 (19 Features)
150,183,197,208,209,215,250,251,252,253,258,259,260,261,306,307,310,316,318
Group 2 (19 Features)
319,320,326,327,328,330,331,334,335,336,337,338,339,341,343,345,346,347,349
Test Waves (98 Total)
Wave 1 (18 tests)
- Account:
86,87,105,108 - JWT:
1819,1821,1823,1825,1830,1831,1841,1849,1894 - Events:
307,346,347 - Monitoring:
2125,2141
Wave 2 (40 tests)
- Config reload:
2721,2722,2724,2725,2726,2727,2728,2729,2730,2731,2732,2733,2734,2735,2736,2737,2738,2739,2741,2742,2743,2744,2745,2746,2750,2752,2753,2754,2761,2767,2768,2769,2770,2771,2773,2775,2776,2779,2781,2793
Wave 3 (40 tests)
- NatsConsumer:
1238,1254,1296,1300,1305,1307,1322,1324,1329,1331,1351,1354,1360,1375,1377,1378 - JetStreamEngine:
1566,1578,1579,1679,1680,1698,1705,1706,1712,1729,1730,1738 - Concurrency:
2379,2386,2444,2445,2500 - MQTT/Gateway/Other:
2169,2184,2262,683,723,493,2893
Task 1: Preflight and Batch Start
Files:
- Read:
docs/standards/dotnet-standards.md - Read:
golang/nats-server/server/accounts.go - Read:
docs/plans/2026-02-27-batch-20-accounts-resolvers-design.md
Step 1: Confirm dependency and scope
dotnet run --project tools/NatsNet.PortTracker -- batch list --db porting.db
dotnet run --project tools/NatsNet.PortTracker -- batch show 20 --db porting.db
dotnet run --project tools/NatsNet.PortTracker -- report summary --db porting.db
Expected: Batch 20 depends on Batch 19 and remains pending or ready.
Step 2: Start the batch
dotnet run --project tools/NatsNet.PortTracker -- batch start 20 --db porting.db
Expected: batch status becomes in_progress.
Step 3: Baseline verification
dotnet build dotnet/
dotnet test dotnet/tests/ZB.MOM.NatsNet.Server.Tests/
Expected: baseline output captured before edits.
Step 4: Commit checkpoint
git add porting.db
git commit -m "chore(batch20): start accounts resolvers batch"
Task 2: Implement Feature Group 1 (19 IDs)
Files:
- Modify:
dotnet/src/ZB.MOM.NatsNet.Server/Accounts/AccountTypes.cs - Modify:
dotnet/src/ZB.MOM.NatsNet.Server/Accounts/Account.cs - Modify:
dotnet/src/ZB.MOM.NatsNet.Server/NatsServer.Accounts.cs
Step 1: Move Group 1 to stub in max-15 chunks
dotnet run --project tools/NatsNet.PortTracker -- feature batch-update --ids "150,183,197,208,209,215,250,251,252,253,258,259,260,261,306" --set-status stub --db porting.db --execute
dotnet run --project tools/NatsNet.PortTracker -- feature batch-update --ids "307,310,316,318" --set-status stub --db porting.db --execute
Step 2: Execute per-feature verification loop for all 19 IDs
For each ID: feature show -> read Go range -> implement -> build -> run related tests.
Step 3: Group build + focused tests
dotnet build dotnet/
dotnet test dotnet/tests/ZB.MOM.NatsNet.Server.Tests/ --filter "FullyQualifiedName~ImplBacklog.AccountTests"
dotnet test dotnet/tests/ZB.MOM.NatsNet.Server.Tests/ --filter "FullyQualifiedName~ImplBacklog.JwtProcessorTests"
dotnet test dotnet/tests/ZB.MOM.NatsNet.Server.Tests/ --filter "FullyQualifiedName~ImplBacklog.EventsHandlerTests"
Step 4: Run stub detection check
Use the mandatory stub-scan commands.
Step 5: Move Group 1 to complete in max-15 chunks
dotnet run --project tools/NatsNet.PortTracker -- feature batch-update --ids "150,183,197,208,209,215,250,251,252,253,258,259,260,261,306" --set-status complete --db porting.db --execute
dotnet run --project tools/NatsNet.PortTracker -- feature batch-update --ids "307,310,316,318" --set-status complete --db porting.db --execute
Step 6: Checkpoint protocol + commit
dotnet build dotnet/
dotnet test dotnet/tests/ZB.MOM.NatsNet.Server.Tests/
git add dotnet/src/ZB.MOM.NatsNet.Server/Accounts/Account.cs \
dotnet/src/ZB.MOM.NatsNet.Server/Accounts/AccountTypes.cs \
dotnet/src/ZB.MOM.NatsNet.Server/NatsServer.Accounts.cs \
porting.db
git commit -m "feat(batch20): implement resolver/latency/account refresh group"
Task 3: Implement Feature Group 2 (19 IDs)
Files:
- Modify:
dotnet/src/ZB.MOM.NatsNet.Server/Accounts/AccountResolver.cs - Modify:
dotnet/src/ZB.MOM.NatsNet.Server/NatsServer.Accounts.cs - Modify:
dotnet/src/ZB.MOM.NatsNet.Server/Accounts/Account.cs
Step 1: Move Group 2 to stub in max-15 chunks
dotnet run --project tools/NatsNet.PortTracker -- feature batch-update --ids "319,320,326,327,328,330,331,334,335,336,337,338,339,341,343" --set-status stub --db porting.db --execute
dotnet run --project tools/NatsNet.PortTracker -- feature batch-update --ids "345,346,347,349" --set-status stub --db porting.db --execute
Step 2: Execute per-feature verification loop for all 19 IDs
For each ID: feature show -> Go source -> implement -> build -> targeted tests.
Step 3: Group build + focused tests
dotnet build dotnet/
dotnet test dotnet/tests/ZB.MOM.NatsNet.Server.Tests/ --filter "FullyQualifiedName~ImplBacklog.AccountTests"
dotnet test dotnet/tests/ZB.MOM.NatsNet.Server.Tests/ --filter "FullyQualifiedName~ImplBacklog.ConfigReloaderTests"
dotnet test dotnet/tests/ZB.MOM.NatsNet.Server.Tests/ --filter "FullyQualifiedName~ImplBacklog.MonitoringHandlerTests"
Step 4: Run stub detection check
Use the mandatory stub-scan commands.
Step 5: Move Group 2 to complete in max-15 chunks
dotnet run --project tools/NatsNet.PortTracker -- feature batch-update --ids "319,320,326,327,328,330,331,334,335,336,337,338,339,341,343" --set-status complete --db porting.db --execute
dotnet run --project tools/NatsNet.PortTracker -- feature batch-update --ids "345,346,347,349" --set-status complete --db porting.db --execute
Step 6: Checkpoint protocol + commit
dotnet build dotnet/
dotnet test dotnet/tests/ZB.MOM.NatsNet.Server.Tests/
git add dotnet/src/ZB.MOM.NatsNet.Server/Accounts/AccountResolver.cs \
dotnet/src/ZB.MOM.NatsNet.Server/NatsServer.Accounts.cs \
dotnet/src/ZB.MOM.NatsNet.Server/Accounts/Account.cs \
porting.db
git commit -m "feat(batch20): implement resolver backends and operator helper paths"
Task 4: Port and Verify Test Wave 1 (18 IDs)
Files:
- Modify:
dotnet/tests/ZB.MOM.NatsNet.Server.Tests/ImplBacklog/AccountTests.Impltests.cs - Modify:
dotnet/tests/ZB.MOM.NatsNet.Server.Tests/ImplBacklog/JwtProcessorTests.Impltests.cs - Modify:
dotnet/tests/ZB.MOM.NatsNet.Server.Tests/ImplBacklog/EventsHandlerTests.Impltests.cs - Modify:
dotnet/tests/ZB.MOM.NatsNet.Server.Tests/ImplBacklog/MonitoringHandlerTests.Impltests.cs
Step 1: Move Wave 1 IDs to stub in max-15 chunks
dotnet run --project tools/NatsNet.PortTracker -- test batch-update --ids "86,87,105,108,1819,1821,1823,1825,1830,1831,1841,1849,1894,307,346" --set-status stub --db porting.db --execute
dotnet run --project tools/NatsNet.PortTracker -- test batch-update --ids "347,2125,2141" --set-status stub --db porting.db --execute
Step 2: Per-test loop for each ID
For each test ID: test show -> read Go test range -> port behavior -> run single test -> verify Passed: 1.
Step 3: Class-level gates
dotnet test dotnet/tests/ZB.MOM.NatsNet.Server.Tests/ --filter "FullyQualifiedName~ImplBacklog.AccountTests"
dotnet test dotnet/tests/ZB.MOM.NatsNet.Server.Tests/ --filter "FullyQualifiedName~ImplBacklog.JwtProcessorTests"
dotnet test dotnet/tests/ZB.MOM.NatsNet.Server.Tests/ --filter "FullyQualifiedName~ImplBacklog.EventsHandlerTests"
dotnet test dotnet/tests/ZB.MOM.NatsNet.Server.Tests/ --filter "FullyQualifiedName~ImplBacklog.MonitoringHandlerTests"
Step 4: Stub scan + move Wave 1 to verified
dotnet run --project tools/NatsNet.PortTracker -- test batch-update --ids "86,87,105,108,1819,1821,1823,1825,1830,1831,1841,1849,1894,307,346" --set-status verified --db porting.db --execute
dotnet run --project tools/NatsNet.PortTracker -- test batch-update --ids "347,2125,2141" --set-status verified --db porting.db --execute
Step 5: Checkpoint protocol + commit
dotnet build dotnet/
dotnet test dotnet/tests/ZB.MOM.NatsNet.Server.Tests/
git add dotnet/tests/ZB.MOM.NatsNet.Server.Tests/ImplBacklog porting.db
git commit -m "test(batch20): verify account jwt events monitoring mapped tests"
Task 5: Port and Verify Test Wave 2 (Config Reload, 40 IDs)
Files:
- Modify:
dotnet/tests/ZB.MOM.NatsNet.Server.Tests/ImplBacklog/ConfigReloaderTests.Impltests.cs
Step 1: Move Wave 2 IDs to stub in max-15 chunks
dotnet run --project tools/NatsNet.PortTracker -- test batch-update --ids "2721,2722,2724,2725,2726,2727,2728,2729,2730,2731,2732,2733,2734,2735,2736" --set-status stub --db porting.db --execute
dotnet run --project tools/NatsNet.PortTracker -- test batch-update --ids "2737,2738,2739,2741,2742,2743,2744,2745,2746,2750,2752,2753,2754,2761,2767" --set-status stub --db porting.db --execute
dotnet run --project tools/NatsNet.PortTracker -- test batch-update --ids "2768,2769,2770,2771,2773,2775,2776,2779,2781,2793" --set-status stub --db porting.db --execute
Step 2: Port in sub-batches of ~10 tests
For each sub-batch: port tests -> run single-test checks -> run full class filter.
Step 3: Class gate
dotnet test dotnet/tests/ZB.MOM.NatsNet.Server.Tests/ --filter "FullyQualifiedName~ImplBacklog.ConfigReloaderTests"
Expected: all 40 mapped IDs passing.
Step 4: Stub scan + move Wave 2 IDs to verified in same 3 chunks
Run the same ID chunks with --set-status verified.
Step 5: Checkpoint protocol + commit
dotnet build dotnet/
dotnet test dotnet/tests/ZB.MOM.NatsNet.Server.Tests/
git add dotnet/tests/ZB.MOM.NatsNet.Server.Tests/ImplBacklog/ConfigReloaderTests.Impltests.cs porting.db
git commit -m "test(batch20): verify config reload mapped tests"
Task 6: Port and Verify Test Wave 3 (40 IDs)
Files:
- Modify:
dotnet/tests/ZB.MOM.NatsNet.Server.Tests/ImplBacklog/NatsConsumerTests.Impltests.cs - Modify:
dotnet/tests/ZB.MOM.NatsNet.Server.Tests/ImplBacklog/JetStreamEngineTests.Impltests.cs - Modify:
dotnet/tests/ZB.MOM.NatsNet.Server.Tests/ImplBacklog/ConcurrencyTests1.Impltests.cs - Modify:
dotnet/tests/ZB.MOM.NatsNet.Server.Tests/ImplBacklog/ConcurrencyTests2.Impltests.cs - Modify:
dotnet/tests/ZB.MOM.NatsNet.Server.Tests/ImplBacklog/MqttExternalTests.Impltests.cs - Modify:
dotnet/tests/ZB.MOM.NatsNet.Server.Tests/ImplBacklog/MqttHandlerTests.Impltests.cs - Modify:
dotnet/tests/ZB.MOM.NatsNet.Server.Tests/ImplBacklog/GatewayHandlerTests.Impltests.cs - Modify:
dotnet/tests/ZB.MOM.NatsNet.Server.Tests/ImplBacklog/JetStreamBatchingTests.Impltests.cs - Modify:
dotnet/tests/ZB.MOM.NatsNet.Server.Tests/ImplBacklog/JetStreamFileStoreTests.Impltests.cs - Modify:
dotnet/tests/ZB.MOM.NatsNet.Server.Tests/ImplBacklog/NatsServerTests.Impltests.cs
Step 1: Move Wave 3 IDs to stub in max-15 chunks
dotnet run --project tools/NatsNet.PortTracker -- test batch-update --ids "1238,1254,1296,1300,1305,1307,1322,1324,1329,1331,1351,1354,1360,1375,1377" --set-status stub --db porting.db --execute
dotnet run --project tools/NatsNet.PortTracker -- test batch-update --ids "1378,1566,1578,1579,1679,1680,1698,1705,1706,1712,1729,1730,1738,2379,2386" --set-status stub --db porting.db --execute
dotnet run --project tools/NatsNet.PortTracker -- test batch-update --ids "2444,2445,2500,2169,2184,2262,683,723,493,2893" --set-status stub --db porting.db --execute
Step 2: Port and verify per class
Run single-test loops and then class filters for each touched class.
Step 3: Class gates
dotnet test dotnet/tests/ZB.MOM.NatsNet.Server.Tests/ --filter "FullyQualifiedName~ImplBacklog.NatsConsumerTests"
dotnet test dotnet/tests/ZB.MOM.NatsNet.Server.Tests/ --filter "FullyQualifiedName~ImplBacklog.JetStreamEngineTests"
dotnet test dotnet/tests/ZB.MOM.NatsNet.Server.Tests/ --filter "FullyQualifiedName~ImplBacklog.ConcurrencyTests"
dotnet test dotnet/tests/ZB.MOM.NatsNet.Server.Tests/ --filter "FullyQualifiedName~ImplBacklog.Mqtt"
dotnet test dotnet/tests/ZB.MOM.NatsNet.Server.Tests/ --filter "FullyQualifiedName~ImplBacklog.GatewayHandlerTests"
dotnet test dotnet/tests/ZB.MOM.NatsNet.Server.Tests/ --filter "FullyQualifiedName~ImplBacklog.JetStreamBatchingTests"
dotnet test dotnet/tests/ZB.MOM.NatsNet.Server.Tests/ --filter "FullyQualifiedName~ImplBacklog.JetStreamFileStoreTests"
dotnet test dotnet/tests/ZB.MOM.NatsNet.Server.Tests/ --filter "FullyQualifiedName~ImplBacklog.NatsServerTests"
Step 4: Stub scan + move Wave 3 IDs to verified in same 3 chunks
Run the same ID chunks with --set-status verified.
Step 5: Checkpoint protocol + commit
dotnet build dotnet/
dotnet test dotnet/tests/ZB.MOM.NatsNet.Server.Tests/
git add dotnet/tests/ZB.MOM.NatsNet.Server.Tests/ImplBacklog porting.db
git commit -m "test(batch20): verify jetstream mqtt concurrency and misc mapped tests"
Task 7: Final Feature Verification, Batch Completion, and Report
Files:
- Modify:
porting.db - Generate:
reports/current.md(via report script)
Step 1: Promote feature groups from complete to verified in max-15 chunks
Group 1:
dotnet run --project tools/NatsNet.PortTracker -- feature batch-update --ids "150,183,197,208,209,215,250,251,252,253,258,259,260,261,306" --set-status verified --db porting.db --execute
dotnet run --project tools/NatsNet.PortTracker -- feature batch-update --ids "307,310,316,318" --set-status verified --db porting.db --execute
Group 2:
dotnet run --project tools/NatsNet.PortTracker -- feature batch-update --ids "319,320,326,327,328,330,331,334,335,336,337,338,339,341,343" --set-status verified --db porting.db --execute
dotnet run --project tools/NatsNet.PortTracker -- feature batch-update --ids "345,346,347,349" --set-status verified --db porting.db --execute
Step 2: Final full gates
dotnet build dotnet/
dotnet test dotnet/tests/ZB.MOM.NatsNet.Server.Tests/
dotnet run --project tools/NatsNet.PortTracker -- batch show 20 --db porting.db
dotnet run --project tools/NatsNet.PortTracker -- batch complete 20 --db porting.db
Expected: batch completion succeeds (or explicit list of blocked IDs).
Step 3: Dependency/report update and commit
dotnet run --project tools/NatsNet.PortTracker -- dependency ready --db porting.db
./reports/generate-report.sh
git add porting.db reports/
git commit -m "chore(batch20): complete accounts resolvers batch"
Evidence Checklist (Use Before Every Status Update)
- Feature/test IDs updated are listed explicitly (<=15 per command).
- Build output captured and green.
- Related test output captured and green.
- Stub scan re-run and no new violations in touched files.
- Any blocked IDs are deferred with explicit reason (no placeholders).