diff --git a/AGENTS.md b/AGENTS.md index a759c6a..0491b4e 100644 --- a/AGENTS.md +++ b/AGENTS.md @@ -91,6 +91,15 @@ For direct Go testing, use the packages covered by `make test-core` and `make te - Go: `gofmt`, short variable names, error returns (no panics), table-driven tests. - Tool scripts: emit structured output (`STATUS=ok`, `STATUS=error`). Image/LSP tools return JSON content blocks. - Prompts: markdown, concise, example-driven. Follow the pattern in existing `tools-*.md` files. +## Stability & compatibility +Ollie is **experimental and unstable** software. The features and API are approaching stability but are not there yet. Optimize for a clean, minimal codebase over preserving existing behavior. + +- **Do not add backward-compatibility code.** No shims, deprecation aliases, legacy fallbacks, dual-format parsers, or "keep the old path working" branches. When something changes, change it fully and delete the old form. +- **Prefer subtraction.** Removing code is a feature. If a rename, refactor, or new design lets you delete the old thing, delete it — don't leave both. +- **Break callers freely.** Renaming a field, changing a wire format, or altering a `ctl` verb is fine; update all call sites in the same change. There are no external consumers to protect. +- **Extreme minimalism.** No pointless indirection, no defensive code for cases that can't happen, no configuration knobs "just in case." + +This is a standing preference, not a per-task instruction. Apply it without asking. ## Architecture (key concepts) 1. **One integration surface**: `olliesrv` exposes sessions and agents through a 9P2000 filesystem. Frontends include `o`, `ollie-9p`, KDE, Kate, Emacs, and scripts. Reads from `chat`, `statewait`, `eventwait`, and `feed` provide blocking/event-driven synchronization. 2. **Session and tool processes**: Each session owns an agent runtime in `olliesrv` and a separate `toolsrv` process. They communicate over an authenticated Unix socket using 9P. `toolclient` can respawn local toolsrv processes and can deploy/start toolsrv remotely over SSH with socket forwarding.