diff --git a/CLAUDE.md b/CLAUDE.md index c1c857df..2d0701b4 100644 --- a/CLAUDE.md +++ b/CLAUDE.md @@ -1106,7 +1106,12 @@ host logger factory (wired in `DriverFactoryBootstrap`; the FOCAS and TwinCAT fa `BadNotSupported`). - **FOCAS / AbLegacy:** background loops are joined (≤ 5 s) on shutdown. - **Driver removal (#609):** removing a driver releases its capability-invoker pipelines and resilience - tracker, *then* evicts its telemetry snapshots. + tracker, *then* evicts its telemetry snapshots. ⚠️ Both are **tombstoned**, not just cleared: the removed + child stops asynchronously and its in-flight subscribe/connect still completes through the invoker (and + emits Health) on the thread pool *after* `StopChild`, which used to resurrect the state — so a removed + driver's counters were republished forever. `Release` → tracker `Retire` and hub `Evict` ignore every later + write for that id until it is spawned again (`Create` → `Reinstate`, `SpawnChild` → `Readmit`). A + Watch/`Terminated` release would not work — the late writes land after the actor terminates. ## Library Preferences