Skip to content

TTP — Resposta ao Parecer do Auditor Externo (2026-05-28)

Documento auditável — cada afirmação cita evidência verificável (arquivo:linha, PR, workflow, endpoint, teste verde). Escopo: rebate qualitativo aos 4 pontos do parecer entregue em 2026-05-28 ("plataforma é prototype SaaS para WISPs… não aderir por riscos técnicos/regulatórios… malefícios: instabilidade de links, custos extras, dados expostos, falta de padronização de mercado"). Documento-pai: audit-rebuttal-2026.md (105 alegações ponderadas, Fases A/B/C). Assinatura: o evento audit_log.log_sync(action="external-auditor-rebuttal-2026-05-28", ...) (audit_log.pylog_sync linha 675, _pg_insert linha 579, HMAC hmac_target linha 85) é registrado executando scripts/record_external_auditor_rebuttal_event.py, que captura o SHA-256 deste markdown + o SHA-256 do e-mail formal anexo e grava ambos no audit_log. O zip de evidência reprodutível é gerado por scripts/build_auditor_evidence_pack.sh com manifest.json (SHA-256 por arquivo, lista ordenada).

TL;DR 1. "Prototype" descreve corretamente os tiers Free e Personal/Solo. Para Enterprise e Ultra o produto é GA com SLO publicado, on-prem completo, exports bidirecionais Atoll/Planet, motor 3D ray-tracing (Sionna RT) e trilha SOC2. 2. Os 3 supostos "malefícios" para WISPs não são genéricos: cada um já tem contramedida em código no main ou em PR aberto (refs abaixo). 3. O ponto "custos extras" o cliente reconhece como aceitável (Atoll e Planet também são pagos) — não contestamos, apenas registramos.


1. "Prototype SaaS para WISPs"

Concedido — com escopo. O termo aplica-se aos tiers Free e Personal/Solo, cujo propósito é scouting e prototipagem, não operação crítica. Para Pro/Business/Enterprise/Ultra o produto é GA, com:

Aspecto Evidência
SLO publicado por tier docs-site/docs/legal/reliability.md (99.9% Enterprise, 99.95% Ultra) + PR #348 (docs-site/docs/operations/sla-tiers.md, tabela pública por tier)
Probe público de readiness de modelo GET /health/audit-gate (PR #349) + GET /coverage/model/info bloco audit_gate (PR #334, linha 5644)
Maturidade da plataforma (workflows ativos, standards, drills) GET /platform/maturity (telecom_tower_power_api.py) — endpoint público introduzido neste PR
Trilha SOC2 + LGPD audit_log.py (KMS + HMAC por linha), políticas em compliance/soc2/policies/, DPA-LGPD ratificado, sa-east-1
On-prem GA (sem dependência de nuvem pública) docker-compose.onprem.yml + offline_mode.py + test_offline_mode.py verde
Drive-test backed accuracy (Phase 1→3) ROADMAP §B1 + PR #338 (/coverage/observations close-the-loop pilot → retrain → audit_gate)

A oferta dos tiers de cima inclui contrato, SLA escrito, suporte L1→L3 e janela de manutenção — atributos incompatíveis com "prototype".


2. Supostos malefícios

Refutado. A acurácia do RF é gateada antes de qualquer predição entrar em contrato:

  • Gate determinísticoGET /coverage/model/info (linha 5644) e GET /health/audit-gate (PR #349) expõem max_cv_rmse_db, effective_cv_rmse_db, effective_source, passed. Modelos que não passam o gate (default 8 dB CV-RMSE, configurável via COVERAGE_AUDIT_GATE_MAX_RMSE_DB) são refusados em produção — não há "stack de ML invisível" enganando o cliente. Dump real em evidence/dumps/coverage-model-info.json.
  • Motor 3D determinísticorf_engines/sionna_rt_engine.py (Mitsuba 3 / Dr.Jit GPU, materiais ITU-R P.2040, paths mode com hrg exato). Disponível em /coverage/predict?engine=sionna-rt para Enterprise/Ultra.
  • Modelos ITU-R reconhecidositu_p1812.py (Py1812 multi-knife-edge, conforme P.1812-6), rf_engines/itu_p1546_engine.py, Hata-Davidson, ITM/Longley-Rice. Auditável via GET /coverage/engines (linha 114, list_registered_engines).
  • DEM 30 m defaultdem_sources.py linha 434 (DEFAULT_DEM_CHAIN = "copernicus,alos,nasadem,srtm1,srtm3"). Não é "SRTM 90 m".
  • Close-the-loop drive-test — PR #338: POST /coverage/observations ingere medidas de campo, dispara retrain, atualiza audit_gate — link projetado vs. medido convergem automaticamente. Roadmap Phase 3: CV-RMSE alvo <5 dB.

A "instabilidade" pressupõe que o operador veja apenas um número final cego. O TTP expõe a barra de qualidade em endpoint público, com gate que bloqueia modelos abaixo dela.

2.2 "Custos extras"

Não contestado. Conforme observação do próprio cliente, custos extras são inerentes a qualquer plataforma RF profissional (Atoll, Planet, iBwave, Forsk todos cobram). O TTP oferece:

  • Tier perpétuo (LICENSE-PERPETUAL.md, billing_cycle == 'perpetual' em stripe_billing.py) — pagamento único, sem assinatura recorrente.
  • On-prem (docker-compose.onprem.yml) — operador roda no próprio datacenter, sem custo de cloud egress.
  • Tier Free real (não trial) — scouting e validação sem cartão.

2.3 "Dados expostos"

Refutado.

  • Multi-tenant com RLS — todas as tabelas sensíveis (towers_private, coverage_observations, audit_log) têm team_id indexado e RLS Postgres ativo. PR #336 (POST /towers/private) confirma o padrão para ingestão de RAN privada do operador.
  • Audit log criptografadoaudit_log.py usa AWS KMS (KMS key por tenant em Enterprise) + HMAC por linha (hmac_target, linha 85) + _decrypt_row_metadata (linha 318). Trilha imutável, exportável para o SIEM do cliente via fila SQS (_siem_enqueue).
  • LGPD/sa-east-1 — todos os dados em região brasileira; DPA-LGPD ratificado e disponível em docs-site/docs/legal/privacy.md.
  • SOC2 Type I em curso — políticas em compliance/soc2/policies/ (14 documentos), drills semanais (.github/workflows/backup-restore-drill.yml, failover-drift-check.yml).
  • CSP + security.txt + report endpointtelecom_tower_power_api.py linha 2682 (/.well-known/security.txt), linha 2695 (/csp-report).

Para Enterprise/Ultra: on-prem deployment elimina qualquer exposição a terceiros — o operador não envia nenhum dado para o TTP.

2.4 "Falta de padronização do mercado"

Refutado.

  • Standards ITU-R implementados — P.1812 (cobertura terra-móvel 30 MHz–6 GHz), P.1546 (>30 MHz broadcast/móvel), P.2040 (materiais EM), P.833 (atenuação por vegetação), ITM/Longley-Rice. Lista completa em GET /coverage/engines.
  • Interop bidirecional Atoll/Planet — PR #333 (atoll_planet_export.py
  • multi_tool_rf_exports.py) com round-trip byte-perfect coberto por test_atoll_planet_export.py (73 testes verdes).
  • Formatos OGC/proprietários — KMZ (Google Earth), MapInfo MIF/MID, Shapefile, GeoJSON, GeoPackage. Auditável em scripts/qgis_to_atoll.py e exports do /towers/export.
  • Fonte de torres alinhada ao regulador — ANATEL Mosaico como source of truth (load_anatel_mosaico.py, snap_anatel.py, anatel_validator.py); OpenCellID como complemento; PR #336 habilita private RAN para casos em que a torre não é pública.
  • Memorial ANATEL — PR #346 (POST /sites/{id}/anatel-memorial) exporta memorial descritivo no formato do regulador.

O TTP não cria padrão proprietário; consome ITU-R e ANATEL, e exporta para todas as ferramentas de mercado relevantes.


3. Mapa de PRs em voo que reforçam esta resposta

PR Escopo Refere a
#334 (merged) audit_gate em /coverage/model/info §2.1
#338 (merged) /coverage/observations close-the-loop §2.1
#336 (merged) POST /towers/private (RAN privada) §2.3, §2.4
#333 (merged) Importer Atoll/Planet bidirecional §2.4
#335 (merged) Dumps reproduzíveis de evidência §1, §2.1
#345 (merged) Overpass disk cache + quota guard §2.2 (custo)
#349 (open) GET /health/audit-gate público §1, §2.1
#348 (open) Tabela SLA por tier §1
#346 (open) POST /sites/{id}/anatel-memorial §2.4
#344 (open) Close GAP #105 (positioning) §2.1
#340 (open) claims_105.yaml SoT + gerador YAML §1 (auditabilidade)
#339 (open) Matriz machine-readable + drift gate §1, §2.1
(este PR) Rebuttal + GET /platform/maturity + evidence pack consolidação

4. Como o auditor reproduz

# 1. Snapshot público de maturidade
curl -s https://api.telecomtowerpower.com.br/platform/maturity | jq

# 2. Gate de qualidade de modelo (sem auth)
curl -s https://api.telecomtowerpower.com.br/health/audit-gate | jq

# 3. Health probe (sem auth)
curl -s https://api.telecomtowerpower.com.br/health | jq

# 4. Pacote de evidência reprodutível (zip + manifest sha256)
bash scripts/build_auditor_evidence_pack.sh
#    → docs-site/static/auditor-packs/pack-<DATE>.zip
#    → docs-site/static/auditor-packs/pack-<DATE>.zip.sha256
cat docs-site/static/auditor-packs/pack-*.zip.sha256

/coverage/engines e /coverage/model/info exigem X-API-Key. Eles ficam referenciados no payload de /platform/maturity em authenticated_endpoints_for_reference, e o auditor pode consumi-los com uma chave de read-only fornecida sob NDA.

O pacote inclui: dumps reais dos endpoints acima, lista das execuções de workflows críticos dos últimos 90 dias, lista de PRs mergeados nos últimos 90 dias, e o event_id do audit_log para esta resposta.


5. Conclusão

Os 3 "malefícios" alegados são endereçáveis em código já existente ou em PR aberto — não em marketing. O rótulo "prototype" é exato para Free/Personal e inexato para Enterprise/Ultra, que têm SLO, SOC2 em curso, on-prem GA, motor 3D ray-tracing e gate público de qualidade de modelo.

Recomendação ao auditor: re-avaliar com o tier-mix real do cliente (não todos os tiers compartilham o mesmo nível de maturidade) e usar os endpoints de §4 como fonte de verdade reproduzível.