This website requires JavaScript.
050164b21f
chore(phase4b): mark tasks complete + record follow-ups (shipped 08a65513 )
Joseph Doherty
2026-06-16 20:15:37 -04:00
08a6551360
docs(phase4b): Modbus driver-type canonical + Galaxy nesting + FOCAS auto-scale (managed-backend caveat)
Joseph Doherty
2026-06-16 19:58:11 -04:00
6855be288f
feat(focas): per-axis auto-scale from cnc_getfigure figures (manual config = fallback)
Joseph Doherty
2026-06-16 19:52:45 -04:00
a40c77de87
fix(adminui): flip remaining ModbusTcp test seeds + doc comments to Modbus (review)
Joseph Doherty
2026-06-16 19:51:56 -04:00
bec37848d5
fix(galaxy): degrade all parent-cycle members to root (review)
Joseph Doherty
2026-06-16 19:51:20 -04:00
21c7645da8
feat(galaxy): nest gobject browse tree by parent_gobject_id (degrade-to-flat)
Joseph Doherty
2026-06-16 19:41:26 -04:00
8b4675b1a5
fix(adminui): canonicalize Modbus driver-type string on "Modbus" (was ModbusTcp)
Joseph Doherty
2026-06-16 19:39:41 -04:00
3fcbc70cba
feat(focas): add cnc_getfigure per-axis position-figure client binding
Joseph Doherty
2026-06-16 19:38:49 -04:00
2b66309c15
plan(phase4b): Mac-verifiable driver gaps implementation plan + tasks.json
Joseph Doherty
2026-06-16 19:23:03 -04:00
f90017bc9a
design(phase4b): Mac-verifiable driver gaps (Modbus reconcile + Galaxy nesting + FOCAS auto-scale)
Joseph Doherty
2026-06-16 19:17:19 -04:00
c081917a69
chore(phase8): reconcile per-cluster-scoping tasks.json (already shipped; bookkeeping was stale)
Joseph Doherty
2026-06-16 18:51:49 -04:00
9a28e46d6e
chore(phase7): mark tasks complete (shipped 1122dcdc )
Joseph Doherty
2026-06-16 18:41:30 -04:00
1122dcdc57
polish(client-ui): clearer Shelve/Unshelve success messages (review)
Joseph Doherty
2026-06-16 18:38:58 -04:00
4675bd6139
test(client-ui): cover Confirm missing-ConditionId + Shelve/Confirm exception paths (review)
Joseph Doherty
2026-06-16 18:34:30 -04:00
336879990c
docs(phase7): desktop client alarm Ack/Shelve/Confirm actions
Joseph Doherty
2026-06-16 18:32:26 -04:00
fd986c3bd3
fix(client-ui): relabel Shelve dialog button to Unshelve when that kind is selected (review)
Joseph Doherty
2026-06-16 18:31:32 -04:00
6a61f35ac0
feat(client-ui): Shelve/Confirm context-menu items with per-item enablement
Joseph Doherty
2026-06-16 18:28:19 -04:00
a774bb088d
feat(client-ui): ConfirmAlarmWindow dialog (comment)
Joseph Doherty
2026-06-16 18:25:29 -04:00
60da9224bf
feat(client-ui): ShelveAlarmWindow dialog (kind + duration)
Joseph Doherty
2026-06-16 18:25:28 -04:00
4f55d894a2
feat(client-ui): AlarmsViewModel Shelve/Confirm methods + CanShelve/CanConfirm
Joseph Doherty
2026-06-16 18:23:11 -04:00
8980adceb3
test(client-ui): track Shelve/Confirm calls + exceptions in FakeOpcUaClientService
Joseph Doherty
2026-06-16 18:19:29 -04:00
6707be2a31
docs(phase7): implementation plan + task persistence (8 tasks)
Joseph Doherty
2026-06-16 17:51:56 -04:00
573728b58b
docs(phase7): design — Client.UI alarm Ack/Shelve/Confirm via context menu
Joseph Doherty
2026-06-16 17:47:25 -04:00
ad3ec9d97e
chore(phase6): mark tasks complete + record live /run results and follow-ups
Joseph Doherty
2026-06-16 17:32:12 -04:00
23f353e79b
test(adminui): close Phase 6 review test-gaps + Enterprise-delete warning
Joseph Doherty
2026-06-16 17:10:40 -04:00
cbaf1c39ce
docs(phase6): AdminUI editors, pickers, deletes, new-script
Joseph Doherty
2026-06-16 17:08:08 -04:00
68f9eef62d
fix(adminui): preserve historize on Galaxy re-pick + clear stale script-create error (review)
Joseph Doherty
2026-06-16 17:03:38 -04:00
069a5f3165
feat(adminui): Galaxy picker pre-fills native-alarm fields from IsAlarm
Joseph Doherty
2026-06-16 16:55:05 -04:00
9a8b8ff6f6
feat(adminui): Build-address pickers in the protocol-driver Tag editors
Joseph Doherty
2026-06-16 16:54:29 -04:00
c00a547191
feat(adminui): isHistorized + historianTagname as first-class Tag fields
Joseph Doherty
2026-06-16 16:44:46 -04:00
c98625fd9f
feat(adminui): create-new-script from the inline virtual-tag panel
Joseph Doherty
2026-06-16 16:44:14 -04:00
526eebb3bb
feat(adminui): UNS-tree delete for Cluster + Enterprise (refuse-if-children, no rowversion)
Joseph Doherty
2026-06-16 16:35:07 -04:00
6a8020e7e7
feat(adminui): native-alarm HistorizeToAveva opt-out
Joseph Doherty
2026-06-16 16:27:31 -04:00
72d414ada7
feat(adminui): typed TagConfig editors for OpcUaClient + Historian
Joseph Doherty
2026-06-16 16:25:19 -04:00
39755d717d
docs(phase6): implementation plan + task persistence (10 tasks, execution deferred to post-compaction)
Joseph Doherty
2026-06-16 16:11:42 -04:00
dbff29dddf
docs(phase6): design — AdminUI typed editors, pickers & UX (destaled scope, #7 deferred)
Joseph Doherty
2026-06-16 16:09:06 -04:00
156aa900ee
chore(phase5): mark task persistence completed (merged 1164d423 )
Joseph Doherty
2026-06-16 07:35:17 -04:00
1164d423b6
fix(probe): Galaxy gRPC ping — drop invalid Retry, treat MxGatewayAuth exceptions as reachable (live /run)
Joseph Doherty
2026-06-16 07:32:59 -04:00
af280af842
docs(phase5): correct FOCAS probe binding — direct DllImport, not WireFocasClient (integration review)
Joseph Doherty
2026-06-16 07:12:48 -04:00
961b2b558d
docs(phase5): real Test-Connect handshakes per driver + degrade semantics
Joseph Doherty
2026-06-16 07:06:47 -04:00
5df3c73204
fix(probe): bound AbLegacy handshake by timeout CTS + stop sw; correct FOCAS timeout comment (code-review)
Joseph Doherty
2026-06-16 07:03:55 -04:00
9bfbbb0fd8
fix(probe): bound OpcUaClient/AbCip handshakes by timeout CTS; IPv4 preflight; stop sw (code-review)
Joseph Doherty
2026-06-16 06:56:16 -04:00
2d688c2a6d
feat(probe): Galaxy Test-Connect does a gRPC ping (auth-rejection counts as reachable)
Joseph Doherty
2026-06-16 06:48:40 -04:00
b663ae6eff
feat(probe): TwinCAT Test-Connect does an ADS ReadState (degrade-guarded)
Joseph Doherty
2026-06-16 06:48:22 -04:00
5ed0276ffb
feat(probe): FOCAS Test-Connect attempts a cnc_allclibhndl3 handshake (degrade-guarded)
Joseph Doherty
2026-06-16 06:45:19 -04:00
21f3e8feab
feat(probe): AbLegacy Test-Connect opens a real PCCC session (libplctag init)
Joseph Doherty
2026-06-16 06:44:15 -04:00
0c08b152c2
feat(probe): AbCip Test-Connect opens a real CIP session (libplctag init)
Joseph Doherty
2026-06-16 06:39:46 -04:00
957a63cfdb
feat(probe): OpcUaClient Test-Connect does a GetEndpoints discovery handshake
Joseph Doherty
2026-06-16 06:39:27 -04:00
9a8336ff6e
feat(probe): S7 Test-Connect does a real ISO-on-TCP + S7 setup handshake
Joseph Doherty
2026-06-16 06:38:51 -04:00
9b909002be
feat(probe): Modbus Test-Connect does a real FC03 handshake
Joseph Doherty
2026-06-16 06:36:48 -04:00
2f7c6bf963
docs(phase5): implementation plan + task persistence (8 probe handshakes)
Joseph Doherty
2026-06-16 06:32:15 -04:00
1f2d32ac1e
docs(phase5): design — Test-Connect protocol handshakes (all 8 probes, best-effort)
Joseph Doherty
2026-06-16 06:28:21 -04:00
050f5c4b60
docs(historian): Total aggregate is server-side OPC UA only, not the bundled CLI (integration review)
Joseph Doherty
2026-06-16 05:55:18 -04:00
f9b38c0a61
docs(phase4): Modbus Int64/UInt64, FOCAS fail-fast+scaling, Historian Total+dead-letter cap
Joseph Doherty
2026-06-16 05:47:04 -04:00
88d9e3b1a8
docs(focas): correct stale LastFixedSnapshots comment after double widening (code-review)
Joseph Doherty
2026-06-16 05:42:38 -04:00
4973075291
feat(focas): scale axis positions by 10^PositionDecimalPlaces (config-supplied)
Joseph Doherty
2026-06-16 05:32:36 -04:00
fcb3801415
fix(historian): dead-letter poison events after maxAttempts (finding 002)
Joseph Doherty
2026-06-16 05:25:43 -04:00
5e27b5f708
feat(historian): support Total aggregate (client-side Average x interval-seconds)
Joseph Doherty
2026-06-16 05:24:56 -04:00
5c5aaef609
fix(focas): fail-fast at init on unimplemented backend (operator footgun)
Joseph Doherty
2026-06-16 05:24:41 -04:00
bd8fee610b
fix(modbus): surface Int64/UInt64 node DataType (Driver.Modbus-007)
Joseph Doherty
2026-06-16 05:23:47 -04:00
97c087f2af
docs(phase4): implementation plan + tasks.json (5 data-type tier tasks)
Joseph Doherty
2026-06-16 05:21:00 -04:00
57d9f1b38e
docs(phase4): data-type tier design — Modbus Int64/UInt64 node type, FOCAS fail-fast+scaling, Historian Total+dead-letter (S7+arrays deferred)
Joseph Doherty
2026-06-16 05:18:19 -04:00
7eeb9fb0f5
docs(alarms): note native ack during reconnect is best-effort (integration review)
Joseph Doherty
2026-06-15 15:09:58 -04:00
8899d6e091
test(galaxy): assert current Write/Subscribe guard text (PR 4.4/4.W refs removed in Phase 0 b4af9e7f )
Joseph Doherty
2026-06-15 15:03:38 -04:00
db22c2b19a
docs(alarms): OPC UA Enable/Disable wired + native-ack→AVEVA with principal + HistoryUpdate permission bit
Joseph Doherty
2026-06-15 14:59:10 -04:00
30315185a3
feat(alarms): wire NativeAlarmAckRouter to DriverHostActor in host DI [H6e]
Joseph Doherty
2026-06-15 14:54:12 -04:00
93d9160dae
feat(alarms): DriverHostActor routes native-condition acks to the owning driver [H6d]
Joseph Doherty
2026-06-15 14:46:00 -04:00
87dd65b97a
test(alarms): native ack wrong-role deny + tidy NativeAlarmAck doc (code-review)
Joseph Doherty
2026-06-15 14:39:26 -04:00
a6d9de091b
feat(alarms): native condition Acknowledge routes to NativeAlarmAckRouter with principal [H6c]
Joseph Doherty
2026-06-15 14:33:58 -04:00
be6858baa1
fix(alarms): OnEnableDisable native-check via lock-guarded IsNativeAlarmNode + unstale AlarmCommand doc (code-review)
Joseph Doherty
2026-06-15 14:30:17 -04:00
328bd1b9ee
feat(alarms): wire OnEnableDisable over OPC UA (AlarmAck-gated; native→BadNotSupported) [H4]
Joseph Doherty
2026-06-15 14:24:19 -04:00
226587d817
test(alarms): cover isNative rebuild/kind-flip lifecycle + Phase7Applier call-site (code-review)
Joseph Doherty
2026-06-15 14:20:20 -04:00
2423edf232
test(alarms): assert Galaxy ack null-OperatorUser falls back to empty (code-review)
Joseph Doherty
2026-06-15 14:18:57 -04:00
418663b359
feat(alarms): thread isNative through MaterialiseAlarmCondition; node manager tracks native conditions [H6a]
Joseph Doherty
2026-06-15 14:13:30 -04:00
ed941c51da
feat(alarms): AlarmAcknowledgeRequest carries OperatorUser; Galaxy/ScriptedAlarmSource honor it [H6b]
Joseph Doherty
2026-06-15 14:11:40 -04:00
c236263e8d
fix(authz): give HistoryUpdate its own NodePermissions bit (was aliased to HistoryRead) [H2]
Joseph Doherty
2026-06-15 14:09:35 -04:00
6ab3d8630b
docs(alarms): Phase 3 implementation plan + tasks (H4 + H2-bit + H6)
Joseph Doherty
2026-06-15 14:05:00 -04:00
40b883effe
docs(alarms): Phase 3 design — OPC UA standards completeness (H4 Enable/Disable + H2 HistoryUpdate bit + H6 native-ack→AVEVA)
Joseph Doherty
2026-06-15 13:59:28 -04:00
4af8e65af1
fix(redundancy): PeerProbeSupervisor explicitly ignores co-mingled OpcUaProbeResult (integration review)
Joseph Doherty
2026-06-15 13:40:16 -04:00
4c78dcd358
feat(redundancy): wire dbHealth into OpcUaPublishActor + spawn PeerProbeSupervisor per node
Joseph Doherty
2026-06-15 13:33:34 -04:00
393b746d9b
docs(redundancy): sync component table with the wired calculator + PeerProbeSupervisor
Joseph Doherty
2026-06-15 13:30:55 -04:00
5a064e086d
test(redundancy): lock in stale-Terminated guard + clarify OnTerminated (code-review)
Joseph Doherty
2026-06-15 13:29:58 -04:00
70e6d3d2c0
docs(redundancy): ServiceLevelCalculator is wired into the live publish path
Joseph Doherty
2026-06-15 13:26:34 -04:00
f41e957e07
feat(redundancy): PeerProbeSupervisor maintains one peer OPC UA probe per driver peer
Joseph Doherty
2026-06-15 13:22:38 -04:00
37b32a5623
feat(redundancy): periodic HealthTick refreshes DB reachability via Ask/PipeTo
Joseph Doherty
2026-06-15 13:15:26 -04:00
5382eea9b5
test(redundancy): cover stale-probe-not-demoted branch + make _probeFreshnessWindow readonly (code-review)
Joseph Doherty
2026-06-15 13:11:01 -04:00
cf278035d2
feat(redundancy): OpcUaProbeOk from peer-probes-me with freshness debounce
Joseph Doherty
2026-06-15 13:04:41 -04:00
a9ff1a64b2
fix(redundancy): always publish first ServiceLevel (even 0) + log SafeSelfStatus failures (code-review)
Joseph Doherty
2026-06-15 13:00:25 -04:00
3e609a2b19
feat(redundancy): OpcUaPublishActor computes ServiceLevel via calculator (DB+stale+leader; legacy seam)
Joseph Doherty
2026-06-15 12:51:32 -04:00
ff0f62db38
refactor(redundancy): move ServiceLevelCalculator to Core.Cluster (shared, Runtime-reachable)
Joseph Doherty
2026-06-15 12:45:17 -04:00
7605f4d8fd
docs(redundancy): Phase 2 implementation plan + tasks (H3 ServiceLevel wiring)
Joseph Doherty
2026-06-15 12:41:51 -04:00
0528353315
docs(redundancy): Phase 2 design — health-aware ServiceLevel (H3)
Joseph Doherty
2026-06-15 12:33:09 -04:00
4bd7180e7f
fix(docker-dev): stop seeding retired SystemPlatform namespace
Joseph Doherty
2026-06-15 12:17:02 -04:00
907005d2d2
docs(claude): note local docker-dev rig has login disabled — run live /run verification directly, don't wait for sign-in
Joseph Doherty
2026-06-15 11:50:55 -04:00
c6a543d1b6
docs(vtags): note rename-respawn transient + write-side-only historize (integration review)
Joseph Doherty
2026-06-15 10:50:08 -04:00
aaa5d8b851
docs(vtags): document runtime Historize honoring + infra-gated durable sink (Phase 1 H5)
Joseph Doherty
2026-06-15 10:43:29 -04:00
4501f12669
feat(vtags): wire IHistoryWriter through DriverHostActor (Null default; durable sink infra-gated) (H5d, stillpending §1)
Joseph Doherty
2026-06-15 10:38:49 -04:00
2f30c54dc1
test(vtags): thread-safe CapturingHistoryWriter + drop redundant wait (H5c review follow-up)
Joseph Doherty
2026-06-15 10:33:14 -04:00
0c6d4c5491
feat(vtags): forward historized vtag results to IHistoryWriter (H5c, stillpending §1)
Joseph Doherty
2026-06-15 10:26:25 -04:00
83d3b9f7be
test(vtags): planner detects Historize-only toggle as a change + doc nit (H5a review follow-up)
Joseph Doherty
2026-06-15 10:21:31 -04:00