diff --git a/src/Core/ZB.MOM.WW.OtOpcUa.Core/Resilience/CapabilityInvoker.cs b/src/Core/ZB.MOM.WW.OtOpcUa.Core/Resilience/CapabilityInvoker.cs
index 6c55d4b1..8b4f5b66 100644
--- a/src/Core/ZB.MOM.WW.OtOpcUa.Core/Resilience/CapabilityInvoker.cs
+++ b/src/Core/ZB.MOM.WW.OtOpcUa.Core/Resilience/CapabilityInvoker.cs
@@ -57,13 +57,7 @@ public sealed class CapabilityInvoker : IDriverCapabilityInvoker
_statusTracker = statusTracker;
}
- /// Execute a capability call returning a value, honoring the per-capability pipeline.
- /// Return type of the underlying driver call.
- /// The driver capability being executed.
- /// The host name for logging and status tracking.
- /// The async function to execute.
- /// Cancellation token for the operation.
- /// The result of the underlying driver call.
+ ///
public async ValueTask ExecuteAsync(
DriverCapability capability,
string hostName,
@@ -87,12 +81,7 @@ public sealed class CapabilityInvoker : IDriverCapabilityInvoker
}
}
- /// Execute a void-returning capability call, honoring the per-capability pipeline.
- /// The driver capability being executed.
- /// The host name for logging and status tracking.
- /// The async function to execute.
- /// Cancellation token for the operation.
- /// A task that represents the asynchronous operation.
+ ///
public async ValueTask ExecuteAsync(
DriverCapability capability,
string hostName,
@@ -116,19 +105,7 @@ public sealed class CapabilityInvoker : IDriverCapabilityInvoker
}
}
- ///
- /// Execute a call honoring
- /// semantics — if is false, retries are disabled regardless
- /// of the tag-level configuration (the pipeline for a non-idempotent write never retries).
- /// If true, the call runs through the capability's pipeline which may
- /// retry when the tier configuration permits.
- ///
- /// Return type of the underlying driver call.
- /// The host name for logging and status tracking.
- /// Whether the write operation is idempotent.
- /// The async function to execute.
- /// Cancellation token for the operation.
- /// The result of the underlying driver write call.
+ ///
public async ValueTask ExecuteWriteAsync(
string hostName,
bool isIdempotent,
diff --git a/src/Drivers/ZB.MOM.WW.OtOpcUa.Driver.S7/IS7Plc.cs b/src/Drivers/ZB.MOM.WW.OtOpcUa.Driver.S7/IS7Plc.cs
index 083b584b..8707a9a1 100644
--- a/src/Drivers/ZB.MOM.WW.OtOpcUa.Driver.S7/IS7Plc.cs
+++ b/src/Drivers/ZB.MOM.WW.OtOpcUa.Driver.S7/IS7Plc.cs
@@ -11,7 +11,7 @@ namespace ZB.MOM.WW.OtOpcUa.Driver.S7;
///
/// The seam exists so can dispose a dead handle and
/// re-open a fresh one after a transient PLC reboot / network blip — the reconnect path
-/// (STAB-1) — and so that path is unit-testable via a fake without a
+/// — and so that path is unit-testable via a fake without a
/// live PLC (S7.Net ships no in-process fake and is sealed). Mirrors
/// the TwinCAT driver's ITwinCATClient / ITwinCATClientFactory pattern.
///
diff --git a/src/Drivers/ZB.MOM.WW.OtOpcUa.Driver.S7/S7Driver.cs b/src/Drivers/ZB.MOM.WW.OtOpcUa.Driver.S7/S7Driver.cs
index fca4b08d..282fecd1 100644
--- a/src/Drivers/ZB.MOM.WW.OtOpcUa.Driver.S7/S7Driver.cs
+++ b/src/Drivers/ZB.MOM.WW.OtOpcUa.Driver.S7/S7Driver.cs
@@ -1172,7 +1172,7 @@ public sealed class S7Driver
///
/// Returns a live S7 connection, lazily disposing a dead handle and re-opening a fresh one
- /// when the previous connection dropped (STAB-1 reconnect path). The fast path returns the
+ /// when the previous connection dropped (the reconnect path). The fast path returns the
/// current when it is still connected and not marked dead; otherwise it
/// builds + opens a new connection via with the same
/// timeout-linked CTS the initial connect uses.
diff --git a/src/Drivers/ZB.MOM.WW.OtOpcUa.Driver.TwinCAT/TwinCATDriver.cs b/src/Drivers/ZB.MOM.WW.OtOpcUa.Driver.TwinCAT/TwinCATDriver.cs
index 0db36c00..4748f844 100644
--- a/src/Drivers/ZB.MOM.WW.OtOpcUa.Driver.TwinCAT/TwinCATDriver.cs
+++ b/src/Drivers/ZB.MOM.WW.OtOpcUa.Driver.TwinCAT/TwinCATDriver.cs
@@ -447,7 +447,7 @@ public sealed class TwinCATDriver : IDriver, IReadable, IWritable, ITagDiscovery
// true, otherwise fall through to the shared PollGroupEngine. Native path registers one
// notification per tag against the target's PLC runtime — the PLC pushes changes on its own
// cycle so we skip the poll loop entirely. Each registration stores its REPLAYABLE INTENT on
- // the owning device so EnsureConnectedAsync can re-register it after a reconnect (STAB-2).
+ // the owning device so EnsureConnectedAsync can re-register it after a reconnect.
public async Task SubscribeAsync(
IReadOnlyList fullReferences, TimeSpan publishingInterval, CancellationToken cancellationToken)
{
@@ -577,6 +577,14 @@ public sealed class TwinCATDriver : IDriver, IReadable, IWritable, ITagDiscovery
private ITwinCATNotificationHandle? _handle;
/// Initializes a new instance of the class.
+ /// Globally-unique registration id (registry key on the device).
+ /// The device this notification is registered against.
+ /// Driver-side full reference the pushed value is reported under.
+ /// ADS symbol name (resolved from the symbol path).
+ /// Declared data type.
+ /// Bit index for a BOOL-within-word symbol; null otherwise.
+ /// Requested notification interval.
+ /// Value-change callback (closes over the owning subscription handle + reference).
public NativeRegistration(long id, DeviceState device, string reference, string symbolName,
TwinCATDataType dataType, int? bitIndex, TimeSpan interval, Action onChange)
{
@@ -627,7 +635,7 @@ public sealed class TwinCATDriver : IDriver, IReadable, IWritable, ITagDiscovery
// A locally-connected client whose wire probe FAILS is wire-dead but port-open:
// force a recycle so the next tick rebuilds + replays native notifications. Without
// this the IsConnected fast-path would keep handing back the dead client forever
- // (the STAB-2 compounding bug — native pushes would never recover).
+ // (the compounding bug — native pushes would never recover).
if (!success)
await RecycleClientAsync(state).ConfigureAwait(false);
}
@@ -716,7 +724,7 @@ public sealed class TwinCATDriver : IDriver, IReadable, IWritable, ITagDiscovery
/// The connect-or-reconnect core, assuming the caller already holds
/// . When it installs a NEW client (a genuine
/// reconnect, not a fast-path reuse) it replays every stored native-notification intent
- /// onto it — otherwise native ADS pushes would silently stop after a drop (STAB-2). Both
+ /// onto it — otherwise native ADS pushes would silently stop after a drop. Both
/// the initial subscribe () and the probe loop call
/// through here under the same gate, so a replay can never race a register.
///
@@ -907,7 +915,7 @@ public sealed class TwinCATDriver : IDriver, IReadable, IWritable, ITagDiscovery
/// Live native-notification registrations against this device, keyed by registration id.
/// Holds the replayable intent (symbol / type / bit / interval / callback), not just
/// an opaque handle, so that when swaps in
- /// a fresh client after a drop it can re-register every notification onto it (STAB-2).
+ /// a fresh client after a drop it can re-register every notification onto it.
/// Populated by SubscribeAsync, drained by UnsubscribeAsync / teardown.
///
public ConcurrentDictionary NativeRegistrations { get; } = new();