Recommendation & action
Fase β · 04 · entregue na v3.0
A Cris recomenda; o operador decide. β.4 formaliza a gramática da recomendação · confidence ladder em 4 níveis, contrato se · então herdado da v2 · 2.4, aceitação parcial por slot e três desfechos canônicos com pegada no audit log.
Princípio · Cris recomenda · operador decide
A Cris nunca executa autonomamente. Toda recomendação aparece como proposta versionada — aceitar, modificar ou rejeitar é decisão humana, e cada uma deixa rastro auditável. β.4 entrega o componente que materializa isso · RecommendationCard.
Uma recomendação tem quatro elementos obrigatórios:
- Confiança (ladder)
- Gatilho (
"se") - Proposta (
"então") - Evidências (3–7 fontes da β.1)
Sem qualquer um deles, não é recomendação · é palpite. E palpite a Cris não emite.
Confidence ladder · 4 níveis
A confiança da Cris é label antes de número. O operador vê “alta”, não “0.87”. O número aparece no popover de proveniência (β.1) para auditoria.
| Nível | Score | Quando | UI |
|---|---|---|---|
| 01 · Baixa | < 0.55 | Hipótese, não tese · sinal fraco · uma fonte · contradição parcial nas evidências | Sem CTA primário · só “Explorar” secundário · não interrompe |
| 02 · Média | 0.55 — 0.74 | Indício consistente · múltiplas fontes apontam o mesmo · ainda há leitura alternativa | CTA primário ativo · sugestão visível · operador pode modificar |
| 03 · Alta | 0.75 — 0.89 | Padrão claro · evidências convergentes · tese da Cris é defensável | CTA primário destacado · Aceitar sem subordinação |
| 04 · Decisivo | ≥ 0.90 | Convergência forte · padrão histórico replicado · ação inversa exigiria contraevidência ativa | CTA primário com halo · rejeitar pede justificativa textual · audit registra como rejected against high confidence |
RecommendationCard · três níveis em ação
O mesmo componente, três contextos. A confidence dita a intensidade da UI · borda, halo, CTA, exigência de justificativa.
Anatomia · slots obrigatórios
| Slot | Conteúdo | Origem |
|---|---|---|
| Confidence Ring | Score 0–100 + label (decisive, high, medium, low) | Score Ring (signature shape 02) com paleta de confiança |
| Origin tracking | Borda · kicker · monograma | β.1 |
| Título | Ação recomendada em uma linha | Cris |
| Meta | há N min · CASO id · audit_id | β.5 |
Bloco Se | Condição que disparou | Schema (cláusulas booleanas) |
Bloco Então | Proposta concreta · slots | Schema (action + slots) |
| Evidências | 3–7 fontes com timestamp | β.1 |
| Toolbar | Aceitar · Modificar · Rejeitar | β.4 |
Três desfechos canônicos
Toda recomendação termina em um destes três. Modificar é o mais importante · é onde a inteligência híbrida acontece e onde o audit log fica mais rico.
| Desfecho | Quando | UI | Velocidade | Audit |
|---|---|---|---|---|
| ✓ Aceitar | Confiança alta · evidências convergentes · sem nuance contextual | Botão primário · confirmação inline · sem modal | 1 clique | accepted · original ≡ executed |
| ↻ Modificar | Contexto local muda parte da proposta · “aceito tudo, mas troco o veículo” | Slot pills editáveis · diff visual · botão Confirmar com mudanças | 2–4 cliques · maioria das ações | modified · diff slot-by-slot |
| × Rejeitar | Contexto contradiz · informação faltante · julgamento humano divergente | Em decisivo, exige justificativa textual · nos demais, opcional | — | rejected · texto da justificativa |
Aceitação parcial · slots editáveis
A proposta da Cris é decomposta em slots nomeados · veículo, destinatário, timing, tom. Operador edita só os que precisam mudar · o resto fica. O audit log da β.5 sabe diff por slot, não por texto livre.
Exemplo · Dispatch nível 2 · CASO 248:
| Slot | Sugerido (Cris) | Executado (operador) | Status |
|---|---|---|---|
| Veículo | Email institucional | Slack #crisis-tier2 | alterado |
| Destinatário | Equipe Comms · 4 on-call | (mesmo) | mantém |
| Timing | Imediato | (mesmo) | mantém |
| Tom da nota | Firme · sem jurídico | (mesmo) | mantém |
Atalho: ⌘↵ confirma com mudanças.
Schema · recommendation
Estende o ai-content-block da β.1 com slots, confidence ladder e tipo de gatilho. Audit log (β.5) consome esse schema direto.
{
"author": "cris",
"kind": "recommendation",
"generated_at": "2026-05-21T11:46:02Z",
"confidence": {
"score": 0.91,
"label": "decisive"
},
"if": [
"mentions_growth_4h > 0.5",
"verified_amplifiers >= 10",
"coordination_signature >= 0.4"
],
"then": {
"primary_action": "raise_tier",
"slots": {
"vehicle": { "suggested": "email_inst", "actual": "slack_t2" },
"recipient": { "suggested": "comms_team", "actual": "comms_team" },
"timing": { "suggested": "now", "actual": "now" },
"tone": { "suggested": "firm_no_legal", "actual": "firm_no_legal" }
}
},
"sources": [ /* 7 fontes — vide β.1 */ ],
"outcome": {
"action": "modified",
"operator_id": "op_42",
"slots_changed": ["vehicle"],
"reject_reason": null,
"decided_at": "2026-05-21T11:48:11Z"
},
"audit_id": "248-r-9a4f"
}Regras
✕ Não exibir score bruto na UI
“0.87 confidence” não significa nada para o operador em crise. Use o label do ladder. O número fica no popover de proveniência (β.1) para auditoria. Score é entrada do designer · label é saída para o operador.
✓ Sempre par “se · então”
A recomendação tem que mostrar gatilho. Sem se, a Cris parece arbitrária. Com se, o operador pode questionar a regra — não apenas a conclusão. Herdado da v2 · 2.4. Sem se, a UI bloqueia o render.
✕ Não auto-executar nada
Nem em decisivo. A Cris recomenda · o humano decide. Aceitação é sempre clique explícito · nunca timer, nunca default action depois de N segundos.
✓ Modificar é o caminho preferido
O contexto local é sempre mais rico que o da Cris. Modificar deve ser tão rápido quanto aceitar · slots editáveis com hover · ⌘↵ confirma.
Métrica de saúde: >50% das recomendações de
alta+deveriam ser modificadas, não aceitas raw. Se 95% são aceitas raw, a Cris está coreografando · não recomendando.
✕ Não enfileirar recomendações
Mais de 3 recomendações ativas simultâneas vira fadiga. Cris precisa priorizar internamente e mostrar 1–3 · o resto vai pro Sheet sob demanda.
✓ Justificativa obrigatória em decisivo rejeitado
Rejeitar decisivo é caro · audit log registra explicitamente. O texto da justificativa alimenta revisão de prompt e oferece proteção compliance. Não é punição · é proteção. Operador que rejeita com razão fica protegido pelo registro.
Dependências
- β.1 · Origin tracking — cada card herda marca + popover. Confidence Ring usa Score Ring (signature shape 02) com paleta de confiança.
- β.2 · Draft & regenerate — modificar slot de texto longo (ex: “tom da nota”) abre DraftStack inline.
- β.3 · Embedding — em
decisivo, recomendação aparece como balão modal (formato 03). Demais ficam como card inline. - v2 · 2.4 · Pulso IA · Voz — fórmula
se · entãoé binding · não há recomendação sem ela. - β.5 · Audit trail — consome
outcome.slots_changed· uma linha do log por recomendação, com diff slot-by-slot.