<what-to-do>
Pose-moi des questions sans relâche sur chaque aspect de ce plan jusqu'à ce que nous parvenions à une compréhension partagée. Parcoure chaque branche de l'arbre de conception, résolvant les dépendances entre décisions une par une. Pour chaque question, fournis ta réponse recommandée.
Pose les questions une à la fois, attendant ton retour sur chaque question avant de continuer.
Si une question peut être résolue en explorant la base de code, explore la base de code à la place.
</what-to-do>
<supporting-info>
Connaissance du domaine
Lors de l'exploration de la base de code, cherche aussi la documentation existante :
Structure des fichiers
La plupart des dépôts ont un seul contexte :
/
├── CONTEXT.md
├── docs/
│ └── adr/
│ ├── 0001-event-sourced-orders.md
│ └── 0002-postgres-for-write-model.md
└── src/
Si un CONTEXT-MAP.md existe à la racine, le dépôt a plusieurs contextes. La carte indique où chacun se trouve :
/
├── CONTEXT-MAP.md
├── docs/
│ └── adr/ ← décisions système-large
├── src/
│ ├── ordering/
│ │ ├── CONTEXT.md
│ │ └── docs/adr/ ← décisions spécifiques au contexte
│ └── billing/
│ ├── CONTEXT.md
│ └── docs/adr/
Crée les fichiers paresseusement — uniquement quand tu as quelque chose à écrire. Si aucun CONTEXT.md n'existe, crée-le quand le premier terme est résolu. Si aucun docs/adr/ n'existe, crée-le quand le premier ADR est nécessaire.
Pendant la session
Confronte-toi au glossaire
Quand l'utilisateur emploie un terme qui entre en conflit avec la langue existante dans CONTEXT.md, signale-le immédiatement. « Ton glossaire définit 'annulation' comme X, mais tu sembles vouloir dire Y — c'est quoi ? »
Affine le langage vague
Quand l'utilisateur emploie des termes vagues ou surchargés, propose un terme canonique précis. « Tu dis 'compte' — tu veux dire le Customer ou l'User ? Ce sont des choses différentes. »
Discute des scénarios concrets
Quand les relations de domaine sont discutées, teste-les avec des scénarios spécifiques. Invente des scénarios qui sondent les cas limites et forcent l'utilisateur à être précis sur les frontières entre concepts.
Recoupement avec le code
Quand l'utilisateur énonce comment quelque chose fonctionne, vérifie si le code est d'accord. Si tu trouves une contradiction, mets-la en évidence : « Ton code annule des Orders entières, mais tu viens de dire que l'annulation partielle est possible — c'est quoi la vérité ? »
Mets à jour CONTEXT.md au fil de l'eau
Quand un terme est résolu, mets à jour CONTEXT.md sur place. Ne les accumule pas — capture-les au fur et à mesure. Utilise le format dans CONTEXT-FORMAT.md.
Ne couple pas CONTEXT.md aux détails d'implémentation. Inclus uniquement les termes qui sont significatifs pour les experts du domaine.
Propose les ADRs avec parcimonie
Propose de créer un ADR uniquement quand les trois conditions sont vraies :
- Difficile à inverser — le coût de changer d'avis plus tard est significatif
- Surprenant sans contexte — un lecteur futur se demandra « pourquoi ont-ils fait ça comme ça ? »
- Le résultat d'un vrai compromis — il y avait des alternatives authentiques et tu en as choisi une pour des raisons spécifiques
Si l'une des trois manque, saute l'ADR. Utilise le format dans ADR-FORMAT.md.
</supporting-info>