Le cout cache du branchement runtime
Un switch sur des strings metier dans du code compile :
switch status {
case "green":
severity = 0
case "degraded":
severity = 1
case "red":
severity = 2
}
3 secondes a ecrire. 3 heures a retrouver quand le client veut ajouter "amber". Chaque case est une decision metier encodee dans du code. Ajouter un etat = modifier du Go, recompiler, redeployer, retester. Multiplier par le nombre de services qui consomment ce vocabulaire.
C'est du routage conditionnel runtime. Si un mot apparait dans un case et qu'il a une signification metier, il appartient au catalogue, pas au code.
Pourquoi ca n'a jamais ete fait avant
Ecrire et maintenir un catalogue de 500 entrees (entity types, dimensions, etats, severites, formats) etait un travail penible, lent, sujet a erreur. Le switch etait un raccourci rationnel : payer en dette technique future pour economiser du temps present.
50 ans d'ingenierie logicielle a encoder des decisions metier dans des branchements runtime parce que "c'est plus rapide a coder". Et 50 ans a payer le prix en maintenance, en regressions, en deploiements pour changer une valeur.
Ce que le LLM change
Le LLM rend le cout d'ecriture du catalogue negligeable. Generer 500 INSERT INTO dimension_states ne coute plus rien en temps humain. L'economie du raccourci disparait. Ce qui reste, c'est uniquement la dette :
- Un
case= une decision metier invisible au catalogue, non auditable, non requetable. - Un
INSERT= une decision metier declarative, versionnee, interrogeable par n'importe quel service.
Le pattern archtime (ecriture du catalogue en amont, lecture seule au runtime) devient economiquement dominant des que le cout de production du catalogue tombe a zero. Le LLM est le facteur qui fait tomber ce cout.
La regle
Si le mot apparait dans un case Go et qu'il a une signification metier, il va dans brain.db. Pas d'exception "propre a ce capability". Les statuts "green", "degraded", "red" ne sont pas des constantes de formatage — ce sont des etats metier. Ils rejoignent une dimension (report_severity, ou report_lifecycle si c'est un cycle de vie) ou une nouvelle table dediee.
Un SELECT severity FROM dimension_states WHERE state = ? remplace le switch. Ajouter un etat = un INSERT. Pas un commit, pas un build, pas un deploy.
Le compromis qui n'en est plus un
Le switch/case etait un compromis economique. Le LLM l'a rendu obsolete.
La dette gratuite, ca n'existe pas. Mais la dette evitable, maintenant, si.