ADR-012 — Politique de dépréciation et suppression du format legacy des entités Forge¶
Statut¶
Mise à jour — Forge 3.x (ticket LEGACY-REMOVE-004-UPDATE-DOCS-AFTER-LEGACY-REMOVAL).
La décision initiale (dépréciation avec support temporaire) a été remplacée par la suppression effective du support legacy dans les tickets LEGACY-REMOVE-001A, 001B, 002 et 003.
Date¶
2026-05-19 (initiale) — mise à jour 2026-05-19
Contexte¶
Forge a historiquement utilisé un format interne pour les entités, dit format legacy,
identifié par la clé format_version: 1. Ce format inclut des clés comme sql_type,
python_type, primary_key, auto_increment, from_entity, to_entity, foreign_key_name.
Un format canonique a été introduit : schema_version: "1.0", avec des types Forge abstraits
(string, integer, boolean, date, datetime, text, password), sans champ id
explicite, et from/to/foreign_key pour les relations.
L'audit LEGACY-POLICY-001 (2026-05-19) avait établi que le pipeline dépendait encore du format legacy. La décision initiale était de déprécier sans supprimer immédiatement.
Les tickets LEGACY-REMOVE-001A et 001B ont ensuite refusé les entités format_version: 1
dans build:model et make:crud. Le ticket LEGACY-REMOVE-002 a refusé le format legacy
dans relations.json. Le ticket LEGACY-REMOVE-003 a nettoyé les fixtures de tests restantes.
Aucun projet réel Forge n'était à préserver — la suppression a été faite pendant la phase de construction du framework.
Décision (mise à jour — remplace la décision initiale)¶
Le format canonique schema_version: "1.0" est le seul format d'entrée accepté.
Le format legacy format_version: 1 est refusé :
build:modelrefuse les entitésformat_version: 1— lèveModelValidationError.make:crudrefuse les entitésformat_version: 1— quitte avecSystemExit.relations.jsonavecformat_version: 1est refusé parvalidate_relations_definition— lèveEntityRelationsError.- Les clés relationnelles legacy (
from_entity,to_entity,foreign_key_name,pivot_table,source_key,target_key) ne sont pas acceptées dansrelations.json.
Ancienne décision (archivée)¶
La décision initiale de l'ADR-012 était :
Le format legacy
format_version: 1est déprécié. Il reste accepté temporairement pour assurer la compatibilité des projets existants, mais ne doit plus être utilisé dans les nouveaux développements.
Cette décision est remplacée. Le support temporaire a été supprimé dans les tickets LEGACY-REMOVE-001A, 001B, 002 et 003.
Ce qui est refusé¶
| Clé / mécanisme | Statut |
|---|---|
format_version: 1 dans les entités |
Refusé — build:model, make:crud lèvent une erreur |
format_version: 1 dans relations.json |
Refusé — validate_relations_definition lève une erreur |
from_entity / to_entity dans relations.json |
Refusé |
foreign_key_name dans relations.json |
Refusé |
pivot_table / source_key / target_key dans relations.json |
Refusé |
sql_type / python_type dans les entités |
Non accepté par le JSON Schema canonique |
primary_key / auto_increment dans les entités |
Non accepté par le JSON Schema canonique |
Ce qui reste fonctionnel à bas niveau¶
validate_entity_definition() et normalize_entity_definition() sont des fonctions internes
du pipeline. Elles n'ont pas été modifiées et continuent de traiter le format interne legacy
pour les tests de refus. Elles ne constituent pas une API utilisateur.
Règles pour les nouveaux développements¶
- Format obligatoire :
schema_version: "1.0"dans tous les fichiers d'entités. - Starters : format canonique uniquement (migration 100 % réalisée).
- Tests : les fixtures d'entités n'utilisent plus
format_version: 1, sauf dans les tests de refus explicites (tests de régression pourbuild:modeletmake:crud). - Documentation : aucun exemple ne présente
format_version: 1comme format utilisable.
Conséquences¶
- Projets en
format_version: 1:build:modeletmake:crudrefuseront de traiter ces fichiers. Migrer via le guidedocs/entities/migration-legacy-vers-canonique.md. relations.jsonenformat_version: 1:validate_relations_definitionlèveraEntityRelationsError. Migrer au format canoniqueschema_version: "1.0".- Starters : déjà conformes (migration 100 % réalisée dans STARTERS-MIGRATE-001 à 005).
Tickets ayant mis en œuvre cette décision¶
| Ticket | Résultat |
|---|---|
LEGACY-REMOVE-001A |
build:model refuse les entités format_version: 1 |
LEGACY-REMOVE-001B |
make:crud refuse les entités format_version: 1 |
LEGACY-REMOVE-002 |
relations.json format_version: 1 refusé ; clés legacy refusées |
LEGACY-REMOVE-003 |
Fixtures de tests legacy nettoyées |
LEGACY-REMOVE-004 |
Documentation alignée sur la suppression du legacy |
Référence¶
- Guide de conversion :
docs/entities/migration-legacy-vers-canonique.md - Audit de plan :
docs/history/audits/legacy-remove-plan-001.md - Migrations starters :
STARTERS-MIGRATE-001à005