docs: record the supervised-bus cycle (v0.8) and retire the OnceLock idiom
ROADMAP gains a v0.8 entry: the smarm 415effb lifetime change as root cause, the description/instantiation split, the tree shape, the accepted per-call resolution cost, and what stays open (RegistryName newtype, PubSub's unprotectable const, dynamic session actors, hammer.sh's missing feature matrix). The v0.7 "unreproduced test failure" open item is closed out and pointed at it — it was this hang, hidden because hammer.sh builds with default features while the failure needs --all-features load. README and the two module headers still taught the v0.5 rules: in-runtime-only construction, the non-static Arc<OnceLock<..>> cell, and "a relay must never hold a PubSub clone". None of those are true any more; they are replaced by what actually holds now, with a note on what changed for anyone who learnt the old shape. session.rs also gains an honest note that its session actors are the last lifetime in urus implied by a drop rather than stated — they are dynamic, so a fixed ChildSpec list cannot hold them, and the trigger is at least a command now rather than a refcount.
This commit is contained in:
+11
-4
@@ -22,10 +22,17 @@
|
||||
//! the transport is the point. Its exits: explicit leave, rejected
|
||||
//! (re)join, TTL expiry, buffer cap, pubsub relay death, or the
|
||||
//! registry's control sender dropping — which is exactly the shutdown
|
||||
//! chain (conns die -> router `Arc`s drop -> registry's inbox closes
|
||||
//! -> registry exits -> control senders drop -> every parked session
|
||||
//! wakes on the closed control arm, terminates, and exits; `AllDone`
|
||||
//! composes without links).
|
||||
//! chain (the supervisor shuts the registry down after the endpoint
|
||||
//! has drained -> the registry's state drops -> control senders drop
|
||||
//! -> every parked session wakes on the closed control arm,
|
||||
//! terminates, and exits; `AllDone` composes without links).
|
||||
//!
|
||||
//! Note this is the last lifetime in urus implied by a drop rather
|
||||
//! than stated: sessions are dynamic (one per key), so a fixed
|
||||
//! `ChildSpec` list cannot hold them. The trigger is now a command
|
||||
//! rather than a refcount, which is what the v0.8 cycle was about, but
|
||||
//! a dynamic supervisor (OTP's `simple_one_for_one`) is the honest
|
||||
//! shape if smarm grows one.
|
||||
//!
|
||||
//! As-landed decisions (veto by diff):
|
||||
//! - **Every attach calls `ch.join()` again** on the same instance —
|
||||
|
||||
Reference in New Issue
Block a user