Passe de nuit : contrat, delta, shells, passe-a-vide, CI du socle (chasse 53) #168

Merged
nicolas-fryder merged 10 commits from nicolas-fryder/dev into main 2026-10-16 06:46:06 +00:00 AGit

Contrat OpenAPI vrai sur la session et les erreurs (#167) ; « non observé » n'est plus un changement (#167) ; eqs baseline --diff --audit (#167) ; format découpe à la longueur de ligne ; plus de shell inutile (semgrep : 0 trouvaille) ; testing.passe-a-vide ; noms uniques dans le registre des bases jetables (échec intermittent Windows) ; .forgejo/workflows/ci.yml du socle (Actions à activer) ; D-084, chasse 53, ETAT. Porte verte. 🤖 Generated with Claude Code

Contrat OpenAPI vrai sur la session et les erreurs (#167) ; « non observé » n'est plus un changement (#167) ; eqs baseline --diff --audit (#167) ; format découpe à la longueur de ligne ; plus de shell inutile (semgrep : 0 trouvaille) ; testing.passe-a-vide ; noms uniques dans le registre des bases jetables (échec intermittent Windows) ; .forgejo/workflows/ci.yml du socle (Actions à activer) ; D-084, chasse 53, ETAT. Porte verte. 🤖 Generated with [Claude Code](https://claude.com/claude-code)
Sous Linux la ligne de commande tient 2 Mo : les 1 228 fichiers d'ATLAS
font un appel à Prettier au lieu de sept en CI. Windows garde son
plafond. enLots, fonction pure, éprouvée sans Prettier.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
delta() comparait null comme une valeur, et le tableau nonObserve d'un
bloc : l'audit de CI, qui ne voit ni la conformité ni otel, annonçait
« 8 changements » à chaque run face à une baseline de poste. Un champ
devenu null ET déclaré non observé est rangé à part ; un champ devenu
null sans l'être reste un changement.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
- route session seule : sécurité cookie, sans le Bearer qu'elle refuse ;
- cookieSession déclarable (Next et Nest), défaut inchangé ;
- 502 et 503 documentés partout ; 413 là où un corps est lu (Next).

Trouvé par le fuzzing d'ATLAS : un contrat qui ment fait rougir le
fuzzing sur une réponse juste, ou envoie un client se faire refuser.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
En CI le diff suit l'inspect : le refaire coûtait 15 s chez ATLAS, et
les avertissements sortaient deux fois. Fichier illisible : erreur.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
semgrep, joué pour la première fois sur le socle, sortait en 1 :
- le hook de typage passait un nom de projet tiré du chemin écrit à un
  shell sous Windows : tsc est désormais lancé par Node ;
- docker (coolify, node-minimal) et tar (verifier-paquets) sont des
  exécutables : le shell ne servait à rien, et recollait les arguments ;
- npm pack (.cmd, Node >= 20 exige un shell) et une clé d'en-tête
  constante : exceptions dites sur place.
semgrep : 0 trouvaille sur 261 fichiers ; gitleaks et trivy verts.

.forgejo/workflows/ci.yml : la porte sur un clone propre, les tarballs
déballés, et la sécurité (security.yml). Le socle était le seul dépôt
de la flotte sans CI ; Actions est à activer sur le dépôt.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Le front du gabarit n'avait aucun test, et unit:web passait au vert sur
« No test files found » (passWithNoTests). Le contrôle signale le
drapeau en script comme en configuration Vitest, avec le fichier et la
ligne. Aucun satellite connu ne le porte plus (démo et gabarit retirés).

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Le registre est global à la machine ; ces tests rayaient puis
réécrivaient la même fiche sous le même nom. Sous Windows, un fichier en
attente de suppression fait échouer la réécriture en silence : échec vu
une fois au pre-push (expected [] to deeply equal ['eqs-test-template']),
vert en isolé.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Sign in to join this conversation.
No reviewers
No milestone
No project
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!168
No description provided.