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.