ADR-022 : Extraction de l'email vers forge-mvc-mail¶
Statut¶
Acceptée
Amende ADR-004 (périmètre du core minimal) et prolonge
ADR-021 : poursuite du dégraissage du core vers des
opt-ins.
Contexte¶
core/mail/ (composition de messages, transports, templates Jinja,
journalisation, CLI mail:*) échoue au test de légitimité d'ADR-004 :
« si je retire cette brique du core, une application Forge basique tourne-t-elle
encore ? » → oui. L'email est un besoin fréquent mais n'est pas une primitive
générale du framework, et core/mail/ est autonome (aucun autre module du
core ne l'importe ; sa seule dépendance core est core.forge pour la config et
core.database.db pour le journal, disponibles via forge-mvc).
Le module relève donc d'un opt-in, comme stats, workflow ou pivot.
Décision¶
core/mail/ et la CLI cli/mail.py sont extraits vers l'opt-in
forge-mvc-mail.
| Avant | Après |
|---|---|
core/mail/<module>.py |
forge_mvc_mail.<module> (API réexportée par forge_mvc_mail) |
cli/mail.py |
forge_mvc_mail.cli |
from core.mail import … |
from forge_mvc_mail import … |
- La famille CLI
mail:init / test / render / doctor / logsreste exposée par
la CLI cœur, routée vers le paquet viatry / except ImportError(même
mécanisme queiot:*/video:*/make:pivot-crud). - Le starter
send-email(palier avancé dewelcome-forge) importe désormais
forge_mvc_mail. Ce n'est pas une nouveauté de périmètre :welcome-forge
comporte déjà un palier avancé qui dépend d'un opt-in (file-upload→
forge_mvc_files).send-emailreste donc en place ; un parcours dédié
welcome-mailest créé séparément (suite de ce chantier) pour approfondir
l'usage de l'email.
Pré-1.0 (convention bêta) : extraction sans alias déprécié dans le core. Les
anciens chemins core.mail et cli.mail sont supprimés.
Conséquences¶
- Nouveau paquet
packages/forge-mvc-mail/(distribution PyPI séparée, dépend de
forge-mvcetjinja2). - Garde-fou d'extraction
MAIL-EXTRACT-001: le core ne contient plusmail, le
paquet expose l'API publique et la CLI. - Tests mail protégés par
pytest.importorskip("forge_mvc_mail")(core
autonome, garde-fouTESTS-OPTIN-IMPORTORSKIP-001). forge_mvc_mailajouté aux listes opt-in transverses (importorskip,
core-only-contract, classifiers PyPI, sweep imports docs) +release-policy.md.
Suite¶
WELCOME-MAIL: parcours pédagogiquewelcome-mail(premier envoi,
composition, transports, templates, config, diagnostic), chantier dédié.