{"id":50859023,"url":"https://github.com/alanpcf/cocada-core","last_synced_at":"2026-06-14T20:04:01.606Z","repository":{"id":364149065,"uuid":"1257340757","full_name":"alanpcf/cocada-core","owner":"alanpcf","description":"Toda IA opina. A Cocada julga. — Multi-family judge for your diffs: Claude, Codex and Gemini review independently and cross-examine each other; you only decide where they disagree.","archived":false,"fork":false,"pushed_at":"2026-06-11T22:03:37.000Z","size":747,"stargazers_count":0,"open_issues_count":0,"forks_count":0,"subscribers_count":0,"default_branch":"main","last_synced_at":"2026-06-11T22:05:03.122Z","etag":null,"topics":["ai","cli","code-review","developer-tools","llm","rust"],"latest_commit_sha":null,"homepage":null,"language":"Rust","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/alanpcf.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":"CONTRIBUTING.md","funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null,"notice":null,"maintainers":null,"copyright":null,"agents":null,"dco":null,"cla":null}},"created_at":"2026-06-02T15:31:21.000Z","updated_at":"2026-06-11T22:03:41.000Z","dependencies_parsed_at":null,"dependency_job_id":null,"html_url":"https://github.com/alanpcf/cocada-core","commit_stats":null,"previous_names":["alanpcf/cocada-core"],"tags_count":1,"template":false,"template_full_name":null,"purl":"pkg:github/alanpcf/cocada-core","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/alanpcf%2Fcocada-core","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/alanpcf%2Fcocada-core/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/alanpcf%2Fcocada-core/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/alanpcf%2Fcocada-core/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/alanpcf","download_url":"https://codeload.github.com/alanpcf/cocada-core/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/alanpcf%2Fcocada-core/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":34335702,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-05-26T15:22:16.424Z","status":"online","status_checked_at":"2026-06-14T02:00:07.365Z","response_time":62,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":true,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["ai","cli","code-review","developer-tools","llm","rust"],"created_at":"2026-06-14T20:03:59.004Z","updated_at":"2026-06-14T20:04:01.601Z","avatar_url":"https://github.com/alanpcf.png","language":"Rust","funding_links":[],"categories":[],"sub_categories":[],"readme":"# Cocada\n\n[![Crates.io](https://img.shields.io/crates/v/cocada.svg)](https://crates.io/crates/cocada)\n[![CI](https://github.com/alanpcf/cocada-core/actions/workflows/ci.yml/badge.svg)](https://github.com/alanpcf/cocada-core/actions/workflows/ci.yml)\n[![License: MIT](https://img.shields.io/badge/license-MIT-blue.svg)](LICENSE)\n\n\u003e **C**ross-examination **O**f **C**ode by **A**dversarial **D**iverse **A**gents\n\nToda IA opina. A Cocada julga.\n\nQualquer IA revisa o seu codigo e devolve uma lista de achados em tom\nconfiante — uns reais, varios ruido plausivel. O trabalho de descobrir em\nqual achado confiar sobra pra voce. O `cocada judge` resolve essa parte:\nfamilias de modelo diferentes (Claude, Codex/GPT, Antigravity/Gemini) revisam\no MESMO diff de forma independente, cruzam os achados em cross-exame, e sobra\num veredito classificado — **voce so decide onde elas discordam**.\n\n| Ferramenta | Pergunta que responde | Como |\n|---|---|---|\n| teste (`cargo test`, `pytest`...) | \"o comportamento que eu previ continua valendo?\" | roda o codigo |\n| revisor IA (1 familia) | \"o que PODE estar errado?\" | le o diff e opina, com falsos positivos |\n| `cocada judge` | \"em quais achados da pra CONFIAR?\" | familias diferentes se cross-examinam |\n\nTese, mecanica e roadmap: [`docs/JUDGE.md`](docs/JUDGE.md). Medicao com bugs\nplantados: [`eval/`](eval/).\n\n## Quick start\n\n```bash\ncargo install cocada               # via crates.io\n\n# ou a partir do fonte:\ngit clone https://github.com/alanpcf/cocada-core\ncd cocada-core\ncargo install --path . --force\n\ncd /qualquer/projeto/com/git\ncocada judge .                     # julga o diff local (working tree vs HEAD)\n```\n\nPre-requisito por maquina: os CLIs oficiais das familias no PATH e logados\nnos planos que voce ja paga — bastam 2 entre `claude`, `codex` e `agy`.\nConfira com `cocada doctor`.\n\n## O comando central: `judge`\n\n```bash\ncocada judge .                     # diff local\ncocada judge . --staged            # so o que esta em staging\ncocada judge . --range main..HEAD  # diff da branch\ncocada judge . --with c,x,g        # escolhe as familias (default: c,x)\ncocada judge . --dry-run           # plano + prompts exatos, sem chamar modelo\ncocada judge . --json              # relatorio machine-readable no stdout\ncocada judge . --gate              # exit 2 se sobrar achado HIGH (uso em CI)\n```\n\nComo funciona, em duas ondas de LLM (ambas paralelas):\n\n```text\n1. revisao INDEPENDENTE   cada familia revisa o diff sem ver as outras\n2. convergencia (local)   mesmo problema achado por 2+ familias de forma\n                          independente -\u003e confirmado sem gastar chamada\n3. CROSS-EXAME (batched)  cada familia tenta REFUTAR os achados solo das\n                          outras, todos numa unica chamada por familia\n4. veredito               confirmado | refutado | EM DISPUTA (sua pauta)\n```\n\nCusto maximo: 2 chamadas por familia, independente do numero de achados.\nRead-only de fato em Claude e Codex; o agy so tem sandbox (permite escrita\nno workspace) e o judge avisa quando ele entra no time.\n\nO veredito sai no terminal (disputas primeiro) e fica salvo em\n`~/.agent-harness/projects/\u003crepo-key\u003e/judge/\u003ctimestamp\u003e-report.{md,json}`.\n\n### Acoplavel a qualquer projeto\n\nO judge julga `git diff` — qualquer linguagem, qualquer repo. Tres acoples\nprontos (receitas completas em [`docs/JUDGE.md`](docs/JUDGE.md)):\n\n```bash\ncocada judge ~/outro/projeto                                  # binario global\ncocada judge . --range origin/main..HEAD --gate               # hook pre-push\ncocada judge . --gate --json \u003e judge.json                     # CI/ferramentas\n```\n\n### O judge ja julgou a si mesmo\n\nNos dois primeiros runs reais, o proprio diff que criou o judge foi julgado:\n5 achados reais confirmados em cross-exame (incluindo uma promessa falsa de\nread-only e um bug de convergencia dependente de ordem) — todos viraram fixes\ncom teste. Historia completa em [`docs/JUDGE.md`](docs/JUDGE.md); medicao\nsistematica em [`eval/`](eval/).\n\n## Por baixo do judge\n\nO judge chama os CLIs oficiais (`claude`, `codex`, `agy`) com os logins\nlocais. Por padrao tudo usa `--auth subscription`: as variaveis de API\n(`OPENAI_API_KEY`, `ANTHROPIC_API_KEY`, credenciais Google etc.) sao removidas\ndo ambiente dos subprocessos para nao cair em billing por API sem querer.\n`--auth inherit` herda o ambiente de proposito.\n\nSuporte ao judge:\n\n```bash\ncocada doctor                                   # CLIs no PATH, versoes, env de API\ncocada models                                   # modelos/perfis reais por familia\ncocada config show\ncocada config set codex --model gpt-5.5 --effort xhigh\ncocada config set claude --model opus --effort max\ncocada config unset codex\n```\n\nDefaults ficam em `~/.config/cocada/config.json`. Precedencia: flag explicita\n(`--with c:opus`) \u003e default salvo do provider \u003e default do proprio CLI.\n\n## Logs\n\nCada execucao real grava em\n`~/.agent-harness/runs/\u003crepo\u003e-\u003chash\u003e/\u003ctimestamp\u003e-\u003cprovider\u003e/`:\n`prompt.txt`, `command.txt`, `status.json` (atualizado ao vivo), `stdout.txt`,\n`stderr.txt`, `result.json` e `summary.md`. Dry-run nao cria logs nem chama\nmodelo.\n\n## Por que Rust\n\nBinario rapido de iniciar, distribuicao sem runtime, controle fino de\nsubprocessos (streaming, timeout, kill de process group, env limpo) e\ntipagem forte para providers e modos de acesso.\n\n## Politica de idioma\n\nComandos, subcomandos, flags e aliases em ingles — CLI previsivel e\ndocumentavel. Prompts e documentacao em portugues; versao EN dos docs e parte\ndo plano de abertura do repositorio.\n\n## Estado atual\n\n- `cocada judge`: julgamento multi-familia de diffs, acoplavel a qualquer\n  repo git — ver `docs/JUDGE.md`;\n- eval com bugs plantados em `eval/` (corpus + runner + scorer + resultados);\n- ~5 mil linhas de Rust focadas: o legado da era harness/sala foi removido\n  (vive no historico do git e nos documentos historicos);\n- zero warnings de clippy (gate de CI com -D warnings) e 69 testes, incluindo\n  E2E que dirigem o binario real contra providers stub;\n- licenca MIT em `LICENSE`.\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Falanpcf%2Fcocada-core","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Falanpcf%2Fcocada-core","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Falanpcf%2Fcocada-core/lists"}