v4 grew by accretion and hid its own control flow inside an LLM. v5 starts over so the control flow is code. Four roles, and no fifth:
- the runtime
- Owns missions, tasks, and attempts. Decides what work exists, what may run, and when the mission is over. That decision is Rust, not a prompt.
- the agent
- Works inside one attempt. Proposes actions as data; never executes a side effect itself. Replaceable and non-authoritative.
- integrations
- Adapters behind the execution port and the model trait. The runtime holds them; the agent never does. Adding a provider is wiring, not a new crate.
- profiles
- Carry domain knowledge. The runtime has none.
rule — if a feature does not fit one of those four, it does not ship until the thesis is amended.