docs(comments): strip internal task/milestone/bundle bookkeeping from code comments

Remove project bookkeeping citations from shipped code comments across the
solution: hyphenated task IDs (WP-14, StoreAndForward-025), milestone/task/
issue refs (M3, Task 4, Audit Log #23, #21), Bundle X task-bundle labels,
and C/D/K/S/T phase labels.

Comment text only — no code logic, string/log literals, or XML-doc structure
changed. Genuine descriptions are preserved (only the citation is stripped),
and technical lookalikes are retained (UTF-8, SHA-256, T00:00:00, M365,
UTC-5, pre-C4/pre-C5 schema versions). Flagged by the new CommentChecker
TaskReferenceInComment / TrackingReferenceInComment checks plus targeted
grep passes; full solution builds clean, append-only guard tests pass.
This commit is contained in:
Joseph Doherty
2026-07-07 11:03:26 -04:00
parent 67005ca4c0
commit 9cff87fe85
435 changed files with 2338 additions and 2547 deletions
@@ -100,7 +100,7 @@ internal static class AlarmTriggerConfigCodec
case AlarmTriggerType.Expression:
model.Expression = TryReadString(root, "expression");
// M9-T28b: read optional analysisKind discriminator ("Strict" → strict;
// Read optional analysisKind discriminator ("Strict" → strict;
// absent/"Advisory"/anything else → Advisory default, preserving
// today's behavior exactly — matches ValidationService.IsStrictAnalysis).
if (root.TryGetProperty("analysisKind", out var ak)
@@ -181,7 +181,7 @@ internal static class AlarmTriggerConfigCodec
case AlarmTriggerType.Expression:
w.WriteString("expression", model.Expression ?? "");
// M9-T28b: emit "analysisKind":"Strict" only when explicitly set;
// Emit "analysisKind":"Strict" only when explicitly set;
// Advisory is the default so the key is omitted to keep the payload
// minimal and backward-compatible with older ValidationService versions.
if (model.IsStrictAnalysisKind)
@@ -357,7 +357,7 @@ internal sealed class AlarmTriggerModel
/// </summary>
public string? Expression { get; set; }
// M9-T28b: per-trigger analysis kind (Expression only). When true the
// Per-trigger analysis kind (Expression only). When true the
// codec serializes "analysisKind":"Strict"; when false (Advisory, the
// default) the key is omitted. Matches ValidationService.IsStrictAnalysis.
/// <summary>
@@ -538,7 +538,7 @@
_thresholdText = FormatNullable(_model.ThresholdPerSecond);
_windowText = FormatNullable(_model.WindowSeconds);
_directionText = _model.Direction;
// M9-T28b: sync the analysis-kind selector from the loaded model.
// Sync the analysis-kind selector from the loaded model.
_analysisKindValue = _model.IsStrictAnalysisKind ? "Strict" : "Advisory";
_loLoText = FormatNullable(_model.LoLo);
_loText = FormatNullable(_model.Lo);
@@ -589,7 +589,7 @@
<div class="form-text">
A boolean C# expression — e.g. <code>Attributes["Temperature"] &gt; 80</code>.
</div>
@* M9-T28b: analysis-kind selector — Advisory (default) keeps the blank-expression
@* Analysis-kind selector — Advisory (default) keeps the blank-expression
finding as a non-blocking warning; Strict escalates it to a deploy-blocking error. *@
<div class="mt-2">
<label for="alarm-trigger-kind" class="form-label small text-uppercase text-muted fw-semibold mb-1">
@@ -612,7 +612,7 @@
await Emit();
}
// M9-T28b: backing field + handler for the Advisory|Strict selector.
// Backing field + handler for the Advisory|Strict selector.
private string _analysisKindValue = "Advisory";
private async Task OnAnalysisKindChanged()
@@ -1,6 +1,6 @@
@inject IJSRuntime JS
@* T34b: dark-mode toggle. Pure JS-interop + localStorage — no DI service and no
@* Dark-mode toggle. Pure JS-interop + localStorage — no DI service and no
server state. The actual theme switch happens in the browser via window.sbTheme
(wwwroot/js/theme.js); this button just drives toggle() and reflects the result.
The page-load default (no-flash) is owned by the inline pre-hydration script in
@@ -25,7 +25,7 @@ public class DialogService : IDialogService
/// </summary>
public DialogState? Current { get; private set; }
// CentralUI-015: the pending dialog result is held in a typed TCS that the
// The pending dialog result is held in a typed TCS that the
// host completes directly via Resolve(). The previous implementation
// projected the result through Task.ContinueWith(..., TaskScheduler.Default),
// which ran the projection lambda on a thread-pool thread. Completing a
@@ -1,6 +1,6 @@
@namespace ZB.MOM.WW.ScadaBridge.CentralUI.Components.Shared
@* M6 (K12) reusable KPI trend chart. Dependency-free inline SVG inside a
@* M6 reusable KPI trend chart. Dependency-free inline SVG inside a
Bootstrap card, styled to sit beside the AuditKpiTiles / SiteCallKpiTiles
KPI cards (card + card-body, small text-muted labels, muted single stroke).
Three states: a ≥2-point polyline chart, a single-sample note, and an
@@ -6,8 +6,8 @@ using ZB.MOM.WW.ScadaBridge.Commons.Types.Kpi;
namespace ZB.MOM.WW.ScadaBridge.CentralUI.Components.Shared;
/// <summary>
/// Reusable dependency-free SVG trend chart for M6 "KPI History &amp; Trends"
/// (Task K12). Renders a <see cref="KpiSeriesPoint"/> series as a single muted
/// Reusable dependency-free SVG trend chart for "KPI History &amp; Trends".
/// Renders a <see cref="KpiSeriesPoint"/> series as a single muted
/// polyline inside a Bootstrap card, with a baseline (x-axis) and value/time
/// labels. No third-party charting library — the project rule is custom Blazor
/// components on Bootstrap CSS only.
@@ -1,6 +1,6 @@
@namespace ZB.MOM.WW.ScadaBridge.CentralUI.Components.Shared
@* T35a — reusable offset-pagination bar. Purely presentational: the host page
@* Reusable offset-pagination bar. Purely presentational: the host page
owns page-number state, query execution, and the HasNextPage decision.
Parameters: Page, PageChanged, HasNextPage, TotalCount, PageSize, Disabled. *@
@@ -1,7 +1,7 @@
namespace ZB.MOM.WW.ScadaBridge.CentralUI.Components.Shared;
/// <summary>
/// Pure helper for windowed pagination (CentralUI-016). Computes the set of
/// Pure helper for windowed pagination. Computes the set of
/// page numbers a pager should render: always the first and last page plus a
/// small range around the current page, with the rest elided. Keeps the
/// rendered button count bounded regardless of the total page count, instead
@@ -43,7 +43,7 @@ internal sealed class ScriptTriggerModel
/// <summary>Fire mode (Conditional + Expression). Defaults to <see cref="ScriptTriggerMode.OnTrue"/>.</summary>
public ScriptTriggerMode Mode { get; set; } = ScriptTriggerMode.OnTrue;
// M9-T28b: per-trigger analysis kind (Expression only). When true the
// Per-trigger analysis kind (Expression only). When true the
// codec serializes "analysisKind":"Strict"; when false (Advisory, the
// default) the key is omitted. Matches ValidationService.IsStrictAnalysis.
/// <summary>
@@ -158,7 +158,7 @@ internal static class ScriptTriggerConfigCodec
case ScriptTriggerKind.Expression:
model.Expression = root.TryGetProperty("expression", out var e) ? e.GetString() : null;
model.Mode = ReadMode(root);
// M9-T28b: read optional analysisKind discriminator (matches
// Read optional analysisKind discriminator (matches
// ValidationService.IsStrictAnalysis — "Strict" case-insensitive → strict;
// absent/"Advisory"/anything else → Advisory default).
if (root.TryGetProperty("analysisKind", out var ak)
@@ -215,7 +215,7 @@ internal static class ScriptTriggerConfigCodec
case ScriptTriggerKind.Expression:
w.WriteString("expression", model.Expression ?? "");
w.WriteString("mode", model.Mode.ToString());
// M9-T28b: emit "analysisKind":"Strict" only when explicitly set;
// Emit "analysisKind":"Strict" only when explicitly set;
// Advisory is the default so the key is omitted to stay backward-compatible.
if (model.IsStrictAnalysisKind)
w.WriteString("analysisKind", "Strict");
@@ -136,7 +136,7 @@
_operator = _model.Operator;
_thresholdText = _model.Threshold?.ToString("R", CultureInfo.InvariantCulture);
(_intervalText, _intervalUnit) = SplitInterval(_model.IntervalMs);
// M9-T28b: sync the analysis-kind selector from the loaded model.
// Sync the analysis-kind selector from the loaded model.
_analysisKindValue = _model.IsStrictAnalysisKind ? "Strict" : "Advisory";
}
@@ -274,7 +274,7 @@
<div class="form-text">
A boolean C# expression — e.g. <code>Attributes["Temperature"] &gt; 80</code>.
</div>
@* M9-T28b: analysis-kind selector — Advisory keeps the blank-expression finding
@* Analysis-kind selector — Advisory keeps the blank-expression finding
as a non-blocking warning; Strict escalates it to a deploy-blocking error. *@
<div class="mt-2">
<label for="script-trigger-kind" class="form-label small text-uppercase text-muted fw-semibold mb-1">
@@ -297,7 +297,7 @@
await Emit();
}
// M9-T28b: backing field + handler for the Advisory|Strict selector.
// Backing field + handler for the Advisory|Strict selector.
private string _analysisKindValue = "Advisory";
private async Task OnAnalysisKindChanged()
@@ -34,7 +34,7 @@ public sealed class TemplateTreeNode
/// <summary>
/// True when this composition node is <em>inherited</em> — its underlying
/// <c>TemplateComposition</c> row belongs to an ancestor of the template it is
/// rendered under, not to that template itself (followup #9). Inherited nodes are
/// rendered under, not to that template itself. Inherited nodes are
/// badged read-only and their context menu suppresses Rename/Delete (those edit the
/// base). Always false for folders and templates.
/// </summary>