2026-07-23 - 2026-07-30
Overview
1 Pull request merged by 1 user
Merged
#506 feat(mtconnect): read-only MTConnect Agent driver (P1) — 23 tasks + 5-leg live gate
20 Issues closed from 1 user
Closed
#523 Remove the periodic 5-minute device re-browse (tag-set drift detection) from FOCAS/TwinCAT/MTConnect/AbCip
Closed
#507 feat(raw): re-migrate discovered-node injection onto the raw device subtree — IRediscoverable is inert in v3
Closed
#516 Driver config edits are silently discarded on Modbus/FOCAS/OpcUaClient (deployment still seals green)
Closed
#518 IRediscoverable + IHostConnectivityProbe events have no consumer in src/ (9 drivers raise into the void); CLAUDE.md Change Detection is wrong
Closed
#490 feat(scripteditor): tag-path completion for absolute RawPaths
Closed
#505 AdminUI cluster-node editor was dead: HTTP 500 on load (InputNumber<byte>) + Save a silent no-op (NodeId regex forbids ':')
Closed
#488 feat(drivers): periodic reconcile of desired vs actual driver subscriptions
Closed
#499 DraftValidator cannot see ClusterNode.DriverConfigOverridesJson — the third driver-config persistence surface
Closed
#493 Phase 5 telemetry: existing deployments must populate ClusterNode.GrpcPort (seed only backfills fresh installs)
Closed
#501 Two alarm-ack tests assert an absence with AwaitAssert, so they pass instantly and prove nothing
Closed
#503 Flaky under load: Galaxy EventPumpBoundedChannelTests.Drops_newest_when_channel_fills_and_records_metric
Closed
#492 2-node keep-oldest cannot survive an oldest-node crash (survivor downs ITSELF) — evaluate ScadaBridge's auto-down decision
Closed
#504 bug(adminui): /scripts is a hard 500 when any Script.SourceHash is shorter than 12 chars
Closed
#487 bug(alarms): an active scripted alarm under-reports as normal after a full-rebuild deploy
Closed
#496 Sql driver: implement the §8.1 catalog identifier-validation gate (FF-1)
Closed
#497 Wrong OPC UA status-code constants in three existing drivers (FF-2)
Closed
#498 Deploy-time guard: reject a Sql DriverConfig blob carrying a connectionString key (FF-3)
Closed
#500 Intermittent single-test failure in Runtime.Tests under full-sweep load (unidentified)
Closed
#502 50 sub-second presence budgets remain in Runtime.Tests (the class behind three of #500's five defects)
Closed
#494 /health/active returns 200 on every node — the tier cannot identify the active node
29 Issues created by 1 user
Opened
#493 Phase 5 telemetry: existing deployments must populate ClusterNode.GrpcPort (seed only backfills fresh installs)
Opened
#494 /health/active returns 200 on every node — the tier cannot identify the active node
Opened
#496 Sql driver: implement the §8.1 catalog identifier-validation gate (FF-1)
Opened
#497 Wrong OPC UA status-code constants in three existing drivers (FF-2)
Opened
#498 Deploy-time guard: reject a Sql DriverConfig blob carrying a connectionString key (FF-3)
Opened
#499 DraftValidator cannot see ClusterNode.DriverConfigOverridesJson — the third driver-config persistence surface
Opened
#500 Intermittent single-test failure in Runtime.Tests under full-sweep load (unidentified)
Opened
#501 Two alarm-ack tests assert an absence with AwaitAssert, so they pass instantly and prove nothing
Opened
#502 50 sub-second presence budgets remain in Runtime.Tests (the class behind three of #500's five defects)
Opened
#503 Flaky under load: Galaxy EventPumpBoundedChannelTests.Drops_newest_when_channel_fills_and_records_metric
Opened
#504 bug(adminui): /scripts is a hard 500 when any Script.SourceHash is shorter than 12 chars
Opened
#505 AdminUI cluster-node editor was dead: HTTP 500 on load (InputNumber<byte>) + Save a silent no-op (NodeId regex forbids ':')
Opened
#507 feat(raw): re-migrate discovered-node injection onto the raw device subtree — IRediscoverable is inert in v3
Opened
#508 feat(mqtt): write-through (IWritable) — Sparkplug NCMD/DCMD + plain publish (design P3)
Opened
#509 fix(adminui): a Sparkplug metric whose name contains / cannot be browse-committed
Opened
#510 fix(adminui): _canRebirth is captured at browse-open, so a reaped session still draws Request-rebirth
Opened
#511 feat(mqtt): Sparkplug primary-host STATE publishing (ActAsPrimaryHost)
Opened
#512 refactor(mqtt): .Browser references .Driver — extract the client-options builder so the layering exception can go
Opened
#513 fix(adminui): the MQTT tag editor writes a meaningless payloadFormat into a Sparkplug tag blob
Opened
#514 fix(adminui): Request-rebirth cannot be armed on a Sparkplug plant that has not birthed since the browse window opened
Opened
#515 feat(mqtt): Sparkplug DataSet / Template / PropertySet metric support
Opened
#516 Driver config edits are silently discarded on Modbus/FOCAS/OpcUaClient (deployment still seals green)
Opened
#517 Driver health is published AFTER teardown, so GetHealth() can report Healthy with a disposed client
Opened
#518 IRediscoverable + IHostConnectivityProbe events have no consumer in src/ (9 drivers raise into the void); CLAUDE.md Change Detection is wrong
Opened
#519 No driver's Bad/Uncertain status sub-code reaches an OPC UA client (3-state OpcUaQuality collapse)
Opened
#520 Node ACLs are authored and deployed but never enforced — wire IPermissionEvaluator or retire the surface
Opened
#521 IHostConnectivityProbe / DriverHostStatus: dead surface — build the publisher or delete it
Opened
#522 Driver stability tiers are inert: every driver runs Tier A — pass real tiers or delete the machinery
Opened
#523 Remove the periodic 5-minute device re-browse (tag-set drift detection) from FOCAS/TwinCAT/MTConnect/AbCip
3 Unresolved Conversations
Open
#491
test(historian): live end-to-end gate for continuous-historization value capture
Open
#489
feat(raw): hot-rebind a renamed raw tag's live value without a node recreate
Open
#468
Universal discovery browser: full controller-tree render is live-verify-blocked by the ab_server fixture (no @tags walk)