evolution: consolidate dead ends into comprehensive final table
Removed two inline 'Dead Ends and Reversals' tables scattered mid-document. Added single comprehensive table at the end covering all reversals from all phases — including hooks, event ring buffer, abstractions, namespace merges, concurrent-by-default rejection, and every other thing that was built and then killed.
This commit is contained in:
parent
8ead5c29e1
commit
155e4fe97b
|
|
@ -364,25 +364,6 @@ the remote host may have different tools, package managers, or init systems.
|
|||
Streaming via blocking reads. No polling.
|
||||
7. **Security by default** — sandboxed execution with explicit bypass,
|
||||
per-session identity.
|
||||
## Dead Ends and Reversals
|
||||
| What | Why it was removed |
|
||||
|------|-------------------|
|
||||
| MCP servers | Too heavyweight; scripts are simpler and faster |
|
||||
| TUI frontend | Replaced by `o` — a tiny shell script (40 lines of tmux) |
|
||||
| s/sh, s/bfg, s/bbg | Replaced by `generate`/`complete`/`route` 9P files |
|
||||
| `pl/` planning namespace | Over-engineered; plan file is sufficient |
|
||||
| Beads integration | External dependency for something a checklist file handles |
|
||||
| SSH agent proxy | Attack surface not worth the convenience |
|
||||
| Separate ollie-dbus daemon | Consolidated into olliesrv |
|
||||
| FUSE mounts | Replaced by standalone 9P client binary |
|
||||
| Tier routing (FAST/POWER) | Replaced by /route endpoint with real model discovery |
|
||||
| call_tool / pipe | Replaced by native tool registry with tool_load |
|
||||
| execute_code (multi-lang) | Simplified to shell-only; tool scripts handle language choice |
|
||||
| chatwait | Reverted; acme tails chat directly |
|
||||
| Header comment metadata | Replaced by .meta sidecar JSON; decouples metadata from language |
|
||||
| `contrib/` directory | Renamed to `data/`; nothing was community-contributed |
|
||||
| Script namespaces (s/, u/, x/) | Replaced by 9P request-response files |
|
||||
| D-Bus adapter | 9P streaming is superior; no polling, no offset tracking, no frozen GUIs |
|
||||
## Phase 13: 9P Streaming & D-Bus Removal (Jul 31)
|
||||
|
||||
The D-Bus adapter (`org.ollie.SessionManager`) is deleted. All clients now
|
||||
|
|
@ -642,37 +623,6 @@ ollie/ ← single Go module
|
|||
└── doc/ ← documentation
|
||||
```
|
||||
|
||||
## Dead Ends and Reversals (updated)
|
||||
| What | Why it was removed |
|
||||
|------|-------------------|
|
||||
| MCP servers | Too heavyweight; scripts are simpler and faster |
|
||||
| TUI frontend | Replaced by `o` — a tiny shell script (40 lines of tmux) |
|
||||
| s/sh, s/bfg, s/bbg | Replaced by `generate`/`complete`/`route` 9P files |
|
||||
| `pl/` planning namespace | Over-engineered; plan file is sufficient |
|
||||
| Beads integration | External dependency for something a checklist file handles |
|
||||
| SSH agent proxy | Attack surface not worth the convenience |
|
||||
| Separate ollie-dbus daemon | Consolidated into olliesrv |
|
||||
| FUSE mounts | Replaced by standalone 9P client binary |
|
||||
| Tier routing (FAST/POWER) | Replaced by /route endpoint with real model discovery |
|
||||
| call_tool / pipe | Replaced by native tool registry with tool_load |
|
||||
| execute_code (multi-lang) | Simplified to shell-only; tool scripts handle language choice |
|
||||
| chatwait | Reverted; acme tails chat directly |
|
||||
| Header comment metadata | Replaced by .meta sidecar JSON; decouples metadata from language |
|
||||
| `contrib/` directory | Renamed to `data/`; nothing was community-contributed |
|
||||
| Script namespaces (s/, u/, x/) | Replaced by 9P request-response files |
|
||||
| D-Bus adapter | 9P streaming is superior; no polling, no offset tracking, no frozen GUIs |
|
||||
| `fs/session/` sub-package | Flattened into `fs/` — no more sub-package indirection |
|
||||
| `cmd/olliesrv/bypass_tree.go` | Bypass tree handlers moved to `fs/bypassfiles.go` |
|
||||
| Per-session/agent timestamp IDs | Replaced by UUIDv4 — immutable `id` + mutable `name` |
|
||||
| Single-step session creation | Split into `session/new` + `session/{name}/agent/new` |
|
||||
| D-Bus-driven KDE frontends | Rewritten on pure 9P via plan9port `9p` binary |
|
||||
| Plasmoid/tray KDE components | Deleted — not useful enough to maintain |
|
||||
| Built-in tool handlers (shell, reasoning_think, tool_list, tool_load, tool_active) | Replaced by external scripts loaded via 9P `agent/{id}/tools` write |
|
||||
| Go-compiled tool registry in `tools/builtin/` | Zero built-in tools — all tools are external scripts with `.meta` sidecars |
|
||||
| Embedded tool scripts in `ollie-remote` | Remote uses `$OLLIE_TOOLS_PATH` from environment; tools deployed via tarball over SSH |
|
||||
| SSH binary transfer (gzip+base64+hash-verify) | Replaced by simple `tar | ssh` tarball of `~/.config/ollie/` |
|
||||
| `toolsrv.loaded` / `toolsrv.rev` 9P files | Removed — `tools` file handles both list and load |
|
||||
|
||||
## Phase 18: Zero Built-in Tools (Aug 2–3)
|
||||
|
||||
The most radical simplification yet: **zero tools compiled into the Go binary.** Every tool — including `shell` and `reasoning_think` — is now an external script loaded dynamically through the 9P filesystem.
|
||||
|
|
@ -1379,3 +1329,70 @@ The turn state machine in `turn.go` was simplified.
|
|||
Commit count: ~50 commits over 2 days. Net code change: approximately -800 lines.
|
||||
The system does more with less.
|
||||
|
||||
---
|
||||
|
||||
## Dead Ends and Reversals
|
||||
|
||||
Everything that was built and then killed, in roughly chronological order.
|
||||
|
||||
| What | Why it was removed |
|
||||
|------|-------------------|
|
||||
| MCP servers (denote-mcp, 9beads-mcp) | Too heavyweight; scripts are simpler and faster |
|
||||
| TUI frontend | Replaced by `o` — a tiny shell script (40 lines of tmux) |
|
||||
| `pl/` planning namespace | Over-engineered; plan file is sufficient |
|
||||
| Beads integration | External dependency for something a checklist file handles |
|
||||
| `plan_create` / `plan_complete` / `task_add` / `task_check` tools | Five planning iterations before settling on a single markdown file |
|
||||
| SSH agent proxy | Attack surface not worth the convenience |
|
||||
| Separate ollie-dbus daemon (ollied) | Consolidated into olliesrv, then killed entirely |
|
||||
| D-Bus adapter (`org.ollie.SessionManager`) | 9P streaming is superior; no polling, no offset tracking, no frozen GUIs |
|
||||
| D-Bus-driven KDE frontends | Rewritten on pure 9P via plan9port `9p` binary |
|
||||
| Plasmoid / tray KDE components | Not useful enough to maintain |
|
||||
| FUSE mounts | Replaced by standalone 9P client binary; FUSE can't do blocking reads |
|
||||
| Tier routing (FAST/POWER) | Replaced by `/route` endpoint with real model discovery |
|
||||
| call_tool / pipe | Replaced by native tool registry with `tool_load` |
|
||||
| execute_code (multi-language) | Simplified to shell-only; tool scripts handle language choice |
|
||||
| chatwait | Reverted; acme tails `chat` directly |
|
||||
| Header comment metadata (`ollie:prompt`, `ollie:tier`, `args_json:`) | Replaced by `.meta` sidecar JSON; decouples metadata from language |
|
||||
| `contrib/` directory | Renamed to `data/`; nothing was community-contributed |
|
||||
| Script namespaces (s/, u/, x/) | Replaced by 9P request-response files |
|
||||
| s/sh, s/bfg, s/bbg | Replaced by `generate`/`complete`/`route` 9P files |
|
||||
| `agent.Core` interface | Nobody else implemented it; just indirection |
|
||||
| `Dispatcher` indirection in toolsrv | `toolsrv.Server` called directly |
|
||||
| `execute/` package | Merged into `tools/`; 3 functions didn't need a package |
|
||||
| `mgr/` package (Manager struct) | Replaced by package functions; `*fs.Tree` IS the collection |
|
||||
| `fs/session/` sub-package (6 files, ~3,100 lines) | Flattened into `fs/` — no more sub-package indirection |
|
||||
| `cmd/olliesrv/bypass_tree.go` | Bypass tree handlers moved to `fs/bypassfiles.go` |
|
||||
| Per-session/agent timestamp IDs | Replaced by UUIDv4 — immutable `id` + mutable `name` |
|
||||
| Single-step session creation | Split into `session/new` + `session/{name}/agent/new` |
|
||||
| Imperative filesystem (stat/walk/read/write per node) | Replaced by declarative EDSL (`fsedsl/`) |
|
||||
| Event ring buffer (100-slot circular buffer + sync.Cond) | Lasted one day; replaced by `pubsub` library. Off-by-one bugs, race conditions, panics. |
|
||||
| Built-in tool handlers (shell, reasoning_think, tool_list, tool_load, tool_active) | Replaced by external scripts loaded via 9P `agent/{id}/tools` write |
|
||||
| Go-compiled tool registry in `tools/builtin/` | Zero built-in tools — all tools are external scripts with `.meta` sidecars |
|
||||
| Embedded tool scripts in `ollie-remote` | Remote uses `$OLLIE_TOOLS_PATH` from environment; tools deployed via tarball |
|
||||
| SSH binary transfer (gzip+base64+hash-verify) | Replaced by simple `tar | ssh` of `~/.config/ollie/` |
|
||||
| `toolsrv.loaded` / `toolsrv.rev` 9P files | Removed — `tools` file handles both list and load |
|
||||
| `cmd/Ollie` (Acme frontend binary) | Replaced by `o` CLI composing acme |
|
||||
| `mount/` package | FUSE mount replaced by `ollie-9p` direct 9P client |
|
||||
| `ollie-watchdog` script | No FUSE stale mount issues with 9P client |
|
||||
| `doc/experiments/` | Historical experiments; moved to git history |
|
||||
| `doc/help.md` | Generated dynamically from `Doc()` strings in spec |
|
||||
| Hooks system (agentSpawn, preTurn, postTurn, preTool, postTool, preCompact, postCompact, turnError) | Never solved real problems; prompt handles init, sandbox handles security, retry handles errors |
|
||||
| `backend/noop.go` (test backend) | Never used; tests use real backends or mocks |
|
||||
| `backend/oneshot.go` | Never used; `generate` file handles one-shot |
|
||||
| `toolsrv/schema.go` (schema validation) | Never enabled |
|
||||
| `data/tools/route.meta` (model routing tool) | Replaced by explicit `/model` commands |
|
||||
| TaskState subsystem | Removed entirely (−246 lines); no use case survived |
|
||||
| `fifo.in` + `fifo.out` | Merged to single `fifo` (write=enqueue, read=dequeue) |
|
||||
| `cost` + `usage` + `ctxsz` files | Merged to `stats` (key=value lines) |
|
||||
| `connection`, `context`, `tail`, `offset`, `prompt.prev` agent files | Removed or moved to ctl |
|
||||
| AllowTools field | Tools loaded dynamically; static allowlists served no purpose |
|
||||
| PRIME_* env vars | Replaced by typed `Platform` + `IsGitRepo` fields |
|
||||
| `elevate` naming | Renamed to `bypass` throughout |
|
||||
| In-process toolsrv (Go library) | Replaced by separate 9P server process with socket boundary |
|
||||
| Binary ReadOnly/not tool batching | Replaced by scope-based conflict scheduling (read/write/global) |
|
||||
| `AgentLog` / `SessionNode` / `RootState` abstractions in fs/ | Eliminated; state moved to where data lives (agent/, session/) |
|
||||
| Named sandbox profiles (default, restricted, remote) | One config: `sandbox.yaml`. Multi-profile system was unused complexity |
|
||||
| `TurnCtx` struct | Eliminated; loop functions became methods on `*Agent` |
|
||||
| Bypass via custom Unix socket protocol | Replaced by bypass via 9P namespace |
|
||||
| Concurrent-by-default tool execution | Rejected: turns one reasoning step into N generation cycles with partial info — sequential but slower and more expensive |
|
||||
|
||||
|
|
|
|||
Loading…
Reference in New Issue