Commit graph

1442 commits

Author SHA1 Message Date
Francisco Solla
adde62aff0 fix(C191): cena 02A na paleta oficial do C203 — duas colunas no mesmo #e4102f
Re-decisão do designer sob a paleta do kit 1313: as duas categorias positivas compartilham o vermelho oficial (sem segundo vermelho, sem hierarquia); ordem de entrada, nunca o maior valor. Rebase em cima do C203 e peça re-renderizada na marca oficial.
2026-09-19 12:39:57 -03:00
Francisco Solla
e808c066db feat(C191): coluna de comparação entre categorias e variante duas colunas positivas — unidade %, kicker pela relação
Skill, núcleo (chartData), renderer (columnBody/CSS), design CENA 02A com sign-off humano e testes.
Entrega: docs/research/graficos-instagram/a-maioria-dos-internados-nos-dois-hospitais-de-v-2026-09-19-feed.png (worktree work/21, sem claim).
2026-09-19 12:37:24 -03:00
Francisco Solla
0d6518c3d1 feat(C200): separar falas por pessoa nas gravações enviadas (Closes #1167) 2026-09-19 12:32:46 -03:00
Francisco Solla
0dae7d4ac1 refactor(C203): seletor de chave no dono do kit, guard estrito e nomes (simplify)
- readKitAssets({ keys }) lê só o ativo pedido; o entry pede namePositive (não falha por ativo alheio)
- guard do brandLogo com regex estrita de data URI PNG/base64 (vazio/aspas fora)
- helper brandMark (sem colisão com a opção brandLogo); JSDoc @param/@returns no dono
- entry-spec: teste dedicado do ativo com repoRoot tmp; stub base64 válido; helper tipado
- triage pós-simplify no impl plan (S9 defer com gatilho; S10 explicitamente fora)
2026-09-19 11:24:06 -03:00
Francisco Solla
258fd22379 feat(C203): gráficos do Instagram na marca e paleta oficiais do kit 1313
- rodapé com jorge-solla-positivo.png (data URI, frame 286×90) no lugar do lockup tipográfico; renderer fail-closed sem a marca
- paleta oficial: destaque/valência boa #e4102f, sinal de marca #184e92; amarelo/verde só nos ativos
- dono único da leitura do kit (scripts/lib/campaignKitAssets.mjs; root por import.meta.url) reusado pelo reel
- lineChart default alinhado ao vermelho oficial; CHART_COLORS/dossiê intactos
- skill/command e pinos de prosa/teste atualizados; SCRIPTS_SPEC_PINNED + impl plan + changelog
2026-09-19 11:24:06 -03:00
Francisco Solla
1bb32ad1a9 docs(S19): plano de intenção — links de compartilhamento com miniatura OG (Related #1207) 2026-09-19 11:22:56 -03:00
Francisco Solla
8a73eb2154 fix(flip): removeLabels idempotente — restaura o ignoreNotFound revertido pelo C140 (descoberto no PR #1202) 2026-09-19 11:15:34 -03:00
Francisco Solla
d7d4258cd7 feat(S17): controle "Harmonizar cores" no ready do card Time de você
Ajuste local de brilho/contraste/saturação (clamps fixos ≤12%, alpha byte-a-byte) para aproximar a selfie do tom da arte-mestre; variante gerada 1× no ready do useCardCutout e escolhida pelo toggle no mesmo canvas da prévia e do PNG. Sem migration/Consent/rede/persistência; os 3 modelos e o recorte intocados. Crítica do designer certificada no tier primário (artefato revalidado sem DEGRADED).
2026-09-19 10:55:18 -03:00
Francisco Solla
4d37640210 fix(OPS71): ready-automerge de volta — AUTOMERGE_PAT rotacionado para o token longevo do gh + contrato/verificação (Closes #1176, #1177, #1184)
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-19 03:07:29 -03:00
Francisco Solla
4ac68de29c feat(C191): barra de variação (delta) no gráfico de Instagram — base e extensão por categoria, sem valência
Skill, núcleo (chartData), renderer (deltaBody/CSS), design CENA 02C com sign-off humano e testes.
Entrega: docs/research/graficos-instagram/equipes-saude-vdc-2020-2026-feed.png (worktree work/20, sem claim).
2026-09-19 01:23:23 -03:00
Francisco Solla
9ad4658ffd docs(C204): kit 1313 como fonte de marca única — doutrina, ponteiros e 14 ativos (Closes #1193) 2026-09-19 01:21:40 -03:00
Francisco Solla
8480868059 chore(S16,S17,S18): formata artefatos ui-design (prettier) para o gate 2026-09-19 01:07:14 -03:00
Francisco Solla
eadaf6f64f docs(S16,S17,S18): planos de intenção — ajustes pós-UAT do card Time de você (Related #1195, #1196, #1197) 2026-09-19 01:07:14 -03:00
Francisco Solla
ebee7c0a7a docs(C203,C204): planos de intenção — kit 1313 na marca oficial (Related #1192, #1193) 2026-09-19 00:48:29 -03:00
Francisco Solla
31ebb932af feat(C197): narração rascunho (TTS pt-BR) + transcrição sempre no pacote do reel (Closes #1156) 2026-09-19 00:33:37 -03:00
Francisco Solla
c0760f4234 docs(OPS128): remove verificação pós-deploy em staging do fechamento do work-issue (Closes #1188) 2026-09-19 00:29:23 -03:00
Francisco Solla
78598906de docs(OPS128): plano de intenção — remover verificação pós-deploy em staging do work-issue (Related #1188) 2026-09-18 23:45:29 -03:00
Francisco Solla
d0f606a55d feat(C199): gravações enviadas no acervo de comunicação (Closes #1166) 2026-09-18 23:42:30 -03:00
Francisco Solla
fdbab4b91c
Merge pull request #1175 from fsolla/fix/token-401
fix: 401 do GITHUB_TOKEN local (PAT expirado) — dica acionável, testes e docs
2026-09-18 23:40:26 -03:00
Francisco Solla
5b27bfa0c2
Merge pull request #1183 from fsolla/C196-skill-de-geracao-de-reels-captura-composicao-do-video
C196 — skill /reels-tutoriais: captura + composição do vídeo (kit oficial 1313)
2026-09-18 23:40:06 -03:00
Francisco Solla
8bf79ff4cc feat(C191): linha de duas séries no gráfico de Instagram — valência bom/ruim, projeção e cruzamento
Skill, núcleo (chartData), desenho (dualLineChart/renderer), design CENA 02B certificado e testes.
2026-09-18 23:12:05 -03:00
Francisco Solla
83092adabf chore(C196): merge origin/main (resolve SCRIPTS_SPEC_PINNED com reel-ingest do C195) 2026-09-18 22:55:52 -03:00
Francisco Solla
a8a5ed324f
C195 — Ingestão do pacote do reel na biblioteca privada (#1182)
C195 — Ingestão do pacote do reel na biblioteca privada
2026-09-18 22:30:57 -03:00
Francisco Solla
8041f64b0b chore(C196): merge origin/main (resolve lista de commands) 2026-09-18 22:24:21 -03:00
Francisco Solla
560f2e494a feat(S15): card "Time de você" — quarto modelo auto-serviço no funil público (Closes #1161) 2026-09-18 22:17:52 -03:00
Francisco Solla
7079c63949 Merge remote-tracking branch 'origin/main' into C195-ingestao-do-pacote-do-reel-na-biblioteca-privada
# Conflicts:
#	src/lib/reel.ts
2026-09-18 22:01:32 -03:00
Francisco Solla
448f3845a2 feat(C194): biblioteca de reels na vertical Comunicação (#1153)
Lista publicados-only com capas 9:16, detalhe com player 9:16 e painel de
downloads (vídeo sem áudio primário; com áudio, mp3 e .srt quando existem;
transcrição em texto) e kill switch reversível: despublicar tira da lista e
bloqueia a mídia (C193 decision B), republicar reativa e re-carimba publishedAt.

Fiação: gate communicationCatalog (rename do speechCatalog), 3º sub-item da
vertical no nav, rule da lista no chrome, paths e loader próprios; sem
migration, sem Consent, sem tocar Media.read ou a rota de mídia do C193.

Design tier: DEGRADED — crítica final do designer indisponível no tier
primário (limite de uso); requer sign-off humano antes de push/PR.
2026-09-18 21:54:37 -03:00
Francisco Solla
8504b3b13a feat(C196): skill /reels-tutoriais — captura mobile + composição de vídeo
- skill + command finos: shot list é a fonte única; ajuste regenera, nada publica
- scripts/build-reel.mjs + scripts/lib/reel*.mjs: captura CDP com timestamps de
  parede (sem drift), cursor/halo DOM-injected, zoompan do log de cliques,
  legendas queimadas, capa 1080x1350-safe, concat H.264 1080x1920/30fps
- ffmpeg: FFMPEG_PATH -> PATH -> @ffmpeg-installer (registry-only) com probe fail-closed
- kit oficial da campanha: public/campaign-kit (marcas positiva/negativa, numero,
  estrela) + manual em docs/campaign-kit + README de regras; skill e agente de
  design referenciam o material
- 26 testes unit novos + pin do command; changelog 2026-09-18-c196

Closes #1155
2026-09-18 21:50:28 -03:00
Francisco Solla
5afa16c33b feat(C195): ingestão do pacote do reel na biblioteca privada (Closes #1154) 2026-09-18 21:47:48 -03:00
Francisco Solla
11a38d9c04 docs(C201): impl plan da verificação do typecheck da main (Related #1169) 2026-09-18 21:39:08 -03:00
Francisco Solla
adf21ba5c7 fix(C190): boletim de uma página cabe por medição (painel de acervo + fit)
O run real (Educação) entregava o dossiê mas o boletim media 3502px vs 1133px úteis: os 15 fatos do acervo (sphere area) dominavam os destaques com o summary integral e não havia contador nem fit no one-pager.

- dossieBlocks marca as falas do acervo com sourcePanel: true; buildBulletin as mantém contadas no "e mais N" e fora das vagas impressas (destaques/E mais ficam com findings com fonte)
- buildBulletin ganha printLimit; emitHtmlPairPdf ganha onBulletinOverflow (espelho do onDossierOverflow do C188) e o builder do tema re-renderiza com 2 fatos a menos até caber, fail-closed
- boletim subject (tema/instituição) ganha o contador C188 que só o município tinha, com copy.remaining por descritor
- contrato do tema documenta brief/summary (C188) na skill e no subagente researcher
2026-09-18 19:08:45 -03:00
Francisco Solla
ddfd8b31f3 feat(C191-runtime): cobertura do entry/PNG real e parse pt-BR explícito (Closes #1151) 2026-09-18 19:08:22 -03:00
Francisco Solla
9477fed34e docs: aponta o post-mortem para o PR #1175 (supersede #1174) 2026-09-18 19:03:29 -03:00
Francisco Solla
10bab7d988 fix: 401 do GITHUB_TOKEN local (PAT expirado) — dica acionável, testes e docs (Related #1169)
O GITHUB_TOKEN exportado no shell desde o OPS71 (PAT fine-grained) expirou e,
inválido, sombreava a credencial válida do gh (keyring) — quebrando
pnpm issue/agent:*/github-pr.mjs e o próprio gh (o bash dos agentes herda o env
do opencode serve, não do .bashrc). github-api.mjs passa a anexar dica acionável
a todo 401 (REST + GraphQL), com 2 testes de regressão; AGENT-OPS documenta a
expiração e a recuperação (derivar de gh auth token).

Mesmo lote do OPS71: o secret AUTOMERGE_PAT também expirou (safety net falha
fail-closed desde 21:39Z) — rotação é ação humana pendente.

C201/#1169: o typecheck da main (RED desde bdaf3c7c) foi corrigido pelo PR #1171;
este PR fecha o tracker item.

Post-mortem: docs/postmortems/2026-09-18-github-token-401.md
2026-09-18 19:00:11 -03:00
Francisco Solla
c7d1fd29cc fix(C193): renomeia referência perdida do predicado da vertical de comunicação (Related #1152) 2026-09-18 18:52:38 -03:00
Francisco Solla
bdaf3c7cbb feat(C193): reel privado no CMS — modelo, upload privado e kill switch (Closes #1152) 2026-09-18 17:48:34 -03:00
Francisco Solla
45eef25b1a feat(C192): busca semântica no acervo de falas (Closes #1147)
Modo "Por tema" no acervo de falas: expansão determinística do tema via
DeepSeek (generateObject, timeout, fallback null) alimenta o motor lexical
existente (searchText/keywords OR), mantendo facetas AND, paginação por fala,
o OR de cortes do C174 e o access control intacto. Resultado de tema mostra
selo e "Por que apareceu" com trecho real (frase contínua), sem score;
degradação honesta para termo exato com aviso e vazio honesto com saídas.

- URL: mode=tema (default omitido; canonicaliza sem q), seletor otimista
- ai/expandSpeechSearchTheme + lib/speechThemeTerms (sanitiza saída do modelo)
- view model com themeMatchTerm + espelho speechMatchesSearchTerm
- UI do card de tema (selos, proveniência, ações) e aviso degradado
- sem migration/Consent/exposição pública; gate de leitura inalterado
- testes unit/int/e2e; design hi-fi estendido e certificado pelo designer
2026-09-18 17:48:28 -03:00
Francisco Solla
af6fa698db docs(C199,C200): planos + designs hi-fi — gravações enviadas no acervo (Related #1166, #1167) 2026-09-18 17:46:24 -03:00
Francisco Solla
e91dea637f feat(C191): gráficos de dados para Instagram — skill + builder local (Closes #1145) 2026-09-18 17:32:48 -03:00
Francisco Solla
b5666d6647 docs(S15): plano + design hi-fi do card "Time de você" (Related #1161) 2026-09-18 17:31:35 -03:00
Francisco Solla
e5e1ae7ee8 feat(C190): dossiê Solla por tema/área + boletim modelo (skill + builder)
Terceira variante da família de dossiês: recorte pela área canônica do
acervo (SPEECH_TOPICS), com o pipeline C186/C187 generalizado para a forma
subject via THEME_UNIT (generalização aditiva; C186/C187 byte-idênticos).

- resolveSpeechTopic no dono speechFacets (fail-closed, sem slug inventado)
- themeSnapshot + extract-theme-snapshot (THEME_REPORT_CONFIRM=1, read-only)
- build-dossie-solla-tema (pack medido, PDF A4 + .md + boletim 1 página)
- skill/comando/2 subagentes (researcher por era + redator) + specs
- cenas theme-only no descritor (acervo universo/amostra, abrangência,
  lacunas, hierarquia de fontes, pills do boletim) certificadas pelo designer

Closes #1143
2026-09-18 17:02:56 -03:00
Francisco Solla
6ec14823e5 style(OPS127): alinha a tabela de sessões ao Prettier 2026-09-18 16:55:08 -03:00
Francisco Solla
fd68014edc feat(OPS127): launch do worktree nasce na variante max (Closes #1149) 2026-09-18 16:55:08 -03:00
Francisco Solla
161c49a260 docs(C193,C194,C195,C196,C197): planos + designs hi-fi — reels de tutoriais do site (skill + biblioteca privada)
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
Related #1152,#1153,#1154,#1155,#1156
2026-09-18 16:45:28 -03:00
Francisco Solla
5f8233c7e9 docs(plan): OPS127 — launch do worktree --go em variante max (Related #1149) 2026-09-18 16:20:59 -03:00
Francisco Solla
f55996328c docs(C192): plano + design hi-fi da busca semântica no acervo (Related #1147) 2026-09-18 16:10:40 -03:00
Francisco Solla
444c5830e2 style(C191): formata o design hi-fi conforme Prettier 2026-09-18 15:52:39 -03:00
Francisco Solla
fcfbc68604 docs(C191): plano + design hi-fi da skill de gráficos de dados para Instagram (Related #1145) 2026-09-18 15:52:39 -03:00
Francisco Solla
a014894341 docs(C190): plano + designs hi-fi do dossiê Solla por tema/área (Related #1143) 2026-09-18 09:50:44 -03:00
Francisco Solla
5644a9f947 feat(C186/C187): dossiê corrente sem caps + redação, síntese e gráficos (paridade cidade × instituição)
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
Revisão de produto a partir do uso real (UFBA): as seções deixam de ser
capadas e fluem por quantas folhas precisarem, com packing medido
(probe → grow/shrink por folha, scripts/lib/dossiePack.mjs) e guarda de A4
no emit; o dossiê ganha redação de abertura (narrative.json escrito por
sub-agente e auditado pelo orquestrador), parágrafo de consolidação por
era, páginas de síntese e gráficos (recursos com fase, abrangência,
trajetória) e acervo como amostra declarada. O dono (dossieBlocks/
dossieRender/dossieUnit/buildPdf) foi generalizado e o ramo cidade adotou
as mesmas decisões; skills, comandos, agentes redatores, specs e designs
hi-fi re-sincronizados.
2026-09-17 23:00:08 -03:00