Split out of #1124 / PR for the next 16.3 security upgrade. Priority P2.35 — severity medium, category security.
Problem
Two coupled loose ends that #1124 deliberately did not resolve, because fixing either one alone makes things worse.
1. Four advisories remain after #1124, none covered by a Dependabot PR
With next at 16.3.0, npm audit in web-ui reports:
All are dev/build-time dependencies, which is why they have been accumulating quietly. That is a reason to make a deliberate decision, not a reason to ignore them: build-time code still runs on CI runners with repo credentials in scope.
2. The deploy gate cannot see any of them
deploy.yml runs npm audit --audit-level=critical. Nothing below critical blocks a deploy, which is exactly how six high-severity findings accumulated unnoticed before #1124.
Why these have to move together
Raising the threshold to --audit-level=high today would immediately block every deploy on the three highs above. So the sequence is: decide on the four findings first, then raise the gate. Doing it in the other order breaks deploys; doing only the first half leaves the gate blind again the next time something lands.
Acceptance criteria
Note
#1124 also surfaced that Dependabot closed a security PR (#1087) as "updatable in another way" and replaced it with #1123, which bumped only top-level postcss and did not touch the nested next/node_modules/postcss that carried the actual advisories. Worth keeping in mind here: an open Dependabot PR is not evidence that a class of advisory is being handled.
Problem
Two coupled loose ends that #1124 deliberately did not resolve, because fixing either one alone makes things worse.
1. Four advisories remain after #1124, none covered by a Dependabot PR
With
nextat 16.3.0,npm auditinweb-uireports:brace-expansionjs-yamlnanoid@babel/coreAll are dev/build-time dependencies, which is why they have been accumulating quietly. That is a reason to make a deliberate decision, not a reason to ignore them: build-time code still runs on CI runners with repo credentials in scope.
2. The deploy gate cannot see any of them
deploy.ymlrunsnpm audit --audit-level=critical. Nothing below critical blocks a deploy, which is exactly how six high-severity findings accumulated unnoticed before #1124.Why these have to move together
Raising the threshold to
--audit-level=hightoday would immediately block every deploy on the three highs above. So the sequence is: decide on the four findings first, then raise the gate. Doing it in the other order breaks deploys; doing only the first half leaves the gate blind again the next time something lands.Acceptance criteria
deploy.ymlraised from--audit-level=criticalto--audit-level=highonce the above is cleanNote
#1124 also surfaced that Dependabot closed a security PR (#1087) as "updatable in another way" and replaced it with #1123, which bumped only top-level postcss and did not touch the nested
next/node_modules/postcssthat carried the actual advisories. Worth keeping in mind here: an open Dependabot PR is not evidence that a class of advisory is being handled.