diff --git a/doc/EVOLUTION.md b/doc/EVOLUTION.md index b0ddd70..6c7ad4a 100644 --- a/doc/EVOLUTION.md +++ b/doc/EVOLUTION.md @@ -5,47 +5,44 @@ How the Ollie system-of-systems emerged and evolved. ## Timeline -```mermaid -gantt - title Ollie Architecture Evolution - dateFormat YYYY-MM-DD - axisFormat %b %d +``` + Apr May Jun Jul + |----|--------|--------|--------|--------| +Foundation + Monorepo + submodules === + 9P filesystem . ============ - section Foundation - Monorepo + submodules :2026-04-11, 3d - 9P filesystem interface :2026-04-14, 14d +Core Primitives + Session lifecycle (s/) ================== + Tool scripts ============ + Skills system ======== - section Core Primitives - Session lifecycle (s/) :2026-04-20, 21d - Tool scripts (file/memory/reasoning) :2026-04-28, 14d - Skills system :2026-05-01, 10d +Execution + execute_code ========== + Batch jobs (b/→s/bfg) ================== + Sandbox (landrun) ==================================== - section Execution - execute_code (multi-lang) :2026-05-10, 14d - Batch jobs (b/ → s/bfg,s/bbg) :2026-05-15, 21d - Sandbox (landrun) :2026-05-20, 60d +Multi-Agent + Subagent spawn ========== + Cascade orchestrator ========== + JIT agent generation ==== - section Multi-Agent - Subagent spawn :2026-05-25, 14d - Cascade orchestrator :2026-06-01, 14d - JIT agent generation :2026-06-15, 7d +Frontends + TUI + Emacs (ellie) ===================================== + Acme (Plan 9) ============================ + Web UI + httpgw ==================== + KDE/Plasma ======================== - section Frontends - TUI + Emacs (ellie) :2026-04-11, 60d - Acme (Plan 9) :2026-06-01, 45d - Web UI + httpgw :2026-05-28, 30d - KDE/Plasma (plasmoid + GUI) :2026-06-20, 40d +Control Planes + D-Bus adapter (ollied) =============== + D-Bus embedded in srv ===== - section Control Planes - D-Bus adapter (ollied) :2026-06-25, 21d - D-Bus embedded in olliesrv :2026-07-10, 7d - - section Late Evolution - Remote execution (split-brain) :2026-07-05, 14d - Elevation broker :2026-07-10, 14d - Tool registry (lazy-load) :2026-07-20, 9d - Reactions / feedback :2026-07-18, 7d - FUSE → 9P client migration :2026-07-20, 5d +Late Evolution + Remote execution ========== + Elevation broker ========== + Tool registry (lazy) ====== + Reactions / feedback ===== + FUSE → 9P client ==== ``` ## Phase 1: Monorepo Bootstrap (Apr 11) @@ -112,20 +109,35 @@ Three patterns emerged: - **cascade** — script-driven fan-out with `-max-workers`, `-retries`, optional synthesis step -```mermaid -flowchart TD - User -->|prompt| Parent[Parent Session] - Parent -->|subagent_spawn| W1[Worker 1] - Parent -->|subagent_spawn| W2[Worker 2] - Parent -->|subagent_spawn| W3[Worker 3] - W1 -->|write to prompt| Parent - W2 -->|write to prompt| Parent - W3 -->|write to prompt| Parent +``` + ┌──────────────────┐ + │ User prompt │ + └────────┬─────────┘ + │ + ┌────────▼─────────┐ + │ Parent Session │ + └──┬──────┬──────┬─┘ + subagent_ │ │ │ subagent_ + spawn │ │ │ spawn + ┌────────▼┐ ┌──▼───┐ ┌▼────────┐ + │Worker 1 │ │Wkr 2 │ │Worker 3 │ + └────┬────┘ └──┬───┘ └────┬────┘ + │ │ │ + └──────────┼───────────┘ + write to parent's prompt - Parent -->|cascade| Cascade[u/cascade script] - Cascade -->|spawn + throttle| CW1[Cascade Worker] - Cascade -->|spawn + throttle| CW2[Cascade Worker] - Cascade -->|synthesize| Parent + ┌────────▼─────────┐ + │ Parent Session │──── cascade ───┐ + └──────────────────┘ │ + ┌─────────▼──────────┐ + │ u/cascade │ + │ (spawn + throttle) │ + └───┬──────────┬─────┘ + │ │ + ┌────▼───┐ ┌───▼────┐ + │Cascade │ │Cascade │ + │Worker │ │Worker │ + └────────┘ └────────┘ ``` Inter-agent communication uses the filesystem: agents write to each other's @@ -133,32 +145,24 @@ Inter-agent communication uses the filesystem: agents write to each other's ## Phase 6: Frontend Proliferation -```mermaid -flowchart LR - subgraph Control Planes - 9P[9P File Server] - DBus[D-Bus Service] - end - - subgraph Frontends - SH[s/sh — shell] - Acme[ollie-acme] - El[ellie.el — Emacs] - KDE[ollie-kde — Plasma] - Web[Web UI] - end - - subgraph Server - Core[agent.Core] - end - - Core --- 9P - Core --- DBus - 9P --- SH - 9P --- Acme - 9P --- El - DBus --- KDE - DBus ---|httpgw| Web +``` + ┌─────────────────┐ + │ agent.Core │ + └───┬─────────┬───┘ + │ │ + ┌──────▼───┐ ┌───▼──────┐ + │ 9P Server│ │D-Bus Svc │ + └──┬──┬──┬┘ └──┬─────┬──┘ + │ │ │ │ │ + ┌─────────┘ │ └──┐ │ └──────────┐ + │ │ │ │ │ + ┌─────▼───┐ ┌────▼──┐ │ ├────────┐ ┌────▼────┐ + │ s/sh │ │ acme │ │ │ KDE │ │ Web UI │ + └─────────┘ └───────┘ │ │Plasmoid│ │(httpgw) │ + ┌────▼──┤KRunner │ └─────────┘ + │ellie │Kate │ + └───────┤GUI │ + └────────┘ ``` - **s/sh** — shell script frontend (bash, briefly rc, back to bash) @@ -171,19 +175,25 @@ flowchart LR ## Phase 7: Security Model (May – Jul) -```mermaid -flowchart TD - Agent -->|sandboxed| Landrun[landrun sandbox] - Landrun -->|restricted fs| Tools - Tools -->|needs escape| Elevate[x/elevate broker] - Elevate -->|socket| Broker[Integrated Broker] - Broker -->|user confirms| Action[Privileged Action] - - subgraph 9P Permissions - Owner[Session Owner — rw] - AgentID[Agent — restricted] - Peer[Peers — read-only] - end +``` + 9P Permissions Execution Sandbox + ────────────── ───────────────── + Owner → rw Agent + Agent → restricted │ + Peers → read-only ▼ + landrun sandbox (restricted fs) + │ + ▼ + Tool scripts + │ needs escape? + ▼ + x/elevate (socket broker) + │ + ▼ + Integrated Broker + │ user confirms + ▼ + Privileged Action ``` Evolution: