docs(s7): point R2-01 at the shipped ConnectionBackoff primitive for the S7 connect throttle (05/STAB-8 seam); B4 complete

This commit is contained in:
Joseph Doherty
2026-07-13 12:20:58 -04:00
parent 86742ad8cb
commit dd01565d9a
2 changed files with 9 additions and 4 deletions
@@ -145,7 +145,7 @@
{
"id": "B4.4",
"subject": "B4: S7 seam comment pointing R2-01 at ConnectionBackoff; suites green; merge PR 4",
"status": "pending",
"status": "completed",
"blockedBy": [
"B4.1",
"B4.2",
@@ -1215,9 +1215,14 @@ public sealed class S7Driver
/// While the PLC is down every data call and probe tick pays a full connect attempt
/// bounded only by <c>_options.Timeout</c> (STAB-8). This method is the single
/// choke-point all S7 reconnects flow through (already gate-serialized), so the
/// fleet-wide connect-attempt throttle planned in R2-09 plugs in here: a
/// last-failed-attempt timestamp checked at the top of the slow path. Deliberately NOT
/// implemented driver-locally — see
/// fleet-wide connect-attempt throttle plugs in here. R2-09 (sub-batch B3/B4) shipped the
/// shared <see cref="ConnectionBackoff"/> primitive
/// (<c>src/Core/…/Core.Abstractions/ConnectionBackoff.cs</c>) — the S7 wiring is a
/// per-driver <c>ConnectionBackoff</c> field consulted with <c>ShouldAttempt(now)</c> at
/// the top of the slow path (fail fast + degrade inside the window) plus
/// <c>RecordFailure</c>/<c>RecordSuccess</c> around the connect, all under <c>_gate</c>
/// (which satisfies the primitive's caller-synchronized contract; TwinCAT/FOCAS/AbCip
/// already wire it this way). Deliberately NOT implemented driver-locally here — owned by
/// <c>archreview/plans/R2-01-s7-fault-hardening-plan.md</c> Finding 3.
/// </para>
/// </remarks>