Joseph Doherty
063d004fda
docs(security): fix data-plane alarm-ack GroupToRole value (AlarmAck, not AlarmAcknowledge)
...
The gate reads the literal role string OpcUaDataPlaneRoles.AlarmAck = "AlarmAck"
(OtOpcUaNodeManager.cs:643), but the Role-grant-source section told operators to map
their alarm-ack group to "AlarmAcknowledge" (the PermissionFlags ACL bit, a different
vocabulary) — which silently never satisfies the ack gate. Fix the three role-string
occurrences + add a code-true note; generalize the scripted-alarm note to native alarms.
2026-06-15 00:42:32 -04:00
Joseph Doherty
fa2388eabf
test(alarms): assert reconnect-dropped native alarm does not dead-letter; tighten severity doc
...
v2-ci / build (push) Failing after 38s
v2-ci / unit-tests (tests/Core/ZB.MOM.WW.OtOpcUa.Cluster.Tests) (push) Has been skipped
v2-ci / unit-tests (tests/Server/ZB.MOM.WW.OtOpcUa.ControlPlane.Tests) (push) Has been skipped
v2-ci / unit-tests (tests/Server/ZB.MOM.WW.OtOpcUa.OpcUaServer.Tests) (push) Has been skipped
v2-ci / unit-tests (tests/Server/ZB.MOM.WW.OtOpcUa.Runtime.Tests) (push) Has been skipped
v2-ci / unit-tests (tests/Server/ZB.MOM.WW.OtOpcUa.Security.Tests) (push) Has been skipped
v2-ci / integration (tests/Server/ZB.MOM.WW.OtOpcUa.Host.IntegrationTests) (push) Has been skipped
v2-ci / integration (tests/Server/ZB.MOM.WW.OtOpcUa.OpcUaServer.IntegrationTests) (push) Has been skipped
Add AllDeadLetters probe to Native_alarm_during_reconnect_is_dropped_not_forwarded so the
test genuinely guards the Reconnecting state's Receive<NativeAlarmRaised> drop handler —
removing that handler would now cause a dead-letter and fail the assertion (false-negative
gap closed). Reword the ScriptedAlarms.md severity-mapping note: "snaps on the first
transition" → "every transition maps … overriding the authored seed from the first
transition onward", clarifying that MapSeverity runs on every event, not just the first.
2026-06-14 22:56:18 -04:00
Joseph Doherty
49d98cba31
docs(alarms): note native-alarm severity-bucket snapping
2026-06-14 22:41:57 -04:00
Joseph Doherty
a1d333869e
docs(plans): residual-followups-cleanup plan (4 offline items; reconcile stale residuals)
2026-06-14 22:38:42 -04:00
Joseph Doherty
c24abc8a97
docs(historian): mark Phase C tasks 1-6 complete (T7 live deferred)
v2-ci / build (push) Failing after 40s
v2-ci / unit-tests (tests/Core/ZB.MOM.WW.OtOpcUa.Cluster.Tests) (push) Has been skipped
v2-ci / unit-tests (tests/Server/ZB.MOM.WW.OtOpcUa.ControlPlane.Tests) (push) Has been skipped
v2-ci / unit-tests (tests/Server/ZB.MOM.WW.OtOpcUa.OpcUaServer.Tests) (push) Has been skipped
v2-ci / unit-tests (tests/Server/ZB.MOM.WW.OtOpcUa.Runtime.Tests) (push) Has been skipped
v2-ci / unit-tests (tests/Server/ZB.MOM.WW.OtOpcUa.Security.Tests) (push) Has been skipped
v2-ci / integration (tests/Server/ZB.MOM.WW.OtOpcUa.Host.IntegrationTests) (push) Has been skipped
v2-ci / integration (tests/Server/ZB.MOM.WW.OtOpcUa.OpcUaServer.IntegrationTests) (push) Has been skipped
2026-06-14 21:19:28 -04:00
Joseph Doherty
7eb8f4d054
docs(historian): Phase C HistoryRead guide + CLAUDE.md pointer
2026-06-14 20:27:17 -04:00
Joseph Doherty
fb906f26ac
docs(historian): Phase C HistoryRead implementation plan + tasks
2026-06-14 18:48:33 -04:00
Joseph Doherty
5e42c1bc38
docs(historian): Phase C server-side HistoryRead design
2026-06-14 18:46:43 -04:00
Joseph Doherty
c9a0f627ea
docs(drivers): mark reconfigure-while-faulted bookkeeping task complete
v2-ci / build (push) Failing after 33s
v2-ci / unit-tests (tests/Core/ZB.MOM.WW.OtOpcUa.Cluster.Tests) (push) Has been skipped
v2-ci / unit-tests (tests/Server/ZB.MOM.WW.OtOpcUa.ControlPlane.Tests) (push) Has been skipped
v2-ci / unit-tests (tests/Server/ZB.MOM.WW.OtOpcUa.OpcUaServer.Tests) (push) Has been skipped
v2-ci / unit-tests (tests/Server/ZB.MOM.WW.OtOpcUa.Runtime.Tests) (push) Has been skipped
v2-ci / unit-tests (tests/Server/ZB.MOM.WW.OtOpcUa.Security.Tests) (push) Has been skipped
v2-ci / integration (tests/Server/ZB.MOM.WW.OtOpcUa.Host.IntegrationTests) (push) Has been skipped
v2-ci / integration (tests/Server/ZB.MOM.WW.OtOpcUa.OpcUaServer.IntegrationTests) (push) Has been skipped
2026-06-14 18:09:46 -04:00
Joseph Doherty
56f73e49ec
docs(drivers): mark reconfigure-while-faulted Task 1 complete
v2-ci / build (push) Failing after 36s
v2-ci / unit-tests (tests/Core/ZB.MOM.WW.OtOpcUa.Cluster.Tests) (push) Has been skipped
v2-ci / unit-tests (tests/Server/ZB.MOM.WW.OtOpcUa.ControlPlane.Tests) (push) Has been skipped
v2-ci / unit-tests (tests/Server/ZB.MOM.WW.OtOpcUa.OpcUaServer.Tests) (push) Has been skipped
v2-ci / unit-tests (tests/Server/ZB.MOM.WW.OtOpcUa.Runtime.Tests) (push) Has been skipped
v2-ci / unit-tests (tests/Server/ZB.MOM.WW.OtOpcUa.Security.Tests) (push) Has been skipped
v2-ci / integration (tests/Server/ZB.MOM.WW.OtOpcUa.Host.IntegrationTests) (push) Has been skipped
v2-ci / integration (tests/Server/ZB.MOM.WW.OtOpcUa.OpcUaServer.IntegrationTests) (push) Has been skipped
2026-06-14 17:23:10 -04:00
Joseph Doherty
806a252f25
docs(drivers): implementation plan for reconfigure-while-faulted ( #7 )
2026-06-14 17:11:07 -04:00
Joseph Doherty
076ca025ba
docs(drivers): design for adopting config mid-(re)connect (reconfigure-while-faulted #7 )
2026-06-14 17:08:24 -04:00
Joseph Doherty
b0e83902b8
docs(alarms): native driver-alarm TagConfig schema (Phase B)
2026-06-14 03:28:55 -04:00
Joseph Doherty
a996f03b5b
docs(galaxy): Phase B native-alarms implementation plan + tasks
2026-06-14 02:58:12 -04:00
Joseph Doherty
90096e9c00
docs(galaxy): Phase B native-alarms design (equipment-tag path)
2026-06-14 02:50:34 -04:00
Joseph Doherty
8a79cb0ec7
docs(design): write-outcome self-correction (surface real device-write status, #5 )
v2-ci / build (push) Failing after 42s
v2-ci / unit-tests (tests/Core/ZB.MOM.WW.OtOpcUa.Cluster.Tests) (push) Has been skipped
v2-ci / unit-tests (tests/Server/ZB.MOM.WW.OtOpcUa.ControlPlane.Tests) (push) Has been skipped
v2-ci / unit-tests (tests/Server/ZB.MOM.WW.OtOpcUa.OpcUaServer.Tests) (push) Has been skipped
v2-ci / unit-tests (tests/Server/ZB.MOM.WW.OtOpcUa.Runtime.Tests) (push) Has been skipped
v2-ci / unit-tests (tests/Server/ZB.MOM.WW.OtOpcUa.Security.Tests) (push) Has been skipped
v2-ci / integration (tests/Server/ZB.MOM.WW.OtOpcUa.Host.IntegrationTests) (push) Has been skipped
v2-ci / integration (tests/Server/ZB.MOM.WW.OtOpcUa.OpcUaServer.IntegrationTests) (push) Has been skipped
2026-06-14 01:13:38 -04:00
Joseph Doherty
945c238039
docs(plans): harden-milestone-1b plan + task record
v2-ci / build (push) Failing after 48s
v2-ci / unit-tests (tests/Core/ZB.MOM.WW.OtOpcUa.Cluster.Tests) (push) Has been skipped
v2-ci / unit-tests (tests/Server/ZB.MOM.WW.OtOpcUa.ControlPlane.Tests) (push) Has been skipped
v2-ci / unit-tests (tests/Server/ZB.MOM.WW.OtOpcUa.OpcUaServer.Tests) (push) Has been skipped
v2-ci / unit-tests (tests/Server/ZB.MOM.WW.OtOpcUa.Runtime.Tests) (push) Has been skipped
v2-ci / unit-tests (tests/Server/ZB.MOM.WW.OtOpcUa.Security.Tests) (push) Has been skipped
v2-ci / integration (tests/Server/ZB.MOM.WW.OtOpcUa.Host.IntegrationTests) (push) Has been skipped
v2-ci / integration (tests/Server/ZB.MOM.WW.OtOpcUa.OpcUaServer.IntegrationTests) (push) Has been skipped
2026-06-14 00:51:05 -04:00
Joseph Doherty
190ef34e6f
docs(security): document the GroupToRole data-plane role requirement
2026-06-14 00:45:28 -04:00
Joseph Doherty
8d8c05f595
docs(drivers): mark protocol-equipment-tag-linkage plan complete (T0–T12, live-verified)
v2-ci / build (push) Failing after 45s
v2-ci / unit-tests (tests/Core/ZB.MOM.WW.OtOpcUa.Cluster.Tests) (push) Has been skipped
v2-ci / unit-tests (tests/Server/ZB.MOM.WW.OtOpcUa.ControlPlane.Tests) (push) Has been skipped
v2-ci / unit-tests (tests/Server/ZB.MOM.WW.OtOpcUa.OpcUaServer.Tests) (push) Has been skipped
v2-ci / unit-tests (tests/Server/ZB.MOM.WW.OtOpcUa.Runtime.Tests) (push) Has been skipped
v2-ci / unit-tests (tests/Server/ZB.MOM.WW.OtOpcUa.Security.Tests) (push) Has been skipped
v2-ci / integration (tests/Server/ZB.MOM.WW.OtOpcUa.Host.IntegrationTests) (push) Has been skipped
v2-ci / integration (tests/Server/ZB.MOM.WW.OtOpcUa.OpcUaServer.IntegrationTests) (push) Has been skipped
2026-06-13 12:44:29 -04:00
Joseph Doherty
6b041c6daa
docs(drivers): plan — protocol-driver equipment-tag linkage + write pipeline (13 tasks)
2026-06-13 10:51:18 -04:00
Joseph Doherty
e58f33584f
docs(drivers): design — protocol-driver equipment-tag linkage + inbound write pipeline
2026-06-13 10:45:25 -04:00
Joseph Doherty
22d553afd1
docs(opcuaclient): mark plan tasks complete (T0–T2 done, live-verified)
v2-ci / build (push) Failing after 42s
v2-ci / unit-tests (tests/Core/ZB.MOM.WW.OtOpcUa.Cluster.Tests) (push) Has been skipped
v2-ci / unit-tests (tests/Server/ZB.MOM.WW.OtOpcUa.ControlPlane.Tests) (push) Has been skipped
v2-ci / unit-tests (tests/Server/ZB.MOM.WW.OtOpcUa.OpcUaServer.Tests) (push) Has been skipped
v2-ci / unit-tests (tests/Server/ZB.MOM.WW.OtOpcUa.Runtime.Tests) (push) Has been skipped
v2-ci / unit-tests (tests/Server/ZB.MOM.WW.OtOpcUa.Security.Tests) (push) Has been skipped
v2-ci / integration (tests/Server/ZB.MOM.WW.OtOpcUa.Host.IntegrationTests) (push) Has been skipped
v2-ci / integration (tests/Server/ZB.MOM.WW.OtOpcUa.OpcUaServer.IntegrationTests) (push) Has been skipped
2026-06-13 09:37:20 -04:00
Joseph Doherty
bc9cd464b5
docs(opcuaclient): plan — register OpcUaClient driver factory (3 tasks)
2026-06-13 08:14:04 -04:00
Joseph Doherty
5aa1030be9
docs(opcuaclient): design — register the OpcUaClient driver factory (fixes always-stubbed bug)
...
Mirror ModbusDriverFactoryExtensions: NEW OpcUaClientDriverFactoryExtensions
(Register + CreateInstance deserialising OpcUaClientDriverOptions, like the
probe) + one line in DriverFactoryBootstrap.Register. Unblocks the first
end-to-end live equipment-tag value (live-proves the FullName→NodeId router).
2026-06-13 08:11:41 -04:00
Joseph Doherty
891f875f6a
docs(live-values): Phase plan — equipment-tag live-value delivery (6 tasks)
...
Shared EquipmentNodeIds helper → repoint Phase7Applier+VirtualTagHostActor →
DriverInstanceId on AttributeValuePublished → DriverHostActor (DriverInstanceId,
FullName)->NodeId[] map + ForwardToMux resolution + TestKit → live Modbus /run.
Runtime-only, no migration. Co-located .tasks.json.
2026-06-13 06:24:38 -04:00
Joseph Doherty
7e9eb5d17a
docs(live-values): design — equipment-tag live-value delivery (FullName→NodeId router)
...
Mirror VirtualTagHostActor's _nodeIdByVtag pattern for driver values: a shared
EquipmentNodeIds helper (kills the duplicated formula), DriverInstanceId on
AttributeValuePublished, and a (DriverInstanceId,FullName)->NodeId[] map built +
resolved in DriverHostActor.ForwardToMux. No OpcUaPublishActor change.
Driver-value delivery only; native alarms + historian remain separate.
2026-06-13 06:21:40 -04:00
Joseph Doherty
47cb5725a9
docs(galaxy): retire alias/SystemPlatform model — Galaxy tags are standard equipment tags
2026-06-12 21:17:30 -04:00
Joseph Doherty
1c4052ee83
docs(galaxy): Phase A implementation plan (Galaxy standard driver)
...
18-task plan to make GalaxyMxGateway an Equipment-kind driver: retire the
SystemPlatform NamespaceKind split + mirror + alias/relay machinery, author
Galaxy points as ordinary equipment tags via the standard TagModal. Mostly
deletion + a single EF migration dropping the per-kind unique constraint.
Phases B (native alarms) + C (server historian) remain out of scope.
Co-located .tasks.json for resume.
2026-06-12 21:05:45 -04:00
Joseph Doherty
91cb907633
docs(galaxy): design — Galaxy as a standard Equipment driver
...
Brainstorming-approved design to normalize GalaxyMxGateway into the standard
Equipment-driver model: retire the SystemPlatform/Equipment namespace split +
the SystemPlatform mirror + the alias-tag/relay machinery, author Galaxy points
as ordinary equipment tags, port native IAlarmSource alarms onto the
equipment-tag materialization path, and add a driver-agnostic server-side
HistoryRead backend (over the existing Wonderware Historian reader). Three
phases (A de-split + UI, B native alarms, C historian); clean break, no
migration converter; one EF migration to drop NamespaceKind.
2026-06-12 20:55:08 -04:00
Joseph Doherty
1be06502c7
fix(historian): correct AlarmHistorian config-key refs in docs + install (review)
v2-ci / build (push) Failing after 43s
v2-ci / unit-tests (tests/Core/ZB.MOM.WW.OtOpcUa.Cluster.Tests) (push) Has been skipped
v2-ci / unit-tests (tests/Server/ZB.MOM.WW.OtOpcUa.ControlPlane.Tests) (push) Has been skipped
v2-ci / unit-tests (tests/Server/ZB.MOM.WW.OtOpcUa.OpcUaServer.Tests) (push) Has been skipped
v2-ci / unit-tests (tests/Server/ZB.MOM.WW.OtOpcUa.Runtime.Tests) (push) Has been skipped
v2-ci / unit-tests (tests/Server/ZB.MOM.WW.OtOpcUa.Security.Tests) (push) Has been skipped
v2-ci / integration (tests/Server/ZB.MOM.WW.OtOpcUa.Host.IntegrationTests) (push) Has been skipped
v2-ci / integration (tests/Server/ZB.MOM.WW.OtOpcUa.OpcUaServer.IntegrationTests) (push) Has been skipped
2026-06-12 12:25:13 -04:00
Joseph Doherty
6d5fc35747
docs(historian): TCP transport
2026-06-12 12:02:50 -04:00
Joseph Doherty
eb6a71abf2
docs(historian): implementation plan for sidecar TCP transport
2026-06-12 11:10:41 -04:00
Joseph Doherty
3d3f8a47a9
docs(historian): design for sidecar TCP transport (replace named pipe)
2026-06-12 11:03:32 -04:00
Joseph Doherty
8406349a27
chore(plan): mark alias-tag tasks T0–T10 complete
2026-06-12 07:55:54 -04:00
Joseph Doherty
2a30d7185a
docs: Galaxy alias tags + relay converter (Uns.md, CLAUDE.md)
2026-06-11 21:39:12 -04:00
Joseph Doherty
93a9c6d3db
docs(plan): Galaxy alias tag implementation plan (T0–T10)
...
11-task TDD plan from the approved alias-tag design. Approach A (reuse
Tag entity, broaden composer/artifact equipment-tag filter); converter
rewrites relay VirtualTags as alias Tags. No entity/EF migration.
2026-06-11 20:31:17 -04:00
Joseph Doherty
305023aa9f
docs(design): Galaxy alias tag (UNS) — approved brainstorming design
...
Equipment exposes a Galaxy attribute under a friendly UNS name as a
first-class driver-bound Tag (alias) instead of a relay VirtualTag.
Approach A: reuse the Tag entity, broaden the equipment-tag filter to
admit GalaxyMxGateway-backed equipment tags; no entity/EF migration.
Includes a relay->alias converter (per-equipment + fleet-wide).
2026-06-11 20:22:32 -04:00
Joseph Doherty
909e0e3664
chore(uns): mark equipment-page plan complete (live-verified + merged)
v2-ci / build (push) Failing after 47s
v2-ci / unit-tests (tests/Core/ZB.MOM.WW.OtOpcUa.Cluster.Tests) (push) Has been skipped
v2-ci / unit-tests (tests/Server/ZB.MOM.WW.OtOpcUa.ControlPlane.Tests) (push) Has been skipped
v2-ci / unit-tests (tests/Server/ZB.MOM.WW.OtOpcUa.OpcUaServer.Tests) (push) Has been skipped
v2-ci / unit-tests (tests/Server/ZB.MOM.WW.OtOpcUa.Runtime.Tests) (push) Has been skipped
v2-ci / unit-tests (tests/Server/ZB.MOM.WW.OtOpcUa.Security.Tests) (push) Has been skipped
v2-ci / integration (tests/Server/ZB.MOM.WW.OtOpcUa.Host.IntegrationTests) (push) Has been skipped
v2-ci / integration (tests/Server/ZB.MOM.WW.OtOpcUa.OpcUaServer.IntegrationTests) (push) Has been skipped
2026-06-11 15:42:38 -04:00
Joseph Doherty
d77124b191
chore(uns): mark plan tasks T0–T10 complete (resume snapshot)
2026-06-11 15:24:30 -04:00
Joseph Doherty
80b19d6fc8
chore(uns): create-redirect null guard + alarm isolation test + alarm-authoring doc (final review)
2026-06-11 15:23:06 -04:00
Joseph Doherty
a0f3f4ab89
docs(uns): document the equipment page tabs; repoint alarm-editing surface
...
Update Uns.md to show Equipment as a leaf in the browse tree (Area → Line →
Equipment), add the /uns/equipment/{id} page with its Details/Tags/Virtual
Tags/Alarms tabs, and adjust the actions table and sub-sections accordingly.
ScriptedAlarms.md and AlarmTracking.md required no changes — neither
referenced the standalone /scripted-alarms editing page.
2026-06-11 15:14:09 -04:00
Joseph Doherty
1f904c4502
docs(uns): implementation plan + tasks for tabbed equipment detail page
2026-06-11 14:13:25 -04:00
Joseph Doherty
df2a488b81
docs(uns): design for tabbed equipment detail page
...
Replace the modal-based equipment editor on /uns with a dedicated
/uns/equipment/{id} page carrying Details/Tags/Virtual Tags/Alarms
tabs; trim the UNS tree so Equipment is a leaf that links to the page;
remove the standalone /scripted-alarms pages in favour of the per-
equipment Alarms tab. Reuses TagModal + VirtualTagModal unchanged; only
the alarm editor is new. No entity/EF-migration change.
2026-06-11 14:03:21 -04:00
Joseph Doherty
6208304a44
docs(historian): HistorizeToAveva opt-out semantics + config knobs + startup validation
v2-ci / build (push) Failing after 43s
v2-ci / unit-tests (tests/Core/ZB.MOM.WW.OtOpcUa.Cluster.Tests) (push) Has been skipped
v2-ci / unit-tests (tests/Server/ZB.MOM.WW.OtOpcUa.ControlPlane.Tests) (push) Has been skipped
v2-ci / unit-tests (tests/Server/ZB.MOM.WW.OtOpcUa.OpcUaServer.Tests) (push) Has been skipped
v2-ci / unit-tests (tests/Server/ZB.MOM.WW.OtOpcUa.Runtime.Tests) (push) Has been skipped
v2-ci / unit-tests (tests/Server/ZB.MOM.WW.OtOpcUa.Security.Tests) (push) Has been skipped
v2-ci / integration (tests/Server/ZB.MOM.WW.OtOpcUa.Host.IntegrationTests) (push) Has been skipped
v2-ci / integration (tests/Server/ZB.MOM.WW.OtOpcUa.OpcUaServer.IntegrationTests) (push) Has been skipped
2026-06-11 13:24:46 -04:00
Joseph Doherty
fa839d1dbf
docs(plan): alarm historian follow-ups (pending #1-6) implementation plan
2026-06-11 12:42:54 -04:00
Joseph Doherty
6dbd4fb875
docs(historian): alerts-fed historization (scripted, Primary-gated, exactly-once) + config-gated Sqlite→Wonderware sink
2026-06-11 11:36:37 -04:00
Joseph Doherty
d2cc4a1222
test+docs(galaxy): verify alarm acknowledger recovers after transient fault; document alarm-client reconnect
2026-06-11 11:12:49 -04:00
Joseph Doherty
cd72f79ef4
docs(plan): alarm follow-ups round 2 implementation plan (T0-T5)
2026-06-11 10:56:25 -04:00
Joseph Doherty
3ad7960dc2
docs(design): alarm follow-ups round 2 (historian alerts-feeder + Galaxy reconnect verify)
2026-06-11 10:51:55 -04:00
Joseph Doherty
521ee75355
docs: redundancy primary-only alarm emission/historization, redundancy-state NodeId+heartbeat fixes, Galaxy reconnect, live-pill
v2-ci / build (push) Failing after 48s
v2-ci / unit-tests (tests/Core/ZB.MOM.WW.OtOpcUa.Cluster.Tests) (push) Has been skipped
v2-ci / unit-tests (tests/Server/ZB.MOM.WW.OtOpcUa.ControlPlane.Tests) (push) Has been skipped
v2-ci / unit-tests (tests/Server/ZB.MOM.WW.OtOpcUa.OpcUaServer.Tests) (push) Has been skipped
v2-ci / unit-tests (tests/Server/ZB.MOM.WW.OtOpcUa.Runtime.Tests) (push) Has been skipped
v2-ci / unit-tests (tests/Server/ZB.MOM.WW.OtOpcUa.Security.Tests) (push) Has been skipped
v2-ci / integration (tests/Server/ZB.MOM.WW.OtOpcUa.Host.IntegrationTests) (push) Has been skipped
v2-ci / integration (tests/Server/ZB.MOM.WW.OtOpcUa.OpcUaServer.IntegrationTests) (push) Has been skipped
2026-06-11 10:18:25 -04:00