# 01 — Visão de Produto
## Orquestração: SDDL-2 — SDD Bot do Slack

worktree: SDDL-2
branch-raiz: main

**Data:** 2026-06-24
**Agente:** idea (Product Discovery Specialist)
**Estado:** recorded
**Artifact store:** .worktree/SDDL-2/docs/sddl-2/

---

## 1. Visão Geral da Ideia

O SDD Bot do Slack é um agente conversacional que permite iniciar, acompanhar e aprovar demandas do fluxo Spec-Driven Development diretamente de um canal Slack, sem que o usuário precise interagir com o terminal, o Jira ou a documentação interna do SDD. O bot traduz comandos simples de linguagem quase-natural em ações estruturadas: cria cards no Jira, dispara o orquestrador SDD até o PRD, notifica o solicitante a cada etapa e bloqueia avanço automático até que um humano libere explicitamente.

A feature também define a separação clara entre o bot e o CLI principal do SDD: a instalação do bot passa a ser um processo independente (`/sdd install bot`), removendo amarrações existentes nos comandos `sdd install`, `sdd update` e `sdd orchestrator` que tornavam o bot um efeito colateral do fluxo core.

---

## 2. Problema que Resolve

### 2.1 Problema principal

O fluxo SDD exige hoje que o solicitante de uma feature acesse múltiplos sistemas (Jira para criar o card, terminal para rodar o orquestrador, Confluence ou arquivos locais para acompanhar os artefatos gerados). Essa fricção faz com que demandas sejam abertas sem passar pelo fluxo Spec-Driven ou que passem pelo fluxo de forma manual e descoordenada.

### 2.2 Problemas secundários

| Problema | Impacto |
|---|---|
| Bot antigo está acoplado aos comandos core do SDD (`sdd install`, `sdd update`) | Qualquer atualização do core pode quebrar o bot silenciosamente |
| Não há mecanismo formal de bloqueio de avanço automático | O orquestrador pode avançar além do PRD sem revisão humana |
| Não há visibilidade do progresso do orquestrador no canal Slack | O solicitante não sabe em que etapa a demanda está sem consultar o terminal |
| Dados de cards criados pelo bot não são persistidos localmente | `/bot list` e `/bot view` dependem de chamadas à IA para reconstruir estado |
| Instalação do bot está misturada ao ciclo de vida do CLI SDD | Dificulta instalação em projetos que não usam a camada bot |

---

## 3. Público-Alvo

| Perfil | Descrição | Frequência de uso |
|---|---|---|
| Product Manager / Tech Lead | Abre demandas em linguagem natural, aprova PRDs via `/bot aproved` | Diária |
| Engenheiro solicitante | Usa `/bot create` para registrar ideias sem sair do Slack | Semanal |
| Time de desenvolvimento | Consulta `/bot list` e `/bot view` para entender backlog priorizado | Diária |
| Administrador da instalação | Executa `/sdd install bot` uma única vez por projeto | Pontual |

---

## 4. Proposta de Valor

**Para o solicitante:** abrir uma demanda e acompanhar o PRD gerado sem sair do Slack — sem terminal, sem Jira manual, sem Confluence.

**Para o time de desenvolvimento:** visibilidade estruturada do backlog (id, título, status de aprovação) e acesso ao conteúdo completo de cada card diretamente no canal.

**Para a organização:** garantia de que toda demanda passa pelo fluxo Spec-Driven até o PRD antes de chegar ao time de execução, com gate humano explícito (`/bot aproved`) como condição de avanço.

**Para o mantenedor do SDD:** instalação e ciclo de vida do bot completamente desacoplados do core CLI, eliminando risco de regressão em atualizações.

---

## 5. Jornada Principal do Usuário

```
Solicitante no canal Slack
        │
        ▼
/bot create <descrição em texto livre>
        │
        ├─► Bot detecta chave do projeto Jira via campo `key:` na descrição do canal
        ├─► Cria card no Jira com título gerado por LLM e descrição fornecida
        ├─► Dispara `/orchestrator <CARD-ID>` até a etapa PRD
        ├─► A cada etapa (risk, idea, prd): envia notificação ephemeral ao solicitante
        │        └─ Se conteúdo exceder limite Slack → envia como arquivo
        ├─► Ao concluir PRD: adiciona comentário `/bloqueado` no card Jira
        └─► Bot para. Orquestrador não avança além do PRD enquanto `/bloqueado` for último comentário.
        │
        ▼
Tech Lead/PM revisa PRD no Slack (via `/bot view <card-id>`)
        │
        ▼
/bot aproved <card-id>
        │
        ├─► Adiciona comentário `/aprovado` no card Jira
        ├─► Atualiza status no banco SQLite local
        └─► Card some do `/bot list` (apenas cards não aprovados aparecem)
        │
        ▼
Time de desenvolvimento recebe card liberado para execução
```

---

## 6. MVP Sugerido

### Entra no MVP

| Funcionalidade | Descrição |
|---|---|
| `/bot create <texto>` | Cria card Jira, dispara orquestrador até PRD, adiciona `/bloqueado`, persiste no SQLite |
| `/bot aproved <card-id>` | Adiciona comentário `/aprovado` no Jira, atualiza SQLite |
| `/bot list` | Lista cards não aprovados (id + título) consultando SQLite — sem chamar IA |
| `/bot view <card-id>` | Exibe visão completa do card (somente não aprovados) consultando SQLite |
| `/bot update <card-id> <texto>` | Atualiza card Jira, refaz orquestrador com novo contexto, atualiza SQLite, adiciona `/bloqueado` |
| Notificações ephemeral por etapa | Mensagem privada a cada etapa do orquestrador; arquivo se exceder limite de texto |
| Mecanismo `/bloqueado` no orquestrador | Gate no sdd-layer: orquestrador não avança além do PRD se último comentário do card for `/bloqueado` |
| Banco SQLite local | Tabela `cards` com card-id, título, contexto, status de aprovação |
| Detecção de projeto via canal | Leitura do campo `key:` na descrição do canal Slack para identificar projeto Jira |
| Instalador independente | Comando `/sdd install bot` — completamente separado do `sdd install` e `sdd update` |
| Remoção das amarrações antigas | Limpeza do código bot nos comandos core do SDD |

### Fora do MVP

| Funcionalidade | Justificativa |
|---|---|
| Suporte a múltiplos projetos Jira por canal | MVP suporta um projeto por canal via `key:` |
| Interface web de acompanhamento | Escopo além do canal Slack |
| Avanço automático além do PRD | Gate humano é requisito de produto |
| Multi-workspace Slack | MVP suporta um workspace por instalação |
| Migração automática de schema SQLite | Evolução futura |

---

## 7. Hipóteses

| # | Hipótese | Como validar |
|---|---|---|
| H1 | O solicitante prefere abrir demandas pelo Slack a abrir tickets Jira diretamente | Observação de adoção nas primeiras 2 semanas |
| H2 | O mecanismo `/bloqueado` via comentário de texto é suficiente como gate operacional | Ausência de incidentes de avanço indevido nas primeiras 4 semanas |
| H3 | O SQLite local é suficiente para o volume de cards gerados por instalação | Monitorar tamanho do banco e latência após 3 meses |
| H4 | A detecção de projeto via campo `key:` é confiável e não gera ambiguidade | Taxa de cards no projeto errado próxima de zero |

---

## 8. Riscos de Produto

| Risco | Probabilidade | Impacto | Mitigação |
|---|---|---|---|
| Vazamento de tokens Slack/Jira via git | Baixa | Crítico | Wizard nunca grava secrets no repo; gitleaks no pipeline |
| Orquestrador avança além do PRD se `/bloqueado` for removido manualmente | Média | Alto | Gate verifica posição (último comentário), não só presença |
| Rate limit do Slack free em alta demanda | Média | Médio | Fila de envio com backoff; arquivo para conteúdos longos |
| Remoção das amarrações antigas quebra CLI core | Média | Alto | Checklist de regressão + testes de integração antes do merge |

---

## 9. Premissas e Restrições

**Premissas:**
- App Slack instalado com tokens `xapp-` e `xoxb-` disponíveis
- Canal tem campo `key:` na descrição identificando o projeto Jira
- CLI `sdd` disponível no PATH do processo bot em produção
- SQLite persiste no sistema de arquivos local do servidor

**Restrições:**
- Bot não avança o orquestrador além do PRD automaticamente — gate humano inegociável
- Instalação do bot completamente independente de `sdd install` / `sdd update`
- Secrets nunca gravados em arquivos rastreados pelo git
- MVP: um workspace Slack + um projeto Jira por instalação

---

## 10. Perguntas em Aberto (para o PRD)

| # | Pergunta | Impacto |
|---|---|---|
| Q1 | Preview do card antes de disparar o orquestrador — entra no MVP? | Define se há etapa de confirmação no `/bot create` |
| Q2 | `/bloqueado` verificado por posição (último comentário) ou por presença? | Implementação do gate no sdd-layer |
| Q4 | `/bot view` exibe artefatos do SQLite ou busca arquivos Markdown do orquestrador? | Schema e volume do SQLite |

---

## Rastreabilidade

| Campo | Valor |
|---|---|
| Orquestração | SDDL-2 — SDD Bot do Slack |
| Artefato | 01-idea.md |
| Artefato de origem | `docs/sddl-2/00-project-discovery.md` |
| Classificação de risco | `docs/sddl-2/00-risk-classification.md` — Nível: ALTO |
| Artifact store local | `.worktree/SDDL-2/docs/sddl-2/` |
| Próximo artefato | `02-prd.md` — aguarda aprovação humana no CHECKPOINT |
| Estado | recorded |
