From 326302e2137103d6b16dc4320b10755bb1ef3868 Mon Sep 17 00:00:00 2001 From: Claude Date: Fri, 27 Feb 2026 15:42:04 +0000 Subject: [PATCH 1/3] =?UTF-8?q?docs:=20fix=20supervision=20tree=20diagram?= =?UTF-8?q?=20=E2=80=94=20switch=20to=20LR=20layout=20to=20reduce=20width?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Changed graph TD to graph LR so the 11 direct children of RLM.Supervisor stack vertically instead of expanding horizontally. Added direction TB inside the RunScope subgraph to keep per-run nodes in a readable top-down order. Also split the long EventStore and ETS labels onto shorter lines. https://claude.ai/code/session_01FXHPnRyLyHkzDaoNT7Tfgj --- README.md | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/README.md b/README.md index fbde715..bb62a44 100644 --- a/README.md +++ b/README.md @@ -165,14 +165,14 @@ results = parallel_query(["chunk1", "chunk2"], model_size: :small) > A *GenServer* is a long-lived process with a message inbox — Elixir's version of an actor. ```mermaid -graph TD +graph LR SUP["RLM.Supervisor\none_for_one"] SUP --> REG["RLM.Registry\nnamed process lookup"] SUP --> PS["Phoenix.PubSub\nevent broadcasting"] SUP --> TS["RLM.TaskSupervisor\nbash tool tasks"] SUP --> RUNSUP["RLM.RunSup\nDynamicSupervisor"] - SUP --> ES["RLM.EventStore\nDynamicSupervisor · EventLog Agents"] + SUP --> ES["RLM.EventStore\nDynamicSupervisor\nEventLog Agents"] SUP --> TEL["RLM.Telemetry\nhandler attachment"] SUP --> TRACE["RLM.TraceStore\n:dets persistence"] SUP --> SWEEP["EventLog.Sweeper\nperiodic GC"] @@ -183,6 +183,7 @@ graph TD RUNSUP --> RUN["RLM.Run\n:temporary"] subgraph RunScope["Per-run scope — owned and linked by RLM.Run"] + direction TB WD["DynamicSupervisor\nworker pool"] EVALSUP["Task.Supervisor\neval tasks"] WD --> W1["RLM.Worker :temporary"] @@ -193,7 +194,7 @@ graph TD RUN --> WD RUN --> EVALSUP - ETS[/"ETS table\nspan_id → parent_span_id · depth · status\nnot OTP supervision"/] + ETS[/"ETS table\nspan_id · parent_span_id\ndepth · status\nnot OTP supervision"/] RUN -. "tracks worker relationships" .-> ETS style SUP fill:#ede9fe,stroke:#7c3aed,color:#1a1e27 From 588ccbc81d8a3aeda89119ec8f1e6241c03f771e Mon Sep 17 00:00:00 2001 From: Claude Date: Fri, 27 Feb 2026 15:46:06 +0000 Subject: [PATCH 2/3] docs: remove \n from supervision diagram node labels MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Replace all \n escape sequences in Mermaid node labels with · separator on a single line, as the renderer displays \n as literal text rather than a newline. https://claude.ai/code/session_01FXHPnRyLyHkzDaoNT7Tfgj --- README.md | 42 +++++++++++++++++++++--------------------- 1 file changed, 21 insertions(+), 21 deletions(-) diff --git a/README.md b/README.md index bb62a44..0b5ecfb 100644 --- a/README.md +++ b/README.md @@ -166,35 +166,35 @@ results = parallel_query(["chunk1", "chunk2"], model_size: :small) ```mermaid graph LR - SUP["RLM.Supervisor\none_for_one"] - - SUP --> REG["RLM.Registry\nnamed process lookup"] - SUP --> PS["Phoenix.PubSub\nevent broadcasting"] - SUP --> TS["RLM.TaskSupervisor\nbash tool tasks"] - SUP --> RUNSUP["RLM.RunSup\nDynamicSupervisor"] - SUP --> ES["RLM.EventStore\nDynamicSupervisor\nEventLog Agents"] - SUP --> TEL["RLM.Telemetry\nhandler attachment"] - SUP --> TRACE["RLM.TraceStore\n:dets persistence"] - SUP --> SWEEP["EventLog.Sweeper\nperiodic GC"] - SUP --> WEBTEL["RLMWeb.Telemetry\nPhoenix metrics"] - SUP --> DNS["DNSCluster\ncluster discovery"] - SUP --> EP["RLMWeb.Endpoint\nPhoenix / LiveView"] - - RUNSUP --> RUN["RLM.Run\n:temporary"] + SUP["RLM.Supervisor · one_for_one"] + + SUP --> REG["RLM.Registry · process lookup"] + SUP --> PS["Phoenix.PubSub · event broadcasting"] + SUP --> TS["RLM.TaskSupervisor · bash tool tasks"] + SUP --> RUNSUP["RLM.RunSup · DynamicSupervisor"] + SUP --> ES["RLM.EventStore · EventLog Agents"] + SUP --> TEL["RLM.Telemetry · handler attachment"] + SUP --> TRACE["RLM.TraceStore · :dets persistence"] + SUP --> SWEEP["EventLog.Sweeper · periodic GC"] + SUP --> WEBTEL["RLMWeb.Telemetry · Phoenix metrics"] + SUP --> DNS["DNSCluster · cluster discovery"] + SUP --> EP["RLMWeb.Endpoint · Phoenix / LiveView"] + + RUNSUP --> RUN["RLM.Run · :temporary"] subgraph RunScope["Per-run scope — owned and linked by RLM.Run"] direction TB - WD["DynamicSupervisor\nworker pool"] - EVALSUP["Task.Supervisor\neval tasks"] - WD --> W1["RLM.Worker :temporary"] - WD --> W2["RLM.Worker :temporary"] - EVALSUP --> ET["eval Task\nper iteration"] + WD["DynamicSupervisor · worker pool"] + EVALSUP["Task.Supervisor · eval tasks"] + WD --> W1["RLM.Worker · :temporary"] + WD --> W2["RLM.Worker · :temporary"] + EVALSUP --> ET["eval Task · per iteration"] end RUN --> WD RUN --> EVALSUP - ETS[/"ETS table\nspan_id · parent_span_id\ndepth · status\nnot OTP supervision"/] + ETS[/"ETS · span_id, parent_span_id, depth, status · not OTP supervision"/] RUN -. "tracks worker relationships" .-> ETS style SUP fill:#ede9fe,stroke:#7c3aed,color:#1a1e27 From 3746e86f29de08b3e3c66ed4c8a863f1524847b5 Mon Sep 17 00:00:00 2001 From: Claude Date: Fri, 27 Feb 2026 15:47:46 +0000 Subject: [PATCH 3/3] docs: group observability and web layer nodes into subgraphs Collapse TEL, TRACE, ES, SWEEP into an Observability subgraph and WEBTEL, DNS, EP into a Web Layer subgraph. This reduces visual clutter while keeping all nodes visible and labeled. https://claude.ai/code/session_01FXHPnRyLyHkzDaoNT7Tfgj --- README.md | 32 +++++++++++++++++++++++--------- 1 file changed, 23 insertions(+), 9 deletions(-) diff --git a/README.md b/README.md index 0b5ecfb..2820568 100644 --- a/README.md +++ b/README.md @@ -172,13 +172,28 @@ graph LR SUP --> PS["Phoenix.PubSub · event broadcasting"] SUP --> TS["RLM.TaskSupervisor · bash tool tasks"] SUP --> RUNSUP["RLM.RunSup · DynamicSupervisor"] - SUP --> ES["RLM.EventStore · EventLog Agents"] - SUP --> TEL["RLM.Telemetry · handler attachment"] - SUP --> TRACE["RLM.TraceStore · :dets persistence"] - SUP --> SWEEP["EventLog.Sweeper · periodic GC"] - SUP --> WEBTEL["RLMWeb.Telemetry · Phoenix metrics"] - SUP --> DNS["DNSCluster · cluster discovery"] - SUP --> EP["RLMWeb.Endpoint · Phoenix / LiveView"] + + subgraph Obs["Observability"] + direction TB + ES["RLM.EventStore · EventLog Agents"] + TEL["RLM.Telemetry · handler attachment"] + TRACE["RLM.TraceStore · :dets"] + SWEEP["EventLog.Sweeper · periodic GC"] + end + SUP --> ES + SUP --> TEL + SUP --> TRACE + SUP --> SWEEP + + subgraph Web["Web Layer"] + direction TB + WEBTEL["RLMWeb.Telemetry · metrics"] + DNS["DNSCluster · cluster discovery"] + EP["RLMWeb.Endpoint · Phoenix / LiveView"] + end + SUP --> WEBTEL + SUP --> DNS + SUP --> EP RUNSUP --> RUN["RLM.Run · :temporary"] @@ -190,11 +205,10 @@ graph LR WD --> W2["RLM.Worker · :temporary"] EVALSUP --> ET["eval Task · per iteration"] end - RUN --> WD RUN --> EVALSUP - ETS[/"ETS · span_id, parent_span_id, depth, status · not OTP supervision"/] + ETS[/"ETS · span_id, parent, depth, status · not OTP supervision"/] RUN -. "tracks worker relationships" .-> ETS style SUP fill:#ede9fe,stroke:#7c3aed,color:#1a1e27