Hi Simon,
This looks all good to me, I don't know what you're missing (if you're missing something at all).
I just tried out your setting with a small test database - and it works as expected.
Keep in mind that the SDIS link gets evaluated as part of the processing, so you will not see DISA change unless you process the record.
If you monitor it e.g. with 'camonitor', you will not see anything until your array record changes value (which triggers processing of validdata_get), at which point the monitor shows the old timestamp (as processing did not finish) and STAT as "DISABLE".
Here's a transcript of my camonitor session (I was changing the info_get array and the disable bo from another terminal):
...slot1:_disable_4chunit 2025-06-03 10:29:33.571237 enable
slot1:info_get 2025-06-03 10:30:23.855137 5 1 2 3 4 5
slot1:validdata_get 2025-06-03 10:30:23.855643 Illegal_Value
slot1:_disable_4chunit 2025-06-03 10:31:43.527454 disable
slot1:info_get 2025-06-03 10:32:00.297322 7 1 0 1 0 1 0 1
slot1:validdata_get 2025-06-03 10:30:23.855643 Illegal_Value DISABLE NO_ALARM
slot1:_disable_4chunit 2025-06-03 10:32:25.660065 enable
slot1:info_get 2025-06-03 10:32:38.598718 8 0 1 0 1 0 1 0 1
slot1:validdata_get 2025-06-03 10:32:38.598900 YES
...
Cheers,
~Ralph