docs(index): OtOpcUa Gitea issue sweep #562-#591 — ScadaBridge-visible ACL/alarm-event changes

Claude-Session: https://claude.ai/code/session_01Ef2ozxS7QPanGT8uoATbTe
This commit is contained in:
Joseph Doherty
2026-10-08 01:45:05 -04:00
parent 21a95c7f50
commit 78ca2a6744
@@ -50,3 +50,17 @@ AddRoute of the dev Mac (`oee-tagdump-mac`, `10.181.206.245.1.1`) on the two tes
unrouted MicroLogix `ErrorBadData`). Native AbCip writes remain simulator-proven only; libplctag deletion is blocked on a bench
controller. Follow-ups Gitea #564-#585. Details: OtOpcUa `docs/drivers/AbCip.md` §Transport,
`docs/plans/2026-10-07-native-ab-transport-gate-results.md`.
- **Gitea issue sweep #562-#591 (2026-10-08, OtOpcUa `master` merges `bd2bebed`..`d978573f`).** All open issues resolved, each
independently reviewed where it touched alarms/ACL. **ScadaBridge-visible:** (1) **#563** — an expired or disabled API key is now
refused `WriteOperate` value writes and `AlarmAck` methods (`BadUserAccessDenied`) even with `Security:Acl:Enabled=false`; a key
minted after the last deployment cannot write/ack until a deployment carries it; reads/subscriptions unchanged with the flag off.
(2) **#586/#588** — with ACL **on**, Server-object (`i=2253`) event subscriptions (ScadaBridge's default alarm feed) now receive only
alarms/model-changes the session's grants cover (previously every alarm, ungated); ACL off delivers exactly as before.
(3) **#587** — every method-driven condition transition (Acknowledge/Confirm/AddComment/Enable/Disable/Shelve/Unshelve) now emits
exactly one condition event (previously none); **native (driver) alarms support only Acknowledge + AddComment** — Confirm/Shelve
return `BadNotSupported`, and native `ConfirmedState` stays `true` as before; scripted TimedShelve now works over OPC UA.
(4) **#562** — revoking a grant/key now also stops live alarm subscriptions (reversibly). Also: `ClusterRoleInfo` role-leader race
(#590, a leader could stick at null), AbCip/AbLegacy AdminUI forms now write the `*Ms` timeout keys the drivers actually read and keep
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.