Spec Pipeline

Requisitos vagos → specs executáveis em 6 fases

19 min de leitura
workflowspecrequisitos

Spec Pipeline Workflow - Documentação Completa

Versão: 1.0 Criado: 2026-01-28 Autor: @architect (Aria) Epic: Epic 3 - Spec Pipeline Status: Ativo


1. Visão Geral

O Spec Pipeline e um workflow orquestrado que transforma requisitos informais em especificações executaveis. Ele e parte da infraestrutura Auto-Claude ADE (Autonomous Development Engine) e implementa um fluxo de 5 fases principais que se adaptam dinamicamente baseado na complexidade do requisito.

1.1 Propósito

  • Transformar descricoes informais de usuarios em especificações formais e estruturadas
  • Garantir qualidade e consistencia atraves de gates de validação
  • Adaptar o nivel de profundidade baseado na complexidade detectada
  • Produzir artefatos rastreavies desde requisitos ate implementação

1.2 Principios Fundamentais

| Principio | Descrição | |-----------|-----------| | No Invention | Nenhuma informação inventada - apenas derivação dos inputs | | Traceability | Todo statement deve rastrear para um requisito ou pesquisa | | Adaptive Phases | Fases ajustadas automaticamente pela complexidade | | Quality Gates | Validacao obrigatoria antes de avancar |


2. Diagrama do Workflow

2.1 Fluxo Principal

flowchart TB
    subgraph TRIGGER["Gatilhos"]
        T1["*create-spec STORY-ID"]
        T2["story_created<br/>(autoSpec.enabled)"]
    end

    subgraph PREFLIGHT["Pre-Flight Checks"]
        PF1["story_exists<br/>Verificar/criar diretorio"]
        PF2["no_existing_spec<br/>Evitar sobrescrita"]
        PF3["agents_available<br/>Verificar configuracao"]
    end

    subgraph PHASE1["Fase 1: Gather Requirements"]
        direction TB
        G1["@pm (Morgan)"]
        G2["Elicitação Interativa<br/>9 categorias de perguntas"]
        G3["requirements.json"]
        G1 --> G2 --> G3
    end

    subgraph PHASE2["Fase 2: Assess Complexity"]
        direction TB
        A1["@architect (Aria)"]
        A2["Avaliar 5 dimensoes:<br/>Scope, Integration, Infra,<br/>Knowledge, Risk"]
        A3["complexity.json<br/>SIMPLE | STANDARD | COMPLEX"]
        A1 --> A2 --> A3
    end

    subgraph PHASE3["Fase 3: Research Dependencies"]
        direction TB
        R1["@analyst (Atlas)"]
        R2["Context7 + EXA<br/>Validar dependencias"]
        R3["research.json"]
        R1 --> R2 --> R3
    end

    subgraph PHASE4["Fase 4: Write Specification"]
        direction TB
        W1["@pm (Morgan)"]
        W2["Gerar spec.md<br/>Sem invencao"]
        W3["spec.md"]
        W1 --> W2 --> W3
    end

    subgraph PHASE5["Fase 5: Critique Specification"]
        direction TB
        C1["@qa (Quinn)"]
        C2["Avaliar 5 dimensoes:<br/>Accuracy, Completeness,<br/>Consistency, Feasibility,<br/>Alignment"]
        C3{"Verdict"}
        C4["APPROVED"]
        C5["NEEDS_REVISION"]
        C6["BLOCKED"]
        C1 --> C2 --> C3
        C3 --> C4
        C3 --> C5
        C3 --> C6
    end

    subgraph PHASE5B["Fase 5b: Revise (COMPLEX)"]
        REV1["@pm (Morgan)"]
        REV2["Aplicar feedback<br/>e auto-fixes"]
    end

    subgraph PHASE6["Fase 6: Create Plan"]
        direction TB
        P1["@architect (Aria)"]
        P2["Gerar implementation.yaml<br/>Subtasks atomicas"]
        P3["plan.json"]
        P1 --> P2 --> P3
    end

    subgraph COMPLETION["Conclusão"]
        DONE["Pipeline Complete"]
        ARTIFACTS["Artefatos Gerados"]
    end

    T1 --> PREFLIGHT
    T2 --> PREFLIGHT
    PREFLIGHT --> PHASE1
    PHASE1 --> PHASE2
    PHASE2 --> PHASE3
    PHASE3 --> PHASE4
    PHASE4 --> PHASE5
    C4 --> PHASE6
    C5 --> PHASE5B
    PHASE5B --> PHASE5
    C6 -.-> |"Escalar para @architect"| HALT["HALT"]
    PHASE6 --> COMPLETION

    style TRIGGER fill:#e1f5fe
    style PREFLIGHT fill:#fff3e0
    style PHASE1 fill:#e8f5e9
    style PHASE2 fill:#fce4ec
    style PHASE3 fill:#f3e5f5
    style PHASE4 fill:#e8f5e9
    style PHASE5 fill:#fff8e1
    style PHASE5B fill:#ffebee
    style PHASE6 fill:#e0f2f1
    style COMPLETION fill:#c8e6c9

2.2 Fluxo por Complexidade

flowchart LR
    subgraph SIMPLE["SIMPLE (score <= 8)"]
        S1["Gather"] --> S2["Spec"] --> S3["Critique"]
    end

    subgraph STANDARD["STANDARD (score 9-15)"]
        ST1["Gather"] --> ST2["Assess"] --> ST3["Research"] --> ST4["Spec"] --> ST5["Critique"] --> ST6["Plan"]
    end

    subgraph COMPLEX["COMPLEX (score >= 16)"]
        C1["Gather"] --> C2["Assess"] --> C3["Research"] --> C4["Spec"] --> C5["Critique 1"] --> C6["Revise"] --> C7["Critique 2"] --> C8["Plan"]
    end

    style SIMPLE fill:#c8e6c9
    style STANDARD fill:#fff9c4
    style COMPLEX fill:#ffcdd2

2.3 Diagrama de Sequência

sequenceDiagram
    autonumber
    participant U as Usuario
    participant PM as @pm (Morgan)
    participant AR as @architect (Aria)
    participant AN as @analyst (Atlas)
    participant QA as @qa (Quinn)
    participant FS as File System

    U->>PM: *create-spec STORY-42

    Note over PM: Fase 1: Gather
    PM->>U: Perguntas de elicitacao (9 categorias)
    U->>PM: Respostas dos requisitos
    PM->>FS: Salvar requirements.json

    Note over AR: Fase 2: Assess
    AR->>FS: Ler requirements.json
    AR->>AR: Avaliar 5 dimensoes de complexidade
    AR->>FS: Salvar complexity.json

    alt Complexidade != SIMPLE
        Note over AN: Fase 3: Research
        AN->>FS: Ler requirements + complexity
        AN->>AN: Pesquisar via Context7 + EXA
        AN->>FS: Salvar research.json
    end

    Note over PM: Fase 4: Write Spec
    PM->>FS: Ler todos os artefatos
    PM->>PM: Gerar spec.md (sem invencao)
    PM->>FS: Salvar spec.md

    Note over QA: Fase 5: Critique
    QA->>FS: Ler spec + requirements
    QA->>QA: Avaliar 5 dimensoes de qualidade
    QA->>FS: Salvar critique.json

    alt Verdict = APPROVED
        Note over AR: Fase 6: Plan
        AR->>FS: Ler spec aprovado
        AR->>AR: Gerar plano de implementação
        AR->>FS: Salvar plan.json
        AR->>U: Pipeline Complete!
    else Verdict = NEEDS_REVISION
        QA->>PM: Retornar com feedback
        PM->>PM: Aplicar correcoes
        PM->>QA: Submeter revisao
    else Verdict = BLOCKED
        QA->>AR: Escalar para revisao arquitetural
    end

3. Steps Detalhados

3.1 Fase 1: Gather Requirements

| Atributo | Valor | |----------|-------| | Step ID | gather | | Phase Number | 1 | | Agente | @pm (Morgan) | | Task | spec-gather-requirements.md | | Elicit | Sim - requer interação do usuario |

Inputs

| Input | Tipo | Obrigatório | Descrição | |-------|------|-------------|-----------| | storyId | string | Sim | ID da story sendo especificada | | source | enum | Não | Fonte: prd, user, existing | | prdPath | string | Não | Caminho para PRD se source=prd |

Outputs

| Output | Localização | |--------|-------------| | requirements.json | docs/stories/{storyId}/spec/requirements.json |

Processo de Elicitação (9 Categorias)

mindmap
  root((Elicitação))
    Funcionais
      Q1: O que o sistema deve FAZER?
      Follow-ups sobre usuarios e triggers
    Restrições
      Q2: Restrições tecnicas/negocio?
      Tempo, integrações, stack
    NFR
      Q3: Requisitos nao-funcionais?
      Performance, seguranca, escala
    Aceite
      Q4: Criterios de aceite?
      Formato Given-When-Then
    Suposições
      Q5: Suposições assumidas?
      Riscos se estiverem erradas
    Dominio
      Q6: Entidades e relacionamentos?
      Modelo de dominio
    Interação
      Q7: Como usuario interage?
      Fluxos UX, estados
    Edge Cases
      Q8: O que pode dar errado?
      Tratamento de erros
    Terminologia
      Q9: Glossario do dominio?
      Termos especificos

Estrutura do Output (requirements.json)

{
  "storyId": "STORY-42",
  "gatheredAt": "2026-01-28T10:00:00Z",
  "source": "user",
  "gatheredBy": "@pm",
  "elicitationVersion": "2.0",
  "functional": [
    {
      "id": "FR-1",
      "description": "Permitir login com Google OAuth",
      "priority": "P0",
      "rationale": "Principal metodo de autenticação",
      "acceptance": ["AC-1"]
    }
  ],
  "nonFunctional": [...],
  "constraints": [...],
  "assumptions": [...],
  "domainModel": [...],
  "interactions": [...],
  "edgeCases": [...],
  "terminology": [...],
  "openQuestions": [...]
}

3.2 Fase 2: Assess Complexity

| Atributo | Valor | |----------|-------| | Step ID | assess | | Phase Number | 2 | | Agente | @architect (Aria) | | Task | spec-assess-complexity.md | | Skip Condition | source === 'simple' OR overrideComplexity === 'SIMPLE' |

Inputs

| Input | Tipo | Obrigatório | Descrição | |-------|------|-------------|-----------| | storyId | string | Sim | ID da story | | requirements | file | Sim | requirements.json | | overrideComplexity | enum | Não | Override manual: SIMPLE, STANDARD, COMPLEX |

Outputs

| Output | Localização | |--------|-------------| | complexity.json | docs/stories/{storyId}/spec/complexity.json |

5 Dimensões de Complexidade

radar
    title Dimensões de Complexidade (1-5)
    "Scope" : 3
    "Integration" : 4
    "Infrastructure" : 2
    "Knowledge" : 3
    "Risk" : 3

| Dimensão | Score 1 | Score 3 | Score 5 | |----------|---------|---------|---------| | Scope | 1-2 arquivos | 6-10 arquivos | 20+ arquivos | | Integration | Nenhuma externa | 1-2 APIs externas | Orquestração multipla | | Infrastructure | Nenhuma mudança | Nova dependencia | Nova infraestrutura | | Knowledge | Padroes existentes | Nova biblioteca | Dominio desconhecido | | Risk | Baixo, isolado | Medio, importante | Critico, core do sistema |

Thresholds de Classificação

| Classificação | Score Total | Fases Ativadas | Tempo Estimado | |---------------|-------------|----------------|----------------| | SIMPLE | <= 8 | gather, spec, critique | 30-60 min | | STANDARD | 9-15 | gather, assess, research, spec, critique, plan | 2-4 horas | | COMPLEX | >= 16 | + revise, critique_2 | 4-8 horas |


3.3 Fase 3: Research Dependencies

| Atributo | Valor | |----------|-------| | Step ID | research | | Phase Number | 3 | | Agente | @analyst (Atlas) | | Task | spec-research-dependencies.md | | Skip Condition | complexity.result === 'SIMPLE' | | Tools | Context7, EXA |

Inputs

| Input | Tipo | Obrigatório | Descrição | |-------|------|-------------|-----------| | storyId | string | Sim | ID da story | | requirements | file | Sim | requirements.json | | complexity | file | Sim | complexity.json |

Outputs

| Output | Localização | |--------|-------------| | research.json | docs/stories/{storyId}/spec/research.json |

Fluxo de Pesquisa

flowchart LR
    subgraph Extract["1. Extrair Alvos"]
        E1["Libraries<br/>APIs<br/>Concepts<br/>Infrastructure"]
    end

    subgraph Check["2. Verificar Codebase"]
        C1["package.json"]
        C2["imports existentes"]
        C3["padroes similares"]
    end

    subgraph Research["3. Pesquisar"]
        R1["Context7<br/>(Primario)"]
        R2["EXA<br/>(Fallback)"]
    end

    subgraph Validate["4. Validar"]
        V1["technical-preferences.md"]
        V2["Conflitos?<br/>Alternativas?"]
    end

    subgraph Output["5. Output"]
        O1["research.json"]
    end

    Extract --> Check --> Research --> Validate --> Output

    style Research fill:#e3f2fd

Prioridade de Ferramentas

| Ferramenta | Prioridade | Timeout | Uso | |------------|------------|---------|-----| | Context7 | 1 (primaria) | 30s | Documentação de bibliotecas | | EXA | 2 (fallback) | - | Pesquisa web geral | | Codebase | - | - | Verificar implementações existentes |


3.4 Fase 4: Write Specification

| Atributo | Valor | |----------|-------| | Step ID | spec | | Phase Number | 4 | | Agente | @pm (Morgan) | | Task | spec-write-spec.md | | Constitutional Gate | Article IV - No Invention |

Inputs

| Input | Tipo | Obrigatório | Descrição | |-------|------|-------------|-----------| | storyId | string | Sim | ID da story | | requirements | file | Sim | requirements.json | | complexity | file | Não | complexity.json | | research | file | Não | research.json |

Outputs

| Output | Localização | |--------|-------------| | spec.md | docs/stories/{storyId}/spec/spec.md |

Constitutional Gate: No Invention

flowchart TB
    subgraph RULE["Regra Article IV - No Invention"]
        direction TB
        R1["Todo statement DEVE rastrear para:"]
        R2["FR-* (Requisito Funcional)"]
        R3["NFR-* (Requisito Não-Funcional)"]
        R4["CON-* (Restrição)"]
        R5["Research finding verificado"]
    end

    subgraph VIOLATION["Violações"]
        V1["Adicionar features nao listadas"]
        V2["Assumir detalhes nao pesquisados"]
        V3["Especificar tech nao validada"]
        V4["Criar criterios de aceite inventados"]
    end

    subgraph ACTION["Ação em Violacao"]
        A1["BLOCK"]
        A2["Remover conteudo inventado"]
        A3["OU adicionar a Open Questions"]
    end

    RULE --> |"Se violado"| VIOLATION
    VIOLATION --> ACTION

    style RULE fill:#c8e6c9
    style VIOLATION fill:#ffcdd2
    style ACTION fill:#fff9c4

Estrutura do spec.md

1. Overview
   1.1 Goals
   1.2 Non-Goals
2. Requirements Summary
   2.1 Functional Requirements
   2.2 Non-Functional Requirements
   2.3 Constraints
3. Technical Approach
   3.1 Architecture Overview
   3.2 Component Design
   3.3 Data Flow
4. Dependencies
   4.1 External Dependencies
   4.2 Internal Dependencies
5. Files to Modify/Create
   5.1 New Files
   5.2 Modified Files
6. Testing Strategy
   6.1 Unit Tests
   6.2 Integration Tests
   6.3 Acceptance Tests (Given-When-Then)
7. Risks & Mitigations
8. Open Questions
9. Implementation Checklist

3.5 Fase 5: Critique Specification

| Atributo | Valor | |----------|-------| | Step ID | critique | | Phase Number | 5 | | Agente | @qa (Quinn) | | Task | spec-critique.md | | Gate | Blocking (APPROVED/NEEDS_REVISION/BLOCKED) |

Inputs

| Input | Tipo | Obrigatório | Descrição | |-------|------|-------------|-----------| | storyId | string | Sim | ID da story | | spec | file | Sim | spec.md | | requirements | file | Sim | requirements.json | | complexity | file | Não | complexity.json | | research | file | Não | research.json |

Outputs

| Output | Localização | |--------|-------------| | critique.json | docs/stories/{storyId}/spec/critique.json |

5 Dimensões de Qualidade

pie showData
    title Peso das Dimensões
    "Accuracy" : 25
    "Completeness" : 25
    "Consistency" : 20
    "Feasibility" : 15
    "Alignment" : 15

| Dimensão | Peso | Verifica | |----------|------|----------| | Accuracy | 25% | Spec reflete requisitos corretamente? | | Completeness | 25% | Todas secoes preenchidas? Tests cobrem FRs? | | Consistency | 20% | IDs validos? Sem contradicoes? | | Feasibility | 15% | Tecnicamente possivel? Dependencias existem? | | Alignment | 15% | Alinhado com stack e padroes do projeto? |

Lógica de Verdict

flowchart TB
    START["Iniciar Avaliacao"] --> EVAL["Avaliar 5 Dimensões"]

    EVAL --> CHECK1{"HIGH severity<br/>issues?"}
    CHECK1 -->|Sim| BLOCKED["BLOCKED"]
    CHECK1 -->|Não| CHECK2{"Average<br/>score >= 4.0?"}

    CHECK2 -->|Sim| CHECK3{"Todas dimensoes<br/>>= 3?"}
    CHECK3 -->|Sim| APPROVED["APPROVED"]
    CHECK3 -->|Não| NEEDS["NEEDS_REVISION"]

    CHECK2 -->|Não| CHECK4{"Average<br/>score >= 3.0?"}
    CHECK4 -->|Sim| NEEDS
    CHECK4 -->|Não| BLOCKED

    APPROVED --> PLAN["Ir para Fase 6: Plan"]
    NEEDS --> REVISE["Retornar para Fase 4"]
    BLOCKED --> HALT["HALT + Escalar @architect"]

    style APPROVED fill:#c8e6c9
    style NEEDS fill:#fff9c4
    style BLOCKED fill:#ffcdd2

| Verdict | Condição | Próxima Ação | |---------|----------|--------------| | APPROVED | No HIGH issues, avg >= 4.0, all >= 3 | Ir para Plan | | NEEDS_REVISION | MEDIUM issues OR avg 3.0-3.9 | Retornar para Spec Write | | BLOCKED | HIGH issues OR avg < 3.0 OR any <= 1 | Escalar para @architect |


3.6 Fase 5b: Revise Specification

| Atributo | Valor | |----------|-------| | Step ID | revise | | Phase Number | 5b | | Agente | @pm (Morgan) | | Condition | complexity.result === 'COMPLEX' OR critique.verdict === 'NEEDS_REVISION' |

Inputs

| Input | Tipo | Obrigatório | Descrição | |-------|------|-------------|-----------| | storyId | string | Sim | ID da story | | spec | file | Sim | spec.md atual | | critique | file | Sim | critique.json com feedback |

Outputs

| Output | Localização | |--------|-------------| | spec.md (updated) | docs/stories/{storyId}/spec/spec.md |


3.7 Fase 5c: Second Critique

| Atributo | Valor | |----------|-------| | Step ID | critique_2 | | Phase Number | 5c | | Agente | @qa (Quinn) | | Task | spec-critique.md | | Condition | complexity.result === 'COMPLEX' |

Nota: Segunda critica e mais leniente em issues MEDIUM se houver melhoria demonstrada.


3.8 Fase 6: Create Implementation Plan

| Atributo | Valor | |----------|-------| | Step ID | plan | | Phase Number | 6 | | Agente | @architect (Aria) | | Task | plan-create-implementation.md | | Condition | critique.verdict === 'APPROVED' |

Inputs

| Input | Tipo | Obrigatório | Descrição | |-------|------|-------------|-----------| | storyId | string | Sim | ID da story | | spec | file | Sim | spec.md aprovado | | complexity | file | Não | complexity.json |

Outputs

| Output | Localização | |--------|-------------| | plan.json | docs/stories/{storyId}/plan/implementation.yaml |

Regras de Subtasks

| Regra | Descrição | |-------|-----------| | Single Service | 1 servico por subtask (frontend, backend, database, infra) | | File Limit | Maximo 3 arquivos por subtask | | Verification Required | Cada subtask DEVE ter verificacao definida | | Dependency Order | Database > Backend > Frontend > Integration |


4. Agentes Participantes

graph LR
    subgraph AGENTS["Agentes do Spec Pipeline"]
        PM["@pm<br/>Morgan<br/>Product Manager"]
        AR["@architect<br/>Aria<br/>Architect"]
        AN["@analyst<br/>Atlas<br/>Business Analyst"]
        QA["@qa<br/>Quinn<br/>Test Architect"]
    end

    PM --> |"Fase 1, 4, 5b"| G1["Gather<br/>Write Spec<br/>Revise"]
    AR --> |"Fase 2, 6"| G2["Assess<br/>Plan"]
    AN --> |"Fase 3"| G3["Research"]
    QA --> |"Fase 5, 5c"| G4["Critique"]

    style PM fill:#e8f5e9
    style AR fill:#fce4ec
    style AN fill:#f3e5f5
    style QA fill:#fff8e1

| Agente | ID | Nome | Papel no Pipeline | Fases | |--------|-----|------|-------------------|-------| | @pm | pm | Morgan | Product Manager | 1 (Gather), 4 (Spec), 5b (Revise) | | @architect | architect | Aria | System Architect | 2 (Assess), 6 (Plan) | | @analyst | analyst | Atlas | Business Analyst | 3 (Research) | | @qa | qa | Quinn | Test Architect | 5 (Critique), 5c (Critique 2) |

4.1 Perfil: @pm (Morgan)

  • Arquetipo: Strategist
  • Foco: Coleta de requisitos, criação de especificações, documentação
  • Principios: User-focused, data-informed, clarity & precision
  • Ferramentas: Templates de PRD, elicitacao estruturada

4.2 Perfil: @architect (Aria)

  • Arquetipo: Visionary
  • Foco: Arquitetura de sistemas, avaliação tecnica, planejamento
  • Principios: Holistic thinking, pragmatic selection, security at every layer
  • Ferramentas: Context7, EXA, análise de codebase

4.3 Perfil: @analyst (Atlas)

  • Arquetipo: Decoder
  • Foco: Pesquisa, análise de mercado, validação de dependencias
  • Principios: Curiosity-driven, evidence-based, action-oriented
  • Ferramentas: EXA, Context7, Google Workspace

4.4 Perfil: @qa (Quinn)

  • Arquetipo: Guardian
  • Foco: Validacao de qualidade, gates de aprovacao, rastreabilidade
  • Principios: Requirements traceability, risk-based testing, advisory excellence
  • Ferramentas: CodeRabbit, Browser testing, análise de spec

5. Tasks Executadas

| Task | Fase | Agente | Arquivo | |------|------|--------|---------| | Gather Requirements | 1 | @pm | .aiox-core/development/tasks/spec-gather-requirements.md | | Assess Complexity | 2 | @architect | .aiox-core/development/tasks/spec-assess-complexity.md | | Research Dependencies | 3 | @analyst | .aiox-core/development/tasks/spec-research-dependencies.md | | Write Specification | 4 | @pm | .aiox-core/development/tasks/spec-write-spec.md | | Critique Specification | 5, 5c | @qa | .aiox-core/development/tasks/spec-critique.md | | Create Implementation Plan | 6 | @architect | .aiox-core/development/tasks/plan-create-implementation.md |


6. Pré-requisitos

6.1 Pre-Flight Checks

| Check | Descrição | Blocking | |-------|-----------|----------| | story_exists | Diretorio da story existe ou pode ser criado | Sim | | no_existing_spec | Verificar spec existente (evitar sobrescrita) | Não (warning) | | agents_available | Agentes do pipeline estao configurados | Sim |

6.2 Configuração Necessaria

config:
  autoSpec:
    enabled: false        # Ativar auto-spec quando story criada
  showProgress: true      # Mostrar progresso
  verbose: true           # Logs detalhados
  maxRetries: 2           # Tentativas em caso de falha
  retryDelay: 1000        # Delay entre retries (ms)
  strictGate: true        # BLOCKED halts pipeline
  outputDir: docs/stories/{storyId}/spec/

7. Entradas e Saidas

7.1 Entradas do Pipeline

| Entrada | Tipo | Descrição | Fornecido Por | |---------|------|-----------|---------------| | storyId | string | ID único da story | Usuario | | source | enum | prd, user, existing | Usuario (opcional) | | prdPath | string | Caminho para PRD existente | Usuario (opcional) | | overrideComplexity | enum | Override manual de complexidade | Usuario (opcional) |

7.2 Saidas do Pipeline

flowchart LR
    subgraph OUTPUT["Artefatos Gerados"]
        direction TB
        O1["requirements.json"]
        O2["complexity.json"]
        O3["research.json"]
        O4["spec.md"]
        O5["critique.json"]
        O6["plan.json"]
    end

    subgraph LOCATION["Localização"]
        L["docs/stories/{storyId}/spec/"]
        LP["docs/stories/{storyId}/plan/"]
    end

    O1 --> L
    O2 --> L
    O3 --> L
    O4 --> L
    O5 --> L
    O6 --> LP

| Artefato | Fase | Descrição | |----------|------|-----------| | requirements.json | 1 | Requisitos estruturados (9 categorias) | | complexity.json | 2 | Avaliacao de complexidade (5 dimensoes) | | research.json | 3 | Dependencias pesquisadas e validadas | | spec.md | 4 | Especificacao completa executavel | | critique.json | 5 | Resultado da avaliação de qualidade | | plan.json | 6 | Plano de implementação com subtasks |


8. Pontos de Decisão

8.1 Decisão: Pular Assess?

flowchart TB
    D1{"source === 'simple'<br/>OR<br/>overrideComplexity === 'SIMPLE'?"}
    D1 -->|Sim| SKIP["Pular para Spec<br/>(assume SIMPLE)"]
    D1 -->|Não| RUN["Executar Assess"]

8.2 Decisão: Pular Research?

flowchart TB
    D2{"complexity.result === 'SIMPLE'<br/>OR<br/>no external dependencies?"}
    D2 -->|Sim| SKIP["Pular Research<br/>Gerar minimal research.json"]
    D2 -->|Não| RUN["Executar Research"]

8.3 Decisão: Verdict da Critique

flowchart TB
    START["Critique Complete"] --> C1{"HIGH issues?"}
    C1 -->|Sim| BLOCKED["BLOCKED"]
    C1 -->|Não| C2{"avg >= 4.0?"}
    C2 -->|Sim| C3{"all dims >= 3?"}
    C3 -->|Sim| APPROVED["APPROVED"]
    C3 -->|Não| NEEDS["NEEDS_REVISION"]
    C2 -->|Não| C4{"avg >= 3.0?"}
    C4 -->|Sim| NEEDS
    C4 -->|Não| BLOCKED

8.4 Decisão: Executar Revise?

flowchart TB
    D4{"complexity === 'COMPLEX'<br/>OR<br/>verdict === 'NEEDS_REVISION'?"}
    D4 -->|Sim| RUN["Executar Revise<br/>(Fase 5b)"]
    D4 -->|Não| SKIP["Pular Revise"]

8.5 Decisão: Segunda Critique?

flowchart TB
    D5{"complexity === 'COMPLEX'?"}
    D5 -->|Sim| RUN["Executar Critique 2<br/>(Fase 5c)"]
    D5 -->|Não| SKIP["Pular Segunda Critique"]

9. Troubleshooting

9.1 Erros Comuns

| Erro | Causa | Solução | |------|-------|---------| | missing_story_id | Story ID nao fornecido | *create-spec STORY-42 | | phase_failed | Fase falhou durante execucao | Verificar logs, usar --resume | | max_iterations_reached | Limite de revisoes atingido | Escalr para @architect | | critique_blocked | Spec bloqueado pelo QA gate | Revisar critique.json, corrigir HIGH issues | | missing-requirements | requirements.json nao encontrado | Executar fase Gather primeiro | | empty-functional | Nenhum requisito funcional | Re-executar elicitacao | | context7-unavailable | Context7 MCP nao responde | Usar EXA como fallback |

9.2 Como Retomar Execucao

O pipeline suporta retomada atraves de checkpoints:

resume:
  enabled: true
  state_file: docs/stories/{storyId}/spec/.pipeline-state.json

  checkpoints:
    - after: gather   -> requirements_gathered
    - after: assess   -> complexity_assessed
    - after: research -> research_complete
    - after: spec     -> spec_written
    - after: critique -> critique_complete

Comando para retomar:

*create-spec STORY-42 --resume

9.3 Árvore de Decisão de Erros

flowchart TB
    E["Erro no Pipeline"] --> E1{"Qual fase?"}

    E1 -->|Gather| G["Verificar elicitacao"]
    G --> G1["Usuario respondeu todas perguntas?"]
    G --> G2["requirements.json valido?"]

    E1 -->|Assess| A["Verificar inputs"]
    A --> A1["requirements.json existe?"]
    A --> A2["Formato JSON valido?"]

    E1 -->|Research| R["Verificar ferramentas"]
    R --> R1["Context7 ativo?"]
    R --> R2["EXA configurado?"]

    E1 -->|Spec| S["Verificar Constitutional Gate"]
    S --> S1["Conteudo inventado detectado?"]
    S --> S2["Traceability ok?"]

    E1 -->|Critique| C["Verificar verdict"]
    C --> C1["Issues HIGH encontrados?"]
    C --> C2["Score medio < 3.0?"]

10. Referências

10.1 Arquivos do Workflow

| Arquivo | Localização | |---------|-------------| | Definicao do Workflow | .aiox-core/development/workflows/spec-pipeline.yaml | | Task: Gather | .aiox-core/development/tasks/spec-gather-requirements.md | | Task: Assess | .aiox-core/development/tasks/spec-assess-complexity.md | | Task: Research | .aiox-core/development/tasks/spec-research-dependencies.md | | Task: Write Spec | .aiox-core/development/tasks/spec-write-spec.md | | Task: Critique | .aiox-core/development/tasks/spec-critique.md | | Task: Create Plan | .aiox-core/development/tasks/plan-create-implementation.md |

10.2 Agentes Relacionados

| Agente | Localização | |--------|-------------| | @pm (Morgan) | .aiox-core/development/agents/pm.md | | @architect (Aria) | .aiox-core/development/agents/architect.md | | @analyst (Atlas) | .aiox-core/development/agents/analyst.md | | @qa (Quinn) | .aiox-core/development/agents/qa.md |

10.3 Documentação Relacionada

10.4 Commands Rapidos

| Comando | Descrição | Agente | |---------|-----------|--------| | *create-spec STORY-ID | Executar pipeline completo | - | | *gather-requirements STORY-ID | Apenas fase Gather | @pm | | *assess-complexity STORY-ID | Apenas fase Assess | @architect | | *research-deps STORY-ID | Apenas fase Research | @analyst | | *write-spec STORY-ID | Apenas fase Write | @pm | | *critique-spec STORY-ID | Apenas fase Critique | @qa |


11. Mensagem de Conclusão

Ao finalizar com sucesso, o pipeline exibe:

+==============================================================+
|  Spec Pipeline Complete                                      |
+==============================================================+

Story:       {storyId}
Complexity:  {SIMPLE|STANDARD|COMPLEX}
Verdict:     APPROVED
Score:       {score}/5

Artifacts:
   - docs/stories/{storyId}/spec/requirements.json
   - docs/stories/{storyId}/spec/complexity.json
   - docs/stories/{storyId}/spec/research.json
   - docs/stories/{storyId}/spec/spec.md
   - docs/stories/{storyId}/spec/critique.json

Next Steps:
   - Review spec.md
   - Run @dev *develop {storyId}

Metadata

metadata:
  documento: SPEC-PIPELINE-WORKFLOW.md
  versao: 1.0
  criado: 2026-02-04
  autor: Technical Documentation Specialist
  baseado_em:
    - .aiox-core/development/workflows/spec-pipeline.yaml
    - .aiox-core/development/tasks/spec-*.md
    - .aiox-core/development/agents/*.md
  tags:
    - spec-pipeline
    - workflow
    - documentação
    - aiox
    - auto-claude
Falar com o Time