# Prova integrada do lote #3462 — 26/10/2026

**CONFIRMADO:** oito contribuições incorporadas integralmente por merge, sem conflito
textual, preservando seus commits. Os fragmentos que faltavam em #3453 e #3445 foram
acrescentados separadamente. Nenhum reparo de código de produção foi necessário na
integração ou na prova.

Árvore compilada e exercitada: `1935a076f455127cd216b474d7124946b2f83494`, contendo
a main `db0021025e8028c801bb503877f0086426bdaa32`. Uma build de produção serviu todos
os casos. Depois da prova, a integração recebeu a main `20fa0a6d1` (#3393,
healthcheck, e #3409, dependências e nomes acessíveis já provados separadamente)
e o reparo de preparo do CI `5399f824c`, por merge. Não se repetiu a build nem
se afirmou que as oito jornadas foram reexecutadas na árvore posterior.
A correção de orçamento do E2E `b6e97ab6b` foi incorporada por cherry-pick como
`178544e1a`; mudou somente o workflow e sua guarda de unidade. As provas de produto
acima continuam atribuídas à árvore compilada, sem alegar nova execução.

## Ambiente e comandos medidos

- Banco descartável PostgreSQL 15 do Supabase local, projeto `codexlote1-01a178b3`:
  aplicação 3462, API 55329 e banco 55330, todos na mesma bancada isolada.
- `scripts/local-supabase.sh start` e `apply-baseline`: instalação fresca e
  reaplicação passaram com `ON_ERROR_STOP=1`.
- `bootstrap-owner.ts`, `seed-e2e-credentials.ts` e `seed-e2e-system-update.ts`:
  contas sintéticas, admin do tenant com MFA, viewer, agent, dono da instalação com
  MFA e gerente de outra organização. Nenhum ambiente de produção foi copiado.
- `pnpm e2e:build`: exit 0. O controle do bundle confirmou a URL local 55329.
- Vitest dirigido: **155/155 casos, 16 arquivos, exit 0**; `release:conferir` e
  `git diff --check`: exit 0.
- `verify` e suas sete partes passaram no CI de `c25ca17c1`. A única diferença
  para a árvore compilada acima é `lib/ai/README.md`. O `build-and-size` também
  passou no head compilado.
- Após a união: **31/31 testes em seis arquivos**, incluindo preparo do Supabase,
  nomes acessíveis, healthcheck, cobertura E2E e guardas de documentação/evidência.
  `release:conferir` e `git diff --check` também passaram.

## Resultados observados

| PR e crédito | Prova no navegador, HTTP e Postgres reais | Resultado |
|---|---|---|
| #3450 — @samirhvbr | Exportação CSV pela tela, exclusão apenas das duas fixtures e reimportação pela tela. `2000-02-29` e ausência de nascimento persistem; nome, apelido, e-mail e etiquetas conferidos após reload. | PASS |
| #3442 — @claudioghirellifh; diagnóstico @hudson-souza-mkt | Enter nos formulários de contato, criação e dossiê, em BRL e USD; grava 1234,56 unidades. Zero, limpeza, recusa de obrigatório vazio e controle por clique. Reabertura confirma o valor persistido. | PASS |
| #3453 — @webtecnica | Criação na etapa que exige arquivo passa antes do upload. Arquivo real no Storage privado; viewer lê lista e mídia e abre a prévia pela tela. Escrita do viewer dá 403; outra organização dá 404. Movimento de card existente sem anexo continua 422 `required_fields_missing`. | PASS |
| #3439 — @webtecnica | Cookie e Bearer autorizado dão 307 com cache privado; sem escopo 403; inválido/expirado 401; outra organização e anonimizado 404. A imagem real do Inbox foi carregada pelo navegador, com largura natural de 64 px. | PASS |
| #3451 — @webtecnica | FAQ criada e editada pela tela, conteúdo novo após reload. Upload real de texto; `items` em documento recusado antes de alterar o nome; metadata, reindexação enfileirada e arquivo. Cinco portas conferidas na auditoria, com organização, ator e recurso da prova. | PASS |
| #3454 — @webtecnica | ACK real do canal PostgreSQL antes dos INSERTs. Histórico com `true` booleano/string não avisa. Controles sem marca e com `false` avisam no Inbox; linhas históricas persistem no banco. | PASS |
| #3457 — @webtecnica | Anonimização na aba LGPD. Webhook Meta com HMAC válido tenta trazer o telefone de volta: `contato:ignored`, nenhuma ficha recriada e busca vazia após resposta da API. Contato novo de controle sincroniza e existe no banco. | PASS |
| #3445 — @emersonalex2026-svg | Senha sintética gravada; cancela-se somente o SELECT real da leitura, com código 57014. Save pela tela com senha vazia recusa com mensagem genérica; ciphertext e remetente ficam intactos. Liberada a leitura, uma senha nova é salva normalmente. | PASS |

Os PASS foram obtidos nas rodadas dirigidas 3–6, sobre a mesma aplicação compilada.
As primeiras tentativas corrigiram importação/trace do roteiro temporário, seletores,
espera pelo ACK e momento das capturas. Não houve nova build nem alteração de guard,
RLS, HMAC ou código do produto para fazer a prova passar.

## Evidência e limites

As [dez capturas sintéticas inspecionadas](../../evidence/lote-3462-20261026/README.md)
estão versionadas. Traces, roteiro de bancada, relatórios JSON das rodadas 4–6 e
logs completos ficaram na bancada local da revisão. O diagnóstico do Realtime
registra ACK e cinco entregas reais sem payload ou token. Relatórios brutos do runner
não foram versionados porque incluem configuração do ambiente sintético.

Não se mediram envio SMTP, Meta externa, push do sistema operacional ou geração de
embeddings. A prova cobre preservação da configuração, webhook assinado local,
aviso dentro do app e aceite da reindexação; nenhum desses casos exigiu serviço pago.
O conjunto completo de invariantes e E2E continua sendo obrigação dos checks do CI.

## CI: preparo recuperado, seguido de corte por orçamento

A parte 4 do head compilado falhou **antes dos testes**, por recusa dos registros de
imagem. O reparo `5399f824c` liberou o fallback nativo do CLI pinado na última
tentativa. No [run 40361684172](https://github.com/melgarafael/DeskcommCRM/actions/runs/40361684172),
do head `8a063d8db`, **a stack subiu nas sete partes**: 1/3/4/5/6/7 passaram.
`verify`, `build-and-size`, `invariants` e `imagens-ok` passaram; `e2e` falhou porque
somente a parte 2 chegou ao corte de orçamento, com exit 124.

A parte 2 gastou **674 s no preparo + 1006 s na suíte**. Até o corte havia **99
casos verdes, seis pulados e dois pendentes**, sem caso vermelho. O rótulo 105 do
reporter inclui os seis pulados. Faltavam só os dois últimos casos de navegação;
o [main verde 40347496767](https://github.com/melgarafael/DeskcommCRM/actions/runs/40347496767)
os mediu em 28,2 s + 2,3 s, e a spec inteira em 329,1 s. A cadência de aproximadamente
30 s dos logins preserva a espera anti-replay do TOTP; não foi atribuída ao Redis.

O Supabase da parte 2 levou 390 s, dos quais cerca de 269 s antecederam a entrada
efetiva no fallback nativo, após três tentativas forçadas e suas esperas. A correção
`178544e1a` usa o **nativo primeiro** e move somente `navegacao.spec.ts` **da parte 2
para a 7**. Preserva as quatro tentativas, backoffs 20/60/120 s, falhas fechadas,
pipefail, pino do CLI, todas as specs, exclusões, seeds, TOTP, tetos e agregadores.

Prova leve sobre `b6e97ab6b`: o teste do nativo primeiro ficou vermelho antes da
correção e verde depois. **46/46 guardas em seis arquivos, com um worker**, passaram,
incluindo recuperação na quarta tentativa, recusa total fechada, falha fatal imediata,
cobertura, limites e agregador. ESLint dirigido, `bash -n` e `git diff --check` passaram.
`178544e1a` tem a mesma árvore Git de `b6e97ab6b`, permitindo reaproveitar essa prova;
o commit seguinte altera somente este registro. O artifact Playwright da parte 2 e
os cronômetros dos jobs foram preservados na bancada local da revisão.

**PENDENTE:** o CI completo do novo head precisa medir o tempo real com o nativo
primeiro e provar a nova vizinhança de navegação na parte 7. Não se repetiram build,
Docker, banco ou E2E local, nem se rerodou o head anterior. As oito jornadas de produto
PASS não substituem os cinco checks obrigatórios da combinação final.

A stack `codexlote1-01a178b3` foi encerrada com `--no-backup`. Nenhum container ou
porta desse projeto permaneceu ativo. Recursos de outras frentes foram preservados.
