# MORPH Clarify - FASE 3

Identifique ambiguidades na especificação e faça perguntas de clarificação para garantir que todos os edge cases estão cobertos.

## Uso

```
/morph-clarify {feature-name}
```

## Pré-requisitos

- [ ] FASE 2 (Design) concluída
- [ ] `spec.md` aprovado pelo usuário
- [ ] `contracts.cs` definidos

## Workflow

### Passo 1: Analisar Spec

Leia `.morph/project/outputs/{feature}/spec.md` em detalhes e identifique:

#### 1.1. Ambiguidades
- Requisitos vagos ou genéricos
- Termos sem definição clara
- Comportamentos não especificados

#### 1.2. Edge Cases Não Documentados
- O que acontece se...?
- Como lidar com entradas inválidas?
- Comportamento em caso de erro?
- Estados intermediários (loading, empty)

#### 1.3. Requisitos Conflitantes
- Duas funcionalidades que parecem incompatíveis
- Prioridades não claras (o que vem primeiro?)

#### 1.4. Dados Faltantes
- Validações de negócio não especificadas
- Limites e constraints (tamanhos, quantidades)
- Formatos de dados (datas, moedas, etc.)

### Passo 2: Gerar Perguntas de Clarificação

Com base na análise, gere **3-7 perguntas** focadas e específicas:

**Formato de pergunta:**
```markdown
### Q{N}: {Categoria} - {Título}

**Context:** {Por que esta pergunta é importante}

**Question:** {Pergunta clara e objetiva}

**Options (if applicable):**
- A) {Opção 1}
- B) {Opção 2}
- C) {Deixar em aberto/usuário decidir}

**Impact:** {Como a resposta afeta a implementação}
```

**Exemplo:**

```markdown
### Q1: Validação - Limite de Nome de Projeto

**Context:** O spec menciona "nome de projeto" mas não especifica limites.

**Question:** Qual o comprimento máximo do nome de projeto?

**Options:**
- A) 50 caracteres (padrão curto)
- B) 100 caracteres (padrão médio)
- C) 255 caracteres (padrão longo)
- D) Sem limite (validar apenas se não vazio)

**Impact:** Afeta validação do DTO, schema do banco, e UI (tamanho do input).
```

### Passo 3: Categorizar Perguntas

Organize perguntas por categoria:

| Categoria | Descrição | Exemplos |
|-----------|-----------|----------|
| **Validação** | Regras de negócio, constraints | Limites de tamanho, formatos aceitos |
| **Comportamento** | O que acontece quando... | Error handling, estados vazios |
| **Prioridade** | O que é must-have vs nice-to-have | MVP vs futuras iterações |
| **Integração** | Como interage com sistemas externos | APIs, webhooks, formato de dados |
| **Performance** | Requisitos de velocidade/volume | Quantos registros? Tempo de resposta? |
| **UX** | Experiência do usuário | Feedback visual, mensagens de erro |

### Passo 4: Apresentar Perguntas ao Usuário

Liste todas as perguntas de forma clara e estruturada.

**IMPORTANTE:** Não prossiga para próxima fase até ter respostas!

### Passo 5: Atualizar `spec.md` com Respostas

Após receber respostas do usuário, atualize o spec com:

1. **Seção de Clarificações** no início do spec:
```markdown
## Clarifications (FASE 3)

### Q1: {Título}
**Answer:** {Resposta do usuário}
**Date:** {YYYY-MM-DD}

### Q2: {Título}
**Answer:** {Resposta do usuário}
**Date:** {YYYY-MM-DD}
```

2. **Atualizar seções relevantes** com detalhes adicionados:
   - Requisitos funcionais mais específicos
   - Validações documentadas
   - Edge cases cobertos

### Passo 6: Validar Edge Cases

Documente no spec como lidar com cada edge case identificado:

```markdown
## Edge Cases

### EC001: {Nome do Edge Case}
**Scenario:** {Quando acontece}
**Expected Behavior:** {Como o sistema deve reagir}
**Implementation Notes:** {Dicas para implementação}

**Example:**
- Input: {exemplo de entrada problemática}
- Output: {comportamento esperado}
```

### Passo 7: Atualizar State

```bash
# Marcar fase como clarify
node bin/state-manager.js set {feature-name} phase clarify

# State permanece in_progress até usuário responder todas as perguntas
```

## Outputs Gerados/Atualizados

- `.morph/project/outputs/{feature}/spec.md` - Atualizado com:
  - Seção "Clarifications" com perguntas e respostas
  - Edge cases documentados
  - Requisitos mais específicos

## ⛔ PAUSA OBRIGATÓRIA

Apresente perguntas de clarificação e aguarde respostas do usuário.

**Não prossiga até ter todas as respostas!**

Após receber respostas, atualizar spec e apresentar:

1. ✅ **Aprovar clarificações e continuar para tasks**
   Prosseguir para `/morph-tasks` (FASE 4)

2. 🔄 **Fazer mais perguntas** (se ainda houver dúvidas)
   Iterar novamente nesta fase

3. 📋 **Revisar spec atualizado**
   Validar que clarificações foram bem incorporadas

## Critérios de Avanço

- [x] Perguntas de clarificação identificadas (3-7)
- [x] Perguntas apresentadas ao usuário
- [x] Respostas do usuário recebidas
- [x] `spec.md` atualizado com clarificações
- [x] Edge cases documentados
- [x] State atualizado
- [x] Nenhuma ambiguidade crítica remanescente

---

**Feature:** $ARGUMENTS
