Pixios Pixios
01 / 16
Bastidores da Fábrica

Como o Pixios constrói um app, e por que ele verifica tanto

Um caso real: o build da Peixaria. Todos os números vêm do banco de dados da Fábrica, lidos em 07/10/2026.

80.688verificações feitas
62tarefas executadas
233tentativas dos agentes
~40 hno relógio, até aqui
Role, use as setas do teclado ou os botões no topo
A resposta curta

As 80 mil verificações parecem muito porque são pequenas, baratas e repetidas

Três ideias explicam quase tudo. As duas primeiras são de propósito. A terceira é um custo que dá para cortar.

Cada verificação é minúscula

Uma chamada à API, um item checado numa tela. Feitas por código, sem IA, em milissegundos. As 901 verificações da API levam cerca de 2 segundos.

Quem escreve não aprova

A IA escreve o código, mas quem decide se passou é o código do Pixios. Um agente nunca encerra uma tarefa só porque disse "terminei".

A conta multiplica

Toda tarefa roda os portões, e cada correção re-testa o app inteiro. As 29 correções geraram 73% das verificações.

E a demora? O build leva cerca de 40 horas no relógio, mas só cerca de 10h35 são trabalho medido. O resto é espera. Há desperdícios reais, que mostro nos slides 12 e 13, e dá para cortar boa parte.

A estrutura

Uma linha de montagem onde o código manda e a IA executa

O cliente aprova o escopo no chat. A partir daí, esta é a rota de um app até a entrega.

1
OrquestradorO gerente. Um laço a cada 5 segundos decide o que roda, em que ordem e quando parar.
código
2
PlanejadorUma chamada à IA forte. Devolve o contrato do app (telas, tabelas, rotas, papéis) e a lista de tarefas.
IA forte
3
EsqueletoCopia o pixios-base (login, menu, tema, 3 idiomas). O agente nunca reescreve o que é igual em todo app.
código
4
Trabalhadores ⇄ PortõesCada tarefa: o agente escreve, os portões conferem, e volta até passar. Até 2 agentes ao mesmo tempo.
IA média
5
Revisão geral (QA)Com tudo montado, os 9 portões testam o app inteiro. O que achar vira tarefa de correção, e a revisão roda de novo.
código
6
Relatório e entregaGera o que o cliente vê: contagens, previsão e relatório de qualidade. Só sai com zero problema grave aberto.
código
IA escreve ou planeja código decide, mede e libera
Quem é quem

Só 2 papéis são de IA. Os outros 6 são código comum.

A IA é cara, lenta e pode errar. Por isso ela fica restrita ao que só ela faz: planejar e escrever. Todo o resto é determinístico.

Orquestrador

Fila no Postgres. Respeita o limite de 2 agentes, o horário, o orçamento (US$ 25 por build) e as dependências entre tarefas. Só existe um por banco.

código

Planejador

Lê o escopo e responde em JSON. O código valida; se estiver inválido, devolve o erro e a IA tenta de novo, até 3 vezes.

IA forte

Esqueleto

Copia a base pronta e cria o schema do banco. É o que mais economiza: a IA não gasta nada refazendo login e menu.

código

Trabalhadores

Sonnet. Cada um pega 1 tarefa numa pasta isolada (git worktree) e só pode alterar os arquivos permitidos para ela.

IA média

Guarda do contrato

Impede o agente de "dar um jeito": remover rota, trocar papel, mostrar campo sensível para mais gente, afrouxar limite.

código

Portões G0 a G8

Nove famílias de verificação automática. Decidem se a tarefa passou e se o app pode ser entregue.

código

Integração

Junta o trabalho na versão principal, uma tarefa por vez, e re-confere se a versão principal mudou no meio do caminho.

código

Relatório

Monta o que o cliente enxerga, campo por campo, com lista de permitidos. Nunca expõe portões, modelos ou prompts.

código
O ciclo de vida

Um build passa por estados fixos

O orquestrador move o build de um estado para o outro. A revisão e a correção ficam num vaivém até não sobrar problema grave.

planejando→ esqueleto→ construindo→ qa⇄ corrigindo→ pronto pausado

Dentro de "construindo", as tarefas saem em fases

1Bancotabelas de cada módulo
2Dados de exemploseed para testar
3APIrotas e regras
4Telas e idiomaspáginas e textos
5Integraçãojornadas ponta a ponta

Na Peixaria o plano gerou 5 módulos, e cada um teve banco, dados, API, telas e integração. Isso dá 33 tarefas (13 de tela, 5 de cada um dos outros tipos). As outras 29 das 62 são correções criadas pela revisão geral.

A tarefa

Cada tarefa é um laço até passar

O agente não se auto-avalia. Ele escreve, o código mede, e o resultado volta como um relatório curto.

O agente recebea tarefa, os critérios, os arquivos permitidos e o relatório da tentativa anterior
O agente escrevenuma cópia isolada do projeto, com tempo e custo limitados
O código confere o escopoo que saiu dos arquivos permitidos é desfeito
A guarda confere o contratoo manifesto não pode ter sido afrouxado
Os portões rodamG0 e G1 em toda tarefa; G2 e G3 conforme o tipo
PassouIntegra na versão principal e libera as tarefas que dependiam dela.
FalhouSó o que falhou volta ao agente. Até 4 tentativas, 20 min e de US$ 0,80 a US$ 2,50 por tarefa.

Se a mesma falha aparece duas vezes seguidas, a tarefa sobe para o motor mais forte. Se ainda assim não passar, o build pausa em vez de insistir às cegas.

Como foram as 233 tentativas da Peixaria

62 tarefas, média de 3,8 tentativas por tarefa. A mais difícil, a T05 (integração), levou 8.

Reprovou nos portões
88
Passou
64
Erro do agente60 foram o limite da assinatura
62
Não mudou nada
19
Por que a IA não manda

Três travas impedem o agente de "dar um jeito"

Um modelo sob pressão para passar nos testes tem um atalho óbvio: mudar o teste, ou o combinado. A Fábrica fecha esse atalho.

Arquivos permitidos

Cada tarefa lista as pastas que pode tocar. O código compara o git antes e depois e reverte o que estiver fora da lista.

Contrato do app

O pixios.manifesto.json é o mapa do que existe e de quem acessa. O agente pode acrescentar, nunca remover rota, trocar papel ou liberar campo sensível.

Portões que leem o contrato

Os testes saem do manifesto, e quem o altera é o planejador, não o trabalhador. Por isso qualquer IA pode ser plugada: a qualidade está nos portões.

Os portões

Nove verificações, cada uma cuida de um tipo de erro

G0

Estático

O código compila? Tem segredo escrito nele? Os textos existem nos 3 idiomas?

toda tarefa
G1

API

Cada rota é chamada com caso feliz, sem login, com papel errado, com entrada inválida e com id inexistente.

toda tarefa
G2

Páginas

Cada tela × papel × aparelho × tema. Abre sem erro? Sem rolagem lateral? Nada atrás do menu? Contraste?

telas, integração, correção
G3

Fluxos

Roteiros reais: cadastrar, editar, filtrar, abrir detalhe, excluir.

integração, correção
G4

Macaco

Clica em tudo, escreve valores ruins em todo campo e sorteia ações por minutos, com semente fixa para reproduzir.

só na revisão geral
G5

Papéis

Cada papel só vê o que deve. Spread, lucro e taxas somem de quem não pode ver.

só na revisão geral
G6

Visual

Prints de todas as telas e medidas de layout: texto cortado, número truncado, elemento fora da caixa.

só na revisão geral
G7

Segurança

Injeção de SQL, XSS, cabeçalhos, limites de requisição, dados expostos.

só na revisão geral
G8

Desempenho

Memória do app (limite de 256 MB), consultas em laço (N+1), listas sem paginação.

só na revisão geral
Tipo de tarefaG0G1G2G3G4 a G8
banco, dados, API, textossimsimnãonãonão
telasimsimsimnãonão
integração e correçãosimsimsimsimnão
revisão geralsimsimsimsimsim
O que é "uma verificação"

Uma verificação é um item conferido, não um teste inteiro

Dois exemplos reais da Peixaria mostram como o número cresce rápido sem ser pesado.

G1 · API

901 verificações em 2 segundos

39 rotas×~23 conferências por rota=901

Por rota: o caso feliz de cada papel (3), sem login, papel errado, entrada inválida, id inexistente e o limite de requisições. Tudo por HTTP contra um banco de teste descartável.

G2 · Páginas

1.354 verificações na revisão geral

123 combinações×11 itens por visita=1.354

Uma combinação é tela × papel × aparelho × tema (claro e escuro; celular, tablet e PC). Em cada visita se confere erro de console, rolagem lateral, menu cobrindo botão, imagem quebrada, contraste e mais.

As verificações são contadas pela última rodada de cada portão em cada tarefa. As tentativas que reprovaram não entram, então o número de 80.688 ainda é conservador.

A conta real

Onde estão as 80.688 verificações

Quase 83% vêm de só dois portões, a API e as páginas, porque rodam em toda tarefa.

G1 · API46,9% do total
37.839
G2 · Páginas35,9%
28.944
G3 · Fluxos13,5%
10.892
G0 · Estático2,6%
2.138
G7 · Segurança0,8%
624
G5 · Papéis0,3%
251

G4, G6 e G8 contam zero. G6 e G8 medem coisas que não viram "itens conferidos". O G4 (macaco) deveria contar milhares de cliques, mas nunca terminou. Isso é um problema que mostro no slide 13.

A multiplicação

As 29 correções geraram 73% das verificações

Uma correção costuma mexer em um lugar só. Mas, como está hoje, ela é conferida como se fosse o app inteiro.

22%
73%
33 tarefas do plano · 17.999média de 545 por tarefa
29 correções · 59.182média de 2.041 por correção
6 revisões gerais · 3.507só a última rodada é contada

Por que a correção sai tão cara

No código, a correção roda G0 a G3 sem lista de rotas. O G1 então testa as 39 rotas, e o G2 abre todas as telas, mesmo que o erro fosse em uma só.

O efeito em números

Uma tela nova gera cerca de 356 verificações de API. Uma correção gera cerca de 900, porque re-testa tudo.

Por que demora

Só 26% do tempo é trabalho. O resto é espera.

O build começou em 06/10 às 05h05 (UTC) e ainda está na revisão. São cerca de 2.418 minutos no relógio.

espera · 74%
3h31 · agentes escrevendo211 min nas 233 tentativas
4h53 · portões nas tarefasG3 sozinho: 211 min; G2: 74 min
2h11 · revisão geral6 rodadas de cerca de 22 min
~29h40 · esperaexplicada abaixo

Limite da assinatura

60 tentativas bateram no limite de sessão do Claude e ficaram esperando o reset. Hoje o código trata isso como espera, não como tentativa gasta.

Fila e paralelismo

Só 2 agentes ao mesmo tempo, e os portões de um projeto rodam um por vez (fila exclusiva), para não brigarem pelo mesmo banco de teste.

Pausas e reinícios

O build pausou por limite de rodadas e a API foi reiniciada algumas vezes para ativar melhorias. Não consegui separar quanto de cada causa.

Por que vale

O que a malha pegou antes do cliente ver

30 problemas encontrados até agora: 1 crítico, 14 graves, 8 médios e 7 leves. Desses, 17 já foram corrigidos.

P0
Injeção de SQLuma consulta usava valor interpolado. Alguém poderia manipular o banco.
P1
Formulário válido foi recusadoo cliente não conseguiria cadastrar um item correto.
P1
App usando 259 MB, limite de 256 MBo app seria derrubado por falta de memória em produção.
P2
Estado vazio não aparecialista sem itens mostrava uma tela em branco.
P2
Número cortado com reticênciasum valor financeiro ficava ilegível no celular.
P2
Consulta ao banco dentro de laço (N+1)a tela ficaria lenta conforme os dados crescessem.

Problemas novos por rodada

Consertar cria problemas novos, por isso uma rodada só não basta.

17R1
4R2
1R3
5R4
1R5
2R6
Onde há desperdício

O rigor é de propósito. Cinco pontos não são.

Estes são os custos que não compram qualidade, medidos no build da Peixaria.

O macaco (G4) estoura o tempo em toda rodada

Nas 6 revisões ele bateu o teto de 15 minutos e foi cortado, sem entregar resultado. Gastou 69% do tempo da revisão geral e zero verificações. Ainda não sei qual das três partes dele (aleatório, API, rastreador) consome o tempo.

90 minsem resultado

A correção re-testa o app inteiro

Em tela e fluxo, as 29 correções gastaram 190 dos 293 minutos de portões das tarefas, para consertar problemas localizados.

65%do tempo de portões

Toda rodada de revisão refaz tudo

Restam 2 problemas e a rodada seguinte roda os 9 portões completos de novo, cerca de 22 minutos, só para confirmar 2 correções.

22 minpor rodada

Falsos positivos do G1

Pelo menos 5 achados "esperava 200 e veio 409" parecem ser regra de negócio (ex.: não excluir bairro com pedidos), não defeito. Cada um custou uma tarefa de correção.

5+achados suspeitos

Tentativas queimadas no limite da assinatura

60 das 233 tentativas morreram no limite de sessão e contaram como tentativa. O código novo já trata como espera.

26%das tentativas
Como encurtar

Quatro ajustes cortam o tempo sem afrouxar a qualidade

Nenhum remove um portão. Todos mudam só quando e onde ele roda. Os ganhos abaixo são estimativas minhas, a validar depois.

1. Correção cirúrgica

Rodar G1 só nas rotas do achado, G2 só na tela afetada e G3 só no fluxo afetado. O app inteiro continua sendo testado na revisão geral.

190 → ~50 minnos portões das correções

2. Conserto do macaco (G4)

Dar a cada parte um tempo próprio e gravar o progresso. Assim ele entrega resultado em vez de ser cortado. É o único portão hoje sem nenhum resultado.

0 → resultadoe o teto sai dos 15 min

3. Rodada de confirmação

Depois da 1ª revisão completa, as rodadas seguintes reconferem só os portões que tinham problema aberto, e uma revisão completa final fecha o build.

22 → ~3 minpor rodada intermediária

4. G1 entende regra de negócio

Não reprovar 409 de "tem vínculos" nem 404 de estado inválido, e testar exclusão num registro sem dependências.

menos correçõescriadas à toa
Decisão sua: diga quais aplico. Minha sugestão é começar pelo 2 e pelo 1, que atacam o maior desperdício. Nenhuma mudança será feita antes do seu aval.
Em cinco linhas

O que levar desta apresentação

  1. A IA só escreve. Planejar, mandar, medir e liberar é código do Pixios.
  2. Os 9 portões existem para o cliente não achar bug. Eles pegaram 30 problemas, incluindo uma injeção de SQL.
  3. As 80.688 verificações são itens baratos, conferidos por código, e a maior parte vem das 29 correções.
  4. Das ~40 horas, só ~10h35 são trabalho; o resto é espera por limites, fila e pausas.
  5. Há desperdício real (macaco, correção que re-testa tudo, revisão completa repetida) e dá para cortar sem perder rigor.
PixiosPixios Dados do banco da Fábrica em 07/10/2026 · build da Peixaria, em revisão geral na rodada 6