10. Executor Onboarding
Add an executor in this order:
- Write a manifest with a unique arbitrary name and declared role(s) plus parameter schemas. Do not add a fixed executor enum.
- Define
readonly,confirm,deadline_budget,verifies,sensitive_params, andsync_resultfor every operation. Classify trust on the handoff, not on the op spec. - Implement a transport-independent adapter with deterministic doubles.
- Wire it in assembly by role. Keep the
AgentControllerregistry separate from manifests: controller descriptors declare model-visible tools andownedChannels; hidden Visionwatchandguardare never dispatch targets. Search remains a stable adapter contract, while the built-in Camera capture is not a tool; see native vision. The opt-in Knowledge MCP similarly exposes onlymcp__nova_knowledge__recallto FrontBrain; its ingestion APIs stay host-only and its optional Codexget_chunkresolver never joins the voice tool enum. - Add invalid-input, timeout, cancellation, sanitization, and registry-adapter contract tests.
- Add a live smoke only after deterministic lifecycle coverage passes.
- Document credentials and least-privilege setup in Getting Started.
The host tools dispatch, cancel, and confirm compile when at least one AgentController is
registered. A missing coding role removes only coding intake/controller wiring; a Vision controller
may keep those host tools available. With zero registered controllers, the same compiler condition
omits all three host tools while direct read-only tools remain valid and assembly does not fail. Do
not add an executor by giving the model direct transport access. The adapter must translate the
external protocol into bounded progress and one typed terminal handoff.