Rust
Cargo.tomltokei · rust-code-analysis · cargo-llvm-cov · cargo-mutants
mido é a escada de verificação entre uma mudança e a entrega. Seis portões sobre todo o workspace. Um veredito amarrado à revisão que ele mediu.
Por que mido
Um agente pode produzir mil linhas antes do almoço. Um teste verde só diz que um comando saiu com zero; não diz que a mudança é pequena, está coberta ou que os testes de fato verificam algo.
O mido impõe o piso em ordem de custo: as verificações baratas de rodar vêm primeiro; as caras de falsificar, por último. Nada é medido só porque mudou. Tudo é medido porque vai ser entregue.
Veja o que a escada exigeA escada
Verificações baratas primeiro, prova cara por último. Todo portão precisa responder. Ferramenta ausente é INCOMPLETE, nunca passe.
Está limpo?
Formatador, linter e type checker sobre o alvo medido. Qualquer diagnóstico reprova o portão.
Dá para segurar na cabeça?
Linhas por arquivo, linhas por função, complexidade ciclomática e profundidade de aninhamento em todo o alvo — não só no diff.
Vai envelhecer bem?
Complexidade cognitiva e um índice de manutenibilidade onde a stack mede um. Nenhuma nota inventada onde ela não mede.
Ele se comporta?
A suíte do próprio projeto, cada comando que ele declara. Nunca pule, ignore ou afrouxe uma asserção para ficar verde.
Os testes passam por ele?
Cobertura total de linhas contra um piso, mais a queda contra uma baseline. Relatório vazio é INCOMPLETE, não 100%.
Os testes realmente asseguram?
Mutantes sobreviventes na mudança. Um sobrevivente precisa de uma asserção real ou de uma justificativa de equivalência por escrito.
Um contrato, três ecossistemas
O mido infere o módulo de linguagem pelo repositório, ou aceita --lang. O módulo é dono dos comandos, parsers, medição e baseline.
tokei · rust-code-analysis · cargo-llvm-cov · cargo-mutants
prettier · eslint · tsc · vitest/jest/c8 · stryker
prettier · eslint · vitest/jest/c8 · stryker
Um repositório que nenhum módulo reconhece sai com 2 e diz por quê. Não existe fallback silencioso.
Vereditos
O mido não dá nota por simpatia. A escada termina numa resposta honesta, e uma isenção nunca fica escondida.
Se a config isentou um portão, o veredito nomeia. Verde para a escada que você configurou, nunca uma afirmação sobre o portão que ficou de fora.
FAIL significa que o código quebrou o contrato. INCOMPLETE significa que o portão não chegou a um veredito — ferramenta ausente, arquivo ilegível, timeout. Nenhum dos dois é passe.
enabled = false não roda nada e reporta SKIPPED. O veredito diz waived: mutation — enabled = false in .mido.toml. Sem omissões silenciosas.
Um portão dispensado não é um portão aprovado.
Para agentes
O mido assume que um LLM escreveu a mudança e que outro vai continuar o trabalho. Não interativo por contrato, com evidência em primeiro lugar.
0 é pronto para entregar. 1 é portão reprovado. 2 é incompleto ou erro de setup. --json dá estrutura quando o chamador precisa de mais que o código.
Uma falha nomeia o portão, o contrato, a evidência e a correção. É escrita para a próxima tentativa, não para quem vai ler logs.
HEAD mais um hash do estado sujo. Um verde de antes da última edição não pode ser reaproveitado nela.
mido mcp expõe list_targets e run_ladder via stdio. Silencioso por padrão; o relatório markdown é o artefato.
BLOCKED — size=FAIL
[2/6] ✗ size — FAIL
split along a real seam — moving the code into another file does not pass this gate
MCP
Aponte um agente que fala MCP para mido mcp. Ele recebe as regras exatas da CLI: pacote desconhecido é erro de setup, argumento desconhecido é rejeitado.
list_targetsNome, caminho e tipo de cada alvo no repositório.run_ladderMede um alvo em silêncio; devolve o código de saída e o relatório.Configuração do cliente MCPJSON
{
"mcpServers": {
"mido": {
"command": "mido",
"args": ["mcp"]
}
}
}Comece aqui
Instale o binário e rode dentro de um repositório. O mido infere Rust, TypeScript ou JavaScript e funciona com a baseline embutida antes de você escrever qualquer config.
Instalação em uma linha
v0.5.0curl -fsSL https://github.com/alessandromalacarne/mido/releases/latest/download/install.sh | shOutros caminhos
cargo install mido-guardnix developcargo build --releasePrecisa de git e das ferramentas que os portões da sua stack chamam. nix develop traz todas.
O instalador confere a release contra o SHA256SUMS e coloca o mido em ~/.local/bin.
Na raiz do repositório: mido. Ele mede o workspace inteiro, não só o diff.
Mova um limite no .mido.toml quando fizer sentido. Uma isenção fica escrita e é nomeada no veredito.
O caminho de entrada
Seis portões entre o seu código e a entrega. Um veredito para entregar ao próximo leitor.
“Se quiser passar por aqui, leve ao menos uma espada e um escudo!”
Mido, guardando a entrada da Floresta Kokiri