fix(deps): refresh npm lock to clear 8 advisories #417
No reviewers
Labels
No labels
autopilot:pending-human
source:analyste
source:defenseur
source:human
source:medic
status:approved
status:blocked
status:in-progress
status:needs-clarification
status:needs-fix
status:ready
status:review
status:triage
type:bug
type:feature
type:infra
type:refactor
type:schema
type:security
No milestone
No project
No assignees
1 participant
Notifications
Due date
No due date set.
Dependencies
No dependencies set.
Reference: maximus/Simpl-Resultat#417
Loading…
Reference in a new issue
No description provided.
Delete branch "issue-358-npm-lock-refresh"
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?
Resolves #358
Resolves #317
Generated autonomously by /autopilot run of 2026-10-10
Ce qui change
package-lock.jsonrafraîchi : les 8 vulnérabilités que remontaitnpm audit(5 high, 3 moderate) sont corrigées,npm auditpasse à 0.package.jsonest inchangé : chaque correctif tient dans la borne déjà déclarée.react-routeracceptée depuis #311 (GHSA-qwww-vcr4-c8h2) est corrigée parreact-router7.18.2, un bump de patch dans^7.18.1, sans migration v8.CLAUDE.md(section CI/CD) etdocs/architecture.md(sectioncheck-frontend.yml) : plus de « 2 high en permanence », plus de renvoi à #317. Ils disent «npm audità 0 au 2026-10-10 (#358) », présenté comme un constat daté que rien ne réévalue en CI ; la précision « aucune étapenpm auditen CI » est gardée.### Security/### Sécuritésous[Unreleased]/[Non publié], après le### Fixed/### Corrigéde #320.Technique
npm 11.21.0 exactement (
npx --yes npm@11.21.0), Node 22.22.0 en local. Commande, telle que planifiée :lockfileVersion3 → 3 ; 259 → 259 entrées ; entrée racine identique ; 20 entrées modifiées, aucune ajoutée ni retirée.react-routerreact-router-domvitest@vitest/mocker@vitest/expect,@vitest/pretty-format,@vitest/runner,@vitest/snapshot,@vitest/spy,@vitest/utilschai@vitest/expect, borne^6.2.2tinyrainbowbrowserslistbaseline-browser-mappingcaniuse-liteelectron-to-chromiumnode-releasesupdate-browserslist-dbnanoidpostcss; GHSA-2v37-7h3g-55p8source-map-jspostcsset@tailwindcss/node; GHSA-68fv-2mgg-jv7qÉcarts avec l'issue, tous dans les bornes déclarées :
browserslist4.29.3 (table 4.29.1 ; publiée le 09-29),baseline-browser-mapping2.11.28 (table 2.11.26 ; publiée le 10-08),nanoid3.3.20 (table 3.3.19 ; publiée le 10-05). La planification fixe la commande, pas les versions ; retrouver la table demanderait des overrides sur des transitives, hors périmètre.source-map-js(8e advisory, ajoutée à la commande le 10-10) etchai6.3.0, publiée le 09-30 et re-résolue par npm quand@vitest/expect, son seul dépendant, est remplacé.npm audit(8 vulnérabilités). Elles viennent de 7 GHSA distinctes :react-router/react-router-dompartagent la leur,vitest/@vitest/mockeraussi.source-map-js1.2.2 porte"license": "BSD-3-Clause", absent de l'entrée 1.2.1.Preuves
npm auditavant (lock de la base, identique à celui demain, npm 10.9.4), résumé denpm audit --json, tousfixAvailable: true:npm auditaprès, relancé juste avant le commit (2026-10-10 21:13:59 EDT), aprèsnpm cisous npm 10.9.4 :resolved/integrity(script Python comparant les deux locks) :Chacune des 20 entrées modifiées a un
resolvedenhttps://registry.npmjs.org/et unintegritysha512-différent de l'ancien. Sur tout le lock, les 6 seules entrées sans ces champs sont les dépendances embarquées (inBundle) de@tailwindcss/oxide-wasm32-wasi, livrées dans l'archive de leur parent et inchangées. En complément,npm audit signatures: « 175 packages have verified registry signatures, 71 packages have verified attestations ».npm cisans réécriture : empreinte du lock identique avant et après (752e8d8…),git diffidentique octet pour octet, sous npm 10.9.4 comme sous npm 11.19.0 (celui de la CI). Sous npm 11.19.0, l'avertissementnpm warn install-scripts … esbuild@0.25.12 (postinstall: node install.js)reste le seul et ne change pas :esbuildn'est pas touché, et aucune entrée modifiée n'a de script d'installation.Build et tests :
npm run buildvert ;npm test: 110 fichiers / 1915 tests, avant (vitest 4.1.9) comme après (vitest 4.1.11), journaux identiques hors version et durées.diff -r dist/: deux builds de la référence sont identiques entre eux (build déterministe). Après le lock :La CSS (
index-CSFhII2z.css) eticon.svgsont identiques. Avec les CHANGELOG de ce commit, les copiesdist/CHANGELOG*.mddiffèrent aussi ; elles égalent les fichiers de la branche.Explication de l'écart : un build intermédiaire, fait dans une copie
git archivesous/tmp, (1) reproduit la référence octet pour octet sur le lock d'origine (témoin), puis (2) sur une copie du lock d'origine où seulsreact-router-dom react-routersont mis à jour (même commande npm 11.21.0 ; 2 entrées, identiques à celles du lock complet), égale le build du lock complet octet pour octet. Les 18 autres mises à jour (test et build) ne changent donc rien à la sortie : tout l'écart est le code de react-router 7.18.1 → 7.18.4. Comparé instruction par instruction, identifiants minifiés neutralisés, il contient seulement :window.__reactRouterVersion) ;removeTrailingSlashréécrite (même résultat, plus rapide sur les longs chemins ; 7.18.3) ;resolveTo, qui traite un\initial comme un chemin absolu (7.18.3) ;validateNavigationTargetet ses aides, appelée paruseNavigate(),<Navigate>et la redirection RSC de la frontière d'erreur : elle lève « External navigation is not allowed » pour une cible d'une autre origine (7.18.3, « additional URL validation on client side navigations/redirects »).Le reste n'est que des renommages du minifieur. Les archives
react-router7.18.1 et 7.18.4 récupérées parnpm packpour lire ce diff correspondent à l'integritydes deux locks. Le code RSC et serveur de ces versions (CSRF,meta refresh) et celui des data routers (startViewTransition) sont absents des deux bundles.Navigation sous les origines de l'app : l'origine Linux
tauri://localhostest opaque (URL.origin === "null"), donc j'ai vérifié le nouveau contrôle sur le code réel de 7.18.4 (script jetable, hors dépôt) :createBrowserHistorysur une fenêtre simulée, comme le construitBrowserRouter, sous 4 origines (Linuxtauri://localhostaveclocation.originà"null"ou en tuple, Windowshttp://tauri.localhost, devhttp://localhost:1420), pour 24 cibles internes de la forme de celles desrc/et 3 cibles externes témoins, plus<Navigate>rendu parreact-dom/server:Les cibles internes passent partout, les externes sont refusées partout : quand l'origine vaut
"null", react-router compare protocole et hôte. Les sources de l'app ne naviguent que vers des chemins internes (relevé denavigate(,<Navigate>etto=).Pour relire en priorité
/docset/changelog(<Navigate>).baseline-browser-mapping2.11.28 avait deux jours à la génération du lock (publiée le 2026-10-08) : données de build seulement, absentes du bundle.check-frontenddoit montrernpm cisous npm 11.19.0 sans erreur, le même unique avertissementinstall-scripts(esbuild), le build vert et 110 fichiers / 1915 tests.STATE.mdn'est pas touché : son chapeau (« 2 restantes, acceptées ») revient à la synchro post-merge, comme prévu au plan.🤖 Generated with Claude Code
npm audit reported 8 vulnerabilities (5 high, 3 moderate) on the lock of main: react-router and react-router-dom (one advisory, GHSA-qwww-vcr4-c8h2), vitest and @vitest/mocker (one advisory, GHSA-82fw-gwwq-j7x9), browserslist, baseline-browser-mapping, nanoid and source-map-js. Every fix sits within the range package.json already declares, so only the lock moves; package.json is untouched. Lock generated with npm 11.21.0 exactly: npx --yes npm@11.21.0 update react-router-dom react-router vitest \ @vitest/mocker browserslist baseline-browser-mapping nanoid \ source-map-js --package-lock-only --ignore-scripts 259 entries before and after, 20 changed, each resolved from registry.npmjs.org with a new sha512 integrity. npm ci, under npm 10 and under npm 11.19.0, leaves the lock as is; npm audit: 0. Only react-router 7.18.1 -> 7.18.4 changes the built app: a build from a lock where only react-router moved equals the full build byte for byte. Since 7.18.3, useNavigate() and <Navigate> reject a navigation to another origin; the app only navigates to internal paths. CLAUDE.md and docs/architecture.md no longer describe 2 high advisories accepted for good: npm audit is at 0 on 2026-10-10, a dated reading that nothing re-runs in CI. Resolves #358 Resolves #317 Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>Auto-revue du worker autopilot — verdict : APPROVE
Relu sur le diff de la PR (
e8306aa, 5 fichiers, +97/−88) : chacune des 20 entrées du lock dont la version change, les deux phrases de docs et les deux entrées de CHANGELOG, contre les critères de planification de #358.Critères de planification
npm@11.21.0exactement, version consignéenpx --yes npm@11.21.0, citée dans le commit et la PR (section Technique).resolvedvershttps://registry.npmjs.org/avecintegrityintegritysha512-neuf partout. Vérifié en plus à la relecture : chaqueresolvedmodifié vaut exactementregistry.npmjs.org/<nom>/-/<nom>-<version>.tgzde son entrée (0 écart),npm ls --allsort en 0, et les archives react-router 7.18.1 et 7.18.4 téléchargées correspondent à l'integritydes deux locks.npm auditrelancé juste avant le commit, 0, sortie colléenpm cisous npm 10.9.4 ; commit à 21:14:34. Aucune nouvelle advisory apparue entre-temps.diff -r dist/identique ou écart expliquéindex.html, entièrement dû à react-router 7.18.1 → 7.18.4 : le build d'un lock où seul react-router bouge égale le build complet octet pour octet (témoin de la copie : référence reproduite à l'identique).npm audità 0 au (#358) », plus de « 2 high acceptés », plus de renvoi à #317, « aucunnpm auditen CI » gardéCLAUDE.mdl. 166 etdocs/architecture.mdl. 604 : conformes.git grepne trouve plus de mention périmée horsSTATE.md(laissé à la synchro post-merge).Resolves #358+Resolves #317[Unreleased]/[Non publié], aprèsFixed/Corrigé, terminées par(#358). Les deuxResolvessont dans le commit et en tête du corps de la PR.Critères d'origine de l'issue :
package.jsoninchangé (empreinte identique), 259 → 259 entrées,lockfileVersion3,npm ci(npm 10 et npm 11.19.0) sans réécriture du lock, build vert, 110 fichiers / 1915 tests en local avant et après.Vérifié à la relecture sur mes propres affirmations
validateNavigationTarget,removeTrailingSlash,\initial absolu dansresolveTo) apparaissent tous en 7.18.3, contrôlé sur les archives 7.18.1 à 7.18.4 : l'attribution du commit et de la PR est exacte. Le correctif de GHSA-qwww-vcr4-c8h2 est en 7.18.2 (plagenpm audit<7.18.2).src/, toutes internes.Ce que la CI doit encore montrer
check-frontendrun 520 sure8306aa(en attente à l'écriture) :npm cisous Node 24 / npm 11.19.0 sans erreur, le même uniquenpm warn install-scripts … esbuild@0.25.12,npm run buildvert, 110 fichiers / 1915 tests. Pas decheck-rustattendu : rien soussrc-tauri/ni.cargo/.Pour relire en priorité
tauri://localhost, origine opaque) et sous Windows lèveraient le dernier doute (barre latérale, lien d'étape du bandeau de démarrage, redirections/docset/changelog).browserslist4.29.3,baseline-browser-mapping2.11.28,nanoid3.3.20) et deux compagnons de plus (source-map-js,chai6.3.0) : tous dans les bornes, publiés après l'analyse du 09-26 ;baseline-browser-mapping2.11.28 avait deux jours.npm audit) pour 7 GHSA distinctes : les paires sont nommées dans le commit et la PR.CI lue par la session principale du run autopilot (pas une revue)
e8306aa(tête)v24.21.0, npm11.19.0,npm ci: « found 0 vulnerabilities » ; vitestv4.1.11; build vert ; 1915 tests (110 fichiers)Preuve indépendante du passage de 8 à 0, lue dans la CI elle-même : le résumé d'audit de
npm ciaffichait « 8 vulnerabilities (3 moderate, 5 high) » aux runs 512 et 519 (lock demain), et « found 0 vulnerabilities » au run 520. L'avertissementnpm warn install-scripts … esbuild@0.25.12 (postinstall)est inchangé.Vérifié à la source, à l'appui du point 1 de « Pour relire en priorité » : le CHANGELOG de react-router 7.18.3 annonce « Add additional URL validation on client side navigations/redirects » (remix-run/react-router#15446). Le script du worker ne trouve aucun échec sur les quatre origines, mais rien n'a été vérifié dans l'app lancée : quelques navigations sous Linux (origine
tauri://localhost) et sous Windows sur un build qui contient cette PR le confirmeraient.Revue /pr-review — PR #417 (
issue-358-npm-lock-refresh→issue-320-latest-json-keys)Verdict : APPROVE
Résumé. Le rafraîchissement du lock tient ce que le corps annonce :
npm auditpasse de 8 vulnérabilités (5 high, 3 moderate) à 0, les 20 entrées modifiées correspondent au registre, et seul react-router change le bundle livré, sans effet sur la navigation de l'app. Une suggestion non bloquante porte sur une phrase de doc inexacte.Vérifications rejouées
Copie
git archivehors dépôt, Node 22.22.0, npm 10.9.4.npm audit --package-lock-only). Lock de la base, identique à celui demain(sha2563bf42c0…) :8 vulnerabilities (3 moderate, 5 high), les advisories du corps (react-router7.12.0 - 7.18.1« RSC Mode CSRF Bypass Allows Action Execution Before 400 Response », browserslist<=4.28.6, nanoid<3.3.18, baseline-browser-mapping>=2.0.0 <2.11.0, source-map-js1.0.0 - 1.2.1, vitest et @vitest/mocker). Lock de la tête :found 0 vulnerabilities. Remettre l'ancien lock fait revenir les 8 : c'est la mutation de ce correctif.lockfileVersion3 → 3, 259 → 259 entrées, aucune ajoutée ni retirée, entrée racine identique, 20 modifiées. Pour chacune :integrityetresolvedégaux àdist.integrityetdist.tarballdu registre ;dependencies,optionalDependencies,peerDependenciesetengineségaux au manifeste publié ; aucun scriptpreinstall/install/postinstall/prepare; aucune version dépréciée. Seulesreact-routeretreact-router-domsont horsdev.source-map-js1.2.2 n'en a pas, comme la 1.2.1, et garde le même éditeur (7rulnik). Deux paquets changent d'éditeur :tinyrainbow(oreanno → publication GitHub Actions, tagv3.2.0) etupdate-browserslist-db(ai → publication GitHub Actions, tag1.3.4). Leurs attestations désignent le dépôt d'origine de chacun : c'est un passage à la publication attestée, pas un changement de mains. Version la plus récente :baseline-browser-mapping2.11.28, publiée le 2026-10-08, données de build seulement.npm ci, build, tests.npm circ=0 et sha256 du lock inchangé (752e8d8…) ;npm run buildvert, bundleindex-DjjeOWRp.js(1 744,03 kB) et CSSindex-CSFhII2z.css, les mêmes noms que dans la CI ;npm test: 110 fichiers, 1915 tests verts.index-D8mOfrMJ.js, identique octet pour octet (cmp) au bundle construit depuis la base. Les 18 autres mises à jour ne touchent donc pas la sortie, et la CSS est identique entre base et tête.dist/production/chunk-Q34X6AWR.mjs:useNavigate()et<Navigate>appellentvalidateNavigationTarget(..., "reject"),<Navigate>pendant le rendu, avant l'effet qui navigue ;isSameOrigincompare protocole et hôte quand l'origine vaut"null". Script hors dépôt sur le vrai code 7.18.4 (createBrowserHistorysur une fenêtre simulée,resolvePath,validateNavigationTarget), avec ma propre liste de cibles relevées danssrc/: constantes deshared/constants, deonboardingChecklistetonboardingPath,/settings/users#import-export,/settings/users#gettingStarted,/reports…suivi delocation.search,/reports/category?cat=…. Sous 5 origines (Linuxtauri://localhostavec origine"null"ou en tuple, Windowshttp://tauri.localhostethttps://tauri.localhost, devhttp://localhost:1420), avec 3 témoins externes : 150 contrôles, 0 échec, chaque témoin refusé par « External navigation is not allowed ». Toutes les cibles desrc/sont des chemins absolus à barre unique, ou/reportssuivi delocation.search(vide ou commençant par?) : aucune ne peut se résoudre vers une autre origine. Les clics manuels du point 1 du corps restent un contrôle d'appoint, pas une condition du merge.CI (run 520, log lu par la route web) : Node 24.21.0, npm 11.19.0,
npm ciavec un seul avertissementinstall-scripts(esbuild@0.25.12), build vert sur le même bundleindex-DjjeOWRp.js, vitest 4.1.11 : 110 fichiers, 1915 tests.check-rustne se déclenche pas (aucun fichiersrc-tauri/**), c'est attendu.Fermetures.
Resolves #358etResolves #317figurent dans le corps et dans le message du commit, et la timeline des deux issues porte unpull_refclosesvenant de #417 : les deux se fermeront au merge, par l'API comme en avance rapide.CHANGELOG. Entrées EN et FR alignées ;
### Security/### Sécuritéaprès### Fixed/### Corrigé, dans l'ordre de Keep a Changelog ; ce titre existe déjà quatre fois plus bas, etChangelogContent.tsxlit tout titre###sans liste fermée. La description de l'advisory correspond au titre que donnenpm audit.Suggestions (non bloquantes)
CLAUDE.md:166etdocs/architecture.md:604: « rien ne le réévalue en CI » est inexact, et la doc d'architecture ajoute « une advisory publiée depuis n'apparaît qu'au prochainnpm auditlancé à la main ». L'étapenpm cidecheck-frontend.ymltourne sans--no-auditet sans.npmrc: elle audite à chaque run et imprime le compte, sans faire échouer le job (run 520 :found 0 vulnerabilities, sur la ligne qui suitadded 175 packages). Le Défenseur relève aussi ces findings de son côté, et #358 en vient. Formulation proposée : «npm audità 0 au 2026-10-10 (#358), un constat daté : aucun job ne le fait échouer,npm cien imprime seulement le compte à chaque run decheck-frontend». La correction est mineure ; elle évite à un futur lecteur de croire qu'aucun signal n'existe entre deux audits manuels.STATE.md, prévue par le corps : la ligne 13 (« 2 restantes, acceptées ») et la mention de #317 dans les suivis d'advisories (ligne 81) deviennent fausses au merge.Labels
#358 passe de
status:reviewàstatus:approved. #317 portestatus:ready, passtatus:review: la procédure le laisse tel quel, et il se fermera au merge.Actions faites
Copie hors dépôt (
/tmp/pr417-review: arbres de la base et de la tête, archives react-router 7.18.1, scripts, journaux) supprimée en fin de revue. Aucun fichier du dépôt modifié.