@eqs/cli : doctor, inspect, baseline — l'audit observé, jamais déclaré #11
Loading…
Add table
Add a link
Reference in a new issue
No description provided.
Delete branch "feat/cli"
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?
ROADMAP #10, le dernier package du socle. Les dix packages sont écrits.
eqs doctorne réimplémente aucun contrôleIl charge ceux des packages installés dans le dépôt inspecté, résolus depuis lui : un satellite resté sur
@eqs/auth@1.1est jugé par les contrôles de sa version, pas par ceux d'une version qu'il n'a pas. Le contexte qu'il leur passe ne contient que la racine — tout ce qui exige l'application démarrée se déclare « contrôle non exécutable » (les packages le disent déjà eux-mêmes) et se compte à part, jamais confondu avec un succès.Deux règles tiennent
eqs-audit.jsonSOURCESqui sait échouer, etcli.champ-observerefuse un champ qui n'y est pasnull, jamaisfalse, avec sa raison dansnonObservefalseinventé se lit comme un constat, et c'est ainsi qu'un audit devient un document de complaisanceC'est l'écart au cahier le plus visible :
api.errorFormat,api.runtimeValidationetobservability.*sortent ànullen statique, en disant qu'ils demandentrunConformance.outgoing.rawHttpCallsvautnull— et non0— quand@eqs/httpn'est pas installé : personne n'a compté.Les dispenses
Motif de
MCP/scripts/audit.mjs, qui existe parce quenpm auditne sait pas accepter une alerte précise : son seul geste est de baisser le seuil, ce qui éteint la porte entière pour une alerte. Quatre façons d'échouer : le bloquant non dispensé ; la dispense périmée (une dispense sans fin est une porte retirée en douce) ; la dispense qui ne couvre plus rien (le problème est corrigé, elle survit en couvrant potentiellement autre chose) ; et celle qui ne dit ni pourquoi, ni jusqu'à quand, ni par qui.Preuves
eqs migrate inspectsur ATLAS non rétrofitté rendprofile: next-fullstack(le critère du cahier §9), 81 fichiers de test unitaires, 4 d'intégration, 13 e2e, hooks branchés, gitleaks 8.30.1 ;MCP/apps/apirendprofile: nest;eqs migrate plansur ATLAS liste les dix étapes avec les fichiers que chaque package remplacerait.pnpm checkvert à la racine : 280 tests sur les dix packages.Corrigé au passage
@eqs/testingn'émettait pas ses déclarations de types.tsconfig.base.jsonne pose pasdeclaration— il sert aussi aux applications, qui n'ont personne à typer — et le manifeste annonçait des.d.tsque la construction ne produisait pas : tout consommateur voyait le package enanysans que le compilateur le dise.@eqs/cli, son premier consommateur, l'a révélé. Changesetpatchjoint.Ce qui n'est pas fait, et pourquoi
data.*n'a aucun contrôle source : il demande la lecture du schéma de données, reportée avec le rétrofit (#15).tests.conformancelit.eqs/conformance.json, querunConformancen'écrit pas encore : il faudrait que les harnais de profil rendent leurs problèmes au lieu de les jeter dans unexpect. Reporté avec le template (#11).Écarts au cahier détaillés dans le champ Statut de
packages/cli/CAHIER-DES-CHARGES.md.🤖 Generated with Claude Code
pnpm --filter api db:devest interactif : il bloque tout appelant non interactif, et l'interrompre laisse un verrou consultatif Postgres qui exige unpg_terminate_backendmanuel #63