Keyboard shortcuts

Press ← or → to navigate between chapters

Press S or / to search in the book

Press ? to show this help

Press Esc to hide this help

Status

O que funciona, como foi verificado e o que falta. Atualize esta página a cada mudança que mexe numa linha da tabela. Definição dos marcos: Marcos. Planos: Roadmap.

Legenda:

  • verificado: exercitado de verdade, fora de um teste com rede simulada (internet pública, CI nos três sistemas, comando rodado à mão).
  • testado: coberto por teste automatizado com rede local (relay em processo), sem internet.
  • documentado: descrito, sem verificação automática.
  • não verificado: ainda não foi exercitado.

Marcos

MarcoEstado
M0 Pesquisa e arquiteturafeito: pesquisa, arquitetura, ADRs 0001 a 0005
M1 Núcleo P2Pfeito: sala, cifra, gossip, entrega com ack e fila offline, reconexão própria
M2 MCP e channelsfeito no protocolo; falta a sessão real do Claude Code (é o M6)
M3 Docs e sitefeito: livro, ADRs, wiki, OKF, site v1; site v2 em andamento
M4 Testes completosfeito: 146 testes offline + 1 pela internet, 94,3% das linhas cobertas, fuzzing, mutação e cargo-deny no CI
M5 Release v0.1.0feito em 2026-10-02: 5 binários + SHA-256 e imagem multi-arquitetura no GHCR, verificados depois de publicados
M6 Validação com duas sessões reaisem parte: duas sessões reais do Claude Code conversaram pelo papo no modo pull (validação); falta o push por channels e redes diferentes
M7 Empacotamentoplanejado

Núcleo P2P (2026-10-02)

ÁreaEstadoEvidência
Segredo da sala, convite papo1, derivação de tópico/chave/idtestado6 testes unitários em src/room.rs (ida e volta, convite truncado, ruído de apps de chat)
Selagem XChaCha20-Poly1305 com AAD papo/v1testadoroom.rs: abre só com a mesma sala, rejeita frame adulterado
Frames hello, msg, ack e limites (corpo 48 KiB, frame 64 KiB)testado4 testes em src/proto.rs
Entrega com ack, gravada antes de confirmartestadotests/node.rs::message_is_delivered_acked_and_logged
Fila offline que sobrevive a reinício do remetentetestadotests/node.rs::queued_message_survives_sender_restart_and_reaches_late_peer
Mensagem com to só para o destinatáriotestadotests/node.rs::addressed_message_only_reaches_the_addressee
Responder com reply_to marca como lidotestadotests/node.rs::replying_marks_that_peers_earlier_messages_as_read
Nó efêmero da CLI (say, status)testadotests/node.rs::human_cli_can_talk_but_is_not_remembered_as_member
Conexão pela internet pública (DNS/pkarr da n0 e relays)verificadocargo test --test mcp -- --ignored passou em todas as execuções locais de 2026-10-02 e no CI (job e2e-public-network); números em Desempenho
Reconexão com discagem própria (ADR 0003)verificadoantes do contorno a sala nunca se formava em 90 s; com tentativas fixas a cada 10 s, 12 s; com backoff a partir de 1 s, 6 s
Travessia de NAT entre redes diferentesnão verificadoos dois processos do e2e rodam na mesma máquina (ou no mesmo runner do CI); falta um teste entre duas redes de verdade
Caminho usado (direto ou relay)não verificadoo papo não expõe isso ainda; ver Roadmap

Servidor MCP e Claude Code (2026-10-02)

ÁreaEstadoEvidência
initialize, capability claude/channel, negociação que nunca passa de 2025-11-25testadotests/mcp.rs::speaks_mcp_and_advertises_the_channel_capability
tools/list com send, wait, inbox, history, statustestadomesmo teste
Perfil não configurado: o servidor sobe e explica o que fazertestadotests/mcp.rs::unconfigured_profile_still_starts_and_explains_setup
Um servidor por perfil (trava do arquivo)testadotests/mcp.rs::second_server_on_the_same_profile_is_refused
wait com timeout e cancelamento por notifications/cancelledtestadotests/mcp.rs::wait_times_out_and_can_be_cancelled
Notificação notifications/claude/channel com from, msg_id, sender_kindverificadoo e2e público recebe a notificação pelo stdout do binário real
Push numa sessão real do Claude Code (--dangerously-load-development-channels server:papo)não verificadoo formato segue a documentação de channels; ver Pesquisa
Modo pull (wait, inbox) numa sessão real do Claude Codenão verificadosó exercitado pelo cliente de teste, que fala MCP como o Claude Code
papo install executando claude mcp addnão verificadoinstall --print foi conferido à mão; o comando real não foi rodado para não mexer na configuração do mantenedor
Qualidade das instruções de colaboração (o modelo segue as regras?)verificado no modo pullduas sessões reais do Claude Code (sonnet) seguiram as seis regras; validação, repetível com scripts/validate-claude-code.sh

CLI (2026-10-02)

ÁreaEstadoEvidência
new, join, invite, install --printverificadorodados à mão com PAPO_HOME temporário
say entregue a um servidor MCP rodandoverificadoà mão: “entregue a colega”, e o servidor emitiu a notificação com sender_kind: human
status lista quem está online e no que trabalhaverificadoà mão contra um servidor rodando
log e log -f com horário localverificadoà mão

Distribuição e documentação (2026-10-02)

ItemEstadoEvidência
CI em Linux, macOS e Windows (fmt, clippy -D warnings, testes)verificadorun 37067916552 do workflow ci
Builds de release das 5 plataformasverificado (build)run 37067969904 do workflow release por workflow_dispatch; os binários de macOS e Windows não foram executados
Release publicado (tag)verificadov0.1.0: os 5 arquivos conferem com sha256sum -c; os binários são do tipo certo (ELF estático x86_64 e aarch64, Mach-O x86_64 e arm64, PE32+); o de Linux x86_64 baixado da release rodou --version e uma troca real pela internet (say entregue e empurrado como claude/channel); ghcr.io/kelvin-jesus/papo:0.1.0 baixa sem login, roda e tem amd64 e arm64
Site e livro no GitHub Pagesverificadohttps://kelvin-jesus.github.io/papo/ e /docs/ respondem 200
Diagramas Mermaid no livroverificado7 diagramas renderizados num Chromium headless sem erro
Wiki do GitHub sincronizada a partir de wiki/bloqueadoo GitHub só cria o repositório da wiki depois que a primeira página é salva pela interface; até lá o workflow wiki falha
Base de conhecimento OKF em knowledge/verificadovalidador da skill OKF sem erros nem avisos

Em andamento

  • Site v2: redesenho da página do projeto com conceito de marca, design system e demo interativa.

Testes (M4, 2026-10-02)

TipoQuantosOnde
Unitários (biblioteca e binário)33 e 9nos módulos de src/
Doctests3API pública de room e proto
Propriedade (proptest)13convite, cifra, frames, nomes, endereçamento
Robustez (bytes arbitrários)6decodificação de convite, frame, cifra e linhas do MCP
Armazenamento15escrita atômica, permissões 0600, trava, arquivos corrompidos
Nó5 + 16 cenáriosentrega, fila, reinício, várias salas, multi-hop, queda sem shutdown
MCP e contrato do MCP5 + 20JSON-RPC, cancelamento, progresso, freio, snapshots com insta, JSON Schema das ferramentas
CLI19comandos, erros e saídas
e2e local, dois processos (feature test-network)2dois papo mcp e a CLI num relay local
e2e pela internet1 (ignorado por padrão)cargo test --test mcp -- --ignored

Cobertura (cargo-llvm-cov): 94,3% das linhas e 93,1% das regiões; por módulo, proto 100, mcp 98,2, room 97,9, net 97,8, node 92,7, store 90,6 e main 87,9. O CI falha abaixo de 90% das linhas. Três alvos de cargo fuzz rodaram limpos localmente (31 milhões, 2,3 milhões e 2,6 milhões de execuções) e rodam no CI com tempo curto; o cargo-mutants roda por agendamento. Benchmarks com criterion em benches/ (cargo bench).

Não feito

Ver Roadmap: validação com duas sessões reais, travessia de NAT entre redes, empacotamento (Homebrew, Scoop, winget), plugin do Claude Code, assinatura dos binários.