Koder Triage — unified inventory & triage surface
operator-cockpit specs/operator-cockpit/cockpit.kmd
Koder Triage é o módulo oficial unificado de inventário/triagem de objetos da Koder Stack: ícones, nomes de componentes, tickets e assuntos/tarefas extraídos de chats (WhatsApp/Telegram). Superfície web única (Koder Jet, landing + URL próprias, auth Koder ID) onde o owner/operador revisa listas/batches acionáveis e age: selecionar/classificar, excluir (→ lixeira 30d), adiar, ou promover (a IA cria/implementa tickets nos backlogs certos). Armazenamento = data-area NÃO- versionada do KVS (parte integrante do repo — kvs#253). Substitui os silos soltos (triagem de ícones, de nomes na :8765, Imago, …). DISTINTO de: **Kli** (UI rica pra IAs CLI) e **Koder Console** planejado (customer-facing).
Quando esta spec se aplica
Todos os triggers
- Mostrar ao owner uma lista/batch acionável que a IA coletou/gerou (tópicos, ícones, nomes)
- Inventariar/triar objetos da Stack (ícones, nomes, tickets, tópicos de chat)
- Visualizar/editar backlog, drafts ou notices da Stack numa UI
Corpo da especificação
Spec — Koder Triage
Recast 2026-06-22 (owner via /k-arch→/k-go). Já se chamou "Operator Cockpit" e depois, por engano, "Koder Kli". Modelo correto: três coisas distintas — (1) Triage (este doc): inventário/triagem + KVS data-area, módulo oficial; (2) Kli: a UI rica pra IAs CLI; (3) Krew (
agent-console-RFC-001): duplicado cross-sessão (unificado 2026-06-23 →products/dev/kli) do conceito Kli → unificado no Kli (products/dev/kli). Path do arquivo mantido por ora; produto = Koder Triage (products/dev/triage).
1. Propósito (Meta-First, regra-dos-3)
≥3 superfícies fragmentadas de triagem IA↔owner (ícones, nomes, tópicos-de-chat) →
um módulo único, Triage. Superfície-padrão (operator-cockpit-standard-surface.kmd):
nenhuma IA cria página ad-hoc. Distinto de meta.koder.dev, do Kli e do Koder Console.
2. Colocação & forma
- Koder Triage (
products/dev/triage, slugtriage). Web-only, Koder Jet, landing +triage.koder.dev. Auth Koder ID (operador via RBAC). Chrome reusa shell SDK; cards Verge.
3. Item-types plugáveis
- topics (chat), icons (de
meta/brand/icons), names (da :8765), Backlog/ Drafts/Notices (viewers, Fase 2).
4. Contrato de triagem
Itens por assunto/batch; seleção item OU assunto inteiro; em lote:
- Excluir → lixeira 30d (§6); assunto = exclui assunto + itens.
- Adiar → tira da avaliação.
- Promover → a IA cria/implementa tickets nos backlogs corretos (cross-module). Paridade item × assunto.
4.1 Diretiva de IA por-tarefa (TRIAGE-023)
Cada tarefa carrega uma diretiva opcional "operator marca → IA executa", ortogonal
ao Status: o owner escolhe o que a IA deve fazer com a tarefa e um prompt livre
opcional. Persistido no tenantstore como ai_action / ai_prompt / ai_queued_at
(gravado via /api/action verbos set-ai-action / set-ai-prompt / queue-ai; nunca
altera o Status da tarefa). Vocabulário fechado de ai_action:
implement · open-ticket · research · decompose · delete (valor fora da lista →
400). Contrato de consumo: no próximo /k-triage (sem --scan) ou /k-go, a IA lê
as tarefas com ai_action setado e executa cada uma pela ação — implement (faz e leva
a done no componente dono, cadência lock/commit/push) · open-ticket (promove com corpo
AI-authored no backlog certo) · research (investiga//k-arch, reporta, sem tocar
código) · decompose (quebra em subtarefas) · delete (soft-delete 30d) — e, se
ai_prompt estiver presente, ele aumenta/sobrepõe o prompt default daquela ação.
5. Pipeline Chat→Tópicos (um item-type)
/k-triage --scan lê (whatsmeow/MTProto; device/Iris fallback), extrai tópicos→tarefas e
adiciona ao Triage (item-type topics). Sessões/tokens cifrados, owner-only.
Descoberta quando --chats omitido: varre WhatsApp + Telegram, lista os chats com
mensagens enviadas na janela (default 15 dias, --period omitido) e apresenta
app + nome do chat pro owner selecionar — nunca inventaria todos silenciosamente.
6. Armazenamento (KVS data-area, não kdb)
data-area não-versionada de um repo KVS (kvs#253), parte do repo → backups repo→Drive. 1 registro=1 arquivo (atômico) + mídia. Single-writer. Lixeira 30d (soft-delete + purge). Bootstrap: dir gitignored + /k-backup até o kvs#253.
7. Superfície-padrão
Toda lista/batch acionável IA↔owner aparece no Triage; o comando de ingestão termina
exibindo a URL do Triage. Normativo: operator-cockpit-standard-surface.kmd.
8. Comandos
/k-triage— abre o Triage (qualquer status)./k-triage --scan [<chats>] [<período>]— sem<chats>: descobre os chats ativos na janela (default 15d) e o owner seleciona; depois ingestão → grava no Triage → abre.
9. Decisões
- ✅ Identidade (2026-06-22): este módulo é Koder Triage, não "Kli". Kli = UI pra IAs CLI (à parte); Krew = duplicado do Kli (unificado 2026-06-23). Reverte o rescope anterior.
- ✅ Storage = KVS data-area (kvs#253).
- ✅ Ingestão = protocolo (whatsmeow/MTProto) + device/Iris fallback.
- ✅ Superfície-padrão.
10. Faseamento
- Fase 0: spec+policy · store · ingestão · triagem (topics) · promover→tickets · Koder ID.
- Fase 1: migrar ícones/nomes pro Triage.
- Fase 2: item-types Backlog · Drafts · Notices.
Referências
meta/docs/stack/policies/operator-cockpit-standard-surface.kmdproducts/dev/kvs/backlog/pending/253-repo-data-area-and-snapshots.kmdmeta/docs/stack/backlog/pending/192-operator-cockpit-programme.mdmeta/docs/stack/policies/icon-batch-presentation.kmdmeta/docs/stack/specs/auth/oauth-flow.kmdmeta/docs/stack/policies/identity-data-retention.kmd