From dfd57344e35eb459bbbf245fb393fcc6a3b350ab Mon Sep 17 00:00:00 2001 From: Francisco Solla Date: Mon, 17 Aug 2026 21:03:43 -0300 Subject: [PATCH 1/8] plan(OPS54): silencia o warning do pnpm sobre pnpm.onlyBuiltDependencies ignorado --- ...ps54-pnpm-warning-onlybuiltdependencies.md | 80 +++++++++++++++++++ 1 file changed, 80 insertions(+) create mode 100644 docs/plans/ops54-pnpm-warning-onlybuiltdependencies.md diff --git a/docs/plans/ops54-pnpm-warning-onlybuiltdependencies.md b/docs/plans/ops54-pnpm-warning-onlybuiltdependencies.md new file mode 100644 index 00000000..11013f41 --- /dev/null +++ b/docs/plans/ops54-pnpm-warning-onlybuiltdependencies.md @@ -0,0 +1,80 @@ +# Acabar com o warning do pnpm sobre `pnpm.onlyBuiltDependencies` ignorado + +Status: registrado +Atualizado em: 2026-08-17 +Issue: #12 +Priority: P2 +Model: composer-2.5 +Impeccable: A — N/A (sem UI) +Rascunho UI: N/A — sem UI +Appetite: ~2–4 h eng; um outcome verificável +Responsável: — + +## Intenção + +Todo comando pnpm no terminal imprime, antes de executar: + +``` +[WARN] The "pnpm" field in package.json is no longer read by pnpm. +The following keys were ignored: "pnpm.onlyBuiltDependencies". +See https://pnpm.io/settings for the new home of each setting. +``` + +Desde o pnpm 10, o campo `pnpm` do `package.json` não é mais lido — os +settings migraram para `pnpm-workspace.yaml` (ou `.npmrc`). Além do ruído em +toda sessão de terminal (dev, CI, builds do Docker), o warning diz que a +allowlist `onlyBuiltDependencies` (`sharp`, `esbuild`, `unrs-resolver`) está +**sendo ignorada hoje**: a intenção original de permitir os build scripts +desses pacotes não chega ao pnpm. Queremos o warning sumindo e a allowlist +voltando a valer, no lugar canônico que o próprio pnpm aponta. + +## Persona e fluxo + +- **Persona / contexto:** dev e agentes (pool, worktrees) — todo comando pnpm, incluindo CI e build da imagem do homeserver (OPS53). +- **Job principal:** rodar qualquer comando pnpm sem a linha de warning, com a config de build scripts honrada. +- **Fluxo desejado:** `pnpm install` / `pnpm dev` / CI / `docker build` → sem `[WARN]`; `pnpm config get onlyBuiltDependencies` retorna os 3 pacotes; `sharp`/`esbuild`/`unrs-resolver` continuam com seus builds permitidos. +- **Anti-goals de produto:** reconfigurar pnpm além do que o warning cita; mudar versão/packageManager; mexer em `.npmrc` (`legacy-peer-deps`, `include`) ou na política de approve de build scripts de outros pacotes. + +## Objetivo e aceite + +- Nenhum comando pnpm (install/dev/scripts, CI Forgejo, estágio `deps` do Dockerfile) imprime mais o warning do campo `pnpm` em package.json. +- `pnpm config get onlyBuiltDependencies` retorna `sharp`, `esbuild`, `unrs-resolver` (a allowlist passa a ser honrada — ela não é hoje). +- Build e suíte completa verdes (mesmos passos do checklist local do `AGENTS.md`), incluindo `pnpm install --frozen-lockfile` sem tocar o grafo de dependências. +- Imagem Docker continua construindo o app (estágio `deps` copia o novo arquivo de config). +- Guardrail: `.npmrc`, `packageManager` e o restante do `package.json` ficam intocados. + +## Dados (intenção) + +Dados: N/A — configuração de ferramenta; nenhuma métrica/UI envolvida. + +## Direção no codebase (hipótese) + +- **Áreas prováveis:** raiz do repo — `package.json` (remover o campo `pnpm`), novo `pnpm-workspace.yaml` (raiz, com `onlyBuiltDependencies`), `Dockerfile` (estágio `deps` copia `pnpm-workspace.yaml` para a imagem). +- **Precedente a olhar:** pnpm docs (https://pnpm.io/settings — novo home dos settings); planos OPS50/51/53 (que tocaram CI/Dockerfile recentemente). +- **Risco de acoplamento:** `Dockerfile` é compartilhado com OPS53 (deploy homeserver, ainda `blocked`) — se os dois executarem próximos, coordenar o estágio `deps`. Verificado: nenhum script/skill lê o campo `pnpm` do package.json além do próprio pnpm; nada referencia `pnpm-workspace.yaml` hoje; `pnpm install --frozen-lockfile` deve seguir passando (grafo inalterado). + +## Dependências + +- Nenhuma. (OPS53 só se sobrepõe no arquivo Dockerfile se executar em paralelo.) + +## Fora de escopo + +- Mover outros settings (`legacy-peer-deps`, `include`) do `.npmrc` para `pnpm-workspace.yaml` — sem item, só se um warning futuro pedir. +- Atualizar pnpm / `packageManager` — fora de escopo. +- Renomear ou re-approvar build scripts de outros pacotes — fora de escopo. + +## Rabbit holes de produto + +- **Migração ampla de config.** Se alguém "só completar", move tudo que existe para o YAML novo e muda comportamento não reclamado. **Corte neste item:** apenas `onlyBuiltDependencies`, que é exatamente o que o warning cita. +- **Mudar a política de build scripts.** A tentação de trocar a allowlist por `dangerouslyAllowAllBuilds` etc. **Corte:** manter a allowlist como está, só realocada. + +## Questões em aberto (produto) + +- **Onde hospedar a config?** **Opções:** (A) `pnpm-workspace.yaml` — novo home canônico, é o destino que o próprio warning aponta; (B) `.npmrc` — ainda suportado, mas caminho legado para esse tipo de setting. **Recomendação:** A. _(assumido — validar com produto)_ +- **ID OPS54 ok?** Último OPS usado é o 53 (registrado 2026-08-17). **Recomendação:** sim, próximo da trilha. _(assumido — validar)_ + +## Referências + +- pnpm settings: https://pnpm.io/settings +- `package.json` (campo `pnpm` nas linhas 187–193), `Dockerfile` (estágio `deps`), `.npmrc` +- `docs/plans/ops53-ci-deploy-homeserver.md` (compartilha o Dockerfile) From 220142cc7501db30097d416d206bcfa2f1cc4793 Mon Sep 17 00:00:00 2001 From: Francisco Solla Date: Mon, 17 Aug 2026 21:33:12 -0300 Subject: [PATCH 2/8] =?UTF-8?q?plan(PUB5):=20slogan=20da=20campanha=20'Mai?= =?UTF-8?q?s=20sa=C3=BAde=20mais=20futuro'=20no=20hero=20e=20rodap=C3=A9?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- ...de-mais-futuro-ui-draft-footer-desktop.png | Bin 0 -> 34349 bytes ...aude-mais-futuro-ui-draft-hero-desktop.png | Bin 0 -> 44873 bytes ...saude-mais-futuro-ui-draft-hero-mobile.png | Bin 0 -> 30685 bytes ...logan-mais-saude-mais-futuro-ui-draft.html | 109 ++++++++++++++++++ docs/plans/slogan-mais-saude-mais-futuro.md | 83 +++++++++++++ 5 files changed, 192 insertions(+) create mode 100644 docs/plans/slogan-mais-saude-mais-futuro-ui-draft-footer-desktop.png create mode 100644 docs/plans/slogan-mais-saude-mais-futuro-ui-draft-hero-desktop.png create mode 100644 docs/plans/slogan-mais-saude-mais-futuro-ui-draft-hero-mobile.png create mode 100644 docs/plans/slogan-mais-saude-mais-futuro-ui-draft.html create mode 100644 docs/plans/slogan-mais-saude-mais-futuro.md diff --git a/docs/plans/slogan-mais-saude-mais-futuro-ui-draft-footer-desktop.png b/docs/plans/slogan-mais-saude-mais-futuro-ui-draft-footer-desktop.png new file mode 100644 index 0000000000000000000000000000000000000000..0319abe9dc15c02c7da881a558f1d90134691556 GIT binary patch literal 34349 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 F{{fI(HaGwP literal 0 HcmV?d00001 diff --git a/docs/plans/slogan-mais-saude-mais-futuro-ui-draft-hero-mobile.png b/docs/plans/slogan-mais-saude-mais-futuro-ui-draft-hero-mobile.png new file mode 100644 index 0000000000000000000000000000000000000000..f926b6436ddcafb32b7fb2c6f2f0e4e9c6209c7b GIT binary patch literal 30685 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

usZsG%1Wdw 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 literal 0 HcmV?d00001 diff --git a/docs/plans/slogan-mais-saude-mais-futuro-ui-draft.html b/docs/plans/slogan-mais-saude-mais-futuro-ui-draft.html new file mode 100644 index 00000000..01f503db --- /dev/null +++ b/docs/plans/slogan-mais-saude-mais-futuro-ui-draft.html @@ -0,0 +1,109 @@ + + + + + + + UI draft — Slogan do hero e footer + + +

+ + diff --git a/docs/plans/slogan-mais-saude-mais-futuro.md b/docs/plans/slogan-mais-saude-mais-futuro.md new file mode 100644 index 00000000..9500be77 --- /dev/null +++ b/docs/plans/slogan-mais-saude-mais-futuro.md @@ -0,0 +1,83 @@ +# Slogan da campanha: "Mais saúde mais futuro" no hero e no rodapé + +Status: registrado +Atualizado em: 2026-08-17 +Issue: #15 +Priority: P1 +Model: composer-2.5 +Impeccable: B — encaixe de copy em `CampaignHero` e `CampaignFooter` (superfícies existentes, sem layout novo) +Rascunho UI: docs/plans/slogan-mais-saude-mais-futuro-ui-draft.html + PNGs embutidos abaixo +Appetite: ~0,25–0,5 dia eng; troca de strings + ajuste de testes; sem migration +Responsável: — + +## Intenção + +O diretor de comunicação da campanha pediu a troca do slogan "Um mandato do tamanho da Bahia" por +**"Mais saúde mais futuro"** no hero e no rodapé do site de campanha (jorgesolla1313.com.br). O +slogan anterior pertencia ao discurso do mandato vigente; o novo fala da campanha 2026 — saúde é o +tema-âncora do candidato (médico sanitarista, criador do SAMU e do Brasil Sorridente) e o hero já +vende essa biografia. A referência visual é o hero alterado no Penpot: slogan em duas linhas, +uppercase, com a segunda linha em peso maior. + +## Persona e fluxo + +- **Persona / contexto:** eleitor baiano visitando a home pública da campanha (desktop e celular), primeiro contato com o candidato. +- **Job principal:** reconhecer em 2 segundos o que a campanha propõe — "mais saúde, mais futuro" — antes de ler a biografia e decidir se apoia. +- **Fluxo desejado:** abre a home → lê o slogan novo no hero → (opcional) continua para biografia/apoio → no fim da página, o rodapé repete a mesma frase como assinatura da campanha. +- **Anti-goals de produto:** não redesenhar hero/rodapé (é troca de copy); não alterar CTAs, imagens, biografia ou provas parlamentares; não criar campo editável no admin (fora do pedido — copy fixa no componente, como hoje). + +### Rascunho UI (B) + +![Rascunho UI — hero desktop](slogan-mais-saude-mais-futuro-ui-draft-hero-desktop.png) + +![Rascunho UI — hero mobile](slogan-mais-saude-mais-futuro-ui-draft-hero-mobile.png) + +![Rascunho UI — rodapé desktop](slogan-mais-saude-mais-futuro-ui-draft-footer-desktop.png) + +## Objetivo e aceite + +- O h1 do hero exibe "MAIS SAÚDE / MAIS FUTURO" (duas linhas, uppercase, segunda linha com peso maior), no lugar de "UM MANDATO DO / TAMANHO DA BAHIA". +- O `aria-label` do h1 acompanha o texto novo (acessibilidade de leitor de tela). +- O rodapé exibe "Mais saúde mais futuro." no bloco de identificação, no lugar de "Um mandato do tamanho da Bahia.". +- A frase antiga deixa de aparecer em qualquer superfície pública do site de campanha (hero e rodapé da home). +- Testes existentes que pinam o slogan antigo (`tests/unit/campaignHero.unit.spec.tsx`, `tests/unit/campaignHome.unit.spec.tsx`, `tests/e2e/frontend.e2e.spec.ts`) são atualizados para o novo. + +## Dados (intenção) + +Dados: N/A — troca de copy sem métrica nova. + +## Direção no codebase (hipótese) + +- **Áreas prováveis:** `src/components/CampaignHero.tsx` (h1 em dois spans + `aria-label`), `src/components/CampaignFooter.tsx` (linha do bloco de identificação); home pública em `src/app/(frontend)/(home)/page.tsx` (apenas importa os dois componentes). +- **Precedente a olhar:** o próprio componente atual (a estrutura de duas linhas já existe — muda só o texto); referência visual no Penpot (hero editado pelo diretor). +- **Risco de acoplamento:** nenhum além dos testes que pinam a string — atualizar juntos. + +## Dependências + +- Nenhuma. + +## Fora de escopo + +- Redesenho do hero/rodapé (layout, imagens, CTAs) — a referência do Penpot vale só para o texto do slogan. +- Cabeçalho da página de artigos (`src/app/(frontend)/artigos/page.tsx`, "O mandato do tamanho da Bahia") — outra superfície; tratar só se o diretor pedir. +- Documentos históricos que citam o slogan antigo (`docs/campanha/*`, `.opencode/agent/designer-campanha-solla.md`, skills de comunicação) — registro, não superfície pública. +- Slogan em materiais externos (redes sociais, WhatsApp) — fora deste repo. + +## Rabbit holes de produto + +- **Redesign no vácuo.** Se alguém "só completar" e resolver que a frase nova merece mais destaque ou novo layout: explode para redesenho do hero. **Corte neste item:** copy fixa na anatomia atual; a referência do Penpot não muda layout. +- **Caça a todas as ocorrências.** A frase existe em docs históricos e agent docs; editar isso não é o pedido e cria ruído. **Corte:** só superfícies públicas (hero + rodapé) + testes que pinam. + +## Questões em aberto (produto) + +**Decidido no gate (2026-08-17):** + +- Cabeçalho da página de artigos: **não muda** — escopo é hero + rodapé. +- Rodapé: **sentence case com ponto** ("Mais saúde mais futuro.") — padrão tipográfico atual do rodapé. + +## Referências + +- GitHub Issue: https://git.solla.dev/fsolla/teqo/issues/15 +- Referência visual: hero da campanha no Penpot (slogan "Mais saúde" / "Mais futuro", uppercase, segunda linha em peso maior) +- `src/components/CampaignHero.tsx`, `src/components/CampaignFooter.tsx` +- Testes que pinam a string: `tests/unit/campaignHero.unit.spec.tsx`, `tests/unit/campaignHome.unit.spec.tsx`, `tests/e2e/frontend.e2e.spec.ts` From 346da3896e39816261cbcadf2ce85367ed2b4b69 Mon Sep 17 00:00:00 2001 From: Francisco Solla Date: Mon, 17 Aug 2026 21:34:27 -0300 Subject: [PATCH 3/8] style(plan): prettier no rascunho UI do PUB5 --- ...logan-mais-saude-mais-futuro-ui-draft.html | 43 ++++++++++++++----- 1 file changed, 33 insertions(+), 10 deletions(-) diff --git a/docs/plans/slogan-mais-saude-mais-futuro-ui-draft.html b/docs/plans/slogan-mais-saude-mais-futuro-ui-draft.html index 01f503db..b475f147 100644 --- a/docs/plans/slogan-mais-saude-mais-futuro-ui-draft.html +++ b/docs/plans/slogan-mais-saude-mais-futuro-ui-draft.html @@ -14,10 +14,15 @@ uppercase). Cenas abaixo: hero desktop, hero mobile, rodapé desktop.

-
+
-

+

Mais saúde Mais futuro

@@ -27,24 +32,35 @@ saúde à educação.

DIAP entre os 40 melhores da Câmara

-

Mais votado do PT-BA em 2022

+

+ Mais votado do PT-BA em 2022 +

-
+
-

+

Mais saúde Mais futuro

@@ -54,10 +70,14 @@ saúde à educação.

@@ -68,7 +88,10 @@
-
+
From 87410ccc63e4d830e2dd8831747a384f1861b702 Mon Sep 17 00:00:00 2001 From: Francisco Solla Date: Mon, 17 Aug 2026 21:41:49 -0300 Subject: [PATCH 4/8] =?UTF-8?q?plan(S1-S4):=20se=C3=A7=C3=A3o=20de=20conte?= =?UTF-8?q?=C3=BAdos=20na=20home=20de=20campanha=20=E2=80=94=20artigos,=20?= =?UTF-8?q?YouTube,=20Instagram=20+=20compartilhar=20WhatsApp?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../compartilhar-conteudos-home-whatsapp.md | 85 ++++++ docs/plans/secao-conteudos-home-artigos.md | 93 ++++++ docs/plans/secao-conteudos-home-instagram.md | 93 ++++++ ...o-conteudos-home-ui-draft-compartilhar.png | Bin 0 -> 47453 bytes .../secao-conteudos-home-ui-draft-desktop.png | Bin 0 -> 77653 bytes .../secao-conteudos-home-ui-draft-mobile.png | Bin 0 -> 31461 bytes .../secao-conteudos-home-ui-draft-vazio.png | Bin 0 -> 35138 bytes docs/plans/secao-conteudos-home-ui-draft.html | 285 ++++++++++++++++++ docs/plans/secao-conteudos-home-youtube.md | 93 ++++++ 9 files changed, 649 insertions(+) create mode 100644 docs/plans/compartilhar-conteudos-home-whatsapp.md create mode 100644 docs/plans/secao-conteudos-home-artigos.md create mode 100644 docs/plans/secao-conteudos-home-instagram.md create mode 100644 docs/plans/secao-conteudos-home-ui-draft-compartilhar.png create mode 100644 docs/plans/secao-conteudos-home-ui-draft-desktop.png create mode 100644 docs/plans/secao-conteudos-home-ui-draft-mobile.png create mode 100644 docs/plans/secao-conteudos-home-ui-draft-vazio.png create mode 100644 docs/plans/secao-conteudos-home-ui-draft.html create mode 100644 docs/plans/secao-conteudos-home-youtube.md diff --git a/docs/plans/compartilhar-conteudos-home-whatsapp.md b/docs/plans/compartilhar-conteudos-home-whatsapp.md new file mode 100644 index 00000000..f58c4283 --- /dev/null +++ b/docs/plans/compartilhar-conteudos-home-whatsapp.md @@ -0,0 +1,85 @@ +# Compartilhar conteúdos da home no WhatsApp (S4) + +Status: registrado +Atualizado em: 2026-08-17 +Issue: #19 +Priority: P2 +Model: composer-2.5 +Impeccable: B — botão discreto de compartilhar por card de conteúdo (não compete com o CTA) +Rascunho UI: docs/plans/secao-conteudos-home-ui-draft.html + PNG embutido abaixo +Appetite: ~0,5–1 dia eng; botão por card + wa.me com mensagem pré-configurada + copiar link +Responsável: — + +## Intenção + +Depois que a seção de conteúdos da home estiver funcional (S1+S2+S3), cada card de conteúdo vira compartilhável no WhatsApp — o canal nº 1 de compartilhamento no Brasil. O visitante manda o artigo/vídeo/post para alguém com uma mensagem pronta (título + link), sem sair da home. É a fatia de viralidade do board: conteúdo circulando de volta para a campanha na reta final. + +## Persona e fluxo + +- **Persona / contexto:** visitante (eleitor, liderança, simpatizante) no meio de funil que achou um conteúdo bom e quer mandar para o grupo/família. +- **Job principal:** repassar um conteúdo específico da home para alguém no WhatsApp com um clique, com texto pronto. +- **Fluxo desejado:** vê o card → toca no botão de compartilhar (ícone discreto no canto do card) → opção "Compartilhar no WhatsApp" (abre `wa.me` com mensagem pré-configurada contendo título + link do conteúdo) e/ou "Copiar link" → cola onde quiser. +- **Anti-goals de produto:** o botão de compartilhar NUNCA compete com o CTA primário da página (botão discreto, não é o foco do card); não é compartilhamento por seção inteira (v1 é por card); sem WhatsApp Business API (é `wa.me` do próprio remetente). + +### Esboço de fluxo (B) + +```text +[card de conteúdo] → [botão compartilhar (ícone)] → [menu: WhatsApp / Copiar link] +→ [wa.me com mensagem "Olha isso do Solla: — "] → [remetente envia pelo próprio WhatsApp] +``` + +### Rascunho UI (B) + +![Rascunho UI — compartilhar](secao-conteudos-home-ui-draft-compartilhar.png) + +Fonte iterável: [`secao-conteudos-home-ui-draft.html`](secao-conteudos-home-ui-draft.html) (cena `compartilhar`). + +## Objetivo e aceite + +- Todo card de conteúdo da seção (Artigo/YouTube/Instagram) tem um botão discreto de compartilhar (canto do card, sem competir com o CTA primário da página). +- Ação principal: abre `wa.me` com mensagem pré-configurada **por fonte** (decisão do cliente): artigo → "Olha isso do Solla: {título} — {link}" · vídeo → "Olha esse vídeo do Solla: {título} — {link}" · post IG → "Olha esse post do Solla: {título} — {link}". Link: artigo → página canônica do artigo; YT/IG → URL da plataforma. Nova aba com `noopener`. +- Ação secundária: "Copiar link" (navegador/clipboard) com feedback de "copiado". +- O botão é acessível (aria-label, alvo de toque ≥44px no mobile) e não muda o layout do card. No mobile, o botão vive no card único do carrossel (1 conteúdo por tela — decisão do cliente); no desktop, no canto de cada card do bento. +- Sem migration/schema/Consent — o fluxo é montagem de URL no cliente, sem escrita no servidor. +- Mensagem padrão honesta (ex.: "Olha isso do Solla: {título} — {link}") — sem texto enganoso. + +## Dados (intenção) + +- **Vou apresentar dados?** Não — só a URL compartilhada. (Se a assessoria quiser medir circulação, UTM por card é um item futuro separado.) +- **Decisões desbloqueadas:** o visitante decide compartilhar; nenhum dado é coletado por este fluxo. + +## Direção no codebase (hipótese) + +- **Áreas prováveis:** componente client pequeno no card de conteúdo da seção S1/S2/S3 (`src/components/`), reusando `buildWhatsAppUrl` (`src/utilities/phone.ts`) e o padrão de copiar link já existente (ex.: `ShareNucleusDialog`/`campaignListShare` — ver `docs/plans/compartilhar-pagina.md` como precedente de wa.me + copiar). +- **Precedente a olhar:** `compartilhar-pagina.md` (padrão `wa.me` + copiar link + `noopener`), `src/utilities/phone.ts` (`buildWhatsAppUrl`), plano-site §7.1 ("Compartilhamento por seção" — ideia do cliente). +- **Risco de acoplamento:** o botão vive no card generalizado da seção — implementar no ponto único de renderização do card (não em três lugares por plataforma). + +## Dependências + +- **S3** (seção completa: artigos + YouTube + Instagram) — dura (conteúdos funcionais antes de compartilhar). + +## Fora de escopo + +- Compartilhar por outros canais (e-mail, X, threads) — só WhatsApp + copiar link no v1. +- UTM por seção/card e medição de circulação (item futuro — ideia §7.1 do plano-site). +- Imagem OG por seção/card (geração de card de preview) — item futuro (§7.1). +- WhatsApp Business API / disparo em massa (vedado pela Res. TSE 23.610; é `wa.me` do próprio remetente). + +## Rabbit holes de produto + +- **Botão de compartilhar competindo com o CTA.** Se alguém "só completar": dois pesos visuais por card. **Corte:** ícone discreto no canto, sem destaque de cor de marca. +- **Compartilhar a seção inteira.** Se alguém "só completar": mensagem gigante com N links. **Corte:** v1 é por card, um link por mensagem. +- **Telemetria disfarçada de compartilhar.** Se alguém "só completar": vira rastreador de clique. **Corte:** nada é coletado neste item; UTM fica para item futuro explícito. + +## Questões em aberto (produto) + +- **Mensagem padrão por fonte?** **Opções:** A) template único "Olha isso do Solla: {título} — {link}" | B) específica por fonte (artigo/vídeo/post). **Recomendação:** B — decisão do cliente nesta sessão. _(decidido — B)_ + +## Referências + +- GitHub Issue #19 +- Rascunho UI (gate): `docs/plans/secao-conteudos-home-ui-draft.html` (cena `compartilhar`) + PNG acima +- `docs/campanha/plano-site-campanha-2026.md` §7.1 — "Compartilhamento por seção" (ideia do cliente registrada) +- `docs/plans/compartilhar-pagina.md` — precedente de wa.me + copiar link no repo +- `src/utilities/phone.ts` — `buildWhatsAppUrl` +- `docs/plans/secao-conteudos-home-artigos.md` (S1) — estrutura do card onde o botão entra diff --git a/docs/plans/secao-conteudos-home-artigos.md b/docs/plans/secao-conteudos-home-artigos.md new file mode 100644 index 00000000..cb97a3c2 --- /dev/null +++ b/docs/plans/secao-conteudos-home-artigos.md @@ -0,0 +1,93 @@ +# Seção de conteúdos na home de campanha — Artigos (S1) + +Status: registrado +Atualizado em: 2026-08-17 +Issue: #17 +Priority: P1 +Model: composer-2.5 +Impeccable: B — nova seção na home pública (3ª posição), padrão visual do wireframe já aprovado +Rascunho UI: docs/plans/secao-conteudos-home-ui-draft.html + PNGs embutidos abaixo +Appetite: ~1 dia eng; seção com cards de artigos reusando o sistema `post` existente +Responsável: — + +## Intenção + +A home pública de campanha (jorgesolla1313.com.br) não tem nenhuma zona de conteúdo atualizado: ela é estática entre o hero e o CTA. Na reta final (eleição 04/10), as coisas acontecem rápido e o site precisa mostrar atividade. O wireframe já tem a seção "Acompanhe de perto" (board de conteúdo) aprovada — ela só não foi implementada. Este item é a primeira fatia da seção, com **artigos** do site (a fonte que já existe no Teqo); YouTube e Instagram entram nas fatias seguintes (S2/S3), em série, para a estrutura não divergir. + +## Persona e fluxo + +- **Persona / contexto:** visitante da home de campanha (eleitor, liderança, imprensa) — celular na maioria dos casos, chegou pelo WhatsApp/redes, no meio de funil. +- **Job principal:** ver que a campanha está viva agora (prova de atividade) e ler um conteúdo recente sem sair do clima da página. +- **Fluxo desejado:** rola a home → encontra a seção (3ª, logo antes de "Por que essa eleição importa") → vê cards de artigos recentes com badge "Artigo" → clica e vai para a página do artigo (rota canônica do post) → pode voltar e continuar na home. +- **Anti-goals de produto:** a seção NÃO vira um feed infinito; NÃO compete com o CTA primário; NÃO mostra conteúdo invisível/oculto (mecanismo `hidden`/`isPostVisible` segue valendo — fail-closed). + +### Esboço de fluxo (B) + +```text +[home: hero → prova social] → [SEÇÃO: eyebrow + título + cards artigos] → [clique no card] +→ [página do artigo: /[type]/[category]/[slug]] → [voltar à home] +``` + +### Rascunho UI (B) + +![Rascunho UI — desktop](secao-conteudos-home-ui-draft-desktop.png) + +![Rascunho UI — mobile](secao-conteudos-home-ui-draft-mobile.png) + +Fonte iterável: [`secao-conteudos-home-ui-draft.html`](secao-conteudos-home-ui-draft.html). Nesta fatia S1, o bento mostra só cards "Artigo" (a cena `desktop` já ilustra a posição final com as 3 fontes para referência). + +## Objetivo e aceite + +- A home pública exibe uma nova seção na 3ª posição (entre a prova social e "Por que essa eleição importa"), com eyebrow/título/subtitulo e links de acompanhar conforme o wireframe. +- A seção lista artigos recentes visíveis do sistema `post` existente (mesma regra de visibilidade do site: `isPostVisible` fail-closed — conteúdo oculto por tag `hidden` não aparece). +- Cada card mostra: badge "Artigo", imagem de capa, título e meta (data/categoria); o card inteiro é um link para a página canônica do artigo (`getPostCanonicalPath`), abrindo na mesma aba. +- Layout: bento 1 card grande + 4 pequenos no desktop; **no mobile (~390px) a seção vira um carrossel de 1 conteúdo por tela** (desliza entre os cards, com indicador de página), sem quebrar o fluxo da página. +- Se não houver artigos visíveis: a seção inteira é ocultada (nada de zona morta), mantendo Prova → "Por que essa eleição importa" (cena `vazio` do rascunho). +- Zero mudança em schema/migration/Consent: artigos leem o `post` collection com os helpers de cache existentes (`getVisiblePosts` / tag `posts`). + +## Dados (intenção) + +- **Vou apresentar dados?** Sim, superfície neste item — mas são **conteúdos** (artigos), não métricas. +- **Decisões desbloqueadas:** o visitante decide qual artigo ler (clique); nenhum número novo de campanha é inventado aqui. +- **Forma:** *adiada ao plano de implementação* — restrição de produto: meta = data/categoria do post (já exibidas no site), sem contadores inventados. + +## Direção no codebase (hipótese) + +- **Áreas prováveis:** `src/app/(frontend)/(home)/page.tsx` (inserir a seção entre prova e problema), novo componente de seção/card em `src/components/`, estilos no bloco `[data-theme='campaign-site']` de `src/app/(frontend)/styles.css` (padrão das seções atuais), leitura via `src/utilities/posts.ts` (`getVisiblePosts`, `getPostCanonicalPath`, `formatPostDate`). +- **Precedente a olhar:** wireframe `docs/campanha/wireframe-solla-1313.html` (seção 7, board IG+YT — o design aprovado a adaptar para artigos); seções atuais da home (`campaign-problem`, `campaign-flags`) para o ritmo visual; `src/components/PostCard.tsx` e a rota `/artigos` para o formato de card de post existente. +- **Risco de acoplamento:** a seção respeita o mecanismo eleitoral `hidden`/`isPostVisible` (nada de bypass); o cache público é o tag `posts` existente (revalidação já cobre); não duplicar o conceito de "pessoa" nem criar collection nova. + +## Dependências + +- Nenhuma (primeira fatia). S2 (YouTube) e S3 (Instagram) dependem desta. +- Soft: `docs/campanha/plano-site-campanha-2026.md` — decisões de produto do site (board §4.2, posição discutida na §3). + +## Fora de escopo + +- YouTube e Instagram na seção → S2 e S3 (deste lote). +- Compartilhamento WhatsApp → S4 (issue separada). +- Player de vídeo inline, lightbox, qualquer embed de rede no load (decisão do plano-site: clique abre na plataforma; sem iframe no carregamento). +- Curadoria manual do feed (é automático pelo mais recente), configuração no admin, "pausar feed" (kill switch) → S2/S3. +- Redesign da home, alteração de CTA primário, outras seções do wireframe. + +## Rabbit holes de produto + +- **Feed infinito / paginação.** Se alguém "só completar": a seção vira uma lista sem fim competindo com o CTA. **Corte neste item:** bento fixo (1 + 4), sem paginação; link "Ver artigos →" aponta para a rota `/artigos` existente. +- **Segunda fonte de "artigos" paralela ao `post`.** Se alguém "só completar": duplica o sistema de notícias. **Corte:** só o `post` collection com a visibilidade pública existente. +- **Vazio honesto.** A seção oculta quando sem conteúdo — não exibe placeholder de "em breve" queimando o meio de funil. + +## Questões em aberto (produto) + +- **Posição exata da seção?** **Opções:** A) 3ª seção, logo antes de "Por que essa eleição importa" (recomendação — traz conteúdo atualizado pra cima; decisão do cliente nesta sessão) | B) posição 7 do wireframe (após "Quem é Jorge Solla"). **Recomendação:** A. _(decidido — A)_ +- **Quais artigos entram no bento?** **Opções:** A) os N mais recentes visíveis, qualquer tipo de post (noticia/campanha/artigo/evento) | B) só `noticia` (igual à rota `/artigos`). **Recomendação:** A — a home de campanha agrega tudo que estiver visível; o filtro por tipo fica barato depois se a assessoria pedir. _(decidido — A)_ +- **Mobile: 1 conteúdo por tela?** **Opções:** A) carrossel de 1 card por vez (decisão do cliente nesta sessão) | B) empilhado. **Recomendação:** A. _(decidido — A)_ + +## Referências + +- GitHub Issue #17 +- Rascunho UI (gate): `docs/plans/secao-conteudos-home-ui-draft.html` + PNGs acima +- Wireframe aprovado: `docs/campanha/wireframe-solla-1313.html` (seção 7 "Acompanhe de perto") +- Plano geral do site: `docs/campanha/plano-site-campanha-2026.md` (§4.2 engenharia do board, §3 posições) +- `src/utilities/posts.ts` — visibilidade/cache/rotas canônicas de artigos +- `src/app/(frontend)/(home)/page.tsx` — onde a seção entra +- `AGENTS.md` — Posts & Tags (visibilidade `hidden` fail-closed, cache `posts`) diff --git a/docs/plans/secao-conteudos-home-instagram.md b/docs/plans/secao-conteudos-home-instagram.md new file mode 100644 index 00000000..15b5c2e9 --- /dev/null +++ b/docs/plans/secao-conteudos-home-instagram.md @@ -0,0 +1,93 @@ +# Seção de conteúdos na home de campanha — Instagram (S3) + +Status: registrado +Atualizado em: 2026-08-17 +Issue: #20 +Priority: P1 +Model: cursor-grok-4.5-medium +Impeccable: B — estende a seção S1/S2 com cards de Instagram (mesma estrutura, badge "Instagram") +Rascunho UI: docs/plans/secao-conteudos-home-ui-draft.html + PNGs embutidos abaixo +Appetite: ~1–2 dias eng; integração de leitura com a Graph API + cards na seção +Responsável: — + +## Intenção + +A seção "Acompanhe de perto" (S1 artigos + S2 YouTube) ganha os posts do Instagram oficial (`@depjorgesolla`). Instagram é onde a campanha mais posta no dia a dia (bastidores, caravanas, memes, avisos) — é a fonte que dá o ritmo de "atividade agora". A fatia segue o desenho aprovado do plano-site: automático via Instagram Graph API (conta Business/Creator + app Meta), servidor-side, sem script de embed no load; clique abre o post **na plataforma**. + +## Persona e fluxo + +- **Persona / contexto:** visitante da home de campanha, majoritariamente mobile, que quer ver a campanha pulsando hoje. +- **Job principal:** ver os posts recentes do Instagram sem sair do fluxo da página e abrir o que chamar atenção direto no app/rede. +- **Fluxo desejado:** rola até a seção → vê cards 1:1 com badge "Instagram", legenda e data → clica → abre o post no Instagram (nova aba, `noopener`), mantendo a home aberta. +- **Anti-goals de produto:** nenhum script/embed pesado do Instagram no load (LCP do mobile — decisão explícita); sem lightbox; o board nunca quebra se o token expirar; IG só liga depois do setup da Meta (review leva dias — sequenciar go-live). + +### Esboço de fluxo (B) + +```text +[seção S1+S2 + cards IG] → [clique no card IG] → [instagram.com/... nova aba] → [volta à home intacta] +Token expirado/API fora → [mantém último snapshot / oculta só os cards IG — nunca quebra a página] +``` + +### Rascunho UI (B) + +![Rascunho UI — desktop](secao-conteudos-home-ui-draft-desktop.png) + +![Rascunho UI — mobile](secao-conteudos-home-ui-draft-mobile.png) + +Fonte iterável: [`secao-conteudos-home-ui-draft.html`](secao-conteudos-home-ui-draft.html). A cena `desktop` mostra o bento final; nesta fatia S3 entram os cards Instagram (1:1). + +## Objetivo e aceite + +- A seção passa a incluir os posts mais recentes da conta oficial: cards 1:1 com badge "Instagram", legenda (título) e data; clique abre o post na plataforma (nova aba, `noopener`). **Mobile: carrossel de 1 conteúdo por tela (decisão do cliente).** +- Fonte automática: leitura servidor-side via Instagram Graph API (token long-lived com refresh, perfil Business/Creator) com cache — nenhuma chave no cliente, nenhum embed no load. +- **Exclusão por item (obrigatório — posts de grade):** o perfil do Instagram tem imagens publicadas SÓ para montar o grid do feed (ex.: grade 3×3 em mosaico), que não são conteúdo real de campanha. O admin precisa marcar posts específicos como "não exibir" (por ID da mídia), e eles somem do board — o carrossel/bento pula para o próximo elegível. Sem esse mecanismo, a seção pode mostrar mosaicos sem sentido; é o requisito nº 1 desta fatia. +- Fail-closed: token expirado/API fora/quota → mantém último snapshot em cache; sem snapshot, a seção segue com as outras fontes — a página nunca quebra nem mostra erro. +- **Configuração no admin** conforme plano-site §4.2 (sem trava de schema nesta intenção); **sem credenciais IG configuradas, os cards IG simplesmente não aparecem** (a seção vive com artigos + YouTube). +- Kill switch "pausar feed" do plano-site vale para o board como um todo. +- Zero mudança em schema de conteúdo público; migrações não destrutivas no máximo (config no admin). + +## Dados (intenção) + +- **Vou apresentar dados?** Sim, superfície neste item — metadados do post (imagem, legenda, data) vindos da plataforma. +- **Decisões desbloqueadas:** o visitante decide qual post abrir; nada de métricas inventadas. +- **Forma:** *adiada ao plano de implementação* — restrição de produto: legenda/data como a plataforma mostra; sem contadores derivados. + +## Direção no codebase (hipótese) + +- **Áreas prováveis:** mesmo componente de seção/card de S1/S2 (`src/components/`, `src/app/(frontend)/(home)/page.tsx`, bloco `campaign-site` em `styles.css`); loader servidor-side novo com cache (`src/utilities/` ou `src/lib/`); config no admin (global do Payload, grupo `Configurações`). +- **Precedente a olhar:** S1/S2 (estrutura); `docs/campanha/plano-site-campanha-2026.md` §4.2 (Graph API, token long-lived com refresh ~60 dias, kill switch, "IG só liga após setup da Meta"); `src/utilities/posts.ts` (padrão de cache). +- **Risco de acoplamento:** mesma generalização da seção — card de conteúdo único (Artigo/YouTube/Instagram) sem código duplicado por plataforma; o setup da Meta é sequenciamento de go-live (externo), não bloqueia a implementação. + +## Dependências + +- **S2** (estrutura da seção completa: artigos + YouTube) — dura. +- Soft: `docs/campanha/plano-site-campanha-2026.md` §4.2 + pendência §5 ("mix mandato/campanha no board"). + +## Fora de escopo + +- Compartilhamento WhatsApp → S4 (issue separada). +- Script de embed do Instagram no load (proibido pelo plano-site). +- Curadoria manual além da exclusão por item (etiquetas, ordenação manual, destaques); stories; DMs; estatísticas além do básico do post; outras contas. +- Setup da Meta (app/credenciais) é tarefa da assessoria/produção — a implementação só consome as credenciais quando existirem. + +## Rabbit holes de produto + +- **Embed no load.** Se alguém "só completar": o script do Instagram derruba o LCP (decisão explícita do plano-site). **Corte:** thumbnail + link para a plataforma. +- **Refresh de token como feature de produto.** Se alguém "só completar": vira um painel de OAuth. **Corte:** token long-lived com refresh automático conforme o plano-site; falha → fail-closed (snapshot/oculta). +- **IG sem credencial = erro.** Se alguém "só completar": a seção mostra erro de configuração. **Corte:** sem credencial, cards IG não existem — nada de aviso. +- **Exclusão vira curadoria pesada.** Se alguém "só completar": lista enorme de IDs, razões obrigatórias, aprovação. **Corte:** marcar/desmarcar item (thumbnail + ID) no admin; sem workflow. + +## Questões em aberto (produto) + +- **Mix mandato/campanha no board** — mesma questão da S2: **Opções:** A) automático (recomendação — pendência já registrada no plano-site §5, decidir com a assessoria) | B) filtrar por hashtag/tag. **Recomendação:** A. _(decidido — A + exclusão por item)_ +- **Exclusão por item: o que aparece para marcar?** **Opções:** A) o admin vê a lista dos últimos posts (thumbnail + ID) e marca os que não devem aparecer (recomendação — sem isso, marcar por ID puro é inviável para a assessoria) | B) só campo de IDs com documentação. **Recomendação:** A — a interface de exclusão é parte desta fatia. _(assumido — validar com produto)_ +- **Grade do feed (grid) entra?** **Opções:** A) posts de grade entram no automático e são excluídos um a um pela assessoria quando aparecem (recomendação — simples, transparente) | B) tentar detectar grade por heurística e já ocultar. **Recomendação:** A — heurística de "post de grade" é frágil (o IG não sinaliza); a exclusão manual resolve o caso real. _(assumido — validar com produto)_ + +## Referências + +- GitHub Issue #20 +- Rascunho UI (gate): `docs/plans/secao-conteudos-home-ui-draft.html` + PNGs acima +- `docs/campanha/plano-site-campanha-2026.md` §4.2 — decisões do board IG (Graph API, token, kill switch, sem embed) e §5 pendência "mix mandato/campanha" +- Wireframe: `docs/campanha/wireframe-solla-1313.html` (seção 7) +- `docs/plans/secao-conteudos-home-artigos.md` (S1) e `secao-conteudos-home-youtube.md` (S2) +- `AGENTS.md` — padrões de cache, admin em pt, convenções de nome diff --git a/docs/plans/secao-conteudos-home-ui-draft-compartilhar.png b/docs/plans/secao-conteudos-home-ui-draft-compartilhar.png new file mode 100644 index 0000000000000000000000000000000000000000..bb4a872e1c57c880d666bd87bf9adb491327be29 GIT binary patch literal 47453 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 T43K1f&sxqT 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 literal 0 HcmV?d00001 diff --git a/docs/plans/secao-conteudos-home-ui-draft-mobile.png b/docs/plans/secao-conteudos-home-ui-draft-mobile.png new file mode 100644 index 0000000000000000000000000000000000000000..d47061b421ed742236ded8386d0a57fa9c3f655f GIT binary patch literal 31461 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 z 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 Ml8O>lV#dM$3q{eQnE(I) literal 0 HcmV?d00001 diff --git a/docs/plans/secao-conteudos-home-ui-draft-vazio.png b/docs/plans/secao-conteudos-home-ui-draft-vazio.png new file mode 100644 index 0000000000000000000000000000000000000000..c0d577f79f900b30150bd571a304b3cae3320c2e GIT binary patch literal 35138 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

{$?F#QQ#b&_4x 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 Do8%nL literal 0 HcmV?d00001 diff --git a/docs/plans/secao-conteudos-home-ui-draft.html b/docs/plans/secao-conteudos-home-ui-draft.html new file mode 100644 index 00000000..97dd6868 --- /dev/null +++ b/docs/plans/secao-conteudos-home-ui-draft.html @@ -0,0 +1,285 @@ + + + + + + + UI draft — Seção de conteúdos na home de campanha + + +

+

+ Visitante da home pública de campanha (jorgesolla1313). Seção 3 da página: logo após a + prova social, imediatamente antes de "Por que essa eleição importa". Card de conteúdo + generalizado (Artigo / YouTube / Instagram) — clique leva ao artigo ou à plataforma. +

+ + +
+ +
+ 3.333 proposições + 1.031 discursos + 3º mandato +
+ + + + + + +
+

+ Por que essa eleição importa +

+

+ Eleger deputado é coisa séria. O Congresso tem nas mãos vidas reais e o SUS. +

+
+
+ + +
+ +
+ 3.333 proposições + 1.031 discursos + 3º mandato +
+ + +
+

+ Acompanhe de perto +

+

A caminhada, em tempo real

+

+ Bastidores, caravanas e as lutas do mandato: conteúdo atualizado, direto das redes. +

+ + + + + +
+ + + + + +
+

1 de 5 · deslize para ver os próximos

+
+
+ + +
+

+ Card de conteúdo com botão discreto de compartilhamento (canto do card, sem competir com + o CTA primário): abre WhatsApp com mensagem pré-configurada + opção de copiar link. +

+
+
+
+ + YouTube + + + thumb 16:9 + +
+

+ Título do vídeo recente, até duas linhas +

+ há 2 dias · 12,4 mil visualizações + +
+
+
+ + Artigo + + + capa 16:9 + +
+

+ Título do artigo, até duas linhas +

+ há 1 dia · categoria + +
+
+

+ Menu aberto (v1): "Compartilhar no WhatsApp" (mensagem pré-configurada com título + + link) e "Copiar link". +

+
+ WhatsApp ↗ +
+
+ Copiar link +
+
+
+
+ + +
+

+ Vazio / fail-closed — nenhuma fonte com conteúdo disponível (artigos invisíveis ou APIs + sem snapshot). Recomendação: a seção inteira é ocultada; a página mantém o fluxo + Prova → Por que essa eleição importa, sem zona morta. +

+
+ 3.333 proposições + 1.031 discursos + 3º mandato +
+
+

+ Por que essa eleição importa +

+

+ Eleger deputado é coisa séria. O Congresso tem nas mãos vidas reais e o SUS. +

+
+
+
+ + diff --git a/docs/plans/secao-conteudos-home-youtube.md b/docs/plans/secao-conteudos-home-youtube.md new file mode 100644 index 00000000..b17634bb --- /dev/null +++ b/docs/plans/secao-conteudos-home-youtube.md @@ -0,0 +1,93 @@ +# Seção de conteúdos na home de campanha — YouTube (S2) + +Status: registrado +Atualizado em: 2026-08-17 +Issue: #18 +Priority: P1 +Model: cursor-grok-4.5-medium +Impeccable: B — estende a seção S1 com cards de vídeo (mesma estrutura de card, badge "YouTube") +Rascunho UI: docs/plans/secao-conteudos-home-ui-draft.html + PNGs embutidos abaixo +Appetite: ~1–2 dias eng; integração de leitura com a API do YouTube + cards na seção S1 +Responsável: — + +## Intenção + +A seção "Acompanhe de perto" da home de campanha (criada em S1 com artigos) ganha os vídeos do canal oficial. O canal já existe (`@JorgeSollaDep`) e posta com frequência — vídeos são o conteúdo de maior engajamento na reta final. A fatia segue o desenho aprovado no plano do site: automático via API do YouTube, servidor-side, sem iframe no carregamento; clique abre o vídeo **na plataforma** (decisão do wireframe). + +## Persona e fluxo + +- **Persona / contexto:** visitante da home de campanha que quer ver a caminhada em movimento (bastidores, caravanas, entrevistas). +- **Job principal:** ver que o canal está ativo e assistir o vídeo mais recente sem caçar o canal. +- **Fluxo desejado:** rola até a seção → vê o card grande do último vídeo (thumbnail 16:9 + badge "YouTube" + título + views/data) e cards menores dos seguintes → clica no card → abre o vídeo no YouTube (nova aba, `noopener`), mantendo a home aberta. +- **Anti-goals de produto:** nenhum embed/player inline no v1 (decisão do plano-site §4.2: "sem iframe no load", LCP do mobile); o board não é curadoria manual; a seção nunca quebra se a API falhar. + +### Esboço de fluxo (B) + +```text +[seção S1 + cards YT] → [clique no card YT] → [youtube.com/... nova aba] → [volta à home intacta] +API indisponível → [mantém último snapshot / oculta só os cards YT — nunca quebra a página] +``` + +### Rascunho UI (B) + +![Rascunho UI — desktop](secao-conteudos-home-ui-draft-desktop.png) + +![Rascunho UI — mobile](secao-conteudos-home-ui-draft-mobile.png) + +Fonte iterável: [`secao-conteudos-home-ui-draft.html`](secao-conteudos-home-ui-draft.html). A cena `desktop` mostra o bento final (Artigo + YouTube + Instagram); nesta fatia S2 entram só os cards YouTube. + +## Objetivo e aceite + +- A seção S1 passa a incluir os vídeos mais recentes do canal oficial: card grande = último vídeo (16:9), pequenos = próximos, com badge "YouTube", título, data e visualizações. **Mobile: carrossel de 1 conteúdo por tela (decisão do cliente).** +- Fonte automática: leitura servidor-side da API pública do YouTube (dados dos últimos vídeos do canal), com cache (ISR/revalidação) — nenhuma chave no cliente, nenhum iframe no load. +- Clique no card abre o vídeo **na plataforma** (URL canônica do vídeo), em nova aba com `noopener` — sem lightbox, sem player inline (decisão do wireframe; player inline fica fora de escopo). +- **Exclusão por item (curadoria mínima):** o admin pode marcar vídeos específicos para NÃO aparecer (ex.: vídeo errado, conteúdo que não é de campanha, transmissão incompleta). Itens excluídos não são exibidos nem contam para "o último vídeo" — o board pula para o próximo elegível. Mesmo mecanismo de exclusão das outras plataformas (S3), configurado no mesmo lugar no admin. +- Fail-closed: API sem resposta/token expirado/quota estourada → mantém o último snapshot em cache se existir; sem snapshot, a seção continua com as outras fontes (ou oculta por completo se nada houver) — a página nunca quebra nem mostra erro. +- A configuração (chave/IDs + exclusões) vive no admin, seguindo o desenho do plano-site §4.2 (sem trava de schema nesta intenção — o executor define a forma); sem chave configurada, os cards YT simplesmente não aparecem. +- Zero mudança em schema de conteúdo público / migrations destrutivas; a visibilidade eleitoral `hidden` dos posts não se aplica aqui (fonte externa), mas o kill switch do feed (pausar) segue o desenho do plano-site. + +## Dados (intenção) + +- **Vou apresentar dados?** Sim, superfície neste item — metadados do vídeo (título, thumbnail, data, visualizações) vindos da plataforma. +- **Decisões desbloqueadas:** o visitante decide qual vídeo assistir (clique); visualizações são fato da plataforma (não inventar). +- **Forma:** *adiada ao plano de implementação* — restrição de produto: mostrar views como a plataforma mostra (ex. "12,4 mil"), nunca métrica derivada da campanha. + +## Direção no codebase (hipótese) + +- **Áreas prováveis:** mesmo componente de seção/card de S1 (`src/components/`, `src/app/(frontend)/(home)/page.tsx`, bloco `campaign-site` em `styles.css`); loader/fetch servidor-side novo em `src/utilities/` ou `src/lib/` com cache (padrão `unstable_cache` do repo); config no admin (global do Payload, grupo `Configurações` — sem nome de arquivo travado). +- **Precedente a olhar:** S1 (estrutura da seção); `docs/campanha/plano-site-campanha-2026.md` §4.2 (decisões: Data API v3, server-side, ISR, thumbnails CDN, sem iframe no load); padrões de cache do repo (`src/utilities/posts.ts`, `unstable_cache` + tags); `seed-posts.mjs` se precisar de referência de chamada externa com cache de download. +- **Risco de acoplamento:** seção compartilhada com S3 (Instagram) — a estrutura de card generalizada criada em S1 não pode virar código duplicado por plataforma; o kill switch de "pausar feed" do plano-site é um toggle único do board (não por plataforma na intenção — validar no plano de implementação). + +## Dependências + +- **S1** (estrutura da seção + card generalizado) — dura. +- Soft: `docs/campanha/plano-site-campanha-2026.md` §4.2 (decisões de engenharia do board). + +## Fora de escopo + +- Instagram → S3 (mesma seção, mesmo lote). +- Compartilhamento WhatsApp → S4 (issue separada). +- Player inline / lightbox / iframe no load (decisão do wireframe: clique abre na plataforma). +- Curadoria manual além da exclusão por item (playlists, etiquetas, ordenação manual, seleção de destaques); download/armazenamento dos vídeos; estatísticas além do que a API entrega (comentários, inscritos). +- Outros canais/contas (a configuração aponta um canal oficial). + +## Rabbit holes de produto + +- **Embed no load.** Se alguém "só completar": iframes de YouTube derrubam o LCP no mobile (decisão explícita do plano-site §4.2). **Corte:** thumbnail + link para a plataforma. +- **Vídeo "em destaque" com escolha manual.** Se alguém "só completar": vira curadoria semanal. **Corte:** automático (último vídeo elegível = card grande). +- **Exclusão vira curadoria pesada.** Se alguém "só completar": lista enorme de IDs, razões obrigatórias, aprovação. **Corte:** marcar/desmarcar item no admin; sem workflow. +- **Fail-closed vira erro visível.** Se alguém "só completar": mensagem de "erro ao carregar" queima a home. **Corte:** seção nunca mostra erro — snapshot ou ocultação silenciosa. + +## Questões em aberto (produto) + +- **Misturar mandato e campanha no board?** **Opções:** A) automático — expõe o que o canal postar (recomendação: pendência já registrada no plano-site §5, decidir com a assessoria antes do go-live) | B) filtrar por termo/playlist. **Recomendação:** A, com o kill switch do plano-site + exclusão por item como rede de segurança. _(decidido — A + exclusão por item)_ +- **Exclusão por item: qual granularidade?** **Opções:** A) lista de IDs excluídos por plataforma, gerenciada no admin (recomendação — simples, auditável, suficiente para vídeos errados/indesejados) | B) razão/etiqueta obrigatória por exclusão. **Recomendação:** A — o motivo pode ser um campo opcional de texto livre, sem virar workflow. _(assumido — validar com produto)_ + +## Referências + +- GitHub Issue #18 +- Rascunho UI (gate): `docs/plans/secao-conteudos-home-ui-draft.html` + PNGs acima +- `docs/campanha/plano-site-campanha-2026.md` §4.2 — decisões do board (API, cache, sem iframe, fail-closed) e §5 pendência "mix mandato/campanha" +- Wireframe: `docs/campanha/wireframe-solla-1313.html` (seção 7) +- `docs/plans/secao-conteudos-home-artigos.md` (S1 — estrutura que esta fatia estende) +- `AGENTS.md` — padrões de cache (`unstable_cache`), admin em pt, convenções de nome (identificadores em inglês) From 6a3f61f968f8357ebf1eee4b4f7704228fbdd4b5 Mon Sep 17 00:00:00 2001 From: Francisco Solla Date: Mon, 17 Aug 2026 21:24:32 -0300 Subject: [PATCH 5/8] ops(OPS53): etapa de deploy no CI para o homeserver (teqo-1313) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Job deploy em ci.yml (runs-on host na workstation) streama scripts/deploy-homeserver.sh para o homeserver via SSH: build dos stages runner+migrator com secrets do teqo-1313.env, push no registry local, migrate pelo serviço de maintenance antes do rollout, up + smoke. Zero secrets novos no Forgejo; HEAD guard + flock; rollback automático com backup do compose; runbook docs/ops/teqo-1313-deploy.md; invariantes unit do script (bash -n + estrutura). --- .forgejo/workflows/ci.yml | 26 ++- AGENTS.md | 2 +- docs/AGENT-OPS.md | 22 +-- docs/CHANGELOG-AGENTS.md | 2 + docs/changelog/2026-08-17-ops53.md | 1 + docs/ops/teqo-1313-deploy.md | 83 +++++++++ docs/plans/ops53-ci-deploy-homeserver-impl.md | 95 ++++++++++ scripts/deploy-homeserver.sh | 169 ++++++++++++++++++ tests/unit/deployScript.unit.spec.ts | 65 +++++++ 9 files changed, 451 insertions(+), 14 deletions(-) create mode 100644 docs/changelog/2026-08-17-ops53.md create mode 100644 docs/ops/teqo-1313-deploy.md create mode 100644 docs/plans/ops53-ci-deploy-homeserver-impl.md create mode 100644 scripts/deploy-homeserver.sh create mode 100644 tests/unit/deployScript.unit.spec.ts diff --git a/.forgejo/workflows/ci.yml b/.forgejo/workflows/ci.yml index bc3302e3..7027f2fa 100644 --- a/.forgejo/workflows/ci.yml +++ b/.forgejo/workflows/ci.yml @@ -1,6 +1,9 @@ # Post-merge verifier on `main`: always the FULL suite (no affected skips). -# No deploy step: production is self-hosted on the homeserver -# (jorgesolla1313.com.br), deployed outside this pipeline. +# When the suite is green, the `deploy` job publishes teqo-1313 on the +# homeserver (OPS53): it streams scripts/deploy-homeserver.sh to the homeserver +# over SSH; the remote script builds the standalone image at the pushed SHA, +# pushes it to the local registry (localhost:5000), applies pending migrations +# through the compose maintenance service and rolls the container out. # # Forgejo port (OPS50): Postgres services publish to per-job HOST ports on the # runner machine (act/forgejo runner semantics — the canonical 5432 is the @@ -204,3 +207,22 @@ jobs: to_entries | all(.value.result == "success" or .value.result == "skipped") ' + + deploy: + name: deploy homeserver (teqo-1313) + # OPS53. Runs directly on the runner HOST (not a job container): the + # deploy needs the workstation's SSH key to reach the homeserver + # (`ssh homeserver`) and streams the whole remote build/migrate/rollout + # to this job's logs. Deliberately wired ONLY here — push to main + + # workflow_dispatch — never in ci-pr.yml: a host job is code execution as + # `fsolla` on the workstation, and main only ever moves through a merged + # PR whose full suite was already green. + needs: [checks] + runs-on: host + timeout-minutes: 60 + steps: + - uses: actions/checkout@v5 + - name: Deploy teqo-1313 on the homeserver + run: | + set -euo pipefail + ssh homeserver "bash -s -- $GITHUB_SHA" < scripts/deploy-homeserver.sh diff --git a/AGENTS.md b/AGENTS.md index 2e92575c..f34c1711 100644 --- a/AGENTS.md +++ b/AGENTS.md @@ -12,7 +12,7 @@ These are product/architecture constraints — not a ban on editing existing cod - Single Next.js app, three route groups: `(frontend)` public site, `(payload)` admin, `(campaign)` internal campaign tool. No separate Rust service or frontend app for `/campanha`; it is modeled with Payload collections. The campaign roles are `coordinator` (label "Coordenador Geral"), `advisor` ("Assessor"), `leader` ("Liderança"), and `candidate` ("Candidato", unrestricted visibility), all on the separate auth collection `campaignUser` (see "Campaign auth" below). An advisor sees and manages ONLY the municipalities they administer; a leader is locked down to the supporter contact tool. - **2026-07-23 remodel (DEPLOYED to production 2026-07-23): "Município" is the operational unit** (it replaced "Praça", which replaced "Núcleo Eleitoral"). Municípios are PREDEFINED (seeded, geography read-only): 435 rows — one per Bahia municipality (416), except Salvador (19 zone Municípios, ZE 1–19); Camaçari is a single whole municipality (ZE 170/171 aggregated); shared/leaky TSE zones are cut at the municipal boundary. Code identifier: `municipality`. Leaderships are one record per person (`contact` UNIQUE) linked to N municipalities and N organizations; vote pledges are per leadership×municipality with `declaredVotes` (staff-entered, leader-visible) vs `estimatedVotes` (three scenarios, staff-only, hidden from the leader). Campaign production data was reset by the remodel migrations (public-site data untouched). Master plan: `docs/plans/remodelagem-municipios.md` (supersedes `remodelagem-pracas.md`). Details: "Campaign Municípios model" below. -- Production is self-hosted on the homeserver (`jorgesolla1313.com.br`, behind the Cloudflare tunnel; container/database `teqo-1313`/`teqo_1313`). **There is no Vercel deploy anymore** — the Vercel deploy job, `vercel-promote.yml`, the Vercel scripts/`vercel.json` and the `VERCEL_*` repo secrets were removed in OPS50 (2026-08-17). The CI (`ci.yml` on `main`) is a pure verifier: full suite green, no deploy step. Deploying the homeserver container is an ops runbook outside this repo (infra-solla). **The production database lives on the homeserver Postgres (`teqo_1313`, migrated from Neon in OPS51, 2026-08-17)** — the full production content (contacts, signatures, subscriptions, campaign) was restored there via `pg_dump`/`pg_restore` (dump in `/srv/hdd/backups/teqo-neon-pre-migracao/`); Neon remains alive and untouched as the documented rollback (re-point `DATABASE_URL` in `~/stack/teqo-1313.env`). Media still on Vercel Blob until OPS52 (covers render broken pre-existing — 40 media rows reference local `/api/media/file/...` paths with no files anywhere; OPS52 scope). Never point dev/test databases at the homeserver prod DB either — the local guards (`guard-dev-db`, `assertTestDatabase`) still enforce `localhost`/`_test`-suffixed targets. +- Production is self-hosted on the homeserver (`jorgesolla1313.com.br`, behind the Cloudflare tunnel; container/database `teqo-1313`/`teqo_1313`). **There is no Vercel deploy anymore** — the Vercel deploy job, `vercel-promote.yml`, the Vercel scripts/`vercel.json` and the `VERCEL_*` repo secrets were removed in OPS50 (2026-08-17). The CI (`ci.yml` on `main`) is the verifier — full suite green — **plus the deploy step (OPS53, 2026-08-17)**: the `deploy` job (runs-on `host` on the workstation runner) streams `scripts/deploy-homeserver.sh` to the homeserver over SSH; the remote script builds the standalone image at the pushed SHA (BuildKit secrets from `~/stack/teqo-1313.env`), pushes it to the local registry (`localhost:5000`), applies pending migrations through the compose maintenance service `teqo-1313-migrate` **before** the rollout, and recreates the container. Merge em `main` verde == site atualizado. Runbook (rollback, falhas conhecidas): `docs/ops/teqo-1313-deploy.md`. **The production database lives on the homeserver Postgres (`teqo_1313`, migrated from Neon in OPS51, 2026-08-17)** — the full production content (contacts, signatures, subscriptions, campaign) was restored there via `pg_dump`/`pg_restore` (dump in `/srv/hdd/backups/teqo-neon-pre-migracao/`); Neon remains alive and untouched as the documented rollback (re-point `DATABASE_URL` in `~/stack/teqo-1313.env`). Media still on Vercel Blob until OPS52 (covers render broken pre-existing — 40 media rows reference local `/api/media/file/...` paths with no files anywhere; OPS52 scope). Never point dev/test databases at the homeserver prod DB either — the local guards (`guard-dev-db`, `assertTestDatabase`) still enforce `localhost`/`_test`-suffixed targets. - Donations are NOT handled in this app — they run through QueroApoiar (`apoiar.me/jorgesolla`, TSE-homologated). The site only needs a "Doar" link/CTA out to that URL. - **Embasamento de produto/domínio:** `docs/research/` guarda o compêndio de literatura (campanha de DF na Bahia, geografia do voto, cartografia eleitoral) e o relatório de discovery aprovado (2026-07-21) com o playbook dado→decisão. Para métricas, análises territoriais, mapa e priorização em `/campanha`, consulte-o antes de inventar — o kernel: a disputa de DF é conta de quociente fragmentada; leitura útil é relativa e local (captura, LQ, quantis, cobertura de meta por pledges), nunca % estadual absoluto. diff --git a/docs/AGENT-OPS.md b/docs/AGENT-OPS.md index 666d3620..ed9cbe82 100644 --- a/docs/AGENT-OPS.md +++ b/docs/AGENT-OPS.md @@ -7,7 +7,7 @@ Uma página. Norte: simplicidade (só GitHub + Cursor), agente entrega em `main` | Ambiente | Conteúdo | Quem usa | | ------------------------------------------- | ------------------------------------------------------------ | -------------------------------- | | **Mínimo** (`teqo_test` local / service CI) | schema migrado + `pnpm db:seed:minimal` (sintético, sem PII) | agentes, Cursor Cloud, CI | -| **Prod** (Neon prod) | real | deploy Vercel gated por `ci.yml` | +| **Prod** (`teqo_1313`, homeserver) | real | job `deploy` do `ci.yml` (OPS53) | Agentes **nunca** recebem `DATABASE_URL` de prod e nunca setam `ALLOW_REMOTE_DB`. Não há mais smoke Neon `stage` / `ALLOW_STAGE_TEST_DB` / `ci-stage.yml`. @@ -15,7 +15,7 @@ Agentes **nunca** recebem `DATABASE_URL` de prod e nunca setam `ALLOW_REMOTE_DB` ```text claim → feature branch → PR --base main → CI PR green (cascade + skips) → auto-merge em main -main → ci.yml full suite (verificador puro; sem deploy — produção é self-hosted no homeserver, runbook fora do repo) +main → ci.yml full suite verde → job `deploy` (homeserver, OPS53 — merge em main == site atualizado) ``` **Skills:** `plan-issue` (intenção + Issues) → `work-issue` (humano: Issue já claimada → impl plan → confirmação → execução) ou `agent-work-issue` (pool: já claimada → impl plan → execução sem pausa) → `/simplify` → `capture-review-debts` → PR `--base main` → `project-status`. `docs/roadmap.md` = legado congelado; fonte canônica = GitHub Issues. @@ -69,14 +69,14 @@ Arquivos de "lista" que N agentes escrevem em paralelo (changelog, plans, migra ## CI por alvo -| Workflow | Trigger | Banco | Passos | -| ------------------------------------ | -------------------------------------- | ------------------- | ------------------------------------------------------------------------------------------------------------------------- | -| `ci-pr.yml` | PR → `main` | service Postgres 17 | Fase 1 barata → fase 2 cara; skips via `ci-scope.mjs`; fail-fast cancela o run no 1º job vermelho; rollup `checks` | -| `ci.yml` | push / dispatch `main` | service Postgres | Full sempre; fail-fast cancela o run no 1º job vermelho; rollup `checks`; sem deploy (produção self-hosted no homeserver) | -| `issue-done-on-main-merge.yml` | PR merged → `main` | — | `Closes`/`Fixes` → `done` + `in-prod` | -| `plan-issue-ready-on-main-merge.yml` | PR merged → `main` | — | `Related #N` aguardando plano → `ready` (OPS18; soft-skip) | -| `agent-pr-ready-automerge.yml` | PR `cursor/*` → `main` (open/sync/…) | — | Draft→Ready + `gh pr merge --auto --rebase` (safety net; audit incluso) | -| `agent-pool.yml` | schedule / PR closed `main` / dispatch | — | Supervisor do pool (`POOL_GITHUB_TOKEN`) | +| Workflow | Trigger | Banco | Passos | +| ------------------------------------ | -------------------------------------- | ------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------ | +| `ci-pr.yml` | PR → `main` | service Postgres 17 | Fase 1 barata → fase 2 cara; skips via `ci-scope.mjs`; fail-fast cancela o run no 1º job vermelho; rollup `checks` | +| `ci.yml` | push / dispatch `main` | service Postgres | Full sempre; fail-fast cancela o run no 1º job vermelho; rollup `checks`; job `deploy` (runs-on `host`) publica no homeserver via `scripts/deploy-homeserver.sh` (OPS53) | +| `issue-done-on-main-merge.yml` | PR merged → `main` | — | `Closes`/`Fixes` → `done` + `in-prod` | +| `plan-issue-ready-on-main-merge.yml` | PR merged → `main` | — | `Related #N` aguardando plano → `ready` (OPS18; soft-skip) | +| `agent-pr-ready-automerge.yml` | PR `cursor/*` → `main` (open/sync/…) | — | Draft→Ready + `gh pr merge --auto --rebase` (safety net; audit incluso) | +| `agent-pool.yml` | schedule / PR closed `main` / dispatch | — | Supervisor do pool (`POOL_GITHUB_TOKEN`) | Action runtimes: `actions/checkout@v5`, `actions/setup-node@v5`, `pnpm/action-setup@v6` e `styfle/cancel-workflow-action@0.13.1` usam Node 24 nativo — sem `FORCE_JAVASCRIPT_ACTIONS_TO_NODE24`. @@ -90,7 +90,7 @@ Fast gate: `pnpm gate:fast`. Push: `pnpm push`. | `CURSOR_API_KEY` | Supervisor do pool (Cursor Cloud) | | `POOL_GITHUB_TOKEN` | PAT `actions:write` + `issues:write` (variables do pool; `GITHUB_TOKEN` costuma 403) | -Sem deploy Vercel: o job `deploy`, `vercel-promote.yml`, os scripts de Vercel e `vercel.json` foram removidos no OPS50 — produção é self-hosted no homeserver (`jorgesolla1313.com.br`), deploy via runbook de infra fora deste repo. +Deploy (OPS53): o job `deploy` do `ci.yml` roda no host do runner (workstation) e streama `scripts/deploy-homeserver.sh` para o homeserver via SSH — build no homeserver (secrets de `~/stack/teqo-1313.env`), registry `localhost:5000`, migrate pelo serviço de maintenance `teqo-1313-migrate` antes do rollout, smoke pós-deploy. Nenhum secret novo no Forgejo. Runbook (rollback, falhas conhecidas): `docs/ops/teqo-1313-deploy.md`. O deploy Vercel (`vercel-promote.yml`, scripts, `vercel.json`) foi removido no OPS50. ## Cursor Cloud diff --git a/docs/CHANGELOG-AGENTS.md b/docs/CHANGELOG-AGENTS.md index 31e9b9f2..f8ab41f7 100644 --- a/docs/CHANGELOG-AGENTS.md +++ b/docs/CHANGELOG-AGENTS.md @@ -6,6 +6,8 @@ Conteúdo movido do `AGENTS.md` em 2026-07-30 (fatiamento do paradigma de agente **Recently resolved (2026-08-17):** **OPS51** — o banco de produção saiu do Neon para o Postgres do homeserver (`teqo_1313`, container `teqo-1313`), sem mudança de config: o `~/stack/teqo-1313.env` já apontava para o banco preparado (criado 16/08 com role própria + cadeia completa de 56 migrations + zero conteúdo — verificado), então restaurar = a produção "apareceu" no container. **Divergência deliberada da intenção (questão A/B validada como B):** rejeitado criar `teqo_prod` novo — o argumento "o banco do 1313 tem vida própria" não se sustenta (o site 1313 É a produção deste repo) e o OPS53 já trata `teqo_1313` como produção. Execução 100% no homeserver (PII nunca tocou a workstation): URL do Neon puxada do Vercel (`vercel env pull`, projeto `jorgesolla`, `DATABASE_URL_UNPOOLED` → `NEON_DATABASE_URL` em `~/stack/.env` chmod 600), `pg_dump -Fc` (Neon PG 17.10) → `/srv/hdd/backups/teqo-neon-pre-migracao/teqo-neon-full-20260817-204800.dump` (5,8 MB, sha256 `f12196f2…`), `pg_restore --no-owner --no-privileges` como a role `teqo_1313` (drop schema + grant, padrão do `db-pull`), verificado: contagens por tabela idênticas ao Neon (1919 contatos, 39 posts, 1487 assinaturas, 1484 subscrições, 35 campaign_users, 392 lideranças, 2 pledges, 435 municípios, 6 atividades; supporter segue 0 — blocker LGPD ainda de pé), sequences no topo (`last_value == max(id)`), objetos com dono `teqo_1313`, `payload migrate` no-op (56 = 56, serviço de maintenance `teqo-1313-migrate`), 3 credenciais WebAuthn + 34 sessions + 5 chaves Consent restauradas (RP ID não mudou — biometria segue valendo). Smoke sem deploy: `/`, artigo com conteúdo restaurado, `/campanha/login`, `/admin`, `POST /api/revalidate` (`posts` + `global_privacy-policy`), WebAuthn `login-options`, barreira 307 sem sessão — verdes; smoke de browser (login, biometria, convites) validado manualmente. **Rollback documentado:** Neon nunca foi escrito (só lido); voltar = re-apontar `DATABASE_URL` do `teqo-1313.env` para o Neon + `compose up -d`. **Débito registrado (→ OPS52):** as 40 rows de `media` têm URLs relativas (`/api/media/file/…`) sem arquivos em lugar nenhum — capas dão 500 no homeserver e **404 no próprio Vercel/produção atual** (estado pré-existente; migração manteve paridade). Repo: plano da intenção concluído, `AGENTS.md` e help de `db:pull`/`check-push-chain` sem a referência ao Neon; infra-solla `STATE.md` atualizado à parte. +**Recently resolved (2026-08-17):** **OPS53** — o deploy do site 1313 virou etapa do CI: mergir em `main` com a suite verde == site atualizado em `jorgesolla1313.com.br`, sem passo manual. O job `deploy` em `.forgejo/workflows/ci.yml` roda no host do runner (workstation, `runs-on: host`) e streama `scripts/deploy-homeserver.sh` para o homeserver via SSH (`ssh homeserver "bash -s -- "`); o script remoto (bash puro, homeserver sem dependências novas) faz: guard de HEAD (`git ls-remote` de `main` == SHA do job, senão skip "stale"), `flock` de serialização, workspace `~/teqo-deploy` (clone do Forgejo local), `docker login localhost:5000` (REGISTRY_USER/PASSWORD de `~/stack/.env`), build dos stages `runner`+`migrator` no homeserver (`--network stack_default` para a geração estática alcançar o `postgres:5432` do compose; secrets de `~/stack/teqo-1313.env` via BuildKit, sem camadas/logs), push no registry local, swap dos tags de imagem no compose (com backup `docker-compose.yml.pre-`), **migrate pelo serviço de maintenance `teqo-1313-migrate` antes do rollout**, `docker compose up -d`, espera do healthcheck e smoke (`/`, `/campanha/login`, `/admin`, barreira 307, WebAuthn `login-options` com body JSON, `POST /api/revalidate` com o secret real — rehearsal validado contra o site vivo). Falha pós-swap → rollback automático best-effort (restore do backup + `up -d` da imagem anterior) + job vermelho. **Divergência deliberada da intenção (fato novo):** a intenção assumia o runner no homeserver; verificado (`infra-solla/STATE.md` + ao vivo) que o runner é a `workstation-runner` na workstation e o stack de produção vive no homeserver — a abordagem A foi corrigida para "job `runs-on: host` na workstation + todo o deploy no homeserver via SSH", o que manteve **zero secrets novos no Forgejo** e zero mudança de infra no compose. Nenhum secret no repo; envs seguem chmod-600 no homeserver. Runbook (rollback manual, falhas conhecidas, decisão de segurança do host label): `docs/ops/teqo-1313-deploy.md` (novo). Guarda estrutural nova: `tests/unit/deployScript.unit.spec.ts` (bash -n + invariantes do pipeline: HEAD guard, BuildKit secrets, ordem migrate→rollout, smoke). AGENTS.md/AGENT-OPS.md atualizados. Primeiro deploy real = o merge deste próprio item (tracer bullet); infra-solla `STATE.md` anotado à parte. + **Recently resolved (2026-08-16):** **CAMPAIGN-HOME-RESPONSIVE**: a primeira dobra da home pública agora acompanha as referências do Penpot em 393, 768, 1024, 1280, 1366 e 1920 px. Retrato, aliados, marca, texto, CTAs e prova parlamentar interpolam entre os tamanhos com `clamp()`, `vw` e `dvh`, sem saltos por proporção de tela nem overflow horizontal; texto, ações e condecorações permanecem no fluxo e crescem com os ajustes de espaçamento da WCAG 1.4.12. No desktop, a escala e a posição horizontal das fotos dependem somente da largura: Solla, Lula e Wagner ficam ancorados ao rodapé real do hero até quando o conteúdo aumenta a seção, e um palco centralizado de 1920 px preserva a proximidade entre retrato e texto em monitores ultrawide. O E2E fixa a geometria das seis referências, larguras intermediárias, transições de proporção, desktops baixos, ultrawide e os overrides de acessibilidade; o caso de regressão também foi executado no Firefox. Sem migration, schema ou mudança de conteúdo. **Recently resolved (2026-08-16):** **OPS50** (parte 1): CI e scripts de agentes portados do GitHub para o Forgejo (`git.solla.dev`, tracker já migrado nas Issues #1–#3), sem nenhuma dependência do GitHub Actions. Os 10 workflows de `.github/workflows/` viraram 8 nativos em `.forgejo/workflows/` (`ci.yml` com deploy gated + requeue por `forgejo-dispatch.mjs`, `ci-pr.yml` com cascade de jobs e checks agregador, `agent-pool.yml`, `agent-pr-ready-automerge.yml`, `issue-done-on-main-merge.yml`, `plan-issue-ready-on-main-merge.yml`, `vercel-promote.yml`, `archive-cursor-agent.yml`) e `.github/workflows/*` + `.github/actions/` foram removidos (cancel-workflow-on-failure não existe no Forgejo). Novo runner: Forgejo runner v13 na workstation (capacity 4), jobs paralelos em serviços Postgres isolados por porta (int 5433, build 5434, e2e shards 5435/5436) com `DB_HOST` calculado do gateway do bridge Docker (byte order corrigida via `strtonum`). Libs de agente: `agent-github.mjs`/`agent-pool-github.mjs` substituídas por `agent-forgejo.mjs` + `agent-pool-forgejo.mjs` sobre o novo cliente zero-dependência `forgejo-api.mjs` (token `FORGEJO_API_TOKEN`/`GITHUB_TOKEN`, base URL `FORGEJO_API_URL`/`GITHUB_SERVER_URL`/default, shapes normalizados ao contrato gh-flavored; novos `isDraft`/`markPullRequestReady`); helpers `forgejo-dispatch.mjs`, `forgejo-pr-automerge.mjs` (poll de checks + ready de draft), `forgejo-issue-transition.mjs`; auto-merge do PR de planos já validado em produção (PR #4). Bug de port corrigido em `pnpm issue` (await em função sync) e validado ao vivo contra o Forgejo. Testes: `forgejoApi.unit.spec.ts` novo (10 testes), pin do matrix do `ci.yml` movido para `.forgejo/workflows/`; tsc/lint/prettier/knip/check:cycles/2283 unit verdes. Pendente (parte 2): migrar as Issues abertas do GitHub, reescrever `.agents/`, `AGENTS.md`, `docs/AGENT-OPS.md` e `docs/roadmap.md`, e passos humanos (secrets no Forgejo, `pnpm configure:branch-protection`, arquivar o repo GitHub). diff --git a/docs/changelog/2026-08-17-ops53.md b/docs/changelog/2026-08-17-ops53.md new file mode 100644 index 00000000..817a7181 --- /dev/null +++ b/docs/changelog/2026-08-17-ops53.md @@ -0,0 +1 @@ +**Recently resolved (2026-08-17):** **OPS53** — o deploy do site 1313 virou etapa do CI: mergir em `main` com a suite verde == site atualizado em `jorgesolla1313.com.br`, sem passo manual. O job `deploy` em `.forgejo/workflows/ci.yml` roda no host do runner (workstation, `runs-on: host`) e streama `scripts/deploy-homeserver.sh` para o homeserver via SSH (`ssh homeserver "bash -s -- "`); o script remoto (bash puro, homeserver sem dependências novas) faz: guard de HEAD (`git ls-remote` de `main` == SHA do job, senão skip "stale"), `flock` de serialização, workspace `~/teqo-deploy` (clone do Forgejo local), `docker login localhost:5000` (REGISTRY_USER/PASSWORD de `~/stack/.env`), build dos stages `runner`+`migrator` no homeserver (`--network stack_default` para a geração estática alcançar o `postgres:5432` do compose; secrets de `~/stack/teqo-1313.env` via BuildKit, sem camadas/logs), push no registry local, swap dos tags de imagem no compose (com backup `docker-compose.yml.pre-`), **migrate pelo serviço de maintenance `teqo-1313-migrate` antes do rollout**, `docker compose up -d`, espera do healthcheck e smoke (`/`, `/campanha/login`, `/admin`, barreira 307, WebAuthn `login-options` com body JSON, `POST /api/revalidate` com o secret real — rehearsal validado contra o site vivo). Falha pós-swap → rollback automático best-effort (restore do backup + `up -d` da imagem anterior) + job vermelho. **Divergência deliberada da intenção (fato novo):** a intenção assumia o runner no homeserver; verificado (`infra-solla/STATE.md` + ao vivo) que o runner é a `workstation-runner` na workstation e o stack de produção vive no homeserver — a abordagem A foi corrigida para "job `runs-on: host` na workstation + todo o deploy no homeserver via SSH", o que manteve **zero secrets novos no Forgejo** e zero mudança de infra no compose. Nenhum secret no repo; envs seguem chmod-600 no homeserver. Runbook (rollback manual, falhas conhecidas, decisão de segurança do host label): `docs/ops/teqo-1313-deploy.md` (novo). Guarda estrutural nova: `tests/unit/deployScript.unit.spec.ts` (bash -n + invariantes do pipeline: HEAD guard, BuildKit secrets, ordem migrate→rollout, smoke). AGENTS.md/AGENT-OPS.md atualizados. Primeiro deploy real = o merge deste próprio item (tracer bullet); infra-solla `STATE.md` anotado à parte. diff --git a/docs/ops/teqo-1313-deploy.md b/docs/ops/teqo-1313-deploy.md new file mode 100644 index 00000000..307d9ca6 --- /dev/null +++ b/docs/ops/teqo-1313-deploy.md @@ -0,0 +1,83 @@ +# Runbook: deploy do site 1313 no homeserver (OPS53) + +O deploy de produção é uma etapa do CI (`ci.yml` no Forgejo): mergir em `main` +com a suite verde publica o site em `jorgesolla1313.com.br` — sem passo manual. + +## Gatilho e fluxo + +1. `git push` para `main` (via PR merge) — ou `workflow_dispatch` no `ci.yml` + para re-deployar a HEAD de `main` manualmente. +2. Suite completa verde (static/int/build/e2e/checks). +3. Job `deploy` (runs-on `host`, na **workstation**) roda + `ssh homeserver "bash -s -- " < scripts/deploy-homeserver.sh`. +4. O script, no **homeserver**: guarda de HEAD (`main` remoto == SHA do job, + senão skip) → `flock` (serializa) → build da imagem standalone + migrator + (BuildKit, secrets do `~/stack/teqo-1313.env`, rede `stack_default`) → + push em `localhost:5000` → swap dos tags de imagem no + `~/stack/docker-compose.yml` (backup antes) → **migrations** + (`docker compose --profile maintenance run --rm teqo-1313-migrate`) → + `docker compose up -d teqo-1313` → healthcheck → smoke (`/`, + `/campanha/login`, `/admin`, barreira 307, WebAuthn login-options, + `api/revalidate` com o secret real). +5. Falha = job vermelho no commit; nada é publicado pela metade. + +## Onde roda cada coisa + +| Máquina | Papel | +| -------------------------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | +| **workstation** (16c/61GB) | runner Forgejo (`workstation-runner`); job `deploy` roda no host (chave SSH `~/.ssh/id_ed25519` → `ssh homeserver`) | +| **homeserver** (8c/16GB) | todo o stack (`~/stack/docker-compose.yml`): postgres `teqo_1313`, forgejo, registry `localhost:5000`, cloudflared, `teqo-1313` na 127.0.0.1:1313; workspace `~/teqo-deploy` (clone do Forgejo local) | + +Segredos **não** ficam no Forgejo: o script sourceia `~/stack/teqo-1313.env` e +`~/stack/.env` (chmod 600) no próprio homeserver. Nenhum secret novo em +Settings → Actions. + +## Rollback + +A imagem anterior continua local e no registry (`localhost:5000/teqo-1313:` +— o registry nunca deleta). O compose anterior fica em +`~/stack/docker-compose.yml.pre-`. + +```bash +ssh homeserver +cd ~/stack +# 1. apontar o compose de volta para o SHA anterior (o que estava rodando): +# o backup do deploy que falhou é o compose com os tags antigos +ls docker-compose.yml.pre-* # escolha o anterior ao deploy ruim +cp docker-compose.yml.pre- docker-compose.yml +# 2. a imagem antiga ainda está local; se não, puxe do registry: +docker pull localhost:5000/teqo-1313: +docker tag localhost:5000/teqo-1313: teqo-1313: +# 3. subir: +docker compose up -d teqo-1313 +``` + +**Caveat:** uma migration de schema aplicada no passo de migrate **não** é +desfeita pelo rollback (Payload é append-only). Código velho sobre schema novo +pode se comportar mal — o caminho primário minimiza essa janela (migrate só +roda após build+push ok; rollout só após migrate ok). + +## Falhas conhecidas + +| Sintoma | Causa | Tratamento | +| ---------------------------------- | ------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------------------------- | +| Job verde sem deploy ("stale run") | Push mais novo venceu; o deploy antigo saiu da fila | Nada a fazer — o run do SHA novo deploya | +| Build OOM no homeserver | Laptop 8c/16GB com o stack ativo (~12GB livres medidos) | Re-dispatch; se recorrente, item futuro: build na workstation com túnel | +| `checkout@v5` falha no job `host` | Label host do act_runner | Fallback: baixar o script direto do Forgejo (`curl -s https://git.solla.dev/fsolla/teqo/raw/branch/main/scripts/deploy-homeserver.sh`) | +| Migrate falha | Drift/erro de schema | Job vermelho; site segue no container antigo; corrigir e re-mergear | +| Smoke falha pós-up | Regressão de runtime | Rollback automático (restore + `up -d`) + job vermelho; investigar | + +## Segurança (decisão deliberada) + +- O job `deploy` usa `runs-on: host` — executa como `fsolla` na workstation. + Está **apenas** no `ci.yml` (push em `main` + dispatch), nunca no `ci-pr.yml`. + `main` só anda por PR mergeado com suite verde. Fork-PRs não disparam + workflows no Forgejo (default off — verificado). +- Segredos nunca ecoados: sem `set -x`, senhas via `--password-stdin` / + build-secrets; envs só no homeserver. + +## Referências + +- `scripts/deploy-homeserver.sh` — o script remoto (fonte da verdade do fluxo) +- `docs/plans/ops53-ci-deploy-homeserver*.md` — intenção e decisões +- infra-solla: `STATE.md`, `plano-infra-final.md` §"Arquitetura de deploy" diff --git a/docs/plans/ops53-ci-deploy-homeserver-impl.md b/docs/plans/ops53-ci-deploy-homeserver-impl.md new file mode 100644 index 00000000..00641c84 --- /dev/null +++ b/docs/plans/ops53-ci-deploy-homeserver-impl.md @@ -0,0 +1,95 @@ +# Impl: Etapa de deploy no CI para o homeserver (container `teqo-1313`) + +Status: aprovado +Atualizado em: 2026-08-17 +Issue: #8 +Intenção: docs/plans/ops53-ci-deploy-homeserver.md +Appetite restante: herdado (~1–2 dias eng) + +## Leitura da intenção + +- **Outcome:** `git push` em `main` com CI verde ⇒ site 1313 atualizado (container novo com o SHA do commit), sem passo manual; migrations aplicadas contra o `teqo_1313` **antes** do rollout (ordem migrate → rollout); rollback documentado; falha de deploy deixa o commit vermelho e nada meio-publicado. +- **O que NÃO negociar:** build nunca no laptop do dev; ordem migrate → rollout; nada de schema migration contra produção fora do passo de migrate; imagem só publicada com full suite verde; rollback executável. +- **O que reavaliar (fato novo crítico):** a intenção assume "o runner Forgejo roda no próprio homeserver (tem Docker + registry + compose)". **Não é verdade** (verificado em `infra-solla/STATE.md` e ao vivo): o runner é `workstation-runner` (act_runner v0.2.11) na **workstation** (16c/61GB, Pop!\_OS); o homeserver (8c/16GB, laptop) é que roda o stack inteiro (`~/stack/docker-compose.yml`: postgres com `teqo_1313`, forgejo, registry :5000 com htpasswd, cloudflared, `teqo-1313`). `ssh homeserver` (tailnet) funciona da workstation (chave existente, verificada). A arquitetura do `plano-infra-final.md` §"Arquitetura de deploy" (runner → build → registry :5000 → migrate + pull + up no homeserver) permanece o norte — só que o "runner" fica na workstation e a orquestração do deploy cruza tailnet por SSH. + +## Abordagem recomendada + +```mermaid +flowchart LR + P[push main / dispatch] --> W[ci.yml full suite] + W --> C[checks] + C --> D[deploy job: runs-on host na workstation] + D --> S[ssh homeserver bash -s < scripts/deploy-homeserver.sh SHA] + S --> G[HEAD guard: main remoto == SHA?] + G --> B[build no homeserver: runner + migrator stages
secrets do teqo-1313.env, --network stack_default] + B --> R[push localhost:5000 + tag teqo-1313:SHA] + R --> M[migrate: compose --profile maintenance run --rm teqo-1313-migrate] + M --> U[compose up -d teqo-1313 + healthcheck] + U --> K[smoke: / , /campanha/login, /admin, 307, webauthn, revalidate] +``` + +**Opções consideradas:** + +- **A) Deploy job `runs-on: host` na workstation; TODO o deploy executa no homeserver via SSH (`bash -s` com o script do repo), build lá mesmo com secrets lidos do `~/stack/teqo-1313.env` local.** Recomendada — porque: o build precisa (1) do DB de produção para a geração estática — `postgres:5432` só existe dentro da rede do compose (`stack_default`; o postgres não publica porta); (2) dos secrets (`DATABASE_URL`, `PAYLOAD_SECRET`, `NEXT_PUBLIC_SITE_URL`) que já vivem chmod-600 no homeserver; (3) do registry em `localhost:5000` (loopback HTTP funciona — verificado: 401 de auth, não erro de transporte). Com tudo no homeserver, **zero secrets novos no Forgejo** e zero mudança de infra no compose. `runs-on: host` usa a chave SSH existente da workstation (verificada) e mantém o job sem segredos. +- **B) Build na workstation com DB via túnel SSH + secrets no Forgejo.** Exige publicar o postgres do homeserver (mudança de infra no compose), colocar `DATABASE_URL`/`PAYLOAD_SECRET` de produção como secrets do Forgejo (pior superfície de vazamento), túnel SSH no job e BuildKit com `--network host` para alcançar o túnel. **Rejeitada** — pior em todos os eixos exceto CPU (e a build no laptop cabe: 8c, ~12GB livres medidos; o stack ocioso usa ~3GB; o manual de 21b3c00d já provou o Dockerfile lá). +- **C) Job no container (ubuntu-latest) com chave SSH nova em secret do Forgejo.** Mais isolamento formal, mas: gestão de chave/known_hosts, alcance tailnet do container do runner a verificar, e o mesmo SSH remote de qualquer forma. **Rejeitada** — o ator é o dono único da instância (só repos fsolla/amana), o runner já roda como `fsolla` no host, e a mitigação real é não expor o job a eventos não confiáveis (abaixo). + +**Decisões de engenharia (com rejeitadas):** + +1. **Job `deploy` apenas em `ci.yml`** (push em `main` + `workflow_dispatch`), `needs: [checks]`, `timeout-minutes: 60`, `runs-on: host`. Nunca em `ci-pr.yml`. Guard de segurança: verificar na implementação que o Forgejo não executa workflows de PRs de fork (default off; se estiver ligado, desligar é passo humano no runbook). Sem isso, um PR de fork malicioso poderia rodar código no host da workstation. +2. **Guard de HEAD remoto (análogo ao cooldown do Vercel):** o script aborta (exit 0 "stale") se `git ls-remote refs/heads/main` ≠ SHA do job — um push mais novo vence; o deploy antigo não sobrepõe. Serialização: `flock` em `/tmp/teqo-1313-deploy.lock` no homeserver (capacity 1 + sem concurrency no Forgejo já serializam; o flock cobre dispatch+push simultâneos e re-deploys manuais). +3. **Script único POSIX-ish `scripts/deploy-homeserver.sh`** versionado neste repo, executado remotamente (`ssh homeserver "bash -s -- " < scripts/deploy-homeserver.sh`). O homeserver não ganha dependência nenhuma (só bash + git + docker, tudo presente). Lógica: HEAD guard → flock → source dos envs (`~/stack/teqo-1313.env` + `~/stack/.env`, sem eco) → workspace `~/teqo-deploy` (clone/fetch do Forgejo local `http://localhost:3000/fsolla/teqo.git`, público) → `docker login localhost:5000` (REGISTRY_USER/PASSWORD do `.env`) → build dos dois stages (`--network stack_default`, `--secret id=database_url,env=DATABASE_URL` + `payload_secret`, `--build-arg NEXT_PUBLIC_SITE_URL`) → push → backup do compose (`docker-compose.yml.pre-$SHA`) + swap dos tags de imagem via `sed` → **migrate** (`docker compose --profile maintenance run --rm teqo-1313-migrate` — o mesmo caminho do OPS51) → `docker compose up -d teqo-1313` → aguarda healthcheck healthy → smoke. +4. **Migrate:** serviço de maintenance do compose (`teqo-1313-migrate`, imagem `teqo-1313-migrator:` após o swap) — é o caminho que o compose já prevê e que o OPS51 usou. O `payload migrate` embutido no `pnpm build` não roda no Dockerfile (ele chama `next build` direto — verificado), então a ordem migrate→rollout é garantida pelo script. +5. **Smoke pós-deploy** (no homeserver, contra `localhost:1313`): `GET /` 200; `GET /campanha/login` 200; `GET /admin` 200; `GET /campanha` → 307 (barreira sem sessão); `POST /campanha/webauthn/login-options` 200 (anônimo por design); `POST /api/revalidate` com `x-revalidate-secret` do env → `{revalidated:true}`. Login com credenciais reais fica como validação manual (precedente OPS51). +6. **Falha → rollback automático best-effort:** restore do backup do compose + `docker compose up -d teqo-1313` (imagem anterior continua local e no registry; registry nunca deleta) + exit 1 (job vermelho). Caveat documentado: migration de schema aplicada no passo de migrate **não** é desfeita pelo rollback (Payload é append-only) — o código velho sobre schema novo é risco residual aceito; o caminho primário protege (migrate só roda após build+push ok; rollout só após migrate ok). +7. **Testes:** spec unit nova (`tests/unit/deployScript.unit.spec.ts`) com `bash -n` no script + greps estruturais que pinam as propriedades de segurança (HEAD guard, `--network stack_default`, `--secret id=database_url`, serviço de maintenance, endpoints do smoke) — mesmo padrão do `ciSkipInvariants` que pina os workflows. Os invariantes existentes de `ci.yml` (`.next-e2e` etc.) permanecem. + +### Componentes / mudanças + +- **`.forgejo/workflows/ci.yml`**: job `deploy` novo (runs-on `host`, `needs: [checks]`, checkout@v5 + `ssh homeserver "bash -s -- $GITHUB_SHA" < scripts/deploy-homeserver.sh`); comentário de cabeçalho atualizado ("No deploy step" → o passo existe agora). +- **`scripts/deploy-homeserver.sh`** (novo): o script remoto descrito acima; args = SHA do commit; env de configuração com default (`TEQO_REPO_URL`, `STACK_DIR`, `WORKSPACE`, `LOCK`); nunca ecoa valores de env; `set -euo pipefail`. +- **`tests/unit/deployScript.unit.spec.ts`** (novo): `bash -n` + invariantes estruturais. +- **`docs/ops/teqo-1313-deploy.md`** (novo, dir novo): runbook — gatilho, fluxo, onde roda cada passo, rollback (restore do backup do compose + `up -d`, imagens anteriores no registry), re-deploy manual (dispatch), falhas conhecidas, quem é o humano (secrets ficam no homeserver; nada novo no Forgejo). +- **`AGENTS.md`** (parágrafo de produção/CI) e **`docs/AGENT-OPS.md`** (linha do fluxo + tabela de ambientes): deploy deixou de ser "runbook fora do repo". +- **`docs/changelog/2026-08-17-ops53.md`** + `pnpm changelog:build` (OPS44). +- **infra-solla** (fora do repo, anotação no fechamento): `STATE.md` e runbook com a correção da topologia (runner na workstation, não no homeserver) e o passo único de setup humano — nada de daemon.json (loopback HTTP OK), nada de secrets novos. +- **Migration:** sem migration (não toca schema). +- **Access / Consent:** N/A. +- **UI:** Impeccable A — sem UI. + +### Dados → forma + +N/A (sem dados novos na UI). + +## Fases verificáveis + +1. **Tracer — script + workflow + tests + docs** — escrever `deploy-homeserver.sh`, job no `ci.yml`, spec unit, runbook, atualizações de AGENTS/AGENT-OPS, changelog. Gates: `pnpm gate:fast`, `pnpm format:check`, `pnpm knip`, `pnpm check:cycles`. +2. **Rehearsal read-only** — rodar os comandos do smoke contra o site **atual** (a partir do homeserver) para validar a lógica do smoke sem deploy; `bash -n`; verificar o setting de fork-PRs no Forgejo (mitigação do `runs-on: host`). +3. **First real deploy = o merge do próprio OPS53** — o pipeline publica o SHA do merge; acompanhar o job; se falhar, rollback pelo runbook (restore do backup + `up -d`). Este é o tracer bullet do aceite ("merge == publicar"). + +## Rabbit holes / Não escopo (engenharia) + +- Blue-green / zero-downtime obrigatório — aceite é a janela do recreate; evolução futura. +- Deploy button / UI de rollback — runbook basta. +- Build na workstation com túnel para ganhar CPU — vira item futuro **se** a build no laptop incomodar (gatilho: OOM ou >30 min). +- Registry com `latest`/tags rolantes — tags por SHA + retenção bastam. +- Backup de DB no deploy — o plano infra já aponta pg_dump diário como pendência (débito registrado no fechamento, não neste item). +- Otimizar o job para "só deploy se o diff tocar código" — idempotente, custo aceito. + +## Riscos e mitigação + +- **OOM na build do laptop (8c/16GB, ~12GB livres).** O manual de 21b3c00d já buildou lá; teqo-1313 tem mem_limit 3g; mitigação: monitorar o primeiro deploy; gatilho de revisitação = build na workstation via túnel (registrado acima). +- **`runs-on: host` = código executando como fsolla na workstation.** Mitigação: job só em ci.yml (push main/dispatch — main é protegida, só entra via PR com checks verdes); verificar fork-PRs desligado no Forgejo (passo 2); instance é do dono único (repos fsolla/amana). +- **`actions/checkout@v5` em job `host`** — se o checkout falhar no host label, fallback documentado: baixar o script via raw do Forgejo (`git.solla.dev/fsolla/teqo/raw/branch/main/scripts/deploy-homeserver.sh`). +- **Rollback pós-migrate** — código velho + schema novo pode não ser 100% funcional; best-effort + vermelho no job + runbook; caminho primário minimiza a janela. +- **Vazamento de secrets nos logs** — script sem `set -x`, valores só via env do `~/stack/*.env`, build com BuildKit `--secret` (sem camadas); smoke do revalidate sem ecoar o secret. +- **Deploy antigo sobrescrevendo push novo** — HEAD guard remoto (stale → skip verde). + +## Aceite de engenharia + +- [x] Aceite de produto da intenção ainda coberto (merge == publicar; migrate → rollout; rollback documentado; falha = vermelho; sem build no laptop do dev) +- [x] Invariantes AGENTS/engineering-standards (sem segredos no repo; guards de dev/test intocados; nada de Neon) +- [x] Testes previstos: spec unit de `bash -n` + invariantes estruturais do script; invariantes existentes dos workflows intactos +- [x] Docs: runbook de deploy/rollback + AGENTS/AGENT-OPS + changelog + +Self-score decision-quality: 1) decisões caras com rejeitadas ✓ 2) cabe no appetite ✓ 3) rabbit holes nomeados ✓ 4) reusa padrões existentes (Dockerfile/migrator, serviço de maintenance, smoke do OPS51) ✓ 5) aceite da intenção preservado ✓ — 5/5. diff --git a/scripts/deploy-homeserver.sh b/scripts/deploy-homeserver.sh new file mode 100644 index 00000000..6d07eced --- /dev/null +++ b/scripts/deploy-homeserver.sh @@ -0,0 +1,169 @@ +#!/usr/bin/env bash +# +# Deploy teqo-1313 to the homeserver (OPS53). +# +# Runs ON the homeserver, piped by the CI deploy job: +# ssh homeserver "bash -s -- " < scripts/deploy-homeserver.sh +# +# Flow: HEAD guard (only the current main HEAD deploys) -> flock +# serialization -> workspace fetch at -> docker login (local registry) +# -> build of the runner + migrator stages (BuildKit secrets, compose +# network) -> push to localhost:5000 -> compose image-tag swap (with backup) +# -> migrate via the maintenance service (BEFORE the rollout) -> compose up +# -> healthcheck wait -> smoke. Any failure after the swap rolls back to the +# previous compose + image; failures before it leave the running site +# untouched and the job red. +# +# Environment defaults assume the homeserver layout: stack under +# $HOME/stack, repo cloned from the local Forgejo. Secrets are sourced from +# the chmod-600 env files and never echoed (no `set -x`, passwords only via +# --password-stdin / build secrets). + +set -euo pipefail + +SHA="${1:?usage: deploy-homeserver.sh }" +TEQO_REPO_URL="${TEQO_REPO_URL:-http://localhost:3000/fsolla/teqo.git}" +STACK_DIR="${STACK_DIR:-$HOME/stack}" +WORKSPACE_DIR="${WORKSPACE_DIR:-$HOME/teqo-deploy}" +DEPLOY_LOCK="${DEPLOY_LOCK:-/tmp/teqo-1313-deploy.lock}" + +say() { printf '[deploy] %s\n' "$*"; } + +fatal() { + trap - ERR + say "FAILED: $*" >&2 + exit 1 +} + +# --- guards ------------------------------------------------------------ + +main_head="$(git ls-remote "$TEQO_REPO_URL" refs/heads/main | awk '{print $1}')" +if [ "$main_head" != "$SHA" ]; then + say "stale run: main is $main_head, job deploys $SHA — skipping" + exit 0 +fi + +exec 9>"$DEPLOY_LOCK" +flock -w 3600 9 || fatal "another deploy holds $DEPLOY_LOCK" + +main_head="$(git ls-remote "$TEQO_REPO_URL" refs/heads/main | awk '{print $1}')" +if [ "$main_head" != "$SHA" ]; then + say "stale run after lock: main is $main_head, job deploys $SHA — skipping" + exit 0 +fi + +# --- secrets (sourced locally, never echoed) ---------------------------- + +set -a +. "$STACK_DIR/teqo-1313.env" +. "$STACK_DIR/.env" +set +a + +: "${DATABASE_URL:?teqo-1313.env is missing DATABASE_URL}" +: "${PAYLOAD_SECRET:?teqo-1313.env is missing PAYLOAD_SECRET}" +: "${NEXT_PUBLIC_SITE_URL:?teqo-1313.env is missing NEXT_PUBLIC_SITE_URL}" +: "${REVALIDATE_SECRET:?teqo-1313.env is missing REVALIDATE_SECRET}" +: "${REGISTRY_USER:?stack/.env is missing REGISTRY_USER}" +: "${REGISTRY_PASSWORD:?stack/.env is missing REGISTRY_PASSWORD}" + +# --- workspace at ------------------------------------------------- + +if [ ! -d "$WORKSPACE_DIR/.git" ]; then + say "cloning $TEQO_REPO_URL into $WORKSPACE_DIR" + git clone "$TEQO_REPO_URL" "$WORKSPACE_DIR" +else + git -C "$WORKSPACE_DIR" fetch origin main +fi +git -C "$WORKSPACE_DIR" checkout --detach "$SHA" || fatal "checkout of $SHA failed" +say "workspace at $SHA" + +# --- registry ----------------------------------------------------------- + +say "logging into local registry localhost:5000" +echo "$REGISTRY_PASSWORD" | docker login localhost:5000 --username "$REGISTRY_USER" --password-stdin >/dev/null + +# --- build -------------------------------------------------------------- + +build_image() { + local target="$1" image="$2" + say "building $target ($image)" + DOCKER_BUILDKIT=1 docker build \ + --network stack_default \ + --build-arg "NEXT_PUBLIC_SITE_URL=$NEXT_PUBLIC_SITE_URL" \ + --secret "id=database_url,env=DATABASE_URL" \ + --secret "id=payload_secret,env=PAYLOAD_SECRET" \ + --target "$target" \ + -t "$image" . +} + +cd "$WORKSPACE_DIR" +build_image runner "localhost:5000/teqo-1313:$SHA" +build_image migrator "localhost:5000/teqo-1313-migrator:$SHA" + +say "pushing images to localhost:5000" +docker push "localhost:5000/teqo-1313:$SHA" +docker push "localhost:5000/teqo-1313-migrator:$SHA" + +# The compose references bare `teqo-1313:` tags with pull_policy: never. +docker tag "localhost:5000/teqo-1313:$SHA" "teqo-1313:$SHA" +docker tag "localhost:5000/teqo-1313-migrator:$SHA" "teqo-1313-migrator:$SHA" + +# --- compose swap (backup first; failures from here roll back) ---------- + +compose="$STACK_DIR/docker-compose.yml" +backup="$compose.pre-$SHA" +cp "$compose" "$backup" +sed -i -E \ + -e "s|image: teqo-1313-migrator:[0-9a-f]+|image: teqo-1313-migrator:$SHA|g" \ + -e "s|image: teqo-1313:[0-9a-f]+|image: teqo-1313:$SHA|g" \ + -e "s|org.opencontainers.image.revision: [0-9a-f]+|org.opencontainers.image.revision: $SHA|g" \ + "$compose" +grep -q "image: teqo-1313:$SHA" "$compose" || fatal "compose swap failed (runner image)" +grep -q "image: teqo-1313-migrator:$SHA" "$compose" || fatal "compose swap failed (migrator image)" + +rollback() { + trap - ERR + say "FAILED: $* — restoring previous compose and image" + cp "$backup" "$compose" 2>/dev/null || true + ( cd "$STACK_DIR" && docker compose up -d teqo-1313 ) 2>/dev/null || true + exit 1 +} +trap 'rollback "unexpected failure"' ERR + +# --- migrate (before the rollout) --------------------------------------- + +cd "$STACK_DIR" +say "applying pending migrations (maintenance service teqo-1313-migrate)" +docker compose --profile maintenance run --rm teqo-1313-migrate || rollback "migrations failed" + +# --- rollout ------------------------------------------------------------ + +say "rolling out teqo-1313" +docker compose up -d teqo-1313 || rollback "compose up failed" + +say "waiting for the healthcheck to go healthy" +health="starting" +for _ in $(seq 1 30); do + health="$(docker inspect -f '{{.State.Health.Status}}' teqo-1313 2>/dev/null || true)" + [ "$health" = "healthy" ] && break + [ "$health" = "unhealthy" ] && break + sleep 10 +done +[ "$health" = "healthy" ] || rollback "container not healthy after 300s (status: $health)" + +# --- smoke -------------------------------------------------------------- + +base="http://localhost:1313" +smoke_fail() { rollback "smoke: $*"; } + +curl -fsS -o /dev/null "$base/" || smoke_fail "GET /" +curl -fsS -o /dev/null "$base/campanha/login" || smoke_fail "GET /campanha/login" +curl -fsS -o /dev/null "$base/admin" || smoke_fail "GET /admin" +code="$(curl -s -o /dev/null -w '%{http_code}' "$base/campanha" || true)" +[ "$code" = "307" ] || smoke_fail "GET /campanha expected 307, got $code" +curl -fsS -o /dev/null -X POST "$base/campanha/webauthn/login-options" \ + -H 'Content-Type: application/json' -d '{}' || smoke_fail "POST webauthn login-options" +body="$(curl -fsS -X POST "$base/api/revalidate" -H "x-revalidate-secret: $REVALIDATE_SECRET" || true)" +echo "$body" | grep -q '"revalidated":true' || smoke_fail "POST /api/revalidate did not confirm" + +say "deploy of $SHA complete: $(docker inspect -f '{{.Image}}' teqo-1313)" diff --git a/tests/unit/deployScript.unit.spec.ts b/tests/unit/deployScript.unit.spec.ts new file mode 100644 index 00000000..97810621 --- /dev/null +++ b/tests/unit/deployScript.unit.spec.ts @@ -0,0 +1,65 @@ +// @vitest-environment node + +import { execFileSync } from 'node:child_process' +import { readFileSync } from 'node:fs' +import { join } from 'node:path' +import { fileURLToPath } from 'node:url' + +import { describe, expect, it } from 'vitest' + +const repoRoot = join(fileURLToPath(new URL('.', import.meta.url)), '..', '..') +const scriptPath = join(repoRoot, 'scripts', 'deploy-homeserver.sh') +const script = readFileSync(scriptPath, 'utf8') + +describe('scripts/deploy-homeserver.sh (OPS53 deploy pipeline)', () => { + it('is valid bash', () => { + expect(() => execFileSync('bash', ['-n', scriptPath], { stdio: 'pipe' })).not.toThrow() + }) + + it('guards against stale runs: only the current main HEAD deploys', () => { + expect(script).toContain('git ls-remote') + expect(script).toContain('refs/heads/main') + expect(script).toContain('stale run') + }) + + it('builds with BuildKit secrets — prod credentials never enter image layers', () => { + expect(script).toContain('--secret') + expect(script).toContain('id=database_url,env=DATABASE_URL') + expect(script).toContain('id=payload_secret,env=PAYLOAD_SECRET') + }) + + it('builds inside the compose network so the static generation reaches the prod DB', () => { + expect(script).toContain('--network stack_default') + }) + + it('applies migrations through the maintenance service before the rollout', () => { + // The rollback helper also contains a `compose up -d` (before the migrate + // step); the REAL rollout is the last occurrence. + const migrateIndex = script.indexOf('teqo-1313-migrate') + const upIndex = script.lastIndexOf('docker compose up -d teqo-1313') + expect(migrateIndex).toBeGreaterThan(-1) + expect(upIndex).toBeGreaterThan(-1) + expect(migrateIndex).toBeLessThan(upIndex) + }) + + it('smokes the deployed surface with the prod revalidate secret', () => { + for (const fragment of [ + '/campanha/login', + '/admin', + '/campanha/webauthn/login-options', + '/api/revalidate', + 'x-revalidate-secret', + ]) { + expect(script, fragment).toContain(fragment) + } + }) + + it('never echoes secret values (no set -x, passwords only via stdin/secrets)', () => { + expect(script).not.toMatch(/^set -x\b/m) + expect(script).not.toContain('echo "$DATABASE_URL"') + expect(script).not.toContain('echo "$PAYLOAD_SECRET"') + // Registry password goes to docker via stdin — never stdout, never argv. + expect(script).toContain('echo "$REGISTRY_PASSWORD" | docker login') + expect(script).not.toContain('--password "$REGISTRY_PASSWORD"') + }) +}) From 02c922eac811c35b550852898ac9397c22f1534b Mon Sep 17 00:00:00 2001 From: Francisco Solla Date: Mon, 17 Aug 2026 21:34:37 -0300 Subject: [PATCH 6/8] =?UTF-8?q?docs(ops=20OPS53):=20falha=20conhecida=20do?= =?UTF-8?q?=20runner=20=E2=80=94=20PATH=20dos=20containers=20quebra=20com?= =?UTF-8?q?=20runner.envs.PATH=20s=C3=B3=20de=20host?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- docs/ops/teqo-1313-deploy.md | 15 ++++++++------- 1 file changed, 8 insertions(+), 7 deletions(-) diff --git a/docs/ops/teqo-1313-deploy.md b/docs/ops/teqo-1313-deploy.md index 307d9ca6..f6509030 100644 --- a/docs/ops/teqo-1313-deploy.md +++ b/docs/ops/teqo-1313-deploy.md @@ -59,13 +59,14 @@ roda após build+push ok; rollout só após migrate ok). ## Falhas conhecidas -| Sintoma | Causa | Tratamento | -| ---------------------------------- | ------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------------------------- | -| Job verde sem deploy ("stale run") | Push mais novo venceu; o deploy antigo saiu da fila | Nada a fazer — o run do SHA novo deploya | -| Build OOM no homeserver | Laptop 8c/16GB com o stack ativo (~12GB livres medidos) | Re-dispatch; se recorrente, item futuro: build na workstation com túnel | -| `checkout@v5` falha no job `host` | Label host do act_runner | Fallback: baixar o script direto do Forgejo (`curl -s https://git.solla.dev/fsolla/teqo/raw/branch/main/scripts/deploy-homeserver.sh`) | -| Migrate falha | Drift/erro de schema | Job vermelho; site segue no container antigo; corrigir e re-mergear | -| Smoke falha pós-up | Regressão de runtime | Rollback automático (restore + `up -d`) + job vermelho; investigar | +| Sintoma | Causa | Tratamento | +| ----------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------- | ----------------------------------------------------------------------------------------------------------------------------------------------------- | +| Job verde sem deploy ("stale run") | Push mais novo venceu; o deploy antigo saiu da fila | Nada a fazer — o run do SHA novo deploya | +| Todo job docker quebra com `exec: "node": executable file not found in $PATH` | `runner.envs.PATH` do `~/.forgejo-runner/config.yaml` (workstation) com paths só de host (nvm/bun) — o container perde o node do toolcache (`/opt/acttoolcache`) | Corrigir o PATH no config (toolcache primeiro — ver comentário no próprio arquivo) + `systemctl --user restart forgejo-runner` (incidente 2026-08-17) | +| Build OOM no homeserver | Laptop 8c/16GB com o stack ativo (~12GB livres medidos) | Re-dispatch; se recorrente, item futuro: build na workstation com túnel | +| `checkout@v5` falha no job `host` | Label host do act_runner | Fallback: baixar o script direto do Forgejo (`curl -s https://git.solla.dev/fsolla/teqo/raw/branch/main/scripts/deploy-homeserver.sh`) | +| Migrate falha | Drift/erro de schema | Job vermelho; site segue no container antigo; corrigir e re-mergear | +| Smoke falha pós-up | Regressão de runtime | Rollback automático (restore + `up -d`) + job vermelho; investigar | ## Segurança (decisão deliberada) From 8854fcb85b0f99b63bf82b019eee966c07920a3b Mon Sep 17 00:00:00 2001 From: Francisco Solla Date: Mon, 17 Aug 2026 22:00:38 -0300 Subject: [PATCH 7/8] =?UTF-8?q?style(plans=20S1-S4):=20prettier=20nos=20pl?= =?UTF-8?q?anos=20e=20no=20rascunho=20UI=20(format=20p=C3=B3s-commit=20do?= =?UTF-8?q?=20lote)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- docs/plans/secao-conteudos-home-artigos.md | 2 +- docs/plans/secao-conteudos-home-instagram.md | 2 +- docs/plans/secao-conteudos-home-ui-draft.html | 154 +++++++++++++----- docs/plans/secao-conteudos-home-youtube.md | 2 +- 4 files changed, 115 insertions(+), 45 deletions(-) diff --git a/docs/plans/secao-conteudos-home-artigos.md b/docs/plans/secao-conteudos-home-artigos.md index cb97a3c2..d026757f 100644 --- a/docs/plans/secao-conteudos-home-artigos.md +++ b/docs/plans/secao-conteudos-home-artigos.md @@ -49,7 +49,7 @@ Fonte iterável: [`secao-conteudos-home-ui-draft.html`](secao-conteudos-home-ui- - **Vou apresentar dados?** Sim, superfície neste item — mas são **conteúdos** (artigos), não métricas. - **Decisões desbloqueadas:** o visitante decide qual artigo ler (clique); nenhum número novo de campanha é inventado aqui. -- **Forma:** *adiada ao plano de implementação* — restrição de produto: meta = data/categoria do post (já exibidas no site), sem contadores inventados. +- **Forma:** _adiada ao plano de implementação_ — restrição de produto: meta = data/categoria do post (já exibidas no site), sem contadores inventados. ## Direção no codebase (hipótese) diff --git a/docs/plans/secao-conteudos-home-instagram.md b/docs/plans/secao-conteudos-home-instagram.md index 15b5c2e9..5becbc1a 100644 --- a/docs/plans/secao-conteudos-home-instagram.md +++ b/docs/plans/secao-conteudos-home-instagram.md @@ -50,7 +50,7 @@ Fonte iterável: [`secao-conteudos-home-ui-draft.html`](secao-conteudos-home-ui- - **Vou apresentar dados?** Sim, superfície neste item — metadados do post (imagem, legenda, data) vindos da plataforma. - **Decisões desbloqueadas:** o visitante decide qual post abrir; nada de métricas inventadas. -- **Forma:** *adiada ao plano de implementação* — restrição de produto: legenda/data como a plataforma mostra; sem contadores derivados. +- **Forma:** _adiada ao plano de implementação_ — restrição de produto: legenda/data como a plataforma mostra; sem contadores derivados. ## Direção no codebase (hipótese) diff --git a/docs/plans/secao-conteudos-home-ui-draft.html b/docs/plans/secao-conteudos-home-ui-draft.html index 97dd6868..7b0566b2 100644 --- a/docs/plans/secao-conteudos-home-ui-draft.html +++ b/docs/plans/secao-conteudos-home-ui-draft.html @@ -9,9 +9,9 @@

- Visitante da home pública de campanha (jorgesolla1313). Seção 3 da página: logo após a - prova social, imediatamente antes de "Por que essa eleição importa". Card de conteúdo - generalizado (Artigo / YouTube / Instagram) — clique leva ao artigo ou à plataforma. + Visitante da home pública de campanha (jorgesolla1313). Seção 3 da página: logo após a prova + social, imediatamente antes de "Por que essa eleição importa". Card de conteúdo generalizado + (Artigo / YouTube / Instagram) — clique leva ao artigo ou à plataforma.

@@ -30,16 +30,16 @@

Acompanhe de perto

-

- A caminhada, em tempo real -

+

A caminhada, em tempo real

Bastidores, caravanas e as lutas do mandato: conteúdo atualizado, direto das redes.

@@ -47,17 +47,26 @@
-
+
-
+

- Card de conteúdo com botão discreto de compartilhamento (canto do card, sem competir com - o CTA primário): abre WhatsApp com mensagem pré-configurada + opção de copiar link. + Card de conteúdo com botão discreto de compartilhamento (canto do card, sem competir com o + CTA primário): abre WhatsApp com mensagem pré-configurada + opção de copiar link.

-
+
- + YouTube - + thumb 16:9
@@ -223,12 +281,18 @@ ↗
-
+
- + Artigo - + capa 16:9
@@ -244,15 +308,21 @@ ↗
-
+

Menu aberto (v1): "Compartilhar no WhatsApp" (mensagem pré-configurada com título + link) e "Copiar link".

-
+
WhatsApp ↗
-
+
Copiar link
@@ -263,8 +333,8 @@

Vazio / fail-closed — nenhuma fonte com conteúdo disponível (artigos invisíveis ou APIs - sem snapshot). Recomendação: a seção inteira é ocultada; a página mantém o fluxo - Prova → Por que essa eleição importa, sem zona morta. + sem snapshot). Recomendação: a seção inteira é ocultada; a página mantém o fluxo Prova → + Por que essa eleição importa, sem zona morta.

3.333 proposições diff --git a/docs/plans/secao-conteudos-home-youtube.md b/docs/plans/secao-conteudos-home-youtube.md index b17634bb..00c04a68 100644 --- a/docs/plans/secao-conteudos-home-youtube.md +++ b/docs/plans/secao-conteudos-home-youtube.md @@ -50,7 +50,7 @@ Fonte iterável: [`secao-conteudos-home-ui-draft.html`](secao-conteudos-home-ui- - **Vou apresentar dados?** Sim, superfície neste item — metadados do vídeo (título, thumbnail, data, visualizações) vindos da plataforma. - **Decisões desbloqueadas:** o visitante decide qual vídeo assistir (clique); visualizações são fato da plataforma (não inventar). -- **Forma:** *adiada ao plano de implementação* — restrição de produto: mostrar views como a plataforma mostra (ex. "12,4 mil"), nunca métrica derivada da campanha. +- **Forma:** _adiada ao plano de implementação_ — restrição de produto: mostrar views como a plataforma mostra (ex. "12,4 mil"), nunca métrica derivada da campanha. ## Direção no codebase (hipótese) From 0aec0d50407c903ea9fee5adba804f3380e30e8e Mon Sep 17 00:00:00 2001 From: Francisco Solla Date: Mon, 17 Aug 2026 22:19:55 -0300 Subject: [PATCH 8/8] =?UTF-8?q?feat(PUB5):=20slogan=20'Mais=20sa=C3=BAde?= =?UTF-8?q?=20mais=20futuro'=20no=20hero=20e=20rodap=C3=A9?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- docs/CHANGELOG-AGENTS.md | 2 + docs/changelog/2026-08-17-pub5.md | 1 + .../slogan-mais-saude-mais-futuro-impl.md | 60 +++++++++++++++++++ src/components/CampaignFooter.tsx | 2 +- src/components/CampaignHero.tsx | 6 +- tests/e2e/frontend.e2e.spec.ts | 2 +- tests/unit/campaignHero.unit.spec.tsx | 4 +- tests/unit/campaignHome.unit.spec.tsx | 4 +- 8 files changed, 70 insertions(+), 11 deletions(-) create mode 100644 docs/changelog/2026-08-17-pub5.md create mode 100644 docs/plans/slogan-mais-saude-mais-futuro-impl.md diff --git a/docs/CHANGELOG-AGENTS.md b/docs/CHANGELOG-AGENTS.md index f8ab41f7..176fdf45 100644 --- a/docs/CHANGELOG-AGENTS.md +++ b/docs/CHANGELOG-AGENTS.md @@ -4,6 +4,8 @@ Conteúdo movido do `AGENTS.md` em 2026-07-30 (fatiamento do paradigma de agente --- +**PUB5** — slogan da campanha "Mais saúde mais futuro" no hero e no rodapé da home (jorgesolla1313.com.br), no lugar de "Um mandato do tamanho da Bahia" (discurso do mandato vigente; o novo é da campanha 2026 — saúde é o tema-âncora do candidato). Troca de copy cirúrgica, sem redesenho nem migration: h1 do hero em duas linhas uppercase "MAIS SAÚDE / MAIS FUTURO" com `aria-label` acompanhando ("MAIS SAÚDE MAIS FUTURO"), segunda linha já em `font-black` (anatomia existente), e o rodapé em sentence case com ponto ("Mais saúde mais futuro."). Testes que pinavam a string antiga atualizados (`campaignHero.unit`, `campaignHome.unit`, `frontend.e2e`). Fora de escopo decidido no gate: cabeçalho de artigos ("O mandato do tamanho da Bahia") e docs históricos. Verificação: unit 2269 + int 791 verdes, e2e frontend 8/8 em prod mode (`E2E_PROD=1`, `.next-e2e`), lint/format/typecheck/cycles/knip/build verdes; render conferido por screenshot + DOM (hero duas linhas, rodapé com ponto). `/simplify` 3 reviewers: sem P0/P1; P2 corrigidos no impl plan (redação + line refs); débitos descartados por serem convenções pré-existentes ou decisões do gate. + **Recently resolved (2026-08-17):** **OPS51** — o banco de produção saiu do Neon para o Postgres do homeserver (`teqo_1313`, container `teqo-1313`), sem mudança de config: o `~/stack/teqo-1313.env` já apontava para o banco preparado (criado 16/08 com role própria + cadeia completa de 56 migrations + zero conteúdo — verificado), então restaurar = a produção "apareceu" no container. **Divergência deliberada da intenção (questão A/B validada como B):** rejeitado criar `teqo_prod` novo — o argumento "o banco do 1313 tem vida própria" não se sustenta (o site 1313 É a produção deste repo) e o OPS53 já trata `teqo_1313` como produção. Execução 100% no homeserver (PII nunca tocou a workstation): URL do Neon puxada do Vercel (`vercel env pull`, projeto `jorgesolla`, `DATABASE_URL_UNPOOLED` → `NEON_DATABASE_URL` em `~/stack/.env` chmod 600), `pg_dump -Fc` (Neon PG 17.10) → `/srv/hdd/backups/teqo-neon-pre-migracao/teqo-neon-full-20260817-204800.dump` (5,8 MB, sha256 `f12196f2…`), `pg_restore --no-owner --no-privileges` como a role `teqo_1313` (drop schema + grant, padrão do `db-pull`), verificado: contagens por tabela idênticas ao Neon (1919 contatos, 39 posts, 1487 assinaturas, 1484 subscrições, 35 campaign_users, 392 lideranças, 2 pledges, 435 municípios, 6 atividades; supporter segue 0 — blocker LGPD ainda de pé), sequences no topo (`last_value == max(id)`), objetos com dono `teqo_1313`, `payload migrate` no-op (56 = 56, serviço de maintenance `teqo-1313-migrate`), 3 credenciais WebAuthn + 34 sessions + 5 chaves Consent restauradas (RP ID não mudou — biometria segue valendo). Smoke sem deploy: `/`, artigo com conteúdo restaurado, `/campanha/login`, `/admin`, `POST /api/revalidate` (`posts` + `global_privacy-policy`), WebAuthn `login-options`, barreira 307 sem sessão — verdes; smoke de browser (login, biometria, convites) validado manualmente. **Rollback documentado:** Neon nunca foi escrito (só lido); voltar = re-apontar `DATABASE_URL` do `teqo-1313.env` para o Neon + `compose up -d`. **Débito registrado (→ OPS52):** as 40 rows de `media` têm URLs relativas (`/api/media/file/…`) sem arquivos em lugar nenhum — capas dão 500 no homeserver e **404 no próprio Vercel/produção atual** (estado pré-existente; migração manteve paridade). Repo: plano da intenção concluído, `AGENTS.md` e help de `db:pull`/`check-push-chain` sem a referência ao Neon; infra-solla `STATE.md` atualizado à parte. **Recently resolved (2026-08-17):** **OPS53** — o deploy do site 1313 virou etapa do CI: mergir em `main` com a suite verde == site atualizado em `jorgesolla1313.com.br`, sem passo manual. O job `deploy` em `.forgejo/workflows/ci.yml` roda no host do runner (workstation, `runs-on: host`) e streama `scripts/deploy-homeserver.sh` para o homeserver via SSH (`ssh homeserver "bash -s -- "`); o script remoto (bash puro, homeserver sem dependências novas) faz: guard de HEAD (`git ls-remote` de `main` == SHA do job, senão skip "stale"), `flock` de serialização, workspace `~/teqo-deploy` (clone do Forgejo local), `docker login localhost:5000` (REGISTRY_USER/PASSWORD de `~/stack/.env`), build dos stages `runner`+`migrator` no homeserver (`--network stack_default` para a geração estática alcançar o `postgres:5432` do compose; secrets de `~/stack/teqo-1313.env` via BuildKit, sem camadas/logs), push no registry local, swap dos tags de imagem no compose (com backup `docker-compose.yml.pre-`), **migrate pelo serviço de maintenance `teqo-1313-migrate` antes do rollout**, `docker compose up -d`, espera do healthcheck e smoke (`/`, `/campanha/login`, `/admin`, barreira 307, WebAuthn `login-options` com body JSON, `POST /api/revalidate` com o secret real — rehearsal validado contra o site vivo). Falha pós-swap → rollback automático best-effort (restore do backup + `up -d` da imagem anterior) + job vermelho. **Divergência deliberada da intenção (fato novo):** a intenção assumia o runner no homeserver; verificado (`infra-solla/STATE.md` + ao vivo) que o runner é a `workstation-runner` na workstation e o stack de produção vive no homeserver — a abordagem A foi corrigida para "job `runs-on: host` na workstation + todo o deploy no homeserver via SSH", o que manteve **zero secrets novos no Forgejo** e zero mudança de infra no compose. Nenhum secret no repo; envs seguem chmod-600 no homeserver. Runbook (rollback manual, falhas conhecidas, decisão de segurança do host label): `docs/ops/teqo-1313-deploy.md` (novo). Guarda estrutural nova: `tests/unit/deployScript.unit.spec.ts` (bash -n + invariantes do pipeline: HEAD guard, BuildKit secrets, ordem migrate→rollout, smoke). AGENTS.md/AGENT-OPS.md atualizados. Primeiro deploy real = o merge deste próprio item (tracer bullet); infra-solla `STATE.md` anotado à parte. diff --git a/docs/changelog/2026-08-17-pub5.md b/docs/changelog/2026-08-17-pub5.md new file mode 100644 index 00000000..c069df72 --- /dev/null +++ b/docs/changelog/2026-08-17-pub5.md @@ -0,0 +1 @@ +**PUB5** — slogan da campanha "Mais saúde mais futuro" no hero e no rodapé da home (jorgesolla1313.com.br), no lugar de "Um mandato do tamanho da Bahia" (discurso do mandato vigente; o novo é da campanha 2026 — saúde é o tema-âncora do candidato). Troca de copy cirúrgica, sem redesenho nem migration: h1 do hero em duas linhas uppercase "MAIS SAÚDE / MAIS FUTURO" com `aria-label` acompanhando ("MAIS SAÚDE MAIS FUTURO"), segunda linha já em `font-black` (anatomia existente), e o rodapé em sentence case com ponto ("Mais saúde mais futuro."). Testes que pinavam a string antiga atualizados (`campaignHero.unit`, `campaignHome.unit`, `frontend.e2e`). Fora de escopo decidido no gate: cabeçalho de artigos ("O mandato do tamanho da Bahia") e docs históricos. Verificação: unit 2269 + int 791 verdes, e2e frontend 8/8 em prod mode (`E2E_PROD=1`, `.next-e2e`), lint/format/typecheck/cycles/knip/build verdes; render conferido por screenshot + DOM (hero duas linhas, rodapé com ponto). `/simplify` 3 reviewers: sem P0/P1; P2 corrigidos no impl plan (redação + line refs); débitos descartados por serem convenções pré-existentes ou decisões do gate. diff --git a/docs/plans/slogan-mais-saude-mais-futuro-impl.md b/docs/plans/slogan-mais-saude-mais-futuro-impl.md new file mode 100644 index 00000000..341b119e --- /dev/null +++ b/docs/plans/slogan-mais-saude-mais-futuro-impl.md @@ -0,0 +1,60 @@ +# Impl: Slogan da campanha "Mais saúde mais futuro" no hero e no rodapé + +Status: aprovado +Atualizado em: 2026-08-17 +Issue: #15 +Intenção: docs/plans/slogan-mais-saude-mais-futuro.md +Appetite restante: herdado (~0,25–0,5 dia; diff real é troca de 4 strings em 2 componentes + 3 testes) + +## Leitura da intenção + +- **Outcome:** o hero e o rodapé da home de campanha exibem o slogan novo "Mais saúde mais futuro" no lugar de "Um mandato do tamanho da Bahia", com o aria-label do h1 acompanhando e os testes que pinam a string antiga atualizados. +- **O que NÃO negociar:** copy fixa no componente (nada de campo editável no admin); anatomia do hero/rodapé intacta (sem redesenho — a referência do Penpot vale só para o texto); cabeçalho da página de artigos NÃO muda (decidido no gate). +- **O que reavaliar:** a hipótese de "segunda linha em peso maior" já é a anatomia atual do componente (`font-medium` → `font-black`) — não há mudança de classes, só de texto. + +## Abordagem recomendada + +```mermaid +flowchart LR + A[CampaignHero.tsx] -->|swap de 2 spans + aria-label| H1["MAIS SAÚDE / MAIS FUTURO"] + B[CampaignFooter.tsx] -->|swap de 1 linha| P["Mais saúde mais futuro."] + T[tests: hero + home + e2e] -->|atualiza name pinado| N["MAIS SAÚDE MAIS FUTURO"] +``` + +**Opções consideradas:** A | B | C +**Recomendação:** A — troca inline das strings nos dois componentes — porque é o menor diff possível, mantém a copy no componente (convenção atual) e toca exatamente o aceite. A estrutura de duas linhas já existe; a primeira linha segue `font-medium` e a segunda `font-black` (peso maior), como hoje. +**Rejeitadas:** + +- B — extrair o slogan para uma constante módulo compartilhado (`src/lib/campaignSlogan.ts`): duas ocorrências não justificam abstração; criaria um módulo novo para esconder duas strings. +- C — tornar o slogan editável via global/collection no admin: anti-goal explícito da intenção ("fora do pedido — copy fixa no componente, como hoje"). + +### Componentes / mudanças + +- **`CampaignHero`** (`src/components/CampaignHero.tsx:88-93`): `aria-label` → `"MAIS SAÚDE MAIS FUTURO"`; primeiro span `Mais saúde`, segundo span `Mais futuro` (JSX em title case; o `uppercase` já vem do CSS do h1, como hoje). +- **`CampaignFooter`** (`src/components/CampaignFooter.tsx:22`): linha do bloco de identificação → `Mais saúde mais futuro.` (sentence case com ponto — padrão tipográfico do rodapé, decidido no gate). +- **Migration:** sem migration (troca de strings em componentes). +- **Access / Consent:** N/A. +- **UI:** Impeccable A (encaixe de copy em superfícies existentes); anatomia, pesos e layout intactos; slogan novo é mais curto, sem risco de quebra de linha. + +## Fases verificáveis + +1. **Swap de strings** — `CampaignHero.tsx` + `CampaignFooter.tsx`. +2. **Testes** — atualizar os três nomes pinados: `tests/unit/campaignHero.unit.spec.tsx:21`, `tests/unit/campaignHome.unit.spec.tsx:24`, `tests/e2e/frontend.e2e.spec.ts:37` → `'MAIS SAÚDE MAIS FUTURO'` (mesmo formato do name atual: caixa alta, sem ponto). +3. **Gates** — `pnpm test` (unit+int), e2e do frontend, `tsc --noEmit`, `pnpm lint`, `pnpm format:check`, knip, `pnpm check:cycles`, `pnpm build`. + +## Rabbit holes / Não escopo (engenharia) + +- Caçar a frase antiga em `docs/campanha/*`, `.opencode/` ou skills — registro histórico, não superfície pública (corte da própria intenção). +- `src/app/(frontend)/artigos/page.tsx` ("O mandato do tamanho da Bahia") — fora de escopo decidido no gate. +- Ajustar pesos/classes do h1 para "ficar mais parecido com o Penpot" — o hero real já tem a segunda linha em `font-black`; mudar mais é redesenho. + +## Riscos e mitigação + +- **Name exato nos testes:** `getByRole` com `name` é match exato do accessible name (vem do `aria-label`) — o valor novo tem que bater sem variação de caixa/ponto. Mitigação: usar exatamente `'MAIS SAÚDE MAIS FUTURO'`, espelhando o padrão atual. +- **Rodapé sem teste pinado:** nenhum teste cobre a linha do rodapé — troca não quebra suíte, e o e2e da home segue cobrindo o hero. Sem teste novo (aceite não pede). + +## Aceite de engenharia + +- [x] Aceite de produto da intenção ainda coberto (hero duas linhas uppercase + peso maior na segunda; rodapé sentence case com ponto; frase antiga fora das superfícies públicas; testes atualizados) +- [x] Invariantes AGENTS/engineering-standards (sem migration, sem novo módulo, copy no dono) +- [x] Testes de domínio previstos onde strings pinadas mudam (3 arquivos) diff --git a/src/components/CampaignFooter.tsx b/src/components/CampaignFooter.tsx index 0e69d765..f895b2bc 100644 --- a/src/components/CampaignFooter.tsx +++ b/src/components/CampaignFooter.tsx @@ -19,7 +19,7 @@ export const CampaignFooter = () => (

Deputado Federal · PT · Bahia
- Um mandato do tamanho da Bahia. + Mais saúde mais futuro.

diff --git a/src/components/CampaignHero.tsx b/src/components/CampaignHero.tsx index 35636dc8..09734909 100644 --- a/src/components/CampaignHero.tsx +++ b/src/components/CampaignHero.tsx @@ -85,11 +85,11 @@ export const CampaignHero = () => (

- Um mandato do - tamanho da Bahia + Mais saúde + Mais futuro

diff --git a/tests/e2e/frontend.e2e.spec.ts b/tests/e2e/frontend.e2e.spec.ts index ec479aa1..d0455797 100644 --- a/tests/e2e/frontend.e2e.spec.ts +++ b/tests/e2e/frontend.e2e.spec.ts @@ -34,7 +34,7 @@ test.describe('Frontend', () => { const heading = page.getByRole('heading', { level: 1, - name: 'UM MANDATO DO TAMANHO DA BAHIA', + name: 'MAIS SAÚDE MAIS FUTURO', }) await expect(heading).toBeVisible() diff --git a/tests/unit/campaignHero.unit.spec.tsx b/tests/unit/campaignHero.unit.spec.tsx index e0f5d728..0091a69c 100644 --- a/tests/unit/campaignHero.unit.spec.tsx +++ b/tests/unit/campaignHero.unit.spec.tsx @@ -18,9 +18,7 @@ describe('CampaignHero', () => { it('apresenta a candidatura e mantém um único CTA primário', () => { render() - expect( - screen.getByRole('heading', { level: 1, name: 'UM MANDATO DO TAMANHO DA BAHIA' }), - ).toBeTruthy() + expect(screen.getByRole('heading', { level: 1, name: 'MAIS SAÚDE MAIS FUTURO' })).toBeTruthy() const supportLink = screen.getByRole('link', { name: /Quero apoiar/i }) expect(supportLink.getAttribute('href')).toBe('https://apoiar.me/jorgesolla') diff --git a/tests/unit/campaignHome.unit.spec.tsx b/tests/unit/campaignHome.unit.spec.tsx index 8b8e909d..765b1c40 100644 --- a/tests/unit/campaignHome.unit.spec.tsx +++ b/tests/unit/campaignHome.unit.spec.tsx @@ -21,9 +21,7 @@ describe('Campaign home', () => { it('monta as quatro seções previstas e o rodapé eleitoral', async () => { render(await HomePage()) - expect( - screen.getByRole('heading', { level: 1, name: 'UM MANDATO DO TAMANHO DA BAHIA' }), - ).toBeTruthy() + expect(screen.getByRole('heading', { level: 1, name: 'MAIS SAÚDE MAIS FUTURO' })).toBeTruthy() expect(screen.getByText('3.333')).toBeTruthy() expect(screen.getByText('1.031')).toBeTruthy() expect(screen.getByText('3º')).toBeTruthy()

+

+ Visitante da home da campanha — troca do slogan no hero e no rodapé: "Um mandato do tamanho + da Bahia" → "Mais saúde mais futuro". Referência visual: hero do Penpot (duas linhas, + uppercase). Cenas abaixo: hero desktop, hero mobile, rodapé desktop. +

+ +
+ +
+ +
+
+

+ Mais saúde + Mais futuro +

+

+ Médico sanitarista. Criou o SAMU 192 e o Brasil Sorridente. Já comandou a saúde em + Vitória da Conquista, na Bahia e no Brasil — e leva o mandato aos 417 municípios, da + saúde à educação. +

+ +
+

DIAP entre os 40 melhores da Câmara

+

Mais votado do PT-BA em 2022

+
+
+
+ +
+ +
+