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.py — log_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
mainou 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¶
2.1 "Instabilidade dos links projetados"¶
Refutado. A acurácia do RF é gateada antes de qualquer predição entrar em contrato:
- Gate determinístico —
GET /coverage/model/info(linha 5644) eGET /health/audit-gate(PR #349) expõemmax_cv_rmse_db,effective_cv_rmse_db,effective_source,passed. Modelos que não passam o gate (default 8 dB CV-RMSE, configurável viaCOVERAGE_AUDIT_GATE_MAX_RMSE_DB) são refusados em produção — não há "stack de ML invisível" enganando o cliente. Dump real emevidence/dumps/coverage-model-info.json. - Motor 3D determinístico —
rf_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-rtpara Enterprise/Ultra. - Modelos ITU-R reconhecidos —
itu_p1812.py(Py1812 multi-knife-edge, conforme P.1812-6),rf_engines/itu_p1546_engine.py, Hata-Davidson, ITM/Longley-Rice. Auditável viaGET /coverage/engines(linha 114,list_registered_engines). - DEM 30 m default —
dem_sources.pylinha 434 (DEFAULT_DEM_CHAIN = "copernicus,alos,nasadem,srtm1,srtm3"). Não é "SRTM 90 m". - Close-the-loop drive-test — PR #338:
POST /coverage/observationsingere medidas de campo, dispara retrain, atualizaaudit_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'emstripe_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êmteam_idindexado e RLS Postgres ativo. PR #336 (POST /towers/private) confirma o padrão para ingestão de RAN privada do operador. - Audit log criptografado —
audit_log.pyusa 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 endpoint —
telecom_tower_power_api.pylinha 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 portest_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.pye 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/enginese/coverage/model/infoexigemX-API-Key. Eles ficam referenciados no payload de/platform/maturityemauthenticated_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.