diff --git a/archreview/plans/STATUS.md b/archreview/plans/STATUS.md index 539a35fb..87ba8247 100644 --- a/archreview/plans/STATUS.md +++ b/archreview/plans/STATUS.md @@ -331,7 +331,9 @@ convention) + a regression unit test + `StorageRateMs` on the live-suite inline gateway's histsdk on this historian**: `EnsureTags(Int1)` returns `ProtocolEvidenceMissingException` (the vendored client's "no capture evidence for this type" guard → gRPC `Unimplemented`), both fresh and as a retype target. A **type sweep** confirmed it is Int1-specific: **Int2/UInt2/Int4/UInt4/Float/Double all provision `success=True`; - only Int1 fails.** This is a **gateway/histsdk type-support gap**, not an OtOpcUa defect. + only Int1 fails.** Root cause: `histsdk` `HistorianTagWriteProtocol.GetAnalogDataTypeCode` has no captured + CTagMetadata wire code for Int1. This is a **gateway/histsdk type-support gap**, not an OtOpcUa defect — **filed as + [historiangw#11](https://gitea.dohertylan.com/dohertj2/historiangw/issues/11)**. **✅ U-7 retype policy — ANSWERED (via `grpcurl` against the real historian):** - `EnsureTags` is a **real create-or-update upsert** — re-`EnsureTags` of an existing tag at the same type → `success`. diff --git a/docs/Historian.md b/docs/Historian.md index 29a2f8d8..ab252622 100644 --- a/docs/Historian.md +++ b/docs/Historian.md @@ -173,7 +173,9 @@ mapper code change is needed or wanted). Consequences: - **Net for a pre-bump Float Boolean tag asked to become Int1:** the provision **fails** (per-tag `Success=false` → `failed=N` tally). It is **neither silently retyped nor data-lost** — the tag stays Float and remains readable; the Int1 provision simply doesn't land until the gateway's histsdk gains `Int1` - create-evidence. (Prerequisite for reaching this outcome at all: the provisioner must stamp a **positive + create-evidence — filed as + [historiangw#11](https://gitea.dohertylan.com/dohertj2/historiangw/issues/11). (Prerequisite for reaching this + outcome at all: the provisioner must stamp a **positive `StorageRateMs`** — a `0` made `EnsureTags` throw `ArgumentOutOfRangeException` and fail *every* provision; fixed in `GatewayTagProvisioner`, PR #439.) 3. **The failure mode is bounded and observable either way.** Provisioning is fire-and-forget and never