Commit Graph

1542 Commits

Author SHA1 Message Date
Joseph Doherty 3d3f8a47a9 docs(historian): design for sidecar TCP transport (replace named pipe) 2026-06-12 11:03:32 -04:00
Joseph Doherty c6edef0efb fix(install): assert Wonderware sidecar deploy is complete in Refresh-Services
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
Add a post-publish Step 4b that fails the refresh if the sidecar deploy
folder is missing any load-bearing file (System.Memory.dll, MessagePack.dll,
the .exe, or the net48 binding-redirect .exe.config). A partial/stale deploy
that bypasses `dotnet publish` drops System.Memory.dll, so the sidecar
JIT-load-faults in PipeServer.RunOneConnectionAsync (FileNotFoundException
'System.Memory, Version=4.0.1.2') and NSSM crash-loops it (exit 2 every
~2 min). Catching this at publish time beats discovering it as a production
crash-loop. Guarded by -WhatIf; throws before any service is started.
2026-06-12 09:41:51 -04:00
Joseph Doherty 57355405a6 chore(security): drop dead audit suppressions; patch OpenTelemetry + Tmds.DBus CVEs
All five suppressed advisories are now resolved at baseline/resolved versions,
so every NuGetAuditSuppress is removed repo-wide:
- System.Security.Cryptography.Xml (GHSA-37gx-xxp4-5rgx / GHSA-w3x6-4m5h-cxqf)
  -> fixed by the .NET 10 baseline (10.0.6)
- OPCFoundation Opc.Ua.Core (GHSA-h958-fxgg-g7w3) -> fixed at resolved 1.5.378.106

Two were still live and are now patched via direct security pins:
- OpenTelemetry.Api 1.9.0 -> 1.15.3 (GHSA-g94r-2vxg-569j) pinned in Cluster;
  Runtime/ControlPlane/AdminUI + tests inherit via project reference
- Tmds.DBus.Protocol 0.20.0 -> 0.21.3 (GHSA-xrw6-gwf8-vvr9) pinned in Client.UI

Also correct the Historian sidecar runtime comments (x86 -> x64, matching the
csproj PlatformTarget). Solution audit: 0 vulnerable packages; full build clean.
2026-06-12 09:03:42 -04:00
Joseph Doherty dc9abf674b fix(deps): bump MessagePack 2.5.187 -> 2.5.301 (CVE-2026-48109 / GHSA-hv8m-jj95-wg3x)
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
LZ4-decompression out-of-bounds read in MessagePack < 2.5.301 (transitive
via the Historian.Wonderware driver). 2.5.301 is the patched v2-series
release; stays on v2 (no v3 major bump). Restore no longer fails NU1903.
2026-06-12 08:04:04 -04:00
Joseph Doherty 8406349a27 chore(plan): mark alias-tag tasks T0–T10 complete 2026-06-12 07:55:54 -04:00
Joseph Doherty e77fd3eec0 fix(adminui): converter UI — try/catch + confirm + FleetAdmin gate on per-equipment convert (review) 2026-06-11 21:54:21 -04:00
Joseph Doherty 7682d185fb feat(adminui): relay->alias converter UI (per-equipment + fleet-wide /uns/convert-relays) 2026-06-11 21:49:43 -04:00
Joseph Doherty 299eaa461c fix(adminui): gate Galaxy picker so it doesn't clobber alias FullName on edit; refresh gateways (review) 2026-06-11 21:45:55 -04:00
Joseph Doherty d19271fff8 fix(adminui): converter skips name-collisions + disabled relays (review) 2026-06-11 21:44:19 -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 4af27ea173 feat(adminui): AliasTagModal + Tags-tab Add-alias (Galaxy picker) 2026-06-11 21:37:04 -04:00
Joseph Doherty 943bc5f709 feat(adminui): ConvertRelayVirtualTagsToAliasesAsync (relay VTag -> alias Tag) 2026-06-11 21:32:43 -04:00
Joseph Doherty fe068652b3 fix(adminui): alias update pins invariants + LoadAliasTagAsync + null-driver guard (review) 2026-06-11 21:25:06 -04:00
Joseph Doherty 9f13101896 feat(validation): require TagConfig.FullName on Galaxy alias tags; reframe Tag doc 2026-06-11 21:21:32 -04:00
Joseph Doherty 53116bdd83 feat(adminui): CreateAliasTagAsync/UpdateAliasTagAsync + Galaxy-gateway guard 2026-06-11 21:17:45 -04:00
Joseph Doherty fcc73ccd2d fix(adminui): null Source for alias rows without a FullName (review nits) 2026-06-11 21:12:52 -04:00
Joseph Doherty bc9e83ed9f feat(composer): admit GalaxyMxGateway-backed equipment alias tags (+byte-parity) 2026-06-11 21:10:21 -04:00
Joseph Doherty 4b4738a891 feat(adminui): alias DTO + Galaxy gateway lookup + Source/IsAlias on tag rows 2026-06-11 21:05:02 -04:00
Joseph Doherty 2ba2f8a899 feat(commons): TryParseRelayBody — detect pure ctx.GetTag relay scripts 2026-06-11 20:59:10 -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 f1c4392b0d refactor(uns): drop dead LoadEquipmentChildrenAsync + LinesForCluster; fix stale comment 2026-06-11 15:11:28 -04:00
Joseph Doherty 6e7127c396 feat(uns): remove standalone scripted-alarm pages + nav link (alarms now per-equipment) 2026-06-11 15:06:13 -04:00
Joseph Doherty f1b9e7116b fix(uns): guard ScriptedAlarmModal form rebuild against stray re-renders (code-review) 2026-06-11 15:03:43 -04:00
Joseph Doherty 826ffdc1a0 feat(uns): equipment is a tree leaf linking to the detail page; drop EquipmentModal 2026-06-11 15:01:10 -04:00
Joseph Doherty 773c073d0e feat(uns): Alarms tab + ScriptedAlarmModal on the equipment page 2026-06-11 14:53:03 -04:00
Joseph Doherty 1294fb6ee5 fix(uns): surface stale-row edits + dismiss modal on delete + @key rows (code-review) 2026-06-11 14:49:23 -04:00
Joseph Doherty 61ad5ab8cc feat(uns): wire Tags + Virtual Tags tabs on the equipment page (reuse modals) 2026-06-11 14:44:35 -04:00
Joseph Doherty 7fbfeca451 feat(uns): equipment detail page shell + Details tab + create-redirect 2026-06-11 14:36:48 -04:00
Joseph Doherty 5cae3c5b96 fix(uns): guard scripted-alarm name uniqueness on create/update (code-review) 2026-06-11 14:31:35 -04:00
Joseph Doherty 705ed6234f feat(uns): scripted-alarm CRUD in IUnsTreeService for the equipment Alarms tab 2026-06-11 14:25:59 -04:00
Joseph Doherty 7c22861598 feat(uns): per-equipment tag/virtual-tag list service methods 2026-06-11 14:19:46 -04:00
Joseph Doherty 7d91737dac feat(uns): carry created id on UnsMutationResult for equipment create 2026-06-11 14:16:21 -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 7f535c0e9d test(historian): cover non-positive DeadLetterRetentionDays validation warning 2026-06-11 13:24:46 -04:00
Joseph Doherty 56750e110f fix(alarms): historize the real operator for shelve/unshelve/enable/disable transitions 2026-06-11 13:14:00 -04:00
Joseph Doherty 5ea6e9d7d9 fix(historian): validate non-positive drain/capacity/retention knobs (review) + log prefix 2026-06-11 13:09:13 -04:00
Joseph Doherty f215982b93 feat(historian): drain/capacity/retention config knobs + startup config-warning validation 2026-06-11 13:04:16 -04:00
Joseph Doherty 61b230d79a harden(historian): nullable HistorizeToAveva (missing→historize) for rolling-restart-safe deserialize + middle-link test 2026-06-11 13:00:57 -04:00
Joseph Doherty c20d228384 fix(historian): volatile _backoffIndex + read _evictedCount under lock (thread-safety) 2026-06-11 12:49:44 -04:00
Joseph Doherty 8012509584 feat(historian): honor per-alarm HistorizeToAveva opt-out at the durable write 2026-06-11 12:48:13 -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 f64f7ce669 fix(alarms): historize the operator (not 'system') for CommentAdded transitions (review)
v2-ci / build (push) Failing after 50s
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 11:42:56 -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