cairn/changes/gmail-command-module-layout/delta.md
A protocol command resource SHALL live in a sibling module file carrying its pub mod declarations and its Command enum, next to a folder holding one file per subcommand. Types live with the subcommand that owns them; a type serving several subcommands lives in the file of the one that owns it, or in its own module when it belongs to none.
A protocol command type SHALL be named <Domain><Target><Verb>Command, so a bare verb is never a type name. The domain prefix stays wherever the bare name would collide across the backends a CLI spans, and is otherwise omitted for the tables and value enums under the cli subtree.
A command taking a raw RFC 5322 message SHALL resolve it through the shared MessageArg: a file path, an inline value after --, or piped stdin. The resolved message is normalised to CRLF and rejected when empty, so no backend receives a zero-length message.