Pas de pass sans mesure : AI Architect Spec, suivi dans son code
Une spécification qui se lit bien et décrit un système que personne ne peut construire est pire que pas de spécification. Ce serveur est fait pour attraper ce cas avant qu’il n’atteigne le code : il contrôle que chaque symbole existe, que chaque critère d’acceptation remonte à une exigence, et qu’aucune affirmation de performance ne passe sans mesure — de façon déterministe, sans modèle dans la boucle de contrôle.13 C’est un réducteur plutôt qu’un agent : il émet des actions que votre hôte exécute, et il ne téléphone jamais pour obtenir un verdict.2
Un réducteur qui émet des actions, et n’appelle aucun modèle
Le choix d’architecture intéressant est ce que ce serveur refuse de faire. Il ne rédige pas vos sections et ne les juge pas. Il calcule l’état suivant et remet à l’hôte une action à exécuter, ce qui fait tourner la même chaîne contre n’importe quel runtime d’agent plutôt que contre celui d’un seul fournisseur.52 Il n’écrit aucun fichier source et ne pousse aucune branche ; les neuf fichiers de sortie sont écrits par l’hôte.25
Dix-sept outils sont enregistrés, et trois profils décident lesquels un hôte donné voit : tout, tout moins cinq diagnostics internes refusés à l’appel, ou seulement les deux validateurs pour un hôte qui ne veut que le vérificateur.67 L’ordre n’est pas indicatif. Le serveur l’énonce dans le message envoyé à la connexion, et le mode de défaillance est nommé : appeler les outils dans le désordre ne lève pas d’erreur, cela laisse l’exécution dans un mauvais état.8
Vingt étapes, et les neuf qu’il faut demander
Onze étapes produisent la spécification, du premier bandeau au contrôle préalable, à la détection de contexte, à l’analyse d’entrée, à une porte de faisabilité, à la clarification, au budget, à la génération de sections, à celle des tickets, à l’export et à un auto-contrôle.9 Neuf autres portent la même exécution jusqu’à l’implémentation, aux tests, à la revue et à une pull request — et elles sont sur demande, derrière une porte qu’un humain ouvre. Le marqueur terminal n’est pas une étape, distinction qui ne compte que jusqu’au jour où quelqu’un compte mal les étapes.9
Au cœur de la génération de section se trouve la boucle qui fait le travail : rappel depuis la mémoire, brouillon par un agent lancé, validation déterministe, réessai. Le budget de réessai est de trois, et le fichier qui le définit dit ce qu’est ce trois : un ancrage provisoire en attente d’une étude d’ablation, remplaçable à l’exécution par une valeur calibrée.10 C’est une petite honnêteté au grand effet, car elle indique au lecteur quels nombres portent le système et lesquels sont des placeholders.
Ce qu’elle prouve, et ce qu’elle refuse de feindre
La couche déterministe, ce sont soixante-treize fonctions de règle sur vingt-quatre fichiers, de l’analyse pure sans modèle, ce qui rend son verdict identique sur chaque hôte et en intégration continue.14 Ce qui compte plus que le compte, c’est la phrase que le serveur envoie à son sujet : un rapport qui passe établit la conformité structurelle à ces règles, et dans le même souffle énonce qu’il n’établit ni l’exactitude factuelle, ni la faisabilité, ni la correction sémantique.15 Il dit aussi franchement qu’il ne juge pas la prose.26
Au-dessus siège la couche de jugement, et elle est bâtie autour d’un refus. La taxonomie compte cinq verdicts, une affirmation de performance ne peut pas recevoir un simple pass, et un rapport où tout passe est rejeté d’emblée.16 Un panel unanime sur cinq verdicts ou plus est signalé comme suspect plutôt que cru,17 et la moitié du vote pondéré par la confiance force un échec.18 Les juges sont tenus pour faillibles par conception, ce que le dossier d’assurance énonce comme une limite et non comme une qualité.24
Rien ne survit à un redémarrage, et les nombres disent lesquels sont lesquels
Une exécution vit dans une seule table en mémoire et nulle part ailleurs. Le fichier dit pourquoi — le serveur est par session, donc une table convient à un hôte — et nomme l’échange qui changerait cela.11 La conséquence mérite d’être dite franchement : redémarrer le processus perd toute exécution en cours, et ce qui survit, ce sont les fichiers déjà écrits par l’hôte plus les deux bases optionnelles. Les runs terminaux sont évincés après trente minutes ou au-delà de soixante-quatre ; les runs en cours ne le sont jamais.12
Deux chemins de dérogation existent et tous deux sont explicites. Une porte calibrée peut être retenue hors promotion même quand elle passe son seuil,20 et une comparaison sur partition scellée refuse de tourner sans reconnaissance du sceau, la raison étant portée par le message d’erreur lui-même.21 Côté mesure, un run de calibration est daté et complet — et porte ses deux propres drapeaux disant qu’il diverge au-delà de la tolérance et qu’il devrait être recalculé.22 Chaque plafond de performance autour de lui est étiqueté heuristique provisoire dans le fichier qui le définit.23
Un nombre que ce dossier ne reprend pas
Le nombre de tests publié est 1506, et il apparaît à plusieurs endroits visibles. Le comptage statique des sites d’appel dans l’arbre à cette révision donne 1 061 sur 98 fichiers de test. L’écart tient presque certainement à des cas développés à l’exécution, que seule l’exécution de la suite peut trancher, et le dépôt contrôle bien cette affirmation en intégration continue contre un run réel. Elle est rapportée ici comme non vérifiable depuis la seule source plutôt que reprise comme un fait, ce qui est le standard que le projet applique lui-même à une affirmation de latence.3 L’honnêteté du projet sur l’énergie mérite d’être citée pour la même raison : il ne publie aucun chiffre de carbone, parce qu’il ne mesure aucun joule et que le travail évité est un argument de conception, pas une mesure.4