docs: add XML doc comments across src + Sister Projects section in CLAUDE.md

Bulk CommentChecker pass: fills in <param>/<inheritdoc> tags on public
APIs across all 23 src/ projects so the doc-coverage gate is green. Also
adds a Sister Projects section to CLAUDE.md pointing at the MxAccess
Gateway and OtOpcUa sibling repos, and gitignores local credential
captures (*login*.txt) and the wonder-app-vd03 deploy/ artifacts.
This commit is contained in:
Joseph Doherty
2026-05-28 01:55:24 -04:00
parent 6731845473
commit 1eb6e972b0
381 changed files with 5788 additions and 532 deletions
@@ -15,18 +15,31 @@ namespace ScadaLink.CLI.Commands;
/// </summary>
public sealed class AuditQueryArgs
{
/// <summary>Start time spec (relative like 1h, or absolute ISO-8601).</summary>
public string? Since { get; set; }
/// <summary>End time spec (relative like 7d, or absolute ISO-8601).</summary>
public string? Until { get; set; }
/// <summary>Multi-valued channel filter.</summary>
public string[] Channel { get; set; } = Array.Empty<string>();
/// <summary>Multi-valued audit event kind filter.</summary>
public string[] Kind { get; set; } = Array.Empty<string>();
/// <summary>Multi-valued status filter.</summary>
public string[] Status { get; set; } = Array.Empty<string>();
/// <summary>Multi-valued site ID filter.</summary>
public string[] Site { get; set; } = Array.Empty<string>();
/// <summary>Target system or service filter.</summary>
public string? Target { get; set; }
/// <summary>Actor (user or system) filter.</summary>
public string? Actor { get; set; }
/// <summary>Operation correlation ID filter.</summary>
public string? CorrelationId { get; set; }
/// <summary>Script execution ID filter.</summary>
public string? ExecutionId { get; set; }
/// <summary>Parent execution ID filter.</summary>
public string? ParentExecutionId { get; set; }
/// <summary>Filter for errors only (status=Failed).</summary>
public bool ErrorsOnly { get; set; }
/// <summary>Page size for pagination.</summary>
public int PageSize { get; set; } = 100;
}
@@ -45,6 +58,8 @@ public static class AuditQueryHelpers
/// relative offset (<c>30s</c>, <c>15m</c>, <c>1h</c>, <c>7d</c>) interpreted as
/// <paramref name="now"/> minus the offset, or an absolute ISO-8601 timestamp.
/// </summary>
/// <param name="spec">The time specification string.</param>
/// <param name="now">The current time used as reference for relative specs.</param>
/// <exception cref="FormatException">The spec is neither a known relative form nor a parseable ISO-8601 timestamp.</exception>
public static DateTimeOffset ResolveTimeSpec(string spec, DateTimeOffset now)
{
@@ -84,6 +99,10 @@ public static class AuditQueryHelpers
/// server's multi-value <c>IN (…)</c> filter receives the full set. <c>--errors-only</c>
/// maps to a single <c>status=Failed</c> and overrides any explicit <c>--status</c>.
/// </summary>
/// <param name="args">The audit query arguments.</param>
/// <param name="now">The current time for resolving relative time specs.</param>
/// <param name="afterOccurredAtUtc">Optional keyset cursor timestamp.</param>
/// <param name="afterEventId">Optional keyset cursor event ID.</param>
public static string BuildQueryString(
AuditQueryArgs args, DateTimeOffset now, DateTimeOffset? afterOccurredAtUtc, string? afterEventId)
{
@@ -144,6 +163,12 @@ public static class AuditQueryHelpers
/// follows <c>nextCursor</c> until the server returns a null cursor. Returns the
/// process exit code (0 success, non-zero on HTTP/transport error).
/// </summary>
/// <param name="client">The management HTTP client.</param>
/// <param name="args">The audit query arguments.</param>
/// <param name="fetchAll">Whether to follow pagination cursors.</param>
/// <param name="formatter">The audit result formatter.</param>
/// <param name="output">The output writer for results.</param>
/// <param name="now">The current time for resolving relative time specs.</param>
public static async Task<int> RunQueryAsync(
ManagementHttpClient client,
AuditQueryArgs args,