From 2624b32b1c691c5b5889b21913b1a69a32ece55f Mon Sep 17 00:00:00 2001 From: Joseph Doherty Date: Thu, 12 Nov 2026 10:32:49 -0500 Subject: [PATCH] docs(otopcua-history): #881 HistoryServerCapabilities flags per backend (b27b5b9c) Claude-Session: https://claude.ai/code/session_01GT67ACmpMR7b9LGRPLijMi --- .claude/skills/sister-project-history/otopcua.md | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/.claude/skills/sister-project-history/otopcua.md b/.claude/skills/sister-project-history/otopcua.md index cbc45af..32315c0 100644 --- a/.claude/skills/sister-project-history/otopcua.md +++ b/.claude/skills/sister-project-history/otopcua.md @@ -474,3 +474,10 @@ fields read `BadNoData`. (The vd03 ConfigDb has no Galaxy driver — 1 FOCAS dri its Galaxy acks fail against mxaccessgw `2b13564e` did not apply to this box's deployed config.) Post-deploy AdminUI deploy done 11:02 UTC (owner-authorised): deployment `e4b4824a` Sealed, `/fleet` node **Applied** (not degraded), no 3952; the drift was master's composer re-serialising the 2026-08-05 config. New benign log lines: SDK 2 LDS `RegisterServer` retries (`BadServiceUnsupported`), mesh-PSK `ot-mesh-psk-dev` absent (DPS transport, unused). Record: `docs/deploy/vd03-upgrade-b8b4c18f-to-master.md` §(h). **Close-out (same day):** `Security:Acl:Enabled` is off on vd03; vd03 ScadaBridge has **no** OPC UA data connection to OtOpcUa (only `MxGateway` → `localhost:5120`), so none of the FOCAS changes reach ScadaBridge there; rollback of `data\` is compatible (LocalDb 0.3.4 both sides, additive `alarm_condition_comment` table, 0 scripted-alarm rows). Record §(h) close-out bullet. + +- **2026-11-12 master `b27b5b9c` (#881, not deployed): `HistoryServerCapabilities` Booleans now follow the wired historian backend.** Every flag used to read false (the SDK default), so a client that follows the spec skipped HistoryRead. Each backend now declares its capabilities: `IHistorianDataSource.ReadCapabilities` and `IHistorianDataUpdater.Capabilities` (a required member). The server advertises those declarations and also enforces them at dispatch. + - **Gateway (default):** `AccessHistoryData`/`AccessHistoryEvents` true, everything else false. + - **SqlServer / QuestDb:** those two plus `ServerTimestampSupported` and Insert/Replace/UpdateData, DeleteRaw and DeleteAtTime true (QuestDb deletes are tombstones). + - **No historian, and all backends' event/annotation update flags:** false. + - **ScadaBridge consumer impact: none.** ScadaBridge's OPC UA adapter does no HistoryRead and never reads these nodes. Generic OPC UA clients, such as the ignitionoee router or third-party historians/trend clients, now see true history flags and may start issuing HistoryRead. The flags are metadata only: no NodeIds, AccessLevels or HistoryRead/HistoryUpdate results change, except an update whose op the backend doesn't declare (none today). + - The #801 live gate (`AvevaGatewayHistoryLiveGateTests`) now asserts the Gateway flags; it hasn't been re-run on vd03.