smolboid/daemon
randogoth bf6e2eaa15 refactor: reject mail with a reason identifier, not a sentence
dispatch and apply_commands returned English prose that became the reply
subject, so the pure layers owned author-facing copy. They now return
reason::Reason and the mail-building edge resolves it through the catalogue.

core::rules needed no change: RuleError was already a typed enum, and its
Display stays for author-side tools. The daemon maps the variants itself
rather than borrowing that prose.

Error-path tests now assert on variants, so rewording main.ftl cannot break
them, and PruneModeUnknown carries the value the author actually sent.

Reason::every_variant_resolves_to_copy walks the enum, so a variant added
without a catalogue entry fails in tests rather than mailing someone
"???reason-…???".
2026-10-14 18:57:57 +03:00
..
locales/en-US refactor: reject mail with a reason identifier, not a sentence 2026-10-14 18:57:57 +03:00
src refactor: reject mail with a reason identifier, not a sentence 2026-10-14 18:57:57 +03:00
Cargo.toml refactor: move author-facing mail copy into a Fluent catalogue 2026-10-14 18:48:31 +03:00