AGENTS.md du template affirme « Push sur main → Coolify » comme un fait, alors qu'un satellite neuf n'est déployé nulle part #61
Closed
opened 2026-09-12 15:42:11 +00:00 by nicolas-fryder
·
2 comments
No Branch/Tag specified
main
dev
@eqs/tooling@0.24.3
@eqs/testing@0.24.3
@eqs/telemetry@0.24.3
@eqs/platform-next@0.24.3
@eqs/platform-nest@0.24.3
@eqs/http@0.24.3
@eqs/errors@0.24.3
@eqs/config@0.24.3
@eqs/cli@0.24.3
@eqs/auth@0.24.3
@eqs/tooling@0.24.2
@eqs/testing@0.24.2
@eqs/telemetry@0.24.2
@eqs/platform-next@0.24.2
@eqs/platform-nest@0.24.2
@eqs/http@0.24.2
@eqs/errors@0.24.2
@eqs/config@0.24.2
@eqs/cli@0.24.2
@eqs/auth@0.24.2
@eqs/tooling@0.24.1
@eqs/testing@0.24.1
@eqs/telemetry@0.24.1
@eqs/platform-next@0.24.1
@eqs/platform-nest@0.24.1
@eqs/http@0.24.1
@eqs/errors@0.24.1
@eqs/config@0.24.1
@eqs/cli@0.24.1
@eqs/auth@0.24.1
@eqs/tooling@0.24.0
@eqs/testing@0.24.0
@eqs/telemetry@0.24.0
@eqs/platform-next@0.24.0
@eqs/platform-nest@0.24.0
@eqs/http@0.24.0
@eqs/errors@0.24.0
@eqs/config@0.24.0
@eqs/cli@0.24.0
@eqs/auth@0.24.0
@eqs/tooling@0.23.0
@eqs/testing@0.23.0
@eqs/telemetry@0.23.0
@eqs/platform-next@0.23.0
@eqs/platform-nest@0.23.0
@eqs/http@0.23.0
@eqs/errors@0.23.0
@eqs/config@0.23.0
@eqs/cli@0.23.0
@eqs/auth@0.23.0
@eqs/tooling@0.22.0
@eqs/testing@0.22.0
@eqs/telemetry@0.22.0
@eqs/platform-next@0.22.0
@eqs/platform-nest@0.22.0
@eqs/http@0.22.0
@eqs/errors@0.22.0
@eqs/config@0.22.0
@eqs/cli@0.22.0
@eqs/auth@0.22.0
@eqs/tooling@0.21.0
@eqs/testing@0.21.0
@eqs/telemetry@0.21.0
@eqs/platform-next@0.21.0
@eqs/platform-nest@0.21.0
@eqs/http@0.21.0
@eqs/errors@0.21.0
@eqs/config@0.21.0
@eqs/cli@0.21.0
@eqs/auth@0.21.0
@eqs/tooling@0.20.0
@eqs/testing@0.20.0
@eqs/telemetry@0.20.0
@eqs/platform-next@0.20.0
@eqs/platform-nest@0.20.0
@eqs/http@0.20.0
@eqs/errors@0.20.0
@eqs/config@0.20.0
@eqs/cli@0.20.0
@eqs/auth@0.20.0
@eqs/tooling@0.19.0
@eqs/testing@0.19.0
@eqs/telemetry@0.19.0
@eqs/platform-next@0.19.0
@eqs/platform-nest@0.19.0
@eqs/http@0.19.0
@eqs/errors@0.19.0
@eqs/config@0.19.0
@eqs/cli@0.19.0
@eqs/auth@0.19.0
@eqs/tooling@0.17.1
@eqs/testing@0.17.1
@eqs/telemetry@0.17.1
@eqs/platform-next@0.17.1
@eqs/platform-nest@0.17.1
@eqs/http@0.17.1
@eqs/errors@0.17.1
@eqs/config@0.17.1
@eqs/cli@0.17.1
@eqs/auth@0.17.1
@eqs/tooling@0.17.0
@eqs/testing@0.17.0
@eqs/telemetry@0.17.0
@eqs/platform-next@0.17.0
@eqs/platform-nest@0.17.0
@eqs/http@0.17.0
@eqs/errors@0.17.0
@eqs/config@0.17.0
@eqs/cli@0.17.0
@eqs/auth@0.17.0
@eqs/tooling@0.16.0
@eqs/testing@0.16.0
@eqs/telemetry@0.16.0
@eqs/platform-next@0.16.0
@eqs/platform-nest@0.16.0
@eqs/http@0.16.0
@eqs/errors@0.16.0
@eqs/config@0.16.0
@eqs/cli@0.16.0
@eqs/auth@0.16.0
@eqs/tooling@0.15.0
@eqs/testing@0.15.0
@eqs/telemetry@0.15.0
@eqs/platform-next@0.15.0
@eqs/platform-nest@0.15.0
@eqs/http@0.15.0
@eqs/errors@0.15.0
@eqs/config@0.15.0
@eqs/cli@0.15.0
@eqs/auth@0.15.0
@eqs/tooling@0.14.0
@eqs/testing@0.14.0
@eqs/telemetry@0.14.0
@eqs/platform-next@0.14.0
@eqs/platform-nest@0.14.0
@eqs/http@0.14.0
@eqs/errors@0.14.0
@eqs/config@0.14.0
@eqs/cli@0.14.0
@eqs/auth@0.14.0
@eqs/tooling@0.13.0
@eqs/testing@0.13.0
@eqs/telemetry@0.13.0
@eqs/platform-next@0.13.0
@eqs/platform-nest@0.13.0
@eqs/http@0.13.0
@eqs/errors@0.13.0
@eqs/config@0.13.0
@eqs/cli@0.13.0
@eqs/auth@0.13.0
@eqs/tooling@0.12.2
@eqs/testing@0.12.2
@eqs/telemetry@0.12.2
@eqs/platform-next@0.12.2
@eqs/platform-nest@0.12.2
@eqs/http@0.12.2
@eqs/errors@0.12.2
@eqs/config@0.12.2
@eqs/cli@0.12.2
@eqs/auth@0.12.2
@eqs/tooling@0.12.1
@eqs/testing@0.12.1
@eqs/telemetry@0.12.1
@eqs/platform-next@0.12.1
@eqs/platform-nest@0.12.1
@eqs/http@0.12.1
@eqs/errors@0.12.1
@eqs/config@0.12.1
@eqs/cli@0.12.1
@eqs/auth@0.12.1
@eqs/tooling@0.12.0
@eqs/testing@0.12.0
@eqs/telemetry@0.12.0
@eqs/platform-next@0.12.0
@eqs/platform-nest@0.12.0
@eqs/http@0.12.0
@eqs/errors@0.12.0
@eqs/config@0.12.0
@eqs/cli@0.12.0
@eqs/auth@0.12.0
@eqs/tooling@0.11.2
@eqs/testing@0.11.2
@eqs/telemetry@0.11.2
@eqs/platform-next@0.11.2
@eqs/platform-nest@0.11.2
@eqs/http@0.11.2
@eqs/errors@0.11.2
@eqs/config@0.11.2
@eqs/cli@0.11.2
@eqs/auth@0.11.2
@eqs/tooling@0.11.1
@eqs/testing@0.11.1
@eqs/telemetry@0.11.1
@eqs/platform-next@0.11.1
@eqs/platform-nest@0.11.1
@eqs/http@0.11.1
@eqs/errors@0.11.1
@eqs/config@0.11.1
@eqs/cli@0.11.1
@eqs/auth@0.11.1
@eqs/tooling@0.11.0
@eqs/testing@0.11.0
@eqs/telemetry@0.11.0
@eqs/platform-next@0.11.0
@eqs/platform-nest@0.11.0
@eqs/http@0.11.0
@eqs/errors@0.11.0
@eqs/config@0.11.0
@eqs/cli@0.11.0
@eqs/auth@0.11.0
@eqs/tooling@0.10.1
@eqs/testing@0.10.1
@eqs/telemetry@0.10.1
@eqs/platform-next@0.10.1
@eqs/platform-nest@0.10.1
@eqs/http@0.10.1
@eqs/errors@0.10.1
@eqs/config@0.10.1
@eqs/cli@0.10.1
@eqs/auth@0.10.1
@eqs/tooling@0.10.0
@eqs/testing@0.10.0
@eqs/telemetry@0.10.0
@eqs/platform-next@0.10.0
@eqs/platform-nest@0.10.0
@eqs/http@0.10.0
@eqs/errors@0.10.0
@eqs/config@0.10.0
@eqs/cli@0.10.0
@eqs/auth@0.10.0
@eqs/tooling@0.9.0
@eqs/testing@0.9.0
@eqs/telemetry@0.9.0
@eqs/platform-next@0.9.0
@eqs/platform-nest@0.9.0
@eqs/http@0.9.0
@eqs/errors@0.9.0
@eqs/config@0.9.0
@eqs/cli@0.9.0
@eqs/auth@0.9.0
@eqs/tooling@0.8.1
@eqs/testing@0.8.1
@eqs/telemetry@0.8.1
@eqs/platform-next@0.8.1
@eqs/platform-nest@0.8.1
@eqs/http@0.8.1
@eqs/errors@0.8.1
@eqs/config@0.8.1
@eqs/cli@0.8.1
@eqs/auth@0.8.1
@eqs/tooling@0.8.0
@eqs/testing@0.8.0
@eqs/telemetry@0.8.0
@eqs/platform-next@0.8.0
@eqs/platform-nest@0.8.0
@eqs/http@0.8.0
@eqs/errors@0.8.0
@eqs/config@0.8.0
@eqs/cli@0.8.0
@eqs/auth@0.8.0
@eqs/tooling@0.7.0
@eqs/testing@0.7.0
@eqs/telemetry@0.7.0
@eqs/platform-next@0.7.0
@eqs/platform-nest@0.7.0
@eqs/http@0.7.0
@eqs/errors@0.7.0
@eqs/config@0.7.0
@eqs/cli@0.7.0
@eqs/auth@0.7.0
@eqs/tooling@0.6.0
@eqs/testing@0.6.0
@eqs/telemetry@0.6.0
@eqs/platform-next@0.6.0
@eqs/platform-nest@0.6.0
@eqs/http@0.6.0
@eqs/errors@0.6.0
@eqs/config@0.6.0
@eqs/cli@0.6.0
@eqs/auth@0.6.0
@eqs/tooling@0.5.1
@eqs/testing@0.5.1
@eqs/telemetry@0.5.1
@eqs/platform-next@0.5.1
@eqs/platform-nest@0.5.1
@eqs/http@0.5.1
@eqs/errors@0.5.1
@eqs/config@0.5.1
@eqs/cli@0.5.1
@eqs/auth@0.5.1
@eqs/tooling@0.5.0
@eqs/testing@0.5.0
@eqs/telemetry@0.5.0
@eqs/platform-next@0.5.0
@eqs/platform-nest@0.5.0
@eqs/http@0.5.0
@eqs/errors@0.5.0
@eqs/config@0.5.0
@eqs/cli@0.5.0
@eqs/auth@0.5.0
@eqs/tooling@0.4.0
@eqs/testing@0.4.0
@eqs/telemetry@0.4.0
@eqs/platform-next@0.4.0
@eqs/platform-nest@0.4.0
@eqs/http@0.4.0
@eqs/errors@0.4.0
@eqs/config@0.4.0
@eqs/cli@0.4.0
@eqs/auth@0.4.0
@eqs/tooling@0.2.0
@eqs/telemetry@0.2.0
@eqs/errors@0.2.0
@eqs/config@0.2.0
@eqs/tooling@0.1.0
Labels
No labels
bug
duplicate
enhancement
help wanted
invalid
question
wontfix
Milestone
Clear milestone
No items
No milestone
Projects
Clear projects
No items
No project
Assignees
Clear assignees
No assignees
1 participant
Notifications
Due date
The due date is invalid or out of range. Please use the format "yyyy-mm-dd".
No due date set.
Dependencies
No dependencies set.
Reference
Infrastructure/eqs-platform#61
Loading…
Add table
Add a link
Reference in a new issue
No description provided.
Delete branch "%!s()"
Deleting a branch is permanent. Although the deleted branch may continue to exist for a short time before it actually gets removed, it CANNOT be undone in most cases. Continue?
Ce qui ne va pas
Dans un clone neuf d'
eqs-satellite-template,AGENTS.mdse termine par une affirmation au présent :Ce n'est vrai pour aucun clone neuf. Coolify est la cible de déploiement, pas un état acquis : il n'y a ni projet Coolify, ni base dédiée, tant que l'étape d'initialisation correspondante n'a pas été jouée — et
ETAT.mddu même dépôt le dit, deux fichiers plus loin :Les deux documents se contredisent donc dans le même clone, et c'est
AGENTS.md— celui que les agents de codage lisent en premier, et le seul queCLAUDE.mddésigne — qui porte l'affirmation fausse.Reproduction
Trois commandes, dans un dossier vide :
Obtenu —
AGENTS.md:77affirme le déploiement,ETAT.md:25le nie :Attendu : que le document lu en premier ne présente pas comme acquis ce que l'état du dépôt déclare inexistant.
Ce que ça coûte
Contournable, mais coûteux en confiance, et surtout pour un agent.
Je suis un agent de codage qui démarrait un projet dans un clone neuf. J'ai lu
AGENTS.md, j'en ai conclu qu'un push surmainpartait en production, et j'ai posé à l'utilisateur une question de précaution — « où dois-je travailler, puisqu'un push surmaindéploie ? » — dont la prémisse était fausse. Sa réponse a été, en substance : « on n'a pas encore Coolify, les satellites neufs ne sont déployés nulle part, Coolify est juste la cible ». Un aller-retour pour rien, et une décision prise sur une base fausse.C'est le coût typique d'une phrase au présent dans un document de référence : elle est vraie pour le dépôt qui l'a écrite, et elle devient un piège pour les trente clones qui la reçoivent. La section « État » du
READMEdu même template est, elle, exemplaire sur ce point — elle date et versionne chaque affirmation, et son ticket #9 dit précisément pourquoi.AGENTS.mdn'a pas eu le même soin.Ce que je proposerais
Trois retouches, par ordre d'utilité décroissante.
Mettre la phrase au conditionnel de cible, et nommer la condition dans
AGENTS.md:Faire dire à
ETAT.mddu template que c'est lui qui tranche sur ce point, puisque c'est déjà sa fonction («ETAT.mddit ce qui est vrai »). La règle existe dansAGENTS.md; elle n'est simplement pas appliquée àAGENTS.mdlui-même.Généraliser : passer les affirmations d'infrastructure d'
AGENTS.mden revue et vérifier qu'aucune autre ne décrit un état qu'un clone neuf n'a pas. Je n'en ai pas cherché d'autre — celle-ci m'a suffi pour me tromper.Si la formulation 1 vous paraît à côté, elle dit au moins comment j'ai lu le document : au présent, comme une description de mon dépôt, ce qui est exactement la lecture qu'un agent en fait.
Versions
@eqs/cli,@eqs/tooling,@eqs/testing:^0.8.1(package.jsondu clone).eqs --versionnon jouable au moment du constat :node_modulesest absent dans un clone neuf, et c'est précisément l'état dans lequel on litAGENTS.mdpour la première fois.nest, constaté le 2026-09-12.Contournement
Aucun code contourné. La décision prise sur la prémisse fausse a été corrigée par l'utilisateur en une phrase ; rien ne reste à retirer.
Vrai, et votre diagnostic va plus loin que le défaut : c'est une règle du dépôt qui n'était pas appliquée à elle-même.
AGENTS.mddit «ETAT.mddit ce qui est vrai après le changement ». Et c'estAGENTS.mdqui affirmait un état queETAT.mdniait, deux fichiers plus loin, dans le même clone.Ce que ça devient
Vos points 1 et 2 en une fois : la condition est nommée, et
ETAT.mdest désigné comme celui qui tranche.J'ai gardé votre formulation « Coolify est la cible » — c'est celle de l'utilisateur dans votre échange, et elle dit en trois mots ce que le paragraphe explique.
Votre point 3
Fait, et le résultat est court : j'ai cherché les affirmations d'infrastructure au présent dans
AGENTS.mdet dans leREADME. Il n'y en avait pas d'autre. La vôtre était la seule.Ce qui n'est pas une raison de classer la question : la règle qui l'a produite, elle, reste vraie pour tout ce qu'on écrira demain. Le paragraphe porte donc sa propre raison d'être, pour que personne ne la « simplifie » plus tard :
Ce que votre ticket dit de plus
Vous avez ouvert ce ticket pour une question posée pour rien, et un aller-retour avec l'utilisateur. C'est le coût visible. Le coût invisible est celui que vous décrivez sans y insister : vous avez pris une décision sur une prémisse fausse, et c'est le hasard de la conversation qui l'a corrigée. Un agent qui n'aurait pas posé la question aurait travaillé sur cette base.
C'est aussi la deuxième fois cette semaine qu'un document du socle induit un agent en erreur dans le sens « obéir correctement produit un mauvais résultat » — après #56, où la règle « aucun
fetchdirect » a fait livrer un bouton de déconnexion inerte. Les deux sont consignés, celui-ci va rejoindre la chasse qui les relie.Branche
fix/service-name-uniquesur le gabarit — elle porte cette correction et celle de #62, toutes deux côté documentation et configuration, fusionnables tout de suite.refuser-genere.mjsrefuse toutprisma/migrations/**, y compris un squelette--create-onlyjamais appliqué : aucune DDL sur-mesure (trigger, fonction, vue, contrainte) n'est possible par la voie documentée #64Corrigé, côté gabarit.
AGENTS.mdd'eqs-satellite-templatene présente plus le déploiement comme acquis :La condition est devenue explicite et précède la conséquence.
Ce ticket a aussi laissé une trace durable dans l'
AGENTS.mddu socle : « une décision prise sur une prémisse qu'un document affirmait au présent (#61) » y figure parmi les trois cas qui ont fondé le principe « les règles d'ici servent le développement ».Fermé après vérification contre le gabarit à jour le 2026-09-21. Ce ticket restait ouvert faute d'un
Closes #61dans le commit, pas faute de correctif.