Skip to content

Tratamento de Falhas e Rollback: Tolerância a Falhas Inteligente e Recuperação de Erros

O Que Você Vai Aprender

  • Identificar Tipos de Falha: Julgar rapidamente as causas de falhas como saída ausente, conteúdo incompatível ou gravação não autorizada
  • Entender Mecanismo de Repetição: Dominar a estratégia de repetição automática única e regras de arquivamento de falhas
  • Executar Operação de Rollback: Aprender a fazer rollback para o checkpoint de sucesso mais recente e restaurar um estado estável
  • Tratamento de Intervenção Humana: Saber quando a intervenção humana é necessária, como analisar causas de falha e corrigir
  • Interpretar Logs de Erro: Compreender relatórios de erro do pipeline/error.log e localizar problemas rapidamente

Sua Situação Atual

Quando o pipeline é executado, suas maiores preocupações são:

  • O que fazer se falhar: Se uma fase reportar erro, devemos tentar novamente ou começar do início?
  • Dados contaminados: Os produtos de falha afetarão fases subsequentes? Eles serão limpos?
  • Como fazer rollback: Quero voltar ao estado de sucesso anterior, como fazer?
  • Intervenção humana: Falhas consecutivas, o que preciso fazer? Como ver os logs?

O mecanismo de tratamento de falhas existe para resolver esses problemas—ele define o processo completo de identificação de falhas, repetição automática, arquivamento de produtos de falha, rollback para checkpoints e intervenção humana.

Quando Usar Esta Técnica

Quando o pipeline apresentar as seguintes situações:

  • Falha de fase: Execução do Agent falhou, arquivos de saída ausentes ou não conformes
  • Operação não autorizada: Agent gravou em diretório não autorizado, acionando verificação de segurança
  • Falhas consecutivas: Mesma fase falhou duas vezes, necessitando análise de intervenção humana
  • Necessidade de rollback: Quer voltar ao estado de sucesso anterior para recomeçar
  • Análise de logs: Precisa ver relatórios de erro detalhados e informações de stack

Ideia Central

A estratégia de tratamento de falhas é executada unificadamente pelo orquestrador Sisyphus, que atua como um engenheiro de tolerância a falhas, processando automaticamente ou solicitando intervenção humana quando o pipeline encontra erros.

Definição de Falha

As seguintes situações são consideradas falhas de Stage:

Tipo de FalhaSintomaLocalização do Código
Saída AusenteArquivos de saída especificados em pipeline.yaml não existem ou nomes não correspondemfailure.policy.md:9
Não Conforme com exit_criteriaConteúdo de saída não atende condições de saída em pipeline.yamlfailure.policy.md:10
Gravação Não AutorizadaAgent gravou conteúdo em diretório ou arquivo não autorizadofailure.policy.md:11
Outras ExceçõesErros de script, incapacidade de ler entrada, etc., impedindo conclusão da tarefafailure.policy.md:12

Mecanismo de Repetição

mermaid
graph TD
    A[Falha do Stage] --> B{Primeira falha?}
    B -->|Sim| C[Repetição Automática Única]
    B -->|Não| D[Pausar e Solicitar Intervenção Humana]
    C --> E{Repetição Bem-Sucedida?}
    E -->|Sim| F[Continuar para Próxima Fase]
    E -->|Não| D
    D --> G[Humanos Analisam Causa]
    G --> H[Corrigir Problema]
    H --> I[Reexecutar]

Regras de Repetição (failure.policy.md:16-18):

  • Cada Stage permite repetição automática única por padrão
  • Na repetição, o orquestrador requer que o Agent corrija problemas mantendo produtos existentes, em vez de refazer completamente
  • Se a segunda tentativa também falhar, o orquestrador deve pausar o pipeline e entrar no processo de intervenção humana

Rollback e Arquivamento

Arquivamento de Falhas (failure.policy.md:22-23):

bash
# Produtos de falha movidos para diretório _failed/
mv artifacts/<stage>/ artifacts/_failed/<stage-id>/attempt-1/
mv artifacts/<stage>/ artifacts/_failed/<stage-id>/attempt-2/

Estratégia de Rollback (failure.policy.md:23):

  • O orquestrador faz rollback para o checkpoint de sucesso mais recente
  • Reexecuta a partir deste Stage
  • Garante consistência de produtos upstream e downstream, evitando contaminação de dados

Intervenção Humana

Momento de Intervenção (failure.policy.md:27):

  • Após o mesmo Stage falhar duas vezes consecutivas
  • Quando gravação não autorizada é detectada

Fluxo de Intervenção (failure.policy.md:27-29):

  1. O orquestrador pausa a execução e reporta a causa da falha
  2. Humanos verificam se há problemas na entrada, configuração ou habilidades
  3. Humanos modificam arquivos de entrada, ajustam habilidades ou modificam parâmetros
  4. Continua a execução do processo restante

Restrição do Orquestrador

O orquestrador não deve pular fases com falha ou modificar saídas sem confirmação humana.

Siga-me

Passo 1: Entender o Fluxo de Tratamento de Falhas

Quando você executa o pipeline, se uma fase falhar, o orquestrador Sisyphus inicia automaticamente o fluxo de tratamento de falhas.

Cenário de Exemplo: Falha na fase Code

mermaid
graph TD
    A[Execução do Code Agent] --> B{Verificar exit_criteria}
    B -->|Não Conforme| C[Acionar Tratamento de Falhas]
    C --> D{Primeira falha?}
    D -->|Sim| E[Repetição Automática Única]
    D -->|Não| F[Pausar e Solicitar Intervenção Humana]
    E --> G{Repetição Bem-Sucedida?}
    G -->|Sim| H[Continuar para Próxima Fase]
    G -->|Não| F
    F --> I[Arquivar Produtos de Falha para _failed/]
    I --> J[Rollback para Checkpoint Anterior]
    J --> K[Humanos Analisam Logs de Erro]

Passo 2: Visualizar Logs de Erro

Quando há falha, o orquestrador registra informações de erro detalhadas em pipeline/error.log.

Formato do Log de Erro (failure.policy.md:166-200):

bash
cat pipeline/error.log

Você Deve Ver:

log
============================================
ERROR REPORT
============================================
Timestamp: 2026-01-29T10:30:00Z
Stage: code
Attempt: 2/2
Status: FAILED

Error Type: TypeScript Compilation Error
Error Message: Cannot find module '@prisma/client'

Stack Trace:
  at Object.<anonymous> (src/lib/prisma.ts:1:1)
  at Module._compile (node:internal/modules/cjs/loader:1198:14)

Exit Criteria Failed:
  - [ ] Backend pode iniciar sem erros críticos (FAILED)
  - [x] Cliente pode renderizar e acessar
  - [x] Não introduziu autenticação adicional ou funcionalidades irrelevantes

Failed Artifacts Moved To:
  artifacts/_failed/code/attempt-2/

Recommended Action:
  1. Verifique se package.json contém @prisma/client
  2. Execute npx prisma generate para gerar o cliente
  3. Tente novamente a fase Code

============================================

Interpretação do Log de Erro:

CampoDescriçãoExemplo
TimestampHorário da falha2026-01-29T10:30:00Z
StageFase que falhoucode
AttemptNúmero de tentativas2/2 (segunda falha)
StatusStatus atualFAILED
Error TypeTipo de erroTypeScript Compilation Error
Error MessageDescrição do erroCannot find module '@prisma/client'
Stack TraceInformações de stacksrc/lib/prisma.ts:1:1
Exit Criteria FailedCritérios de saída não atendidosBackend pode iniciar sem erros críticos (FAILED)
Failed Artifacts Moved ToLocal de arquivamento de produtos de falhaartifacts/_failed/code/attempt-2/
Recommended ActionEtapas de correção recomendadas1. Verifique se package.json...

Passo 3: Entender Mecanismo de Repetição

Quando a primeira falha ocorre, o Sisyphus aciona automaticamente a repetição.

Fluxo de Repetição (failure.policy.md:16-18):

mermaid
graph LR
    A[Primeira Falha] --> B[Arquivar Produtos de Falha para _failed/]
    B --> C[Manter Produtos Existentes]
    C --> D[Requerer que Agent Corrija Problema]
    D --> E{Repetição Bem-Sucedida?}
    E -->|Sim| F[Continuar para Próxima Fase]
    E -->|Não| G[Pausar e Solicitar Intervenção Humana]

Características Importantes:

  • Correção Incremental: Na repetição, o orquestrador requer que o Agent corrija problemas mantendo produtos existentes, em vez de refazer completamente
  • Arquivamento de Falhas: Produtos de falha de cada tentativa são movidos para artifacts/_failed/<stage-id>/attempt-N/, facilitando análise comparativa
  • Máximo Uma Vez: Por padrão, apenas uma repetição automática é permitida, evitando loops infinitos

Passo 4: Visualizar Arquivamento de Falhas

Quando uma fase falha, todos os produtos de falha são arquivados no diretório artifacts/_failed/.

Estrutura de Diretórios:

bash
artifacts/
├── _failed/
   ├── code/
   ├── attempt-1/
   ├── backend/
   └── client/
   └── attempt-2/
       ├── backend/
       └── client/
   ├── ui/
   └── attempt-1/
   └── prd/
       └── attempt-1/

Regras de Nomenclatura de Diretórios de Arquivamento:

  • artifacts/_failed/<stage-id>/attempt-N/
    • <stage-id>: Nome da fase que falhou (ex: code, ui, prd)
    • attempt-N: Número de tentativas (1 indica primeira falha, 2 indica segunda falha)

Por Que Arquivar:

  • Evitar Contaminação: Produtos de falha não afetam fases subsequentes
  • Facilitar Análise: Podem comparar diferenças entre tentativas, identificando causas raiz
  • Preservar Evidências: Preservam produtos de falha para depuração subsequente

Passo 5: Executar Operação de Rollback

Quando precisar voltar a um estado anterior, pode usar a função de rollback.

Fluxo de Rollback (failure.policy.md:23):

bash
# Rollback manual para checkpoint anterior
factory run <stage-id>

# Por exemplo: Rollback para fase tech e reexecutar
factory run tech

Regras de Rollback:

  • Alvo de Rollback: Faz rollback para o checkpoint de sucesso mais recente
  • Resetar Estado: Limpa produtos e arquivamentos de falha da fase atual
  • Reexecutar: Recomeça a execução a partir da fase alvo

Exemplo de Rollback:

Suponha que você falhou duas vezes na fase Code e quer voltar à fase Tech para redesenhar a arquitetura:

bash
# 1. Rollback para fase tech
factory run tech

# 2. O assistente de IA reexecutará o Tech Agent
# 3. Regenerará artifacts/tech/ e artifacts/backend/prisma/
# 4. Depois continuará a executar a fase Code

Passo 6: Tratamento de Intervenção Humana

Quando houver duas falhas consecutivas, o Sisyphus pausará o pipeline e solicitará intervenção humana.

Árvore de Decisão de Intervenção (failure.policy.md:204-236):

mermaid
graph TD
    A[Falha do Stage] --> B{Primeira falha?}
    B -->|Sim| C[Repetição Automática]
    B -->|Não| D[Analisar Causa da Falha]
    C --> E{Repetição Bem-Sucedida?}
    E -->|Sim| F[Continuar Fluxo]
    E -->|Não| D
    D --> G{É problema de entrada?}
    G -->|Sim| H[Rollback para Stage Upstream]
    G -->|Não| I[Solicitar Intervenção Humana]
    H --> J[Reexecutar Upstream]
    I --> K[Humanos Corrigem Problema]
    K --> L[Continuar Execução]

Lista de Verificação de Intervenção Humana (failure.policy.md:240-263):

Verificação de Ambiente

  • [ ] Versão Node.js >= 18
  • [ ] Versão npm >= 9
  • [ ] Espaço em disco suficiente
  • [ ] Conexão de rede normal (download npm)

Verificação de Estado

  • [ ] Estado .factory/state.json correto
  • [ ] Produtos upstream Stage completos
  • [ ] Produtos de falha arquivados em _failed/

Confirmação de Correção

  • [ ] Causa da falha identificada
  • [ ] Plano de correção implementado
  • [ ] Configurações relacionadas atualizadas

Recuperação de Execução

  • [ ] Recomeçar do Stage que falhou
  • [ ] Monitorar logs de execução
  • [ ] Verificar produtos de saída

Passo 7: Tratamento de Cenários Comuns de Falha

Diferentes fases têm diferentes cenários comuns de falha, abaixo estão as soluções.

7.1 Falha na Fase Bootstrap

Erros Comuns (failure.policy.md:35-48):

Tipo de ErroSintomaCausaSolução
Saída Ausenteinput/idea.md não existeAgent não gravou arquivo corretamenteTentar novamente, verificar caminho de gravação
Conteúdo Incompletoidea.md faltando capítulos-chaveInformações de entrada do usuário insuficientesPausar, solicitar usuário para complementar informações
Erro de FormatoNão conforme com estrutura de templateAgent não seguiu templateTentar novamente, enfatizar requisitos de template

Fluxo de Tratamento:

bash
# 1. Verificar se diretório input/ existe
ls -la input/

# 2. Se não existir, criar diretório
mkdir -p input/

# 3. Tentar novamente fase Bootstrap
factory run bootstrap

7.2 Falha na Fase PRD

Erros Comuns (failure.policy.md:50-65):

Tipo de ErroSintomaCausaSolução
Contém Detalhes TécnicosPRD apresenta descrição de stack tecnológicaAgent ultrapassou limitesTentar novamente, enfatizar limites de responsabilidade
Funcionalidades em ExcessoMust Have > 7 itensEscopo se expandiuTentar novamente, solicitar redução para MVP
Descrição de Usuário Vaga"todos", "maioria dos usuários"Não especificouTentar novamente, solicitar persona de usuário específica
Faltando Não-ObjetivosNon-Goals vazioNão definiu limitesTentar novamente, solicitar listar não-objetivos

Fluxo de Tratamento:

bash
# 1. Verificar se PRD não contém palavras-chave técnicas
grep -E "(React|API|banco de dados)" artifacts/prd/prd.md

# 2. Verificar se quantidade de funcionalidades Must Have ≤ 7
grep -A 100 "Must Have" artifacts/prd/prd.md | wc -l

# 3. Ao tentar novamente, fornecer requisitos de correção específicos
factory run prd

7.3 Falha na Fase UI

Erros Comuns (failure.policy.md:67-82):

Tipo de ErroSintomaCausaSolução
Páginas em ExcessoQuantidade de páginas > 8Escopo se expandiuTentar novamente, solicitar redução de páginas
Preview Não AbreArquivo HTML corrompidoErro de geraçãoTentar novamente, verificar sintaxe HTML
Usa Estilo AIFonte Inter + gradiente roxoNão seguiu guia de estéticaTentar novamente, solicitar escolha de estética distinta
Schema InválidoFalha na análise YAMLErro de sintaxeTentar novamente, validar sintaxe YAML

Fluxo de Tratamento:

bash
# 1. Contar quantidade de páginas em ui.schema.yaml
grep -c "page:" artifacts/ui/ui.schema.yaml

# 2. Tentar abrir preview no navegador
open artifacts/ui/preview.web/index.html

# 3. Validar sintaxe YAML
npx js-yaml artifacts/ui/ui.schema.yaml

# 4. Verificar se usa elementos de estilo AI proibidos
grep -E "(Inter|roxo|gradiente)" artifacts/ui/ui.schema.yaml

7.4 Falha na Fase Tech

Erros Comuns (failure.policy.md:84-99):

Tipo de ErroSintomaCausaSolução
Erro de Sintaxe Prismaschema.prisma inválidoProblema de sintaxeTentar novamente, executar prisma validate
Over-EngineeringIntroduziu microsserviços/cacheViolou princípio MVPTentar novamente, solicitar simplificação de arquitetura
Modelos de Dados em ExcessoQuantidade de tabelas > 10Escopo se expandiuTentar novamente, simplificar modelos de dados
Faltando Definição de APItech.md sem lista de endpointsConteúdo incompletoTentar novamente, solicitar complemento de API

Fluxo de Tratamento:

bash
# 1. Executar validação Prisma
cd artifacts/backend
npx prisma validate

# 2. Verificar se tech.md contém capítulos necessários
grep -E "(API|endpoint|rota)" artifacts/tech/tech.md

# 3. Contar quantidade de modelos de dados
grep -c "model " artifacts/backend/prisma/schema.prisma

# 4. Verificar se introduziu tecnologias complexas desnecessárias
grep -E "(microsserviço|cache|fila)" artifacts/tech/tech.md

7.5 Falha na Fase Code

Erros Comuns (failure.policy.md:101-131):

Tipo de ErroSintomaCausaSolução
Falha na Instalação de Dependênciasnpm install reporta erroConflito de versões de pacotesVerificar package.json, atualizar versões
Erro TypeScriptFalha na compilação tscProblema de tiposCorrigir erros de tipos, tentar novamente
Faltando Arquivos NecessáriosEstrutura de diretórios incompletaOmissão na geraçãoTentar novamente, verificar lista de arquivos
Falha nos Testesnpm test falhaErro de lógica de códigoCorrigir testes, tentar novamente
API Não IniciaFalha na escuta de portaProblema de configuraçãoVerificar configuração de variáveis de ambiente

Fluxo de Tratamento:

bash
# 1. Executar verificação de dependências
cd artifacts/backend
npm install --dry-run

# 2. Executar verificação de tipos
npx tsc --noEmit

# 3. Verificar estrutura de diretórios contra lista de arquivos
ls -la src/

# 4. Executar testes
npm test

# 5. Se todos os acima passarem, tentar iniciar serviço
npm run dev

Correção de Problemas Comuns de Dependências (failure.policy.md:120-131):

bash
# Conflito de versões
rm -rf node_modules package-lock.json
npm install

# Incompatibilidade de versão Prisma
npm install @prisma/client@latest prisma@latest

# Problemas de dependência React Native
cd artifacts/client
npx expo install --fix

7.6 Falha na Fase Validation

Erros Comuns (failure.policy.md:133-147):

Tipo de ErroSintomaCausaSolução
Relatório de Validação IncompletoCapítulos de report.md faltandoAgent não completouTentar novamente
Problemas Graves em ExcessoQuantidade de erros > 10Qualidade da fase Code baixaRollback para fase Code
Problemas de SegurançaChave codificada detectadaViolação de segurançaRollback, corrigir problema de segurança

Fluxo de Tratamento:

bash
# 1. Analisar report.md para confirmar existência de todos os capítulos
grep -E "(## Resumo|## Backend|## Frontend|## Problemas)" artifacts/validation/report.md

# 2. Contar quantidade de problemas graves
grep -c "problema grave" artifacts/validation/report.md

# 3. Se problemas graves > 10, sugerir rollback para fase Code
factory run code

# 4. Verificar resultados de varredura de segurança
grep -E "(chave|senha|token)" artifacts/validation/report.md

7.7 Falha na Fase Preview

Erros Comuns (failure.policy.md:149-162):

Tipo de ErroSintomaCausaSolução
README IncompletoFaltando etapas de instalaçãoOmissão de conteúdoTentar novamente, complementar etapas
Falha na Construção DockerErro no DockerfileProblema de configuraçãoCorrigir Dockerfile
Configuração de Implantação AusenteSem docker-composeNão geradoTentar novamente, solicitar geração de configuração

Fluxo de Tratamento:

bash
# 1. Verificar se README.md contém todos os capítulos necessários
grep -E "(## Início Rápido|## Instalação|## Execução)" artifacts/preview/README.md

# 2. Tentar docker build para validar Dockerfile
cd artifacts/preview
docker build -t test-app .

# 3. Verificar se arquivos de configuração de implantação existem
ls -la docker-compose.yml .github/workflows/

Checkpoint ✅

Após completar esta lição, você deve:

  • [ ] Entender os 4 tipos de tratamento de falha (saída ausente, conteúdo incompatível, não autorizado, exceção)
  • [ ] Dominar o mecanismo de repetição automática única
  • [ ] Saber que produtos de falha são arquivados em artifacts/_failed/
  • [ ] Ser capaz de interpretar relatórios de erro do pipeline/error.log
  • [ ] Entender o fluxo de rollback para checkpoints
  • [ ] Saber quando a intervenção humana é necessária
  • [ ] Dominar soluções para cenários comuns de falha

Armadilhas Comuns

Problema 1: Produtos São Completamente Refeitos na Repetição

Sintoma: Na segunda tentativa, todos os produtos são regenerados, em vez de corrigidos com base nos existentes.

Causa: O Agent não seguiu a regra de "corrigir com base nos produtos existentes".

Solução:

Ao tentar novamente, informe claramente ao Agent:

markdown
Por favor, corrija o problema com base nos produtos existentes, não refaça completamente.
Mantenha as partes corretas já existentes, modifique apenas as partes que não estão de acordo com exit_criteria.

Problema 2: Produtos de Falha Contaminam Fases Subsequentes

Sintoma: Os produtos de falha não foram arquivados, afetando a execução de fases subsequentes.

Causa: A etapa de arquivamento de produtos de falha não foi executada.

Solução:

Arquive manualmente os produtos de falha:

bash
# Mover produtos de falha para diretório _failed/
mv artifacts/<stage-id> artifacts/_failed/<stage-id>/attempt-1/

# Depois reexecutar esta fase
factory run <stage-id>

Problema 3: Inconsistência de Produtos Após Rollback

Sintoma: Após rollback para fase upstream, os produtos são inconsistentes com os anteriores.

Causa: No rollback, apenas a fase atual foi resetada, sem limpar produtos downstream dependentes.

Solução:

Fluxo de rollback completo:

bash
# 1. Rollback para fase alvo
factory run <target-stage>

# 2. Limpar produtos de todas as fases downstream
rm -rf artifacts/<downstream-stage-1>/
rm -rf artifacts/<downstream-stage-2>/

# 3. Reexecutar
factory run

Problema 4: Falha Após Intervenção Humana

Sintoma: Após corrigir o problema e continuar a execução, ainda falha.

Causa: O plano de correção está incompleto ou as modificações não foram salvas.

Solução:

Lista de verificação de intervenção humana:

bash
# 1. Confirmar que causa da falha foi identificada
cat pipeline/error.log

# 2. Confirmar que plano de correção foi implementado
# Verificar arquivos modificados

# 3. Confirmar que configurações relacionadas foram atualizadas
cat .factory/state.json

# 4. Reexecutar
factory run <failed-stage>

Problema 5: Log de Erro Incompleto

Sintoma: pipeline/error.log está faltando informações-chave.

Causa: O orquestrador não registrou corretamente o log de erro.

Solução:

Verificar se arquivo de log existe:

bash
# Se não existir, criar manualmente
mkdir -p pipeline
cat > pipeline/error.log << 'EOF'
ERROR REPORT
============================================
Timestamp: $(date -u +"%Y-%m-%dT%H:%M:%SZ")
Stage: <stage-id>
Attempt: 1/1
Status: FAILED

Error Type: Manual Debug
Error Message: Debug information needed

Stack Trace:
  (add stack trace if available)

Exit Criteria Failed:
  - [ ] exit-criteria-1
  - [ ] exit-criteria-2

Failed Artifacts Moved To:
  artifacts/_failed/<stage-id>/attempt-1/

Recommended Action:
  1. Describe the issue
  2. Provide fix steps
  3. Retry the stage

============================================
EOF

Melhores Práticas

1. Falha Precoce

Princípio: Descubra problemas o mais cedo possível, evitando desperdiçar tempo em fases subsequentes.

Prática:

  • Na fase Bootstrap, verifique se a entrada do usuário está completa
  • Na fase PRD, verifique se há detalhes técnicos (violação de limites de responsabilidade)
  • Na fase UI, verifique se a quantidade de páginas é razoável

2. Logs Detalhados

Princípio: Registre informações de contexto suficientes para facilitar a investigação de problemas.

Prática:

  • Logs de erro contêm timestamp, fase, tentativas, tipo de erro, informações de stack
  • Etapas de correção recomendadas especificam nome de arquivo e número de linha
  • Arquivar produtos de falha facilita análise comparativa

3. Operações Atômicas

Princípio: A saída de cada fase deve ser atômica, facilitando rollback.

Prática:

  • Gerar todos os arquivos de produto de uma vez, em vez de gravar gradualmente
  • Se falhar no meio do caminho, não reter produtos incompletos
  • Arquivar produtos de toda a fase, em vez de arquivos parciais

4. Preservar Evidências

Princípio: Arquivar produtos de falha antes de tentar novamente, facilitando análise comparativa.

Prática:

  • Cada falha é arquivada no subdiretório attempt-N/
  • Preservar produtos de múltiplas tentativas, facilitando comparação de diferenças
  • Usar git diff para comparar diferenças entre tentativas

5. Repetição Gradual

Princípio: Forneça orientações mais específicas na repetição, em vez de simplesmente repetir.

Prática:

markdown
# Primeira falha
Por favor, gere documento PRD.

# Segunda tentativa (fornecer orientação específica)
Por favor, corrija os seguintes problemas com base no PRD existente:
1. Excluir todos os detalhes técnicos (como React, API, etc.)
2. Reduzir quantidade de funcionalidades Must Have de 10 para 7
3. Adicionar persona específica para usuário-alvo
4. Complementar capítulo Non-Goals e definir limites claros

Resumo da Aula

O mecanismo de tratamento de falhas é a garantia de tolerância a falhas do AI App Factory, garantindo que o pipeline possa se recuperar automaticamente ou solicitar intervenção humana quando ocorrer erros.

Pontos-Chave:

  1. Definição de Falha: Saída ausente, conteúdo incompatível, gravação não autorizada, outras exceções
  2. Mecanismo de Repetição: Cada fase permite uma repetição automática, após segunda falha solicita intervenção humana
  3. Arquivamento de Falhas: Produtos de falha movidos para artifacts/_failed/<stage-id>/attempt-N/
  4. Estratégia de Rollback: Rollback para checkpoint de sucesso mais recente, garantindo consistência de produtos upstream e downstream
  5. Intervenção Humana: Após duas falhas consecutivas, analisar causas, corrigir problemas, reexecutar
  6. Logs de Erro: Relatórios de erro detalhados contêm timestamp, fase, tipo de erro, informações de stack, etapas de correção recomendadas
  7. Cenários Comuns: Cada fase tem erros comuns específicos e soluções

Próxima Aula

Na próxima aula vamos aprender Problemas Comuns e Solução de Problemas.

Você vai aprender:

  • Problemas comuns na fase de inicialização
  • Solução de problemas durante execução
  • Tratamento de problemas relacionados à implantação

Apêndice: Referência de Código-Fonte

Clique para expandir e ver localização do código-fonte

Última atualização: 2026-01-29

FuncionalidadeCaminho do ArquivoNúmero da Linha
Definição de Política de Falhassource/hyz1992/agent-app-factory/policies/failure.policy.md1-276
Tratamento de Falhas do Orquestradorsource/hyz1992/agent-app-factory/agents/orchestrator.checkpoint.md38-46
Matriz de Limites de Capacidadesource/hyz1992/agent-app-factory/policies/capability.matrix.md1-40

Definição de Falha (failure.policy.md:5-13):

  • Saída ausente: Arquivos de saída especificados em pipeline.yaml não existem ou nomes não correspondem
  • Não conforme com exit_criteria: Conteúdo de saída não atende condições de saída do Stage em pipeline.yaml
  • Gravação não autorizada: Agent gravou conteúdo em diretório ou arquivo não autorizado
  • Outras exceções: Erros de script, incapacidade de ler entrada, etc., impedindo conclusão da tarefa

Mecanismo de Repetição (failure.policy.md:16-18):

  • Cada Stage permite uma repetição automática por padrão
  • O orquestrador deve requerer que o Agent corrija problemas mantendo produtos existentes, em vez de refazer completamente
  • Se a segunda tentativa também falhar, o orquestrador deve pausar o pipeline e entrar no fluxo de intervenção humana

Rollback e Arquivamento (failure.policy.md:22-23):

  • Produtos de falha movidos para diretório artifacts/_failed/<stage-id>/
  • Rollback para checkpoint de sucesso mais recente, reexecutando a partir deste Stage

Intervenção Humana (failure.policy.md:27-29):

  • Quando o mesmo Stage falha duas vezes consecutivamente, o orquestrador deve pausar a execução e reportar a causa da falha
  • Após intervenção humana, pode modificar arquivos de entrada, ajustar habilidades ou modificar parâmetros, depois continuar a execução do processo restante
  • O orquestrador não deve pular fases com falha ou modificar saídas sem confirmação humana

Formato do Log de Erro (failure.policy.md:166-200):

  • Timestamp, Stage, Attempt, Status
  • Error Type, Error Message, Stack Trace
  • Exit Criteria Failed
  • Failed Artifacts Moved To
  • Recommended Action

Cenários Comuns de Falha (failure.policy.md:33-162):

  • Fase Bootstrap: Saída ausente, conteúdo incompleto, erro de formato
  • Fase PRD: Contém detalhes técnicos, funcionalidades em excesso, descrição de usuário vaga, faltando não-objetivos
  • Fase UI: Páginas em excesso, preview não abre, usa estilo AI, schema inválido
  • Fase Tech: Erro de sintaxe Prisma, over-engineering, modelos de dados em excesso, faltando definição de API
  • Fase Code: Falha na instalação de dependências, erro TypeScript, faltando arquivos necessários, falha nos testes, API não inicia
  • Fase Validation: Relatório de validação incompleto, problemas graves em excesso, problemas de segurança
  • Fase Preview: README incompleto, falha na construção Docker, configuração de implantação ausente

Fluxo de Tratamento de Falhas do Orquestrador (orchestrator.checkpoint.md:38-46):

  • Ler policies/failure.policy.md, executar conforme estratégia
  • Requerer que o Agent corrija problemas mantendo produtos existentes e tente novamente
  • Mover produtos de falha para diretório artifacts/_failed/<stage-id>/
  • Após duas falhas consecutivas, pausar o pipeline, reportar causa da falha e aguardar intervenção humana

Tratamento de Não Autorização (orchestrator.checkpoint.md:48-52):

  • Verificar se o caminho de saída está limitado apenas a diretórios autorizados
  • Se gravação não autorizada for detectada, mover este produto para artifacts/_untrusted/<stage-id>/
  • Pausar a execução e reportar

Árvore de Decisão de Intervenção Humana (failure.policy.md:204-236):

  • Primeira falha → Repetição automática → Repetição bem-sucedida? → Continuar / Segunda falha
  • Segunda falha → Analisar causa da falha → É problema de entrada? → Rollback para Stage upstream / Solicitar intervenção humana

Lista de Verificação de Recuperação de Falhas (failure.policy.md:240-263):

  • Verificação de ambiente: Versão Node.js, versão npm, espaço em disco, conexão de rede
  • Verificação de estado: .factory/state.json, produtos upstream Stage, arquivamento de produtos de falha
  • Confirmação de correção: Causa da falha, plano de correção, configurações relacionadas
  • Recuperação de execução: Recomeçar do Stage que falhou, monitorar logs, verificar produtos

Melhores Práticas (failure.policy.md:267-274):

  • Falha precoce: Descubra problemas o mais cedo possível, evitando desperdiçar tempo em fases subsequentes
  • Logs detalhados: Registre informações de contexto suficientes, facilitando investigação de problemas
  • Operações atômicas: A saída de cada fase deve ser atômica, facilitando rollback
  • Preservar evidências: Arquivar produtos de falha antes de tentar novamente, facilitando análise comparativa
  • Repetição gradual: Forneça orientações mais específicas na repetição, em vez de simplesmente repetir