test(historian): live end-to-end gate for continuous-historization value capture #491

Open
opened 2026-07-21 03:36:41 -04:00 by dohertj2 · 0 comments
Owner

Tracks KNOWN LIMITATION 2 in CLAUDE.md, filed so it is not carried indefinitely as a doc banner.

The ContinuousHistorizationRecorder is fully wired — actor + FasterLog outbox + gateway value-writer + meters — and the ref-feed gap is closed (2982cc4b: AddressSpaceApplier.FeedHistorizedRefsActorHistorizedTagSubscriptionSinkUpdateHistorizedRefs), so the recorder converges on the deployed historized set from the first deploy.

What has not been run is the live gate:

  1. End-to-end value capture against a real gateway: deploy → dependency-mux value delta → outbox append → WriteLiveValues → value readable back from the historian.
  2. Restart convergence: prove the recorder re-registers the deployed historized-ref set after a process restart (the ref set is built at deploy time, and the actor spawns with an empty initial set by design).

Until both run, treat continuous value capture as unproven in production rather than absent. Reads and alarm-writes are separately live-validated and green.

Prerequisites are the ones already documented: gateway with RuntimeDb:Enabled=true, an API key carrying historian:read + historian:write + historian:tags:write, and ContinuousHistorization:Enabled=true with an absolute OutboxPath.

Note: KNOWN LIMITATION 1 in the same CLAUDE.md section is stale — that live suite ran green (docs/plans/2026-06-27-otopcua-historian-followups.md: read , write-persist , alarm-send , alarm-readback skipped as a confirmed protocol limitation). Being corrected separately.

Tracks **KNOWN LIMITATION 2** in `CLAUDE.md`, filed so it is not carried indefinitely as a doc banner. The `ContinuousHistorizationRecorder` is fully wired — actor + FasterLog outbox + gateway value-writer + meters — and the ref-feed gap is **closed** (`2982cc4b`: `AddressSpaceApplier.FeedHistorizedRefs` → `ActorHistorizedTagSubscriptionSink` → `UpdateHistorizedRefs`), so the recorder converges on the deployed historized set from the first deploy. What has **not** been run is the live gate: 1. **End-to-end value capture** against a real gateway: deploy → dependency-mux value delta → outbox append → `WriteLiveValues` → value readable back from the historian. 2. **Restart convergence**: prove the recorder re-registers the deployed historized-ref set after a process restart (the ref set is built at deploy time, and the actor spawns with an empty initial set by design). Until both run, treat continuous value capture as **unproven in production rather than absent**. Reads and alarm-writes are separately live-validated and green. Prerequisites are the ones already documented: gateway with `RuntimeDb:Enabled=true`, an API key carrying `historian:read` + `historian:write` + `historian:tags:write`, and `ContinuousHistorization:Enabled=true` with an absolute `OutboxPath`. Note: **KNOWN LIMITATION 1** in the same CLAUDE.md section is stale — that live suite ran green (`docs/plans/2026-06-27-otopcua-historian-followups.md`: read ✅, write-persist ✅, alarm-send ✅, alarm-readback skipped as a confirmed protocol limitation). Being corrected separately.
Sign in to join this conversation.
1 Participants
Notifications
Due Date
No due date set.
Dependencies

No dependencies set.

Reference: dohertj2/lmxopcua#491