Repository navigation
ci: valida consistência plugin.json ↔ marketplace.json - #15
Merged
Merged
Conversation
A CI daqui só rodava a suíte de testes. Sem checagem de versão, drift entre o plugin.json e o marketplace.json passa batido: foi o que aconteceu com o protheus (plugin.json=2.14.0 vs marketplace=2.13.0), que ficou uma semana divergente até ser corrigido a mão no PR #13. Passo portado do tbc-knowledge-plugins (texto do `run:` idêntico), incluindo o guard `typeof p.source !== "string"`: plugin de source externo é declarado com source em OBJETO (github/repo/sha) — o andrej-karpathy-skills, aqui. Sem o guard, `p.source.replace(...)` estoura com `TypeError: p.source.replace is not a function` antes mesmo de tentar ler arquivo, e a CI falha com stack trace bruto em vez de mensagem de drift. Validado local rodando o bloco `run:` extraído do próprio YAML por parser (não uma cópia redigitada): - estado atual do repo: exit 0, com os 4 plugins locais conferidos (fluig 2.1.1, protheus 2.14.1, po-ui 1.0.0, playwright 1.0.0) e o externo pulado; - com drift artificial: exit 1 e "DRIFT: <plugin> plugin.json=X marketplace=Y"; - restaurado: exit 0 de novo. O passo roda antes da suíte: é uma checagem de menos de 1s contra ~17s de testes, então falha barato primeiro. Limitação herdada do repo-fonte, não introduzida aqui: o script itera as entradas do marketplace.json, nunca varre o disco — plugin novo com plugin.json que ninguém registrou no marketplace continua passando despercebido. YAML validado e tests/run-all.sh verde. Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
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.
Fecha o bead
-izm.O buraco
A CI daqui só roda a suíte de testes — nenhuma checagem de versão. Sem ela, drift entre
plugin.jsonemarketplace.jsonpassa batido: foi o que aconteceu com o protheus (plugin.json=2.14.0vsmarketplace=2.13.0), que ficou uma semana divergente até ser corrigido a mão no PR #13.No repo irmão, uma variante desse mesmo furo (tabela de versões do README defasada) manteve 7 PRs vermelhos por duas semanas, porque lá a CI roda no merge com a main.
O que entra
Passo portado do
tbc-knowledge-plugins— texto dorun:idêntico, byte a byte.O guard
typeof p.source !== "string"não é decorativo: plugin de source externo é declarado comsourceem objeto ({source: "github", repo, sha}) — oandrej-karpathy-skills, aqui. Sem o guard,p.source.replace(...)estoura comTypeError: p.source.replace is not a functionantes de tentar ler arquivo, e a CI falha com stack trace bruto em vez de mensagem de drift.O passo roda antes da suíte: menos de 1s contra ~17s de testes, então falha barato primeiro.
Validação
Rodei o bloco
run:extraído do próprio YAML por parser, não uma cópia redigitada:exit 0— fluig 2.1.1, protheus 2.14.1, po-ui 1.0.0, playwright 1.0.0 conferidos; externo puladoexit 1+DRIFT: <plugin> plugin.json=X marketplace=Yexit 0O guard também foi testado por remoção, confirmando que sem ele o script quebra. YAML válido e
tests/run-all.shverde.Limitação conhecida (herdada do repo-fonte, não introduzida aqui)
O script itera as entradas do
marketplace.jsone nunca varre o disco. Plugin novo complugin.jsonque ninguém registrou no marketplace continua passando despercebido — o inverso do drift que este passo pega. Vale um follow-up nos dois repos.🤖 Generated with Claude Code