Archives
Archives
0012 - Le manifeste Kit est l'inventaire public
ADR : le resolver du bot possède le comportement, le manifeste Kit possède l'inventaire public et les textes, et une fixture Go lie les deux.
Sur cette page
Date : 2026-09-18
Statut
Accepté. Implémenté dans les branches empilées à partir de feat/kit-variables-manifest.
Contexte
Les variables de réponse étaient décrites à six endroits maintenus à la main entre Go, Kit, le tableau de bord et le marketing, sans vérification entre eux. Les listes divergeaient : exemples différents, alias absents d’un côté, variable présente uniquement dans les chips du tableau de bord.
Décision
- La chaîne de scopes Go (
app/twitch/sesame/engine/scope) est l’unique autorité sur l’expansion d’un token. web/kit/lib/variables/est l’unique autorité sur les variables publiques, leurs formes, exemples, catégories et clés de texte. Le tableau de bord, le builder marketing et le guide en dérivent.- Une fixture golden (
scope/testdata/token_catalog.golden.json), écrite par le test Go avec un flag et lue par un test Kit, échoue en CI lorsque les deux inventaires divergent dans un sens ou dans l’autre.
Alternatives rejetées
- Générer le manifeste TypeScript depuis Go au build : cela impose un build Go à la CI web, tandis que les textes auraient toujours besoin d’un emplacement de locale extérieur à Go.
- Garder le catalogue marketing comme source et faire importer le tableau de bord : cela inverse la direction de dépendance (le marketing dépend déjà de Kit).
- Manifeste sans test de parité : le statu quo qui a produit la dérive.
Conséquences
- Ajouter une variable demande une modification Go, une modification Kit et des clés de locale ; oublier l’une d’elles fait échouer un test.
- Le sens propre à une surface d’un nom partagé (
{user}sur une alerte de follow) vit dans la réponse du module du catalogue de modules Kit, pas sur la variable.