Vigilância: o contrato da Plataforma foi para v1.1.0 e o detector não olhava onde ele é publicado - #7
Merged
Conversation
O contrato da Plataforma saiu do v0.0.10 para o v1.1.0 em 24/08/2026, junto
com o Manual de Integracao v1.1.0, e o CGIBS moveu o v0.0.10 para "versoes
anteriores". Os dois entram aqui como arquivos NOVOS, com linha propria no
MANIFEST: a convencao do arquivo e nunca sobrescrever, e o v0.0.10 continua
sendo o contrato que gera os pacotes publicados.
A quebra e larga: as 12 rotas de stream trocaram {idPsp}/tributos por
{cnpjRaizPspRecDir}/transacoes, entraram 3 rotas do Mecanismo de Ocorrencias,
X-JWS-Signature virou required nas 43 operacoes e os schemas foram de 57 para
78, com 33 dos 55 comuns alterados. Migrar os pacotes e major bump e fica para
task propria; por isso o v1.1.0 ainda nao alimenta o codegen.
Tambem pinados: NT 2025.002 v1.51 (04/08), NT 2026.006 v1.00 e IT 2026.001
v1.01 (25/08), PL 010f v1.04 (31/08) e a minuta do Manual de Tempos, publicada
em 15/07/2026 e que quatro documentos deste repo davam como inedita.
Portal e piloto da Calculadora re-vendorados apos o drift da issue #6: 36 para
40 rotas. Os rotulos CURRENT e LATEST que ficaram falsos foram datados em vez
de apagados, para a linha seguir legivel como historico.
O detector afirmava, em comentario, que o OAS que gera os pacotes nao tinha fonte publica e que por isso nao dava para monitora-lo. Era falso. O CGIBS publica o OAS em https://www.cgibs.gov.br/split-payment, sem login e sem mTLS, e o zip de la e byte-identico ao que estava vendorado desde julho. O custo do engano deu para medir: o v1.1.0 saiu em 24/08 e passou 11 dias sem deteccao. O quarto alvo compara o INVENTARIO de artefatos da pagina, nao o conteudo de um arquivo: o nome de cada upload carrega timestamp (202608/24154448-...), entao a URL de um arquivo nunca e alvo estavel, e a pagina e. Um artefato novo publicado ali vira chave a mais no diff e reprova o run. Detalhes que o caso ensinou: - inventario vazio e tratado como corpo quebrado, nao como "apagaram tudo": o desafio anti-bot do gov.br responde 200 com HTML, e aceitar isso apagaria o inventario pinado no proximo re-pin; - user-agent de navegador em todos os alvos, porque o default do Node basta para tomar 403 ou challenge. Foi o que destravou a captura do piloto; - accept por tipo de alvo, para nao pedir html num alvo que deve dar json. 6 testes novos, 30 no total.
O README afirmava, nas duas metades, que nao existia fonte publica para o contrato que gera os pacotes. A correcao fica registrada no texto em vez de sumir em silencio: uma limitacao declarada com confianca e nunca verificada foi o que custou 11 dias de deteccao, e apagar a frase esconderia a licao. O quadro de estado-regulacao estava carimbado "ultima verificacao: 20/07/2026" e prometia que qualquer diferenca viraria Novidades. Eram 46 dias e cinco diferencas nao registradas. Agora: NT 2025.002 em v1.51, PL 010f, Calculadora de producao em 1.3.1/V0043, OAS da Plataforma em v1.1.0, Manual de Integracao em v1.1.0, mais linhas novas para NT 2026.006, IT 2026.001 e o Manual de Tempos. O Manual de Tempos sai da lista de inexistentes, onde estava errado desde 20/07: quatro documentos o davam como inedito e ele e minuta publicada. Novidades ganha as quatro entradas que faltavam (24/08, 25/08, 31/08 e 04/08), no contrato fixo da pagina. A rotina de vigilancia registra o que a auditoria apurou, incluindo o que ja funcionava: o detector automatico pegou o drift da Calculadora e abriu a issue #6 em 31/08. Ela ficou 4 dias sem tratamento, o que e falha de resposta, nao de deteccao.
Os pacotes nao mudam de comportamento. O que muda e o que eles dizem sobre si: o README dos dois passa a avisar que o contrato oficial esta na v1.1.0 e que o pacote instalado implementa a v0.0.10. Quem der npm install hoje precisa saber disso, e o README e o unico canal que chega ate essa pessoa. Tres correcoes de infraestrutura que o levantamento expos: - prepublishOnly nos dois pacotes. dist/ e gitignored e nada rodava build antes de publicar: num clone limpo, um pnpm publish geraria um tarball com main, types e exports apontando para arquivos inexistentes. - ci.yml com build, typecheck e testes em matriz Node 22 e 24. Nao havia nenhum portao: os 162 testes so rodavam na maquina do mantenedor, e o 22 e prometido em engines sem nenhuma evidencia por tras. - pnpm test na raiz passa a incluir test:scripts. Os 30 testes do detector de drift vivem em scripts/, fora de qualquer pacote, entao pnpm -r test nunca os alcancava.
Mozurok
deleted the
fix/vigilancia-contrato-v1-1-0-e-revendor-set2026
branch
September 4, 2026 17:39
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.
Auditoria de drift de 04/09/2026, disparada por um mês sem checagem manual (a última foi 03/08). Seis achados, um deles muda a leitura do projeto.
O achado principal
O contrato oficial que gera os dois pacotes publicados foi substituído. Em 24/08/2026 o CGIBS publicou o OpenAPI v1.1.0 da Plataforma Pública, pareado com o Manual de Integração v1.1.0, e moveu o v0.0.10 para "versões anteriores".
{idPsp}/tributos/...{cnpjRaizPspRecDir}/transacoes/...X-JWS-Signaturerequired: truenas 43 operaçõesO manual acrescenta que o Informe de Transação Atualizada perdeu o Pix Automático,
numCodBarrasficou fixo em 44 caracteres edtHrRepasseganhou prazo-limite.@splitbr/cliente@splitbr/mockcontinuam gerados do v0.0.10. Este PR não migra os pacotes: é major bump nos dois e merece task própria. O que ele faz é vendorar o v1.1.0, dizer a verdade sobre a situação em todo lugar que hoje mente, e fechar o buraco de vigilância que deixou isso passar.Por que passou
O
drift-check.mjsafirmava, em comentário, que esse contrato não tinha fonte pública e por isso não dava para monitorá-lo. O README repetia. Era falso: https://www.cgibs.gov.br/split-payment serve o zip do OAS sem login e sem mTLS, e o arquivo de lá é byte-idêntico ao que estava vendorado desde julho.Custo medido: 11 dias sem detecção. O quarto alvo do detector fecha isso, comparando o inventário de artefatos da página (o nome de cada upload carrega timestamp, então a URL de um arquivo nunca é alvo estável; a página é).
O que mais estava desatualizado
docs/site/novidades.mdestava cinco semanas em silêncio apesar do contrato fixo da própria página. Ganhou as quatro entradas que faltavam.Infraestrutura
ci.ymlroda build, typecheck e testes em matriz Node 22 e 24 (o 22 é prometido emenginessem nenhuma evidência por trás).prepublishOnly. Comodist/é gitignored, umpnpm publisha partir de clone limpo geraria tarball apontando para arquivos inexistentes.pnpm testna raiz não alcançava os 30 testes do detector, que vivem emscripts/.Release 0.1.1
Patch, sem mudança de comportamento. O conteúdo é o aviso no README dos dois pacotes: quem instala hoje precisa saber que o contrato oficial saiu de baixo do pacote.
Verificação
Nota sobre o MANIFEST: nenhuma linha foi sobrescrita, conforme a convenção do arquivo. Os rótulos
CURRENTeLATESTque ficaram falsos foram datados ("foi CURRENT até 04/08/2026") em vez de apagados, e as notas de contract diff anteriores foram marcadas como superadas, não editadas.