zunvio-score
v0.1.14
Published
ZUNVIO Score: analisa uma versao exata de um projeto de software e responde, com prova, se da para publicar. Analise local e somente leitura.
Maintainers
Readme
ZUNVIO Score
Avaliador local de prontidão contextual de release para projetos de software, em modo estritamente read-only.
O ZUNVIO faz leitura estática local, sem executar ou modificar o projeto e sem enviar seu código para serviços externos. Com base em um contrato de publicação, ele separa achados do cliente, limites de cobertura do motor e falhas do próprio motor.
O resultado inclui um artefato JSON verificável, cujo hash canônico protege os dados usados na decisão. O artefato registra também as limitações da análise; ele não substitui revisão humana nem verificações fora da cobertura declarada.
O que o ZUNVIO faz
- Varre segredos (Gitleaks) no working tree e no histórico Git.
- Varre vulnerabilidades estáticas (Semgrep) usando um rulepack local offline.
- Calcula delta Git e Blast Radius (opcional).
- Valida um contrato de publicação de 12 dimensões.
- Avalia portões e emite uma decisão fail-closed em três estados:
PUBLICAR,NÃO PUBLICARouINCONCLUSIVO. - Gera um Evidence Pack v0.2.0 determinístico, com hash canônico que protege a decisão.
- Exibe score, cobertura e decisão.
Estados de evidência
Cada portão termina estritamente em um destes estados:
| Estado | Significado |
|---|---|
| ATENDE | Evidência válida, suficiente e comprovada. |
| NÃO ATENDE | A evidência demonstra falha ou achado crítico. |
| NÃO COMPROVADO | Evidência ausente, inválida ou não executada. Ausência de evidência nunca equivale a sucesso. |
| NÃO APLICÁVEL | Requisito fora do contexto, com justificativa auditável. |
Todo NÃO COMPROVADO declara internamente uma subcausa: SEM_EVIDENCIA_DO_CLIENTE, FORA_DE_COBERTURA_DO_MOTOR ou MOTOR_FALHOU.
Pré-requisitos
- Node.js
>= 20.10.0 - Git
- Gitleaks (motor externo obrigatório para prova positiva de segredos)
- Semgrep (motor externo obrigatório para prova positiva de segurança estática)
Instalação dos motores no macOS (Homebrew):
brew install gitleaks semgrepSem Gitleaks e Semgrep o ZUNVIO ainda executa, mas os portões de segredos e de segurança estática ficam NÃO COMPROVADO (falha do motor) e a decisão é INCONCLUSIVO (fail-closed).
Instalação
A partir do repositório
git clone https://github.com/marlonsjbb/zunvio-score.git
cd zunvio-score
npm linkA partir do tarball
npm pack
npm install -g ./zunvio-score-0.1.0.tgzUso
O comando inicial é:
zunvio analyze <projeto>Formas equivalentes:
zunvio <projeto> [opções]
node bin/zunvio.mjs <projeto> [opções]Opções:
-t, --target <dir> Diretório local a analisar (padrão: '.')
-c, --contract <arquivo> Arquivo JSON do contrato de publicação
-e, --evidence <arquivo> Arquivo JSON com evidências adicionais
-d, --diff Análise de delta Git e Blast Radius
--base, --since <ref> Referência Git base para o diff
--head <ref> Referência Git de destino para o diff
--json Saída em JSON estruturado
-h, --help Ajuda
-v, --version Versão do ZUNVIOCódigos de saída
| Código | Significado |
|---|---|
| 0 | Decisão PUBLICAR: avaliação obrigatória concluída e nenhum bloqueador. |
| 1 | Decisão NÃO PUBLICAR: achado alto pendente de revisão ou outra reprovação material. |
| 2 | Decisão INCONCLUSIVO: sensor ausente, falha, timeout, truncamento ou cobertura insuficiente. |
| 3 | Erro: uso inválido ou falha operacional. |
Exemplos
Decisão PUBLICAR (portões obrigatórios atendidos):
ZUNVIO SCORE · 90
COBERTURA · 90%
DECISÃO · PUBLICARDecisão NÃO PUBLICAR (bloqueio material detectado no projeto):
ZUNVIO SCORE · 65
COBERTURA · 90%
DECISÃO · NÃO PUBLICARErro de uso (diretório inexistente):
[ZUNVIO ERRO]: análise não concluída.Limites
- A análise cobre somente os arquivos, sensores, regras e evidências declarados no artefato; riscos fora desse recorte permanecem residuais.
- A decisão é vinculada às evidências fornecidas e ao contrato de publicação acordado.
- O score é uma métrica de progresso, secundária à decisão: score alto não neutraliza bloqueador.
- O produto é uma CLI local. Não há dashboard, API, backend ou SaaS nesta entrega.
O código deste repositório é proprietário, privado e não possui licença pública de uso ou redistribuição.
