# Tasks — Spec 030 Agentic Ops UI

## Fase UI-A — Mission Board (frontend only) ✅
- [x] A1 Criar `agentic-ops.css` (grid `ao-*`, tokens agente)
- [x] A2 Componente `AgenticStatusBar` (health + action-log last tick)
- [x] A3 Componente `MissionBoard` — 4 colunas severidade
- [x] A4 Dedup via API `/incidents` (UI-B)
- [x] A5 `IncidentCard` — click selecciona + highlight
- [x] A6 `ContextPanel` — thread + reply + chat
- [x] A7 Fleet rail compacto
- [x] A8 Deploy produção + staging

## Fase UI-B — Backend deduplicação ✅
- [x] B1 Migration `agent_incidents` + índices
- [x] B2 `store.upsert_incident()` no runner tick
- [x] B3 Refactor `notify_finding_to_operators` — reutilizar thread
- [x] B4 Endpoints `/overview`, `/incidents`, `/incidents/{id}/ack`, `/timeline`
- [x] B5 Backfill automático no boot (`backfill_incidents`)
- [x] B6 Testes `test_agents_030.py`

## Fase UI-C — Polish ✅
- [x] C1 Run timeline (lista ticks)
- [x] C2 Mobile tabs (Board / Frota / Contexto)
- [x] C3 Empty states + skeleton loading
- [x] C4 Pulse animation agente com incidente open
- [x] C5 Atalho teclado `R` refresh, `Esc` deselect
- [x] C6 Poll 30s quando view activa

## Fase UI-D — Live updates 📋

- [ ] D1 Poll 30s quando view activa (pausa tab hidden)
- [ ] D2 SSE `/api/v1/agents/stream` (opcional, Spec 029 H3)

## Fase UI-E — Integração Desk 📋

- [ ] E1 Botão “Criar ticket” no card → `/api/v1/tickets` POST
- [ ] E2 Link finding → domínio/tenant se aplicável
- [ ] E3 Preparar hub CH-* (Spec 019) — deep link

---

## Ordem recomendada Roger

1. **UI-A** (1–2 dias) — impacto visual imediato, zero risco DB  
2. **UI-B** (1 dia) — limpa produção, para spam de threads  
3. **UI-C** (0.5 dia) — mobile + polish  
4. UI-D / UI-E — backlog P2

---

## Definition of Done (030 MVP = UI-A + UI-B)

- [ ] ≤10 cards visíveis para ambiente actual
- [ ] Ack funcional end-to-end
- [ ] Context panel com thread única por cenário
- [ ] Documentação quickstart actualizada
- [ ] Deploy produção `:8091` após staging OK
