🛑 Panes only, and the asymmetry is load-bearing. A host registers once, at module
import, and answers isActive() about a panel it may or may not still have — that is
precisely what the predicate is for. Clearing the hosts too would leave a Core.destroy()
followed by a Core.create() with no host at all, because nothing re-imports the module:
every later openPane would answer false, and the panel would simply never open again.
⚠️ Written the other way round first, with a plausible rationale about hosts closing over
torn-down state. The registry test caught it — three cases red — which is the only reason
it is not in the shipped bundle.
Drops every registered pane. The HOSTS stay.
🛑 Panes only, and the asymmetry is load-bearing. A host registers once, at module import, and answers
isActive()about a panel it may or may not still have — that is precisely what the predicate is for. Clearing the hosts too would leave aCore.destroy()followed by aCore.create()with no host at all, because nothing re-imports the module: every lateropenPanewould answerfalse, and the panel would simply never open again.⚠️ Written the other way round first, with a plausible rationale about hosts closing over torn-down state. The registry test caught it — three cases red — which is the only reason it is not in the shipped bundle.