The kind of channel the agent lives in — its standing mission.
Drives the swappable mode block in the system prompt (and, later, the
toolset). escalation and others land as localized drop-ins (their standing
block + tooling) when that work begins.
incident and alerts each state a mission the worker owns whatever the
operator writes. custom states none: it supplies only the conduct floor
the identity block forward-references, and the operator's custom_instruction
is what gives the worker something to do. A channel that is neither working an
incident nor triaging alert fires gets this one rather than being told it is in
an incident (PRD-3766). The value is what customer-facing surfaces render, so it
reads as the operator's own word for it rather than as an internal category.
A member's name is persisted, in resident_agent_workflow.mode and
resident_agent_template.mode — plain varchars with no DB-side value set — and
read back through this enum, so adding a member is one deploy but removing or
renaming one orphans every row holding it. It also makes a member forward-only:
code that predates it raises on a row that carries it, rather than degrading. So
a new member wants its read deployed everywhere before anything can write it —
either landing the member ahead of the paths that create it, or gating creation
while it rolls out.
The same names are stored in usage policy bodies. Renaming or removing a member
stops a body naming it from parsing, and that disables the template's policies.