Marcos
Marcos pequenos, cada um com um critério de saída que dá para conferir. Um marco só está feito quando o critério passa; “funciona na minha máquina” não conta. O estado de cada linha está em Status.
| # | Marco | Estado |
|---|---|---|
| M0 | Pesquisa e arquitetura | feito |
| M1 | Núcleo P2P: sala, cifra, gossip, entrega, fila | feito |
| M2 | Servidor MCP e channels | feito no protocolo |
| M3 | Documentação, site e harness | feito (site v2 em andamento) |
| M4 | Testes completos | feito |
| M5 | Release v0.1.0 | feito |
| M6 | Validação com duas sessões reais do Claude Code | em parte |
| M7 | Empacotamento (Homebrew, Scoop, winget) | planejado |
O M5 pode sair antes do M6: o release é útil para o próprio M6 (o colega baixa o binário em vez de compilar). Nesse caso as notas do release dizem com todas as letras que a validação com sessões reais ainda não aconteceu.
M0: pesquisa e arquitetura
Escopo: descobrir como um servidor MCP empurra mensagens para dentro de uma sessão do Claude Code, escolher o transporte P2P e fixar as decisões que o resto depende.
Entregue: pesquisa sobre channels, timeouts de MCP, iroh e iroh-gossip; ADRs 0001, 0002, 0004 e 0005.
Critério de saída: cada decisão com alternativas descartadas e o motivo. Cumprido.
M1: núcleo P2P
Escopo: room, proto, store, net, node. Dois nós na mesma sala trocam mensagens com
confirmação, e nada se perde se um deles está fora do ar.
Critério de saída:
| Critério | Verificação | Resultado |
|---|---|---|
| Mensagem entregue e confirmada | tests/node.rs, rede local | passa |
| Fila sobrevive a reinício do remetente | tests/node.rs | passa |
Endereçamento com to | tests/node.rs | passa |
| Dois processos se acham pela internet pública | cargo test --test mcp -- --ignored | passa em cerca de 6 s |
O último critério falhou na primeira tentativa: a sala nunca se formava. A causa era o iroh-gossip não discar de novo um par cuja primeira discagem falhou. O contorno virou a ADR 0003 e uma linha em Problemas conhecidos.
M2: servidor MCP e channels
Escopo: papo mcp por stdio com as ferramentas send, wait, inbox, history e status,
push por notifications/claude/channel e instruções de colaboração para o agente.
Critério de saída:
| Critério | Verificação | Resultado |
|---|---|---|
Handshake e capability claude/channel | tests/mcp.rs | passa |
Negociação nunca passa de 2025-11-25 | tests/mcp.rs e teste unitário | passa |
Notificação de channel com meta válido | e2e público | passa |
wait cancelável e com timeout | tests/mcp.rs | passa |
| Push visto dentro de uma sessão real do Claude Code | M6 | pendente |
M3: documentação, site e harness
Entregue: livro em mdBook (este), ADRs, wiki do GitHub em wiki/, base OKF em
knowledge/, AGENTS.md, skills em .agents/skills/, site v1 no GitHub Pages, diagramas Mermaid e
esta camada de engenharia.
Critério de saída: mdbook build docs sem avisos, links internos resolvendo, site e livro no ar.
Cumprido. O site v2 (marca, design system e demo interativa) segue como trabalho separado.
M4: testes completos
Escopo: todos os tipos principais de teste: unitários, propriedade (proptest), robustez com
entradas arbitrárias e alvos de cargo fuzz, integração com nós reais, contrato do MCP, CLI com
snapshots, e2e, doctests, benchmarks, cobertura medida com limiar no CI, mutação e cargo-deny.
Critério de saída: a suíte inteira passa nos três sistemas, a cobertura das linhas da biblioteca fica acima do limiar definido no CI, e cada bug encontrado tem commit próprio e linha em Problemas conhecidos.
Estado: feito em 2026-10-02 e integrado na main: 146 testes offline, 94,3% das linhas cobertas, quatro bugs corrigidos com commit e teste próprios. Detalhes em Status.
M5: release v0.1.0
Critério de saída:
- M4 integrado em
maincom o CI verde. - Notas em
docs/releases/v0.1.0.mdrevisadas e fora do estado de rascunho. - Tag
v0.1.0publicada com o OK do mantenedor; o workflowreleasegera os 5 arquivos e os SHA-256. - Cada arquivo baixado da página de Releases confere com
sha256sum -c, epapo --versionroda em Linux, macOS e Windows.
Estado: feito em 2026-10-02. Tag v0.1.0 com as notas como corpo da release; os 5 arquivos
conferem com os SHA-256, os binários de Linux, macOS e Windows são do tipo certo, o de Linux x86_64
rodou uma troca real pela internet, e a imagem do GHCR baixa sem login nas duas arquiteturas. Rodar
os binários de macOS e Windows numa máquina desses sistemas fica para quem tiver uma (o CI já roda
toda a suíte de testes neles).
M6: validação com duas sessões reais
Escopo: a pergunta que importa: os dois Claudes se entendem sem humano no meio?
Critério de saída:
| Critério | Como verificar |
|---|---|
| Duas pessoas, duas máquinas, redes diferentes | anotar os tipos de rede (casa, escritório, 4G) |
| Push visto nas duas sessões | a mensagem aparece sem o usuário digitar |
| Modo pull visto numa sessão sem a flag | wait traz a resposta |
| Uma tarefa real resolvida pelos agentes | o resumo final bate com o que os dois humanos esperavam |
| Nenhum vazamento de segredo, nenhum loop de “ok/obrigado” | ler o papo log inteiro |
O resultado vai para Status com data, e as falhas viram itens do Roadmap.
Estado em 2026-10-02: em parte. Duas sessões reais do Claude Code (sonnet) conversaram pelo papo
no modo pull, na mesma máquina, e seguiram as regras de colaboração; ver
Validação com o Claude Code, repetível com
scripts/validate-claude-code.sh. Faltam o push por channels (confirmação interativa) e duas
máquinas em redes diferentes.
M7: empacotamento
Escopo: instalar sem baixar arquivo à mão: tap do Homebrew, bucket do Scoop, manifesto do winget e, talvez, um script de instalação. Depende do M5.