Skip to content

audit: phase 2 verification Q01-Q06 (round 01)#523

Closed
samtrion wants to merge 1 commit into
mainfrom
audit/phase2-r01-Q01-Q06
Closed

audit: phase 2 verification Q01-Q06 (round 01)#523
samtrion wants to merge 1 commit into
mainfrom
audit/phase2-r01-Q01-Q06

Conversation

@samtrion

Copy link
Copy Markdown
Contributor

Summary

Phase 2 of the NetEvolve.Pulse audit. Independently verifies the first six quality
assumptions raised in audit/assumptions/round-01-quality.md and ships one failing
TUnit test per CONFIRMED defect.

Status table

Assumption Status Failing test
Q01 OutboxProcessorHostedService captive-dependency (Singleton consumes Scoped) CONFIRMED SingletonScopedCaptiveDependencyTests.cs
Q02 Stuck Status=Processing rows never reaped CONFIRMED StuckProcessingMessagesReaperTests.cs
Q03 OutboxProcessor bypasses TimeProvider CONFIRMED (blocked-by-API) OutboxProcessorTimeProviderTests.cs
Q04 IdempotencyCommandInterceptor is check-then-act, not atomic CONFIRMED IdempotencyConcurrentRaceTests.cs
Q05 ConcurrentCommandGuardInterceptor dispose race + GetOrAdd factory leak NEEDS-NUANCE ConcurrentCommandGuardDisposeRaceTests.cs (dispose-race only)
Q06 KafkaMessageTransport ignores CancellationToken on Flush/IsHealthy CONFIRMED KafkaMessageTransportCancellationTests.cs

Six new tests, six new verification documents in audit/verification/.
All tests compile against the public API on net8.0/net9.0/net10.0 (verified via dotnet build).
The Q03 test is intentionally a reflection-based contract test because the public constructor does
not yet accept a TimeProvider (blocked-by-API).

Phase 3 builders should fix the underlying defects in a follow-up PR; this PR intentionally leaves
the failing tests in place.

Test plan

  • dotnet build tests/NetEvolve.Pulse.Tests.Unit/NetEvolve.Pulse.Tests.Unit.csproj succeeds on net8.0, net9.0, net10.0 (already verified locally)
  • Each new test fails today with the documented assertion
  • Each verification doc cites real file:line evidence

Verifies the first six quality assumptions from
audit/assumptions/round-01-quality.md with fresh file:line evidence and
adds one failing TUnit test per CONFIRMED defect.

Status tally:
- Q01 OutboxProcessorHostedService captive-dependency       CONFIRMED
- Q02 Stuck Processing rows never reaped                    CONFIRMED
- Q03 OutboxProcessor bypasses TimeProvider                 CONFIRMED (blocked-by-API)
- Q04 IdempotencyCommandInterceptor check-then-act race     CONFIRMED
- Q05 ConcurrentCommandGuard dispose race + GetOrAdd leak   NEEDS-NUANCE
- Q06 KafkaMessageTransport ignores CancellationToken       CONFIRMED

Each failing test is tagged with [TestGroup("Audit-Q##")] so Phase 3
builders can target them. Tests intentionally fail today; do not fix
them in this commit.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
@samtrion samtrion requested a review from a team as a code owner May 26, 2026 09:13
@samtrion samtrion requested a review from Spacemonkay May 26, 2026 09:13
@coderabbitai

coderabbitai Bot commented May 26, 2026

Copy link
Copy Markdown
Contributor

Important

Review skipped

Auto reviews are limited based on label configuration.

🏷️ Required labels (at least one) (1)
  • state:ready for merge

Please check the settings in the CodeRabbit UI or the .coderabbit.yaml file in this repository. To trigger a single review, invoke the @coderabbitai review command.

⚙️ Run configuration

Configuration used: Organization UI

Review profile: CHILL

Plan: Pro

Run ID: 90fbb32f-1b4b-4e57-8dbf-fd82d628e059

You can disable this status message by setting the reviews.review_status to false in the CodeRabbit configuration file.

Use the checkbox below for a quick retry:

  • 🔍 Trigger review

Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out.

❤️ Share

Comment @coderabbitai help to get the list of available commands and usage tips.

@samtrion samtrion closed this May 26, 2026
@samtrion samtrion deleted the audit/phase2-r01-Q01-Q06 branch May 26, 2026 09:13
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant