# BR-SAFE-A · Especificação 1.0.0

Conferido 2026-10-19. Proposta; ensaios NOT_EXECUTED. Nenhuma contratação, certificação ou capacidade operacional é confirmada.

## Requisitos

## requirements

- REQ-01 | Reprodutibilidade | Mesmo manifesto, entradas e semente produzem decisões equivalentes e rastreáveis. | Hashes de build, parâmetros, mundo e logs; tolerâncias aprovadas antes do ensaio.

- REQ-02 | Fronteira de segurança | Nenhuma saída da IA alcança diretamente motor/servo ou armação. | Inspeção das permissões + tentativa controlada recusada + registro de decisão.

- REQ-03 | Estado e falhas | Comando rejeitado, telemetria antiga, perda de enlace e reinício têm resultado explícito. | Expectativa por build; nenhum estado inesperado ou lacuna de registro.

- REQ-04 | Aceite auditável | Cada execução possui ambiente, versão, observação e evidência íntegra. | Sem arquivo/hash/resultado, não há aprovação. Falha de captura invalida o ensaio.

## layers

- Drone Detection | Não aplicável ao mínimo A | Nenhum sensor de detecção selecionado | A não procura nem neutraliza aeronaves; C é outro cenário.

- Mission Computer | Objeto do ensaio | D137SM candidato; AAEON BOXER-8653AI-JP511N-A1-1010 (bancada) | BSP, recursos, supervisor e fronteira de comando a confirmar.

- C2 | Interface local no ensaio | MAVLink; identidades e mensagens definidas por build | Sem conexão a ATM/UTM ou C2 operacional externo.

- RF | Não usado na fase offline/SITL | Cabo/loopback isolado proposto | Rádio, potência, alcance e homologação desconhecidos; necessários antes de teste sem fio.

- Edge AI | Carga isolada e opcional | Replay determinístico primeiro; modelo real não escolhido | IA produz observações/propostas; não recebe acesso direto a atuadores.

## interfaces

- IF-01 | FC → observador | MAVLink 2 / dialeto e hash XML congelados; UDP em SITL ou UART em bancada | Proposta: HEARTBEAT 1 Hz; telemetria de estado 10 Hz; confirmar suporte e taxa real | sysid/compid + time_boot_ms/time_usec conforme mensagem + monotonic_ns de recepção; não misturar epoch/boot

- IF-02 | Observador → executor de teste | JSONL UTF-8 schema br-safe-event/1.0; um objeto por linha | Por evento; sequência crescente; registrar perdas | run_id, case_id, seq, monotonic_ns, utc, clock_domain, source, event, payload

- IF-03 | IA → supervisor de missão | JSON proposto: observation/proposal, confidence opcional, model_sha256 | Proposta: máximo 2 propostas/s; limite configurável, não benchmark | proposal_id e created_monotonic_ns; expiração proposta 500 ms

- IF-04 | Supervisor → FC | Allowlist específica por build; command_id, confirmação e auditoria | Comando somente se transição preautorizada; nenhuma armação automática | Correlacionar envio/ACK/estado observado; ACK isolado não prova transição

- IF-05 | Administração → mission computer | Acesso local autenticado; artefatos assinados e conta separada | Atualização somente desarmado; política acordada | Hash de imagem/modelo, aprovador, versão anterior e resultado de rollback

## constraints

- Hardware / energia | D137SM: entrada declarada 12–50 V; não ligar ao pino de 5 V do FC. SparkNavi POWER1/2: 5,3 V declarados. | R2+R3 | Tolerâncias, reguladores, transientes, fusível, aterramento, potência máxima e cabos: U. Sem esquema aprovado, não energizar.

- Peso / montagem / térmica | D137SM: 80 g e 90 × 56 × 30,7 mm declarados; faixa de placa −10 a 60 °C. | R3 | Confirmar SoM/cooler incluídos; medir massa, temperatura e fixação. Limites da aeronave: U.

- Firmware / OS / software | PX4 e ArduPilot são trilhas separadas; manifesto exige commit, hash do binário e parâmetros. | R2 | Nenhuma versão instalada conhecida. Ubuntu/BSP/kernel, compilador e dependências: U. SparkNavi suporta ArduPilot declarado, não presumir PX4.

- Modelo / dados / compute | Replay sem modelo é a primeira carga proposta; modelo real requer versão e licença. | R3 | Memória, CPU/NPU, dataset, precisão, quantização e latência real: U. TOPS não vira desempenho de missão.

- Latência / relógio | Alvos de bancada I: evento de missão ≤500 ms; diferença de relógios medida ≤20 ms; registrar p50/p95/p99 e máximo. | R1+R4 | Valores são proposta de aceite, não capacidade medida nem garantia de controle de voo; revisar antes da execução.

- Offline / perda de enlace | Sem serviço de nuvem obrigatório no mínimo; bloquear e observar tráfego de saída. | R2+R3 | Ação de failsafe do FC depende de aeronave/parâmetros aprovados; não impor RTL universal. Reinício não rearma.

- Identidade / permissões | Usuário IA sem dispositivo de atuador e sem credencial de administração; supervisor separado; allowlist. | R3 | Matriz de privilégios, chaves MAVLink, conta de manutenção e rotação: U. Assinatura de mensagem não prova confidencialidade.

- Atualização / rollback / log | Congelar imagem; verificar assinatura/hash; registrar tentativa, resultado e retorno à versão anterior. | R3+R4 | Bootloader, secure boot e rollback do hardware não comprovados. Sem logs íntegros, marcar INVALID.

- HBOM / SBOM / licenças | HBOM por peça/fornecedor/origem; SBOM com hashes; inventário de modelo, dados, código e obrigações de redistribuição. | R1+R3 | Documentos e direitos de uso/modificação/redistribuição: U. Não redistribuir código/dados de pesquisa sem licença verificada.

- Equipe / equipamento / custos | Quatro papéis propostos, nenhum profissional, PC, placa, instrumento, bancada ou local reservado. | R1 | Capacidade, orçamento, aquisição, seguro e agenda: U. Sem prazo ou custo comercial estimado com base suficiente.

- AAEON em bancada [P2/I] | SKU BOXER-8653AI-JP511N-A1-1010; 12–24 VDC; 2,5 kg; 180 × 136 × 75 mm; faixa térmica com fluxo 0,5 m/s. Alimentação e refrigeração dimensionadas para carga medida, não TOPS. | R3 + R4 | Uso terrestre proposto. Consumo total, pico, BSP/JetPack exato, revisão e adaptação serial: U. Não ligar RS-232 diretamente a UART TTL.

## roles

- R1 | Requisitos e segurança | Congelar missão, envelope permitido, condições de interrupção e autorizações; responsável a designar.

- R2 | Integração do piloto automático | Fixar build/parâmetros, interfaces e adaptadores de teste PX4/ArduPilot; responsável a designar.

- R3 | Computação de missão e segurança | Isolar IA, usuários, recursos, atualização e captura de dados; responsável a designar.

- R4 | Ensaio e evidências | Revisão independente dos casos, integridade dos arquivos, relatório e aceite; responsável a designar.

## phases

- G0 | Mesa / offline | Requisito, proprietário dos dados, manifesto e expectativas revisados; sem conexão com aeronave. | Validar esquema, replay, recusa de dados inválidos e completude das evidências. | Casos aplicáveis observados e hashes conferidos por R4; pendências registradas. | Especificação entregue; ensaio do piloto não executado. Verificador tem self-test separado.

- G1 | SITL | G0 aceito; PC/OS/container, build PX4 OU ArduPilot, mundo e parâmetros congelados; licença e recursos disponíveis. | Executar casos de missão/telemetria/recuperação com falhas controladas e repetir baseline. | Logs do simulador + observador e configuração íntegros; nenhuma divergência inexplicada; revisão R1/R4. | Não executado: ambiente de simulador e build não provisionados.

- G2 | HIL / bancada sem hélices | G1 aceito; hardware exato, esquema de energia, compatibilidade HIL, instrumentação e plano de parada aprovados. | Comparar observação do FC real, carga do companion e falhas de ligação sob condições documentadas. | Medições dentro dos limites aprovados; sem armação inesperada, superaquecimento ou perda de evidência. | Não executado: placas, energia, firmware e instrumentos indisponíveis.

- G3 | Campo legal e controlado | G2 aceito; operador/piloto, aeronave, local, avaliação de risco e permissões aplicáveis documentados. | Plano de missão limitado aprovado pelo operador; observação/logs e critérios de parada; sem teste ofensivo. | Relatório identifica voo, configuração, condições, incidentes, limites e assinatura de aceite. | Não executado: local, pessoal, aeronave e permissões não confirmados.

## sovereignty

- Quem pode ler? | U: contas do FC/GCS, IA, manutenção e reviewer ainda não inventariadas. | Matriz de acesso + teste de conta sem privilégio.

- Onde fica? | I: logs da bancada em armazenamento local escolhido pelo comprador; local real U. | Configuração de disco, cópias, criptografia, retenção e evidência de hospedagem.

- Para quem transmite? | U: todos os destinos de runtime/update/licença devem ser observados. | Inventário DNS/IP/porta + captura com e sem internet; não confundir Site RFQ com telemetria de voo.

- Quem atualiza? | U: fornecedor, administrador, bootloader, imagem e modelo. | Chaves, assinatura, política, log e teste de rollback.

- Quem controla? | I: FC retém controle determinístico; IA isolada; implementação ainda não demonstrada. | Revisão de permissões e caso T02, com decisões/estado do FC.

- Pode ficar offline? | I: meta do mínimo A; não comprovada para licença/BSP/modelo. | T05/T06 + bloqueio de egress e registro de dependências.

- Pós-processamento onde / por quem? | U: estação, software, operador e direitos sobre dados. | Contrato de tratamento, local de armazenamento, licença e trilha de exportação.

## fault_classes

- CONFIG | Versão, hash, BOM ou licença ausente | Bloquear passagem de fase; registrar campo e responsável.

- AUTHORITY | Proposta/comando fora de escopo ou permissão | Recusar, registrar e confirmar zero comando ao atuador.

- STATE | Transição inválida ou retomada após reinício | Manter estado previamente aprovado; revisão humana.

- TIMING_LINK | Dado antigo, relógio fora do limite ou perda de enlace | Aplicar política aprovada por configuração; não presumir ação universal.

- RESOURCE | CPU/memória/temperatura/alimentação fora do limite | Encerrar carga de ensaio conforme plano; preservar controle e logs.

- EVIDENCE | Log ausente, hash divergente ou observação ambígua | Resultado BLOCKED/FAIL; nunca converter ausência em PASS.

## T01 — Manifesto incompleto

**stage:** G0

**requirement:** REQ-01

**method:** Remover um hash ou revisão obrigatória da cópia de teste. Executar o validador antes de abrir o simulador.

**expected:** Recusar execução qualificada; listar campos pendentes.

**pass_condition:** Nenhuma etapa G1/G2/G3 marcada PASS com configuração incompleta.

**status:** NOT_EXECUTED

**owner:** R4 + responsável da interface

Evidência: manifest.json, validation.json

## T02 — Acesso da IA

**stage:** G0/G1/G2

**requirement:** REQ-02

**method:** Com conta IA sem privilégios, solicitar ação fora da allowlist pelo supervisor. Em G2 usar saídas desenergizadas.

**expected:** Recusa registrada; nenhum comando de atuador encaminhado.

**pass_condition:** zero actuator-write pela IA e evento proposal-denied correlacionado.

**status:** NOT_EXECUTED

**owner:** R4 + responsável da interface

Evidência: permissions.json, decisions.jsonl, observer.jsonl

## T03 — Transição incompatível

**stage:** G1/G2

**requirement:** REQ-03

**method:** Em estado DISARMED solicitar proposta de missão incompatível com a tabela aprovada; comparar decisão e estado observado.

**expected:** Manter estado permitido; reason_code explícito.

**pass_condition:** Nenhuma transição não prevista; ACK e estado avaliados separadamente.

**status:** NOT_EXECUTED

**owner:** R4 + responsável da interface

Evidência: state-table.json, events.jsonl, fc-log

## T04 — Telemetria antiga

**stage:** G0/G1/G2

**requirement:** REQ-03

**method:** Reproduzir pacote com idade acima de 500 ms (limiar I ajustável) e ordenar eventos por relógio monotônico.

**expected:** Suspender novas propostas; emitir telemetry-stale; FC segue sua política própria.

**pass_condition:** Evento de recusa com idade medida; nenhuma proposta antiga aceita.

**status:** NOT_EXECUTED

**owner:** R4 + responsável da interface

Evidência: replay.jsonl, events.jsonl

## T05 — Processo IA indisponível

**stage:** G1/G2

**requirement:** REQ-02

**method:** Parar apenas processo IA sob supervisor; observar heartbeat independente do FC e retorno após reinício.

**expected:** IA degradada; nenhuma armação ou escrita direta no FC.

**pass_condition:** FC observável e sem reset atribuível ao processo IA; se medição faltar, INVALID.

**status:** NOT_EXECUTED

**owner:** R4 + responsável da interface

Evidência: process-log, resources.csv, fc-log

## T06 — Perda de enlace local

**stage:** G1/G2

**requirement:** REQ-03

**method:** Interromper somente ligação de teste em ambiente isolado; registrar duração e configuração failsafe antes.

**expected:** Detectar link-lost e aplicar comportamento específico aprovado, sem inferir RTL genérico.

**pass_condition:** Estado observado coincide com expectativa assinada para esta configuração.

**status:** NOT_EXECUTED

**owner:** R4 + responsável da interface

Evidência: link-events.jsonl, parameters.json, fc-log

## T07 — Reinício / recuperação

**stage:** G0/G1/G2

**requirement:** REQ-03

**method:** Reiniciar companion e repetir entrada com mesmo proposal_id.

**expected:** Recuperação explícita; sem replay de ação consumida ou rearme automático.

**pass_condition:** Zero automatic-arm; uma decisão final por proposal_id.

**status:** NOT_EXECUTED

**owner:** R4 + responsável da interface

Evidência: boot-log, events.jsonl, proposal-ledger.json

## T08 — Sincronização

**stage:** G0/G1/G2

**requirement:** REQ-04

**method:** Introduzir offset conhecido na cópia de replay; medir drift, RTT e domínio; testar acima de 20 ms propostos.

**expected:** Evidência sinalizada inválida quando excede tolerância; nunca esconder correção.

**pass_condition:** Offset/RTT e método registrados; amostra fora do limite rejeitada.

**status:** NOT_EXECUTED

**owner:** R4 + responsável da interface

Evidência: timesync.csv, events.jsonl

## T09 — Integridade do registro

**stage:** G0/G1/G2

**requirement:** REQ-04

**method:** Apagar uma linha ou alterar um byte de uma cópia de evidência após calcular SHA-256.

**expected:** Verificador rejeita hash ou sequência incompleta.

**pass_condition:** Alteração detectada e execução marcada INVALID, não PASS.

**status:** NOT_EXECUTED

**owner:** R4 + responsável da interface

Evidência: SHA256SUMS, verification.json

## T10 — Atualização e rollback

**stage:** G2

**requirement:** REQ-02

**method:** Somente desarmado: validar pacote assinado conhecido e pacote de assinatura inválida; testar retorno à imagem anterior sob procedimento aprovado.

**expected:** Pacote inválido recusado; identidade e estado da imagem anterior verificáveis.

**pass_condition:** Sem boot de imagem não autorizada; rollback observado ou bloqueio reportado.

**status:** NOT_EXECUTED

**owner:** R4 + responsável da interface

Evidência: update-audit.json, image-hashes.json, boot-log

## T11 — Carga / duração

**stage:** G1/G2

**requirement:** REQ-01

**method:** Rodar baseline e carga IA aprovada por 30 min (I), amostragem de recursos a 1 Hz; identificar PC/SoM, dataset, ambiente e carga.

**expected:** Sem OOM, reinício ou perda de evidência; relatar distribuição de latência/temperatura.

**pass_condition:** Dentro dos limites assinados para memória/temperatura/latência; sem limiar definido, BLOCKED.

**status:** NOT_EXECUTED

**owner:** R4 + responsável da interface

Evidência: resources.csv, latency.csv, manifest.json

## T12 — Missão de campo

**stage:** G3

**requirement:** REQ-04

**method:** Executar somente plano aceito, com operador habilitado e autorizações aplicáveis; interromper ao cruzar condição de parada aprovada.

**expected:** Relatório do voo separado do SITL/HIL; rastrear incidentes e configuração.

**pass_condition:** Aceite assinado do operador/reviewer, sem extrapolar para outras missões.

**status:** NOT_EXECUTED

**owner:** R4 + responsável da interface

Evidência: flight-log, permits-index.json, operator-signoff.json

## Execução e revisão

Copie os templates para manifest.json/results.json. Preencha a configuração e aprove expectativas antes de executar. Adaptadores SITL/HIL ainda precisam de implementação e validação pela equipe. Não há firmware ou simulador embutido.

```sh
python3 evaluate_run.py --manifest manifest.json --results results.json --root evidence/
```

O verificador verifica integridade, não decide aceite de voo. PASS do verificador não é PASS do piloto. Datas, observações, hashes e conteúdo devem ser confrontados por R4.

## Fontes

- P01 [P1] PX4 v1.17 · Simulation — https://docs.px4.io/v1.17/en/simulation/; conferido 2026-10-19; limite: Não identifica a revisão de firmware de nenhuma aeronave candidata; main e v1.17 não são um hash de build.

- P02 [P1] ArduPilot · SITL — https://ardupilot.org/dev/docs/sitl-simulator-software-in-the-loop.html; conferido 2026-10-19; limite: O resultado do simulador não qualifica SparkNavi ou uma aeronave brasileira.

- P03 [P1] MAVLink · Heartbeat — https://mavlink.io/en/services/heartbeat.html; conferido 2026-10-19; limite: Heartbeat não prova saúde de todos os subsistemas; timeout depende da configuração.

- P04 [P1] MAVLink · TIMESYNC — https://mavlink.io/en/services/timesync.html; conferido 2026-10-19; limite: Não garante precisão do relógio sem medição no enlace e nas implementações escolhidas.

- P05 [P1] MAVLink · Message Signing — https://mavlink.io/en/guide/message_signing.html; conferido 2026-10-19; limite: Não comprova proteção de toda a rede, gestão de chaves ou isolamento da IA.

- V01 [P2] SparkNavi Blue · especificação — https://www.sparknavi.com/flight-controller/sparknavi-blue/; conferido 2026-10-19; limite: Revisão da placa, tolerância elétrica, consumo, peso da configuração e firmware instalado não foram recebidos. Suporte PX4 nesta placa não foi demonstrado.

- V02 [P2] AVerMedia D137SM · produto — https://professional.avermedia.com/en/product-detail/D137SM; conferido 2026-10-19; limite: Escopo do peso e carga total exigem confirmação. A seção de downloads mistura referências JetPack; não é prova de BSP compatível com Modalix. Não há benchmark de missão validado aqui.

- V03 [P2] UAVI · Engenharia & Tecnologia — https://uavi.global/engenharia-tecnologia/; conferido 2026-10-19; limite: Nenhum modelo, acesso ao firmware, API, preço, prazo ou aceite deste piloto está confirmado.

- V04 [P2] SkyDrones · Pelicano AGRO — https://www.skydrones.com.br/dronepelicanoagro; conferido 2026-10-19; limite: Não prova BOM integral, firmware aberto, compatibilidade com SparkNavi/D137SM ou acordo deste piloto. A declaração não é auditoria independente.

- R01 [P1] SENAI CIMATEC · Aeronáutica e Drones Autônomos — https://universidadesenaicimatec.edu.br/senai-cimatec-oferece-24-bolsas-de-pdi-nas-areas-de-aeronautica-e-drones-autonomos/; conferido 2026-10-19; limite: Não comprova disponibilidade atual de laboratório, serviço de teste, equipe alocada ou contratação. Bolsas de 2024 não são chamada aberta em 2026.

- G01 [P1] ANATEL · homologação — https://www.gov.br/pt-br/servicos/homologar-produtos-de-telecomunicacoes-anatel; conferido 2026-10-19; limite: Nenhum rádio, controle ou configuração desta proposta foi conferido por número de homologação.

- G02 [U] ANAC · Drones — https://www.gov.br/anac/pt-br/assuntos/drones; conferido 2026-10-19; limite: Regras atuais e aplicabilidade ao modelo/operação ficam pendentes. Não declarar autorização.

- G03 [P1] DECEA · O que é SARPAS — https://ajuda.decea.mil.br/base-de-conhecimento/o-que-e-sarpas-2/; conferido 2026-10-19; limite: Não comprova autorização de um voo, disponibilidade de API ou integração com este piloto.

- G04 [P1] DIU · encaminhamento Blue UAS — https://www.diu.mil/blue-uas-cleared-list; conferido 2026-10-19; limite: Nenhuma configuração candidata foi conferida na lista atual. Nome Blue de produto não é aprovação.

- G05 [U] AUVSI · Green UAS — https://www.auvsi.org/green-uas/; conferido 2026-10-19; limite: Certificação e escopo dos candidatos desconhecidos; não publicar selo ou equivalência.

- G06 [U] BR-UTM · DECEA — https://servicos.decea.mil.br/br-utm/?lang=en; conferido 2026-10-19; limite: Sem documentação de API, credencial, ambiente de teste ou acordo de acesso verificados.

- W01 [S] Semana 1: 04–11/10/2026; semana 2: 11–18/10/2026 — histórico da conversa; conferido 2026-10-19; limite: Texto integral das duas edições não foi recuperado. Não constitui evidência técnica ou aceite comercial.

- V05 [P2] AAEON BOXER-8653AI — página de produto — https://www.aaeon.ai/en/product/detail/boxer-8653ai; conferido 2026-10-19; limite: Não prova instalação em aeronave, autonomia, consumo total ou compatibilidade elétrica com UART TTL. Imagem BSP e revisão exatas a congelar.

- V06 [P2] AAEON catálogo: ordering information, p. 71 — https://catalog.aaeon.com.tw/Systems/files/basic-html/page71.html; conferido 2026-10-19; limite: Disponibilidade, preço, substituições e versão entregue não confirmados. Escolha da peça para bancada é julgamento de engenharia [I].