From d898262c4aa3018f72a01858a796037973237767 Mon Sep 17 00:00:00 2001 From: Joseph Doherty Date: Thu, 8 Oct 2026 09:08:07 -0400 Subject: [PATCH] docs(claude): #609 removal tombstones tracker + hub against late writers Claude-Session: https://claude.ai/code/session_01Ef2ozxS7QPanGT8uoATbTe --- CLAUDE.md | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) 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