Skip to content
Merged
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
61 changes: 38 additions & 23 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -165,35 +165,50 @@ 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
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 --> 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"]
graph LR
SUP["RLM.Supervisor · one_for_one"]

subgraph RunScope["Per-run scope — owned and linked by RLM.Run"]
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"]
SUP --> REG["RLM.Registry · process lookup"]
SUP --> PS["Phoenix.PubSub · event broadcasting"]
SUP --> TS["RLM.TaskSupervisor · bash tool tasks"]
SUP --> RUNSUP["RLM.RunSup · DynamicSupervisor"]

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"]

subgraph RunScope["Per-run scope — owned and linked by RLM.Run"]
direction TB
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 · depth · status\nnot 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
Expand Down