QA Loop

Ciclo iterativo review-fix com max 5 iterações

17 min de leitura
workflowqaloop

QA Loop Workflow - Documentação Completa

Versão: 1.0 Última Atualização: 2026-02-04 Epic: 6 - QA Evolution: Autonomous Development Engine (ADE) Story: 6.5 Autor: @architect (Aria)


Índice

  1. Visao Geral
  2. Diagrama do Workflow
  3. Steps Detalhados
  4. Agentes Participantes
  5. Tasks Executadas
  6. Pré-requisitos
  7. Entradas e Saidas
  8. Pontos de Decisão
  9. Configuração
  10. Controle de Execução
  11. Escalação
  12. Integração com Dashboard
  13. Tratamento de Erros
  14. Troubleshooting
  15. Referências

Visão Geral

O QA Loop Orchestrator e um workflow automatizado que orquestra o ciclo completo de:

Review -> Fix -> Re-review

Este workflow executa ate um maximo de iterações configuravel (padrao: 5), rastreando os resultados de cada iteracao. Quando o limite maximo e atingido ou uma parada manual e solicitada, o workflow escala para intervenção humana.

Propósito

  • Automatizar o ciclo de revisao de qualidade
  • Reduzir tempo entre feedback e correção
  • Garantir rastreabilidade completa do processo de QA
  • Escalar automaticamente quando necessario

Tipos de Projeto Suportados

  • aiox-development
  • autonomous-development
  • qa-automation

Diagrama do Workflow

Fluxo Principal

flowchart TD
    subgraph TRIGGER["Triggers de Inicio"]
        T1["*qa-loop {storyId}"]
        T2["*qa-loop-review"]
        T3["*qa-loop-fix"]
    end

    subgraph INIT["Inicialização"]
        I1["Carregar/Criar loop-status.json"]
        I2["Definir iteration = 0"]
        I3["maxIterations = 5 (config)"]
    end

    subgraph REVIEW["Fase 1: QA Review"]
        R1["@qa executa qa-review-story.md"]
        R2["Gera gate-file.yaml"]
        R3["Retorna verdict + issuesFound"]
    end

    subgraph CHECK["Fase 2: Verificar Verdict"]
        C1{"verdict?"}
        C2["APPROVE"]
        C3["BLOCKED"]
        C4["REJECT"]
    end

    subgraph FIX_REQ["Fase 3: Criar Fix Request"]
        F1["@qa executa qa-create-fix-request.md"]
        F2["Gera fix-request.md"]
        F3["Prioriza issues"]
    end

    subgraph FIX["Fase 4: Aplicar Fixes"]
        X1["@dev executa dev-apply-qa-fixes.md"]
        X2["Aplica correções"]
        X3["Valida com testes"]
        X4["Gera fixes-applied.json"]
    end

    subgraph ITER["Fase 5: Verificar Iteração"]
        IT1{"iteration >= max?"}
        IT2["iteration++"]
    end

    subgraph END["Finalização"]
        E1["COMPLETE - Story Aprovada"]
        E2["ESCALATE - Requer Humano"]
        E3["Gerar Sumario Final"]
    end

    T1 --> I1
    T2 --> R1
    T3 --> X1

    I1 --> I2
    I2 --> I3
    I3 --> R1

    R1 --> R2
    R2 --> R3
    R3 --> C1

    C1 --> |"APPROVE"| C2
    C1 --> |"BLOCKED"| C3
    C1 --> |"REJECT"| C4

    C2 --> E1
    C3 --> E2

    C4 --> F1
    F1 --> F2
    F2 --> F3
    F3 --> X1

    X1 --> X2
    X2 --> X3
    X3 --> X4
    X4 --> IT1

    IT1 --> |"Sim"| E2
    IT1 --> |"Não"| IT2
    IT2 --> R1

    E1 --> E3
    E2 --> E3

    style TRIGGER fill:#e1f5fe
    style REVIEW fill:#fff3e0
    style CHECK fill:#fce4ec
    style FIX_REQ fill:#f3e5f5
    style FIX fill:#e8f5e9
    style ITER fill:#fff8e1
    style END fill:#e0f2f1

Diagrama de Estados

stateDiagram-v2
    [*] --> pending: *qa-loop {storyId}

    pending --> in_progress: Iniciar Loop

    in_progress --> in_progress: REJECT (iteration < max)
    in_progress --> completed: APPROVE
    in_progress --> escalated: BLOCKED
    in_progress --> escalated: Max Iterations
    in_progress --> stopped: *stop-qa-loop

    stopped --> in_progress: *resume-qa-loop
    escalated --> in_progress: *resume-qa-loop

    completed --> [*]
    escalated --> [*]: Intervencao Humana

Sequencia de Comunicação entre Agentes

sequenceDiagram
    participant U as Usuario
    participant S as System
    participant QA as @qa (Quinn)
    participant DEV as @dev (Dex)

    U->>S: *qa-loop STORY-42
    S->>S: Inicializar loop-status.json

    loop Ate max iterações ou APPROVE
        S->>QA: Executar qa-review-story.md
        QA->>QA: CodeRabbit Self-Healing
        QA->>QA: Análise Completa
        QA-->>S: verdict, issuesFound, gate-file

        alt verdict == APPROVE
            S-->>U: Story APROVADA
        else verdict == BLOCKED
            S-->>U: ESCALATE - Requer Humano
        else verdict == REJECT
            S->>QA: Executar qa-create-fix-request.md
            QA-->>S: fix-request.md, prioritizedIssues

            S->>DEV: Executar dev-apply-qa-fixes.md
            DEV->>DEV: Aplicar Fixes
            DEV->>DEV: Rodar Testes
            DEV-->>S: fixes-applied.json, issuesFixed

            S->>S: Incrementar iteration
        end
    end

    S-->>U: Sumario Final

Steps Detalhados

Step 1: Review (Fase 1)

| Atributo | Valor | |----------|-------| | Nome | review | | Fase | 1 - QA Review | | Agente | @qa (Quinn) | | Task | qa-review-story.md | | Timeout | 30 minutos (1.800.000 ms) |

Descrição: Executa revisao completa de QA da implementação da story, produzindo um verdict: APPROVE, REJECT ou BLOCKED.

Inputs:

storyId: "{storyId}"
iteration: "{currentIteration}"
previousIssues: "{history[-1].issuesFound|0}"

Outputs:

  • gate-file.yaml - Arquivo de gate com decisão
  • verdict - APPROVE | REJECT | BLOCKED
  • issuesFound - Numero de issues encontrados

On Success:

log: "Review complete: {verdict} ({issuesFound} issues)"
next: check_verdict

On Failure:

action: retry (max 2 tentativas)
on_exhausted: escalate

Step 2: Check Verdict (Fase 2)

| Atributo | Valor | |----------|-------| | Nome | check_verdict | | Fase | 2 - Verdict Check | | Agente | system |

Descrição: Avalia o verdict da revisao e determina a próxima acao.

Lógica de Decisão:

flowchart TD
    V{"verdict?"}

    V -->|"APPROVE"| A["Action: COMPLETE<br/>Story aprovada apos N iterações"]
    V -->|"BLOCKED"| B["Action: ESCALATE<br/>Requer intervenção humana"]
    V -->|"REJECT"| C["Action: CONTINUE<br/>Prosseguir para criar fix request"]

    style A fill:#c8e6c9
    style B fill:#ffcdd2
    style C fill:#fff9c4

Step 3: Create Fix Request (Fase 3)

| Atributo | Valor | |----------|-------| | Nome | create_fix_request | | Fase | 3 - Create Fix Request | | Agente | @qa (Quinn) | | Task | qa-create-fix-request.md |

Descrição: Gera um documento estruturado de fix request a partir dos findings da revisao. Prioriza issues e fornece instruções acionaveis de correção.

Inputs:

storyId: "{storyId}"
gateFile: "{outputs.review.gate-file}"
iteration: "{currentIteration}"

Outputs:

  • fix-request.md - Documento com issues priorizados
  • prioritizedIssues - Lista de issues ordenados por prioridade

On Success:

log: "Fix request created with {prioritizedIssues.length} prioritized issues"
next: fix_issues

On Failure:

action: continue
fallback: "Use raw gate file for fixes"

Step 4: Fix Issues (Fase 4)

| Atributo | Valor | |----------|-------| | Nome | fix_issues | | Fase | 4 - Apply Fixes | | Agente | @dev (Dex) | | Task | dev-apply-qa-fixes.md | | Timeout | 60 minutos (3.600.000 ms) |

Descrição: O agente desenvolvedor aplica as correções baseadas no fix request. Executa testes e valida as mudanças.

Inputs:

storyId: "{storyId}"
fixRequest: "{outputs.create_fix_request.fix-request}"
iteration: "{currentIteration}"

Outputs:

  • fixes-applied.json - Registro das correções aplicadas
  • issuesFixed - Numero de issues corrigidos

On Success:

log: "Fixed {issuesFixed} of {issuesFound} issues"
next: increment_iteration

On Failure:

action: retry (max 2 tentativas)
on_exhausted: escalate com razao "Dev agent unable to apply fixes after retries"

Step 5: Increment Iteration (Fase 5)

| Atributo | Valor | |----------|-------| | Nome | increment_iteration | | Fase | 5 - Check Iteration | | Agente | system |

Descrição: Incrementa o contador de iteracao e verifica contra o maximo. Se max atingido, escala para humano.

Lógica:

flowchart TD
    I{"iteration >= maxIterations?"}

    I -->|"Sim"| E["ESCALATE<br/>Max iterations reached without APPROVE"]
    I -->|"Não"| C["CONTINUE<br/>Voltar para Step 1 (review)<br/>iteration++"]

    style E fill:#ffcdd2
    style C fill:#c8e6c9

Agentes Participantes

@qa - Quinn (Test Architect)

Nome: Quinn
ID: qa
Titulo: Test Architect & Quality Advisor
Icone: ✅
Arquetipo: Guardian
Signo: Virgo

Responsabilidades no QA Loop:
  - Executar revisao completa de QA (qa-review-story.md)
  - Criar fix requests estruturados (qa-create-fix-request.md)
  - Determinar verdict: APPROVE, REJECT, BLOCKED
  - Gerar gate files com decisoes documentadas

Ferramentas Utilizadas:

| Ferramenta | Propósito | |------------|-----------| | github-cli | Code review e PR management | | browser | End-to-end testing e UI validation | | context7 | Research testing frameworks | | supabase | Database testing e data validation | | coderabbit | Automated code review |

Integração CodeRabbit:

self_healing:
  enabled: true
  type: full
  max_iterations: 3
  timeout_minutes: 30
  severity_filter: [CRITICAL, HIGH]
  behavior:
    CRITICAL: auto_fix
    HIGH: auto_fix
    MEDIUM: document_as_debt
    LOW: ignore

@dev - Dex (Full Stack Developer)

Nome: Dex
ID: dev
Titulo: Full Stack Developer
Icone: 💻
Arquetipo: Builder
Signo: Aquarius

Responsabilidades no QA Loop:
  - Aplicar correções baseadas em fix request (dev-apply-qa-fixes.md)
  - Executar testes para validar correções
  - Atualizar Dev Agent Record na story
  - Garantir que fixes nao quebrem funcionalidades existentes

Ferramentas Utilizadas:

| Ferramenta | Propósito | |------------|-----------| | git | Local operations: add, commit, status, diff | | context7 | Look up library documentation | | supabase | Database operations | | browser | Test web applications | | coderabbit | Pre-commit code quality review |


System Agent

Tipo: Automatico
Responsabilidades:
  - Verificar verdicts
  - Incrementar iterações
  - Controlar fluxo do workflow
  - Gerenciar status do loop

Tasks Executadas

1. qa-review-story.md

Localização: .aiox-core/development/tasks/qa-review-story.md

Propósito: Realizar revisao arquitetural de testes com decisão de quality gate.

Processo de Revisao:

flowchart TD
    subgraph PRE["Pre-Review"]
        P1["CodeRabbit Self-Healing Loop"]
        P2["Max 3 iterações CRITICAL/HIGH"]
    end

    subgraph RISK["Avaliação de Risco"]
        R1["Auth/Payment/Security?"]
        R2["Sem testes adicionados?"]
        R3["Diff > 500 linhas?"]
        R4["Gate anterior FAIL?"]
        R5["> 5 ACs?"]
    end

    subgraph ANALYSIS["Análise Completa"]
        A1["Requirements Traceability"]
        A2["Code Quality Review"]
        A3["Test Architecture Assessment"]
        A4["NFR Validation"]
        A5["Testability Evaluation"]
        A6["Technical Debt Identification"]
    end

    subgraph OUTPUT["Saidas"]
        O1["QA Results Section"]
        O2["gate-file.yaml"]
    end

    PRE --> RISK
    RISK --> ANALYSIS
    ANALYSIS --> OUTPUT

Critérios de Gate:

| Gate | Condição | |------|----------| | PASS | Todos requisitos criticos atendidos, sem issues bloqueantes | | CONCERNS | Issues nao-criticos encontrados, time deve revisar | | FAIL | Issues criticos que devem ser enderecados | | WAIVED | Issues reconhecidos mas explicitamente waived pelo time |


2. qa-create-fix-request.md

Localização: .aiox-core/development/tasks/qa-create-fix-request.md

Propósito: Gerar documento estruturado QA_FIX_REQUEST.md para @dev baseado nos findings de QA.

Workflow:

flowchart LR
    subgraph LOAD["Fase 1: Carregar"]
        L1["Localizar QA Report"]
        L2["Parse metadata"]
    end

    subgraph EXTRACT["Fase 2: Extrair"]
        E1["Filtrar por severidade"]
        E2["CRITICAL: sempre"]
        E3["MAJOR: sempre"]
        E4["MINOR: opcional"]
    end

    subgraph GENERATE["Fase 3: Gerar"]
        G1["Criar QA_FIX_REQUEST.md"]
        G2["Template estruturado"]
    end

    subgraph NOTIFY["Fase 4: Notificar"]
        N1["Output sucesso"]
        N2["Proximos passos @dev"]
    end

    LOAD --> EXTRACT --> GENERATE --> NOTIFY

Estrutura do Fix Request:

# QA Fix Request: {storyId}

## Instructions for @dev
- Fix ONLY the issues listed below
- Do not add features or refactor unrelated code

## Summary
| Severity | Count | Status |
|----------|-------|--------|
| CRITICAL | N | Must fix before merge |
| MAJOR | N | Should fix before merge |
| MINOR | N | Optional improvements |

## Issues to Fix
### 1. [CRITICAL] {title}
- Location: `{file:line}`
- Problem: {description}
- Expected: {expected}
- Verification: [ ] {steps}

## Constraints
- [ ] Fix ONLY listed issues
- [ ] Run all tests: `npm test`
- [ ] Run linting: `npm run lint`

3. dev-apply-qa-fixes.md

Localização: .aiox-core/development/tasks/dev-apply-qa-fixes.md

Propósito: Aplicar fixes baseados no feedback de QA e gate review.

Workflow do Developer:

flowchart TD
    subgraph LOAD["1. Carregar Gate Report"]
        L1["Carregar gate file"]
        L2["Ou buscar referencia na story"]
    end

    subgraph REVIEW["2. Revisar Findings"]
        R1["Categorizar issues"]
        R2["BLOCKING: Must fix"]
        R3["WARNING: Should fix"]
        R4["RECOMMENDATION: Nice to have"]
    end

    subgraph PLAN["3. Criar Plano"]
        P1["Identificar arquivos afetados"]
        P2["Determinar root cause"]
        P3["Planejar approach"]
    end

    subgraph FIX["4. Aplicar Fixes"]
        F1["Fazer mudanças"]
        F2["Seguir coding standards"]
        F3["Atualizar testes"]
    end

    subgraph VALIDATE["5. Validacao"]
        V1["npm run lint"]
        V2["npm test"]
        V3["npm run typecheck"]
    end

    subgraph UPDATE["6. Atualizar Story"]
        U1["Dev Agent Record"]
        U2["File List"]
    end

    LOAD --> REVIEW --> PLAN --> FIX --> VALIDATE --> UPDATE

Exit Criteria:

  • Todos issues BLOCKING resolvidos
  • Todos testes passando (lint, unit, integration)
  • Story file atualizado
  • Código pronto para re-review

Pré-requisitos

Para Iniciar o QA Loop

| Requisito | Descrição | |-----------|-----------| | Story Status | Deve estar em "Review" | | Implementacao Completa | Developer completou todas as tasks | | File List Atualizada | Lista de arquivos no story file esta atual | | Testes Automatizados | Todos testes automatizados passando | | CodeRabbit Configurado | CLI instalado no WSL (opcional mas recomendado) |

Configuração do Ambiente

# Verificar CodeRabbit
wsl bash -c '~/.local/bin/coderabbit auth status'

# Verificar Node.js
node --version  # >= 18

# Verificar dependencias
npm test        # Deve passar
npm run lint    # Deve passar

Entradas e Saidas

Entradas do Workflow

| Campo | Tipo | Obrigatório | Descrição | |-------|------|-------------|-----------| | storyId | string | Sim | Identificador da story (ex: "STORY-42") | | maxIterations | number | Não | Override do max (default: 5) | | mode | string | Não | yolo, interactive, preflight |

Saidas do Workflow

| Arquivo | Localização | Descrição | |---------|-------------|-----------| | loop-status.json | qa/loop-status.json | Status atual do loop | | gate-file.yaml | qa/gates/{storyId}.yaml | Decisão de quality gate | | fix-request.md | qa/QA_FIX_REQUEST.md | Documento de correções | | fixes-applied.json | qa/fixes-applied.json | Registro de correções | | summary.md | qa/summary.md | Sumario final do loop |

Schema do Status File

storyId: string              # ID da story
currentIteration: number     # Iteração atual
maxIterations: number        # Maximo configurado
status: enum                 # pending | in_progress | completed | stopped | escalated
startedAt: ISO-8601          # Timestamp de inicio
updatedAt: ISO-8601          # Ultima atualizacao

history:
  - iteration: number
    reviewedAt: ISO-8601
    verdict: APPROVE | REJECT | BLOCKED
    issuesFound: number
    fixedAt: ISO-8601 | null
    issuesFixed: number | null
    duration: number         # milliseconds

Pontos de Decisão

Diagrama de Decisoes

flowchart TD
    subgraph D1["Decisão 1: Verdict"]
        V1{"Qual o verdict?"}
        V1 -->|"APPROVE"| V1A["Completar Loop"]
        V1 -->|"BLOCKED"| V1B["Escalar Imediatamente"]
        V1 -->|"REJECT"| V1C["Continuar para Fixes"]
    end

    subgraph D2["Decisão 2: Max Iterations"]
        I1{"iteration >= max?"}
        I1 -->|"Sim"| I1A["Escalar: Max Atingido"]
        I1 -->|"Não"| I1B["Incrementar e Continuar"]
    end

    subgraph D3["Decisão 3: Fix Failure"]
        F1{"Fixes aplicados?"}
        F1 -->|"Sucesso"| F1A["Prosseguir para Review"]
        F1 -->|"Falha"| F1B{"Retries restantes?"}
        F1B -->|"Sim"| F1C["Retry"]
        F1B -->|"Não"| F1D["Escalar: Fix Failure"]
    end

    subgraph D4["Decisão 4: Review Failure"]
        R1{"Review completou?"}
        R1 -->|"Sucesso"| R1A["Processar Verdict"]
        R1 -->|"Falha"| R1B{"Retries restantes?"}
        R1B -->|"Sim"| R1C["Retry Review"]
        R1B -->|"Não"| R1D["Escalar: Review Failure"]
    end

Critérios de Escalação

| Trigger | Razao | Ação | |---------|-------|------| | max_iterations_reached | Loop atingiu max sem APPROVE | Escalar com contexto completo | | verdict_blocked | QA retornou BLOCKED | Escalar imediatamente | | fix_failure | @dev nao conseguiu aplicar fixes apos retries | Escalar com log de erros | | manual_escalate | Usuario executou *escalate-qa-loop | Escalar sob demanda |


Configuração

Parametros Configuraveis

config:
  # Maximo de iterações (AC2)
  maxIterations: 5
  configPath: autoClaude.qaLoop.maxIterations

  # Progress tracking
  showProgress: true
  verbose: true

  # Localização do status file (AC4)
  statusFile: qa/loop-status.json

  # Integração com Dashboard (AC7)
  dashboardStatusPath: .aiox/dashboard/status.json
  legacyStatusPath: .aiox/status.json

  # Timeout por fase (milliseconds)
  reviewTimeout: 1800000    # 30 minutos
  fixTimeout: 3600000       # 60 minutos

  # Configuração de retry
  maxRetries: 2
  retryDelay: 5000          # 5 segundos

Customizacao por Projeto

No arquivo .aiox-core/core-config.yaml:

autoClaude:
  qaLoop:
    maxIterations: 3        # Reduzir para projetos menores
    reviewTimeout: 900000   # 15 min para reviews rapidos
    fixTimeout: 1800000     # 30 min para fixes simples

Controle de Execução

Comandos Disponiveis

| Comando | Ação | Descrição | |---------|------|-----------| | *qa-loop {storyId} | start_loop | Inicia loop completo | | *qa-loop-review | run_step: review | Inicia apenas do step review | | *qa-loop-fix | run_step: fix | Inicia apenas do step fix | | *stop-qa-loop | stop_loop | Para loop e salva estado | | *resume-qa-loop | resume_loop | Retoma loop parado/escalado | | *escalate-qa-loop | escalate | Forca escalacao manual | | *qa-loop --reset | reset | Deleta status e reinicia |

Fluxo de Stop/Resume

sequenceDiagram
    participant U as Usuario
    participant S as System
    participant F as loop-status.json

    Note over U,F: STOP
    U->>S: *stop-qa-loop
    S->>F: status = "stopped"
    S->>F: Salvar estado atual
    S-->>U: Loop parado em iteration N

    Note over U,F: RESUME
    U->>S: *resume-qa-loop
    S->>F: Carregar estado
    S->>S: Verificar status era stopped/escalated
    S->>F: status = "in_progress"
    S-->>U: Loop retomado em iteration N

Escalação

Triggers de Escalação

escalation:
  enabled: true
  triggers:
    - max_iterations_reached
    - verdict_blocked
    - fix_failure
    - manual_escalate

Pacote de Contexto

Quando ocorre escalacao, o sistema prepara:

| Item | Descrição | |------|-----------| | loop-status.json | Status completo do loop | | Gate files | Todos gate files do historico | | Fix requests | Todos fix requests gerados | | Summary | Resumo de todas iterações |

Mensagem de Notificação

QA Loop Escalation for {storyId}

Reason: {escalation.reason}
Iterations completed: {currentIteration}
Last verdict: {history[-1].verdict}
Outstanding issues: {history[-1].issuesFound - history[-1].issuesFixed}

Review the context package and decide:
1. Resume loop: *resume-qa-loop {storyId}
2. Manually fix and approve
3. Reject story and create follow-up

Canais de Notificação

  • log - Log do sistema
  • console - Output no terminal

Integração com Dashboard

Status JSON Schema

integration:
  status_json:
    track_loop: true
    field: qaLoop
    update_on_each_iteration: true

    schema:
      storyId: string
      status: string
      currentIteration: number
      maxIterations: number
      lastVerdict: string
      lastIssuesFound: number
      updatedAt: ISO-8601

Atualização de Status do Projeto

project_status:
  update_story_status: true
  status_field: qaLoopStatus

Notificações

| Evento | Mensagem | Canais | |--------|----------|--------| | on_approve | "QA Loop APPROVED: {storyId}" | log | | on_escalate | "QA Loop ESCALATED: {storyId} - needs attention" | log | | on_stop | "QA Loop STOPPED: {storyId}" | log |


Tratamento de Erros

Erros Comuns e Resoluções

| Erro | Causa | Resolução | Ação | |------|-------|-----------|------| | missing_story_id | Story ID nao fornecido | "Usage: *qa-loop STORY-42" | prompt | | review_timeout | Fase de review excedeu timeout | Verificar status do QA agent | escalate | | fix_timeout | Fase de fix excedeu timeout | Verificar status do Dev agent | escalate | | invalid_status | Arquivo de status corrompido | "Reset loop: *qa-loop {storyId} --reset" | halt |

Estrategias de Retry

on_failure:
  action: retry
  max_retries: 2              # Maximo de tentativas
  retryDelay: 5000            # Delay entre tentativas
  on_exhausted: escalate      # Ação quando retries esgotados

Troubleshooting

Problema: Loop Travado em Review

Sintomas:

  • Review nao completa apos 30 minutos
  • Status permanece "in_progress"

Diagnóstico:

# Verificar status do loop
cat qa/loop-status.json | jq '.status, .currentIteration'

# Verificar ultimo gate file
ls -la qa/gates/

Solução:

  1. Executar *stop-qa-loop
  2. Verificar se CodeRabbit esta respondendo
  3. Executar *resume-qa-loop para retomar

Problema: Fix Não Aplicado

Sintomas:

  • @dev reporta sucesso mas issues persistem
  • Re-review encontra mesmos problemas

Diagnóstico:

# Verificar fix request
cat qa/QA_FIX_REQUEST.md

# Verificar fixes aplicados
cat qa/fixes-applied.json

Solução:

  1. Revisar manualmente o fix-request.md
  2. Verificar se @dev atualizou os arquivos corretos
  3. Rodar testes localmente antes de re-review

Problema: Max Iterations Atingido

Sintomas:

  • Loop escala apos 5 iterações sem APPROVE

Diagnóstico:

# Ver historico completo
cat qa/loop-status.json | jq '.history'

Solução:

  1. Analisar pattern de issues recorrentes
  2. Verificar se requisitos estao claros
  3. Considerar aumentar maxIterations ou resolver manualmente

Problema: CodeRabbit Não Funciona

Sintomas:

  • Erro "coderabbit: command not found"
  • Timeout na fase de self-healing

Diagnóstico:

# Verificar instalacao
wsl bash -c 'which coderabbit'

# Verificar autenticacao
wsl bash -c '~/.local/bin/coderabbit auth status'

Solução:

  1. Reinstalar CodeRabbit no WSL
  2. Executar coderabbit auth login
  3. Verificar path no agent config

Problema: Status File Corrompido

Sintomas:

  • Erro "invalid_status"
  • Loop nao inicia ou retoma

Solução:

# Backup do arquivo corrompido
mv qa/loop-status.json qa/loop-status.json.bak

# Reiniciar loop
*qa-loop {storyId} --reset

Referências

Arquivos do Workflow

| Arquivo | Localização | |---------|-------------| | Workflow Definition | .aiox-core/development/workflows/qa-loop.yaml | | QA Review Task | .aiox-core/development/tasks/qa-review-story.md | | Create Fix Request Task | .aiox-core/development/tasks/qa-create-fix-request.md | | Apply QA Fixes Task | .aiox-core/development/tasks/dev-apply-qa-fixes.md | | QA Agent | .aiox-core/development/agents/qa.md | | Dev Agent | .aiox-core/development/agents/dev.md |

Documentação Relacionada

| Documento | Descrição | |-----------|-----------| | Epic 6 - QA Evolution | Contexto do Autonomous Development Engine | | Story 6.5 | Story de implementação do QA Loop | | Story 6.3.3 | CodeRabbit Self-Healing Integration | | ADR-XXX | Architecture Decision Record (se existir) |

Templates

| Template | Localização | Uso | |----------|-------------|-----| | qa-gate-tmpl.yaml | .aiox-core/development/templates/ | Gate file structure | | story-tmpl.yaml | .aiox-core/development/templates/ | Story file structure |


Historico de Alterações

| Data | Versao | Autor | Mudanças | |------|--------|-------|----------| | 2026-02-04 | 1.0 | Technical Documentation Specialist | Versao inicial |


Documentação gerada automaticamente a partir do workflow qa-loop.yaml

Falar com o Time