---
id: generate-shock-report
agent: ux-design-expert
title: Gerar o shock report — o caos de UI lado a lado com o ROI
inputs: [auditoria de codebase, padrões consolidados]
outputs: [relatório HTML do caos visual + ROI, 'docs/stories/{story}/shock-report.html']
elicit: false
modes: [interactive, yolo]
---

# Gerar o shock report — o caos de UI lado a lado com o ROI

**Objetivo:** transformar a redundância medida na auditoria num relatório HTML que mostra o caos
visual lado a lado (os 47 botões diferentes), com o número que prova o estrago e o ROI da
consolidação — para mover a decisão com dado, não com opinião.

**Pré-condições:**
- A auditoria (`audit-codebase`) já rodou e existe o inventário de padrões redundantes. Sem ele,
  **pare**: shock report sem medição é opinião disfarçada de relatório.
- A consolidação (`consolidate-patterns`) já agrupou os padrões similares, com a contagem de
  ocorrências por cluster. Se faltar, rode `consolidate` antes.
- Existe uma story/spec que pede a consolidação. Sem rastro, eu elicito o escopo — não invento.

## Passos

1. **Carrego o inventário e os clusters** da auditoria/consolidação: total de variantes por tipo de
   componente (botões, inputs, cards…), e quantas se reduzem a quantas após o clustering.
2. **Calculo a redução por tipo** — variantes antes → variantes depois, e o percentual (ex.: 47 →
   3, 93,6% de redução). Esse é o número que abre o relatório.
3. **Monto o lado a lado visual.** Cada cluster vira uma faixa do HTML: as variantes redundantes
   renderizadas juntas (o caos) e a variante consolidada proposta (o destino). O olho tem que ver a
   divergência, não só ler o número.
4. **Puxo o ROI da task `calculate-roi`.** Não invento a economia: peço/uso o output de
   `calculate-roi` (horas de manutenção evitadas, custo/ano). Se ele não existe, sinalizo que o ROI
   é estimativa pendente — não chuto valor financeiro.
5. **Renderizo o HTML** auto-contido (estilos inline, sem dependência externa para abrir no
   browser), com: headline da redução, faixas lado a lado por cluster, tabela de ROI e rastro à
   story/spec de origem.
6. **Salvo em** `docs/stories/{story}/shock-report.html` e registro o arquivo na File List da story.
7. **Roteio.** Relatório pronto vira insumo da decisão de migração (`generate-migration-strategy`).
   Se precisar publicar/hospedar o HTML em algum lugar, **delego ao @devops** — eu não subo nada.

## Critério de pronto (DoD)

- [ ] Cada cluster aparece com contagem antes → depois e percentual de redução
- [ ] O lado a lado visual renderiza o caos e o destino, abre no browser sem dependência externa
- [ ] O ROI vem de `calculate-roi` (ou está marcado explicitamente como estimativa pendente)
- [ ] O relatório rastreia à story/spec de origem; arquivo na File List
- [ ] Nada foi publicado por mim (subida é do @devops)

## Falha / recuperação

- **Inventário ou clusters ausentes** → HALT; rodo `audit` / `consolidate` antes, não gero relatório
  com dado faltando.
- **ROI sem base** → não invento número financeiro; marco como pendente e sigo com a parte visual.
- **A story que justifica a consolidação não existe** → paro e devolvo ao @sm/@po para criar o rastro.
