Interface & Claims — o contrato do estado compartilhado (D5)¶
Identidade¶
- Tipo: contrato + lib/CLI + specs (core)
- Path:
_core/INTERFACE-CONTRACT.md·_core/linear_claims.py·_core/HANDOFF-FORMAT.md· spec do reaper emtimes/dev/context/ - Issues: epic DEV-1127 (stories DEV-1128…1131)
- Status: ativo (reaper = spec gated)
O que é¶
A D5 do estudo ruflo operacionalizada: agente fala com estado compartilhado via CLI, nunca MCP como fundação. O Linear é a fila e o sistema de claims (assignee+status); markdown+git é a memória curada; .pd/ é derivado local; Cadencia é negócio via cadencia-cli.
Como funciona¶
- Contrato: 3 canais com custo (hook empurra grátis · CLI puxa grátis · MCP paga contexto por mensagem) + teste de decisão + gatilhos que reabririam camada de estado própria (→ Supabase).
- Claims:
check(claimable/mine/taken/finished) ·claim(recusa dono ativo — sem steal silencioso; comenta auditoria) ·release(devolve com motivo). - Handoff: bloco em comentário Linear — razão tipada, % honesto, becos sem saída obrigatórios, próxima ação concreta.
- Reaper: spec do worker que devolve issue presa (2 estágios ping→release, dry-run, isenções) — só constrói com gatilho de evidência.
Quickstart¶
python _core/linear_claims.py check DEV-XXXX
python _core/linear_claims.py claim DEV-XXXX --as worker-1
python _core/linear_claims.py release DEV-XXXX --reason "bloqueada: credencial"
Don'ts¶
- Nunca criar MCP server pra estado que CLI resolve (o erro do ruflo).
- Nunca duplicar a fila do Linear em banco local (YAGNI).
- Nunca steal silencioso — dono ativo é respeitado.
Histórico¶
- 2026-07-03 — epic completo: d39c3d4 (contrato) · 9635d85 (claims, validado read-only no Linear real) · df25592 (handoff) · 513ece9 (spec reaper) · 6f4f309 (docs)
Notas Relacionadas¶
model-map · memory-engine · session-recorder · repo: _core/docs/interface-claims.md · manual §10.7