# Validação do módulo 18 — revisão de configs, Docker, dependências e contrato MariaDB/MySQL

## Escopo validado nesta rodada

- alinhamento do `docker-compose.yml` ao contrato oficial **MariaDB/MySQL** do núcleo central;
- revisão do `deploy/docker/php/Dockerfile` para materializar as extensões e binários operacionais do bundle;
- bootstrap do vendor Laravel do `platform` antes da publicação HTTP do portal em `/nvr`;
- coerência entre `platform`, `portal` e `gateway` nas dependências PHP/Composer e no contrato de banco;
- preservação do `gateway` com SQLite local apenas para metadados operacionais.

## Resultados executados

- `php scripts/check-package-hygiene.php` → **ok**
- `php scripts/check-mysql-mariadb-contract.php` → **ok**
- `cd portal && php tests/run.php` → **127 passou(ram), 0 falhou(ram)**
- `cd gateway && php tests/run.php` → **40 passou(ram), 0 falhou(ram)**
- `cd platform && php scripts/check-laravel-native-runtime.php` → **ok**
- `cd platform && php scripts/check-console-migrations-seeders.php` → **ok**
- `cd platform && php scripts/check-scope-cleanup.php` → **ok**
- `bash scripts/test.sh` → **ok**

## Fechamentos técnicos confirmados

- o compose oficial usa `DB_CONNECTION=mysql`, serviço `mariadb`, porta `3306` e não mantém baseline divergente fora da família MySQL;
- a imagem PHP compartilhada passa a materializar `pdo_mysql`, `pdo_sqlite`, `sqlite3`, `redis`, `mbstring`, `pcntl`, `opcache`, cliente `mysql` e `composer`;
- o serviço `php` do compose sobe pelo wrapper `scripts/run-shared-php.sh`, que materializa o vendor Laravel do `platform` antes de expor o portal real;
- `platform/scripts/boot-http.sh`, `boot-queue.sh`, `boot-scheduler.sh`, `migrate.sh` e `install.sh` usam o mesmo bootstrap de dependências do runtime Laravel;
- `platform/composer.json` explicita `ext-pdo_mysql`, `ext-mbstring`, `ext-pcntl` e `ext-redis`;
- `gateway/composer.json` explicita `ext-pdo_sqlite` e `ext-sqlite3` para o contrato do metadado local.

## Limitação objetiva deste ambiente

- o contêiner desta execução não fornece `docker`, então não foi possível rodar `docker compose up` aqui;
- a checagem executada nesta rodada foi feita por validação estática, testes automatizados do bundle e scripts operacionais do pacote.
