verdade, bem lembrado. pacote publicado no npm não leva o package-lock junto (só se o autor publicar um npm-shrinkwrap.json, que quase ninguém faz), então as dependências com ^ pegam a versão mais nova que bater no range. o pin diminui a janela mas não fecha.
pra fechar de verdade dá pra instalar o servidor numa pasta própria, com lockfile e npm ci, e apontar o cliente pro binário de lá em vez de usar npx. no uvx o --exclude-newer com uma data ajuda a travar a resolução também.