Record 2023 R2 binary-dive verdicts; fix revision-probe scope comment
Mined the full decompiled stock 2023 R2 managed client as the oracle for every still-pending gRPC item. Governing fact: ArchestrA.HistorianAccess is a C++/CLI shim into native HistorianClient; the managed Grpc*Client wrappers have zero call sites, so buffer-building/dispatch for the pending items is native (absent from the binaries). Sharpened verdicts into handoff.md: - Items 4/5/6 + OpenStorageConnection: hard-confirmed walled, with real reasons (SQL gated out client-side via IsManagedHistorian; no Revision RPC in the gRPC contract; LoadBlocks response is a native blob behind the storage console handle). - Items 3 (SendEvent) and 7 (DeleteTEP): moved from vague to precise, LOCAL-box capturable targets (PackToVtq btValues / DeleteTagExtendedPropertiesByName BtInput with deleteFromServer=true). Also correct the HistorianGrpcRevisionProbe doc comment: it probes the non-streamed ORIGINAL-insert path (AddNonStreamValues), a distinct capability from revision EDITS (native AddRevisionValues trio, no gRPC RPC) — the prior comment conflated them. Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01B6mcaT2PjRFKcogzp9UkfC
This commit is contained in:
@@ -20,6 +20,18 @@ namespace AVEVA.Historian.Client.Grpc;
|
||||
/// write-enabled session and calls <c>AddNonStreamValuesBegin</c>, surfacing whatever the server
|
||||
/// returns. It writes NO data — if Begin succeeds it immediately calls <c>AddNonStreamValuesEnd</c>
|
||||
/// with <c>bCommit=false</c> to discard the transaction.
|
||||
///
|
||||
/// <para><b>Scope note (corrected 2026-06-23 after a 2023 R2 binary re-read).</b> Despite the type
|
||||
/// name, this probes the <i>non-streamed ORIGINAL / backfill insert</i> capability
|
||||
/// (<c>AddNonStreamValues</c>), which is a <b>distinct capability from a revision EDIT</b>
|
||||
/// (overwriting an existing historized value with a new revision). The stock high-level client
|
||||
/// reaches a revision edit via a separate native transaction trio
|
||||
/// <c>HistorianClient.AddRevisionValuesBegin/AddRevisionValue/AddRevisionValuesEnd</c>
|
||||
/// (<c>ArchestrA.HistorianAccess.AddRevisionValues</c>, REVISION_MODE ∈ InsertLatest/UpdateSingle/
|
||||
/// UpdateMultiple). That trio has <b>NO corresponding RPC in the gRPC contract</b> (no "Revision"
|
||||
/// message type exists in <c>Archestra.Grpc.Contract</c>) — it rides the native storage-engine
|
||||
/// transaction channel only. So R4.2 revision edits remain unreachable over gRPC regardless of this
|
||||
/// probe's outcome; this probe neither covers nor unblocks them.</para>
|
||||
/// </summary>
|
||||
internal sealed class HistorianGrpcRevisionProbe
|
||||
{
|
||||
|
||||
Reference in New Issue
Block a user