2026-06-30 - 2026-07-30

Overview

32 Active Pull Requests
53 Active Issues
Excluding merges, 1 author has pushed 112 commits to master and 691 commits to all branches. On master, 575 files have changed and there have been 34319 additions and 5650 deletions.

32 Pull requests merged by 1 user

Merged #506 feat(mtconnect): read-only MTConnect Agent driver (P1) — 23 tasks + 5-leg live gate 2026-07-27 14:02:29 -04:00

Merged #484 chore(auth): bump ZB.MOM.WW.Auth 0.1.1 -> 0.1.5 (family alignment) 2026-07-20 06:06:13 -04:00

Merged #480 feat(alarms): scripted condition Quality from worst-of-input tag quality (#478) 2026-07-17 16:08:09 -04:00

Merged #479 feat(alarms): condition Quality tracks source connectivity (#477) 2026-07-17 15:18:37 -04:00

Merged #476 fix(alarms): populate ConditionClassId/ConditionClassName on condition events (#475) 2026-07-17 13:58:42 -04:00

Merged #474 fix(alarms): populate EventType/SourceNode/SourceName on native + scripted conditions (#473) 2026-07-17 00:45:53 -04:00

Merged #472 v3 Batch 4 — dual-namespace address space + raw-only runtime binding (v3.0) 2026-07-16 14:38:32 -04:00

Merged #471 v3 Batch 3 — UNS reference-only Equipment + {{equip}}/<RefName> resolution 2026-07-16 08:59:04 -04:00

Merged #470 v3 Batch 2 — /raw project-tree AdminUI + Calculation driver 2026-07-16 05:50:28 -04:00

Merged #469 v3 Batch 1 — greenfield schema + RawPath identity rewiring 2026-07-16 01:52:52 -04:00

Merged #467 docs(#420): final reconciliation — alarms-over-gateway feature complete; C.1 superseded 2026-07-15 15:24:07 -04:00

Merged #466 docs(#456): live grind finding — retry/breaker write-trigger is structurally impossible 2026-07-15 14:48:27 -04:00

Merged #465 fix(drivers): flip runtime tag parsers to strict enum parsing (#457) 2026-07-15 11:29:04 -04:00

Merged #464 fix(redundancy): 2-node SBR exit-and-rejoin recovery (#459) 2026-07-15 10:54:06 -04:00

Merged #462 docs(archreview): live finding — keep-oldest downs the survivor on oldest-crash (#459) 2026-07-15 10:03:51 -04:00

Merged #461 test+docs(resilience): prove authored ResilienceConfig reaches the runtime pipeline (#456) 2026-07-15 08:49:53 -04:00

Merged #460 fix(deps): clear CVE-2025-6965 — pin SQLitePCLRaw bundle to 2.1.12, drop audit suppression 2026-07-15 08:17:59 -04:00

Merged #455 test(ldap): live GLAuth outage/recovery gate (R2-08 03/S2) 2026-07-15 07:45:26 -04:00

Merged #454 fix(drivers): harden operator TimeoutMs handling + AbLegacy evict parity 2026-07-15 07:35:40 -04:00

Merged #453 fix(s7): bound async wire ops with a wall-clock deadline (R2-01 read leg) 2026-07-15 07:12:16 -04:00

Merged #452 fix(harness): deploy E2E tests pass against real SQL (misdiagnosed as emulation timing) 2026-07-15 06:43:39 -04:00

Merged #451 fix(harness): swap retired bitnami/openldap for GLAuth (Host real-LDAP mode) 2026-07-15 06:04:19 -04:00

Merged #450 fix(focas-tests): honour fixture endpoint + fix mock timer endianness (9F/1P → 10/10) 2026-07-15 05:52:05 -04:00

Merged #449 docs(sweep): AbLegacy verified green — fixture-deployment gap, no code (#4) 2026-07-15 05:38:39 -04:00

Merged #448 docs(modbus-tests): sweep #2 was a fixture-cycling false alarm (all profiles green) 2026-07-15 05:13:14 -04:00

Merged #447 fix(opcuaserver-tests): fix cert-store gap + SDK read-throws drift (4F → 4/4) 2026-07-15 03:34:37 -04:00

Merged #446 fix(abcip-tests): fix static-init NRE blocking AbCip.IntegrationTests 2026-07-15 03:29:05 -04:00

Merged #445 docs(archreview): integration-suite sweep results + follow-ups 2026-07-15 01:26:16 -04:00

Merged #444 docs(archreview): R2-04 T13/T15 live-passed 2026-07-14 15:14:07 -04:00

Merged #443 fix(s7-cli): restore OnDataChange CliFx-console rationale comment 2026-07-14 14:49:28 -04:00

Merged #442 fix(historian): map Boolean historization to Int2, not degenerate Int1 (#441) 2026-07-14 12:38:06 -04:00

Merged #440 deps: bump HistorianGateway Client+Contracts to 0.3.0 2026-07-14 08:18:09 -04:00

36 Issues closed from 1 user

Closed #523 Remove the periodic 5-minute device re-browse (tag-set drift detection) from FOCAS/TwinCAT/MTConnect/AbCip 2026-07-30 03:54:59 -04:00

Closed #507 feat(raw): re-migrate discovered-node injection onto the raw device subtree — IRediscoverable is inert in v3 2026-07-30 03:54:16 -04:00

Closed #516 Driver config edits are silently discarded on Modbus/FOCAS/OpcUaClient (deployment still seals green) 2026-07-30 03:54:16 -04:00

Closed #518 IRediscoverable + IHostConnectivityProbe events have no consumer in src/ (9 drivers raise into the void); CLAUDE.md Change Detection is wrong 2026-07-30 03:54:16 -04:00

Closed #490 feat(scripteditor): tag-path completion for absolute RawPaths 2026-07-26 11:08:36 -04:00

Closed #505 AdminUI cluster-node editor was dead: HTTP 500 on load (InputNumber<byte>) + Save a silent no-op (NodeId regex forbids ':') 2026-07-26 10:43:28 -04:00

Closed #488 feat(drivers): periodic reconcile of desired vs actual driver subscriptions 2026-07-26 10:43:02 -04:00

Closed #499 DraftValidator cannot see ClusterNode.DriverConfigOverridesJson — the third driver-config persistence surface 2026-07-26 10:43:02 -04:00

Closed #493 Phase 5 telemetry: existing deployments must populate ClusterNode.GrpcPort (seed only backfills fresh installs) 2026-07-26 10:43:01 -04:00

Closed #501 Two alarm-ack tests assert an absence with AwaitAssert, so they pass instantly and prove nothing 2026-07-26 10:43:01 -04:00

Closed #503 Flaky under load: Galaxy EventPumpBoundedChannelTests.Drops_newest_when_channel_fills_and_records_metric 2026-07-26 10:43:01 -04:00

Closed #492 2-node keep-oldest cannot survive an oldest-node crash (survivor downs ITSELF) — evaluate ScadaBridge's auto-down decision 2026-07-26 10:07:32 -04:00

Closed #504 bug(adminui): /scripts is a hard 500 when any Script.SourceHash is shorter than 12 chars 2026-07-26 09:45:13 -04:00

Closed #487 bug(alarms): an active scripted alarm under-reports as normal after a full-rebuild deploy 2026-07-26 09:20:48 -04:00

Closed #496 Sql driver: implement the §8.1 catalog identifier-validation gate (FF-1) 2026-07-26 08:34:51 -04:00

Closed #497 Wrong OPC UA status-code constants in three existing drivers (FF-2) 2026-07-26 08:34:51 -04:00

Closed #498 Deploy-time guard: reject a Sql DriverConfig blob carrying a connectionString key (FF-3) 2026-07-26 08:34:51 -04:00

Closed #500 Intermittent single-test failure in Runtime.Tests under full-sweep load (unidentified) 2026-07-26 08:34:51 -04:00

Closed #502 50 sub-second presence budgets remain in Runtime.Tests (the class behind three of #500's five defects) 2026-07-25 20:20:37 -04:00

Closed #494 /health/active returns 200 on every node — the tier cannot identify the active node 2026-07-24 12:45:50 -04:00

Closed #486 Node records Applied (and advances _currentRevision) for a deployment whose artifact it could not read 2026-07-21 03:28:00 -04:00

Closed #485 Transient ConfigDb error during artifact load empties the served address space (logs claim "rebuild becomes no-op") 2026-07-21 02:29:46 -04:00

Closed #483 AdminUI /admin/secrets renders but is non-interactive — Secrets.Ui RCL pages get no render mode 2026-07-19 00:22:26 -04:00

Closed #482 Clustered secrets: Akka replication blocked by upstream deadlock (scadaproj#1) - keep Secrets:Replication:Enabled=false 2026-07-18 16:00:52 -04:00

Closed #478 feat(alarms): scripted condition Quality from worst-of-input tag quality (Layer 3 of #477) 2026-07-17 16:08:09 -04:00

Closed #477 bug(alarms): condition Quality is hardcoded Good regardless of the source tag's quality 2026-07-17 15:18:37 -04:00

Closed #475 bug(alarms): condition events emit null ConditionClassId/ConditionClassName 2026-07-17 13:58:42 -04:00

Closed #473 bug(alarms): native alarm conditions emit null SourceNode/SourceName/EventType 2026-07-17 00:45:53 -04:00

Closed #420 alarms-over-gateway: wire worker AlarmClient + pin SDK call site (4 inert scaffolds + D.1 smoke) 2026-07-15 15:24:29 -04:00

Closed #456 [archreview #10] Observe resilience retry/breaker firing in live dispatch (+ ResilienceConfig not in deploy artifact) 2026-07-15 14:49:05 -04:00

Closed #457 [archreview R2-11 Phase C] Flip runtime driver parsers to strict (typo'd enum -> BadNodeIdUnknown) 2026-07-15 11:29:05 -04:00

Closed #459 [archreview Crit-1/SBR] Non-transparent redundancy: crashing the OLDEST Akka node does not fail over 2026-07-15 11:06:29 -04:00

Closed #422 DraftValidator/DraftSnapshot is dead code (no src/ caller) — possible publish-time enforcement gap 2026-07-15 08:18:41 -04:00

Closed #458 Remove NuGetAuditSuppress for CVE-2025-6965 once a patched SQLitePCLRaw bundle ships 2026-07-15 08:17:59 -04:00

Closed #424 Pre-existing test failure: EquipmentNamespaceMaterializationTests deployment Rejected (not Accepted) 2026-07-15 08:11:48 -04:00

Closed #441 Boolean historization broken: EnsureTags(Int1) is server-degenerate — remap Boolean off Int1 2026-07-14 12:38:07 -04:00

50 Issues created by 1 user

Opened #441 Boolean historization broken: EnsureTags(Int1) is server-degenerate — remap Boolean off Int1 2026-07-14 11:36:39 -04:00

Opened #456 [archreview #10] Observe resilience retry/breaker firing in live dispatch (+ ResilienceConfig not in deploy artifact) 2026-07-15 08:01:42 -04:00

Opened #457 [archreview R2-11 Phase C] Flip runtime driver parsers to strict (typo'd enum -> BadNodeIdUnknown) 2026-07-15 08:01:43 -04:00

Opened #458 Remove NuGetAuditSuppress for CVE-2025-6965 once a patched SQLitePCLRaw bundle ships 2026-07-15 08:01:43 -04:00

Opened #459 [archreview Crit-1/SBR] Non-transparent redundancy: crashing the OLDEST Akka node does not fail over 2026-07-15 08:01:43 -04:00

Opened #468 Universal discovery browser: full controller-tree render is live-verify-blocked by the ab_server fixture (no @tags walk) 2026-07-15 18:38:43 -04:00

Opened #473 bug(alarms): native alarm conditions emit null SourceNode/SourceName/EventType 2026-07-16 23:58:02 -04:00

Opened #475 bug(alarms): condition events emit null ConditionClassId/ConditionClassName 2026-07-17 00:37:44 -04:00

Opened #477 bug(alarms): condition Quality is hardcoded Good regardless of the source tag's quality 2026-07-17 00:54:11 -04:00

Opened #478 feat(alarms): scripted condition Quality from worst-of-input tag quality (Layer 3 of #477) 2026-07-17 15:07:26 -04:00

Opened #481 feat(alarms): bridge driver comms-loss into scripted-alarm input quality (Layer 4 of #477) 2026-07-17 16:07:34 -04:00

Opened #482 Clustered secrets: Akka replication blocked by upstream deadlock (scadaproj#1) - keep Secrets:Replication:Enabled=false 2026-07-18 14:13:10 -04:00

Opened #483 AdminUI /admin/secrets renders but is non-interactive — Secrets.Ui RCL pages get no render mode 2026-07-18 16:00:34 -04:00

Opened #485 Transient ConfigDb error during artifact load empties the served address space (logs claim "rebuild becomes no-op") 2026-07-21 02:17:26 -04:00

Opened #486 Node records Applied (and advances _currentRevision) for a deployment whose artifact it could not read 2026-07-21 03:02:26 -04:00

Opened #487 bug(alarms): an active scripted alarm under-reports as normal after a full-rebuild deploy 2026-07-21 03:36:40 -04:00

Opened #488 feat(drivers): periodic reconcile of desired vs actual driver subscriptions 2026-07-21 03:36:41 -04:00

Opened #489 feat(raw): hot-rebind a renamed raw tag's live value without a node recreate 2026-07-21 03:36:41 -04:00

Opened #490 feat(scripteditor): tag-path completion for absolute RawPaths 2026-07-21 03:36:41 -04:00

Opened #491 test(historian): live end-to-end gate for continuous-historization value capture 2026-07-21 03:36:41 -04:00

Opened #492 2-node keep-oldest cannot survive an oldest-node crash (survivor downs ITSELF) — evaluate ScadaBridge's auto-down decision 2026-07-21 14:30:30 -04:00

Opened #493 Phase 5 telemetry: existing deployments must populate ClusterNode.GrpcPort (seed only backfills fresh installs) 2026-07-23 17:38:20 -04:00

Opened #494 /health/active returns 200 on every node — the tier cannot identify the active node 2026-07-24 10:40:38 -04:00

Opened #496 Sql driver: implement the §8.1 catalog identifier-validation gate (FF-1) 2026-07-24 21:00:09 -04:00

Opened #497 Wrong OPC UA status-code constants in three existing drivers (FF-2) 2026-07-24 21:00:09 -04:00

Opened #498 Deploy-time guard: reject a Sql DriverConfig blob carrying a connectionString key (FF-3) 2026-07-24 21:00:10 -04:00

Opened #499 DraftValidator cannot see ClusterNode.DriverConfigOverridesJson — the third driver-config persistence surface 2026-07-25 16:08:59 -04:00

Opened #500 Intermittent single-test failure in Runtime.Tests under full-sweep load (unidentified) 2026-07-25 16:08:59 -04:00

Opened #501 Two alarm-ack tests assert an absence with AwaitAssert, so they pass instantly and prove nothing 2026-07-25 18:07:33 -04:00

Opened #502 50 sub-second presence budgets remain in Runtime.Tests (the class behind three of #500's five defects) 2026-07-25 18:39:57 -04:00

Opened #503 Flaky under load: Galaxy EventPumpBoundedChannelTests.Drops_newest_when_channel_fills_and_records_metric 2026-07-25 22:44:54 -04:00

Opened #504 bug(adminui): /scripts is a hard 500 when any Script.SourceHash is shorter than 12 chars 2026-07-26 09:06:58 -04:00

Opened #505 AdminUI cluster-node editor was dead: HTTP 500 on load (InputNumber<byte>) + Save a silent no-op (NodeId regex forbids ':') 2026-07-26 10:43:27 -04:00

Opened #507 feat(raw): re-migrate discovered-node injection onto the raw device subtree — IRediscoverable is inert in v3 2026-07-27 13:49:40 -04:00

Opened #508 feat(mqtt): write-through (IWritable) — Sparkplug NCMD/DCMD + plain publish (design P3) 2026-07-27 13:49:45 -04:00

Opened #509 fix(adminui): a Sparkplug metric whose name contains / cannot be browse-committed 2026-07-27 13:50:29 -04:00

Opened #510 fix(adminui): _canRebirth is captured at browse-open, so a reaped session still draws Request-rebirth 2026-07-27 13:50:30 -04:00

Opened #511 feat(mqtt): Sparkplug primary-host STATE publishing (ActAsPrimaryHost) 2026-07-27 13:50:30 -04:00

Opened #512 refactor(mqtt): .Browser references .Driver — extract the client-options builder so the layering exception can go 2026-07-27 13:50:30 -04:00

Opened #513 fix(adminui): the MQTT tag editor writes a meaningless payloadFormat into a Sparkplug tag blob 2026-07-27 13:50:31 -04:00

Opened #514 fix(adminui): Request-rebirth cannot be armed on a Sparkplug plant that has not birthed since the browse window opened 2026-07-27 13:51:16 -04:00

Opened #515 feat(mqtt): Sparkplug DataSet / Template / PropertySet metric support 2026-07-27 13:51:16 -04:00

Opened #516 Driver config edits are silently discarded on Modbus/FOCAS/OpcUaClient (deployment still seals green) 2026-07-27 13:51:59 -04:00

Opened #517 Driver health is published AFTER teardown, so GetHealth() can report Healthy with a disposed client 2026-07-27 13:52:03 -04:00

Opened #518 IRediscoverable + IHostConnectivityProbe events have no consumer in src/ (9 drivers raise into the void); CLAUDE.md Change Detection is wrong 2026-07-27 13:52:08 -04:00

Opened #519 No driver's Bad/Uncertain status sub-code reaches an OPC UA client (3-state OpcUaQuality collapse) 2026-07-27 13:52:12 -04:00

Opened #520 Node ACLs are authored and deployed but never enforced — wire IPermissionEvaluator or retire the surface 2026-07-27 18:35:58 -04:00

Opened #521 IHostConnectivityProbe / DriverHostStatus: dead surface — build the publisher or delete it 2026-07-27 18:55:13 -04:00

Opened #522 Driver stability tiers are inert: every driver runs Tier A — pass real tiers or delete the machinery 2026-07-27 19:54:08 -04:00

Opened #523 Remove the periodic 5-minute device re-browse (tag-set drift detection) from FOCAS/TwinCAT/MTConnect/AbCip 2026-07-28 13:26:41 -04:00