chore: detecta mudança no contrato do Strapi e remove specs mortas - #176
Open
iacapuca wants to merge 1 commit into
Open
chore: detecta mudança no contrato do Strapi e remove specs mortas#176iacapuca wants to merge 1 commit into
iacapuca wants to merge 1 commit into
Conversation
Adiciona um snapshot dos content types do Strapi e um job informativo que falha quando ele fica para tras. Nenhum arquivo de app/ foi alterado. - scripts/check-strapi-contract.mjs + `pnpm strapi:contract` - strapi-contract.json: components.schemas da spec OpenAPI (36 KB) - job "Strapi contract" no PR Validation - remove specification.json (1 MB) e app/types/strapi-api.ts (504 KB) Os dois arquivos removidos nao eram importados por lugar nenhum. O specification.json foi commitado em abril no PR #134 e nunca regenerado -- o processo manual ja tinha falhado na pratica. Guarda so components.schemas: os 64 paths mudam por motivos que nao nos afetam, e a spec do Strapi 5 e experimental e sai com defeitos justamente neles (/auth/sessions/{sessionId} declara um parametro que nao define, o que faz o Orval recusar a spec inteira). Deliberadamente nao gera tipos nem schemas Zod. A spec erra o formato da chave primaria: declara documentId como uuid, e o Strapi 5 emite cuid (erndppywooar0fq6v99l2y5m). Testado contra producao, zero de tres projetos reais passariam numa validacao derivada dela -- e isso nao aparece em typecheck nem em build, so em runtime. Os schemas em app/queries/ seguem escritos a mao; o snapshot serve para revisao humana no PR. Co-Authored-By: Claude Haiku 4.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01NzvzBUT8kw8SbR4bsGab97
🚀 Preview deploy
Updates on every push. Production is unchanged. |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Adiciona um snapshot dos content types do Strapi e um job informativo que falha quando ele fica para trás. Nenhum arquivo de
app/foi alterado — typecheck, lint e build idênticos à baseline (286 / 150 / ✓).O que entra
scripts/check-strapi-contract.mjscomponents.schemaspnpm strapi:contractpnpm strapi:contract --checkStrapi contractSai 1.5 MB de peso morto:
specification.jsoneapp/types/strapi-api.ts, nenhum dos dois importado por lugar algum. Ospecification.jsonfoi commitado em abril no #134 e nunca regenerado — o processo manual já tinha falhado na prática.Por que só
components.schemasOs 64 paths mudam por motivos que não nos afetam (auth, upload), e a spec do Strapi 5 é experimental e sai com defeitos justamente neles:
/auth/sessions/{sessionId}declara{sessionId}na URL e defineparameters: []. É OpenAPI inválido — o Orval recusa a spec inteira por causa disso.Por que não geramos tipos nem Zod
Essa era a proposta original, e o POC a derrubou.
A spec erra o formato da chave primária: declara
documentIdcomo uuid com regex estrita, e o Strapi 5 emite cuid.Testado contra produção: zero de três projetos reais passariam. O efeito seria
.parse()lançando em toda página que lê projeto, FAQ ou documento.E o mais relevante: typecheck e build ficaram verdes com o código quebrado. É falha de runtime, invisível para os dois. Só apareceu buscando dado de verdade.
A doc do Strapi avisa que geradores podem emitir tipos mais frouxos que a realidade; aqui é o inverso e pior — mais estrito e factualmente errado.
O que o snapshot entrega
Quando alguém mexer num content type, o
--checkfica vermelho e o diff dostrapi-contract.jsonmostra exatamente o que mudou. Um humano decide se algum schema Zod emapp/queries/precisa acompanhar.É menos automático do que eu tinha proposto, mas é o que a spec sustenta hoje.
Informativo de propósito: um PR sem relação com o Strapi não deveria travar. Diferente do typecheck — que está permanentemente vermelho com 286 erros e virou paisagem — este nasce verde, então vermelho ali é sinal.
🤖 Generated with Claude Code