agents-lab

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

View on GitHub

Lab x User surface parity (hygiene)

Objetivo: evitar drift entre o que usamos no laboratório e o que distribuímos aos usuários.

Regra base

Inventário mínimo (snapshot)

Distribuído (user-facing)

Lab-only temporário

Critério de promoção (lab-only -> canônico)

Promover para tool/comando/sinal quando o padrão ocorrer em 2+ ciclos operacionais e atender:

  1. Entrada/saída determinística
  2. Evidência auditável
  3. Valor recorrente para operador

Critério de remoção

Remover/arquivar quando:

Política de artefatos de pesquisa

Dados derivados e pequenos (results.json, scorecards e sínteses) podem ser versionados quando carregam evidência recorrente. Logs brutos, dumps completos e datasets grandes em docs/research/data/** devem ficar locais, externos ou promovidos para artefato de release/CI. O gate pnpm run repo:bloat:audit:strict bloqueia logs brutos versionados e datasets grandes antes que o histórico vire depósito de runtime. Para usuários da stack, o mesmo sinal aparece no comando /stack-quality e na tool stack_quality_audit.

Política de discurso canônico

Termos fortes como fábrica, engine, maturidade e soberania precisam refletir contrato operacional, gate ou roadmap explícito. Use pnpm run repo:discourse:audit como bússola advisory para encontrar linguagem legada (termos antigos para operador) e promessa aspiracional em docs/surfaces canônicas. O audit não bloqueia a release por padrão: ele ajuda a escolher a próxima lane de poda sem apagar pesquisa histórica nem forçar renomeação ampla.

Governança operacional

Sinal de cobertura first-party

Quando uma capability first-party passa a cobrir parte de uma extensão/skill third-party, isso deve aparecer em packages/pi-stack/extensions/data/capability-owners.json, não em uma memória paralela. O campo curationCoverage registra a superfície coberta, o pacote third-party, os arquivos filtrados e a estratégia: keep, suppress-by-filter, remove-from-profile ou needs-decision.

O sinal é avaliado por stack_sovereignty_status como curationCoverage. Ele deve mostrar:

Regra: se a curadoria cobre uma superfície, ela precisa estar filtrada, removida do perfil, ou explicitamente justificada como decisão pendente.

Apresentação do Pi como superfície única

A experiência visível do Pi não deve ser tratada como uma coleção solta de plugins. A capability pi-session-presentation cobre o que o operador percebe como sessão: footer/status, headers, prompts automáticos, comandos, skills expostas, tema, painéis e integrações editor/worktree. Quando uma extensão third-party altera essa apresentação, a decisão deve passar por curationCoverage antes de virar baseline para usuários.

Inventário de slimming da superfície distribuída

Classificação atual da distribuição @aretw0/pi-stack:

Superfície Classificação Racional operacional
STRICT_CURATED / curated-default (@aretw0/* + @davidorex/pi-project-workflows) keep Uso recorrente, baixo custo cognitivo e contrato canônico para board/workflows/monitors. É o baseline oficial de instalação.
RUNTIME_CAPABILITY_EXTRAS (@ifi/oh-pi-extensions, @ifi/oh-pi-ant-colony, @ifi/pi-web-remote) keep opt-in Alto valor para long-run/control-plane, mas exige intenção explícita; não entra no caminho simples por padrão.
stack-full / demais third-party (mitsupi, pi-lens, pi-web-access, @ifi/pi-* auxiliares) deprecate-by-default Úteis para laboratório/compatibilidade, mas com maior custo de superfície e risco de overlap; ficam disponíveis apenas por perfil explícito.
Scripts ad-hoc e diagnósticos pontuais (.sandbox/tmp, helpers temporários) docs-only ou remove/archive Promover só após 2+ ciclos operacionais com entrada/saída determinística e evidência; caso contrário arquivar/remover e deixar runbook curto.

Política aplicada: o instalador usa strict-curated como default; capacidades avançadas ficam em curated-runtime/stack-full por opt-in. Assim, ferramentas calibradas sem uso recorrente não são removidas do repositório quando ainda servem ao laboratório, mas ficam desligadas da distribuição simples e documentadas como exceção/compatibilidade.

Distribuição outcome-agnostic (simple-first)

Para evitar que a stack pareça “só para operações avançadas”: