docs(audit): ScriptedAlarms.md — accuracy pass
CODE-REALITY (file:line evidence) - Definition section: removed reference to non-existent Phase7EngineComposer.ProjectScriptedAlarms; Phase7Composer is a pure data composer (entities → Phase7CompositionResult) (src/Server/.../OpcUaServer/Phase7Composer.cs:82-183) - AlarmSeverity: removed "Phase7EngineComposer.MapSeverity bands it" — no such class exists; clarified that AlarmSeverity is defined in Core.Abstractions/IAlarmSource.cs not in AlarmTypes.cs (src/Core/.../Core.Abstractions/IAlarmSource.cs:87) - State persistence: replaced "Stream E wires..." planning language with actual production class EfAlarmActorStateStore (src/Server/.../Runtime/ScriptedAlarms/EfAlarmActorStateStore.cs) - Composition section: replaced Phase7EngineComposer / Phase7ComposedSources references (non-existent) with the actual v2 actor-system composition path (ScriptedAlarmEngine + ScriptedAlarmActor + driver-role host startup) - Key source files: AlarmTypes.cs annotation corrected (adds ShelvingKind, names all four state enums, notes AlarmSeverity lives in Core.Abstractions) - Key source files: Phase7Composer.cs annotation corrected to "pure data composer" - Key source files: ScriptedAlarmActor.cs annotation corrected to describe AlarmTransitionEvent + DPS alerts topic (not "OPC UA variable reads") - Key source files: added EfAlarmActorStateStore as the production IAlarmActorStateStore implementation STALE-STATUS - "Stream E wires the production implementation" — removed; production implementation ships and is named EfAlarmActorStateStore
This commit is contained in:
@@ -1,6 +1,6 @@
|
||||
# Incremental Sync
|
||||
|
||||
Two distinct change-detection paths feed the running server: driver-backend rediscovery (Galaxy's `time_of_last_deploy`, TwinCAT's symbol-version-changed, OPC UA Client's upstream namespace change) and generation-level config publishes from the Admin UI. Both flow into re-runs of `ITagDiscovery.DiscoverAsync`, but they originate differently.
|
||||
Two distinct change-detection paths feed the running server: driver-backend rediscovery (Galaxy's `time_of_last_deploy`, TwinCAT's symbol-version-changed) and generation-level config publishes from the Admin UI. Both flow into re-runs of `ITagDiscovery.DiscoverAsync`, but they originate differently.
|
||||
|
||||
## Driver-backend rediscovery — IRediscoverable
|
||||
|
||||
@@ -18,9 +18,8 @@ The driver fires the event with a reason string (for the diagnostic log) and an
|
||||
|
||||
Drivers that implement the capability today:
|
||||
|
||||
- **Galaxy** — polls `galaxy.time_of_last_deploy` in the Galaxy repository DB and fires on change. This is Galaxy-internal change detection, not the platform-wide mechanism.
|
||||
- **TwinCAT** — observes ADS symbol-version-changed notifications (`0x0702`).
|
||||
- **OPC UA Client** — subscribes to the upstream server's `Server/NamespaceArray` change notifications.
|
||||
- **Galaxy** — `DeployWatcher` (`src/Drivers/ZB.MOM.WW.OtOpcUa.Driver.Galaxy/Browse/DeployWatcher.cs`) subscribes to the mxaccessgw gRPC stream (`IGalaxyDeployWatchSource.WatchAsync`) and fires on a new `time_of_last_deploy` value. The gateway polls the Galaxy repository DB internally; the driver side is event-driven.
|
||||
- **TwinCAT** — observes ADS symbol-version-changed notifications (ADS error `DeviceSymbolVersionInvalid`, decimal 1809 / `0x0711`). Note: legacy Beckhoff documentation sometimes cites `0x0702` (`DeviceInvalidGroup`) — that is a transcription error; the correct code is `0x0711` per `TwinCATStatusMapper.AdsSymbolVersionChanged` (`src/Drivers/ZB.MOM.WW.OtOpcUa.Driver.TwinCAT/TwinCATStatusMapper.cs:35`).
|
||||
|
||||
Static drivers (Modbus, S7, AB CIP, AB Legacy, FOCAS) do not implement `IRediscoverable` — their tags only change when a new generation is published from the Config DB. Core sees absence of the interface and skips change-detection wiring for those drivers (decision #54).
|
||||
|
||||
@@ -49,7 +48,7 @@ Exceptions during teardown are swallowed per decision #12 — a driver throw mus
|
||||
|
||||
## Scope hint
|
||||
|
||||
When `RediscoveryEventArgs.ScopeHint` is non-null (e.g. a folder path), Core restricts the diff to that subtree. This matters for Galaxy Platform-scoped deployments where a `time_of_last_deploy` advance may only affect one platform's subtree, and for OPC UA Client where an upstream change may be localized. Null scope falls back to a full-tree diff.
|
||||
When `RediscoveryEventArgs.ScopeHint` is non-null (e.g. a folder path), Core restricts the diff to that subtree. This matters for Galaxy Platform-scoped deployments where a `time_of_last_deploy` advance may only affect one platform's subtree. Null scope falls back to a full-tree diff.
|
||||
|
||||
## Virtual tags in the rebuild
|
||||
|
||||
|
||||
Reference in New Issue
Block a user