Ir para o conteúdo
Aferiz

Documentar é fácil. Provar que o código faz o que foi pedido, não.

O Aferiz lê o requisito na sua fonte de verdade, olha o código no commit que você indicar e responde, critério a critério, com evidência em arquivo:linha.

Sem cadastro — a demo mostra tudo antes de qualquer conversa.

Escolha um requisito

Atesto real, sem cadastro:

Agendar exame com confirmação de preparo

commit c7d2a109 critérios

Atende
4
Parcial
1
Não atende
2
Inconclusivo
2
C1Endpoint POST /agendamentos/exames · Controllers/AgendamentoController.cs:69Atende

Rota declarada no controller e coberta por teste de integração que agenda e relê o horário criado.

EvidênciaControllers/AgendamentoController.cs:69commit c7d2a10

C2Orientação de preparo devolvida conforme o tipo de exame · Servicos/PreparoExameService.cs:24Atende

Jejum, suspensão de medicação e texto de orientação vêm do cadastro de preparo por tipo de exame, e não de constante no código; tipo sem regra cadastrada falha explícito, em vez de devolver preparo vazio.

EvidênciaServicos/PreparoExameService.cs:24commit c7d2a10

C3Horários gravados no fuso da unidade · Servicos/AgendamentoService.cs:63Parcial

Três dos quatro campos de data passam pelo conversor da unidade, que cai em America/Sao_Paulo quando a unidade não tem zona cadastrada. DataSolicitacao grava UTC cru e aparece três horas adiantado no prontuário.

EvidênciaServicos/AgendamentoService.cs:63commit c7d2a10

C4Confirmação de preparo obrigatória na requisição · Validadores/AgendarExameValidator.cs:14Atende

A requisição sem o aceite do paciente é recusada no validador, antes de chegar ao serviço, com mensagem no idioma do usuário.

EvidênciaValidadores/AgendarExameValidator.cs:14commit c7d2a10

C5Protocolo do agendamento contém a data do exame · Controllers/AgendamentoController.cs:85Atende

Padrão AGD-yyyyMMdd-0000, montado no controller com a data do exame e o sequencial do dia — não com a data em que o pedido foi feito.

EvidênciaControllers/AgendamentoController.cs:85commit c7d2a10

C6Horário já ocupado do profissional bloqueado na marcação · Servicos/DisponibilidadeProfissionalService.cs:45Não atende

A grade de horários livres sai só da escala do profissional, e o único filtro aplicado é o intervalo de almoço. Exame já marcado não é descontado, então dois pacientes ficam com as 8h do mesmo profissional; o desconto era esperado aqui, no montador das janelas.

EvidênciaServicos/DisponibilidadeProfissionalService.cs:45commit c7d2a10

C7Marcação restrita aos perfis Recepção e Corpo Clínico · Controllers/AgendamentoController.cs:76Não atende

O endpoint exige autenticação e nada mais: sem Roles, sem policy. Qualquer usuário autenticado — inclusive o próprio paciente logado no portal — agenda exame em qualquer prontuário.

EvidênciaControllers/AgendamentoController.cs:76commit c7d2a10

C8Teto de 40 exames por turno na sala de coletaInconclusivo

O serviço conta os agendamentos do turno, mas nada no commit fixa 40 como teto. O número pode estar na parametrização da unidade, que não vive neste repositório.

Sem evidência no código

C9Acesso ao dado de saúde registrado na trilha de auditoriaInconclusivo

O agente respondeu Atende citando Infra/Auditoria/AuditoriaService.cs:214. O arquivo tem 190 linhas no commit c7d2a10 — a linha citada não existe, e o veredito caiu para inconclusivo. Em dado de saúde, registrar quem leu o quê é exigência da LGPD, então o item volta para revisão humana.

Evidência não confirmadaInfra/Auditoria/AuditoriaService.cs:214Atende → Inconclusivo

Exemplo fictício de uma clínica médica — API em C#, front em TypeScript — com os atestos pré-computados.

Abrir a demo completa

Ninguém compara os dois lados

O requisito nasce num card. Vira código. O código vai para code review. O review é feito por quem leu o diff, não o requisito. A entrega é aceita por quem leu o requisito, não o diff.

Testes provam que o código faz o que o código diz. Lint e Sonar olham qualidade interna. Code review depende do revisor ter lido a spec. A pergunta “isso atende ao que foi pedido?” não tem dono.

Requisito · ClickUp

Agendar exame com confirmação de preparo

  • Exibir as instruções de preparo antes de confirmar
  • Recusar horário já ocupado do profissional
  • Registrar quem aceitou o preparo e quando
Código · vitalis-api

                88
                public async Task<Result<Agendamento>> AgendarAsync(
              
                89
                    AgendarExameRequest req, CancellationToken ct)
              
                90
                {
              
                91
                    var exame = await _exames.ObterAsync(req.ExameId, ct);
              
                92
                    var slot  = await _agenda.ReservarAsync(req.Slot, ct);
              
                93
                
              
                94
                    return await _repo.SalvarAsync(
              
                95
                        new Agendamento(exame, slot, req.PacienteId), ct);
              
                96
                }
              
não atravessou

Do pedido à entrega

  1. Você escreve o que precisa

    Do jeito que o time já escreve hoje, na ferramenta que já usa.

  2. A plataforma questiona antes

    Ela lê o sistema que já existe e aponta o que não fecha com o pedido — enquanto mudar ainda é barato.

  3. Vocês fecham o combinado

    O que ficou acertado vira o documento que todo mundo segue.

  4. Na entrega, ela compara

    Item por item: o que foi feito contra o que foi combinado.

  5. E mostra onde

    Só afirma que algo está pronto se puder apontar o lugar exato. Sem isso, não afirma.

Evidência, não opinião

Um parecer de IA sem evidência é irrefutável e inútil. Todo veredito do Aferiz aponta arquivo, linha e commit. E quando a evidência citada não existe no código, nós mesmos rebaixamos o veredito para inconclusivo.

Assistente genérico
“A implementação parece cobrir o requisito corretamente e segue boas práticas.”
Aferiz

C7Não atende

AgendamentoController.cs:76

endpoint de agendamento sem verificação de perfil

commit c7d2a10

Contar isso é contraintuitivo. Mas é a diferença entre uma ferramenta que você confere e uma que você usa.

O que muda no dia de cada um

É o mesmo mecanismo — requisito, código, evidência. O que ele muda no dia depende de onde você senta.

  • Quem escreve o requisito

    hoje

    O card vira tarefa sem nunca encontrar o código. A contradição aparece na sprint review, quando mudar já saiu caro.

    com o Aferiz

    Antes de virar tarefa, o requisito é confrontado com o código que já existe. Volta com ressalvas que apontam arquivo e linha e fazem uma pergunta que dá para responder. Ajustar custa uma frase.

    V2 · aberta · DisponibilidadeProfissionalService.cs:45

  • Quem desenvolve

    hoje

    A tarefa chega com o texto do card. O que estava combinado de verdade se descobre no code review — ou depois dele.

    com o Aferiz

    A tarefa chega com critérios explícitos, já batidos contra o sistema real. No code review, o parecer aponta o que não atende e em que linha.

    C7 · não atende · AgendamentoController.cs:76

  • Quem testa

    hoje

    Os casos saem do texto do card. Escreve-se teste por precaução, e ninguém sabe qual critério ficou descoberto.

    com o Aferiz

    Cada caso de teste nasce rastreado ao critério que cobre. Critério sem caso aparece como lacuna na tela — e caso que não cobre critério nenhum, também.

    C6 · sem caso de teste

  • Quem lidera a área

    hoje

    A divergência entre o que foi pedido e o que foi entregue aparece no fim: na homologação, na demo, no cliente.

    com o Aferiz

    Aparece no code review, critério a critério. E o porquê de cada regra fica registrado: toda ressalva aceita ou rebatida vira histórico do projeto.

    V2 · aceita com ajuste · registrada no projeto

O argumento de negócio, em três eixos

Você escolhe para onde seu código vai

O mesmo agente roda em qualquer motor. Dado sensível fica no modelo local, dentro da sua infraestrutura. Soberania é poder trocar de motor — não é um modelo fechado com outro nome.

  • claude-code
  • codex
  • opencode
  • grok
  • modelo local

Trocar de runtime não muda a definição do agente. É a mesma vara medindo.

Nada muda de lugar

O requisito continua no ClickUp, o código no GitLab, o aviso no Discord. O Aferiz lê de um lado, confere do outro e devolve o parecer no code review — nada para migrar, nenhum processo para mudar, nenhuma aba a mais para o time abrir.

de onde vem o requisito

  • ClickUp
  • Jira
  • Linear
  • NextWiki

de onde vem o código

  • GitLab
  • GitHub
  • Bitbucket
  • Azure DevOps

para onde vai o aviso

  • Slack
  • Discord
  • Teams
  • E-mail

Perguntas frequentes

Meu código vai para onde?

Para o runtime que você escolher. A tela mostra isso antes de executar. No self-hosted, com modelo local, o código não sai da sua infraestrutura.

E se a IA errar o veredito?

Erra mesmo. Por isso todo veredito positivo exige evidência que nós verificamos no commit — arquivo e linha precisam existir. Não existindo, o veredito cai para inconclusivo automaticamente. E você marca concordo ou discordo em cada um, o que alimenta a calibração.

Vocês commitam alguma coisa no meu repositório?

Não. Nunca. O Aferiz não escreve código de feature e não faz commit nem push, em nenhuma circunstância. Ele lê o código e comenta.

Funciona sem card bem escrito?

Funciona pior. Sem requisito não há o que atestar. Se o card for vago, os critérios saem vagos — por isso eles ficam editáveis antes do atesto, e um atesto sobre critérios não revisados sai marcado como tal.

Substitui code review?

Não — entra nele. O Aferiz comenta no code review como mais um parecer, e o revisor continua sendo quem decide. A diferença é a pergunta: o revisor humano olha como o código está escrito; o atesto olha se ele atende ao que foi pedido, critério a critério, com a linha do arquivo na mão. As duas importam.

Substitui o Sonar?

Não, e usa o resultado dele. O Sonar responde “o código está bem escrito?” — complexidade, duplicação, vulnerabilidade, cobertura. O Aferiz responde “o código faz o que foi pedido?”. Falta a checagem de horário já ocupado que o card exigia na marcação? O Sonar passa verde, porque o código está limpo. Método com complexidade 30? O Aferiz não vê, porque o requisito não falava disso. No pipeline, a análise estática e os testes rodam antes e alimentam o atesto.

Isso substitui o desenvolvedor?

Não, e não deveria. O Aferiz não escreve código, não decide merge e não resolve nada sozinho: ele mostra a diferença entre o que foi pedido e o que foi entregue, com evidência, para que uma pessoa decida o que fazer. Quem escreve o código, negocia prazo, entende o contexto do cliente e sabe quando a regra tem exceção continua sendo o time. O que sai da mesa do dev é a conferência manual e repetitiva — o julgamento fica.

Aprovar uma proposta aprova o merge?

Não. Aprovar publica o comentário do Aferiz no code review — uma chamada de API que cria uma nota. O estado de aprovação do MR/PR não é tocado, em GitLab, GitHub ou Azure. Quem aprova merge continuam sendo as pessoas. Se você quiser que um veredito negativo trave o merge, isso se faz por check de CI a partir do webhook, com a regra no seu repositório.

Funciona com a minha linguagem?

Funciona com qualquer uma. O Aferiz não é um analisador estático preso a uma sintaxe: um agente abre o repositório, lê os arquivos, busca, consulta o histórico, e confronta o que encontra com o requisito. Vale para Java, Python, Go, TypeScript, PHP, Kotlin, Rust — e vale também para o que não é código: migration, arquivo de configuração, pipeline. O limite honesto é o modelo do runtime que você configurar, que precisa ler bem a linguagem; os modelos de hoje leem bem as mais usadas. O que muda o resultado mais do que a linguagem é a clareza do padrão do projeto: quanto mais explícito o combinado, mais afiado o veredito.

Funciona com GitLab self-hosted? E monorepo?

Sim para o GitLab self-hosted. Para monorepo, um atesto pode abranger vários repositórios ou pastas — backend e frontend no mesmo veredito.

Chega de “mas eu pedi outra coisa”

Escreva para a gente e mostramos como o Aferiz acelera a entrega, corta o retrabalho e aumenta a margem do seu projeto.

O que foi combinado vira critério, e cada entrega mostra o que cumpriu — sem trocar as ferramentas que o seu time já usa.

Escreva direto para

contact@aferiz.com

Abrir no seu e-mail

Ajuda se você contar como o seu time combina hoje o que vai ser feito — ClickUp, Jira, wiki, planilha ou e-mail. Assim a resposta já vem no seu contexto.