Commit graph

1314 commits

Author SHA1 Message Date
Francisco Solla
bf4b439bf6 fix(C163): calibra link do vídeo do acervo ao t=608s da sessão 2026-09-15 10:04:03 -03:00
Francisco Solla
6e46f86e22 fix(C163): vídeo do acervo ancorado no trecho da Câmara, com folga 2026-09-15 10:04:03 -03:00
Francisco Solla
d7d34b8e81 fix(C163): vídeo do acervo abre no início da fala (speechAt − sessão) 2026-09-15 10:04:03 -03:00
Francisco Solla
3e7f750141 feat(C163): link do vídeo do acervo na minutagem do trecho 2026-09-15 10:04:03 -03:00
Francisco Solla
392cfa51d4 feat(C163): vídeo e transcrição no acervo de falas 2026-09-15 10:04:03 -03:00
Francisco Solla
d8ab364194 feat(C163): unifica a visualização da demografia em uma tabela 2026-09-15 10:04:03 -03:00
Francisco Solla
c501595c6a feat(C163): total populacional e revisão de apresentação do relatório 2026-09-15 10:04:03 -03:00
Francisco Solla
32a1a46fad feat(C163): demografia complementar, atividade econômica e transporte no relatório 2026-09-15 10:04:03 -03:00
Francisco Solla
576fda7f2c feat(C163): colunas mais largas no acervo de falas 2026-09-15 10:04:03 -03:00
Francisco Solla
00179cfca9 feat(C163): partido na lista de lideranças da cidade 2026-09-15 10:04:03 -03:00
Francisco Solla
d88bc56ddb feat(C163): concorrentes, falas descritivas, indícios de emenda, abordagem e links clicáveis no relatório (Related #1025) 2026-09-15 10:04:03 -03:00
Francisco Solla
1068d3c71b fix(C163): emendas por localidade, fontes compactas na página 1 e datas pt-BR (Related #1025) 2026-09-15 10:04:03 -03:00
Francisco Solla
ab9c164615 feat(OPS110): sessões persistentes de agente com attach/detach (Closes #1019) 2026-09-15 09:31:45 -03:00
Francisco Solla
93416cd5ef feat(C166): seleciona trecho do acervo e compartilha link no ponto + WhatsApp (#1013) 2026-09-15 07:51:44 -03:00
Francisco Solla
0c0725835b feat(B202): totais do recorte no rodapé da lista de municípios (Closes #1005) 2026-09-15 07:37:45 -03:00
Francisco Solla
e579406b1f feat(C163): relatório de cidade pré-viagem (agente + skill → PDF A4) (Closes #1007) 2026-09-15 07:10:45 -03:00
Francisco Solla
f41ef92473 docs(plan): OPS108 + OPS109 + OPS110 — modo --auto nas skills, painel TUI de issues e sessões de agente persistentes (Related #1018, #1020, #1019) 2026-09-15 07:08:31 -03:00
Francisco Solla
5097e8cb90 docs(plan): C166 + C167 + C168 — compartilhar trechos do acervo (link, corte e biblioteca) (Related #1013, #1014, #1015) 2026-09-15 06:53:22 -03:00
Francisco Solla
fc6846ebea fix(C164): registra canal de push normalizando expiration string na borda
O events.watch serializa o expiration (int64 epoch ms) como string JSON;
o client tipava number|null e o motor lancava RangeError: Invalid time
value no new Date(...).toISOString(), gravando pushChannelError sem
persistir o canal.

- parseGoogleWatchExpiration (borda do client) normaliza string|number
  para number|null com teto do range do Date; malformado cai no fallback
  de PUSH_CHANNEL_TTL_SECONDS, nunca lanca.
- pushChannelError ganha a causa do fetch (error.cause) preservada no
  teto de 500 chars.
- Unit: stub de transporte modela /watch (string real) + matriz do
  parser; int: caminho number->ISO, fallback null->now+TTL e causa.

Closes #1009
2026-09-15 06:52:50 -03:00
Francisco Solla
45617356ee docs(plan): C164 + C165 — canal de push do Google Calendar e importação automática de eventos (Related #1009, #1010)
Some checks are pending
Deploy / preflight (push) Waiting to run
Deploy / verify (push) Blocked by required conditions
Deploy / deploy staging (teqo-staging) (push) Blocked by required conditions
Deploy / requeue when main advanced (push) Blocked by required conditions
Deploy / deploy production (teqo-1313) (push) Blocked by required conditions
2026-09-14 15:17:07 -03:00
Francisco Solla
ba7aa50346 style(plan): C163 — formata rascunho A4 (Related #1007) 2026-09-14 14:44:00 -03:00
Francisco Solla
455498c07a docs(plan): C163 — relatório de cidade pré-viagem (Related #1007) 2026-09-14 14:44:00 -03:00
Francisco Solla
7ba31bbc03 docs(plan): B202 — aplica prettier aos artefatos do plano (Related #1005) 2026-09-14 14:39:32 -03:00
Francisco Solla
e8536e646e docs(plan): B202 — totais do recorte na lista de municípios (votos 2022 + expectativas 2026) (Related #1005) 2026-09-14 14:39:32 -03:00
Francisco Solla
119b8980fb fix(OPS107): aprovação de produção não ocupa a lane do staging (Closes #1002)
Some checks are pending
Deploy / preflight (push) Waiting to run
Deploy / verify (push) Blocked by required conditions
Deploy / deploy staging (teqo-staging) (push) Blocked by required conditions
Deploy / requeue when main advanced (push) Blocked by required conditions
Deploy / deploy production (teqo-1313) (push) Blocked by required conditions
2026-09-14 08:18:21 -03:00
Francisco Solla
8fe3331687 docs(plan): OPS107 — aprovação de produção escolhida (Related #1002) 2026-09-14 07:28:28 -03:00
Francisco Solla
d6f86a693c style(C162): formata gatilhos no impl plan 2026-09-14 07:09:58 -03:00
Francisco Solla
d69e5cd90a docs(C162): registra gatilhos de revisitação do simplify no impl plan 2026-09-14 07:09:58 -03:00
Francisco Solla
6854ede261 refactor(C162): dono único da elegibilidade VOD, start inicial do YouTube e mídia em early-returns (simplify) 2026-09-14 07:09:58 -03:00
Francisco Solla
fbe67f0358 feat(C162): player do acervo resolve o trecho sob demanda e YouTube vira default (Closes #999) 2026-09-14 07:09:58 -03:00
Francisco Solla
302783dc18 docs(plan): C162 — VOD do acervo sob demanda + YouTube default (Related #999) 2026-09-14 06:05:37 -03:00
Francisco Solla
37b338a700 feat(OPS106): falha do verify dispara agente autônomo de desbloqueio (single-flight)
Workflow separado auto-unblock.yml (workflow_run no Deploy, push/main + job verify vermelho pela jobs API), launcher com flock próprio + Issue token auto-unblock como single-flight, e wrapper destacado que provisiona worktree fix/* via worktree.mjs fix --headless, aplica guard de banco local teqo_wt* fail-closed e roda opencode run --command bug-fix (cap 4h). deploy.yml/verify intocados; sem auto-retry e produção segue com approval humano.
2026-09-14 05:51:39 -03:00
Francisco Solla
dd8daa2420 feat(C159): Sollinha na assessoria de comunicação — chat escopado ao acervo (Closes #983) 2026-09-14 05:45:28 -03:00
Francisco Solla
346f33c1ce docs(C160): runbook §C160 e changelog da prova viva em produção (965 falas, 0 legadas) (#988) 2026-09-14 05:00:18 -03:00
Francisco Solla
03d1b79629 fix(C160): normaliza coleções obsoletas (J/vazia) do link legado para D
A varredura de produção (2026-09-14) achou 33 falas em selCodColecaoCsv=J e 1
com o parâmetro vazio: o endpoint devolve 'Documento não encontrado' e a mesma
data/página resolve na coleção D que a busca atual da Câmara gera. Aliases
J/vazio → D, puros e unit-testados; DCN e demais códigos ficam como estão.
2026-09-14 05:00:18 -03:00
Francisco Solla
e7369839aa feat(C160): link oficial do acervo vira PDF direto do Diário (#988)
- puros: classify/parse da URL legada (dc_20b/dc_20, montaPdf), build do PDF
  direto com #page, cache key por publicação, plano de reparo e fallback
- camaraFetch: resolveOfficialPdfUrl segue o redirect via .leg.br (fail-closed)
  e probeLink generalizado (Range + contentType)
- import: normaliza officialTextUrl no write path (cache <out>/diario por
  publicação; falha preserva PDF direto anterior, senão null)
- novo modo --repair-links [--dry-run] com guard CAMARA_IMPORT_CONFIRM fora de
  alvo local, relatório de cobertura e idempotência
2026-09-14 05:00:18 -03:00
Francisco Solla
c2bd982b8d docs(plan): OPS106 — falha do verify dispara agente autônomo de desbloqueio 2026-09-14 04:51:14 -03:00
Francisco Solla
fa79e4da75 feat(C161): relatório Solla × Ceuci com votos por bairro (seções e locais de votação)
A camada de bairro desce à seção eleitoral: votos por seção (votacao_secao_2022_BA),
cadastro seção → local → bairro (eleitorado_local_votacao_2022), aferição por seção
(detalhe_votacao_secao_2022_BA) e candidaturas válidas (votacao_candidato_munzona_2022);
133 coordenadas ausentes preenchidas pelo cadastro atual pelo número do local.

- JSON commitado: 138 bairros, 474 locais, 5.023 seções; Solla 27.264 e Ceuci 19.776
  conferidos zona a zona contra o recorte C157.
- Extrator scripts/build-solla-ceuci-salvador-bairros.mjs (--download cacheia em
  data/tse-2022/, gitignored; sem banco).
- Gerador revisado: mapas por bairro com dados reais, quadrantes de LQ, tabela de
  138 bairros e filas de ação por bairro.
- Personas refeitas com a base granular: sobreposição 62,9% nos bairros (vs 67,8%
  nas zonas); Ceuci supera Solla em 25 bairros com 61,6% do voto dela; redutos
  compartilhados Pituba/Brotas/Itaigara/Ondina/Graça/Imbuí/STIEP/Pituaçu; pontes
  Rio Vermelho/Cabula/Federação/Jardim Armação.
- Métricas puras de bairro + 9 unit tests; README e changelog atualizados.

Closes #992
2026-09-14 04:36:17 -03:00
Francisco Solla
9928fb183e feat(C158): Sollinha sugere trechos de falas do acervo para vídeos (Closes #982) 2026-09-14 03:41:59 -03:00
Francisco Solla
f58a712ad9 feat(OPS104): inicia o deploy no merge, com staging automático e produção com review
- deploy.yml: trigger push em main + preflight guard (pula se há run queued/in_progress; waiting não conta) e job hosted requeue após deploy-staging (fora do grupo deploy-homeserver)
- scripts/lib/deploy-trigger.mjs (decidePreflight/decideRequeue) + CLIs deploy-preflight/deploy-requeue; github-api ganha listWorkflowRuns/getBranchHead
- pins: ciSkipInvariants reescrito (push + guard + dispatch + requeue fora do grupo), deployTrigger/githubApi novos; deployScript intocado
- docs realinhados (AGENTS*, AGENT-OPS, README, runbook, rules/skills) + changelog

Closes #980
2026-09-14 03:07:59 -03:00
Francisco Solla
f48c81f625 docs(plan): C160 — "Abrir fonte" do acervo abre o PDF oficial do Diário 2026-09-14 02:49:35 -03:00
Francisco Solla
26a450c8d2 feat(C157): relatório de sobreposição Solla × Ceuci em Salvador (Closes #979) 2026-09-14 02:49:31 -03:00
Francisco Solla
aecc735921 chore(OPS105): remove workaround de visão Qwen — visão nativa do deepseek-flash (Closes #985) 2026-09-14 02:37:10 -03:00
Francisco Solla
b998fe9df4 docs(plan): C158 + C159 — Sollinha no acervo de falas e na comunicação
Registra os planos aprovados no gate de 2026-09-14: tool do Sollinha para sugerir trechos do acervo de falas (C158) e chat escopado ao acervo para a assessoria de comunicação (C159, depende de C158).

Related #982
Related #983
2026-09-14 02:35:34 -03:00
Francisco Solla
9bcd64a5bb docs(plans): registra OPS104 — disparo automático do deploy pós-merge 2026-09-14 02:15:46 -03:00
Francisco Solla
90718bc669 docs(C155): resultado da prova viva em produção (997 discursos) no changelog, runbook e plano 2026-09-14 01:54:55 -03:00
Francisco Solla
da6a392260 docs(C155): triage de débitos pós-simplify e HELP do --date 2026-09-14 01:54:55 -03:00
Francisco Solla
4f5f32dfef refactor(C155): simplify pós-review — backoff no camaraFetch, runLegislature e ajustes de guard/relatório 2026-09-14 01:54:55 -03:00
Francisco Solla
a41ee0d11d docs(C155): runbook do backfill em produção, changelog e ajustes do plano 2026-09-14 01:54:55 -03:00
Francisco Solla
8de404291d style(C155): prettier no plano de implementação 2026-09-14 01:54:55 -03:00