# Registro do programa, assinatura e cópia externa

Preparação em 29/10/2026. Ainda não existem registro INPI, certificado qualificado ou destino externo fornecidos pelo titular. Nenhum pedido, certificado ou contratação foi feito em seu nome.

## Titular e responsáveis

Antes do protocolo, definir quem será o titular do programa e quem figurará como desenvolvedor nos arquivos. Como a sociedade e o CNPJ ainda estão sendo definidos, recomendamos resolver essa titularidade antes do depósito. Usar o CNPJ de um sócio registra direitos em nome daquela pessoa jurídica; a futura composição societária não deve ser presumida pelo sistema.

Preparar identificação dos titulares, autores efetivos, responsáveis técnico e legal, nome do programa, versão/data e documentos que sustentem a titularidade. O registro do software é distinto do registro da marca Tecnisol. Dados do titular e certificados não devem ser enviados por conversa ou versionados.

## INPI: procedimento concreto

1. Cadastrar o titular no e-INPI.
2. Obter o certificado qualificado compatível com o titular para assinar a Declaração de Veracidade.
3. Revisar a versão que será identificada no pedido. `python3 scripts/prepare_inpi.py` lacra a fonte de um commit limpo em `private/inpi/COMMIT/`, com ZIP determinístico, manifesto e resumo SHA-512. O arquivo precisa ser guardado sem alterações; sua preparação não constitui um registro.
4. Emitir a GRU do serviço **730** no canal oficial e confirmar os dados antes de pagar. A página atual informa **R$ 210**, sem desconto para esse serviço; materiais antigos ainda citam R$ 185.
5. Preencher o e-Software com os dados conferidos, número da GRU paga, resumo do arquivo e a Declaração de Veracidade assinada. Não imprimir ou recriar o PDF original para assiná-lo.
6. Acompanhar o pedido e guardar protocolo e certificado no diretório privado. Somente depois configurar o número efetivamente concedido.

Fontes: [serviço oficial, atualizado em 29/07/2026](https://www.gov.br/pt-br/servicos/solicitar-o-registro-de-programa-de-computador), [guia de preparação do INPI](https://www.gov.br/inpi/pt-br/assuntos/programas-de-computador), [explicações sobre hash e Declaração de Veracidade](https://www.gov.br/inpi/pt-br/assuntos/programas-de-computador/guia-completo-de-programa-de-computador).

O atestado técnico será preparado para assinatura somente quando os requisitos aplicáveis estiverem atendidos. Não emitir declaração de conformidade enquanto o comprovante do trabalhador e as demais pendências de operação permanecerem abertos. Conferir o [modelo oficial do MTE](https://www.gov.br/trabalho-e-emprego/pt-br/assuntos/inspecao-do-trabalho/fiscalizacao-do-trabalho/modelo-do-atestado-tecnico-e-termo-de-responsabilidade.pdf).

## Certificados e assinatura dos documentos

Escolher uma AC credenciada, confirmar documentos do titular e realizar a identificação exigida pela emissora. Para a integração preparada no servidor, um certificado A1 exportável, adequado à assinatura de documentos pelo titular correto, permite operação sem um token físico permanente. Não comprar um certificado antes de confirmar sua finalidade e a pessoa que ele identifica. Valores são definidos pelas emissoras. [Orientação do ITI, atualizada em 06/03/2026](https://www.gov.br/iti/pt-br/acesso-a-informacao/perguntas-frequentes/certificacao-digital).

Para o AFD, o signatário é o desenvolvedor; o AEJ também pode ser assinado pelo empregador conforme a redação vigente do art. 86, § 2º. A integração inicial implementa a assinatura pelo desenvolvedor. O atestado exige as assinaturas qualificadas das pessoas físicas responsáveis técnica e legalmente; o certificado da empresa não substitui essas assinaturas. Comprovantes eletrônicos usam PAdES e ficaram para a etapa posterior solicitada pelo usuário. AFD/AEJ usam CAdES destacado `.p7s`. Referência: [Portaria 671 compilada em 21/07/2026, arts. 86–89](https://www.gov.br/trabalho-e-emprego/pt-br/assuntos/legislacao/portarias-1/portarias-vigentes-3/WORDPortarian671de8denovembrode2021compilada21.07.2026.pdf).

O painel prepara uma solicitação imutável. O download final só aparece depois da assinatura. A chave privada permanece no host, em `private/qualified-signing/`; não entra no web ou na imagem. O processo separado verifica cadeia, validade, listas de revogação e a assinatura gerada. A cadeia de confiança precisa ser a oficial, conferida pelo responsável; um certificado de laboratório não comprova qualificação ICP-Brasil.

Arquivo privado de configuração, ainda a preencher:

```dotenv
# private/fiscal-signing.env — permissão 0600
CERTIFICATE=/root/tecniponto/private/qualified-signing/certificado.pem
PRIVATE_KEY=/root/tecniponto/private/qualified-signing/chave.pem
PASSWORD_FILE=/root/tecniponto/private/qualified-signing/senha.txt
INTERMEDIATE_CHAIN=/root/tecniponto/private/qualified-signing/intermediarias.pem
ICP_BRASIL_ROOTS=/root/tecniponto/private/qualified-signing/raizes-icp-brasil.pem
CRL_BUNDLE=/root/tecniponto/private/qualified-signing/revogacao-atual.pem
SIGNER_TAX_ID=SUBSTITUIR_PELO_TITULAR_REAL
ICP_BRASIL_REVIEWED=0
```

Após a conferência do titular, certificados, cadeia e revogação, o responsável configura a aprovação local. O modo de ensaio não assina:

```bash
python3 scripts/sign_fiscal_exports.py --company UUID_DA_EMPRESA
python3 scripts/sign_fiscal_exports.py --company UUID_DA_EMPRESA --apply
```

Dados públicos do desenvolvedor ficam nas variáveis privadas `REP_DEVELOPER_TAX_ID`, `REP_DEVELOPER_NAME`, `REP_DEVELOPER_EMAIL` e `REP_INPI_NUMBER`. O número INPI pode ser informado como aparece no certificado. O serializador retém os números e completa o campo AFD com espaços à direita, conforme a [questão 49 da orientação do MTE](https://www.gov.br/trabalho-e-emprego/pt-br/assuntos/inspecao-do-trabalho/fiscalizacao-do-trabalho/Perguntas%20e%20Respostas%20REP). Nenhum registro fictício deve ser usado na instalação comercial.

## Backup fora desta VPS

Recomendação para a fase inicial: **Cloudflare R2 Standard**, em conta controlada pela empresa, bucket privado e autenticação em dois fatores. A tabela consultada oferece 10 GB-mês, um milhão de operações de escrita da classe A e dez milhões de leitura da classe B por mês; excedentes e outros serviços podem gerar cobrança. O armazenamento Standard excedente custa US$ 0,015/GB-mês. [Preço oficial, atualizado em 26/10/2026](https://developers.cloudflare.com/r2/pricing/).

Passos necessários: criar/identificar a conta, habilitar R2, criar o bucket privado, fornecer credenciais restritas a esse bucket por arquivo privado e guardar a senha do Restic também fora desta VPS. Não publicar o bucket ou usar o mesmo token no web. A política de retenção/imutabilidade deve ser ensaiada com o Restic, preservando a exclusão de locks e separando a manutenção; não ativar regras de retenção às cegas.

```dotenv
# private/backup.env — permissão 0600, valores reais fora do Git
RESTIC_REPOSITORY=s3:https://SUBSTITUIR_ACCOUNT_ID.r2.cloudflarestorage.com/SUBSTITUIR_BUCKET/tecniponto
RESTIC_PASSWORD=SUBSTITUIR_POR_SENHA_FORTE_COM_COPIA_FORA_DA_VPS
AWS_ACCESS_KEY_ID=SUBSTITUIR
AWS_SECRET_ACCESS_KEY=SUBSTITUIR
AWS_DEFAULT_REGION=auto
```

Depois da configuração: inicializar o repositório, executar um envio, conferir `external_success=true` e restaurar a partir dele em ambiente isolado. Enquanto isso, a alternativa imediata é o pacote manual criptografado, com chave separada e download exclusivo na gestão autenticada. O titular precisa efetivamente baixar e guardar os arquivos fora desta máquina. Ver [operação de backups](OPERACAO_BACKUPS.md).

Uma cópia local, criptografia testada ou restauração na própria VPS não comprovam envio externo. Backup também não equivale à alta disponibilidade da ARP. Para isso, ainda é necessário contratar e ensaiar uma arquitetura com infraestrutura independente — por exemplo, PostgreSQL com redundância em zonas distintas e aplicação com failover. Não há segunda infraestrutura contratada nesta entrega.

## Hora Legal Brasileira

As consultas realizadas em 29/10 aos servidores ON/NTP.br expiraram. O UFW permite saída; isso não identifica, sozinho, em qual trecho ocorre o bloqueio. Conferir com a hospedagem o tráfego de ida e retorno UDP/123. A medição não altera o relógio e não usa cabeçalhos de sites como substituto da referência HLB.

Texto que o titular pode encaminhar à hospedagem: “Precisamos consultar referências públicas de Hora Legal Brasileira por UDP/123. O serviço de sincronização está ativo, mas as consultas ao NTP.br e aos IPs 200.20.186.75 e 200.20.186.94 expiram. O firewall local permite saída. Favor verificar bloqueios de NTP na infraestrutura e informar a configuração recomendada, sem ajuste manual abrupto do relógio.”

Fontes: [serviço da Hora Legal do ON](https://www.gov.br/observatorio/pt-br/assuntos/areas-de-atuacao/tempo-e-frequencia/conheca-a-disho), [rastreabilidade do NTP.br ao ON](https://ntp.br/faq/). O envio da mensagem não foi realizado pelo agente.
