docs(xml): fill missing XML doc comments + strip task-tracking refs across src (fixdocs)

Add missing <summary>/<param>/<returns>/<typeparam> tags and switch
interface implementations to <inheritdoc/> across 106 files; strip
project bookkeeping identifiers (Task NN, #05-TNN, PLAN-04, StoreAndForward-0NN)
from shipped code comments while preserving the descriptive rationale.
Comment-only: zero code-logic lines changed; solution builds 0/0.

Claude-Session: https://claude.ai/code/session_01MtdgwpEeCUn6cUA5f1LMPj
This commit is contained in:
Joseph Doherty
2026-07-10 08:23:56 -04:00
parent 75007b9edd
commit 5a878b78d4
106 changed files with 580 additions and 180 deletions
@@ -23,7 +23,7 @@ namespace ZB.MOM.WW.ScadaBridge.StoreAndForward;
/// <item><description>the buffered payload is corrupt (undeserialisable / null) →
/// <see cref="DeliverAsync"/> returns <c>false</c> (the handler contract's
/// permanent-failure signal); the engine parks the row so the payload is preserved
/// for operator forensics. Supersedes StoreAndForward-018's silent discard.</description></item>
/// for operator forensics.</description></item>
/// </list>
///
/// The forward travels over the ClusterClient command/control transport: the handler
@@ -90,8 +90,7 @@ public sealed class NotificationForwarder
PreviewPayload(message.PayloadJson));
// false = permanent failure by the delivery-handler contract → the
// engine parks the row (payload preserved, operator can inspect or
// discard). Supersedes StoreAndForward-018's silent discard, which
// reported the notification as delivered while losing it entirely.
// discard).
return false;
}
@@ -99,6 +99,7 @@ public class StoreAndForwardService
private Func<bool>? _deliveryGate;
/// <summary>Installs the active-node delivery gate (see <see cref="_deliveryGate"/>).</summary>
/// <param name="gate">Predicate returning <c>true</c> when this node should run the retry sweep.</param>
public void SetDeliveryGate(Func<bool> gate) => _deliveryGate = gate;
/// <summary>
@@ -704,8 +705,8 @@ public class StoreAndForwardService
// Group due rows into per-(category,target) lanes. GroupBy is stable, so
// each lane preserves created_at-ASC (oldest-first) order. Lanes run
// concurrently up to SweepTargetParallelism, so one slow/dead target no
// longer blocks delivery to healthy ones (arch review 02, Performance #2);
// within a lane delivery stays strictly sequential (per-target FIFO).
// longer blocks delivery to healthy ones; within a lane delivery stays
// strictly sequential (per-target FIFO).
var lanes = messages
.GroupBy(m => (m.Category, m.Target))
.Select(g => g.ToList())
@@ -719,7 +720,7 @@ public class StoreAndForwardService
{
foreach (var message in lane)
{
// Task 8 short-circuit, per lane: one transient failure means
// Short-circuit, per lane: one transient failure means
// the target is down — skip the rest of this lane this sweep
// rather than burning a full timeout per remaining message.
// Skipped rows keep their RetryCount/LastAttemptAt untouched.
@@ -912,7 +913,7 @@ public class StoreAndForwardService
if (_observerPump is null)
{
// Not started: process inline (preserves pre-Task-19 test behavior).
// Not started: process inline (preserves prior test behavior).
return new ValueTask(work());
}
@@ -85,7 +85,7 @@ public class StoreAndForwardStorage
// reads back ParentExecutionId = null (back-compat).
await AddColumnIfMissingAsync(connection, "parent_execution_id", "TEXT");
// Additively add the epoch-ms sibling of last_attempt_at (Task 18). The
// Additively add the epoch-ms sibling of last_attempt_at. The
// ISO-8601 text column stays authoritative for reads / back-compat; this
// INTEGER column drives the due predicate so the sweep no longer parses
// julianday() per row.
@@ -371,6 +371,7 @@ public class StoreAndForwardStorage
/// <summary>
/// Gets all messages that are due for retry (Pending status, last attempt older than retry interval).
/// </summary>
/// <param name="limit">Maximum number of messages to return, or 0 for no limit.</param>
/// <returns>A task that resolves to the list of messages due for retry, ordered by creation time ascending.</returns>
public async Task<List<StoreAndForwardMessage>> GetMessagesForRetryAsync(int limit = 0)
{