Skip to content

Prepara o repositório para abertura pública - #3

Merged
marcosbeto merged 1 commit into
mainfrom
abertura-open-source
Jul 27, 2026
Merged

Prepara o repositório para abertura pública#3
marcosbeto merged 1 commit into
mainfrom
abertura-open-source

Conversation

@marcosbeto

Copy link
Copy Markdown
Contributor

Auditoria pré-abertura seguindo o padrão dos irmãos já abertos (bncc-dados, bncc-benchmark). Base neste PR é remove-contato-worker (#1), que deve mergear antes.

Veredito

Pode abrir, e o histórico não precisa ser reescrito. A varredura dos 79 commits não achou nenhum segredo: nenhum .env/.dev.vars commitado, nenhum token de npm/PyPI, nenhuma chave privada. O único acerto do scanner de credenciais é a site key do Turnstile, que é pública por construção.

O achado que importava

packages/bncc/dados/VERSAO.json:5 e o equivalente do Python gravavam:

"sincronizado_de": "/Users/marcosbeto/Dev/bncc-dados"

Esse arquivo viaja dentro do tarball do npm e do wheel do PyPI. Confirmado já público baixando os artefatos de @bncc/dados@0.3.1 e bncc 0.2.0. A raiz era scripts/sincronizar-dados.mjs:50, que fazia resolve() do argumento; agora grava só o basename (o campo commit é o que identifica a origem de forma reprodutível). Ver DECISOES.md D8.

Também corrigido

Achado Evidência Correção
Pacotes publicados sem licença legível files só tinha dist, dados, README.md; wheel só com METADATA LICENSE.md por pacote, dentro do artefato
Link "Repository" do npm quebrado repository sem directory (monorepo) directory nos dois pacotes
Repo interno iaebb citado nos docs docs/arquitetura.md:98, docs/manutencao.md:34 apontam para o docs/deploy.md do bncc-site
README de duas releases atrás declarava 0.1.0, real 0.3.1; listava site/ como pasta arquivada corrigido
E-mail pessoal como autor no PyPI python/pyproject.toml:9 contato@bncc.dev
Runbook citando job de CI inexistente tabela em docs/manutencao.md corrigido

Arquivos de comunidade (nenhum existia)

LICENSE + LICENSE-CODIGO.md + LICENSE-DADOS.md (split do benchmark, com a nota de que nome e identidade visual não são licenciados), CONTRIBUTING.md, SECURITY.md, CODE_OF_CONDUCT.md, DECISOES.md (D1–D8), CHANGELOG.md, CITATION.cff e templates de issue/PR.

O CONTRIBUTING enuncia a regra de ouro na fonte: o núcleo injetável (criarConsultas) é a única superfície de consulta; PR que reimplemente lookup, busca ou decodificação é recusado mesmo passando nos testes.

O que NÃO fiz, de propósito

  • Não configurei provenance/OIDC. provenance: true quebraria o publish local do mantenedor, que é o fluxo atual. Fica como decisão DT3.
  • Não reescrevi histórico. O ID da conta AWS (851725383889) ficou em 50 commits do deploy-aws.yml do site. É identificador, não credencial — e o próprio bncc-benchmark documentou que o GitHub continua servindo commits órfãos por SHA depois do force-push, então a reescrita quebra hashes sem remover de fato.
  • Não publiquei nada.

Dois bloqueios de sequência

  1. @bncc/mcp@0.2.0 não está no npm (publicado: 0.1.1, sem exports). Abrir o repo hoje exibe um export ./tools que ninguém consegue instalar — e é exatamente o que o bncc-playground precisa para largar o vendor/bncc-mcp-0.2.0.tgz.
  2. A proveniência da marca no playground aponta para bncc-pacotes/site/src/marca/, que não existe mais (o site migrou). O sincronizar-marca.mjs de lá aponta para o vazio.

Ambos estão no plano com sequência de flip. O plano completo (achados por severidade, checklist go/no-go, o que não consegui verificar) está em docs/plano-abertura.md, gitignorado como o do bncc-dados e o interno/ do bncc-benchmark — está no disco, não neste diff.

Verificação

43 (npm) + 10 (MCP) + 17 (worker) + 34 (PyPI) passando. npm pack --dry-run e uv build conferidos: os artefatos agora levam licença e o VERSAO.json limpo.

Auditoria pré-abertura seguindo o padrão dos irmãos já abertos (bncc-dados,
bncc-benchmark). O repo não tinha NENHUM arquivo de comunidade: sem LICENSE
(apesar de README e manifests declararem MIT + CC BY 4.0), sem CONTRIBUTING,
SECURITY, CODE_OF_CONDUCT, DECISOES, CHANGELOG nem templates.

Nenhum segredo no histórico. A varredura dos 79 commits não achou .env,
.dev.vars, token de npm/PyPI nem chave privada; o único acerto do scanner é a
site key do Turnstile, pública por construção. O histórico NÃO precisa ser
reescrito para o flip.

O achado que importava é outro: packages/bncc/dados/VERSAO.json e o equivalente
do Python gravavam "sincronizado_de": "/Users/marcosbeto/Dev/bncc-dados", e esse
arquivo viaja DENTRO do tarball do npm e do wheel do PyPI. Confirmado já público
em @bncc/dados@0.3.1 e em bncc 0.2.0. scripts/sincronizar-dados.mjs passa a
gravar só o basename (o campo `commit` é o que identifica a origem de forma
reprodutível) e os dois arquivos foram corrigidos. Ver DECISOES.md D8.

Licenças no modelo do bncc-benchmark: LICENSE explica a divisão, LICENSE-CODIGO
(MIT) e LICENSE-DADOS (CC BY 4.0) trazem os textos, e a nota de que nome e
identidade visual não são licenciados. Cada pacote ganhou LICENSE.md próprio,
agora incluído no tarball/wheel: os artefatos publicados iam sem licença legível.
Também entrou `directory` no repository (link do npm quebrava em monorepo),
license-files no pyproject e URLs de PyPI apontando para bncc.dev.

CONTRIBUTING enuncia a regra de ouro na fonte: o núcleo injetável (criarConsultas)
é a única superfície de consulta, e PR que reimplemente lookup/busca/decodificação
é recusado mesmo passando nos testes.

Limpezas: referências ao repo interno `iaebb` nos docs, README declarando versões
de duas releases atrás (0.1.0 vs 0.3.1) e ainda listando site/ como pasta
arquivada, runbook citando um job de CI que não existe mais, e e-mail pessoal
como autor do pacote PyPI.

O plano de abertura, com achados por severidade, checklist go/no-go e sequência
de flip coordenada com o playground, fica em docs/plano-abertura.md, gitignorado
como o do bncc-dados e o interno/ do bncc-benchmark.

Não configurei provenance/OIDC: `provenance: true` quebraria o publish local do
mantenedor, que é o fluxo atual. Fica como decisão DT3 do plano.

Suítes: 43 (npm) + 10 (MCP) + 17 (worker) + 34 (PyPI).
@marcosbeto
marcosbeto merged commit e800f52 into main Jul 27, 2026
4 checks passed
@marcosbeto
marcosbeto deleted the abertura-open-source branch July 27, 2026 13:16
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant