plan(OPS54): silencia o warning do pnpm sobre pnpm.onlyBuiltDependencies ignorado
All checks were successful
Agent PR Ready + auto-merge / ready-automerge (pull_request) Has been skipped
CI (PR) / docs-guards (pull_request) Successful in 7s
CI (PR) / plans-only-closes (pull_request) Successful in 7s
CI (PR) / scope (pull_request) Successful in 31s
CI (PR) / typecheck (pull_request) Has been skipped
CI (PR) / knip (pull_request) Has been skipped
CI (PR) / cycles (pull_request) Has been skipped
CI (PR) / unit (pull_request) Has been skipped
CI (PR) / lint (pull_request) Successful in 40s
CI (PR) / format (pull_request) Successful in 49s
CI (PR) / int (pull_request) Has been skipped
CI (PR) / build (pull_request) Has been skipped
CI (PR) / e2e (1) (pull_request) Has been skipped
CI (PR) / e2e (2) (pull_request) Has been skipped
CI (PR) / checks (pull_request) Successful in 1s
Main merge flips claimed issues to done + in-prod / issue-done (pull_request) Successful in 13s
Promote plan-issue Related on main merge / plan-issue-ready (pull_request) Successful in 14s
Agent pool supervisor / tick (pull_request) Successful in 41s
CI / static (push) Successful in 1m52s
CI / int (push) Successful in 2m6s
CI / build (push) Successful in 2m54s
CI / e2e (1) (push) Successful in 4m30s
CI / e2e (2) (push) Successful in 3m57s
CI / checks (push) Successful in 1s

This commit is contained in:
Francisco Solla 2026-08-17 21:03:43 -03:00
parent e03ba1f83b
commit dfd57344e3

View file

@ -0,0 +1,80 @@
# Acabar com o warning do pnpm sobre `pnpm.onlyBuiltDependencies` ignorado
Status: registrado
Atualizado em: 2026-08-17
Issue: #12
Priority: P2
Model: composer-2.5
Impeccable: A — N/A (sem UI)
Rascunho UI: N/A — sem UI
Appetite: ~2–4 h eng; um outcome verificável
Responsável: —
## Intenção
Todo comando pnpm no terminal imprime, antes de executar:
```
[WARN] The "pnpm" field in package.json is no longer read by pnpm.
The following keys were ignored: "pnpm.onlyBuiltDependencies".
See https://pnpm.io/settings for the new home of each setting.
```
Desde o pnpm 10, o campo `pnpm` do `package.json` não é mais lido — os
settings migraram para `pnpm-workspace.yaml` (ou `.npmrc`). Além do ruído em
toda sessão de terminal (dev, CI, builds do Docker), o warning diz que a
allowlist `onlyBuiltDependencies` (`sharp`, `esbuild`, `unrs-resolver`) está
**sendo ignorada hoje**: a intenção original de permitir os build scripts
desses pacotes não chega ao pnpm. Queremos o warning sumindo e a allowlist
voltando a valer, no lugar canônico que o próprio pnpm aponta.
## Persona e fluxo
- **Persona / contexto:** dev e agentes (pool, worktrees) — todo comando pnpm, incluindo CI e build da imagem do homeserver (OPS53).
- **Job principal:** rodar qualquer comando pnpm sem a linha de warning, com a config de build scripts honrada.
- **Fluxo desejado:** `pnpm install` / `pnpm dev` / CI / `docker build` → sem `[WARN]`; `pnpm config get onlyBuiltDependencies` retorna os 3 pacotes; `sharp`/`esbuild`/`unrs-resolver` continuam com seus builds permitidos.
- **Anti-goals de produto:** reconfigurar pnpm além do que o warning cita; mudar versão/packageManager; mexer em `.npmrc` (`legacy-peer-deps`, `include`) ou na política de approve de build scripts de outros pacotes.
## Objetivo e aceite
- Nenhum comando pnpm (install/dev/scripts, CI Forgejo, estágio `deps` do Dockerfile) imprime mais o warning do campo `pnpm` em package.json.
- `pnpm config get onlyBuiltDependencies` retorna `sharp`, `esbuild`, `unrs-resolver` (a allowlist passa a ser honrada — ela não é hoje).
- Build e suíte completa verdes (mesmos passos do checklist local do `AGENTS.md`), incluindo `pnpm install --frozen-lockfile` sem tocar o grafo de dependências.
- Imagem Docker continua construindo o app (estágio `deps` copia o novo arquivo de config).
- Guardrail: `.npmrc`, `packageManager` e o restante do `package.json` ficam intocados.
## Dados (intenção)
Dados: N/A — configuração de ferramenta; nenhuma métrica/UI envolvida.
## Direção no codebase (hipótese)
- **Áreas prováveis:** raiz do repo — `package.json` (remover o campo `pnpm`), novo `pnpm-workspace.yaml` (raiz, com `onlyBuiltDependencies`), `Dockerfile` (estágio `deps` copia `pnpm-workspace.yaml` para a imagem).
- **Precedente a olhar:** pnpm docs (https://pnpm.io/settings — novo home dos settings); planos OPS50/51/53 (que tocaram CI/Dockerfile recentemente).
- **Risco de acoplamento:** `Dockerfile` é compartilhado com OPS53 (deploy homeserver, ainda `blocked`) — se os dois executarem próximos, coordenar o estágio `deps`. Verificado: nenhum script/skill lê o campo `pnpm` do package.json além do próprio pnpm; nada referencia `pnpm-workspace.yaml` hoje; `pnpm install --frozen-lockfile` deve seguir passando (grafo inalterado).
## Dependências
- Nenhuma. (OPS53 só se sobrepõe no arquivo Dockerfile se executar em paralelo.)
## Fora de escopo
- Mover outros settings (`legacy-peer-deps`, `include`) do `.npmrc` para `pnpm-workspace.yaml` — sem item, só se um warning futuro pedir.
- Atualizar pnpm / `packageManager` — fora de escopo.
- Renomear ou re-approvar build scripts de outros pacotes — fora de escopo.
## Rabbit holes de produto
- **Migração ampla de config.** Se alguém "só completar", move tudo que existe para o YAML novo e muda comportamento não reclamado. **Corte neste item:** apenas `onlyBuiltDependencies`, que é exatamente o que o warning cita.
- **Mudar a política de build scripts.** A tentação de trocar a allowlist por `dangerouslyAllowAllBuilds` etc. **Corte:** manter a allowlist como está, só realocada.
## Questões em aberto (produto)
- **Onde hospedar a config?** **Opções:** (A) `pnpm-workspace.yaml` — novo home canônico, é o destino que o próprio warning aponta; (B) `.npmrc` — ainda suportado, mas caminho legado para esse tipo de setting. **Recomendação:** A. _(assumido — validar com produto)_
- **ID OPS54 ok?** Último OPS usado é o 53 (registrado 2026-08-17). **Recomendação:** sim, próximo da trilha. _(assumido — validar)_
## Referências
- pnpm settings: https://pnpm.io/settings
- `package.json` (campo `pnpm` nas linhas 187–193), `Dockerfile` (estágio `deps`), `.npmrc`
- `docs/plans/ops53-ci-deploy-homeserver.md` (compartilha o Dockerfile)