diff --git a/docs/plans/alarms-over-gateway.md b/docs/plans/alarms-over-gateway.md index e41ee0f..74b77a7 100644 --- a/docs/plans/alarms-over-gateway.md +++ b/docs/plans/alarms-over-gateway.md @@ -1,16 +1,32 @@ # Plan — alarms over the mxaccessgw gateway -> ✅ **Completed 2026-04-30 — historical record.** -> The 14-PR sequence (A.1 / A.3, B.1 / B.2 / B.3 / B.4, C.1 / C.2, -> E.1 / E.2 / E.3 / E.4 / E.5 / E.6 / E.7) shipped. The gateway-side -> public RPC surface, the driver-native ack path, the sidecar alarm -> historian writer, and the five client SDKs are all live. **A.2** -> (worker MxAccess alarm subscription) and **A.4** (worker -> ConditionRefresh command) require the AVEVA worker host's MxAccess -> Toolkit C++ SDK and ship as a follow-up gated on dev-rig -> validation. **D.1** (refresh `C:\publish` + smoke-run on the dev -> rig) ships once A.2 is hardware-verified. The remainder of this -> document is preserved as the design record. +> ✅ **All 19 PRs merged 2026-04-30 — historical record.** +> A.1 / A.2 / A.3 / A.4 (gateway proto + handlers + worker scaffold), +> B.1 / B.2 / B.3 / B.4 / B.5 (driver, server, docs), C.1 / C.2 +> (sidecar alarm historian writer), D.1 (deploy script), +> E.1 / E.2 / E.3 / E.4 / E.5 / E.6 / E.7 (5 client SDKs + lmxopcua +> client surface). Public contract surface is live; client SDKs ship +> the new RPCs; the sub-attribute fallback path keeps Galaxy alarms +> functional today. +> +> ⚠️ **Worker-side native alarm subscription blocked on a dev-rig +> finding (2026-04-30):** the MXAccess COM Toolkit at +> `C:\Program Files (x86)\ArchestrA\Framework\Bin\ArchestrA.MXAccess.dll` +> exposes no alarm-event family — only `OnDataChange`, +> `OnWriteComplete`, `OperationComplete`, `OnBufferedDataChange`. +> AVEVA's `aaAlarmManagedClient` / `ArchestrAAlarmsAndEvents.SDK` +> assemblies are x64-only and incompatible with the worker's x86 +> bitness. **Operator decision needed before +> `MX_EVENT_FAMILY_ON_ALARM_TRANSITION` carries any events:** either +> accept the value-driven sub-attribute path as the production +> architecture (operator-comment fidelity is the only v1 regression) +> or add an x64 alarm-helper sub-process alongside the worker. See +> `src/MxGateway.Worker/MxAccess/MxAccessAlarmEventSink.cs` in the +> mxaccessgw repo for the architectural notes. Live +> `aahClientManaged` alarm-event write call site +> (`SdkAlarmHistorianWriteBackend` placeholder from PR C.1) and the +> D.1 smoke artifact ship once those decisions resolve. The +> remainder of this document is preserved as the design record. Coordinated epic across two repos: