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 forge_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) |
forge_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ésormaisforge_mvc_mail. Ce n'est pas une nouveauté de périmètre :welcome-forgecomporte 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 forge_cli.mail sont supprimés.
Conséquences¶
- Nouveau paquet
packages/forge-mvc-mail/(distribution PyPI séparée, dépend deforge-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é.