2026-08-13T05:56:16Z - 2026-11-13T05:56:16Z
Overview
66 pull requests merged by 1 user
Merged
#128 OPS75 — Convergência dos mains Forgejo + GitHub
Merged
#110 C141 — Perfis de permissão por assessor (visão × edição), configuráveis por coordenador/candidato
Merged
#118 refactor(S10): simplify pass — Lead unit-testado, e2e hermético e corridas de login resolvidas
Merged
#109 feat(S10): pixel do Meta na página pública de campanha (campo admin + PageView + Lead)
Merged
#103 S8 — Seção de vídeo da história na home de campanha
Merged
#108 plans(C141,C143,C142): permissões granulares por assessor + responsáveis de demanda + UI por perfil
Merged
#104 feat(S9): captura de novidades da campanha na home pública (form + CTA do hero)
Merged
#101 deploy: limpeza pós-deploy do build cache e tags locais antigas (INF3/F2)
Merged
#100 S7 — cards 'Acompanhe de perto' sem raio, borda, sombra ou chip; capa de borda a borda (Closes #90)
Merged
#99 plans(OPS71/OPS72): CI volta ao GitHub Actions com tracker no Forgejo + e2e local afetado
Merged
#96 docs(S9,S10): planos de intenção — captura de novidades na home + pixel Meta na página de campanha
Merged
#95 docs(S8): plano de intenção — seção de vídeo da história na home de campanha
Merged
#92 plan(S7): cards "Acompanhe de perto" sem raio, imagem de borda a borda, chips removidos (Related #90)
Merged
#86 S4 — Compartilhar conteúdos da home no WhatsApp
Merged
#89 fix(OPS62-followup): elimina flake do municipalitiesWithoutUpdateTool — fixture com relógio ancorado
Merged
#88 OPS69 — importMap com o S3ClientUploadHandler (admin abria em branco em prod)
Merged
#79 OPS64 — pin do waitForChecks contra rollup mentiroso + docs (secundário eliminado estruturalmente pelo OPS62)
Merged
#83 OPS68 — docs: drift GitHub-era no AGENT-OPS/README — reescrita da parte 2 do OPS50
Merged
#84 ops(OPS67): retry com backoff nos fetchs do forgejo-api
Merged
#82 OPS66 — deploy: migrate antes do build do runner (deadlock de migrations em caminho estático)
Merged
#80 OPS65 — CI do main em janela de 30 min + matar o agent-pool
Merged
#71 feat(S3): seção de conteúdos da home de campanha inclui os posts do Instagram
Merged
#75 OPS62 — CI: fail-fast estrutural por job único sequencial (X1)
Merged
#78 plan(OPS69): admin em branco em produção — importMap sem o handler do storage S3 (Related #77)
Merged
#76 fix(S6-FOLLOWUP): test:e2e:affected filtra de verdade — --no-deps desliga o closure de deps dos projects
Merged
#70 ops(OPS63): docs-guards no pre-push — changelog append-only, agregado e marcadores de conflito no gate:ci
Merged
#67 OPS61 — contratos de merge/flip do Forgejo: labels com PAT + gate do rollup checks + branch protection real
Merged
#69 plan(OPS66): deploy — build de geração estática lê schema novo antes do passo migrate
Merged
#66 chore(OPS60): guard SEED_MEDIA_CONFIRM para escrita no bucket via db:seed:posts
Merged
#63 feat(S6): home de campanha sem carrossel no desktop — grade estática em ≥1024px, mobile preservado
Merged
#65 plan(OPS65): CI do main em janela de 30 min + matar o agent-pool
Merged
#57 feat(S2): seção de conteúdos da home de campanha inclui os vídeos do YouTube
Merged
#61 plan(OPS62): CI fail-fast no Forgejo + plan(OPS63): doc-guard no pre-push
Merged
#55 OPS59 — Pre-push sem e2e: e2e roda uma vez, no CI (gate local fica com os outros testes)
Merged
#56 feat(S5): separar visualmente a seção "Acompanhe de perto" da prova social na home
Merged
#50 ops(OPS52-media-guard): reconcile do media:recover exige MEDIA_RECOVER_CONFIRM=1 (guard de intenção explícita)
Merged
#54 docs(OPS61): plano de intenção — labels não flipam (GITHUB_TOKEN 403) + branch protection ausente + raça do waitForChecks
Merged
#52 fix(ops OPS57): simplify — veto de draft vale em conversão mid-run; CLI valida base main; docs sem mecanismo fantasma
Merged
#51 OPS58 — atualizar artigos de produção com os novos posts do jorgesolla.com.br
Merged
#48 chore(ops OPS57): forgejo-pr-automerge — alargar gatilho para todas as PRs same-repo (draft não-cursor/* = veto)
Merged
#47 plan(OPS59): pre-push sem e2e — e2e roda uma vez no CI
Merged
#45 plan(OPS58): atualizar artigos de produção com novos posts do jorgesolla.com.br
Merged
#42 fix(ops OPS56): forgejo-pr-automerge — veredito de merge por re-read do PR (falso positivo 'já mergeado')
Merged
#41 docs(OPS52-media): runbook com o fix de infra real (E3 = firewall)
Merged
#39 ops(OPS54): allowlist onlyBuiltDependencies migra para pnpm-workspace.yaml — fim do warning do pnpm 10
Merged
#38 feat(OPS52-media): recupera os objetos de media de produção (pnpm media:recover)
Merged
#36 plan(S6): home de campanha sem carrossel no desktop
Merged
#35 plans(S5): separação visual da seção Acompanhe de perto (Related #33)
Merged
#32 plan(OPS52-media): recuperar arquivos de media de produção (capas dos artigos)
Merged
#31 ops(OPS57): worktrees migrados para ~/.worktrees/teqo
Merged
#29 S1 — Seção de conteúdos na home de campanha — Artigos
Merged
#27 OPS52 — Migrar a media de produção do Vercel Blob para o Garage S3
Merged
#22 fix(ops OPS53): deploy — stdin do compose run + build via proxy socat (validação manual completa)
Merged
#26 ops(OPS55): worktree respeita WORKTREES_ROOT do .forgejo/worktree.env
Merged
#24 PUB5: slogan 'Mais saúde mais futuro' no hero e rodapé
Merged
#23 style(plans S1-S4): prettier pós-commit do lote (fix CI format:check em main)
Merged
#14 ops(OPS53): etapa de deploy no CI para o homeserver (teqo-1313)
Merged
#21 plan(S1-S4): planos de intenção — seção de conteúdos na home de campanha
Merged
#16 plan(PUB5): slogan 'Mais saúde mais futuro' no hero e rodapé
Merged
#13 plan(OPS54): warning do pnpm — onlyBuiltDependencies para pnpm-workspace.yaml
Merged
#11 ops(OPS51): migra o banco de produção do Neon para o Postgres do homeserver (teqo_1313)
Merged
#9 plan(OPS53): etapa de deploy no CI para o homeserver
Merged
#7 ops(OPS50): remove deploy Vercel do pipeline (produção é self-hosted no homeserver)
Merged
#6 fix(OPS50): push workflow (ci.yml) com o fix do .env.test.local + cap de workers do int
Merged
#5 OPS50: porta CI GitHub para Forgejo (parte 1)
Merged
#4 plan(OPS50-52): planos de intenção — CI Forgejo, DB Neon→homeserver, Blob→Garage
62 issues closed from 1 user
Closed
#127 OPS75 — Re-home do C141 no GitHub main (mergeado só no Forgejo no cutover) + push mirror Forgejo→GitHub para prevenir a classe
Closed
#40 S2-FOLLOWUP — validate do itemId (excludedItems do YouTube) é código morto; produção sem validação de ID de vídeo
Closed
#72 S3-FOLLOWUP — e2e local com --no-deps + projetos paralelos colide no seedTestUser
Closed
#85 OPS70 — CI: gate skipped em runs agendados do ci.yml (github.ref sem refs/heads no schedule do Forgejo 9.0.3) — deploy automático não roda
Closed
#87 OPS70 — Guard de CI: importMap do Payload deve falhar o gate se divergir do config com envs S3
Closed
#102 S9+ — Pós-S9 — integridade de consentimento e alinhamento das ações públicas (withPayloadTransaction + schemas)
Closed
#107 C142 — Interface respeita o perfil de permissão (somente-leitura sem controles de edição; visão Tudo no escopo completo)
Closed
#112 C144 — Formulários de escrita oferecem municípios fora do escopo de edição (options write-scoped)
Closed
#113 OPS71 INFRA — runner self-hosted do GitHub no homeserver (job deploy do dispatch manual) + secret CURSOR_API_KEY
Closed
#116 e2e — unificar logins do usuário de teste no helper com advisory lock (frontend/admin specs)
Closed
#117 PetitionForm — Lead dentro do try pode transformar assinatura commitada em erro (retry duplica)
Closed
#120 E1 — Extrair hook compartilhado de busca assíncrona com debounce (3ª cópia)
Closed
#121 OPS71 follow-up — flip pós-merge (issue-done/plan-issue-ready) não dispara para PRs mergeados pelo auto-merge nativo (anti-recursão do GITHUB_TOKEN)
Closed
#122 E2E flake — C113 (feed vivo) falha sob 4 workers: feed global + not.toContain colide com atividade de worker paralelo às 11:00
Closed
#124 S11-FOLLOWUP — janela de lock: sync de render acoplado à duração do sync no save de credenciais
Closed
#125 S11-POLISH — rota de sync: 200 ok:false em não-configurado e tipo de persist duplicado
Closed
#126 OPS73-FOLLOWUP — Re-home do S10 (pixel Meta) no GitHub main + origin do workspace homeserver + fix da race do seedUser no e2e full
Closed
#114 OPS73 — Admin do Payload segue em branco em produção — deploy do fix OPS69 (importMap S3) + verificação pós-deploy
Closed
#115 S11 — Feed do Instagram configurado não aparece na home pública
Closed
#106 C143 — Demandas visíveis apenas para responsáveis explícitos + candidato/coordenador
Closed
#98 OPS72 — E2E local apenas para os testes afetados — CI de PR com e2e selected e skill work-issue atualizada
Closed
#123 OPS74 — Recovery manual do flip pós-merge falha: falta GH_TOKEN no passo gh (issue-done/plan-issue on main merge)
Closed
#119 OPS71-FLIP — Flip pós-merge falhou/silencioso no fluxo GitHub — validar e endurecer issue-done-on-main-merge
Closed
#105 C141 — Perfis de permissão por assessor (visão × edição), configuráveis por coordenador/candidato
Closed
#111 OPS71 Fase 2 — remover arquivos do Forgejo (workflows/scripts) após validação do GitHub Actions
Closed
#97 OPS71 — CI/PR do Forgejo Actions para GitHub Actions — tracker de Issues permanece no Forgejo; deploy manual com verificação full
Closed
#94 S10 — Pixel do Meta (Facebook) na página pública de campanha (campo admin + PageView + Lead)
Closed
#91 S8 — S8 — Seção de vídeo da história na home de campanha
Closed
#93 S9 — Captura de novidades da campanha na home pública (form + CTA do hero)
Closed
#90 S7 — Cards da seção 'Acompanhe de perto': sem cantos arredondados, imagem de borda a borda e chips de badge removidos
Closed
#19 S4 — Compartilhar conteúdos da home no WhatsApp
Closed
#81 OPS62-followup — CI: flake do municipalitiesWithoutUpdateTool.unit.spec.ts sob carga — ordenação Alpha/Beta trocada (2 ocorrências 2026-08-18)
Closed
#77 OPS69 — OPS69 — Admin do Payload abre em branco em produção (importMap sem o handler do storage S3)
Closed
#62 OPS64 — OPS64 — forgejo-pr-automerge: waitForChecks conta o próprio status pendente (deadlock → timeout 30min, merge nunca acontece pelo safety net)
Closed
#74 OPS68 — Docs: drift GitHub-era no AGENT-OPS/README (gh pr, Vercel secrets, fonte canônica GitHub) — reescrita da parte 2 do OPS50
Closed
#73 OPS67 — Forgejo: retry com backoff nos fetchs do forgejo-api (fetch failed transitório mata o run do safety net)
Closed
#68 OPS66 — OPS66 — deploy: build de geração estática lê schema novo antes do passo migrate (deadlock de migrations em caminho estático)
Closed
#64 OPS65 — CI do main em janela de 30 min + matar o agent-pool (workstation sobrecarregada)
Closed
#20 S3 — Seção de conteúdos na home de campanha — Instagram
Closed
#59 OPS62 — CI: cancelar jobs irmãos quando um job falha (fail-fast no Forgejo runner)
Closed
#58 S6-FOLLOWUP — e2e — CLI Playwright ignora filtros --grep/posicionais; test:e2e:affected roda a suíte completa silenciosamente
Closed
#60 OPS63 — Doc-guard também no pre-push (changelog append-only, agregado e marcadores de conflito)
Closed
#53 OPS61 — Forgejo: contracts de merge/flip quebrados — labels não flipam (GITHUB_TOKEN 403) e branch protection de main não reportada
Closed
#49 OPS60 — OPS60 — Guard de intenção explícita para escrita no bucket via db:seed:posts
Closed
#34 S6 — Home de campanha sem carrossel no desktop
Closed
#18 S2 — Seção de conteúdos na home de campanha — YouTube
Closed
#46 OPS59 — Pre-push sem e2e: e2e roda uma vez, no CI (gate local fica com os outros testes)
Closed
#33 S5 — Separar visualmente a seção 'Acompanhe de perto' da prova social na home
Closed
#37 OPS52-media-guard — OPS52-media — Guard de intenção explícita para escrita em bucket de produção
Closed
#43 OPS58 — Atualizar artigos de produção com os novos posts do jorgesolla.com.br
Closed
#44 OPS57-guard — forgejo-pr-automerge: alargar gatilho do workflow para branches não-cursor/*
Closed
#28 OPS56 — forgejo-pr-automerge: falso positivo 'já mergeado' com PR aberto (merge falhou silenciosamente)
Closed
#12 OPS54 — Acabar com o warning do pnpm sobre pnpm.onlyBuiltDependencies ignorado
Closed
#10 OPS52-media — OPS52-media — Recuperar os arquivos de media de produção (40 rows com URLs locais e nenhum arquivo em disco)
Closed
#30 OPS57 — worktree: migrar worktrees para ~/.worktrees/teqo
Closed
#17 S1 — Seção de conteúdos na home de campanha — Artigos
Closed
#3 OPS52 — Migrar a media de produção do Vercel Blob para o Garage S3
Closed
#25 OPS55 — worktree: honrar WORKTREES_ROOT do .forgejo/worktree.env (roteador global)
Closed
#15 PUB5 — Slogan da campanha: 'Mais saúde mais futuro' no hero e no rodapé
Closed
#8 OPS53 — OPS53 — Etapa de deploy no CI para o homeserver (container teqo-1313)
Closed
#2 OPS51 — Migrar o banco de produção do Neon para o Postgres do homeserver
Closed
#1 OPS50 — Migrar CI e paradigma de agentes do GitHub para o Forgejo
62 issues created by 0 users
Opened
#2 OPS51 — Migrar o banco de produção do Neon para o Postgres do homeserver
Opened
#1 OPS50 — Migrar CI e paradigma de agentes do GitHub para o Forgejo
Opened
#3 OPS52 — Migrar a media de produção do Vercel Blob para o Garage S3
Opened
#8 OPS53 — OPS53 — Etapa de deploy no CI para o homeserver (container teqo-1313)
Opened
#10 OPS52-media — OPS52-media — Recuperar os arquivos de media de produção (40 rows com URLs locais e nenhum arquivo em disco)
Opened
#12 OPS54 — Acabar com o warning do pnpm sobre pnpm.onlyBuiltDependencies ignorado
Opened
#15 PUB5 — Slogan da campanha: 'Mais saúde mais futuro' no hero e no rodapé
Opened
#17 S1 — Seção de conteúdos na home de campanha — Artigos
Opened
#20 S3 — Seção de conteúdos na home de campanha — Instagram
Opened
#19 S4 — Compartilhar conteúdos da home no WhatsApp
Opened
#18 S2 — Seção de conteúdos na home de campanha — YouTube
Opened
#25 OPS55 — worktree: honrar WORKTREES_ROOT do .forgejo/worktree.env (roteador global)
Opened
#28 OPS56 — forgejo-pr-automerge: falso positivo 'já mergeado' com PR aberto (merge falhou silenciosamente)
Opened
#30 OPS57 — worktree: migrar worktrees para ~/.worktrees/teqo
Opened
#33 S5 — Separar visualmente a seção 'Acompanhe de perto' da prova social na home
Opened
#34 S6 — Home de campanha sem carrossel no desktop
Opened
#37 OPS52-media-guard — OPS52-media — Guard de intenção explícita para escrita em bucket de produção
Opened
#40 S2-FOLLOWUP — validate do itemId (excludedItems do YouTube) é código morto; produção sem validação de ID de vídeo
Opened
#43 OPS58 — Atualizar artigos de produção com os novos posts do jorgesolla.com.br
Opened
#44 OPS57-guard — forgejo-pr-automerge: alargar gatilho do workflow para branches não-cursor/*
Opened
#46 OPS59 — Pre-push sem e2e: e2e roda uma vez, no CI (gate local fica com os outros testes)
Opened
#49 OPS60 — OPS60 — Guard de intenção explícita para escrita no bucket via db:seed:posts
Opened
#53 OPS61 — Forgejo: contracts de merge/flip quebrados — labels não flipam (GITHUB_TOKEN 403) e branch protection de main não reportada
Opened
#58 S6-FOLLOWUP — e2e — CLI Playwright ignora filtros --grep/posicionais; test:e2e:affected roda a suíte completa silenciosamente
Opened
#59 OPS62 — CI: cancelar jobs irmãos quando um job falha (fail-fast no Forgejo runner)
Opened
#60 OPS63 — Doc-guard também no pre-push (changelog append-only, agregado e marcadores de conflito)
Opened
#62 OPS64 — OPS64 — forgejo-pr-automerge: waitForChecks conta o próprio status pendente (deadlock → timeout 30min, merge nunca acontece pelo safety net)
Opened
#64 OPS65 — CI do main em janela de 30 min + matar o agent-pool (workstation sobrecarregada)
Opened
#68 OPS66 — OPS66 — deploy: build de geração estática lê schema novo antes do passo migrate (deadlock de migrations em caminho estático)
Opened
#72 S3-FOLLOWUP — e2e local com --no-deps + projetos paralelos colide no seedTestUser
Opened
#73 OPS67 — Forgejo: retry com backoff nos fetchs do forgejo-api (fetch failed transitório mata o run do safety net)
Opened
#74 OPS68 — Docs: drift GitHub-era no AGENT-OPS/README (gh pr, Vercel secrets, fonte canônica GitHub) — reescrita da parte 2 do OPS50
Opened
#77 OPS69 — OPS69 — Admin do Payload abre em branco em produção (importMap sem o handler do storage S3)
Opened
#81 OPS62-followup — CI: flake do municipalitiesWithoutUpdateTool.unit.spec.ts sob carga — ordenação Alpha/Beta trocada (2 ocorrências 2026-08-18)
Opened
#85 OPS70 — CI: gate skipped em runs agendados do ci.yml (github.ref sem refs/heads no schedule do Forgejo 9.0.3) — deploy automático não roda
Opened
#87 OPS70 — Guard de CI: importMap do Payload deve falhar o gate se divergir do config com envs S3
Opened
#90 S7 — Cards da seção 'Acompanhe de perto': sem cantos arredondados, imagem de borda a borda e chips de badge removidos
Opened
#91 S8 — S8 — Seção de vídeo da história na home de campanha
Opened
#93 S9 — Captura de novidades da campanha na home pública (form + CTA do hero)
Opened
#94 S10 — Pixel do Meta (Facebook) na página pública de campanha (campo admin + PageView + Lead)
Opened
#97 OPS71 — CI/PR do Forgejo Actions para GitHub Actions — tracker de Issues permanece no Forgejo; deploy manual com verificação full
Opened
#98 OPS72 — E2E local apenas para os testes afetados — CI de PR com e2e selected e skill work-issue atualizada
Opened
#102 S9+ — Pós-S9 — integridade de consentimento e alinhamento das ações públicas (withPayloadTransaction + schemas)
Opened
#105 C141 — Perfis de permissão por assessor (visão × edição), configuráveis por coordenador/candidato
Opened
#107 C142 — Interface respeita o perfil de permissão (somente-leitura sem controles de edição; visão Tudo no escopo completo)
Opened
#106 C143 — Demandas visíveis apenas para responsáveis explícitos + candidato/coordenador
Opened
#111 OPS71 Fase 2 — remover arquivos do Forgejo (workflows/scripts) após validação do GitHub Actions
Opened
#112 C144 — Formulários de escrita oferecem municípios fora do escopo de edição (options write-scoped)
Opened
#113 OPS71 INFRA — runner self-hosted do GitHub no homeserver (job deploy do dispatch manual) + secret CURSOR_API_KEY
Opened
#114 OPS73 — Admin do Payload segue em branco em produção — deploy do fix OPS69 (importMap S3) + verificação pós-deploy
Opened
#115 S11 — Feed do Instagram configurado não aparece na home pública
Opened
#116 e2e — unificar logins do usuário de teste no helper com advisory lock (frontend/admin specs)
Opened
#117 PetitionForm — Lead dentro do try pode transformar assinatura commitada em erro (retry duplica)
Opened
#119 OPS71-FLIP — Flip pós-merge falhou/silencioso no fluxo GitHub — validar e endurecer issue-done-on-main-merge
Opened
#120 E1 — Extrair hook compartilhado de busca assíncrona com debounce (3ª cópia)
Opened
#121 OPS71 follow-up — flip pós-merge (issue-done/plan-issue-ready) não dispara para PRs mergeados pelo auto-merge nativo (anti-recursão do GITHUB_TOKEN)
Opened
#122 E2E flake — C113 (feed vivo) falha sob 4 workers: feed global + not.toContain colide com atividade de worker paralelo às 11:00
Opened
#123 OPS74 — Recovery manual do flip pós-merge falha: falta GH_TOKEN no passo gh (issue-done/plan-issue on main merge)
Opened
#124 S11-FOLLOWUP — janela de lock: sync de render acoplado à duração do sync no save de credenciais
Opened
#125 S11-POLISH — rota de sync: 200 ok:false em não-configurado e tipo de persist duplicado
Opened
#126 OPS73-FOLLOWUP — Re-home do S10 (pixel Meta) no GitHub main + origin do workspace homeserver + fix da race do seedUser no e2e full
Opened
#127 OPS75 — Re-home do C141 no GitHub main (mergeado só no Forgejo no cutover) + push mirror Forgejo→GitHub para prevenir a classe