Aller au contenu

Décisions d'architecture (ADR)

Les Architecture Decision Records documentent les décisions structurantes
de Forge. Chaque ADR a force décisionnelle : à lire avant toute
proposition qui le concerne. Un nouvel ADR est requis pour toute décision
structurante (docs/adr/<numéro>-<sujet>.md).

Numéro Sujet
ADR-001 Stratégie d'authentification
ADR-002 Stockage de session
ADR-003 API publique en anglais
ADR-004 Périmètre du core minimal strict
ADR-005 Packaging hybride monorepo + multi-distributions PyPI
ADR-006 Python 3.12+ minimum
ADR-007 Adoption formelle de la charte v2
ADR-008 Audit auth : logging fourni, persistance applicative
ADR-009 Politique de stabilité : audits, bêta consolidée, tests terrain
ADR-010 API canonique auth/session
ADR-011 Périmètre du vocabulaire d'audit auth
ADR-012 Politique de dépréciation du format legacy
ADR-013 Politique nullable / required des contrats
ADR-014 Emplacement du contrat RBAC
ADR-015 Handshake TLS par thread (dev-server)
ADR-016 Unification du modèle opt-in : concept unique, cycle install/enable à 4 verbes
ADR-017 Type slug et module URL-slug canonique (core/http/slug.py)
ADR-018 Extraction du traitement d'image hors du core : forge-mvc-images (proposé)
ADR-019 Extraction de l'upload générique hors du core : forge-mvc-files (proposé)
ADR-020 Périmètre de forge-mvc-files : primitives de stockage média génériques (proposé)
ADR-021 Extraction de pivot advanced hors du core : forge-mvc-pivot (accepté)
ADR-022 Extraction de l'email hors du core : forge-mvc-mail (accepté)
ADR-023 forge starter:build comme seule façon de construire un starter ; forge new produit un projet nu (accepté)
ADR-024 Bootstrap par squelette dédié et dépendance core via pip (accepté)
ADR-025 welcome-forge : tutoriel continu manuel au lieu de starters par palier (accepté)
ADR-026 Accesseurs de Request nommés par leur source : query et route (accepté)
ADR-027 Extraction de l'i18n vers forge-mvc-i18n, repli no-op conservé dans le noyau (accepté)
ADR-028 welcome-forge : tutoriel continu manuel sur les trois niveaux, un mini-projet par niveau (accepté)
ADR-029 Convention de route : chemin /contrôleur/méthode (index nu), nom contrôleur-méthode (accepté)
ADR-030 Injection de routes dans mvc/routes.py par commande explicite et portée de la règle 4.3 (accepté)
ADR-031 Découplage complet du mail hors de core.forge ; forge-mvc-mail lit sa config depuis l'environnement (accepté)
ADR-032 Périmètre de la config upload : seul upload_max_size est du core, le reste va aux opt-ins files/images (accepté)
ADR-033 forge db:apply applique les migrations avec DB_ADMIN_* (et non DB_APP_*) : forge_app reste DML strict (accepté)
ADR-034 forge new génère DB_NAME / DB_APP_LOGIN à partir du nom normalisé du projet, sans suffixes _db/_app (accepté)
ADR-035 Modèle pédagogique unique : parcours réalisés à la main depuis la doc, retrait de starter:build/starter:list et de la génération (accepté)
ADR-036 Typage statique du cœur vérifié en CI (Pyright), py.typed, strictness par cliquet en commençant par l'API publique (accepté)
ADR-037 Agrégation par comptage dans forge-mvc-stats (accepté)
ADR-038 Documentation des opt-ins embarquée par paquet (packages/<paquet>/docs/), agrégée dans le site unique ; slug d'URL = nom sans forge-mvc- (accepté, pilote stats validé)
ADR-039 Refonte de l'architecture d'information de docs/ (cœur) : un sujet = un emplacement canonique, tronc « Opt-ins officiels », dédoublonnages (proposé)
ADR-040 Surface de test par paquet opt-in : modèle hybride (transversal à la racine, smoke + unitaire dans le paquet), testpaths = tests packages, importorskip (accepté)
ADR-041 Infrastructure de test partagée (forge-mvc-testing dev-only, plugin pytest + FakeRequest) pour rendre les tests de paquet autonomes (accepté)
ADR-042 Découpler la documentation du cœur et celle des opt-ins (accepté)
ADR-043 Documentation embarquée du cœur et du CLI ; renommage forge_clicli (accepté)
ADR-044 Le dépôt Forge ne porte que le framework ; application racine relocalisée (accepté)
ADR-045 Intégrer la publication du site officiel dans Forge (accepté)
ADR-046 Registre de loaders de templates Jinja pour les opt-ins (accepté)
ADR-047 Couche de guidance agent IA dans les applications Forge (accepté)
ADR-048 Parcours d'accueil « welcome-projet » dans le squelette (annulé)
ADR-049 Repositionnement : framework de production auditable (accepté)
ADR-050 Opt-in QR Code forge-mvc-qrcode (accepté)
ADR-051 Insertion d'une méthode dans le contrôleur des pages publiques (make:public-page), explicite, idempotente, fail-safe et ciblée (proposé)
ADR-052 Stratégie et critères des opt-ins : deux filtres d'admission (runtime WSGI, charte), classification des candidats, ordre recommandé (proposé)
ADR-053 Extraction du déploiement (deploy:init/deploy:check + gabarits + doc) dans un opt-in CLI-only forge-mvc-deploy (proposé)
ADR-054 Cœur agnostique BDD : backends (MariaDB, SQLite, PostgreSQL, SQL Server) en opt-ins exclusifs, découverts par entry points (proposé)
ADR-055 Classification des opt-ins par destination : champ category au catalogue, taxonomie unique (CLI + docs), sans renommer les paquets (proposé)
ADR-056 Extraction du contrat (schéma) et de l'outillage RBAC (rbac:validate/rbac:audit) du cœur vers l'opt-in forge-mvc-rbac (proposé)
ADR-057 Découplage du schéma pivot : relations (cœur) cesse de référencer pivot (bloc opaque), pivot.schema.json extrait vers forge-mvc-pivot (proposé)
ADR-058 Source unique des schémas JSON : cli/schemas/ canonique, suppression de la copie racine schemas/, squelette et embeds opt-in = copies dérivées gardées (proposé)