diff --git a/ROADMAP.md b/ROADMAP.md index 6d372dc..e2bea06 100644 --- a/ROADMAP.md +++ b/ROADMAP.md @@ -164,10 +164,18 @@ gen_server time layer (RFC 015, shipped above) lands on this, adding only the channel-targeting `send_after_to` sibling. #### Introspection — process_info / get_state / tree dump -`trace.rs` is the seed. What an actor is parked on, queue depth, stack size; a -gen_server state snapshot; a supervision-tree walk. The native edge over tokio — -actors already carry pid, name, parent where tokio tasks are anonymous — so it -costs little and differentiates a lot. Needs an RFC. +✅ SHIPPED (RFC 016) — runtime introspection & observability, superseding the +RFC 000 / 006 / 009 sketches. The mechanism is an internal synchronous read, +not a C ABI: `snapshot()` / `actor_info(pid)` return owned data (pid, names, +fine scheduling state, parent edge, trap, monitor/link/joiner counts, mailbox +depth) carrying `SNAPSHOT_FORMAT_VERSION` (Chunk 1, ps-semantics tearing); +`tree()` folds that into a parentage forest with orphan re-rooting (Chunk 3). +Per-actor counters — timeslice overruns, messages-received, and a feature-gated +approximate time budget — ride hot `AtomicU64` slot fields (Chunk 2). The live +`observer` gen_server is the read transport over that primitive, behind the +off-by-default `observer` feature (Chunk 4); it is the read half of the future +RFC 003 control plane. Wedged-runtime dumps stay gdb's job, and park-reason +detail / C ABI are explicit non-goals. #### Worker pool behaviour Supervised, interchangeable workers with restart semantics over a shared inbox