Skip to content

Commit a043ec4

Browse files
committed
Replace owned null returns with explicit outcomes
Use ManagedCode.Communication results at null-producing owners and update bound callers, awaited calls and delegates throughout the solution. Preserve successful JSON null scalars in an explicit payload and transfer cache reservations through annotated Try/out ownership. Reconcile the complete 3290-case compiled unit census, including existing omitted cases and current display identities. Confine coverage selectors using TUnit's case-insensitive matching and verify their exact compiled selections in CI. Keep all existing classifications, assertions and numeric coverage thresholds. Check the original ANN capture budget under the generation gate before acquiring its owner after seed capture, so admitted shutdown work observes cancellation before a disposed owner. Validation: complete Debug solution build with -warnaserror; formatter verification; governance, source closure and shard partition checks; exact full census and five coverage selectors; 503 analyzer tests; 215 real process recovery tests; 631 U1 cases; focused SDK/HTTPS model cases; real three-node HTTPS HTTP/2 request identity case; five independent ANN shutdown/no-effects/healthy follow-up executions. Remaining unit shards and full Aspire shards are still running; no complete Linux or coverage qualification is claimed.
1 parent 4e0500c commit a043ec4

965 files changed

Lines changed: 3966 additions & 3593 deletions

File tree

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

‎.github/workflows/build-and-tests.yml‎

Lines changed: 14 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -30,6 +30,20 @@ jobs:
3030
run: node scripts/Features/TestInfrastructure/ci-test-shards.mjs verify
3131
- name: Build
3232
run: dotnet build KeyLoad.slnx -warnaserror
33+
- name: Check compiled unit inventory and coverage selectors
34+
shell: pwsh
35+
run: |
36+
$evidence = Join-Path $PWD 'tests/KeyLoad.UnitTests/bin/Debug/net10.0/ci-inventory'
37+
New-Item -ItemType Directory -Path $evidence -ErrorAction Stop | Out-Null
38+
& ./scripts/Features/CodeQuality/functional-coverage.workflow-discovery.ps1 -Repository $PWD -EvidenceRoot $evidence
39+
- name: Save compiled discovery evidence
40+
if: ${{ always() }}
41+
uses: actions/upload-artifact@v7
42+
with:
43+
name: compiled-unit-discovery
44+
path: tests/KeyLoad.UnitTests/bin/Debug/net10.0/ci-inventory
45+
if-no-files-found: warn
46+
retention-days: 30
3347

3448
shards:
3549
name: Plan test shards

‎benchmarks/KeyLoad.BenchmarkScenarios/Fixtures/Embedded/EmbeddedBenchmarkDatabase.cs‎

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -106,7 +106,7 @@ private static void Require(Result<object> result)
106106
{
107107
if (result.IsFailed)
108108
{
109-
throw Errors.Fail(Errors.Code(result.Problem)!.Value, result.Problem.Detail!);
109+
throw Errors.Fail(Errors.Code(result.Problem).Value!.Value, result.Problem.Detail!);
110110
}
111111
}
112112
}

‎benchmarks/KeyLoad.ComparisonHost/DatabaseAdapters/Cases/AdditionalDatabaseTests.cs‎

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -28,7 +28,7 @@ private static async Task VerifyAsync(IComparisonTarget target, CancellationToke
2828
await using var session = await documents.OpenDocumentSessionAsync(token);
2929
await using var independent = await documents.OpenDocumentSessionAsync(token);
3030
await Assert.That(session.ClientIdentity).IsNotEqualTo(independent.ClientIdentity);
31-
await Assert.That(await session.ReadAsync(corpus.CreateDocument(First), token)).IsNull();
31+
await Assert.That((await session.ReadAsync(corpus.CreateDocument(First), token)).Value).IsNull();
3232
for (var index = First; index < InitialCount; index++)
3333
{
3434
await session.ExecuteAsync(Scenario.DocumentWrite, corpus.CreateDocument(index), token);
@@ -50,14 +50,14 @@ private static async Task VerifyAsync(IComparisonTarget target, CancellationToke
5050
{
5151
await queries.BuildSessionIndexesAsync(token);
5252
await session.ExecuteAsync(Scenario.DocumentDelete, corpus.CreateDocument(Deleted), token);
53-
await Assert.That(await independent.ReadAsync(corpus.CreateDocument(Deleted), token)).IsNull();
53+
await Assert.That((await independent.ReadAsync(corpus.CreateDocument(Deleted), token)).Value).IsNull();
5454
}
5555
await queries.QuerySessionAsync(First, Stable, Single, token);
5656
await VerifyReadbackAsync(session, corpus, target.Supports(Scenario.DocumentDelete), token);
5757
}
5858

5959
private static async Task AssertDocumentAsync(IDocumentComparisonSession session, BenchmarkDocument expected, CancellationToken token)
60-
=> await Assert.That(BenchmarkDataset.SameDocument(await session.ReadAsync(expected, token), expected)).IsTrue();
60+
=> await Assert.That(BenchmarkDataset.SameDocument((await session.ReadAsync(expected, token)).Value, expected)).IsTrue();
6161

6262
private static async Task VerifyReadbackAsync(IDocumentComparisonSession session, DocumentComparisonCorpus corpus,
6363
bool deleted, CancellationToken token)

‎benchmarks/KeyLoad.ComparisonHost/Orchestration/Contracts/IsolatedTeardownFailures.cs‎

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -44,7 +44,7 @@ internal void ThrowIfAny()
4444
return;
4545
}
4646

47-
var fatal = FindFatal(failures);
47+
var fatal = (FindFatal(failures)).Value;
4848
if (fatal is not null)
4949
{
5050
var prioritized = new List<Exception> { fatal };
@@ -66,17 +66,17 @@ private List<Exception> OrderedFailures()
6666
return ordered;
6767
}
6868

69-
private static Exception? FindFatal(IEnumerable<Exception> failures)
69+
private static global::ManagedCode.Communication.Result<Exception?> FindFatal(IEnumerable<Exception> failures)
7070
{
7171
foreach (var failure in failures)
7272
{
7373
var fatal = CqrsRuntimeFailures.FindFatal(failure);
7474
if (fatal is not null)
7575
{
76-
return fatal;
76+
return global::ManagedCode.Communication.Result<Exception?>.Succeed(((Exception?)(fatal)));
7777
}
7878
}
79-
return null;
79+
return global::ManagedCode.Communication.Result<Exception?>.FailNotFound(nameof(FindFatal));
8080
}
8181

8282
private static void AddDistinct(List<Exception> target, IEnumerable<Exception> additions)

‎benchmarks/KeyLoad.ComparisonHost/Orchestration/Fixtures/BenchmarkSessionAspireFixture.cs‎

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -80,8 +80,8 @@ await IsolatedReportAssertions.VerifyModelAsync(
8080
{
8181
await work.StartSettlement();
8282
}
83-
var qualificationFailure = await BenchmarkSessionQualifications.RunAsync(application, selection,
84-
selected, evidence, exit, token);
83+
var qualificationFailure = (await BenchmarkSessionQualifications.RunAsync(application, selection,
84+
selected, evidence, exit, token)).Value;
8585
using var retention = new CancellationTokenSource(execution.Value.TeardownReceiptTimeout, TimeProvider.System);
8686
await BenchmarkSessionManifest.WriteAsync(evidence, selected, exit, qualificationFailure is not null, retention.Token);
8787
if (qualificationFailure is not null)

‎benchmarks/KeyLoad.ComparisonHost/Orchestration/Fixtures/IsolatedOwnedWork.cs‎

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -91,9 +91,9 @@ private async Task DisposeAndJoinAsync(Task registered)
9191
await registered;
9292
try
9393
{
94-
var runnerFailure = await RuntimeComparisonFailure.ObserveAsync(StopRunnerAsync());
95-
var captureFailure = await RuntimeComparisonFailure.ObserveAsync(DisposeCaptureCoreAsync());
96-
var combined = RuntimeComparisonFailure.Combine(runnerFailure, captureFailure is null ? [] : [captureFailure]);
94+
var runnerFailure = (await RuntimeComparisonFailure.ObserveAsync(StopRunnerAsync())).Value;
95+
var captureFailure = (await RuntimeComparisonFailure.ObserveAsync(DisposeCaptureCoreAsync())).Value;
96+
var combined = (RuntimeComparisonFailure.Combine(runnerFailure, captureFailure is null ? [] : [captureFailure])).Value;
9797
if (combined is not null)
9898
{
9999
ExceptionDispatchInfo.Capture(combined).Throw();

‎benchmarks/KeyLoad.ComparisonHost/Orchestration/Reporting/BenchmarkSessionQualifications.cs‎

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -27,7 +27,7 @@ internal static class BenchmarkSessionQualifications
2727
private const string Correctness = "execution-correctness";
2828
private static readonly JsonSerializerOptions Json = new(JsonSerializerDefaults.Web);
2929

30-
internal static async Task<Exception?> RunAsync(DistributedApplication application,
30+
internal static async Task<global::ManagedCode.Communication.Result<Exception?>> RunAsync(DistributedApplication application,
3131
BenchmarkSessionSelection selection, BenchmarkSessionCallerOptions selected, string evidence,
3232
int runtimeExit, CancellationToken token)
3333
{
@@ -51,9 +51,9 @@ await InvokeAsync(Correctness, applicable: true,
5151
await WriteAsync(evidence, report);
5252
return failures.Count switch
5353
{
54-
EmptyCount => null,
55-
SingleItemCount => failures[EmptyCount],
56-
_ => new AggregateException(failures)
54+
EmptyCount => global::ManagedCode.Communication.Result<Exception?>.FailNotFound(nameof(RunAsync)),
55+
SingleItemCount => global::ManagedCode.Communication.Result<Exception?>.Succeed(((Exception?)(failures[EmptyCount]))),
56+
_ => global::ManagedCode.Communication.Result<Exception?>.Succeed((Exception?)(new AggregateException(failures)))
5757
};
5858
}
5959

‎benchmarks/KeyLoad.ComparisonHost/Orchestration/Scenarios/IsolatedTeardown.cs‎

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -85,14 +85,14 @@ await IsolatedOriginalTaskSettlement.RunAsync(
8585

8686
internal static async Task SettleOwnerDisposalAsync(Task original, Task disposal)
8787
{
88-
var primary = await RuntimeComparisonFailure.ObserveAsync(original);
89-
var cleanup = await RuntimeComparisonFailure.ObserveAsync(disposal);
88+
var primary = (await RuntimeComparisonFailure.ObserveAsync(original)).Value;
89+
var cleanup = (await RuntimeComparisonFailure.ObserveAsync(disposal)).Value;
9090
if (cleanup is null || ContainsAllFailures(primary, cleanup))
9191
{
9292
// A repeated await of the same execution completion must not replace its already retained teardown failure.
9393
return;
9494
}
95-
var combined = RuntimeComparisonFailure.Combine(primary, [cleanup]);
95+
var combined = (RuntimeComparisonFailure.Combine(primary, [cleanup])).Value;
9696
ExceptionDispatchInfo.Capture(combined!).Throw();
9797
}
9898

‎benchmarks/KeyLoad.ComparisonHost/Orchestration/Scenarios/IsolatedTeardownSupport.cs‎

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -12,14 +12,14 @@ internal static class IsolatedTeardownSupport
1212
internal static async Task CollectFailureAsync(Func<Task> operation, List<Exception> failures)
1313
{
1414
var initiation = StartAsync(operation);
15-
var failure = await RuntimeComparisonFailure.ObserveAsync(initiation);
15+
var failure = (await RuntimeComparisonFailure.ObserveAsync(initiation)).Value;
1616
if (failure is not null)
1717
{
1818
AddOriginalFailures(initiation, failure, failures);
1919
return;
2020
}
2121
var original = await initiation;
22-
failure = await RuntimeComparisonFailure.ObserveAsync(original);
22+
failure = (await RuntimeComparisonFailure.ObserveAsync(original)).Value;
2323
if (failure is not null)
2424
{
2525
AddOriginalFailures(original, failure, failures);

‎benchmarks/KeyLoad.ComparisonHost/Session/Lifecycle/BenchmarkSessionFixtureDisposal.cs‎

Lines changed: 7 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -10,17 +10,17 @@ internal static class BenchmarkSessionFixtureDisposal
1010
internal static async ValueTask CompleteAsync(Task original, IAsyncDisposable? runtimeOwner, IDisposable? configuration)
1111
{
1212
ArgumentNullException.ThrowIfNull(original);
13-
var primary = await RuntimeComparisonFailure.ObserveAsync(original);
13+
var primary = (await RuntimeComparisonFailure.ObserveAsync(original)).Value;
1414
var cleanup = ImmutableArray.CreateBuilder<Exception>();
15-
if (await RuntimeComparisonFailure.ObserveAsync(RuntimeDisposeAsync(runtimeOwner)) is { } runtimeFailure)
15+
if ((await RuntimeComparisonFailure.ObserveAsync(RuntimeDisposeAsync(runtimeOwner))).Value is { } runtimeFailure)
1616
{
1717
cleanup.Add(runtimeFailure);
1818
}
19-
if (await RuntimeComparisonFailure.ObserveAsync(DisposeConfigurationAsync(configuration)) is { } configurationFailure)
19+
if ((await RuntimeComparisonFailure.ObserveAsync(DisposeConfigurationAsync(configuration))).Value is { } configurationFailure)
2020
{
2121
cleanup.Add(configurationFailure);
2222
}
23-
if (RuntimeComparisonFailure.Combine(primary, cleanup.ToImmutable()) is { } combined)
23+
if ((RuntimeComparisonFailure.Combine(primary, cleanup.ToImmutable())).Value is { } combined)
2424
{
2525
ExceptionDispatchInfo.Capture(combined).Throw();
2626
}
@@ -30,9 +30,9 @@ internal static async Task RetainFailureAsync(Exception original, Task retention
3030
{
3131
ArgumentNullException.ThrowIfNull(original);
3232
ArgumentNullException.ThrowIfNull(retention);
33-
var retentionFailure = await RuntimeComparisonFailure.ObserveAsync(retention);
34-
var combined = RuntimeComparisonFailure.Combine(original,
35-
retentionFailure is null ? [] : [retentionFailure]);
33+
var retentionFailure = (await RuntimeComparisonFailure.ObserveAsync(retention)).Value;
34+
var combined = (RuntimeComparisonFailure.Combine(original,
35+
retentionFailure is null ? [] : [retentionFailure])).Value;
3636
ExceptionDispatchInfo.Capture(combined!).Throw();
3737
}
3838

0 commit comments

Comments
 (0)