How to remove dead "fake" nodes?

In the course of “SmartStart” inclusion, my controller often adds a handful of “fake” nodes before a successfully adding the real node (if at all). It seems like these attempts time out at ProtocolInfo or NodeInfo… but leave a residual numbered node in my table in Z-wave JS UI, with either “Unknown” device/manufacturer, or correct device/manufacturer but no name or location. Even after days, these do not go away.

I would like to remove them, but the “Remove Failed Node” command in Z-Wave JS UI
doesn’t actually remove them. Depending on the node it either (a) completes successfully, but the node remains in the list, (b) fails because the node cannot be found (?), or (c) fails because the node is not dead (even though it shows a red frowning face under “Status” and “Last Active” is “Never”). Is there any way to force removal of a dead node like this?

Relatedly: I see references to “failed” nodes, to “dead nodes”, and to nodes with red frowning faces in the Status column in Z-Wave JS UI. Do these all mean the same thing or is there a difference between “failed” and “dead”?

Thank you!

System setup:

  • Home Assistant running on a Home Assistant Green
  • Zooz ZST39 LR controller / FW v1.20 / SDK v7.19.3
  • Core v2024.6.2 / Supervisor v2024.06.0 / OS v12.3 / Frontend 20240610.0
  • Z-Wave JS UI 9.13.4 / Z-Wave JS 12.10.0
  • Typical memory and CPU usage are quite low (~1-2GB out of 4Gb, and usually single digit % of CPU)
  • Approx 70 Z-wave nodes (Mostly 800 series included as standard Z-wave. A few 700 or 500 series devices; and a few 800 series devices included as Z-wave LR)

These may not be ephemeral as per our discussion in the other thread. I don’t actually know, but it seems that since the nodes are in the “Protocol” state and even one of them has been heard from, I think it means that they were actually included to the point where the node-IDs are now stored on the Z-Stick, its just that ZWaveJS has not been able to interview them (probably because those node-IDs are not actually used by any node). If you can’t individually remove them via the “Remove Failed Node”, then seems like a bug.