MOJ: Manual dos juízes (.judge e .cjudge) — MOJ docs

MOJ: Manual dos juízes (.judge e .cjudge)

Este manual é para as pessoas que julgam as submissões de um contest do MOJ pela interface web. Há dois papéis, e cada um vem do sufixo do seu login:

Login termina em Papel O que ganha
.judge Juiz Vê e trabalha a fila de avaliação.
.cjudge Juiz-chefe Herda tudo do juiz e ainda ganha um painel de chefia.

O juiz-chefe herda tudo o que o juiz faz. Ou seja, leia a Parte 1 mesmo se você for .cjudge: ela vale para você também. A Parte 2 acrescenta os poderes extras.

Quando este manual vale

Tudo aqui só acontece quando a prova está em modo de veredicto manual (a organização liga a opção MANUAL_VERDICT). Nesse modo, as submissões param numa fila esperando o olho de um juiz antes de o resultado chegar ao competidor.

Sem essa opção ligada, a correção é automática: a máquina calcula o veredicto e entrega direto ao competidor. Nesse caso não há fila e não há nada para o juiz fazer. Se você abrir a aba de avaliação e ela estiver vazia ou ausente, provavelmente a prova não está em veredicto manual.

Parte 1: .judge (juiz)

Abas que você vê

Como juiz, sua barra de navegação tem estas abas:

Aba Para quê
Contest O enunciado da prova e os problemas.
Score O placar.
Clarification Perguntas e respostas (esclarecimentos).
⚖️ Avaliar A sua fila de avaliação. É aqui que você trabalha.
Todas as Submissões O feed completo da prova, anônimo: você vê horário, problema, veredicto cru, código e log — mas não vê usuário nem time (nem a API revela; quem submeteu é irrelevante para avaliar).
Estatísticas Números da prova.
Sair Encerra a sessão.

Uma diferença importante em relação a um competidor: você, juiz, também enxerga o texto cru do veredicto que a máquina calculou. O competidor não vê isso.

A fila de avaliação

A fila fica na aba ⚖️ Avaliar (URL /contest/judge/). No topo da página há quatro contadores que resumem o estado geral:

Contador Significa
Não avaliadas Submissões seguradas, ainda sem ninguém trabalhando nelas.
Sendo avaliadas Alguém já pegou e está julgando agora.
Aguardando 2º voto Já tem um voto, falta o segundo juiz concordar.
Em conflito Os dois votos divergiram. Só o juiz-chefe resolve.

Abaixo dos contadores vem a lista das submissões seguradas para revisão. Para cada uma, você vê:

Fluxo de avaliação, passo a passo

  1. Pegar p/ avaliar (Claim to evaluate, numa prova em inglês). Clique para reservar a submissão. No máximo 2 pessoas podem estar na mesma submissão, e sua reserva tem um tempo limite de 5 minutos. Ao pegar, a tela troca para um painel estável, que não recarrega sozinho enquanto você trabalha (assim você não perde o que está fazendo).
  2. Analisar. No painel você tem tudo à mão: o veredicto de referência, o log de execução, o código enviado e um seletor de veredicto. Dois botões ajudam: +5 min (pede mais tempo, caso os 5 minutos não bastem) e Desistir (larga a submissão para outra pessoa pegar).
  3. Votar e liberar. Escolha o veredicto no seletor e clique para votar. Atenção: o voto é permanente (não dá para desfazer) e ele libera você na hora para pegar a próxima tarefa.

Dois juízes têm de concordar

Uma submissão só tem seu veredicto entregue ao competidor quando N juízes votam a mesma coisa — o N é decidido pelo admin do contest (Configurações → "Nº de juízes que validam", de 1 a 5; o padrão é 2). Quando os votos batem, o veredicto vai para o competidor (a entrega é feita por um único escritor, o daemon, para não haver bagunça). Com N=1, o seu voto sozinho decide.

Quando os dois votos divergem, a submissão vira um conflito e fica marcada para o juiz-chefe resolver. Um juiz comum não resolve conflito: sua parte termina no seu voto.

Aquecimento: o seu ensaio

Muita prova roda um aquecimento antes da prova oficial — mesma sala, mesmas contas, mesmo endereço. A fila que aparece ali é fila de verdade: submissões chegam, você pega, vota, e a regra de N juízes concordando vale igual. Use-o para conferir o que dói descobrir depois: se as opções de veredicto são as que esta prova quer, se o log e o código abrem na sua máquina, e se você e o outro juiz leem a mesma submissão do mesmo jeito.

Não deixe a fila do aquecimento pela metade. A promoção para a prova oficial é recusada enquanto houver submissão sem veredicto liberado — o servidor confere, antes de deixar a organização trocar de rodada, se a rodada terminou, se há job em voo no juiz, se há item na correção manual sem veredicto, se há veredicto pendente no history e se o daemon está vivo. Fila de aquecimento abandonada segura literalmente o início da prova. Termine o que você pegou.

Quando a rodada é promovida, tudo do aquecimento é arquivado: fila, submissões, clarifications e placar. A prova oficial começa com o histórico vazio — nada do que você julgou ali conta, nem vaza, para a prova.

Resumo do que o juiz pode

Pode Não pode
Ver a fila de avaliação e os contadores. Resolver conflitos.
Pegar e reservar submissões (máx. 2 por submissão, 5 min). Liberar um veredicto sem os dois votos.
Ver referência, log, código e votar. Editar a lista de veredictos ou o auto-veredicto.
Pedir +5 min ou desistir. Ver o painel de chefia.
Ver o texto cru do veredicto. Acessar administração, jplag, times, usuários.

Parte 2: .cjudge (juiz-chefe)

O juiz-chefe faz tudo o que o juiz faz: pega submissões, vota, participa da regra dos dois votos, tudo igual à Parte 1. Além disso, ganha um painel de chefia e alguns poderes extras.

Abas a mais

Além das abas do juiz, o juiz-chefe vê:

Aba Para quê
👑 Juiz-chefe O painel de chefia (detalhado abaixo).
Todas as Submissões A lista completa com usuário e time (o juiz comum a vê anônima), com o veredicto cru.

O painel do chefe

O painel fica em /contest/chief/ e tem 4 abas:

  1. 📊 Situação. Mostra cartões de resumo, a fila completa (com filtros e mostrando os votos dos outros juízes) e uma tabela "Desempenho por juiz" com: votos dados, tempo médio entre pegar e votar, concordâncias e conflitos. Cada linha da fila traz um botão Decidir/Resolver, que libera o veredicto na hora, sem esperar os dois votos (essa decisão fica registrada).
  2. ⚖️ Conflitos. Lista as submissões em conflito, mostrando os dois votos que divergiram, o log e a fonte, com um botão para resolver cada uma.
  3. 🏷️ Opções. Edita a lista de veredictos que os juízes podem escolher ao votar.
  4. ⚙️ Auto-veredicto. Edita a matriz (problema x linguagem x veredicto) que decide quais veredictos calculados pela máquina pulam a revisão manual e vão direto ao competidor.

Alerta de conflito

Em qualquer página do contest, o juiz-chefe recebe um aviso vermelho piscando (com som) toda vez que surge um novo conflito. Clicar no aviso leva direto à aba ⚖️ Conflitos. Assim você percebe o conflito mesmo que esteja em outra tela.

Outros poderes do chefe

Aquecimento: o que só o chefe confere

O aquecimento é o único momento em que a mesa inteira roda com submissões de verdade e nada em jogo. É ali que você confere o que só você muda: quantos juízes um veredicto exige, quais veredictos a matriz de auto-veredicto libera sozinha, e se o alarme de conflito chega mesmo até você. Conflito que ninguém vê no aquecimento é conflito que ninguém verá na prova.

É também onde você vê a fila drenar — porque a promoção para a prova oficial é recusada enquanto houver item sem veredicto liberado, job em voo ou veredicto pendente. A aba 📊 Situação do painel é a tela que diz quando a mesa está limpa o bastante para a organização trocar de rodada.

Na promoção, os documentos perdem a marca de publicado. Os modelos e a capa sobrevivem (são configuração) e os PDFs gerados para o aquecimento vão para o arquivo da rodada — mas o que estava publicado deixa de estar. O info sheet, o caderno e a folha de time limits têm de ser publicados de novo para a prova oficial, ou os times abrem Arquivos & Recursos e não encontram nada.

O que o juiz-chefe NÃO é

O juiz-chefe não é administrador pleno. Ele não tem:

Os poderes dele se limitam a: julgamento, veredictos, notícias/respostas e estatística.

Resumo do que o juiz-chefe pode

Pode (além de tudo o que o juiz pode) Não pode
Ver o painel 📊 Situação e o desempenho por juiz. Ser admin pleno.
Decidir/Resolver liberando veredicto na hora (registrado). Abrir a aba de Administração.
Resolver conflitos. Usar jplag.
Editar a lista de veredictos (🏷️ Opções). Mudar configurações do contest.
Editar o auto-veredicto (matriz problema x linguagem x veredicto). Gerenciar times ou usuários.
Ver Todas as Submissões com usuário/time e veredicto cru.
Responder clarifications (reservando antes; autor anônimo).
Editar respostas e notícias.
Receber o alerta piscante de conflito em qualquer página.

Para saber mais

Tutorial web com screenshots

As telas deste manual, passo a passo e com imagens (PT/EN), estão em /contest/ajuda/judge.html e /contest/ajuda/cjudge.html — o botão 📖 Como funciona este papel na sua tela abre direto.