agents-lab

Local-first lab for reusable AI-agent primitives and the curated pi-stack.

View on GitHub

Session Triage — histórico -> backlog revisável

Este guia transforma sessões, eventos ou resumos recentes em pendências claras. Use-o para recuperar continuidade sem depender de uma sessão gigante ou de memória implícita do operador.

O destino canônico pode ser .project/tasks, outro board local, um vault Markdown ou apenas uma lista revisável. O ponto é separar evidência, decisão e próximo lote antes de executar trabalho novo.

Quando usar

Escolha de modo (2 min)

Antes de rodar triagem, escolha o modo de operação:

  1. .project-first
    • canônico local no workspace;
    • melhor para governança integrada.
  2. adapter-first
    • manter sistema atual do usuário (Markdown/Obsidian, DB/API, automação/web);
    • triagem continua útil para organizar backlog, sem migração forçada.
  3. canônico + espelho do operador (opt-in)
    • .project segue oficial;
    • projeção para vault Markdown renderizável (referência: https://github.com/aretw0/vault-seed).

Checklist de spawn rápido por modo:

Atalho de intake universal (antes da triagem longa)

Quando o projeto ainda está nebuloso, rode primeiro o tool report-only project_intake_plan para escolher a primeira fatia local-safe sem abrir escopo protegido.

Exemplo mínimo de entrada:

A saída deve ser lida como contrato de arranque:

Entrada de eventos

Use uma fonte provider-agnostic de eventos quando ela existir:

node scripts/session-triage.mjs --events ./data/canonical-events.json

Também aceita JSONL (um evento por linha):

node scripts/session-triage.mjs --events ./data/canonical-events.jsonl

Wrapper local

Projetos podem oferecer atalhos próprios para apontar a triagem para o store local correto. Neste repositório:

pnpm run session:triage
pnpm run session:triage:json

Padrão atual de coleta no laboratório:

Projetos que não usam esse wrapper podem chamar a ferramenta equivalente com eventos canônicos:

node scripts/session-triage.mjs --events ./data/canonical-events.json

Idea Inbox Primitive (captura sem aplicar automaticamente):

node scripts/session-triage.mjs --ideas ./notes/inbox.md --json
node scripts/session-triage.mjs --events ./data/canonical-events.jsonl --ideas ./notes/inbox.md --json

O inbox aceita padrões Markdown/Obsidian simples:

- idea: Criar runbook curto para operadores iniciantes
> [!idea] Capturar nota Obsidian como proposal
idea: Converter brainstorming de sessão em task draft revisável

Contrato do inbox:

Exemplo no repositório:

node scripts/session-triage.mjs --events docs/research/data/session-triage/canonical-events.example.json

Atalhos pnpm para smoke do adapter canônico:

pnpm run session:triage:events:json
pnpm run session:triage:events:jsonl

Por padrão, o script lê último 1 dia e até 8 sessões mais recentes, usando tail-batch.

Flags úteis de janela progressiva:

# janela base (cauda curta)
node scripts/session-triage.mjs --tail-lines 160 --window 1

# ampliar sem scan completo direto
node scripts/session-triage.mjs --tail-lines 200 --window 2
node scripts/session-triage.mjs --tail-lines 200 --expand

# fallback para store global (somente quando explicitamente desejado)
node scripts/session-triage.mjs --allow-global-fallback

Também mantém um cache parseável de branch summaries em:

Esse store é atualizado automaticamente com summaries detectados (sessões + fonte canônica), para evitar depender de cópia manual quando um resumo de branch saiu da janela curta.

Flags úteis:

# usar caminho explícito
node scripts/session-triage.mjs --summary-store ./.sandbox/pi-agent/triage/branch-summary-store.json

# desativar persistência local
node scripts/session-triage.mjs --no-summary-store

O que o script entrega

Estado atual: implementação inicial focada em sessões locais do pi. Direção oficial: evoluir para ingestão provider-agnostic (Telegram/WhatsApp/Matrix/Signal etc.) via adapter canônico, sem mudar a governança do board.

Contrato canônico de eventos (v1):

Loop operacional estendido (15-30 min, em controle)

Use quando quiser avançar mais de um micro-lote sem perder governança:

  1. Rodar triagem (pnpm run session:triage) e escolher 1 frente ativa.
  2. Rodar gate rápido de control plane:
    • scheduler_governance_status
    • colony_pilot_preflight
    • context_watch_status
    • subagent_readiness_status(strict=true)
  3. Classificar a rodada em GO, GO condicional ou NO-GO.
  4. Executar lote curto (1 objetivo), registrar evidência e atualizar .project.
  5. Repetir o gate antes do próximo lote.

Política prática para comandos longos:

Patrol recorrente (soft intent) é opcional para sessões long-run:

Capability gap claim (primitiva operacional)

Quando a triagem mostrar blockers recorrentes como command-not-found, ENOENT, missing capabilities/executables ou Instructions are required:

  1. registrar claim de capability gap (com recomendação de ação);
  2. remediar bootstrap/permissão primeiro;
  3. só então iniciar lote autônomo principal.

Se a saída recommendation.lane vier como:

Referência da primitiva: docs/primitives/capability-gap-claim.md.

Governança

Tidy up seguro

Antes de limpar resíduos de runtime/worktrees:

  1. confirmar ausência de colônias ativas (/colony-pilot status)
  2. inspecionar artefatos (/colony-pilot artifacts)
  3. limpar apenas resíduos antigos/inativos

Se houver risco de interferir em execução ativa, adiar limpeza.