You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
22 findings classified 13A/2B/0C/7D from the Phase 14 review pass; all
actionable items folded into one commit. 7 D's preserved in review.md
\"Action Taken\" column with rationale.
Production code:
- src/NexNet.Testing/Recording/MethodIdMap.cs - doc-comment now points at
the post-rename regression test (#1)
Test-only nexus (src/NexNet.Testing.Tests/EditorAppNexus.cs):
- ListActiveEditors Task.Delay now guarded on CanBeCanceled - happy-path
callers passing CancellationToken.None no longer pay the 200ms tax (#5)
- OnAuthorize override comment now documents AND-semantics, marker-only
behavior, and per-app policy choice rationale (#17)
- ResetAll() XML comment explains why PingCount is omitted (instance-scoped)
and what enabling Parallelizable would race (#10, #21)
- Removed redundant 'using NexNet;' (#20)
Test files:
- AssertionTests + NexusTestHostTests gained [SetUp] ResetAll() for
fixture-convention consistency (#9)
- EditorAppShowcaseTests:
- CT-propagation test loosened to Throws.InstanceOf<OperationCanceledException>
so the test pins the semantic, not the concrete subtype (#7)
- WaitFor_DraftSaved_ResolvesWhenInvoked - producer now runs in Task.Run
with 100ms delay so the waiter actually exercises the async-arrival
path (#2)
- MixedTraffic - pipe + channel now 'await using' for failure-path
safety; assertions tightened with times: 1; added AssertNotReceived
on alice + carol for WhisperReceived (#3, #13)
- StreamEdits_AllOpsCollected - channel now 'await using' (#14)
- New: OpenDocument_NotifiesOthersExceptCaller - pins the EditorJoined
GroupExceptCaller broadcast that fires inside OpenDocument (#4)
- New: Connect_WithoutIdentity_IsRejectedAtHandshake - pins the discovery
that anonymous sessions are rejected at handshake by the framework
(TransportException Authentication failed), not by OnAuthorize (#18)
- Stale '50ms' comment updated to reflect the 200ms delay + CanBeCanceled
guard (#6)
82/82 NexNet.Testing.Tests pass (+2 new tests vs pre-remediation 80).
@@ -197,3 +197,5 @@ Quiescence is the load-bearing primitive that makes negative assertions (`Assert
197
197
| 7 | 2026-05-27 IMPLEMENT | 2026-05-27 IMPLEMENT | Phase 14c complete: replaced HarnessShowcaseTests.cs with EditorAppShowcaseTests.cs (10 tests: SaveDraft broadcast + identity, LeaveDocument GroupExceptCaller, Whisper Client-by-id, BroadcastSystemAnnouncement AsNonAdmin throws / AsAdmin all-broadcast, SaveDraft AsReader throws, ListActiveEditors returns names, ListActiveEditors cancelled-token throws, UploadAttachment byte streaming, StreamEdits channel typed streaming) plus migrated Groups_EmptyGroup_HasNoMembers. **Behavior discovery:** the framework does NOT short-circuit pre-cancelled tokens — the cancel signal is only sent when the client-side CT FIRES during the call. ListActiveEditors gained an `await Task.Delay(200, ct)` so client-side CT cancellation has time to propagate to the server-side CT. 73/73 tests pass. |
| 7 | 2026-05-27 IMPLEMENT | 2026-05-27 IMPLEMENT | Phase 14e complete: pr-body.md sample rewritten from the old JoinGroup/BroadcastToGroup snippet to the new editor-app shape (test #1: OpenDocument + SaveDraft + DraftSaved callback observation across 3 identities). Added a Phase 14 entry to the "Plan items implemented" section; bumped test count from 65 → 80; revised summary to mention the demo rewrite. PR body pushed to GitHub (PR #77). No NexNet.Testing README exists and the main README + docs articles do not mention the testing harness, so nothing else to update. Phase 14 (all 5 sub-phases) complete. Transitioning to REVIEW. |
200
+
| 7 | 2026-05-27 REVIEW | 2026-05-27 REMEDIATE | REVIEW analysis pass on the Phase 14 diff (commits aaa67c7..28921e3) via general-purpose agent. 22 distinct findings after consolidating 5 overlap pairs. Recs: 13A / 2B / 0C / 7D. User accepted all as recommended. Classifications + per-finding "Action Taken" in `review.md`. **Behavior discovery during finding #18:** anonymous (null-identity) sessions are rejected at the handshake by the framework (NexusSession.Receiving returns DisconnectReason.Authentication when Authenticate returns null), so the OnAuthorize `is not TestIdentity` null-identity guard is dead code via this harness's auth path. Documented in test body + Action Taken. |
201
+
| 7 | 2026-05-27 REMEDIATE | 2026-05-27 REMEDIATE | All 13 A's + 2 B's addressed in one commit. Key fixes: ListActiveEditors Task.Delay now guarded on `CanBeCanceled` (test #5 — happy-path callers no longer pay 200ms tax); OnAuthorize AND-semantics + marker-only behavior documented inline (#17); ResetAll comment now explains PingCount omission and the sequential-fixture-execution requirement (#10, #21); `[SetUp]` ResetAll() added to AssertionTests + NexusTestHostTests (#9); CT-propagation test loosened to `Throws.InstanceOf<OperationCanceledException>` (#7); MixedTraffic gained pipe/channel `await using` + `times: 1` + negative WhisperReceived assertions (#3, #13, #14); WaitFor producer now runs in background with 100ms delay (#2); new tests OpenDocument_NotifiesOthersExceptCaller (#4) and Connect_WithoutIdentity_IsRejectedAtHandshake (#18). MethodIdMap doc-comment fixed (#1); stale "50ms" comment updated (#6); `using NexNet;` removed (#20). 82/82 NexNet.Testing.Tests pass (+2 new). |
0 commit comments