# Dynamic registry ownership

Executors, model routes, and agent types are separate selectors. Model and agent-type catalogues depend on active user/project configuration and are intentionally absent from static skill files.

## Executors

`executor` selects the complete coding-agent harness: `pi`, `codex`, or `claude-code`. Call-site selection overrides the run or manager default; omission ultimately defaults to `pi`. It is independent from `model`: choosing a Codex or Claude model inside Pi does not invoke those CLI harnesses, and choosing an external executor does not translate Pi model routes.

Codex and Claude Code calls are fresh ephemeral CLI sessions. Their completed results are journaled by the workflow, but a live call after same-ID resume or completed-run fork starts as a fresh process. External executors preserve cwd and role instructions but cannot consume Pi SharedStore, `ToolDefinition`, or agent-type tool policies.

## Model routes

The model-tier configuration owns route names. Standard routes are `small`, `medium`, and `big`; use another route only when its name and purpose are supplied in context. A route is selected with `tier`. An exact user-requested model is selected with `model`.

## Agent types

The agent registry owns agent-type names and their bound instructions, tools, model, and isolation policy. Use `agentType` only when context supplies both its name and purpose. Do not infer an agent type from a role-like label.

## Priority

Executor priority is explicit call-site `executor` > run or manager default > `pi`. Within Pi, model-routing priority is explicit `model` > `agentType` model > `tier` > phase model > metadata model > implicit `medium` > session default. Higher priority means selection, not "try this then fall back to the next selector." If the selected Pi model or route is unavailable, execution falls directly to the session default; it does not try lower-priority selectors. Avoid specifying competing selectors unless deliberately overriding a lower-priority default.
