Releases: SidneyBissoli/senado-br-mcp-cloudflare
Release list
v3.4.0 — estatisticas + descricoes enriquecidas
What's Changed
- chore(server.json): drop "open data" from description lead by @SidneyBissoli in #35
- docs(readme): add Glama badge by @SidneyBissoli in #36
- docs(readme): use Glama small score badge by @SidneyBissoli in #37
- chore: corrige comentário de contagem do grupo e-Cidadania (8→9) by @SidneyBissoli in #38
- docs(readme): English-language example questions in "See it in action" by @SidneyBissoli in #39
- Sessão 2 — Higiene de deps + blindagem e-Cidadania (anti prompt-injection) by @SidneyBissoli in #41
- Sessão 1 — Harness de eval de seleção de tool by @SidneyBissoli in #40
- Eval: runner robusto a falhas de infra (retry + fail-fast) by @SidneyBissoli in #42
- Sessão 3 — Aprofundar proveniência (granularidade por-campo, #711, auditoria retrieved_at) by @SidneyBissoli in #43
- Sessão 4 (item 2) — migrar Zod 3 → 4 (Standard Schema) by @SidneyBissoli in #44
Full Changelog: v3.3.1...v3.4.0
Dataset e-Cidadania — dataset-v1.0.0
Changelog — dataset de participação do e-Cidadania
Changelog do DADO (separado do CHANGELOG.md, que é do código/servidor MCP).
Formato baseado em Keep a Changelog; o dataset segue
Versionamento Semântico próprio (dataset-v<X.Y.Z>), distinto
da versão do pacote npm/servidor.
O dado é append-only: releases não reescrevem valores publicados — corrigem via nova versão. Cada
entrada amarra a versão de schema (schemaVersion) vigente e aponta o version-DOI do Zenodo.
Convenção de bump (ver src/dataset/release.ts):
- MAJOR — mudança de schema (
schemaVersionsobe junto); - MINOR — edição periódica nova (mais dado, mesmo schema) — a cadência anual decidida na ETAPA 2;
- PATCH — release extraordinário (defeito de dado corrigido), com version-DOI próprio.
O concept-DOI (Zenodo) é estável entre versões — é o que um paper cita para "o dataset". Cada
release tem também seu version-DOI. Enquanto o Zenodo não cunha, os campos aparecem como
10.5281/zenodo.PENDENTE (ver docs/release-runbook.md).
[dataset-v1.0.0] — 2026-07 · Inaugural (bootstrap 2026)
- schemaVersion:
1.0.0 - concept-DOI:
10.5281/zenodo.PENDENTE· version-DOI:10.5281/zenodo.PENDENTE - Licença do dado: Dados Abertos do Senado Federal — uso livre com atribuição da fonte
(verLICENSE-DATA.md; separada da licença de código, MIT).
Adicionado (primeiro corte congelado)
Corpus completo da camada de participação do e-Cidadania, num único data package, com envelope de
proveniência por campo ({ value, sourceEndpoint, sourceField, retrievedAt, license, schemaVersion })
em cada valor de cada registro:
| Entidade | Registros (vintage de ref. 02/07/2026) | Série temporal |
|---|---|---|
consultas — Consultas públicas (Apoie) |
~7.773 | first-seen (censurada à esquerda) |
ideias — Ideias legislativas |
~113.704 | first-seen (censurada à esquerda) |
eventos — Eventos interativos (audiências) |
~5.443 | first-seen (censurada à esquerda) |
consultas_votos — Votos históricos por UF (acervo Arquimedes) |
15.085 | vintage único (série = 1) |
Contagens autoritativas do corte: os números acima são a referência do vintage de 02/07/2026; o
corte congela o corpus do D1 na data da tag (as três entidades vivas crescem com o cron diário —
consultas_votosé acervo congelado, não muda). As contagens exatas por arquivo, com checksums, ficam
emrelease.jsonedatapackage.jsondentro do bundle (odatapackage.jsoné coberto pelo
SHA256SUMS), que são a fonte autoritativa do que foi efetivamente congelado.
Dicionário de variáveis, operacionalização e proveniência campo-a-campo em
docs/dataset-dictionary.md (gerado da fonte única src/dataset/schema.ts).
Pipeline de harmonização documentado em docs/dataset-harmonization.md.
Resolução temporal do first-seen no bootstrap — declaração load-bearing
A série oficial de ritmo de entrada é o firstSeenAt = MIN(scraped_at) por registro
(ecidadania_history; Recon Parte III). Antes da entrada em produção do cron de crawl diário
(ingest-ecidadania.yml, cron: 0 5 * * *), a resolução do first-seen foi irregular: o corpus
completo era varrido em intervalos de 2 a 6 dias, então o first-seen de um registro tem a
granularidade do dia em que aquele crawl completo rodou, não do dia real de entrada. Consequências,
que fazem parte do contrato metodológico deste release:
- Piso duro da série = 14/06/2026 (criação da base D1). Nada encerrado e ausente da listagem atual
antes disso é capturável. - Censura à esquerda, baseline por entidade: o primeiro crawl completo de cada entidade concentra
a grande maioria dos first-seen num único vintage de baseline, que deve ser excluído de análises
de ritmo —consultas16/06/2026 (98,6%; série interpretável a partir de 22/06/2026);
ideias29/06/2026 (~99,9%; a partir de 30/06/2026);eventos29/06/2026 (~99,5%; a partir de
30/06/2026). - Período de bootstrap (irregular): entre o piso e a estabilização do cron diário, a série é
interpretável mas não uniforme — trate a resolução como "dia do crawl", não "dia da entrada".
A partir da produção do cron diário a resolução passa a ser de 1 dia. - Falhas de crawl (
erroemecidadania_scrape_runs) são lacunas conhecidas da série, nunca
silenciadas.
Caveats de dado herdados da harmonização (ETAPA 4 — validação de proveniência APROVADA 👤)
consultas_votosé acervo de vintage único (profundidade de série = 1): não é série temporal;
o único campo temporal éreferencePeriod(carimbo "dados atualizados até" do CSV Arquimedes).- Não existe data de abertura de consulta upstream (Recon Parte II) —
firstSeenAté o único
sinal prospectivo de ritmo;dataApresentacaofoi reprovado como proxy (enviesado). - Status de eventos dobra
REGISTRADO/"sem data prevista" emagendado(Recon §4.1) — declarado,
não corrigido (dívida de tool, não de dataset). - eventos
comentarios/hora/datasão só-listagem, com caveat PROVISÓRIO (achado A3 da ETAPA 4):
comentariosrecebe 0 quando ausente na listagem (indistinguível de zero real) ehora/datapodem
divergir da página de detalhe. Não use como medida fina de engajamento/horário antes do estudo de
reconciliação listagem×detalhe (planejado; ver ROADMAP). Proveniência permanece fiel à listagem. - Codificação: saída UTF-8; o CSV Arquimedes (
consultas_votos), servido em windows-1252 rotulado
como octet-stream, é transcodificado para UTF-8 na leitura. - Ordenação determinística: registros por
entity_idascendente e chaves JSON estáveis — dois freezes
do mesmo corpus produzem NDJSON byte-idêntico (o diff entre vintages é só mudança real de dado).
Integridade
SHA256SUMS (formato coreutils) e release.json (manifesto com versões, DOIs, commit e contagens)
acompanham a bundle. Verifique com sha256sum -c SHA256SUMS após descomprimir.
v3.3.1
Changed
agentsmoved from runtimedependenciestodevDependencies— it is only used by the hosted Worker, sonpx senado-br-mcpno longer downloads it (~1.1 MB + transitive). No behavior change.
v3.3.0 — Enriched error envelope
Added
- Every tool error now carries an actionable
hintand is mirrored instructuredContent, so errors are as parseable as successful results (additive, non-breaking).
Fixed
- e-Cidadania transient failures (HTTP 5xx/429, timeouts, network) are now correctly flagged
retryable: true.
v3.2.0 — Local channel + universal provenance
Added
- npm/stdio channel — run the same 66-tool server locally via
npx senado-br-mcp(stdio), hitting the official government APIs directly. Published to npm and advertised in the official MCP Registry alongside the hosted remote. - Provenance (source, source_url, dataset_id, reference_period, retrieved_at, attribution) now covers all 66 tools, not just the pilot set.
- Public
GET /status(version + last-deploy) and PII-free per-tool usage telemetry in Cloudflare Analytics Engine.