Generated design docs and implementation plans via Codex for: - Batch 23: Routes - Batch 24: Leaf Nodes - Batch 25: Gateways - Batch 26: WebSocket - Batch 27: JetStream Core - Batch 28: JetStream API - Batch 29: JetStream Batching - Batch 30: Raft Part 1 All plans include mandatory verification protocol and anti-stub guardrails. Updated batches.md with file paths and planned status.
23 KiB
Batch 27 JetStream Core Implementation Plan
For Codex: REQUIRED SUB-SKILL: Use
executeplanto implement this plan task-by-task.
Goal: Port and verify Batch 27 JetStream core behavior (82 features, 77 tests) from server/jetstream.go into .NET without stubs, with evidence-based status updates.
Architecture: Implement JetStream core behavior in grouped waves across NatsServer, Account, JetStream, and JsAccount code paths, then port mapped tests by class waves with strict per-test verification evidence. Promote status only through stub -> complete -> verified after mandatory build/test/stub gates.
Tech Stack: .NET 10, C# latest, xUnit 3, Shouldly, NSubstitute, PortTracker CLI, SQLite (porting.db)
Design doc: docs/plans/2026-02-27-batch-27-jetstream-core-design.md
Batch 27 Scope
- Batch ID:
27 - Dependencies:
5,8,19 - Go source:
golang/nats-server/server/jetstream.go - Feature count:
82 - Test count:
77
Primary source targets:
dotnet/src/ZB.MOM.NatsNet.Server/NatsServer.csdotnet/src/ZB.MOM.NatsNet.Server/NatsServer.Lifecycle.csdotnet/src/ZB.MOM.NatsNet.Server/NatsServerTypes.csdotnet/src/ZB.MOM.NatsNet.Server/Accounts/Account.csdotnet/src/ZB.MOM.NatsNet.Server/JetStream/JetStreamTypes.csdotnet/src/ZB.MOM.NatsNet.Server/JetStream/*.cs(new or existing core behavior files)
Primary test targets:
dotnet/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/JetStreamFileStoreTests.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/JetStreamVersioningTests.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/MessageTracerTests.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 27 must follow this protocol. No exceptions.
Per-Feature Verification Loop (REQUIRED for each feature ID)
- Read mapping and Go span:
dotnet run --project tools/NatsNet.PortTracker -- feature show <feature_id> --db porting.db sed -n '<start_line>,<end_line>p' golang/nats-server/server/jetstream.go - Implement exactly one feature behavior in mapped C# target.
- Build immediately:
dotnet build dotnet/ - Run smallest related test filter (feature-local) and confirm discovery:
dotnet test dotnet/tests/ZB.MOM.NatsNet.Server.Tests/ --filter "FullyQualifiedName~<RelatedClass>" - If green, add feature ID to the current
complete-candidatelist. - If red, fix before touching the next feature ID.
Per-Test Verification Loop (REQUIRED for each test ID)
- Read mapping and Go span:
dotnet run --project tools/NatsNet.PortTracker -- test show <test_id> --db porting.db - Port one test method (Arrange/Act/Assert, calls production code).
- Run single-test filter and capture output:
dotnet test dotnet/tests/ZB.MOM.NatsNet.Server.Tests/ \ --filter "FullyQualifiedName~ZB.MOM.NatsNet.Server.Tests.ImplBacklog.<ClassName>.<MethodName>" \ --verbosity normal - Verify output includes
Passed: 1, Failed: 0(notPassed: 0). - Only then add test ID to
verified-candidatelist.
Stub Detection Check (REQUIRED after each feature group and test class)
rg -n "(NotImplementedException|Assert\.True\(true\)|Assert\.Pass|// TODO|// PLACEHOLDER|throw new Exception\(\"TODO\"\))" \
dotnet/src/ZB.MOM.NatsNet.Server \
dotnet/tests/ZB.MOM.NatsNet.Server.Tests/ImplBacklog
rg -n "^\s*(public|internal|private)\s+.*\)\s*\{\s*\}$" \
dotnet/src/ZB.MOM.NatsNet.Server
Any new match in touched files blocks status promotion.
Build Gate (REQUIRED)
- Required after every feature group and before every status promotion:
dotnet build dotnet/ Build succeededis mandatory.
Test Gate (REQUIRED)
Before setting any feature to verified, all relevant Batch 27 backlog classes touched in the current wave must pass.
Minimum gate commands:
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.EventsHandlerTests"
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.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.JetStreamVersioningTests"
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.MqttHandlerTests"
dotnet test dotnet/tests/ZB.MOM.NatsNet.Server.Tests/ --filter "FullyQualifiedName~ImplBacklog.MessageTracerTests"
dotnet test dotnet/tests/ZB.MOM.NatsNet.Server.Tests/ --filter "FullyQualifiedName~ImplBacklog.ConcurrencyTests1"
dotnet test dotnet/tests/ZB.MOM.NatsNet.Server.Tests/ --filter "FullyQualifiedName~ImplBacklog.ConcurrencyTests2"
dotnet test dotnet/tests/ZB.MOM.NatsNet.Server.Tests/ --filter "FullyQualifiedName~ImplBacklog.NatsServerTests"
Status Update Protocol (REQUIRED, hard limit enforced)
- Max 15 IDs per
feature batch-updateortest batch-updatecommand. - Status progression:
- Start work:
deferred/not_started -> stub - After feature/test evidence:
stub -> complete - After full gate evidence:
complete -> verified
- Start work:
- Evidence required per update chunk:
- latest build success output
- latest relevant test success output
- latest stub-scan output (no unresolved new matches)
Command template:
dotnet run --project tools/NatsNet.PortTracker -- \
feature batch-update --ids "<max-15-ids>" --set-status <stub|complete|verified> --db porting.db --execute
dotnet run --project tools/NatsNet.PortTracker -- \
test batch-update --ids "<max-15-ids>" --set-status <stub|complete|verified> --db porting.db --execute
Checkpoint Protocol Between Tasks (REQUIRED)
At end of every task (before next task):
- Run build gate:
dotnet build dotnet/ - Run test checkpoint:
dotnet test dotnet/tests/ZB.MOM.NatsNet.Server.Tests/ --verbosity normal - Record checkpoint summary (pass/fail/skip, stub scan result, updated IDs).
- Commit checkpoint before next task.
ANTI-STUB GUARDRAILS (NON-NEGOTIABLE)
Forbidden Patterns
The following indicate fake progress and are forbidden in Batch 27 feature/test code:
throw new NotImplementedException()- Empty feature method body (
{ }) for mapped methods Assert.True(true)/ equivalent trivial pass assertionAssert.Pass()// TODOor// PLACEHOLDERin newly ported feature/test method bodies- Returning trivial constants (
null,0,false,string.Empty) where Go behavior is non-trivial - Test methods that do not invoke production code
Hard Limits
- Max
~20features per feature task group. - Max
15IDs per status update command. - One test class at a time for test verification/status promotion.
- No
verifiedupdates when any touched file still contains unresolved stub-pattern matches. - No cross-group status promotion; only update IDs in the active task group.
If You Get Stuck (MANDATORY)
- Stop the current ID immediately.
- Do not leave placeholder code/tests behind.
- Mark blocked item as
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 - Move to next unblocked ID.
- Deferred with reason is correct; stubbing is not.
Feature Group Map (Max ~20 Features Each)
Group 1 (20 IDs): Server Enable/Disable Bootstrap and Account Wiring
1368,1369,1370,1371,1372,1373,1374,1375,1376,1377,1378,1379,1380,1381,1382,1383,1384,1385,1386,1387
Group 2 (19 IDs): Engine State/Getters and Account Enable Core
1388,1389,1390,1391,1392,1394,1396,1397,1398,1399,1400,1401,1402,1403,1404,1405,1406,1407,1408
Group 3 (18 IDs): Usage Foundations and Limits Helpers
1409,1410,1411,1412,1413,1414,1415,1416,1417,1418,1419,1420,1421,1422,1423,1424,1425,1426
Group 4 (17 IDs): jsAccount Limits Enforcement and Resource Accounting
1427,1428,1429,1430,1431,1432,1433,1434,1435,1436,1437,1438,1439,1440,1441,1442,1443
Group 5 (8 IDs): Dynamic Config/Validation/Error Tail
1444,1445,1446,1447,1448,1449,1450,1451
Test Wave Map
Wave A (19 IDs): Cross-Module Small/Medium Classes
100,101,102,314,345,1804,1806,2160,2161,2243,2244,2245,2248,2259,2343,2345,2346,2478,2890
Wave B (17 IDs): Storage/Consumer/Concurrency Support
356,379,389,390,391,392,463,1295,1302,1308,1314,1336,2397,2403,2409,2424,2430
Wave C (41 IDs): JetStreamEngine Heavy Class
1466,1467,1529,1548,1549,1550,1581,1583,1584,1589,1595,1600,1604,1608,1609,1617,1620,1621,1629,1631,1632,1648,1649,1650,1651,1654,1666,1672,1673,1675,1683,1684,1689,1721,1723,1724,1732,1739,1740,1744,1780
Task 1: Preflight, Dependency Gate, and Batch Start
Files:
- Read:
docs/standards/dotnet-standards.md - Read:
docs/plans/2026-02-27-batch-27-jetstream-core-design.md - Read:
golang/nats-server/server/jetstream.go
Step 1: Verify dependency batches are complete
dotnet run --project tools/NatsNet.PortTracker -- batch show 5 --db porting.db
dotnet run --project tools/NatsNet.PortTracker -- batch show 8 --db porting.db
dotnet run --project tools/NatsNet.PortTracker -- batch show 19 --db porting.db
Expected: all required predecessor work for Batch 27 is complete/verified enough to start.
Step 2: Start Batch 27
dotnet run --project tools/NatsNet.PortTracker -- batch start 27 --db porting.db
Step 3: Capture baseline health
dotnet build dotnet/
dotnet test dotnet/tests/ZB.MOM.NatsNet.Server.Tests/
Step 4: Checkpoint commit
git add porting.db
git commit -m "chore(batch27): start jetstream core batch"
Task 2: Implement Feature Group 1 (20 IDs)
Files:
- Modify:
dotnet/src/ZB.MOM.NatsNet.Server/NatsServer*.cs(JetStream lifecycle/config methods) - Modify:
dotnet/src/ZB.MOM.NatsNet.Server/Accounts/Account.cs - Modify/create as needed:
dotnet/src/ZB.MOM.NatsNet.Server/JetStream/*.cs
Step 1: Mark Group 1 IDs as stub (max 15 per call)
dotnet run --project tools/NatsNet.PortTracker -- feature batch-update --ids "1368,1369,1370,1371,1372,1373,1374,1375,1376,1377,1378,1379,1380,1381,1382" --set-status stub --db porting.db --execute
dotnet run --project tools/NatsNet.PortTracker -- feature batch-update --ids "1383,1384,1385,1386,1387" --set-status stub --db porting.db --execute
Step 2: Execute Per-Feature Verification Loop for all 20 IDs
Step 3: Run mandatory stub scan + build gate + targeted test gate
Step 4: Mark Group 1 as complete (chunked)
dotnet run --project tools/NatsNet.PortTracker -- feature batch-update --ids "1368,1369,1370,1371,1372,1373,1374,1375,1376,1377,1378,1379,1380,1381,1382" --set-status complete --db porting.db --execute
dotnet run --project tools/NatsNet.PortTracker -- feature batch-update --ids "1383,1384,1385,1386,1387" --set-status complete --db porting.db --execute
Step 5: Run checkpoint protocol and commit
git add dotnet/src/ZB.MOM.NatsNet.Server porting.db
git commit -m "feat(batch27): implement jetstream bootstrap and account wiring"
Task 3: Implement Feature Group 2 (19 IDs)
Files:
- Modify:
dotnet/src/ZB.MOM.NatsNet.Server/NatsServer*.cs - Modify:
dotnet/src/ZB.MOM.NatsNet.Server/Accounts/Account.cs - Modify:
dotnet/src/ZB.MOM.NatsNet.Server/JetStream/*.cs
Step 1: Mark Group 2 IDs as stub (chunked)
dotnet run --project tools/NatsNet.PortTracker -- feature batch-update --ids "1388,1389,1390,1391,1392,1394,1396,1397,1398,1399,1400,1401,1402,1403,1404" --set-status stub --db porting.db --execute
dotnet run --project tools/NatsNet.PortTracker -- feature batch-update --ids "1405,1406,1407,1408" --set-status stub --db porting.db --execute
Step 2: Execute Per-Feature Verification Loop for all 19 IDs
Step 3: Run mandatory stub scan + build gate + targeted test gate
Step 4: Mark Group 2 as complete (chunked)
dotnet run --project tools/NatsNet.PortTracker -- feature batch-update --ids "1388,1389,1390,1391,1392,1394,1396,1397,1398,1399,1400,1401,1402,1403,1404" --set-status complete --db porting.db --execute
dotnet run --project tools/NatsNet.PortTracker -- feature batch-update --ids "1405,1406,1407,1408" --set-status complete --db porting.db --execute
Step 5: Run checkpoint protocol and commit
git add dotnet/src/ZB.MOM.NatsNet.Server porting.db
git commit -m "feat(batch27): implement jetstream engine state and account enable core"
Task 4: Implement Feature Group 3 (18 IDs)
Files:
- Modify:
dotnet/src/ZB.MOM.NatsNet.Server/Accounts/Account.cs - Modify:
dotnet/src/ZB.MOM.NatsNet.Server/JetStream/*.cs
Step 1: Mark Group 3 IDs as stub (chunked)
dotnet run --project tools/NatsNet.PortTracker -- feature batch-update --ids "1409,1410,1411,1412,1413,1414,1415,1416,1417,1418,1419,1420,1421,1422,1423" --set-status stub --db porting.db --execute
dotnet run --project tools/NatsNet.PortTracker -- feature batch-update --ids "1424,1425,1426" --set-status stub --db porting.db --execute
Step 2: Execute Per-Feature Verification Loop for all 18 IDs
Step 3: Run mandatory stub scan + build gate + targeted test gate
Step 4: Mark Group 3 as complete (chunked)
dotnet run --project tools/NatsNet.PortTracker -- feature batch-update --ids "1409,1410,1411,1412,1413,1414,1415,1416,1417,1418,1419,1420,1421,1422,1423" --set-status complete --db porting.db --execute
dotnet run --project tools/NatsNet.PortTracker -- feature batch-update --ids "1424,1425,1426" --set-status complete --db porting.db --execute
Step 5: Run checkpoint protocol and commit
git add dotnet/src/ZB.MOM.NatsNet.Server porting.db
git commit -m "feat(batch27): implement jetstream usage foundations and limit helpers"
Task 5: Implement Feature Group 4 (17 IDs)
Files:
- Modify:
dotnet/src/ZB.MOM.NatsNet.Server/JetStream/*.cs - Modify:
dotnet/src/ZB.MOM.NatsNet.Server/Accounts/Account.cs
Step 1: Mark Group 4 IDs as stub (chunked)
dotnet run --project tools/NatsNet.PortTracker -- feature batch-update --ids "1427,1428,1429,1430,1431,1432,1433,1434,1435,1436,1437,1438,1439,1440,1441" --set-status stub --db porting.db --execute
dotnet run --project tools/NatsNet.PortTracker -- feature batch-update --ids "1442,1443" --set-status stub --db porting.db --execute
Step 2: Execute Per-Feature Verification Loop for all 17 IDs
Step 3: Run mandatory stub scan + build gate + targeted test gate
Step 4: Mark Group 4 as complete (chunked)
dotnet run --project tools/NatsNet.PortTracker -- feature batch-update --ids "1427,1428,1429,1430,1431,1432,1433,1434,1435,1436,1437,1438,1439,1440,1441" --set-status complete --db porting.db --execute
dotnet run --project tools/NatsNet.PortTracker -- feature batch-update --ids "1442,1443" --set-status complete --db porting.db --execute
Step 5: Run checkpoint protocol and commit
git add dotnet/src/ZB.MOM.NatsNet.Server porting.db
git commit -m "feat(batch27): implement jsaccount limit checks and resource accounting"
Task 6: Implement Feature Group 5 (8 IDs)
Files:
- Modify:
dotnet/src/ZB.MOM.NatsNet.Server/NatsServer*.cs - Modify:
dotnet/src/ZB.MOM.NatsNet.Server/Accounts/Account.cs - Modify:
dotnet/src/ZB.MOM.NatsNet.Server/JetStream/*.cs
Step 1: Mark Group 5 IDs as stub
dotnet run --project tools/NatsNet.PortTracker -- feature batch-update --ids "1444,1445,1446,1447,1448,1449,1450,1451" --set-status stub --db porting.db --execute
Step 2: Execute Per-Feature Verification Loop for all 8 IDs
Step 3: Run mandatory stub scan + build gate + targeted test gate
Step 4: Mark Group 5 as complete
dotnet run --project tools/NatsNet.PortTracker -- feature batch-update --ids "1444,1445,1446,1447,1448,1449,1450,1451" --set-status complete --db porting.db --execute
Step 5: Run checkpoint protocol and commit
git add dotnet/src/ZB.MOM.NatsNet.Server porting.db
git commit -m "feat(batch27): implement jetstream config validation and error tail"
Task 7: Port Test Wave A (19 IDs)
Files:
- Modify backlog class files for:
AccountTests,EventsHandlerTests,MonitoringHandlerTests,JetStreamVersioningTests,MqttHandlerTests,MessageTracerTests,ConcurrencyTests2,NatsServerTests
Step 1: Mark Wave A tests as stub (max 15 IDs)
dotnet run --project tools/NatsNet.PortTracker -- test batch-update --ids "100,101,102,314,345,1804,1806,2160,2161,2243,2244,2245,2248,2259,2343" --set-status stub --db porting.db --execute
dotnet run --project tools/NatsNet.PortTracker -- test batch-update --ids "2345,2346,2478,2890" --set-status stub --db porting.db --execute
Step 2: Execute Per-Test Verification Loop for each ID
Step 3: Class-level gates + stub scans for each touched class
Step 4: Mark Wave A tests verified (chunked)
dotnet run --project tools/NatsNet.PortTracker -- test batch-update --ids "100,101,102,314,345,1804,1806,2160,2161,2243,2244,2245,2248,2259,2343" --set-status verified --db porting.db --execute
dotnet run --project tools/NatsNet.PortTracker -- test batch-update --ids "2345,2346,2478,2890" --set-status verified --db porting.db --execute
Step 5: Checkpoint protocol and commit
git add dotnet/tests/ZB.MOM.NatsNet.Server.Tests/ImplBacklog porting.db
git commit -m "test(batch27): port wave-a cross-module jetstream tests"
Task 8: Port Test Wave B (17 IDs)
Files:
- Modify backlog class files:
JetStreamFileStoreTests,NatsConsumerTests,ConcurrencyTests1
Step 1: Mark Wave B tests as stub (chunked)
dotnet run --project tools/NatsNet.PortTracker -- test batch-update --ids "356,379,389,390,391,392,463,1295,1302,1308,1314,1336,2397,2403,2409" --set-status stub --db porting.db --execute
dotnet run --project tools/NatsNet.PortTracker -- test batch-update --ids "2424,2430" --set-status stub --db porting.db --execute
Step 2: Execute Per-Test Verification Loop for each ID
Step 3: Class-level gates + stub scans for each touched class
Step 4: Mark Wave B tests verified (chunked)
dotnet run --project tools/NatsNet.PortTracker -- test batch-update --ids "356,379,389,390,391,392,463,1295,1302,1308,1314,1336,2397,2403,2409" --set-status verified --db porting.db --execute
dotnet run --project tools/NatsNet.PortTracker -- test batch-update --ids "2424,2430" --set-status verified --db porting.db --execute
Step 5: Checkpoint protocol and commit
git add dotnet/tests/ZB.MOM.NatsNet.Server.Tests/ImplBacklog porting.db
git commit -m "test(batch27): port wave-b filestore-consumer-concurrency tests"
Task 9: Port Test Wave C (JetStreamEngineTests, 41 IDs)
Files:
- Modify:
dotnet/tests/ZB.MOM.NatsNet.Server.Tests/ImplBacklog/JetStreamEngineTests.Impltests.cs
Step 1: Mark Wave C tests as stub (3 chunks)
dotnet run --project tools/NatsNet.PortTracker -- test batch-update --ids "1466,1467,1529,1548,1549,1550,1581,1583,1584,1589,1595,1600,1604,1608,1609" --set-status stub --db porting.db --execute
dotnet run --project tools/NatsNet.PortTracker -- test batch-update --ids "1617,1620,1621,1629,1631,1632,1648,1649,1650,1651,1654,1666,1672,1673,1675" --set-status stub --db porting.db --execute
dotnet run --project tools/NatsNet.PortTracker -- test batch-update --ids "1683,1684,1689,1721,1723,1724,1732,1739,1740,1744,1780" --set-status stub --db porting.db --execute
Step 2: Port in sub-batches of 8-10 tests
For each sub-batch:
- Run per-test verification loop for each method.
- Run class gate for
JetStreamEngineTests. - Run stub scan and assertion-density check.
- If unsupported benchmark/perf/runtime behavior is encountered, defer with reason immediately.
Step 3: Mark verified/deferred with evidence (max 15 IDs per call)
Step 4: Checkpoint protocol and commit
git add dotnet/tests/ZB.MOM.NatsNet.Server.Tests/ImplBacklog porting.db
git commit -m "test(batch27): port jetstream engine heavy test wave"
Task 10: Final Verification, Status Closure, and Batch Completion
Files:
- Modify:
porting.db - Generate:
reports/current.md(via report script)
Step 1: Final feature verification promotion (chunked max 15 IDs)
Promote each feature group from complete -> verified only after all relevant tests are green.
Step 2: Final test status reconciliation
- Ensure every Batch 27 test ID is
verifiedordeferredwith explicit reason.
Step 3: Full repo verification gates
dotnet build dotnet/
dotnet test dotnet/tests/ZB.MOM.NatsNet.Server.Tests/
dotnet test dotnet/tests/ZB.MOM.NatsNet.Server.IntegrationTests/
Step 4: Complete batch + summary checks
dotnet run --project tools/NatsNet.PortTracker -- batch complete 27 --db porting.db
dotnet run --project tools/NatsNet.PortTracker -- batch show 27 --db porting.db
dotnet run --project tools/NatsNet.PortTracker -- report summary --db porting.db
./reports/generate-report.sh
Step 5: Final commit
git add dotnet/src/ZB.MOM.NatsNet.Server dotnet/tests/ZB.MOM.NatsNet.Server.Tests/ImplBacklog porting.db reports/
git commit -m "feat(batch27): complete jetstream core features and mapped tests"
Execution Notes
- Do not execute this plan while dependencies (
5,8,19) are still blocked. - Do not bypass verification protocol for speed.
- Deferred-with-reason is acceptable; stubbed code/tests are not.