Block a user
No driver's Bad/Uncertain status sub-code reaches an OPC UA client (3-state OpcUaQuality collapse)
IRediscoverable + IHostConnectivityProbe events have no consumer in src/ (9 drivers raise into the void); CLAUDE.md Change Detection is wrong
Driver health is published AFTER teardown, so GetHealth() can report Healthy with a disposed client
Driver config edits are silently discarded on Modbus/FOCAS/OpcUaClient (deployment still seals green)
fix(adminui): Request-rebirth cannot be armed on a Sparkplug plant that has not birthed since the browse window opened
feat(mqtt): Sparkplug
DataSet / Template / PropertySet metric support
fix(adminui): the MQTT tag editor writes a meaningless
payloadFormat into a Sparkplug tag blob
fix(adminui):
_canRebirth is captured at browse-open, so a reaped session still draws Request-rebirth
feat(mqtt): Sparkplug primary-host STATE publishing (
ActAsPrimaryHost)
refactor(mqtt):
.Browser references .Driver — extract the client-options builder so the layering exception can go
fix(adminui): a Sparkplug metric whose name contains
/ cannot be browse-committed
feat(mqtt): write-through (
IWritable) — Sparkplug NCMD/DCMD + plain publish (design P3)
feat(raw): re-migrate discovered-node injection onto the raw device subtree —
IRediscoverable is inert in v3
feat(mtconnect): read-only MTConnect Agent driver (P1) — 23 tasks + 5-leg live gate