diff --git a/.claude/skills/sister-project-history/otopcua.md b/.claude/skills/sister-project-history/otopcua.md index 2ddb2e3..d4b7363 100644 --- a/.claude/skills/sister-project-history/otopcua.md +++ b/.claude/skills/sister-project-history/otopcua.md @@ -316,3 +316,15 @@ AddRoute of the dev Mac (`oee-tagdump-mac`, `10.181.206.245.1.1`) on the two tes `ServerHistorian:HonorReturnBounds`. Follow-ups #692 (N=1 empty pages), #693 (Gateway AtTime interpolation), #694; upstream historiangw#28 (zero EventIds, receivedTime skew); #27 still open. - **ScadaBridge impact:** none — it issues no HistoryRead. +- **2026-10-13 #692–#694 (pushed `66a2b0c3`, #692/#693 closed, #694 open for item 3 = historiangw#27; live AVEVA gate PASS).** + Every HistoryRead-Raw page is full on every backend — N=1 used to alternate an empty page + a 65k-row tie over-fetch + (8 values: 17 pages/25 reads ⇒ 8/8); a full last page no longer carries a continuation point; a tie-cluster resume no + longer returns samples AT the exclusive EndTime (#692). Gateway AtTime is evaluated from raw reads by the shared SQL + evaluator (exact stored values, null+Bad at a stored NULL, Interpolated bit) with the node's type passed in (Boolean + stepped, integers rounded to the node type); kill switch `ServerHistorian:GatewayAtTimeFromRaw`; ⚠️ the shared evaluator + returned interpolated Int64 as Double on SqlServer/QuestDB too — now Int64 (#693). A strict gateway's learned ceiling pages + raw reads (ceiling-sized pages + CP instead of `BadTooManyOperations`), and a pre-existing epoch-window bug that returned a + ceiling-truncated read as Good with no CP is fixed; opt-in lossy `ServerHistorian:EventReadHorizon` (#694.1/.2). + Follow-ups #695–#698. + - **ScadaBridge impact:** none — it issues no HistoryRead. (#697, backend outage answered `BadHistoryOperationUnsupported`, + should check consumer handling before its status change.)