Presenter notes
Top-down reading: a request enters through a host (Electron Desktop, the TUI, the Pi adapter with /arvantti or your own shell), crosses the stable CLI (bin/arvantti.mjs → src/cli: parseCliArgs, executeCli, formatCliResult) and reaches the Core (src/core: project-policy, guardians, grant-document, task-contract, task-receipt, work-intake, session-assignments, brain-repository, context-measurement...). The Core does not do I/O nor does it contain an LLM loop: the adapters (src/adapters: pi, terminal with node-pty and ANSI buffer, brain with sqlite-vec, obsidian-vault for SDD, local-store in .arvantti/, transcript, process) do the job effectively. There is one adapter for each AI code harness (Pi, Claude Code, Antigravity, GPT Codex, OpenCode, Kimi), always slim and delegating to the CLI. The execution layer is real PTYs (pseudo-terminals: real consoles created by program, with node-pty), authorized worktrees and foreground processes. Desktop, TUI, and CLI are not permission authorities; the policy is revalidated at the border of the effect. Cloudflare (ADR-0010, milestone H16) will be management, governance and knowledge sharing, never an execution host.