docs(history): OtOpcUa hardware-available issue sweep #593-#625

This commit is contained in:
Joseph Doherty
2026-10-08 09:10:46 -04:00
parent 78ca2a6744
commit a6c4161719
@@ -64,3 +64,17 @@ AddRoute of the dev Mac (`oee-tagdump-mac`, `10.181.206.245.1.1`) on the two tes
unknown keys (#576), Client CLI ack/confirm/shelve/enable/disable target the condition node (previously nonexistent ids), plus
native-transport hardening (#564-#583). Residuals needing hardware: native wide-struct fragmented writes, mixed STRING/array MSP
packing and CIP-level close codes on a real controller.
- **Hardware-available issue sweep #593-#625 (2026-10-08, OtOpcUa `master` `3baa332d..d898262c`).** Every issue reachable on the
sims/docker-dev worked through parallel worktree agents, six adversarial review rounds, fixture runs (AbCip ControlLogix incl. a
200-cycle native lease soak, AbLegacy 13/13, opc-plc, Postgres) and a docker-dev live pass. **ScadaBridge-visible:**
(1) **#610 server-side array writes** — array nodes are now writable where the driver can write the whole array (Modbus within
`maxRegistersPerWrite`, S7 non-Bool/non-wide types, OpcUaClient, Galaxy with a declared `arrayLength`); a numeric CLR list of
another element type (ScadaBridge's `int[]`/`double[]`) is converted element-wise, and the whole write is refused
`BadTypeMismatch` (nothing sent) if any element is out of range, fractional-to-integer or NaN; wrong length ⇒ `BadTypeMismatch`,
`IndexRange` ⇒ `BadWriteNotSupported`; an array to a scalar node is refused only on Modbus/S7. (2) MQTT writes encode the birth's
own Sparkplug datatype; unsupported birth types (Array/DataSet/Template) and `Reference` tags now return **`BadNotSupported`**
(was `BadNotWritable`). (3) Native-alarm ack on a non-Primary node is refused Bad; a commented re-ack is stored as AddComment.
(4) Surgically-added **raw** nodes are now announced (model-change events), so no re-browse is needed. (5) The alarm-history drain
is now also gated on the passive half of a replicating LocalDb pair (no more duplicate historian rows). Also: #609 removed drivers no
longer keep republishing resilience/health telemetry; FetchAndCache serving from `central-2` live-gated with central-1 down
(#619.3). Left open: #600/#601/#606/#613/#619/#622 partials; hardware-only #592/#611/#612/#614-#616.