# Módulo 23 — Console, migrations e seeders executáveis no ZIP

## Escopo

Fechamento incremental da camada operacional do `platform` sem reabrir a arquitetura já aprovada em portal, bridge `/public/nvr`, catálogo/launch/entitlement, contrato central MySQL/MariaDB e gateway local.

## O que foi materializado

- `php artisan config:clear`
- `php artisan cache:clear`
- `php artisan migrate --pretend`
- `php artisan migrate:fresh --seed`
- `php scripts/seed-core.php`
- `php scripts/seed-dev.php` (com `NVR_DEVELOPMENT_SEEDS_ENABLED=1` quando desejado)
- `php artisan queue:work --once --queue=default`
- `php artisan schedule:run`

## Fechamentos aplicados

- runtime stage do console expandido para migrations, seeders, facades de banco e fila/scheduler;
- seed formal centralizado em `DatabaseSeeder` + `NvrGatewayLicensingScenarioSeeder`;
- cenários formais de licença materializados por seed para `ativo`, `grace_period` e `suspenso`;
- regra de negócio preservada no seed suspenso: operação local continua e remoto bloqueia;
- check objetivo `platform/scripts/check-console-migrations-seeders.php` passou a executar os comandos reais do console e validar o estado materializado.

## Evidência do seed formal

Contagens materializadas no bundle após `migrate:fresh --seed`:

- clientes: 3
- sites: 4
- usuários: 5
- papéis: 10
- gateways: 4
- ativações: 4
- heartbeats: 3
- licenças: 3
- eventos de licença: 5

Licenças seedadas:

[
  {
    "license_key": "NVR-ATLAS-ATIVO-0001",
    "status": "ativo",
    "remote_access_blocked_at": null,
    "local_runtime_allowed": false,
    "scenario": "ativo"
  },
  {
    "license_key": "NVR-BETA-GRACE-0001",
    "status": "grace_period",
    "remote_access_blocked_at": null,
    "local_runtime_allowed": false,
    "scenario": "grace_period"
  },
  {
    "license_key": "NVR-GAMMA-SUSP-0001",
    "status": "suspenso",
    "remote_access_blocked_at": "2026-04-17 22:27:24.751151",
    "local_runtime_allowed": true,
    "scenario": "suspenso_remoto_bloqueado"
  }
]

## Observação operacional

Nesta execução, a validação foi feita pelo runtime stage MySQL materializado no próprio bundle, executando as migrations e seeders PHP reais do pacote. Uma instância externa de MariaDB/MySQL não foi disponibilizada neste ambiente de auditoria.
