Server: array writes; decide ValueRank > 1 #610

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

The applier forces every array tag read-only ("array writes are out of scope") although Modbus has array/coil-array write paths; multi-dimensional arrays unsupported.
Sources: docs/Uns.md:317-318; AddressSpaceApplier.cs:898,1046; S7Driver.cs:467,1807; code-reviews/Driver.S7/findings.md (S7-016, Deferred).

  • Lift forced read-only for drivers that implement array writes; OPC UA array-write path test
  • S7 array writes + AdminUI/DTO field (S7-016)
  • Decide whether ValueRank > 1 is in scope

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

The applier forces every array tag read-only ("array writes are out of scope") although Modbus has array/coil-array write paths; multi-dimensional arrays unsupported. Sources: docs/Uns.md:317-318; AddressSpaceApplier.cs:898,1046; S7Driver.cs:467,1807; code-reviews/Driver.S7/findings.md (S7-016, Deferred). - [ ] Lift forced read-only for drivers that implement array writes; OPC UA array-write path test - [ ] S7 array writes + AdminUI/DTO field (S7-016) - [ ] Decide whether ValueRank > 1 is in scope _Filed 2026-10-08 by the pending/deferred-work sweep after the #562–#591 issue sweep._
dohertj2 added the driver/s7 label 2026-10-08 02:31:13 -04:00
Author
Owner

Resolved on master (merge b7a48e2b; reviews R4 a702875d and R6 31346f1e).

  • Forced read-only lifted for drivers that implement array writes: DriverArrayWriteSupport capability gates it per driver (18f8eb5d); ArrayWritable added to the surgical whitelist and the UNS Backing mirror. Shape and IndexRange refusals, over-the-wire test coverage. Review hardening: exact element-type match (BadTypeMismatch, nothing sent) and Modbus writability bounded by the register/coil cap (dabd8eb9); numeric arrays then converted element-wise (checked) so ScadaBridge CLR-list writes work, refusing out-of-range/fractional/NaN, with the array-to-scalar refusal scoped to Modbus/S7 (52708bff). The Galaxy encoder refuses uint[]/ulong[]; Galaxy arrays without a declared length stay read-only.
  • S7 array writes (contiguous block write; writable Bool arrays refused) and author-time validation in S7TagConfigModel (82372f16, 439752d3); the DTO half of S7-016 was already stale. S7-016 note updated.
  • ValueRank > 1: out of scope by decision, documented in docs/Uns.md.

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

Resolved on master (merge b7a48e2b; reviews R4 a702875d and R6 31346f1e). - [x] Forced read-only lifted for drivers that implement array writes: `DriverArrayWriteSupport` capability gates it per driver (18f8eb5d); `ArrayWritable` added to the surgical whitelist and the UNS Backing mirror. Shape and IndexRange refusals, over-the-wire test coverage. Review hardening: exact element-type match (BadTypeMismatch, nothing sent) and Modbus writability bounded by the register/coil cap (dabd8eb9); numeric arrays then converted element-wise (checked) so ScadaBridge CLR-list writes work, refusing out-of-range/fractional/NaN, with the array-to-scalar refusal scoped to Modbus/S7 (52708bff). The Galaxy encoder refuses uint[]/ulong[]; Galaxy arrays without a declared length stay read-only. - [x] S7 array writes (contiguous block write; writable Bool arrays refused) and author-time validation in `S7TagConfigModel` (82372f16, 439752d3); the DTO half of S7-016 was already stale. S7-016 note updated. - [x] ValueRank > 1: **out of scope by decision**, documented in docs/Uns.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#610