Driver fleet round-3 batch (archreview r3 item 8) + deliberate health asymmetries #602

Closed
opened 2026-10-08 02:31:11 -04:00 by dohertj2 · 1 comment
Owner

Sources: archreview/00-OVERALL.md:119; S7Driver.cs:1895-1912 (ConnectionBackoff not wired); docs/plans/2026-08-17-perf-followups-r3.md (Follow-up register).

  • Wire ConnectionBackoff into S7 EnsureConnectedAsync (STAB-21)
  • S7 write-pass outcome accumulator (STAB-22)
  • Sql typed-parameter binding + integer-key fixture leg (STAB-24)
  • MTConnect pump generation stamp (STAB-20)
  • FOCAS/AbLegacy loop joins (STAB-23/6)
  • MQTT write honesty + claim backoff (STAB-25/26/27)
  • ILoggerFactory on the four silent factories (CONV-3)
  • Worst-state-wins health for Modbus + the S7 write path; S7 _health → Volatile idiom

Filed 2026-10-08 by the pending/deferred-work sweep after the #562–#591 issue sweep.

Sources: archreview/00-OVERALL.md:119; S7Driver.cs:1895-1912 (ConnectionBackoff not wired); docs/plans/2026-08-17-perf-followups-r3.md (Follow-up register). - [ ] Wire `ConnectionBackoff` into S7 `EnsureConnectedAsync` (STAB-21) - [ ] S7 write-pass outcome accumulator (STAB-22) - [ ] Sql typed-parameter binding + integer-key fixture leg (STAB-24) - [ ] MTConnect pump generation stamp (STAB-20) - [ ] FOCAS/AbLegacy loop joins (STAB-23/6) - [ ] MQTT write honesty + claim backoff (STAB-25/26/27) - [ ] `ILoggerFactory` on the four silent factories (CONV-3) - [ ] Worst-state-wins health for Modbus + the S7 write path; S7 `_health` → `Volatile` idiom _Filed 2026-10-08 by the pending/deferred-work sweep after the #562–#591 issue sweep._
dohertj2 added the cross-driverdriver/s7 labels 2026-10-08 02:31:11 -04:00
Author
Owner

Resolved on master. All eight items:

  • STAB-21 S7 ConnectionBackoff in EnsureConnectedAsync; probe also honours it (82372f16; e77bca38 in merge c1207949).
  • STAB-22 S7 write-pass worst-state accumulator; a clean read no longer erases a write-side Faulted; _health on the Volatile idiom (82372f16, merge 80ed056d).
  • STAB-24 Sql: string keys bind untyped on Postgres so integer key columns compare (71881163). Run against the Postgres fixture: 7/7 including the integer-key leg.
  • STAB-20 MTConnect: /sample pump stamped with its session generation, superseded pump joined; publish and generation bump made atomic (e76df074, 76284028).
  • STAB-23/6 FOCAS and AbLegacy loops joined on shutdown (5a5c80ee); the dead init join removed and Dispose join tested (76284028).
  • STAB-25/26/27 MQTT: birth-typed Sparkplug writes, QoS 1 for plain writes, claim backoff (1f4f4fca, 275b240e, babc4527).
  • CONV-3 ILoggerFactory on the silent factories: S7 (e3cb2dd5), FOCAS and TwinCAT (9c39f2b6; FocasFactoryLoggerTests, TwinCATFactoryLoggerTests); AbCip was already done.
  • Worst-state-wins health: S7 write path done; for Modbus the per-tag last-writer-wins stamping is recorded as a deliberate asymmetry (docs/drivers/Modbus.md) because the comms-loss watchdog keys on LastSuccessfulRead and a per-pass accumulator would risk the Degraded latch semantics.
  • S7-016 (array writes and author-time validation in S7TagConfigModel) landed with #610 (439752d3).

Not covered here and left as is: Driver.FOCAS-014 (spindle-load truncation), which is bench-CNC gated and stays Deferred in code-reviews/Driver.FOCAS/findings.md.

Closed 2026-10-08 by the hardware-available issue sweep (master d898262c).

Resolved on master. All eight items: - [x] STAB-21 S7 `ConnectionBackoff` in `EnsureConnectedAsync`; probe also honours it (82372f16; e77bca38 in merge c1207949). - [x] STAB-22 S7 write-pass worst-state accumulator; a clean read no longer erases a write-side Faulted; `_health` on the Volatile idiom (82372f16, merge 80ed056d). - [x] STAB-24 Sql: string keys bind untyped on Postgres so integer key columns compare (71881163). Run against the Postgres fixture: 7/7 including the integer-key leg. - [x] STAB-20 MTConnect: /sample pump stamped with its session generation, superseded pump joined; publish and generation bump made atomic (e76df074, 76284028). - [x] STAB-23/6 FOCAS and AbLegacy loops joined on shutdown (5a5c80ee); the dead init join removed and Dispose join tested (76284028). - [x] STAB-25/26/27 MQTT: birth-typed Sparkplug writes, QoS 1 for plain writes, claim backoff (1f4f4fca, 275b240e, babc4527). - [x] CONV-3 ILoggerFactory on the silent factories: S7 (e3cb2dd5), FOCAS and TwinCAT (9c39f2b6; `FocasFactoryLoggerTests`, `TwinCATFactoryLoggerTests`); AbCip was already done. - [x] Worst-state-wins health: S7 write path done; for Modbus the per-tag last-writer-wins stamping is recorded as a **deliberate asymmetry** (docs/drivers/Modbus.md) because the comms-loss watchdog keys on `LastSuccessfulRead` and a per-pass accumulator would risk the Degraded latch semantics. - S7-016 (array writes and author-time validation in `S7TagConfigModel`) landed with #610 (439752d3). Not covered here and left as is: Driver.FOCAS-014 (spindle-load truncation), which is bench-CNC gated and stays Deferred in code-reviews/Driver.FOCAS/findings.md. *Closed 2026-10-08 by the hardware-available issue sweep (master d898262c).*
Sign in to join this conversation.
1 Participants
Notifications
Due Date
No due date set.
Dependencies

No dependencies set.

Reference: dohertj2/lmxopcua#602