docs(mqtt): flag the Last-Will landmine at the browse-options seam
A will is published by the BROKER, so it is invisible to PublishCountForTest. MqttDriverOptions carries none today, but Sparkplug NDEATH is a will message - once P2 adds it, an ungraceful browse disconnect would fire NDEATH under the plant's own edge-node identity. ToBrowseOptions is where it must be cleared. Claude-Session: https://claude.ai/code/session_01GASWkNEi68FSCtvr6rLoEW
This commit is contained in:
@@ -154,6 +154,15 @@ public sealed class MqttDriverBrowser : IDriverBrowser
|
|||||||
/// Projects the authored options into the ones the browse CONNECT uses. Clean session is
|
/// Projects the authored options into the ones the browse CONNECT uses. Clean session is
|
||||||
/// forced: a transient browse identity must not leave queued-message state behind on the
|
/// forced: a transient browse identity must not leave queued-message state behind on the
|
||||||
/// broker after the picker closes.
|
/// broker after the picker closes.
|
||||||
|
/// <para>
|
||||||
|
/// ⚠ <b>P2 landmine — a Last Will would break the read-only guarantee from outside it.</b>
|
||||||
|
/// <c>MqttDriverOptions</c> carries no will today, so there is nothing to strip. When the
|
||||||
|
/// Sparkplug tasks add one (NDEATH <i>is</i> a will message), it MUST be cleared here: a
|
||||||
|
/// will is published by the <i>broker</i>, not by us, so it is invisible to
|
||||||
|
/// <see cref="MqttBrowseSession.PublishCountForTest"/> — and any ungraceful end to a browse
|
||||||
|
/// session (crash, dropped link, the disconnect deadline expiring) would then fire an
|
||||||
|
/// NDEATH under the plant's own edge-node identity.
|
||||||
|
/// </para>
|
||||||
/// </summary>
|
/// </summary>
|
||||||
/// <param name="options">The authored configuration.</param>
|
/// <param name="options">The authored configuration.</param>
|
||||||
/// <returns>The configuration the browse CONNECT is built from.</returns>
|
/// <returns>The configuration the browse CONNECT is built from.</returns>
|
||||||
|
|||||||
Reference in New Issue
Block a user