A plugin's voice.xml is its soft-memory organ — where every message the plugin can inject lives. Soft nudges and hard refusals sit in the same file; the element type, not the file, decides whether a fired voice merely coaches or refuses. The surface splits across two files by fire-site (the agent's context vs the operator's terminal), renders through the shared get_voice primitive, selects coaching from a budget-tiered rotation pool, defends a no-orphan invariant with catalog tooling, and lets a Stage-3 yaml plan tune existing voices per job. Each card is one focused idea, with a clean diagram you can hover and click.
voice.xml is the cheapest place to customize the seed — soft memory, tuned without touching code.