Plataforma web para maratonas de programação no estilo ICPC: múltiplos contests, múltiplas sedes, auto-judge distribuído em sandbox, placar com congelamento e revelação, clarificações, rejulgamento auditável e Contest API.
| Você quer… | Vá para |
|---|---|
| usar o sistema (competir, organizar, julgar, atender) | Manuais |
| entender como o sistema é por dentro | Especificação de software |
| saber por que algo foi feito de um jeito | Decisões de projeto |
| integrar com a API | api/openapi.yaml |
| operar algo específico | Runbooks |
Um por papel, escrito para quem vai usar — não para quem vai programar.
- Participante — competir: enviar, acompanhar, clarificação, S.O.S.
- Organizador — montar o evento, conduzir o ciclo da prova, publicar o resultado.
- Juiz — fila, verificação, pausa de problema, rejulgamento.
- Staff e sede — S.O.S., tarefas, impressão, coordenação de sede.
Documento único, consolidado e normativo. Usa DEVE / NÃO DEVE / PODE, e
identificadores estáveis (RF-*, RNF-*, RN-*, UC-*, ENT-*, INT-*)
para serem citados em issues, PRs, testes e decisões.
Cobre, numa peça só:
| Parte | Conteúdo |
|---|---|
| 1–2 | definição, escopo, glossário, stakeholders, arquitetura, RN-001…RN-060 |
| 3 | F01…F25 com critérios de aceite, não funcionais em 10 categorias, interfaces |
| 4–5 | priorização P0/P1/P2 e rastreabilidade |
| 6–9 | classes, processo de desenvolvimento, cronograma e custo |
| A | casos de uso detalhados UC-01…UC-26 |
| B | catálogo UML: pacotes, componentes, implantação, máquinas de estado, sequência, atividades |
| C | modelagem de dados: DER, dicionário de entidades, integridade |
| D | contratos de API e integrações, incluindo CLICS |
| E | segurança, privacidade e fronteiras de confiança |
| F | estratégia de testes e critérios de aceite de release |
| G | eventos, auditoria e observabilidade |
| H | checklist operacional de competição |
Ele descreve comportamento implementado, não intenção. Se a tela divergir do documento, o documento está desatualizado — abra uma issue.
Os diagramas ficam em software-spec/: classe, caso de uso e
a fonte editável.
Uma issue que chega num ponto de decisão vira um documento aqui: o que foi decidido, com que evidência, e o que reabriria a decisão.
- 211 — O congelamento do placar
- 223 — O estado da prova, do servidor para o relógio
- 225 — Os atalhos legados faziam o oposto do que prometiam
- 198 — Intervalos de tempo removidos da prova
- 202 — Finalizar a prova e derivar a premiação
- 44 — Transmissão BOCA e cerimônia
- 49 — Isolamento obrigatório do juiz
- 194 — Autoteste do sandbox na máquina de julgamento
- 53 — Exploração de julgamento distribuído
- 53 — Gestão de máquinas de julgamento (fase 4)
- 126 — Vazão de julgamento: medir antes de justificar
- 196 — Tempo medido, fase 1: medir e avisar
- 251 — O limite derivado, e o que "por host" quer dizer
- 45 — Recuperação de envios sem atividade
- 192 — Rejulgamento em lote, com prévia
- 200 — Importar o formato de pacote da ICPC/Kattis
- 242 — Caminhos que saem do próprio pacote
- 147 — Importação de evento por arquivo
- 46 — Propriedade do banco e etiquetas
- 42 — Análise de similaridade
- 43 — Treino Livre, fase 1
- 188 — Gestão de organizações
- 47 — Contas gerenciadas e privacidade
- 48 — Consolidar autorização sem mudar comportamento
- 146 — Sede sem link com o servidor central
Procedimento para executar quando chegar a hora.
- 252 — Homologação do streaming do event feed
— o
curl -Nexato, o critério de passa/falha, e a homologação com um resolver de verdade. Rode antes de qualquer prova que use resolver.
- Design
- Acessibilidade
- Auditoria de prontidão de release
- Auditoria visual
- Revisão de workspaces por issue
handoffs/ — estado do trabalho no momento em que uma sessão
terminou, para outra pessoa (ou outra sessão) retomar sem redescobrir
contexto.
- Mudou papel, rota, entidade, ciclo de vida, julgamento ou placar? A especificação e os manuais mudam no mesmo PR — ou o PR justifica por que não há impacto documental.
- Uma decisão arquitetural vira
docs/specs/<issue>-<tema>.md, com a evidência e o que a reabriria. - Um procedimento que alguém vai executar vira
docs/runbooks/. - Um manual descreve o que o sistema faz, não o que se pretendia que ele fizesse. Divergiu da tela? O manual está errado.