From f2c442bbafcb6b1f0d25785e876d8a96b7d30a81 Mon Sep 17 00:00:00 2001 From: Joseph Doherty Date: Tue, 23 Jun 2026 17:35:09 -0400 Subject: [PATCH] handoff: record SendEvent gRPC persistence finding MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Item 3: the gRPC read-back against the live 2023 R2 server proves the SDK-sent event PERSISTS (independently read back from event history), resolving the older WCF/M2 caveat ("server accepts AddS2 but the local dev box does not persist to v_AlarmEventHistory2") as an environment artifact, not an SDK gap. Also retire the stale "fresh native capture (SendEvent gRPC framing)" next-step note — SendEvent over gRPC is now shipped + live-validated. Co-Authored-By: Claude Opus 4.8 (1M context) Claude-Session: https://claude.ai/code/session_01B6mcaT2PjRFKcogzp9UkfC --- docs/reverse-engineering/handoff.md | 12 +++++++++--- 1 file changed, 9 insertions(+), 3 deletions(-) diff --git a/docs/reverse-engineering/handoff.md b/docs/reverse-engineering/handoff.md index 4811321..108ec4b 100644 --- a/docs/reverse-engineering/handoff.md +++ b/docs/reverse-engineering/handoff.md @@ -87,6 +87,12 @@ reuses the proven 2020 WCF byte serializers/parsers unchanged inside protobuf server (markers `SdkSendProbe`/`SdkCaptureProbe` confirmed in returned rows). Golden-tested (`GrpcEventSendProtocolTests`) + gated live test (`SendEventAsync_OverGrpc_AcceptsEvent`, opt-in `HISTORIAN_GRPC_EVENT_SEND=1`). + **PERSISTENCE RESOLVED:** the earlier WCF/M2 caveat was "server accepts AddS2 but the local + dev box does NOT persist the event to `v_AlarmEventHistory2`" — we couldn't tell if that was an + SDK gap or the environment. The gRPC read-back against the live 2023 R2 server **proves the event + persists** (sent via the pure-managed SDK, then independently read back from the server's event + history). So non-persistence on the local box was purely the dev-box event-ingestion environment, + **not an SDK gap** — the event-send path (WCF and gRPC, same "OS" buffer) is durably correct. 4. **ExecuteSqlCommand over gRPC** — **server-walled** (`CSrvDbConnection`; RegisterTags prime doesn't help). Use WCF for SQL. 5. **R4.2 revision EDITS** — storage-engine-pipe-only on BOTH transports (the D2 wall). @@ -108,9 +114,9 @@ reuses the proven 2020 WCF byte serializers/parsers unchanged inside protobuf To move any remaining item you need a **server-side / connection-level angle** (item 1 — v8 event auth is solved; row retrieval is connection-gated, see the -NEXT SESSION section of `grpc-event-query-capture.md`), a **fresh native capture** -(SendEvent gRPC framing — item 3), a **different server** (SF-active for item 2), -or a **demand signal** to unlock a deferred item. +NEXT SESSION section of `grpc-event-query-capture.md`), a **different server** +(SF-active for item 2), or a **demand signal** to unlock a deferred item. +(SendEvent over gRPC — formerly item 3 — is now SHIPPED + live-validated.) Live-server gRPC probe recipe: set `HISTORIAN_GRPC_HOST`/`_PORT 32565`/`_TLS true`/`_DNSID` + domain creds (strip quotes — `reference_wonder_sql_vd03_credentials`) and run the gated