From 2a0b34e0568d7e1b6f6da48b348a63c7ba87c02f Mon Sep 17 00:00:00 2001 From: Joseph Doherty Date: Mon, 12 Oct 2026 16:04:02 -0400 Subject: [PATCH] =?UTF-8?q?docs(history):=20OtOpcUa=20#685=E2=80=93#688=20?= =?UTF-8?q?Gateway=20historian=20raw/aggregate=20fixes?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .claude/skills/sister-project-history/otopcua.md | 10 ++++++++++ 1 file changed, 10 insertions(+) diff --git a/.claude/skills/sister-project-history/otopcua.md b/.claude/skills/sister-project-history/otopcua.md index 655e8a2..45d4ae9 100644 --- a/.claude/skills/sister-project-history/otopcua.md +++ b/.claude/skills/sister-project-history/otopcua.md @@ -296,3 +296,13 @@ AddRoute of the dev Mac (`oee-tagdump-mac`, `10.181.206.245.1.1`) on the two tes historiangw#27 (aggregate interval sent 10,000× too large ⇒ Gateway native TimeAverage/Total wrong end to end) and OtOpcUa #685–#688 (Gateway native-row handling, reverse/end-only raw reads failing since #669, synthetic boundary row in raw reads, default cap vs gateway ceiling). AVEVA TWA is sloped like the SQL backends but excludes NULL-gap time. +- **2026-10-12 #685–#688 (pushed `1f5d3100`, all closed, live AVEVA gate PASS).** Gateway historian backend: + `IHistorianDataSource.SupportsReverseRaw` + `ReverseRawReader` serve end-only/reverse raw reads on Gateway by a bounded + forward walk-back (#686 — the #669 regression); uncapped Gateway raw reads (which sent `max_values = 0` and always + failed) now send `int.MaxValue`; raw reads drop AVEVA's synthetic boundary/no-data rows and the forward End is now + EXCLUSIVE (#687); native TimeAverage/Total drop the pre-window row and keep Uncertain values (#685); per-sample budget + clamped to the gateway's 1,000,000 ceiling (#688). Oversized tie cluster ⇒ `BadTooManyOperations`. Follow-ups #689 + (walk-back page sizing on busy tags), #690 (stored NULL returned as 0), #691 (ReturnBounds, reverse native aggregates, + strict-ceiling uncapped reads, reverse events). + - **ScadaBridge impact:** none expected — it does not issue reverse raw reads; a Gateway raw read no longer returns a + sample stamped exactly at EndTime.