docs(archreview): cross-reference historiangw#11 for the Int1 EnsureTags gap
This commit is contained in:
@@ -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
|
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.
|
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`;
|
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):**
|
**✅ 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`.
|
- `EnsureTags` is a **real create-or-update upsert** — re-`EnsureTags` of an existing tag at the same type → `success`.
|
||||||
|
|||||||
+3
-1
@@ -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
|
- **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
|
`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`
|
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;
|
`StorageRateMs`** — a `0` made `EnsureTags` throw `ArgumentOutOfRangeException` and fail *every* provision;
|
||||||
fixed in `GatewayTagProvisioner`, PR #439.)
|
fixed in `GatewayTagProvisioner`, PR #439.)
|
||||||
3. **The failure mode is bounded and observable either way.** Provisioning is fire-and-forget and never
|
3. **The failure mode is bounded and observable either way.** Provisioning is fire-and-forget and never
|
||||||
|
|||||||
Reference in New Issue
Block a user