docs: complete XML doc coverage (returns, summaries, inheritdoc)

Resolve all 622 issues flagged by the enhanced CommentChecker: add missing
<returns> tags (incl. the standard phrasing on non-generic Task methods),
add missing <summary> tags, and replace misused/redundant <inheritdoc/> on
members that override or implement nothing with real documentation.
Documentation-only — no behavior change; solution builds clean.
This commit is contained in:
Joseph Doherty
2026-06-03 11:39:32 -04:00
parent a050170414
commit eabf270d71
208 changed files with 867 additions and 114 deletions
@@ -32,11 +32,7 @@ public sealed class ActiveNodeGate : IActiveNodeGate
_akkaService = akkaService;
}
/// <summary>
/// <c>true</c> only when this node has joined the cluster (<see cref="MemberStatus.Up"/>)
/// AND is the current cluster leader; <c>false</c> in every other state
/// (actor system not yet started, node still joining, node is a standby).
/// </summary>
/// <inheritdoc />
public bool IsActiveNode
{
get
@@ -52,6 +52,7 @@ public static class LoggerConfigurationFactory
/// <param name="siteId">Site identifier added as a log enrichment property.</param>
/// <param name="nodeHostname">Hostname added as a log enrichment property.</param>
/// <param name="warningWriter">Writer that receives the one-shot Host-020 override-warning when both keys are present.</param>
/// <returns>The fully configured <see cref="LoggerConfiguration"/> ready to create the Serilog logger.</returns>
internal static LoggerConfiguration Build(
IConfiguration configuration,
string nodeRole,
@@ -104,6 +105,8 @@ public static class LoggerConfigurationFactory
/// Null/blank values are treated as "unset" and silently default — only
/// explicit-but-invalid values trigger the warning.
/// </summary>
/// <param name="level">Configured level string, possibly null/blank/invalid.</param>
/// <returns>The parsed <see cref="LogEventLevel"/>, or <see cref="LogEventLevel.Information"/> when the value is absent or unrecognised.</returns>
internal static LogEventLevel ParseLevel(string? level)
=> ParseLevel(level, Console.Error);
@@ -114,6 +117,7 @@ public static class LoggerConfigurationFactory
/// </summary>
/// <param name="level">Configured level string, possibly null/blank/invalid.</param>
/// <param name="warningWriter">Writer that receives a single warning line if the value is non-blank but unparseable.</param>
/// <returns>The parsed <see cref="LogEventLevel"/>, or <see cref="LogEventLevel.Information"/> when the value is absent or unrecognised.</returns>
internal static LogEventLevel ParseLevel(string? level, TextWriter warningWriter)
{
if (Enum.TryParse<LogEventLevel>(level, ignoreCase: true, out var parsed))
@@ -28,6 +28,7 @@ public static class StartupRetry
/// <param name="logger">Logger for retry warnings.</param>
/// <param name="isTransient">Optional predicate classifying an exception as transient; null means all exceptions are transient.</param>
/// <param name="cancellationToken">Cancellation token that aborts the retry loop immediately.</param>
/// <returns>A task that completes when the operation succeeds, or faults on a permanent or final-attempt failure.</returns>
public static Task ExecuteWithRetryAsync(
string operationName,
Func<Task> operation,
@@ -45,6 +46,14 @@ public static class StartupRetry
/// <c>IHostApplicationLifetime.ApplicationStopping</c> inside the operation as well
/// as inside the inter-attempt <c>Task.Delay</c>.
/// </summary>
/// <param name="operationName">Human-readable name of the operation, used in log messages.</param>
/// <param name="operation">The async operation to attempt; receives the cancellation token on each try.</param>
/// <param name="maxAttempts">Maximum number of attempts before the exception propagates.</param>
/// <param name="initialDelay">Delay before the second attempt; doubled on each subsequent retry, capped at 30 seconds.</param>
/// <param name="logger">Logger for retry warnings and success messages.</param>
/// <param name="isTransient">Optional predicate classifying an exception as transient; null means all exceptions are transient.</param>
/// <param name="cancellationToken">Token to observe for cancellation; aborts the retry loop immediately.</param>
/// <returns>A task that completes when the operation succeeds, or faults on a permanent or final-attempt failure.</returns>
public static async Task ExecuteWithRetryAsync(
string operationName,
Func<CancellationToken, Task> operation,
@@ -93,6 +102,7 @@ public static class StartupRetry
/// permanent and must fail fast).
/// </summary>
/// <param name="ex">The exception to classify.</param>
/// <returns><c>true</c> if the exception is a transient connection or timeout fault; <c>false</c> otherwise.</returns>
public static bool IsTransientDatabaseFault(Exception ex)
{
// Unwrap a single layer of aggregation so a faulted Task surfaces correctly.