Aller au contenu

Archétypes de composant — conditionnement des délivrables

Référence partagée par tous les personas BMAD (DRY). L'archétype est déclaré en Étape 0 et sélectionne quelles couches sont en scope et quelles sections de chaque délivrable s'appliquent. Un composant hors archétype produit du bruit — la recherche montre qu'un contexte gonflé dégrade l'agent.

Deux facettes combinables

  • Facette état : stateless (aucun état persisté — transform, gateway, fonction pure) ↔ stateful (possède un état persisté).
  • Facette surface : API-first (le contrat est le produit, consommateurs externes) ↔ full-stack (front + back, les sept couches).

Combinaisons courantes : stateless API-first (transform exposé), stateful API-first (service métier consommé par des tiers), stateful full-stack (l'app canonique). Le superviseur déclare la combinaison en Étape 0.

Ce que chaque archétype met en scope

Stateless — Domain léger (value objects, fonctions pures, pas d'invariant sur un état persisté) · pas de couche persistance (ni ORM/CQRS, ni migrations, ni entités→tables) · l'enjeu central est l'idempotence et la pureté (mêmes entrées → mêmes sorties) · tests : property-based, @edge sur les entrées, pas de fixtures DB.

Stateful — Domain complet, invariants codés dans les constructeurs · couche persistance requise (décision ORM SQLAlchemy vs CQRS SQL pur, tracée en ADR) · migrations, transactions, concurrence et cohérence · tests : transitions d'état, intégration DB, @edge sur la concurrence · point irréversible propre : migration de schéma.

API-first — le contrat API (OpenAPI/AsyncAPI) est un délivrable de premier rang, écrit avant le code · exigences PRD exprimées en endpoints · versioning et rétro-compatibilité · BDD au niveau contrat, contract tests · couche Frontend : N/A · point irréversible propre : rupture de contrat / changement de version majeure.

Full-stackles sept couches, dont Frontend (pages Astro statiques + îlots Svelte 5) · E2E cross-stack + Documentation Vivante (flux critiques filmés) · point irréversible : cumul (schéma + contrat + mapping branche→env). Le contrat API doit être matérialisé, pas seulement décrit — annotation exhaustive + client généré + désérialisation stricte + contract tests CI, voir ../skills/contrat-api.md (skill né d'un incident réel : contrat non matérialisé → NO-GO en production).

Matrice d'applicabilité des sections

requis · optionnel/si la facette état l'impose · hors scope

Section de délivrable stateless stateful API-first full-stack
Domain — invariants métier
Modèle de données (entités → tables), migrations
Idempotence / pureté
Concurrence / cohérence / transactions
Contrat API (OpenAPI) + versioning — matérialisé, pas décrit ¹
Frontend UX / îlots / arborescence pages
Couche Frontend (architecture)
E2E cross-stack + Documentation Vivante contract tests
Couches Application · IaC · CI/CD · Monitoring

¹ Un ici n'est acquis que si les quatre éléments de ../skills/contrat-api.md sont en place (annotation exhaustive, client généré, désérialisation stricte, contract tests CI) — une section PRD §9bis en prose sans ces mécanismes reste un de facto, quelle que soit la case cochée.

Conséquence pour chaque persona

  • Analyste : nomme l'archétype dès le Brief (§13 Contraintes) ; l'estimation point 0 en dépend (un stateless converge en moins de tours qu'un full-stack).
  • Product Manager : pour API-first ou full-stack, exprime les exigences en endpoints et produit le contrat OpenAPI — §9bis doit nommer l'outil d'annotation et l'outil de codegen, pas seulement décrire des conventions REST (../skills/contrat-api.md) ; saute §10 (modèle de données) si stateless.
  • Architecte : n'instancie que les couches en scope ; pour API-first et full-stack, le contrat précède le code et sa matérialisation fait l'objet d'un ADR dédié avant la Phase 1 (annotation, codegen, deny_unknown_fields, contract tests) — traité avec le même sérieux que la migration de schéma, voir ../skills/contrat-api.md ; trace le point irréversible propre à l'archétype.
  • Scrum Master : la story habilitante varie (stateless : pas de harnais DB ; API-first et full-stack : ajoute le harnais de contract testing comme sous-story non optionnelle du Sprint 0, jamais reléguée en GO-forward — ../skills/contrat-api.md).
  • Validateur : vérifie la conformité à l'archétype — une section hors scope présente, ou une section requise absente, est une incohérence ; pour API-first/full-stack, vérifie que le contrat est matérialisé (les 4 éléments), pas seulement décrit.