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
f9be38430c
fix(alarms): route native alarms by ConditionId (dotted FullName), not bare SourceNodeId (integration review)
v2-ci / build (push) Failing after 46s
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 04:09:01 -04:00
Joseph Doherty
7e86fa7099
fix(alarms): normalise native TransitionKind to canonical EmissionKind vocabulary (review)
2026-06-14 03:58:46 -04:00
Joseph Doherty
8736fcc37c
feat(alarms): Primary-gated AlarmTransitionEvent fan-out for native alarms (Phase B WS-5)
2026-06-14 03:48:41 -04:00
Joseph Doherty
b50ef9fc2d
feat(alarms): materialise a Part 9 condition for an alarm equipment tag (Phase B WS-3)
2026-06-14 03:37:51 -04:00
Joseph Doherty
4c56a1719b
feat(alarms): DriverHostActor routes native alarm transitions to Part 9 conditions (Phase B WS-4c)
2026-06-14 03:34:25 -04:00
Joseph Doherty
b0e83902b8
docs(alarms): native driver-alarm TagConfig schema (Phase B)
2026-06-14 03:28:55 -04:00
Joseph Doherty
422e5b7db2
refactor(alarms): harden ExtractTagAlarm severity parse (TryGetInt32) + trim projector prior-state (review nits)
2026-06-14 03:27:03 -04:00
Joseph Doherty
25c3bd16ba
feat(alarms): DriverInstanceActor forwards native OnAlarmEvent to parent (Phase B WS-4b)
2026-06-14 03:24:24 -04:00
Joseph Doherty
c1aeafaaf3
feat(alarms): NativeAlarmProjector maps transitions to condition snapshots (Phase B WS-4a)
2026-06-14 03:16:44 -04:00
Joseph Doherty
e1ccd99ea2
feat(alarms): EquipmentTagPlan.Alarm parsed byte-parity from TagConfig (Phase B WS-2)
2026-06-14 03:12:48 -04:00
Joseph Doherty
f44d8d1e6b
feat(alarms): carry transition Kind on AlarmEventArgs; Galaxy populates it (Phase B WS-1)
2026-06-14 03:04:44 -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
1d797c1c8a
docs(opcua): fix stale NodeWriteRouter reference in EnsureVariable comment
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 01:45:35 -04:00
Joseph Doherty
c1e921de0b
fix(opcua): RunContinuationsAsynchronously so revert never re-enters the write Lock
2026-06-14 01:39:47 -04:00
Joseph Doherty
590e497872
fix(runtime): narrow ActorNodeWriteGateway catch + drop vacuous no-actor assertion
2026-06-14 01:32:34 -04:00
Joseph Doherty
10efcf4517
feat(opcua): write-outcome self-correction — capture prior + compare-and-revert on failure
2026-06-14 01:30:20 -04:00
Joseph Doherty
526ddb6a57
feat(runtime): ActorNodeWriteGateway — Asks RouteNodeWrite, returns NodeWriteOutcome
2026-06-14 01:23:43 -04:00
Joseph Doherty
0f7c47a559
feat(commons): IOpcUaNodeWriteGateway + NodeWriteOutcome for write-outcome routing
2026-06-14 01:20:14 -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
97d82dda46
test(runtime): future-enum trap for AccessLevel->Writable parity
2026-06-14 00:45:00 -04:00
Joseph Doherty
7e405e949b
fix(runtime): swallow self SubscriptionFailed too (symmetric to SubscriptionEstablished)
2026-06-14 00:42:31 -04:00
Joseph Doherty
f77488eed9
fix(galaxy): invalidate writer handle caches on session reconnect
...
Add IGalaxyDataWriter.InvalidateHandleCaches() and call it in
GalaxyDriver.ReopenAsync after RecreateAsync succeeds. Prior to this
fix, GatewayGalaxyDataWriter's _itemHandles and _supervisedHandles
dictionaries survived across reconnects, causing the next write to
skip AddItem and AdviseSupervisory against already-dead handles.
2026-06-14 00:39:24 -04:00
Joseph Doherty
42b4a923fd
fix(runtime): fast-fail writes in degraded driver states + swallow self SubscriptionEstablished
2026-06-14 00:34:37 -04:00
Joseph Doherty
99eea0b455
test(runtime): raw-blob routing test uses a no-FullName protocol blob (genuine #4d case)
2026-06-14 00:26:10 -04:00
Joseph Doherty
46f559f5f9
perf(focas): cache equipment-tag parsed addresses (no per-call reparse)
...
Equipment tags resolved at runtime via FocasEquipmentTagParser were not
seeded in _parsedAddressesByTagName so both ReadAsync and WriteAsync
re-parsed the raw TagConfig JSON address string on every hot-path call.
Promoted the field to ConcurrentDictionary (read + write thread safety)
and introduced ResolveParsedAddress(GetOrAdd) so the first call stores
the parse result and all subsequent calls are a cache hit. Authored tags
seeded at InitializeAsync compile and work unchanged.
2026-06-14 00:20:57 -04:00
Joseph Doherty
4cda275b8d
fix(runtime): fast-fail RouteNodeWrite while Stale + micro-opts + raw-blob routing test
2026-06-14 00:16:47 -04:00
Joseph Doherty
02e37a6d68
docs(notes): track pending.md + current.md session state
...
v2-ci / build (push) Failing after 37s
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
Snapshot of Milestone 1b completion (equipment-tag live values across
OpcUaClient / protocol drivers / Galaxy, read + write) and the open
follow-ups, for cross-session continuity.
2026-06-13 23:41:06 -04:00
Joseph Doherty
f05b5d79c4
fix(galaxy): AdviseSupervisory before raw Write so writes commit
...
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
A plain MXAccess Write runs with no user login (WriteUserId is typically 0),
and MXAccess only COMMITS such a write when the item is advised in supervisory
mode. Without it the gateway's Write call doesn't throw (the reply looks OK) but
the value never reaches the galaxy. GatewayGalaxyDataWriter now issues
AdviseSupervisory (once per item handle) before each raw Write; SecuredWrite/
VerifiedWrite tags keep their own user-identity path. Live-verified end-to-end:
an authorized write to a Galaxy equipment tag commits and PERSISTS across a
fresh re-subscribe; an anonymous write is denied.
(The sister ScadaBridge driver commits writes the other way — a configured
non-zero WriteUserId + regular Advise; we have no galaxy login, so we use the
supervisory context.)
2026-06-13 23:23:46 -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
bb5832e900
feat(server): inbound operator-write pipeline — OnWriteValue authz gate + node-write router
2026-06-13 12:35:15 -04:00
Joseph Doherty
a23fb2b82e
feat(server): equipment-tag node writability from Tag.AccessLevel (parity-safe, no migration)
2026-06-13 11:46:00 -04:00
Joseph Doherty
f8f1027287
feat(runtime): NodeId->driver reverse routing + primary-gated RouteNodeWrite
2026-06-13 11:44:26 -04:00
Joseph Doherty
b031a6ceef
feat(s7): resolve equipment-tag refs (read + write) via EquipmentTagRefResolver
2026-06-13 11:25:31 -04:00
Joseph Doherty
34a42486dc
feat(focas): resolve equipment-tag refs (read + write) via EquipmentTagRefResolver
2026-06-13 11:24:45 -04:00
Joseph Doherty
5ebf541f54
feat(twincat): resolve equipment-tag refs (read + write) via EquipmentTagRefResolver
2026-06-13 11:24:12 -04:00
Joseph Doherty
e2ea720c08
feat(ablegacy): resolve equipment-tag refs (read + write) via EquipmentTagRefResolver
2026-06-13 11:23:42 -04:00
Joseph Doherty
9d49cb7bbe
feat(abcip): resolve equipment-tag refs (read + write) via EquipmentTagRefResolver
2026-06-13 11:23:21 -04:00
Joseph Doherty
232c557985
feat(modbus): resolve equipment-tag refs (read + write) via EquipmentTagRefResolver
2026-06-13 11:18:00 -04:00
Joseph Doherty
eaa335d779
feat(drivers): shared EquipmentTagRefResolver (by-name + parse-on-miss + cache)
2026-06-13 11:07:23 -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
9357c001b7
fix(opcuaclient): register the OpcUaClient driver factory (was always stubbed)
2026-06-13 08:20:02 -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
c4435e4fd6
feat(runtime): route driver values to folder-scoped equipment NodeIds (live-value delivery)
v2-ci / build (push) Failing after 44s
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 06:32:38 -04:00