Como um caso é avaliado
Um caso não dá uma nota de zero a dez. Ele dá uma nota (score) em cada um dos seus critérios de rubrica (rubric criteria), e cada critério registra uma proficiência contra um componente de conhecimento no seu perfil.
Esta página explica o que é julgado e como. Ela não cobre o que o resultado vira depois — isso está em Níveis de Bloom e proficiência.
Não existe nota geral do caso
Seção intitulada “Não existe nota geral do caso”Nada no Fito soma os seus critérios. A rubrica de um caso declara um peso em cada critério, e o validador exige que esses pesos somem 100, mas nenhuma parte da avaliação, do envio ou do seu perfil lê esses pesos. Eles são um sinal para o autor do caso sobre importância relativa, não uma entrada para um total.
O que você recebe de volta é uma linha por critério, e o que fica guardado é uma proficiência por componente de conhecimento. Isso é proposital: um componente que você sabe aplicar e um componente de que você só ouviu falar são dois fatos diferentes, e um número médio esconde os dois.
O que é um critério de rubrica
Seção intitulada “O que é um critério de rubrica”Um caso carrega a sua rubrica no próprio repositório, em .case/rubric.yaml.
Cada critério declara:
- Um componente de conhecimento — o assunto do critério.
- Um nível de Bloom — a profundidade que ele certifica para aquele componente.
- Quatro descrições de nível, uma para cada nota de 0 a 3. Todo critério
precisa descrever as quatro; uma rubrica sem uma delas não valida. Elas são
uma escada de qualidade naquele único nível de Bloom —
not_achieved,partial,achieved,exemplary— e não uma subida de um nível para o próximo. - Um método de avaliação — como a nota é obtida.
Você pode ler os critérios de um caso antes de começar. A capa do caso em
/cases/<id> lista o componente de conhecimento e o nível de Bloom de cada
critério. Os comandos e as descrições de nível ficam no repositório do caso,
então você os vê depois de abri-lo.
Uma nota mede o quão bem, não o quão fundo
Seção intitulada “Uma nota mede o quão bem, não o quão fundo”A nota de um critério e o nível de Bloom dele medem duas coisas diferentes. A nota, de 0 a 3, diz o quão bem o seu trabalho atendeu ao critério. O nível de Bloom diz o quão fundo um critério atendido certifica.
Então uma nota 2 ou 3 registra o próprio nível de Bloom do critério como a sua
proficiência, e uma nota 0 ou 1 registra NOT_ACHIEVED. Um 2 em um critério
APPLICATION registra APPLICATION. Um 3 em um critério KNOWLEDGE registra
KNOWLEDGE, nunca mais que isso: o 3 muda o retorno, não a profundidade.
A tabela completa, e o que NOT_ACHIEVED quer dizer ao lado de um componente em
que você nunca foi avaliado, está em
Níveis de Bloom e proficiência.
Os quatro métodos de avaliação
Seção intitulada “Os quatro métodos de avaliação”Um critério é julgado de uma entre quatro formas, e o método é escolha do autor do caso, declarada por critério.
| Método | Como a nota é obtida |
|---|---|
automated |
Um comando roda no seu checkout. O código de saída e a saída dele são a evidência. |
ai |
Os seus artefatos e o seu git diff são lidos e julgados contra uma dica escrita pelo autor. |
hybrid |
O portão automatizado roda primeiro. Passou, fixa um nível; falhou, cai para ai ou human. |
human |
Ninguém local consegue avaliar. Volta marcado como Needs human review. |
Um comando automated que sai com código diferente de zero é evidência, não
uma falha do processo. Uma suíte de testes que quebra é exatamente a entrada de
que o avaliador precisa, então a execução segue e o código de saída e a saída
entram no relatório.
Cada comando tem um orçamento de 15 minutos. Um que ainda esteja rodando
depois disso é encerrado e reportado com código de saída 124. Isso também é
evidência — um build que trava é avaliado como um build que falha, em vez de
parar a execução inteira.
Quem faz a avaliação
Seção intitulada “Quem faz a avaliação”A avaliação roda na sua máquina, na sua própria assinatura de LLM. O servidor do Fito não guarda nenhuma chave de LLM e nunca vê o seu código nem os seus prompts. É por isso que a avaliação precisa de um provedor de LLM configurado no pi, e por isso que ela custa a você e não ao Fito.
Quem julga é uma persona trabalhadora chamada fito-performance-reviewer, que lê
o relatório de evidências e o seu checkout. Ela pode ler o notes.md da solução
exemplar para entender a justificativa do autor, e nunca coloca o código da
solução na sua frente.
Prévia, depois envio
Seção intitulada “Prévia, depois envio”A mesma avaliação roda duas vezes, sob dois comandos.
/fito-evaluate <case-id>Um ensaio contra o seu checkout local. Sem pull request, sem envio, sem nada
escrito no seu perfil e sem precisar de login. Cada critério volta com a nota
sobre 3, o rótulo correspondente, uma justificativa de uma frase e a proficiência
que um envio registraria. Onde um critério automated ficou abaixo de 3, a
saída capturada é mostrada para você ver o porquê. Rode quantas vezes quiser.
/fito-submit <case-id>A mesma avaliação, para registro. Ela roda depois que o pull request é aberto,
envia os resultados ao backend, move o envio para EVALUATED e escreve a
proficiência no seu perfil.
Para o que o /fito-submit faz antes de avaliar, veja
Enviar e ler o seu resultado.
O quiz, quando o caso tem um
Seção intitulada “O quiz, quando o caso tem um”Um caso pode carregar um quiz opcional de verificação de conhecimento em
.case/quiz.yaml. Muitos casos não têm nenhum, então um caso sem quiz não é um
caso incompleto.
As questões vêm em três tipos:
| Tipo | Como é avaliado |
|---|---|
multiple_choice |
De forma determinística, em código: atendida ou não atendida. Nenhum modelo participa. |
short_answer |
De 0 a 3, pela mesma persona que avalia a rubrica, no próprio nível de Bloom da questão. |
code_snippet |
De 0 a 3, pela mesma persona. |
Toda questão nomeia pelo menos um componente de conhecimento e um nível de Bloom,
então um quiz registra proficiência do mesmo jeito que um critério de rubrica:
uma nota 2 ou 3 registra o nível de Bloom da questão, e uma nota 0 ou 1 registra
NOT_ACHIEVED.
Uma resposta de múltipla escolha é atendida ou não atendida
Seção intitulada “Uma resposta de múltipla escolha é atendida ou não atendida”Uma resposta de múltipla escolha correta é atendida. Ela vale 2 e registra o
nível de Bloom da própria questão. Uma resposta errada ou em branco não é
atendida. Ela vale 0 e registra NOT_ACHIEVED. Não há crédito parcial, e
nenhuma resposta vale 3.
Por isso o resultado aparece como correto ou incorreto, nunca como uma fração:
2/3 mostraria uma resposta certa como um ponto perdido. Uma questão aberta pode
chegar a 3, então o resultado dela mantém a nota sobre 3.
Onde fica o gabarito
Seção intitulada “Onde fica o gabarito”O gabarito nunca chega à parte da sessão com que você conversa. O endpoint público
GET /cases/{id}/quiz serve os enunciados e as alternativas e omite as respostas
por completo, e durante a execução o gabarito fica só com a etapa de avaliação.
No /fito-evaluate o quiz é treino — você responde e vê as notas, e nada é
registrado. No /fito-submit as respostas são avaliadas para registro.
Quando a rubrica e o quiz cobrem o mesmo componente
Seção intitulada “Quando a rubrica e o quiz cobrem o mesmo componente”Eles são combinados pelo maior nível dos dois, sejam quais forem as notas por
trás deles. Se a rubrica registra KNOWLEDGE
para um componente e o quiz registra COMPREHENSION para o mesmo, o que fica no
seu perfil é COMPREHENSION.
Um caso que traz um quiz e nenhuma rubrica avaliável é marcado como EVALUATED
só pelo quiz.
O que vem a seguir
Seção intitulada “O que vem a seguir”- Níveis de Bloom e proficiência — o que a nota de 0 a 3 vira depois de registrada.
- Enviar e ler o seu resultado — o comando que roda isso para registro.
- Componentes de conhecimento — aquilo para onde cada critério aponta.