Repository navigation
fix(deps): fastify 5.12.5, nodemailer 10.0.14 e os pisos de fast-uri e brace-expansion - #1032
GabrielAderaldo wants to merge 1 commit into
Conversation
…e brace-expansion — o audit de produção voltou a recusar a árvore O `audit (produção — blocking)` reprovou a PR da 1.0.0-rc.4 com 10 advisories high e 6 moderate em dependências de runtime, todas publicadas depois do último CI verde da dev (01/10). A produção atual (rc.3) carrega as mesmas versões. - fastify 5.12.1 → 5.12.5: GHSA-p68q-wchp-6fh7 (authentication bypass via URL malformada até o not-found encapsulado), GHSA-hwr6-493r-vm6h e GHSA-9q9j-q6p8-xq58 (bypass de validação de request e de header), GHSA-667r-xxjv-c9mm (troca de body por colisão de validação async) — high; GHSA-4mh8-r7rc-xpvc (DoS em trailer HTTP/2, moderate, fechado só na 5.12.5). - nodemailer 9.1.1 → 10.0.14: GHSA-prgh-xp8r-p3m5 e GHSA-v53p-9fqp-m79j (DoS quadrático no addressparser) — high; GHSA-g57g-f23g-4646, GHSA-6vj9-mwq6-2f5v, GHSA-8vvx-rff5-p5rq — moderate. A única quebra da major 10 é exigir Node ≥ 20 (o projeto é 24). A 10.0.15 saiu hoje e está na quarentena de `minimumReleaseAge`; a 10.0.14 é a mais nova madura. Substitui a #1023 (Dependabot, 10.0.9), que não fecha os advisories posteriores. - overrides: fast-uri `>=3.1.8 <4` e brace-expansion `>=5.0.12 <6`. A 5ª rodada do fast-uri acertou a própria 3.1.6 que era o piso — o aviso do pnpm-workspace.yaml se cumpriu de novo. `pnpm audit --prod`: No known vulnerabilities found. Gate verde: typecheck, format:check, lint e test — 11908 testes, 11884 pass, 0 falhas, 19 skipped, 5 todo (#388). Assisted-by: Claude-Code:claude-opus-5-5 Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
Testes locais completos —
|
| Suíte | pass | fail |
|---|---|---|
| contracts | 102 | 0 |
| auth | 47 | 0 |
| partners | 50 | 0 |
| programs | 10 | 0 |
| budget-plans | 109 | 0 |
| financial | 213 | 0 |
| etl · etl:orchestrate · etl:contracts · etl:financial | 2 · 2 · 2 · 2 | 0 |
| storage · photo · logo (MinIO) | 13 · 5 · 4 | 0 |
| infra | 21 | 0 |
notifications (Mailpit, SMTP real — exercita o nodemailer 10) |
98 | 0 (1 skip) |
| Total | 679 | 0 |
etl:budget-plans (2 fail, Table 'legacy.budget_plans' doesn't exist) é a suíte que o integration.yml exclui de propósito — falha igual sem esta PR.
e2e HTTP — pnpm run test:integration:all (Bruno contra o src/server.ts real)
O servidor sobe com fastify 5.12.5 e as migrations aplicam (inclusive a 0020). A coleção fica vermelha, mas idêntica à dev sem esta PR, medida em A/B com o mesmo env:
dev@fbbca89d (fastify 5.12.1, nodemailer 9.1.1) |
esta PR | |
|---|---|---|
| Principal | 164/191 requests | 164/191 requests |
Regressão (z-pending-fixes) |
28/47 | 28/47 |
| Asserções que falham | 57 | 57 — diff vazio, nome a nome |
Esta PR não introduz regressão no e2e. Os vermelhos já existem na dev, e não têm relação com dependência:
- ~22×
SEC — … -> 403: o RBAC está fixado embypassno composition root ([auth] 🔓 REVERTER AUTH_RBAC_MODE=bypass — reformular e estruturar permissões do cliente #634), todo autenticado é super-usuário — a coleção ainda esperaenforced. scripts/e2e/não exportaVAN_S3_REGION/VAN_S3_BUCKET: o servidor não sobe sem elas (fail-fast da rc.2) — rodei com um env local à parte. O.env.exampletambém não lista nenhumaVAN_*.- foto do usuário 503 (
photo-storage-unavailable):S3_ACCESS_KEY_ID=dev-access-keyfixo nobruno-all.shnão bate com a credencial do MinIO vinda desecrets/. DELETE /contracts/:idresponde 200 onde a coleção espera 405; login do operador debudget-plansdá 401.
Nada disso é escopo desta PR — fica registrado para issue própria.
🤖 Generated with Claude Code
|
Superado pelo #1037, que já entrou na Medido antes de fechar:
Os dois pisos daqui são mais altos, e cheguei a preparar uma branch para aproveitá-los. A leitura do E não haveria efeito prático: com os pisos da Mergear este PR, por outro lado, rebaixaria o Nada se perde no fechamento: o assunto inteiro está na Assisted-by: Claude-Code:claude-opus-5 |
Por quê
O
audit (produção — blocking)reprovou a #1030 (bump da1.0.0-rc.4) com 10 advisories high e 6 moderate em dependências de runtime. Todos foram publicados depois do último CI verde dadev(01/10), e a produção atual (rc.3) carrega as mesmas versões. Esta PR entra antes da promoção da rc.4, que passa a incluí-la — mesmo caminho donodemailerna rc.3.O que muda
fastifynodemailerfast-uri(override)>=3.1.6→>=3.1.8 <4brace-expansion(override)>=5.0.9→>=5.0.12 <63 arquivos:
package.json(pins exatos, como cobraproduction-deps-pinned.test.ts),pnpm-lock.yamlepnpm-workspace.yaml(pisos + histórico da rodada no comentário, no padrão das anteriores).nodemailer10 — a majorO changelog da 10.0.0 declara uma única quebra: Node ≥ 20 (o projeto é 24). O pacote migrou para TypeScript e passou a publicar os próprios tipos, mantendo o layout do
@types/nodemailer— os três imports desrc/modules/notifications/adapters/email/nodemailer.ts(inclusivenodemailer/lib/smtp-poolesmtp-transport) tipam sem mudança. A10.0.15saiu hoje e está na quarentena deminimumReleaseAge; a10.0.14é a mais nova madura.Supersede a #1023 (Dependabot, 10.0.9), que não fecha os advisories do addressparser publicados depois dela.
Gate
pnpm audit --prod→ No known vulnerabilities foundtypecheck,format:check,lintetestverdes — 11908 testes, 11884 pass, 0 falhas, 19 skipped, 5todo([financial] Reader PDF Fatia 2 — extração profunda (Identity-H sem ToUnicode + stream não-comprimido) #388)core-api-test): resultado no comentário abaixo🤖 Generated with Claude Code