S1 — Seção de conteúdos na home de campanha — Artigos #29

Merged
fsolla merged 4 commits from S1-secao-de-conteudos-na-home-de-campanha-artigos into main 2026-08-18 05:07:27 +00:00

4 commits

Author SHA1 Message Date
Francisco Solla
b46cfed889 fix(S1): revert revalidate=300 — trava o bust por tag no Next 15.4 prod
All checks were successful
CI (PR) / e2e (2) (pull_request) Successful in 4m9s
CI (PR) / e2e (1) (pull_request) Successful in 4m32s
CI (PR) / checks (pull_request) Successful in 2s
Promote plan-issue Related on main merge / plan-issue-ready (pull_request) Has been skipped
Main merge flips claimed issues to done + in-prod / issue-done (pull_request) Successful in 13s
Agent PR Ready + auto-merge / ready-automerge (pull_request) Has been skipped
Agent pool supervisor / tick (pull_request) Successful in 32s
CI (PR) / docs-guards (pull_request) Successful in 7s
CI (PR) / plans-only-closes (pull_request) Successful in 7s
CI (PR) / scope (pull_request) Successful in 32s
CI (PR) / lint (pull_request) Successful in 40s
CI (PR) / format (pull_request) Successful in 49s
CI (PR) / knip (pull_request) Successful in 32s
CI (PR) / typecheck (pull_request) Successful in 31s
CI (PR) / unit (pull_request) Successful in 45s
CI (PR) / cycles (pull_request) Successful in 34s
CI (PR) / int (pull_request) Successful in 2m5s
CI (PR) / build (pull_request) Successful in 2m38s
Medido em probe: com export const revalidate, revalidateTag('posts') para
de regenerar a home (a rota /artigos, sem o export, convergia; a home
ficava stale para sempre). Remove o export e resolve o congelamento da
label relativa por threshold: relativa < 48h, data absoluta além (nunca
mente congelada). Spec: polling positivo do HTML da home pós-revalidate
(ISR serve stale uma vez sob carga) e about:blank antes do cleanup
(prefetch prod de links apagados = 404 no guard).
2026-08-18 01:52:16 -03:00
Francisco Solla
f1c2daf4a2 fix(e2e S1): poll positivo do HTML da home até convergir pós-revalidate
O warm-up único ainda deixava uma janela de stale-serve sob carga (a
regeneração ISR não completava entre o GET e o goto, e o DOM carregado
nunca refrescava — flake no cleanup sob a suíte paralela). Polling do
estado esperado no HTML do servidor (12x1s) antes do goto torna o
empty-state, o full-state e o cleanup determinísticos.
2026-08-18 01:11:37 -03:00
Francisco Solla
0949ded185 fix(e2e S1): warm-up na home após revalidateTag (ISR pode servir stale uma vez)
Sob a suíte completa em paralelo, a regeneração pós-revalidate às vezes
servia a página velha uma vez; o DOM carregado nunca refrescava e o assert
de cleanup falhava (1 flaky no gate). Requisição GET de warm-up entre o
revalidate e o goto torna o estado determinístico.
2026-08-18 00:46:17 -03:00
Francisco Solla
bd8797f0d6 feat(S1): seção de conteúdos na home de campanha (artigos)
Bento 1+4 no desktop e carrossel 1/tela no mobile (~390px) lendo o post
collection com isPostVisible fail-closed; seção some inteira sem posts
visíveis. Zero migration/Consent; home vira ISR com tag posts +
revalidate=300 (label relativa não congela).
2026-08-18 00:31:12 -03:00