Ir para o conteúdo

Custos

Documento de referência de custos do Quorum (quorum-sec-scan), v0.8.3. Revisão: 2026-07-04. Escrito em pt-BR, padrão corporativo. Todo valor monetário neste documento é uma estimativa baseada em premissas explícitas (ver Premissas), não em faturas reais. Sempre confira o preço atual do provedor.

O Quorum é uma ferramenta CLI/Docker de consensus security scanning. A consequência de custo mais importante é arquitetural: o Quorum não opera nenhuma infraestrutura de runtime própria. Ele roda no CI ou na estação de trabalho do consumidor e encerra o processo quando o scan termina. Portanto, o custo de operar o produto é majoritariamente transferido para o consumidor (os minutos de CI dele), e o custo do projeto Quorum se concentra em build, distribuição (cadeia de suprimentos) e manutenção — não em nuvem de runtime.

Este documento estima custos sob dois cenáriosmantenedor OSS solo e equipe dedicada — cobrindo: infra de build/distribuição (minutos de GitHub Actions, armazenamento no GHCR), monitoramento (N/A hoje), licenciamento (o OSS do Quorum e o dos scanners), pessoal, operação/manutenção e escalabilidade. Componentes clássicos de custo de runtime (nuvem, banco de dados, APM) são declarados N/A com justificativa, em linha com 10-infraestrutura.md e 14-observabilidade.md.

Mudança de escala desde a v0.2.3. O Quorum saltou de 6 para 12 scanners empacotados (trivy, grype, checkov, kics, dockle, kubescape, polaris, kube-score, terrascan, tfsec, regula e conftest). O efeito de custo é concentrado: a imagem :full ficou maior (mais binários + DB do grype pré-cacheado) e há mais dívida de manutenção recorrente (mais pins e parsers). As premissas estruturais (CI efêmero, GHCR, sem runtime hospedado) permanecem inalteradas.


1. Modelo mental de custo

flowchart LR
    subgraph proj["CUSTO DO PROJETO QUORUM"]
        B["Build / CI<br/>(minutos de GitHub Actions)"]
        D["Distribuição<br/>(armazenamento GHCR + Releases)"]
        E["Equipe<br/>(manutenção, adapters, cadeia de suprimentos)"]
        L["Licenciamento<br/>(Apache-2.0, OSS dos scanners)"]
    end

    subgraph cons["CUSTO DO CONSUMIDOR (não do Quorum)"]
        R["Runtime no CI dele<br/>(minutos por scan)"]
        P["Pull da imagem / download do binário"]
    end

    B --> D --> P
    E --> B
    P -.-> R
Eixo de custo Quem paga Natureza Magnitude relativa
Build / CI Projeto Quorum Variável (por push/PR/release) Baixa–média
Distribuição (armazenamento) Projeto Quorum Recorrente (armazenamento) Baixa
Equipe / manutenção Projeto Quorum Recorrente (tempo humano) Dominante
Licenciamento US$ 0 (tudo Apache-2.0) Zero monetário
Monitoramento de runtime N/A (sem serviço hospedado) Zero
Runtime do scan Consumidor Variável (CI dele) Fora do escopo do projeto

Conclusão preliminar: o maior custo do Quorum não é dinheiro de infra, é tempo de engenharia (manter os 12 adapters, a cadeia de suprimentos e acompanhar as versões dos scanners).


2. Custo de runtime próprio — N/A

O projeto não provisiona nenhum recurso de operação contínua. Cada item abaixo é US$ 0 para o projeto porque não existe.

Componente Status Justificativa técnica
Compute em nuvem (VM/serverless) N/A — US$ 0 Sem serviço hospedado; o binário/imagem roda no ambiente do consumidor.
Kubernetes de runtime N/A — US$ 0 O Quorum é um processo CLI de curta duração; ele escaneia K8s, não roda em K8s como produto.
Banco de dados relacional N/A — US$ 0 Correlação/consenso em memória; o único estado é um cache local de aliases (~/.cache/quorum/aliases.json, perm 0600).
API REST / gateway / LB / CDN / WAF N/A — US$ 0 Nenhuma superfície HTTP exposta.
APM / métricas / tracing hospedados N/A — US$ 0 Sem serviço de longa duração; diagnóstico via stderr, status por scanner e, opcionalmente, um textfile local do Prometheus (--metrics, ver §4).
Chave de assinatura (HSM/KMS) N/A — US$ 0 cosign keyless (GitHub OIDC); nada para armazenar/rotacionar.
IA / LLM (API paga) N/A — US$ 0 O núcleo determinístico não tem IA. A camada consultiva opcional (--advice, desligada por padrão) roda inferência local no host (sem custo por token) e só alcança uma API externa sob --advice-provider=remote, que o consumidor habilita (--advice-allow-egress) e paga — nunca o projeto (ver 13-ia.md).

O custo do OSV.dev também é US$ 0: é um serviço público consultado sem credenciais, com degradação graciosa e desligável via --offline.


3. Infra de build/distribuição (o custo real do projeto)

A "infra" do Quorum é GitHub Actions (build efêmero) + GHCR/GitHub Releases (distribuição). Em um repositório OSS público, o GitHub oferece Actions e armazenamento de pacotes/artefatos gratuitos dentro das políticas aplicáveis — então, no cenário OSS, o custo monetário direto tende a US$ 0. As estimativas abaixo modelam o caso privado/excedente (quando o repo é privado ou as cotas são ultrapassadas), para dar uma faixa de referência.

3.1 Minutos de GitHub Actions

Workflows reais do repositório:

Workflow Gatilho Jobs / passos Duração estimada*
ci.yml push para main, PRs go vet, go test -race (cobertura), build, smoke ~3–6 min
e2e.yml push/PR, dispatch instala scanners, grype db update, scans de consenso (IaC + K8s + SCA) ~8–15 min
release.yml tag semver vX.Y.Z, dispatch matriz full/slim (Buildx+QEMU, cosign keyless, SLSA build-provenance, SBOM SPDX atestado) + GoReleaser (binários) + job knowledge (atesta o pacote de conhecimento consultivo + crosswalk) ~18–35 min
docs.yml push em docs (com paths) build MkDocs Material + publica GitHub Pages ~2–4 min
tag-major.yml após um release semver avança a tag móvel v0 <1 min

* Estimativas de ordem de grandeza em um runner ubuntu-latest. e2e.yml e release.yml são os mais caros porque baixam/verificam scanners, atualizam o DB do grype e fazem builds multi-arch com QEMU (a emulação de arm64 é notoriamente lenta no :slim). Com 12 scanners (eram 6), o e2e.yml cresceu: instala/verifica mais binários por checksum e roda mais engines por scan.

Modelo de consumo mensal (estimativa, runner Linux):

Atividade Eventos/mês (est.) Min/evento (est.) Min/mês (est.)
CI em PRs/pushes 60 5 300
E2E (consenso, 12 scanners) 40 11 440
Release (tags semver + tag-major) 2 28 56
Docs (MkDocs, só docs) 20 3 60
Total ~856 min/mês

Custo dos minutos (só se privado/excedente):

Cenário Minutos/mês Preço unitário Linux (est.) Custo USD/mês (est.) Custo BRL/mês (est.)
OSS (repo público) ~856 US$ 0 (cota gratuita) US$ 0 R$ 0
Privado, dentro da cota incluída ~856 coberto pelo plano ~US$ 0 ~R$ 0
Privado, excedente ~856 ~US$ 0,008/min ~US$ 6,8 ~R$ 38
Privado, equipe ativa (3× volume) ~2.570 ~US$ 0,008/min ~US$ 21 ~R$ 113

Câmbio assumido: US$ 1 ≈ R$ 5,50 (ver Premissas). O preço de ~US$ 0,008 por minuto Linux é o preço típico de excedente do GitHub Actions; runners maiores/macOS/Windows custam múltiplos disso — o Quorum usa apenas ubuntu-latest, o mais barato.

Alavancas de redução de custo de CI:

  • [x] Usar apenas ubuntu-latest (já é o caso).
  • [x] Cache do build Docker (cache-from/cache-to: type=gha) já configurado no release.yml.
  • [x] Cache dos módulos Go (actions/setup-go ... cache: true) já em ci.yml/e2e.yml.
  • [x] DB do grype pré-cacheado na imagem :full evita um db update no runtime do consumidor.
  • [x] Scanners empacotados verificados por checksum/digest (evita rebaixar em cada job de release).
  • [x] docs.yml restrito por paths (não gasta minutos em mudanças que não são de docs).
  • [ ] Restringir e2e.yml em PRs só de docs via paths-ignore (gap — ver §9).
  • [ ] Evitar build arm64 via QEMU onde possível (lento/caro) — considerar um runner arm nativo.

3.2 Armazenamento (GHCR + Releases)

Artefato Onde Tamanho est.* Nota
Imagem :slim (amd64+arm64) GHCR ~30–60 MB/arch Só o binário + ca-certificates + crosswalks
Imagem :full (amd64) GHCR ~2–3 GB 12 scanners + venv Python/Checkov + DB do grype pré-cacheado
Binários nativos (6 alvos) GitHub Releases ~10–20 MB cada linux/darwin/windows × amd64/arm64 (GoReleaser)
SBOMs por binário (*.sbom.json) GitHub Releases KB–MB SPDX gerado por GoReleaser/syft
Assinaturas/atestados GHCR/Releases KB cosign .sig/.pem, SLSA build-provenance, attest-sbom, atestado do pacote de conhecimento

* Estimativas qualitativas derivadas do conteúdo dos Dockerfiles; não medidas no repo. A :full cresceu de ~1–2 GB (6 scanners, v0.2.3) para ~2–3 GB porque agora empacota 12 engines (inclui terrascan com políticas via terrascan init, regula, conftest, polaris, kube-score, tfsec) além do runtime Python do Checkov.

A :full domina o armazenamento. Cada release adiciona uma nova tag versionada; sem uma política de retenção o histórico cresce linearmente — e cada tag agora é maior.

Cenário Armazenamento acumulado est. (12 meses) Custo USD/mês (est.) Custo BRL/mês (est.)
OSS (repo público) dezenas de GB US$ 0 (incluído) R$ 0
Privado, sem GC de tags antigas ~50–90 GB ~US$ 8–22 ~R$ 44–121
Privado, com GC (manter as últimas N) ~8–15 GB ~US$ 2–4 ~R$ 11–22

Alavancas:

  • [ ] Política de retenção/limpeza para versões antigas no GHCR (gap — ver §9).
  • [x] Pinagem por @sha256 recomendada ao consumidor reduz a dependência de muitas tags móveis.
  • [x] A tag móvel v0 (avançada por tag-major.yml) dá um alvo estável sem multiplicar tags.
  • [x] Publicar a :full apenas em releases (não a cada commit) — já é o caso.
  • [x] Manter a :slim como o caminho BYO-scanners para quem não quer o peso da :full.

4. Monitoramento / observabilidade — N/A (hoje)

Não há custo de monitoramento de runtime porque não há runtime hospedado a monitorar (ver 14-observabilidade.md). A "observabilidade" do produto é:

Item Custo Natureza
Logs em stderr + status por scanner (ran/skipped/unavailable/error/timeout) US$ 0 Nativo; consumido pelo CI do usuário. --log-format text\|json para ingestão estruturada.
Relatório SARIF/JSON/XML como artefato US$ 0 Gerado localmente
Métricas Prometheus (--metrics <arquivo>) US$ 0 Textfile local; o consumidor decide se coleta via node-exporter/pushgateway (custo dele, não do Quorum). Sob --advice, contadores exclusivamente consultivos também são emitidos (quorum_advice_enriched, quorum_advice_provider, quorum_advice_fix) — mesmo textfile local, sem serviço extra.
APM/Datadog/Grafana/Prometheus hospedados N/A Sem serviço de longa duração do lado do projeto

Proposta futura (NÃO implementada)

Caso o módulo de runtime separado mencionado no DESIGN §13 (Falco/Tetragon/OpenSCAP como produto independente) se materialize, haveria então um custo contínuo de observabilidade (coleta de streams, armazenamento de eventos, dashboards). Fora do escopo do Quorum v0.8.x.


5. Licenciamento

5.1 Licença do Quorum

Item Valor
Licença do projeto Apache License 2.0 (ver LICENSE)
Custo de uso/redistribuição US$ 0 — permissiva, livre de royalties, com concessão de patente
Obrigações Manter avisos de copyright/licença; declarar modificações; (se houver) incluir NOTICE

A Apache-2.0 não impõe copyleft a quem usa/integra o Quorum, e concede uma licença de patente explícita (cláusula 3). Custo monetário de licenciamento do Quorum: zero.

5.2 Licenças dos scanners empacotados

O Quorum orquestra scanners OSS de terceiros. Cada um tem sua própria licença; o Quorum os invoca como processos externos (via os/exec, ver internal/adapter/adapter.go) e os empacota na imagem :full. As licenças abaixo estão confirmadas e documentadas em THIRD_PARTY_NOTICES.md: nas versões pinadas em Dockerfile.full, todos os 12 scanners são Apache-2.0.

Scanner Projeto/origem Licença Custo Vai no :full?
Trivy aquasecurity/trivy Apache-2.0 US$ 0 Sim (imagem pinada por @sha256)
Grype anchore/grype Apache-2.0 US$ 0 Sim (instalador oficial, checksum)
Syft (suporte ao Grype) anchore/syft Apache-2.0 US$ 0 Sim (instalador oficial, checksum)
Checkov bridgecrewio/checkov (Prisma) Apache-2.0 US$ 0 Sim (pip install em venv isolado)
KICS Checkmarx/kics Apache-2.0 US$ 0 Sim (imagem pinada por @sha256)
Dockle goodwithtech/dockle Apache-2.0 US$ 0 Sim (tarball + checksum)
Kubescape kubescape/kubescape (CNCF) Apache-2.0 US$ 0 Sim (binário pinado por SHA256)
Polaris FairwindsOps/polaris Apache-2.0 US$ 0 Sim (tarball + checksum)
kube-score zegl/kube-score Apache-2.0 US$ 0 Sim (tarball + checksum)
tfsec aquasecurity/tfsec Apache-2.0 US$ 0 Sim (binário + checksum; emite AVD, correlaciona com o Trivy)
Terrascan tenable/terrascan Apache-2.0 US$ 0 Sim (tarball + checksum; terrascan init offline)
Regula fugue/regula Apache-2.0 US$ 0 Sim (tarball + checksum)
Conftest open-policy-agent/conftest Apache-2.0 US$ 0 Sim (tarball + checksum; roda o SEU Rego de ./policy)

A imagem também inclui pacotes base do Alpine Linux e, para o Checkov, um runtime Python com a árvore de dependências do Checkov (várias licenças OSI). O bill of materials autoritativo é o SBOM SPDX de cada release — atestado para a imagem (actions/attest-sbom; verifique com gh attestation verify) e publicado por binário (*.sbom.json). A tabela acima é o resumo humano dos scanners de topo.

Pontos de atenção de licenciamento (não monetários, mas de compliance): - Bancos de dados de vulnerabilidades (ex.: o DB do grype) podem ter termos próprios distintos do código do scanner. A :full congela o DB do grype no build (com GRYPE_DB_VALIDATE_AGE=false, sem expiração) — confirmar os termos de redistribuição do DB. Gap conhecido. - Marcas registradas: a Apache-2.0 (cláusula 6) não concede direito sobre nomes/marcas dos scanners. Empacotá-los não autoriza usar a marca para promover o Quorum. - Avisos de licença/atribuição já estão consolidados em THIRD_PARTY_NOTICES.md — antes um gap, agora fechado.

Custo monetário total de licenciamento (Quorum + 12 scanners): US$ 0. O custo aqui é de compliance/atribuição, não financeiro.

Pacote de conhecimento consultivo. A camada consultiva opcional traz templates de remediação curados e um corpus OWASP fixado por digest (knowledge/*.yaml) — dados, não código, todos sob a licença Apache-2.0 do projeto, logo US$ 0. A partir da v0.8.3 o pacote e o crosswalk também ganham seu próprio atestado SLSA de build-provenance a cada release (job knowledge do release.yml; verifique com gh attestation verify knowledge/owasp/corpus.yaml). Nenhum modelo pago é embutido: a inferência local é BYO no host, a remota é opcional e paga pelo consumidor (ver §2 e 13-ia.md).


6. Equipe (perfis e faixas)

O custo dominante do projeto é tempo humano. As faixas salariais abaixo são estimativas de mercado (USD anual fully-loaded e o equivalente aproximado em BRL) e variam enormemente por geografia e senioridade — trate como ordem de grandeza, não como cotação.

Perfil Responsabilidade no Quorum Faixa USD/ano (est.) Faixa BRL/mês (est.)
Eng. Go / Plataforma (sênior) Núcleo (orquestrador, correlate, consenso, model), 12 adapters US$ 120k–200k R$ 18k–40k
Eng. Segurança / AppSec Crosswalk (AVD/CIS + hub C-#### do kubescape para K8s), severidade, validação de consenso, threat model US$ 110k–180k R$ 16k–35k
Eng. DevOps / Supply-chain CI/CD, cosign/SLSA, SBOM atestado, GHCR, GoReleaser, hardening de imagem US$ 110k–180k R$ 16k–35k
Tech writer / DevRel (parcial) Docs (este conjunto, publicado no GitHub Pages), README, exemplos, adoção US$ 80k–130k R$ 10k–22k
Mantenedor/PM (parcial) Triagem de issues/PRs, releases, roadmap US$ 100k–160k R$ 14k–28k

As conversões em BRL são aproximadas e assumem fully-loaded ÷ 12 ao câmbio de R$ 5,50; encargos e impostos brasileiros (CLT/PJ) não são modelados em detalhe.

6.1 Composição por cenário

Cenário Composição típica FTE total (est.) Custo anual USD (est.) Custo mensal BRL (est.)
Mantenedor OSS solo 1 pessoa cobrindo todos os papéis, meio período/voluntário 0,1–0,3 FTE US$ 0 (voluntário) a ~US$ 50k R$ 0 a ~R$ 23k
Equipe enxuta 1 Go sênior + 1 híbrido AppSec/DevOps + writer parcial ~2,3 FTE ~US$ 350k–500k ~R$ 160k–230k
Equipe dedicada 2 Go + 1 AppSec + 1 DevOps + writer + mantenedor parcial ~4,5–5 FTE ~US$ 650k–950k ~R$ 300k–435k

No cenário OSS solo, o custo financeiro real costuma ser próximo de zero (trabalho voluntário + cotas gratuitas de OSS do GitHub). O verdadeiro custo é o risco de bus-factor e a velocidade de manutenção limitada — agravado por 12 scanners para acompanhar.


7. Operação e manutenção (recorrente)

Mesmo sem runtime hospedado, há manutenção contínua — e é aqui que mora o custo real do projeto. Com o dobro de scanners, esta é a linha que mais cresceu desde a v0.2.3.

Atividade recorrente Frequência (est.) Esforço (est.) Por quê
Bumps de versão dos scanners (ARGs do Dockerfile.full, 12 pins) mensal/trimestral 1–3 dias Scanners lançam rápido; pins ficam obsoletos; kubescape/tfsec/terrascan/regula/conftest exigem re-resolver o checksum
Rebuild da imagem :full (DB do grype congelado) por release / quando o DB envelhece automatizado + revisão O DB congela no build (GRYPE_DB_VALIDATE_AGE=false); sem rebuild fica obsoleto
Acompanhar mudanças de output dos scanners a cada major de scanner 1–5 dias Parsers/adapters quebram se o JSON muda (agora 12 parsers)
Manutenção dos contract-tests (fixtures em internal/adapter/testdata) junto com os bumps horas Garantir parsing fiel ao modelo canônico; cobertura no CI
Crosswalk (regra→controle AVD/CIS e hub C-#### do kubescape) conforme novas regras surgem horas–dias Mapear novas regras; consenso IaC (aws/azure/gcp) e K8s
Triagem de issues/PRs + release contínuo variável Saúde do projeto OSS
Hardening de supply-chain (pins por digest, imagem base, SLSA/SBOM, atestado do pacote de conhecimento) trimestral horas Manter atestados e bases pinados por @sha256
Atualização de dependências Go (Dependabot/manual) mensal horas Segurança/atualidade

Custo de manutenção monetizado (estimativa, sobre o tempo da equipe):

Cenário Esforço de manutenção/mês (est.) Custo mensal USD (est.) Custo mensal BRL (est.)
OSS solo 3–8 dias (voluntário) US$ 0 (ou custo de oportunidade) R$ 0
Equipe enxuta ~0,5–0,7 FTE alocado ~US$ 8k–14k ~R$ 44k–77k
Equipe dedicada ~1–1,3 FTE alocado ~US$ 15k–22k ~R$ 82k–121k

O custo de infra recorrente (Actions + armazenamento) é marginal perto do custo de tempo: mesmo no pior caso privado estimado (§3) soma ~US$ 25–45/mês — uma fração de um único dia de engenharia.


8. Custo de escalabilidade

A escalabilidade do Quorum tem dois vetores de custo distintos, e é importante não confundi-los.

8.1 Escalar o produto (mais adapters, mais cobertura)

Adicionar um scanner = adicionar um Adapter (ver internal/adapter/); nada no núcleo muda. O custo é linear e previsível, dominado por engenharia, não por infra. A passagem de 6 para 12 scanners é a materialização exata deste vetor.

flowchart LR
    A["Novo scanner desejado"] --> B["Escrever adapter<br/>(Name/Version/Supports/Capabilities/Run + parser)"]
    B --> C["Contract test + fixtures<br/>(internal/adapter/testdata)"]
    C --> D["Crosswalk de regras<br/>(se MISCONFIG/K8S_POSTURE)"]
    D --> E["Empacotar no :full<br/>(ARG de versão, pin/checksum)"]
    E --> F["Custo recorrente:<br/>manter o pin + parser"]
Item de custo ao adicionar 1 adapter Esforço único (est.) Custo recorrente
Implementar adapter + parser 2–5 dias-eng
Contract test + fixtures 0,5–1 dia-eng manutenção a cada major de scanner
Crosswalk (se misconfig/postura K8s) 0,5–2 dias-eng atualizar conforme novas regras surgem
Empacotar no :full (ARG/pin/checksum) horas +tamanho da imagem; +tempo de build; +bump recorrente
Aumento no tempo de scan do consumidor scanners rodam em paralelo (goroutines), mas competem por CPU/RAM/IO

Cada novo scanner empacotado aumenta o tamanho da :full (mais armazenamento, mais tempo de pull para o consumidor) e acrescenta dívida de manutenção recorrente (mais um pin, mais um parser para acompanhar). Com 12 engines, este é o custo de longo prazo mais subestimado — e o que mais pesou na v0.8.x.

8.2 Escalar o build/CI (mais commits, mais releases)

Driver de crescimento Efeito de custo Mitigação
Mais PRs/commits mais minutos de CI/E2E paths-ignore, cache (já em uso)
Mais releases mais builds da :full (lentos, ~2–3 GB) + mais tags no GHCR retenção/GC; releases menos frequentes
Build arm64 via QEMU minutos caros (emulação) runner arm nativo (futuro)
Mais scanners na :full build mais longo + imagem maior manter a :slim como caminho BYO-scanners

8.3 Escalar a adoção (mais consumidores)

Driver Quem paga Custo para o projeto
Mais docker pull / downloads edge do GHCR/GitHub ~US$ 0 (egress coberto pelo GitHub)
Mais execuções de scan Consumidor (CI dele) US$ 0 para o Quorum
Mais uso de consultoria (--advice) Consumidor (modelo no host / API remota dele) US$ 0 para o Quorum (sem custo por token para o projeto)
Mais issues/suporte Equipe tempo (ver §7)

Propriedade-chave do modelo CLI: a adoção escala sem custo de runtime para o projeto. Mais usuários não aumentam a conta de nuvem do Quorum (não há nuvem); só aumentam a carga de suporte/manutenção (tempo humano). A camada consultiva mantém essa propriedade: a inferência local é BYO no host do consumidor e a remota é a API paga opcional do consumidor — nenhuma delas fatura o projeto. A GitHub Action (action.yml, composite) e a tag móvel v0 reduzem a fricção de adoção sem transferir custo de runtime para o projeto.


9. Resumo executivo de custos

Categoria OSS solo (est.) Equipe enxuta (est.) Equipe dedicada (est.)
Build/CI (Actions) US$ 0 (público) ~US$ 0–21/mês ~US$ 21–60/mês
Armazenamento (GHCR/Releases) US$ 0 (público) ~US$ 0–22/mês ~US$ 8–22/mês
Monitoramento de runtime N/A (US$ 0) N/A N/A
Licenciamento (Quorum + 12 scanners) US$ 0 US$ 0 US$ 0
Equipe + manutenção US$ 0 (voluntário) ~US$ 350k–500k/ano ~US$ 650k–950k/ano
Custo total dominante tempo voluntário folha folha
pie showData
    title Composicao de custo (equipe dedicada, estimativa)
    "Equipe / manutencao" : 96
    "Build/CI" : 1
    "Armazenamento" : 1
    "Licenciamento" : 0
    "Runtime hospedado" : 0

Mensagem central: >95% do custo é equipe/tempo. A infra de build/distribuição é marginal (mesmo com a :full maior por causa dos 12 scanners); licenciamento e runtime hospedado são zero. Otimizar custo = otimizar eficiência de manutenção (automatizar os 12 bumps de pin, manter os contract-tests verdes, reduzir a dívida dos adapters).

Checklist de governança de custos

  • [ ] Definir uma política de retenção/GC para tags do GHCR (controla armazenamento; ainda mais relevante com uma :full de ~2–3 GB).
  • [ ] Adicionar paths-ignore para PRs só de docs em e2e.yml/ci.yml (corta minutos).
  • [ ] Automatizar o bump das 12 versões dos scanners (ex.: Dependabot/Renovate para os ARGs do Dockerfile) incl. re-resolver checksums.
  • [x] Documentar as licenças/atribuições de cada scanner empacotado na :full (THIRD_PARTY_NOTICES.md + SBOM SPDX atestado).
  • [ ] Confirmar os termos de redistribuição do DB do grype para o DB congelado na :full.
  • [ ] Avaliar um runner arm nativo para evitar o QEMU lento no build :slim.
  • [ ] Acompanhar mensalmente o consumo de minutos do Actions (alertar antes do excedente, se privado).

Premissas

  • Câmbio: US$ 1 ≈ R$ 5,50. Valores em BRL são conversões aproximadas; não consideram encargos/impostos brasileiros (CLT/PJ) em detalhe.
  • Repositório OSS público: assume-se que quorum-sec-scan é público, então GitHub Actions e o armazenamento de pacotes/artefatos caem em cotas gratuitas — daí os cenários "US$ 0". As faixas pagas modelam apenas o caso privado/excedente como referência.
  • Preço do minuto de Actions (Linux): ~US$ 0,008/min (excedente típico). O Quorum usa apenas ubuntu-latest (o mais barato); runners macOS/Windows/grandes não são usados.
  • Volume de eventos de CI (PRs, E2E, releases, docs por mês) e durações dos workflows são estimativas de ordem de grandeza, não medições — derivadas dos workflows reais (ci.yml, e2e.yml, release.yml, docs.yml, tag-major.yml).
  • Tamanhos de imagens/artefatos não são medidos no repositório; são qualitativos, inferidos do conteúdo dos Dockerfiles (:full empacota os 12 scanners + Python/Checkov + DB do grype; :slim, só o binário). Ver 10-infraestrutura.md §3.
  • Faixas salariais são estimativas de mercado fully-loaded e variam muito por geografia/senioridade; trate como ordem de grandeza.
  • Licenças dos scanners: confirmadas como Apache-2.0 nas versões pinadas em Dockerfile.full, conforme THIRD_PARTY_NOTICES.md. A lista autoritativa e completa (incl. dependências transitivas e o runtime Python do Checkov) é o SBOM SPDX atestado de cada release. A licença do Quorum é confirmada como Apache-2.0 via LICENSE.
  • A camada consultiva é opcional e não adiciona custo de runtime ao projeto: --advice é desligada por padrão e presentation-only; as Fases 0/2 são determinísticas (sem modelo), a Fase 1 (--advice-provider=local) roda no host do consumidor, e a Fase 3 (--advice-provider=remote) chama uma API externa que o consumidor consente e paga. Nenhum modelo pago é embutido ou hospedado pelo projeto.
  • Sem runtime hospedado: o produto roda no CI/estação de trabalho do consumidor; os custos de operação do scan são do consumidor, fora do escopo de orçamento do projeto.