# Runbook Do FINAL_EVIDENCE

Use este runbook somente para o ZIP final de producao. Ele mantem logs brutos
fora do artefato instalavel e coloca apenas evidencias sanitizadas em
`FINAL_EVIDENCE/`.

## 1. Coletar Evidencias

Comando de exemplo:

```bash
bash scripts/collect-final-evidence.sh \
  --output ../nvr-final-evidence-$(date -u +%Y%m%dT%H%M%SZ) \
  --run-tests \
  --run-docker \
  --systemctl-unit nvr-platform-queue.service \
  --systemctl-unit nvr-platform-scheduler.service \
  --systemctl-unit nvr-gateway.service \
  --endpoint http://127.0.0.1/nvr/healthz \
  --endpoint http://127.0.0.1/nvr/gateway/healthz \
  --endpoint http://127.0.0.1/nvr/_bridge.php \
  --endpoint http://127.0.0.1/.env \
  --vm-log /path/to/vm-clean-install.log \
  --iso-log /path/to/iso-autoinstall.log \
  --reboot-log /path/to/post-reboot.log \
  --require-complete
```

O script grava:

- `raw/`: saida bruta local dos comandos; nunca empacote este diretorio
- `FINAL_EVIDENCE/`: arquivos sanitizados prontos para `FINAL_EVIDENCE_DIR`

## 2. Empacotar Em Modo Final

```bash
FINAL_PACKAGE_MODE=1 \
FINAL_EVIDENCE_DIR=/path/to/collection/FINAL_EVIDENCE \
bash scripts/package.sh /path/to/delivery/nvr_monorepo_complete_final.zip
```

O modo final falha se `FINAL_EVIDENCE_DIR` estiver ausente, vazio, contiver
tipos de arquivo inseguros ou padroes de segredo sem sanitizacao.

## 3. Verificar

```bash
NVR_FINAL_PACKAGE=1 bash scripts/verify-final-package.sh /path/to/delivery/nvr_monorepo_complete_final.zip
NVR_FINAL_PACKAGE=1 bash scripts/verify-final-package-real-stack.sh /path/to/delivery/nvr_monorepo_complete_final.zip
```

O hash do arquivo auxiliar deve bater com o ZIP exato em teste. O verificador tambem
confere se `FINAL_EVIDENCE/` bate com o hash da arvore registrado em
`<artifact>.evidence.json`.

## 4. Limpar Pasta De Entrega

Prepare uma pasta de entrega dedicada:

```bash
bash scripts/prepare-clean-delivery-dir.sh prepare /path/to/delivery
```

Apos empacotar, valide que a pasta contem apenas o ZIP novo e os arquivos auxiliares:

```bash
bash scripts/prepare-clean-delivery-dir.sh assert /path/to/delivery /path/to/delivery/nvr_monorepo_complete_final.zip
```

O script de limpeza recusa a raiz do projeto e a pasta pai como alvo de entrega.
Ele remove ZIPs antigos somente dentro da pasta de entrega explicita.
