From 78ca2a67441e6e5d1381002d1351d43bacaa731a Mon Sep 17 00:00:00 2001 From: Joseph Doherty Date: Thu, 8 Oct 2026 01:45:05 -0400 Subject: [PATCH] =?UTF-8?q?docs(index):=20OtOpcUa=20Gitea=20issue=20sweep?= =?UTF-8?q?=20#562-#591=20=E2=80=94=20ScadaBridge-visible=20ACL/alarm-even?= =?UTF-8?q?t=20changes?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Claude-Session: https://claude.ai/code/session_01Ef2ozxS7QPanGT8uoATbTe --- .claude/skills/sister-project-history/otopcua.md | 14 ++++++++++++++ 1 file changed, 14 insertions(+) diff --git a/.claude/skills/sister-project-history/otopcua.md b/.claude/skills/sister-project-history/otopcua.md index ff68168..74c809e 100644 --- a/.claude/skills/sister-project-history/otopcua.md +++ b/.claude/skills/sister-project-history/otopcua.md @@ -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.