docs(src): add missing XML docs and strip tracking-ID comments

Sweep of 203 source files resolving CommentChecker findings: add
<summary>/<param>/<returns>/<inheritdoc> where missing, and remove
resolved task/issue tracking markers (Tests-NNN, Worker-NNN, Server-NNN,
Task N) from code comments. Comment/doc-only — no logic changes.
Server+Tests build clean under TreatWarningsAsErrors.
This commit is contained in:
Joseph Doherty
2026-07-07 14:09:49 -04:00
parent 8914472706
commit fca978de07
203 changed files with 1834 additions and 1383 deletions
@@ -281,7 +281,7 @@ public sealed class DashboardSnapshotServiceTests
}
/// <summary>
/// Regression for Server-059: the shared library replaces the cache entry via
/// The shared library replaces the cache entry via
/// <c>previous with { ... }</c> at the <b>same</b> Sequence on a steady-state tick and on a
/// refresh failure (Status → Unavailable, LastError set). The dashboard summary must reflect
/// those per-tick-volatile fields, not a summary frozen at the last heavy-refresh sequence —
@@ -356,7 +356,7 @@ public sealed class DashboardSnapshotServiceTests
/// <summary>
/// Verifies that a changed cache Sequence invalidates the memoized template breakdown and the
/// next snapshot reflects the new object set. Guards against an inverted sequence check that
/// would freeze the Galaxy section after its first load (Tests-041).
/// would freeze the Galaxy section after its first load.
/// </summary>
[Fact]
public void GetSnapshot_WhenSequenceChanges_RecomputesTemplateBreakdown()
@@ -405,6 +405,7 @@ public sealed class DashboardSnapshotServiceTests
}
/// <summary>Verifies that snapshot service refreshes API key summaries before each snapshot.</summary>
/// <returns>A task that represents the asynchronous operation.</returns>
[Fact]
public async Task WatchSnapshotsAsync_RefreshesApiKeySummariesBeforeSnapshot()
{
@@ -441,6 +442,7 @@ public sealed class DashboardSnapshotServiceTests
}
/// <summary>Verifies that snapshot service reuses previous summaries when API key refresh fails.</summary>
/// <returns>A task that represents the asynchronous operation.</returns>
[Fact]
public async Task WatchSnapshotsAsync_WhenApiKeyRefreshFails_ReusesPreviousSummaries()
{
@@ -484,6 +486,7 @@ public sealed class DashboardSnapshotServiceTests
}
/// <summary>Verifies that snapshot service disposes cleanly when subscriber cancels.</summary>
/// <returns>A task that represents the asynchronous operation.</returns>
[Fact]
public async Task WatchSnapshotsAsync_WhenSubscriberCancels_DisposesCleanly()
{
@@ -575,31 +578,47 @@ public sealed class DashboardSnapshotServiceTests
private class FakeApiKeyAdminStore : IApiKeyAdminStore
{
/// <inheritdoc />
/// <summary>Does nothing; the fake never persists created keys.</summary>
/// <param name="record">API key record to create.</param>
/// <param name="ct">Cancellation token.</param>
/// <returns>A task that represents the asynchronous operation.</returns>
public Task CreateAsync(ApiKeyRecord record, CancellationToken ct)
{
return Task.CompletedTask;
}
/// <inheritdoc />
/// <summary>Lists API keys; the base fake always returns an empty list.</summary>
/// <param name="ct">Cancellation token.</param>
/// <returns>An empty list of API key summaries.</returns>
public virtual Task<IReadOnlyList<ApiKeyListItem>> ListAsync(CancellationToken ct)
{
return Task.FromResult<IReadOnlyList<ApiKeyListItem>>([]);
}
/// <inheritdoc />
/// <summary>Does nothing; the fake never revokes keys.</summary>
/// <param name="keyId">Key identifier to revoke.</param>
/// <param name="whenUtc">Revocation timestamp.</param>
/// <param name="ct">Cancellation token.</param>
/// <returns><see langword="false"/>, always.</returns>
public Task<bool> RevokeAsync(string keyId, DateTimeOffset whenUtc, CancellationToken ct)
{
return Task.FromResult(false);
}
/// <inheritdoc />
/// <summary>Does nothing; the fake never rotates key secrets.</summary>
/// <param name="keyId">Key identifier to rotate.</param>
/// <param name="newSecretHash">New secret hash.</param>
/// <param name="ct">Cancellation token.</param>
/// <returns><see langword="false"/>, always.</returns>
public Task<bool> RotateAsync(string keyId, byte[] newSecretHash, CancellationToken ct)
{
return Task.FromResult(false);
}
/// <inheritdoc />
/// <summary>Does nothing; the fake never deletes keys.</summary>
/// <param name="keyId">Key identifier to delete.</param>
/// <param name="ct">Cancellation token.</param>
/// <returns><see langword="false"/>, always.</returns>
public Task<bool> DeleteAsync(string keyId, CancellationToken ct)
{
return Task.FromResult(false);
@@ -664,24 +683,16 @@ public sealed class DashboardSnapshotServiceTests
int? processId,
WorkerClientState state) : IWorkerClient
{
/// <summary>
/// Gets the session identifier.
/// </summary>
/// <inheritdoc />
public string SessionId { get; } = sessionId;
/// <summary>
/// Gets the process identifier.
/// </summary>
/// <inheritdoc />
public int? ProcessId { get; } = processId;
/// <summary>
/// Gets the current worker client state.
/// </summary>
/// <inheritdoc />
public WorkerClientState State { get; private set; } = state;
/// <summary>
/// Gets the timestamp of the last heartbeat.
/// </summary>
/// <inheritdoc />
public DateTimeOffset LastHeartbeatAt { get; } = DateTimeOffset.Parse("2026-04-26T10:02:00Z", CultureInfo.InvariantCulture);
/// <summary>
@@ -699,24 +710,14 @@ public sealed class DashboardSnapshotServiceTests
/// </summary>
public int KillCount { get; private set; }
/// <summary>
/// Starts the worker client asynchronously.
/// </summary>
/// <param name="cancellationToken">Cancellation token.</param>
/// <returns>Completed task.</returns>
/// <inheritdoc />
public Task StartAsync(CancellationToken cancellationToken)
{
StartCount++;
return Task.CompletedTask;
}
/// <summary>
/// Invokes a worker command asynchronously.
/// </summary>
/// <param name="command">The command to invoke.</param>
/// <param name="timeout">Command timeout.</param>
/// <param name="cancellationToken">Cancellation token.</param>
/// <returns>Command reply.</returns>
/// <inheritdoc />
public Task<WorkerCommandReply> InvokeAsync(
WorkerCommand command,
TimeSpan timeout,
@@ -725,11 +726,7 @@ public sealed class DashboardSnapshotServiceTests
return Task.FromResult(new WorkerCommandReply());
}
/// <summary>
/// Reads events from the worker asynchronously.
/// </summary>
/// <param name="cancellationToken">Cancellation token.</param>
/// <returns>Async enumerable of worker events.</returns>
/// <inheritdoc />
public async IAsyncEnumerable<WorkerEvent> ReadEventsAsync(
[System.Runtime.CompilerServices.EnumeratorCancellation] CancellationToken cancellationToken)
{
@@ -737,12 +734,7 @@ public sealed class DashboardSnapshotServiceTests
yield break;
}
/// <summary>
/// Shuts down the worker client asynchronously.
/// </summary>
/// <param name="timeout">Shutdown timeout.</param>
/// <param name="cancellationToken">Cancellation token.</param>
/// <returns>Completed task.</returns>
/// <inheritdoc />
public Task ShutdownAsync(
TimeSpan timeout,
CancellationToken cancellationToken)
@@ -752,10 +744,7 @@ public sealed class DashboardSnapshotServiceTests
return Task.CompletedTask;
}
/// <summary>
/// Terminates the worker client.
/// </summary>
/// <param name="reason">Reason for termination.</param>
/// <inheritdoc />
public void Kill(string reason)
{
KillCount++;