No ar · coleta até 01/11 dados de 30/10/2026, 16:02
PROJETO · HISTÓRICO DE VERSÕES

Versões

Todas as mudanças importantes do projeto, em ordem reversa cronológica. Formato segue Keep a Changelog; versões em SemVer.

Histórico de versões

Registro cronológico de tudo que mudou no painel — dados, metodologia e interface —, da versão mais recente para a mais antiga.

Página 5 de 14 · 167 versões no total.

  1. v4.45.0 2026-09-02 Quem fala: a voz na cobertura, par a par

    Adicionado

    • Passada "quem fala" (src/produtores/voz.py, tabela article_voice). A rubrica de sentimento define o jornalismo declaratório e pontua a favor de quem fala, mas gravava só o tom. Agora cada par artigo×candidato verificado, desde 10/08/2026, carrega três respostas: o candidato fala na matéria (sujeito de verbo dicendi, aspas, entrevista — a mesma definição da rubrica v2.2), um terceiro fala sobre ele (com nome e papel), ou ninguém fala. Relato de pesquisa não é voz: instituto "dizendo" um número é relato. Primeira carga em 01–02/09 (21.779 pares, 3 omitidos, 5h25); incremental a cada coleta, logo após o verificador. Piloto de 59 pares comparou lote por artigo com um a um: fala própria idêntica em 59/59. Nasce para a série "16 respostas sobre a imprensa" (peças 5 e 6) e entra no painel em seguida.
  2. v4.44.0 2026-08-30 Uma régua só para toda a série

    Mudado

    • A rubrica de sentimento ganha o jornalismo declaratório. Matéria construída apenas sobre a declaração de uma fonte, sem que o veículo apure ou confronte o que foi dito, é favorável a quem fala — ceder manchete, credibilidade e alcance a uma fala não verificada é ganho editorial para quem a proferiu, independentemente de o que foi dito ser bom, ruim ou falso — e desfavorável a quem a fala ataca. Duas fronteiras ficam explícitas: quem fala precisa ser o candidato analisado (relato de pesquisa continua neutro, mesmo quando o instituto "diz" que alguém lidera), e protagonismo sem fala não basta (agenda, gravação de propaganda e articulação relatadas em tom factual seguem neutras).
    • O contexto de cada época passa a acompanhar a matéria. As regras de classificação são as mesmas do início ao fim da série; o que varia com a data é apenas quem era quem — o campo ainda aberto em março, as convenções em agosto, as candidaturas registradas depois. Sem isso, reler uma matéria de março com a lista de hoje seria anacrônico.
    • Todo o acervo desde 25/03 foi reclassificado com a régua nova. A série carregava quatro réguas sobrepostas, e o degrau aparecia nos números: a fatia de textos neutros saltava de cerca de 29% entre março e julho para 56% em agosto — mudança do nosso critério, não da imprensa. Comparar fases da campanha agora mede a cobertura, não o método. Os rótulos antigos ficam preservados para auditoria.
    • Cada matéria passa a ser classificada sozinha, e não mais em lotes de cinco. Medimos que o vizinho no lote contaminava o julgamento: a mesma matéria mudava de classificação em 11% dos casos apenas por trocar as que a acompanhavam.

    Como a régua foi fechada

    • Duas rodadas de avaliação humana às cegas (29 e 30/08), com 79 casos julgados sem que o avaliador soubesse o que a máquina havia respondido. Na primeira, o julgamento humano divergiu do sistema e o exame das divergências mostrou que a máquina estava certa: faltava à rubrica a categoria do declaratório. A segunda rodada testou a régua nova nas suas fronteiras.
    • Contra esse gabarito humano, a régua nova reproduz o julgamento editorial em 89% dos casos, contra 67% da anterior.

  3. v4.43.0 2026-08-29 Post de rede social não é cobertura jornalística

    Removido

    • 269 itens de rede social saem do acervo — 167 posts do Instagram, 85 do X/Twitter, 16 do Facebook e 1 do YouTube, coletados entre 25/03 e 29/08. Não são matérias: o corpo capturado de um post do Estadão no Instagram terminava na caixa de comentários dos leitores, e o classificador media aquilo como se fosse o tom do veículo. O painel mede a cobertura da imprensa; post de rede social não é imprensa.
    • Com eles saem 399 pares candidato-matéria (0,4% dos verificados), 1.155 tópicos, 17 registros de Zeitgeist e 10 pesquisas que o extrator havia tirado de posts. O acervo verificado passa de 95.920 para 95.521 pares.
    • As plataformas entram na lista de bloqueio dos coletores (Instagram, X/Twitter, Facebook, TikTok, YouTube, Threads e Bluesky), então não voltam na próxima coleta. Veículos cujo endereço contém o nome de uma rede — folhamax, midiamax, falagenefax — seguem sendo coletados normalmente; o bloqueio é por domínio exato, não por trecho do endereço.

    Contexto

    • O caso apareceu na lupa de avaliação humana de 29/08, quando um post do Instagram entrou por sorteio na amostra. A verificação anti-falso-positivo não o barrava porque ela julga se o candidato é mesmo o assunto — não se aquilo é jornalismo.
    • O conteúdo removido está preservado em cópia no banco (articles_social_backup_20260829 e as tabelas irmãs), caso a decisão seja revista.

  4. v4.42.0 2026-08-29 Panorama e Balanço: as duas páginas de conjunto ganham nome próprio

    Mudado

    • "Cenário Geral" e "Cenário" — que a fusão de ontem deixou lado a lado, distinguidos só pela ausência de uma palavra — passam a se chamar Panorama e Balanço.
    • Panorama (/panorama) é a cobertura na janela que o leitor escolher, de hoje à série completa: share of voice, timeline, tópicos emergentes e os rankings.
    • Balanço (/balanco) é o ciclo fechado — semana ou mês corrente, sempre comparado ao mesmo período anterior.
    • Endereços antigos redirecionam permanentemente, inclusive os de Cenário Semanal e Mensal, que agora apontam direto para o destino final em vez de encadear redirecionamentos.

  5. v4.41.1 2026-08-29 Correção: a contagem de denúncias do Pardal estava dobrada

    Corrigido

    • O vigia do Pardal contava cada denúncia duas vezes. Os pacotes do TSE trazem, no mesmo arquivo compactado, os 27 conjuntos estaduais e um consolidado nacional; a leitura somava os dois. Números corretos na leitura de 29/08: 110 denúncias contra candidaturas presidenciais (não 220) e cerca de 7,2 mil no país. A nota de 28/08 (4.39.1) foi corrigida com os valores reais. O mesmo defeito atingia o vigia de cassações — que segue em zero — e foi corrigido junto; as fichas de candidatura e patrimônio nunca foram afetadas (já liam só o consolidado).
    • Nada disso aparecia no painel: o Pardal é vigia interno, sem exibição pública.

  6. v4.41.0 2026-08-28 DeepSeek vira o modelo titular de classificação

    Mudado

    • Os cinco classificadores (sentimento, tópicos, gênero, verificação anti-falso-positivo e Zeitgeist) e o extrator de pesquisas passam a usar o DeepSeek V4 Flash (versão fixada, via Ollama Cloud) como titular, com o Gemini 3.1 Flash Lite como reserva — inversão da cadeia de resiliência que operava desde 11/08. Vale a partir da coleta das 07h de 29/08; o reprocessamento noturno da madrugada de 29/08 já roda no titular novo.
    • Motivo: custo — dois esgotamentos de saldo da API do Google em 15 dias. Benchmark de suporte (100 casos, gabarito independente Claude Haiku 4.5): DeepSeek com 87% de concordância em sentimento, acima dos 78% do Gemini de produção; um segundo candidato avaliado no mesmo dia (GLM 5.3 Flash) foi reprovado (56%, achatando classificações para o neutro). O Gemini permanece nas tarefas que só ele faz: geração de imagens e revistas de imprensa com busca integrada.
    • A linha 🔀 fallback do monitoramento inverte de significado: agora indica que o Gemini respondeu.

    Corrigido

    • A categoria "checagem" (4.39.0) era descartada na gravação por uma lista de valores válidos que não foi atualizada junto com o prompt — 4 artigos da tarde de 28/08 ficaram sem gênero e serão reclassificados automaticamente.

  7. v4.40.1 2026-08-28 Janela de 23/08 reclassificada pelo modelo titular

    Corrigido

    • Em 23/08, entre ~13h e ~22h48, o teto de gasto da API do Google esgotou e três coletas classificaram tudo pelo modelo reserva (nota de série da 4.37.0). Em 28/08, sentimento (729 vínculos) e tópicos dessa janela foram refeitos pelo modelo titular: 102 vínculos (14%) mudaram de classe de sentimento — na linha da divergência caso a caso medida no sombreamento de agosto. A distribuição agregada mudou pouco (era estatisticamente parecida com dias vizinhos); o ganho é a série uniforme e as fichas individuais corretas. Gênero, Zeitgeist e verificação anti-falso-positivo da janela foram mantidos (concordância de 94–97% entre os modelos nessas tarefas, e a verificação não é reversível).

    Nota de transparência

    • Na tarde de 28/08 o saldo da API esgotou de novo (desta vez o crédito pré-pago) e a coleta das 16h também rodou no modelo reserva até a recarga — o mesmo mecanismo de fallback visível segurou a operação. A reclassificação acima foi concluída após a recarga, já com o modelo titular.

  8. v4.40.0 2026-08-28 Cenário Semanal e Mensal viram uma página só

    Mudado

    • As páginas Cenário Semanal e Cenário Mensal — gêmeas em tudo, menos na janela — foram fundidas numa única página Cenário (/cenario), com um seletor "Esta semana / Este mês". Abre na semana: em campanha, o ciclo editorial é semanal. Os endereços antigos redirecionam permanentemente, então links salvos continuam funcionando.
    • A navegação encolheu de quatro para três entradas na seção "Visão geral" e foi renumerada.

    Contexto

    • A decisão estava condicionada à leitura de audiência: nos últimos 30 dias o Cenário Mensal foi a página menos visitada das três (75 visualizações, contra 242 do Geral e 177 do Semanal) — manter duas páginas gêmeas não se justificava.

  9. v4.39.1 2026-08-28 Vigia do Pardal (denúncias de propaganda)

    Adicionado

    • O coletor diário do TSE passa a vigiar o dataset do aplicativo Pardal (denúncias de propaganda eleitoral irregular), que estreou no CDN do TSE com a campanha: cerca de 6,5 mil denúncias no país, 103 contra candidaturas presidenciais na primeira leitura (28/08) — números corrigidos em 29/08; a versão original desta nota trazia o dobro (ver 4.41.1). O dado não nomeia candidatos — traz cargo, tipo de irregularidade, UF e o processo no PJe. Alerta interno dispara quando a contagem presidencial cresce; exibição no painel será desenhada se o dado se mostrar relevante.

  10. v4.39.0 2026-08-28 Gênero "checagem" (fact-check)

    Adicionado

    • O classificador de gênero jornalístico ganha a quinta categoria, checagem (fact-check): textos de verificação com veredito explícito — Lupa, Aos Fatos, Comprova, Estadão Verifica e seções afins, típicos da fase de horário eleitoral que começa hoje. A categoria aparece no filtro do Espectro Editorial e nas fichas de matéria e de candidato.

    Nota de série

    • Vale só para frente: artigos classificados antes de 28/08 permanecem como estavam (checagens antigas constam como "notícia"). Registrado em Revisões de série na Metodologia.

  11. v4.38.0 2026-08-28 Extrator de pesquisas eleitorais (fase sombra)

    Contexto

    • Começou o horário eleitoral gratuito (28/08–01/10) e pesquisas passam a dominar a cobertura. Os resultados registrados no TSE ficam sob embargo legal até depois do pleito — durante a campanha, o número só existe na cobertura jornalística.

    Adicionado

    • Extrator de pesquisas: a cada coleta, artigos com tópico de pesquisa passam por extração estruturada com IA — instituto, contratante, registro no TSE quando citado, cenário (estimulada, espontânea, segundo turno, rejeição), período de campo, amostra, margem de erro e os percentuais por candidato. Regras duras: só números explícitos no texto, nunca memória do modelo; média de agregador não conta como pesquisa; recorte de presidência da república — pesquisas para governador, senador ou outros cargos são ignoradas; validação automática de faixas e somas; extrações do mesmo levantamento em veículos diferentes são agrupadas por chave de deduplicação.
    • Fase sombra: por 2 a 3 semanas os dados só acumulam para validação manual — nada aparece no painel nem nos resumos editoriais. Ao fim da validação, os resumos passam a citar números de corrida exclusivamente a partir do dado estruturado, com instituto e data de campo.

  12. v4.37.0 2026-08-23 Disjuntor por cota no cliente de IA

    Contexto

    • Em 23/08 o teto mensal de gasto da API do Google estourou às 13h. A cadeia de fallback (deepseek) segurou as três coletas seguintes sem perder classificação, mas cada chamada ainda pagava três tentativas ao Gemini (1 + 2 + 4 s) antes de cair no fallback — cerca de 35 minutos por rodada esperando um erro que retry não resolve.

    Adicionado

    • O cliente de IA reconhece os dois erros de cota ("monthly spending cap" e "prepayment credits depleted") e abre um disjuntor no processo: as chamadas seguintes vão direto ao fallback, sem tentativas nem espera. A cada 30 chamadas uma sonda tenta o Gemini; só sucesso fecha o disjuntor. A linha [FALLBACK] do log — e por ela o contador do alerta no Telegram — continua igual. Com o fallback desligado (LLM_FALLBACK=0) o comportamento antigo permanece.
    • Teste unitário do cliente (tests/test_gemini_client.py), com SDK simulado.

    Nota de série

    • Entre 13h e ~22h40 de 23/08 (três rodadas) toda a classificação — gênero, sentimento, tópicos, verificador, zeitgeist — foi feita pelo fallback deepseek, não pelo Gemini. O sombreamento de agosto mediu 82,6% de concordância em sentimento entre os dois, com desvio de +9 pontos para "neutro" no deepseek.