Francisco Solla
4a3c3b709c
feat(S7): cards 'Acompanhe de perto' sem raio, borda, sombra ou chip; capa de borda a borda ( Closes #90 )
2026-08-19 19:39:09 +00:00
Francisco Solla
3b33a59a9d
plans(OPS71/OPS72): CI volta ao GitHub Actions com tracker no Forgejo + e2e local afetado
2026-08-19 19:27:21 +00:00
Francisco Solla
d8d85de7be
docs(S9,S10): planos de intenção — captura de novidades na home + pixel Meta na página de campanha
2026-08-19 18:58:23 +00:00
Francisco Solla
484ed4a424
style(S8): prettier no rascunho UI
2026-08-19 18:57:01 +00:00
Francisco Solla
bf193edf0d
docs(S8): plano de intenção — seção de vídeo da história na home de campanha
2026-08-19 18:57:01 +00:00
Francisco Solla
2f47d8f321
style: prettier no rascunho UI do S7
CI (PR) / checks (pull_request) Successful in 1m25s
PR Ready + auto-merge / ready-automerge (pull_request) Successful in 1m33s
Main merge flips claimed issues to done + in-prod / issue-done (pull_request) Successful in 13s
Promote plan-issue Related on main merge / plan-issue-ready (pull_request) Successful in 12s
2026-08-19 15:51:55 -03:00
Francisco Solla
3c1c922fe2
plan(S7): cards 'Acompanhe de perto' sem raio, imagem de borda a borda, chips removidos (Related #90 )
2026-08-19 15:50:53 -03:00
fbfbfb1329
Merge pull request 'S4 — Compartilhar conteúdos da home no WhatsApp' ( #86 ) from S4-compartilhar-conteudos-da-home-no-whatsapp into main
2026-08-19 16:26:43 +00:00
Francisco Solla
39fb3b47f0
fix(OPS62-followup): âncora de relógio no fixture do municipalitiesWithoutUpdateTool — elimina o flake de ordenação por raiz
...
CI (PR) / checks (pull_request) Successful in 3m24s
PR Ready + auto-merge / ready-automerge (pull_request) Successful in 3m36s
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 14s
Causa raiz (reproduzida, refuta a hipótese da Issue): daysAgo() chamava
Date.now() por chamada; as duas daysAgo(40) de Beta/Alpha podiam cair em ms
diferentes sob carga, deixando Alpha estritamente mais novo — sortStale
ordenava por timestamp e o tie-break por nome nunca disparava (0.08% das
construções sem pausa; 100% com pausa de 1 ms; fixture ancorado: 0 em 2000).
Fix test-only: âncora fixtureNowMs no load do módulo (padrão prioritiesTool)
+ hoist do timestamp empatado (igualdade estrutural) + comentário.
Nada muda em produção — o sort real é determinístico sobre timestamps fixos.
Verificação: spec 30/30, unit 2405, int 791, tsc/lint/format/cycles verdes.
2026-08-19 13:07:30 -03:00
Francisco Solla
f35ac335aa
style: prettier nos docs do S4 (changelog + plans)
2026-08-19 12:50:26 -03:00
Francisco Solla
8bc8900e9d
feat(S4): compartilhar conteúdos da home no WhatsApp
2026-08-19 12:50:19 -03:00
Francisco Solla
7162c65e37
ops(OPS69): regenera importMap com o S3ClientUploadHandler (admin abria em branco em prod)
...
CI (PR) / checks (pull_request) Successful in 8m36s
PR Ready + auto-merge / ready-automerge (pull_request) Successful in 8m49s
Main merge flips claimed issues to done + in-prod / issue-done (pull_request) Successful in 13s
Promote plan-issue Related on main merge / plan-issue-ready (pull_request) Has been skipped
O importMap commitado ficou sem a entrada @payloadcms/storage-s3/client#S3ClientUploadHandler
desde o OPS52 (dabc00f4 removeu o handler do blob sem adicionar o do S3, porque o
generate:importmap rodou sem as envs S3_*). Com o plugin s3Storage condicional, sem as
envs o importMap sai consistente (dev/test) mas em produção (envs ativas) o admin falhava
ao montar a view — getFromImportMap: PayloadComponent not found in importMap — login nunca
renderizava. Fix: regenerar com as 4 S3_* dummy inline (loadEnvConfig do @next/env não
sobrescreve envs do processo; iterateConfig não toca DB) — diff de exatamente +2 linhas.
Smoke headless com S3 ativo: /admin/login renderiza, zero erros de console. Gates verdes
(tsc/lint/format/knip/cycles/unit+int 791/build). Sem migration/access/UI. Docs: nota no
AGENTS.md (generate:importmap precisa das S3_* enquanto o plugin for condicional) +
changelog. Guard de CI registrado como OPS70 (#87 , depends #77 ).
2026-08-19 12:45:22 -03:00
Francisco Solla
ccfa60c1f2
fix(OPS64): pin do waitForChecks contra rollup mentiroso + docs — OPS62 eliminou o secundário estruturalmente
...
CI (PR) / checks (pull_request) Successful in 3m5s
PR Ready + auto-merge / ready-automerge (pull_request) Successful in 4m40s
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
O sintoma primário da Issue (deadlock do waitForChecks no próprio pending)
já tinha sido entregue pelo OPS61. O secundário — o rollup `checks` reportava
SUCCESS com um shard de e2e vermelho porque o Forgejo 9.0.3 reporta o
resultado do ÚLTIMO shard como o parent de matrix no `needs` (runs 604/607/610;
o `needs.<job>.results` do GitHub não existe neste runner) — foi eliminado
estruturalmente pelo OPS62 (mergeado durante a execução): ci-pr.yml e ci.yml
viraram jobs únicos sequenciais, sem matrix/shard, e o status do job `checks`
já é o veredito honesto da cascata.
O que este item entrega: (a) teste-pino no waitForChecks (cenário run 607:
rollup verde + shard vermelho → o CLI LANÇA "Checks falharam" — nunca confia
no rollup sozinho; invariante de defesa válido e que pegaria qualquer matrix
que volte); (b) docs honestas (agent-pr-workflow.mdc, AGENT-OPS.md) com a
narrativa do parent de matrix e da eliminação estrutural pelo OPS62. O script
ci-rollup-check.mjs e os edits de workflow planejados foram descartados no
gate (redundantes pós-OPS62). Unit 2392 verdes; gates locais ok.
2026-08-19 12:11:41 -03:00
Francisco Solla
3ca2cbd438
docs(OPS68): reescreve docs canônicos da era GitHub/Vercel para Forgejo/homeserver
...
Parte 2 do OPS50 (fechamento): AGENT-OPS, README, roadmap (ponteiro),
AGENTS.md (refs Neon/job gate), rule agent-pr-workflow e 8 skills de
operação sem comandos gh (API/MCP + safety net) nem secrets Vercel —
fonte canônica única: git.solla.dev/fsolla/teqo.
2026-08-19 13:33:05 +00:00
Francisco Solla
cc6149191b
ops(OPS67): retry com backoff nos fetchs do forgejo-api
...
Um fetch failed transitorio (rede/DNS/reset) matava o run do safety net
(agent-pr-ready-automerge) no meio da espera de checks. Retry no request()
do cliente: fetch reject retenta em qualquer metodo; body-drop em GET
retenta; 5xx (502/503/504) retenta so em GET (body cancelado antes do
retry); 4xx e body-drop em escrita falham fail-closed. 3 retries, base
300ms x2, jitter +-20%, console.warn pt-BR por retry; opcoes flat no
createApi (retries/backoffMs/jitter/sleepImpl). 12 specs unit novas.
2026-08-19 13:28:37 +00:00
Francisco Solla
8d33e89102
style: prettier — runbook/impl plan/unit test (OPS66)
CI (PR) / checks (pull_request) Successful in 4m11s
PR Ready + auto-merge / ready-automerge (pull_request) Successful in 4m22s
Main merge flips claimed issues to done + in-prod / issue-done (pull_request) Successful in 15s
Promote plan-issue Related on main merge / plan-issue-ready (pull_request) Has been skipped
2026-08-19 10:07:14 -03:00
Francisco Solla
228f2217c7
ops(OPS66): deploy — migrate antes do build do runner (deadlock de migrations em caminho estático)
2026-08-19 10:06:00 -03:00
Francisco Solla
9504c7ccf6
ops(OPS65): CI do main em janela de 30 min (gate .dockerignore fail-open) + matar agent-pool
...
CI (PR) / checks (pull_request) Successful in 8m4s
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 13m48s
PR Ready + auto-merge / ready-automerge (pull_request) Successful in 52m5s
- ci.yml: on push removido → schedule */30 + workflow_dispatch (fundido com a
estrutura de job único sequencial do OPS62 X1)
- job gate (host, main-only, sem pnpm): revision do container rodando no
homeserver (label org.opencontainers.image.revision — o compose pode mentir
após rollback falho) + diff + classificador .dockerignore
- fail-open: revision desconhecida → suite roda (verde); incapaz de classificar
→ run vermelho (nunca blackout silencioso); deploy duplo-gated
(needs: [checks, gate] + if explícito)
- deploy-homeserver.sh: guard 'already deployed' idempotente (mesma revision)
- agent-pool.yml removido; pool dormente (144 pnpm install/dia no tick */10)
- specs: dockerignoreMatch, ciClassifyProduction (incl. git-diff com repo
scratch e exit codes), pins ciSkipInvariants/deployScript; HIGH_RISK_EXACT
- docs: runbook (janela/gate/verificação ao vivo/falhas), AGENTS.md,
AGENT-OPS.md (tabela X1 fundida), skills pool dormente, changelog OPS65
- impl plan aprovado; intenção marcada entregue
2026-08-18 21:08:12 -03:00
Francisco Solla
a638a8acae
feat(S3): seção de conteúdos da home de campanha inclui os posts do Instagram
...
Board "Acompanhe de perto" (S1+S2) ganha o feed automático do perfil oficial:
loader irmão src/utilities/socialFeed/instagramFeed.ts (Graph API /media com
children p/ carrossel + username, unstable_cache tag social-feed + revalidate
300, snapshot cru pré-exclusão persistido via SQL direto, refresh de token
automático com retry 1x — refresh endpoint só renova tokens de Instagram
Login, page tokens caem no fail-closed), global SocialFeedSettings estendida
(instagramEnabled/AccessToken/UserId/MaxItems + snapshot hidden; excludedItems
já cobria a plataforma desde a S2). Requisito nº 1 — picker de exclusão no
admin (primeiro componente custom do repo, campo ui + importmap): lista os
posts do snapshot com thumbnail e toggle "Não exibir" que escreve em
excludedItems. Card com coverAspect square (1:1 do rascunho), badge
Instagram, título = legenda com fallback para post sem legenda, clique no
permalink (noopener), link "Seguir no Instagram →" derivado do username.
Os feeds externos mudam para o subfolder socialFeed/ (pin da S2 previa).
Migration 20260818_192948_add_instagram_social_feed_fields (não destrutiva).
Stub IG no webServer (porta dev+2000, helper socialStub.ts) + 3 e2e novos no
describe serial + kill switch estendido + smoke do picker no admin.
Closes #20
2026-08-18 20:29:50 -03:00
Francisco Solla
ee31aeee4f
fix(OPS62): services por nome na rede do job — Forgejo 9 não expande expressões em ports
...
Achado ao vivo (run 730): a expressão ${{ 5433 + (github.run_id % 100) }} no
ports do service não é avaliada pelo Forgejo 9 — o literal ia ao runner e o
job falhava em 1s. E portas fixas colidiriam entre runs concorrentes (o job
único segura os services pelo run inteiro). Correção: services sem publish
host, alcançados por nome na rede do job (postgres-int/postgres-build:5432)
— solução canônica do Actions, mata a colisão de raiz. Guards fail-closed
(LOCAL_HOSTS + assertTestDatabase) admitem os nomes dos services (hosts
internos do runner; hosts remotos continuam rejeitados); pins novos em
localHosts.unit.spec.ts e ciSkipInvariants (sem ports:, URLs por nome).
2026-08-18 23:26:13 +00:00
Francisco Solla
12a4fe1005
chore(OPS62): CI fail-fast estrutural — job único checks sequencial (X1)
...
ci-pr.yml e ci.yml deixam de ter jobs irmãos: 1 job 'checks' com steps em
série (guards → lint → format → typecheck → knip → cycles → unit → int →
build → e2e). Step vermelho interrompe o job, o run falha e o slot é
liberado — sem API de cancel (Forgejo 9.0.3 não tem), sem watchdog, sem
upgrade do Forgejo. Skips do ci-scope.mjs viram step id 'scope'; e2e em 1
processo com PLAYWRIGHT_WORKERS=4 (substitui 2 shards × 2 workers); 2
services Postgres por run com portas host derivadas do run_id (runs
concorrentes não colidem); contexto 'CI (PR) / checks' preservado (job id
checks — contrato do automerger OPS61); deploy OPS53 gated em needs checks.
Plumbing morto removido (e2eShardConfig/e2e_shards). Docs: AGENT-OPS,
TESTING.md, changelog. Impl: docs/plans/ops62-ci-fail-fast-forgejo-impl.md
(a intenção watchdog+upgrade fica como histórico do gate).
2026-08-18 23:26:13 +00:00
Francisco Solla
a1a6160ed8
plan(OPS69): admin em branco em produção — importMap sem o handler do storage S3 (Related #77 )
CI / checks (push) Blocked by required conditions
CI / deploy homeserver (teqo-1313) (push) Blocked by required conditions
CI / static (push) Successful in 2m50s
CI / int (push) Successful in 3m11s
CI / build (push) Successful in 4m44s
CI / e2e (2) (push) Successful in 7m5s
CI / e2e (1) (push) Successful in 7m38s
2026-08-18 22:59:04 +00:00
Francisco Solla
8c915e59fc
fix(S6-FOLLOWUP): test:e2e:affected rodava a suíte completa — --no-deps desliga o closure de deps dos projects em runs filtrados
...
CI (PR) / scope (pull_request) Successful in 50s
CI (PR) / lint (pull_request) Successful in 1m5s
CI (PR) / docs-guards (pull_request) Successful in 9s
CI (PR) / plans-only-closes (pull_request) Successful in 9s
CI (PR) / format (pull_request) Successful in 1m8s
CI (PR) / typecheck (pull_request) Successful in 35s
CI (PR) / knip (pull_request) Successful in 41s
CI (PR) / cycles (pull_request) Successful in 43s
CI (PR) / unit (pull_request) Successful in 1m12s
CI (PR) / int (pull_request) Successful in 2m13s
CI (PR) / build (pull_request) Has been skipped
CI (PR) / e2e (1) (pull_request) Successful in 5m3s
CI (PR) / e2e (2) (pull_request) Successful in 4m23s
CI (PR) / checks (pull_request) Successful in 1s
CI / checks (push) Blocked by required conditions
PR Ready + auto-merge / ready-automerge (pull_request) Successful in 19m46s
CI / deploy homeserver (teqo-1313) (push) Blocked by required conditions
Main merge flips claimed issues to done + in-prod / issue-done (pull_request) Successful in 16s
Promote plan-issue Related on main merge / plan-issue-ready (pull_request) Has been skipped
Agent pool supervisor / tick (pull_request) Successful in 39s
CI / static (push) Successful in 3m9s
CI / int (push) Successful in 3m21s
CI / build (push) Successful in 3m52s
CI / e2e (1) (push) Successful in 6m47s
CI / e2e (2) (push) Failing after 6m41s
Causa raiz (medida com o binário 1.58.2, config real): commander parseia
posicionais e -g/--list funcionam; o que arrastava a suíte era o closure de
dependências do dev mode (setup<-campaign<-frontend<-admin): filtrar um spec
do frontend puxava campaign(160)+setup(2). run-e2e-affected.mjs agora gera
test:e2e <passthrough verbatim> --no-deps -- <paths> via helpers puros em
scripts/lib/playwright-e2e-args.mjs (unit-pinned); passthrough corrigido
(pnpm consome o -- e o path era descartado); run-e2e-affected.mjs entrou em
HIGH_RISK_EXACT. Docs: receitas de filtro no playwright.config.ts, AGENTS.md,
changelog.
2026-08-18 19:09:12 -03:00
Francisco Solla
e6bd1d2688
docs(OPS63): status entregue no plano de intenção
CI / static (push) Successful in 2m6s
CI / int (push) Successful in 2m19s
CI / build (push) Successful in 3m7s
CI / e2e (1) (push) Successful in 6m9s
CI / e2e (2) (push) Successful in 4m50s
CI / checks (push) Successful in 1s
CI / deploy homeserver (teqo-1313) (push) Successful in 8m59s
2026-08-18 21:35:24 +00:00
Francisco Solla
5af626ebbf
ops(OPS63): docs-guards no pre-push — changelog append-only, agregado e marcadores de conflito no gate:ci
2026-08-18 21:35:24 +00:00
Francisco Solla
ac11afecf3
ops(OPS61): flip de issues pós-merge com PAT + gate do rollup checks + branch protection real no Forgejo
...
- issue-done/plan-issue-ready: env FORGEJO_API_TOKEN (GITHUB_TOKEN 403 em
Issues) + fork guard (checkout de fork roda script do fork com o PAT — RCE)
- forgejo-issue-transition: falha de flip vira exit 1 (job vermelho, nunca
skip silencioso)
- waitForChecks: exige o rollup CI (PR) / checks presente+verde (raça PR #52 :
snapshot com jobs não-agendados parecia verde); mergeable=false só conta
como conflito após a cascata assentar; timeouts 30→45min (CLI) e 40→55min
(workflow)
- configure-branch-protection: contexto real CI (PR) / checks* (Forgejo casa
por glob contra 'CI (PR) / checks (pull_request)'; literal 'checks' nunca
casaria), idempotente GET→POST/PATCH, verificação pós-aplicação; decisão
pura em scripts/lib/branch-protection.mjs
- docs honestas (AGENT-OPS, agent-pr-workflow.mdc, CUTOVER-MAIN-ONLY, README)
- testes: raça do rollup/rollup failure/mergeable pré-settle +
branchProtection create/update/noop + glob real
2026-08-18 17:45:54 -03:00
Francisco Solla
bf4063b236
plan(OPS66): deploy — build de geração estática lê schema novo antes do passo migrate
CI / static (push) Successful in 2m9s
CI / int (push) Successful in 2m16s
CI / build (push) Successful in 3m0s
CI / e2e (1) (push) Successful in 4m22s
CI / e2e (2) (push) Successful in 4m22s
CI / checks (push) Successful in 2s
CI / deploy homeserver (teqo-1313) (push) Successful in 8m46s
2026-08-18 20:29:28 +00:00
Francisco Solla
2d402c81a2
chore(OPS60): guard SEED_MEDIA_CONFIRM para escrita no bucket via db:seed:posts
CI / static (push) Successful in 2m29s
CI / int (push) Successful in 2m50s
CI / build (push) Successful in 3m49s
CI / e2e (1) (push) Successful in 5m54s
CI / e2e (2) (push) Successful in 5m19s
CI / checks (push) Successful in 2s
CI / deploy homeserver (teqo-1313) (push) Has been cancelled
2026-08-18 20:11:54 +00:00
Francisco Solla
085a69e6e1
docs(S6-FOLLOWUP): plano com evidência empírica do bug de filtros do Playwright (-- e -g)
CI / static (push) Successful in 2m24s
CI / int (push) Successful in 2m38s
CI / build (push) Successful in 3m29s
CI / e2e (1) (push) Successful in 6m9s
CI / e2e (2) (push) Successful in 5m51s
CI / checks (push) Successful in 2s
CI / deploy homeserver (teqo-1313) (push) Failing after 3m59s
2026-08-18 19:32:50 +00:00
Francisco Solla
cacb6165ad
feat(S6): home de campanha sem carrossel no desktop — grade estática em ≥1024px, mobile preservado
2026-08-18 19:32:50 +00:00
Francisco Solla
8cc9e078ae
plan(OPS65): CI do main em janela de 30 min + matar o agent-pool
CI / static (push) Successful in 2m45s
CI / int (push) Successful in 2m59s
CI / build (push) Successful in 3m57s
CI / e2e (1) (push) Successful in 4m34s
CI / e2e (2) (push) Successful in 5m4s
CI / checks (push) Successful in 2s
CI / deploy homeserver (teqo-1313) (push) Failing after 3m36s
2026-08-18 19:10:18 +00:00
Francisco Solla
fe5b11cf24
feat(S2): seção de conteúdos da home de campanha inclui os vídeos do YouTube
...
CI (PR) / e2e (1) (pull_request) Successful in 5m9s
CI / build (push) Successful in 2m20s
CI (PR) / e2e (2) (pull_request) Successful in 5m18s
PR Ready + auto-merge / ready-automerge (pull_request) Failing after 30m17s
CI / e2e (1) (push) Successful in 4m5s
CI (PR) / scope (pull_request) Successful in 32s
CI / deploy homeserver (teqo-1313) (push) Has been cancelled
CI (PR) / lint (pull_request) Successful in 42s
CI (PR) / cycles (pull_request) Successful in 34s
CI (PR) / format (pull_request) Successful in 55s
CI (PR) / docs-guards (pull_request) Successful in 8s
CI (PR) / plans-only-closes (pull_request) Successful in 7s
Main merge flips claimed issues to done + in-prod / issue-done (pull_request) Successful in 13s
CI (PR) / typecheck (pull_request) Successful in 30s
CI (PR) / knip (pull_request) Successful in 31s
CI (PR) / unit (pull_request) Successful in 50s
CI (PR) / checks (pull_request) Successful in 2s
Promote plan-issue Related on main merge / plan-issue-ready (pull_request) Has been skipped
Agent pool supervisor / tick (pull_request) Successful in 27s
CI / static (push) Successful in 1m48s
CI / e2e (2) (push) Successful in 4m7s
CI (PR) / int (pull_request) Successful in 1m49s
CI / int (push) Successful in 1m57s
CI / checks (push) Successful in 2s
CI (PR) / build (pull_request) Successful in 2m31s
Board "Acompanhe de perto" (S1) ganha o feed automático do canal oficial:
global SocialFeedSettings (admin-only, kill switch + toggle + maxItems +
exclusões por item), loader src/utilities/youtubeFeed.ts (Data API v3
search→statistics, unstable_cache tag social-feed + revalidate 300,
fail-closed com snapshot persistido via SQL direto — revalidateTag dentro
de unstable_cache lança no Next 15.4), card generalizado
(CampaignArticleCard → CampaignContentCard, external com noopener) e merge
por recência com o grande = mais recente elegível. Stub HTTP do YouTube no
webServer do Playwright (porta dev+1000) + 4 e2e novos no describe serial.
Migration 20260818_111748_add_social_feed_settings (não destrutiva).
Closes #18
2026-08-18 15:23:50 -03:00
Francisco Solla
50749270d6
style: prettier nos planos OPS62/OPS63
CI / static (push) Successful in 2m5s
CI / int (push) Successful in 2m12s
CI / build (push) Successful in 3m25s
CI / e2e (1) (push) Successful in 5m3s
CI / e2e (2) (push) Successful in 4m0s
CI / checks (push) Successful in 2s
CI / deploy homeserver (teqo-1313) (push) Successful in 35s
2026-08-18 18:17:08 +00:00
Francisco Solla
d5f48ea9db
plan(OPS62): CI fail-fast no Forgejo — upgrade do servidor + watchdog cancela o run em qualquer job vermelho
...
plan(OPS63): doc-guard no pre-push — changelog append-only, agregado e marcadores de conflito no gate local
2026-08-18 18:17:08 +00:00
Francisco Solla
7bd9c9504f
ops(OPS59): pre-push sem e2e — e2e roda uma vez, no CI (gate local fica com os outros testes)
CI / static (push) Successful in 1m56s
CI / int (push) Successful in 2m3s
CI / build (push) Successful in 2m20s
CI / e2e (1) (push) Successful in 5m11s
CI / e2e (2) (push) Successful in 4m38s
CI / checks (push) Successful in 1s
CI / deploy homeserver (teqo-1313) (push) Successful in 8m16s
2026-08-18 17:56:41 +00:00
Francisco Solla
a60b3880ca
feat(S5): banda visual própria para a seção 'Acompanhe de perto' na home
CI (PR) / scope (pull_request) Successful in 44s
CI (PR) / lint (pull_request) Successful in 1m3s
CI (PR) / format (pull_request) Successful in 1m16s
CI (PR) / docs-guards (pull_request) Successful in 9s
CI (PR) / plans-only-closes (pull_request) Successful in 9s
CI (PR) / typecheck (pull_request) Successful in 48s
CI (PR) / knip (pull_request) Successful in 51s
CI (PR) / cycles (pull_request) Successful in 50s
CI (PR) / unit (pull_request) Successful in 1m19s
CI (PR) / int (pull_request) Successful in 2m41s
CI (PR) / e2e (1) (pull_request) Failing after 2s
PR Ready + auto-merge / ready-automerge (pull_request) Failing after 9m19s
CI (PR) / build (pull_request) Successful in 3m44s
CI (PR) / e2e (2) (pull_request) Successful in 1m24s
CI (PR) / checks (pull_request) Successful in 2s
2026-08-18 13:35:53 -03:00
Francisco Solla
228d5da9c8
ops(OPS52-media-guard): reconcile do media:recover exige MEDIA_RECOVER_CONFIRM=1 (guard de intenção explícita)
CI (PR) / scope (pull_request) Successful in 32s
CI (PR) / lint (pull_request) Successful in 46s
CI (PR) / docs-guards (pull_request) Successful in 9s
CI (PR) / plans-only-closes (pull_request) Successful in 7s
CI (PR) / format (pull_request) Successful in 47s
CI (PR) / typecheck (pull_request) Successful in 28s
CI (PR) / knip (pull_request) Successful in 32s
CI (PR) / cycles (pull_request) Successful in 34s
CI (PR) / unit (pull_request) Successful in 45s
CI (PR) / build (pull_request) Has been skipped
CI (PR) / e2e (1) (pull_request) Has been skipped
CI (PR) / e2e (2) (pull_request) Has been skipped
CI (PR) / int (pull_request) Successful in 1m34s
CI (PR) / checks (pull_request) Successful in 1s
PR Ready + auto-merge / ready-automerge (pull_request) Failing after 19m21s
CI / checks (push) Blocked by required conditions
CI / deploy homeserver (teqo-1313) (push) Blocked by required conditions
Main merge flips claimed issues to done + in-prod / issue-done (pull_request) Successful in 13s
Promote plan-issue Related on main merge / plan-issue-ready (pull_request) Has been skipped
Agent pool supervisor / tick (pull_request) Successful in 29s
CI / static (push) Successful in 2m15s
CI / int (push) Successful in 2m48s
CI / build (push) Successful in 2m37s
CI / e2e (2) (push) Successful in 5m56s
CI / e2e (1) (push) Failing after 17m21s
2026-08-18 12:45:32 -03:00
Francisco Solla
1dfad8ac99
docs(OPS61): evidência da raça do waitForChecks (merge com CI vermelho na PR #52 ) absorvida no plano
CI / deploy homeserver (teqo-1313) (push) Blocked by required conditions
CI / checks (push) Blocked by required conditions
CI / static (push) Successful in 3m21s
CI / int (push) Successful in 3m47s
CI / build (push) Successful in 4m48s
CI / e2e (2) (push) Failing after 20m11s
CI / e2e (1) (push) Failing after 22m41s
2026-08-18 15:38:44 +00:00
Francisco Solla
393b8c9991
ops(OPS58): seed de posts com dry-run e taxonomy atualizada — sync de prod com runbook
...
CI (PR) / scope (pull_request) Successful in 50s
CI (PR) / docs-guards (pull_request) Successful in 9s
CI (PR) / lint (pull_request) Successful in 1m9s
CI (PR) / plans-only-closes (pull_request) Successful in 10s
CI (PR) / typecheck (pull_request) Has been skipped
CI (PR) / knip (pull_request) Has been skipped
CI (PR) / cycles (pull_request) Has been skipped
CI (PR) / unit (pull_request) Has been skipped
CI (PR) / format (pull_request) Successful in 1m21s
CI (PR) / int (pull_request) Has been skipped
PR Ready + auto-merge / ready-automerge (pull_request) Successful in 1m32s
CI (PR) / build (pull_request) Has been skipped
CI (PR) / e2e (1) (pull_request) Has been skipped
CI (PR) / e2e (2) (pull_request) Has been skipped
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 16s
Agent pool supervisor / tick (pull_request) Successful in 47s
CI / static (push) Successful in 3m42s
CI / int (push) Successful in 4m5s
CI (PR) / checks (pull_request) Successful in 3s
CI / build (push) Successful in 5m11s
CI / e2e (1) (push) Has been cancelled
CI / e2e (2) (push) Has been cancelled
CI / checks (push) Has been cancelled
CI / deploy homeserver (teqo-1313) (push) Has been cancelled
- scripts/seed-posts.mjs: modo --dry-run (plan-only, echo do alvo, zero
escrita) e 4 slugs novos no CLASSIFICATION (3 com tag eleitoral — lock de
visibilidade eleitoral do repo)
- docs: impl plan com runbook do homeserver, changelog, nota AGENTS.md
2026-08-18 12:15:05 -03:00
Francisco Solla
87a81c29fd
chore(ops OPS57): alargar o gatilho do forgejo-pr-automerge para todas as PRs same-repo (draft não-cursor/* = veto)
CI (PR) / scope (pull_request) Successful in 41s
PR Ready + auto-merge / ready-automerge (pull_request) Successful in 1m20s
CI (PR) / docs-guards (pull_request) Successful in 10s
CI (PR) / plans-only-closes (pull_request) Successful in 9s
CI (PR) / typecheck (pull_request) Has been skipped
CI (PR) / knip (pull_request) Has been skipped
CI (PR) / cycles (pull_request) Has been skipped
CI (PR) / unit (pull_request) Has been skipped
Main merge flips claimed issues to done + in-prod / issue-done (pull_request) Successful in 16s
Promote plan-issue Related on main merge / plan-issue-ready (pull_request) Has been skipped
CI (PR) / lint (pull_request) Successful in 1m5s
Agent pool supervisor / tick (pull_request) Successful in 43s
CI (PR) / format (pull_request) Successful in 1m19s
CI / static (push) Successful in 3m39s
CI / int (push) Successful in 3m57s
CI (PR) / int (pull_request) Has been skipped
CI (PR) / build (pull_request) Has been skipped
CI (PR) / e2e (1) (pull_request) Has been skipped
CI (PR) / e2e (2) (pull_request) Has been skipped
CI (PR) / checks (pull_request) Successful in 2s
CI / build (push) Successful in 5m14s
CI / e2e (1) (push) Successful in 7m58s
CI / e2e (2) (push) Successful in 6m27s
CI / checks (push) Successful in 2s
CI / deploy homeserver (teqo-1313) (push) Successful in 4m44s
2026-08-18 11:50:48 -03:00
Francisco Solla
094dbe6b5d
plan(OPS59): pre-push sem e2e — e2e roda uma vez no CI
Agent PR Ready + auto-merge / ready-automerge (pull_request) Has been skipped
CI (PR) / docs-guards (pull_request) Successful in 8s
CI (PR) / plans-only-closes (pull_request) Successful in 8s
CI (PR) / scope (pull_request) Successful in 46s
CI (PR) / typecheck (pull_request) Has been skipped
CI (PR) / knip (pull_request) Has been skipped
CI (PR) / cycles (pull_request) Has been skipped
CI (PR) / unit (pull_request) Has been skipped
CI (PR) / lint (pull_request) Successful in 1m3s
CI (PR) / format (pull_request) Successful in 1m17s
CI (PR) / int (pull_request) Has been skipped
CI (PR) / build (pull_request) Has been skipped
CI (PR) / e2e (1) (pull_request) Has been skipped
CI (PR) / e2e (2) (pull_request) Has been skipped
CI (PR) / checks (pull_request) Successful in 2s
Main merge flips claimed issues to done + in-prod / issue-done (pull_request) Successful in 16s
Promote plan-issue Related on main merge / plan-issue-ready (pull_request) Successful in 15s
Agent pool supervisor / tick (pull_request) Successful in 43s
CI / static (push) Successful in 3m13s
CI / int (push) Successful in 3m27s
CI / build (push) Successful in 4m36s
CI / e2e (2) (push) Has been cancelled
CI / e2e (1) (push) Has been cancelled
CI / checks (push) Has been cancelled
CI / deploy homeserver (teqo-1313) (push) Has been cancelled
2026-08-18 11:45:03 -03:00
Francisco Solla
71cf477f6e
plan(OPS58): atualizar artigos de produção com novos posts do jorgesolla.com.br
CI / static (push) Successful in 2m14s
CI / int (push) Successful in 2m37s
CI / build (push) Successful in 3m39s
CI / e2e (1) (push) Successful in 5m42s
CI / e2e (2) (push) Successful in 4m53s
CI / checks (push) Successful in 1s
CI / deploy homeserver (teqo-1313) (push) Successful in 4m52s
2026-08-18 14:32:00 +00:00
Francisco Solla
b78a390371
fix(ops OPS56): forgejo-pr-automerge — veredito de merge por re-read do PR (falso positivo 'já mergeado' com PR aberto)
CI / static (push) Successful in 2m4s
CI / int (push) Successful in 2m21s
CI / e2e (2) (push) Has been cancelled
CI / e2e (1) (push) Has been cancelled
CI / build (push) Has been cancelled
CI / deploy homeserver (teqo-1313) (push) Has been cancelled
CI / checks (push) Has been cancelled
2026-08-18 14:28:54 +00:00
Francisco Solla
f12bd6474b
docs(OPS52-media): runbook atualizado com o fix de infra real (E3 = firewall do host; 38/40 servindo 200)
Agent PR Ready + auto-merge / ready-automerge (pull_request) Has been skipped
CI (PR) / docs-guards (pull_request) Successful in 8s
CI (PR) / plans-only-closes (pull_request) Successful in 7s
CI (PR) / scope (pull_request) Successful in 35s
CI (PR) / typecheck (pull_request) Has been skipped
CI (PR) / knip (pull_request) Has been skipped
CI (PR) / cycles (pull_request) Has been skipped
CI (PR) / unit (pull_request) Has been skipped
CI (PR) / lint (pull_request) Successful in 48s
CI (PR) / format (pull_request) Successful in 57s
CI (PR) / int (pull_request) Has been skipped
CI (PR) / build (pull_request) Has been skipped
CI (PR) / e2e (1) (pull_request) Has been skipped
CI (PR) / e2e (2) (pull_request) Has been skipped
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 pool supervisor / tick (pull_request) Successful in 31s
CI / static (push) Successful in 2m2s
CI / int (push) Successful in 2m23s
CI / build (push) Successful in 3m40s
CI / e2e (1) (push) Successful in 5m13s
CI / e2e (2) (push) Successful in 4m12s
CI / checks (push) Successful in 1s
CI / deploy homeserver (teqo-1313) (push) Successful in 4m47s
2026-08-18 10:45:27 -03:00
Francisco Solla
64ea0dbab9
ops(OPS54): allowlist onlyBuiltDependencies migra para pnpm-workspace.yaml — fim do warning do pnpm 10 sobre o campo pnpm ignorado
Agent PR Ready + auto-merge / ready-automerge (pull_request) Has been skipped
CI (PR) / docs-guards (pull_request) Successful in 7s
CI (PR) / plans-only-closes (pull_request) Successful in 8s
CI (PR) / scope (pull_request) Successful in 34s
CI (PR) / lint (pull_request) Successful in 46s
CI (PR) / format (pull_request) Successful in 56s
CI (PR) / typecheck (pull_request) Successful in 38s
CI (PR) / knip (pull_request) Successful in 39s
CI (PR) / cycles (pull_request) Successful in 37s
CI (PR) / unit (pull_request) Successful in 53s
CI (PR) / int (pull_request) Successful in 2m37s
CI (PR) / build (pull_request) Successful in 3m39s
CI (PR) / e2e (2) (pull_request) Successful in 5m25s
CI (PR) / e2e (1) (pull_request) Successful in 5m43s
CI (PR) / checks (pull_request) Successful in 1s
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 pool supervisor / tick (pull_request) Successful in 34s
CI / static (push) Successful in 2m35s
CI / int (push) Successful in 2m45s
CI / build (push) Successful in 3m31s
CI / e2e (1) (push) Successful in 5m28s
CI / e2e (2) (push) Successful in 4m14s
CI / checks (push) Successful in 1s
CI / deploy homeserver (teqo-1313) (push) Successful in 8m57s
2026-08-18 09:06:37 -03:00
Francisco Solla
45e29a7785
feat(OPS52-media): recupera os objetos de media de produção do WordPress para o bucket (pnpm media:recover)
...
Agent PR Ready + auto-merge / ready-automerge (pull_request) Has been skipped
CI (PR) / docs-guards (pull_request) Successful in 7s
CI (PR) / plans-only-closes (pull_request) Successful in 8s
CI (PR) / scope (pull_request) Successful in 51s
CI (PR) / lint (pull_request) Successful in 1m4s
CI (PR) / format (pull_request) Successful in 1m14s
CI (PR) / typecheck (pull_request) Successful in 39s
CI (PR) / knip (pull_request) Successful in 40s
CI (PR) / cycles (pull_request) Successful in 39s
CI (PR) / unit (pull_request) Successful in 1m0s
CI (PR) / int (pull_request) Successful in 2m39s
CI (PR) / build (pull_request) Successful in 4m2s
CI (PR) / e2e (2) (pull_request) Successful in 6m2s
CI / e2e (1) (push) Successful in 6m39s
CI (PR) / e2e (1) (pull_request) Successful in 7m26s
CI (PR) / checks (pull_request) Successful in 7s
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 19s
Agent pool supervisor / tick (pull_request) Successful in 42s
CI / int (push) Successful in 2m52s
CI / static (push) Successful in 2m57s
CI / build (push) Successful in 3m52s
CI / e2e (2) (push) Successful in 5m34s
CI / checks (push) Successful in 2s
CI / deploy homeserver (teqo-1313) (push) Successful in 8m27s
- scripts/recover-media.mjs: CLI de reconciliação (reconcile/--dry-run/--verify)
— lê rows de media + posts.coverImage, resolve a capa com a mesma lógica do
seed (featured media, senão 1ª imagem inline), PutObject com key = filename;
DB nunca escrito; fail-closed (S3_* completas, ALLOW_REMOTE_DB, echo do alvo,
timeouts curtos, covers só do origin WP e image/*)
- scripts/lib/wpArticles.mjs: fetch ao vivo do WordPress extraído do seed
(sem twin), helpers puros de resolução + row→cover mapping (unit-testados)
- seed-posts.mjs: importa o fetch da lib (comportamento idêntico) e usa
resolveCoverSource em processContent
- runbook de execução no homeserver (impl plan), nota no AGENTS.md, changelog
Closes #10
2026-08-18 08:20:45 -03:00
Francisco Solla
fbe3da1acf
style(plans S6): prettier no rascunho UI
CI / static (push) Successful in 2m39s
CI / int (push) Successful in 3m2s
CI / build (push) Successful in 3m57s
CI / e2e (1) (push) Successful in 5m53s
CI / e2e (2) (push) Successful in 4m14s
CI / checks (push) Successful in 2s
CI / deploy homeserver (teqo-1313) (push) Successful in 30s
2026-08-18 10:59:57 +00:00
Francisco Solla
c3dde67e91
plan(S6): home de campanha sem carrossel no desktop — grade 3x2 nas bandeiras
2026-08-18 10:59:57 +00:00
Francisco Solla
a4ae631157
plans(S5): separação visual da seção Acompanhe de perto (Related #33 )
CI / static (push) Successful in 1m58s
CI / int (push) Successful in 2m9s
CI / build (push) Has been cancelled
CI / e2e (2) (push) Has been cancelled
CI / e2e (1) (push) Has been cancelled
CI / deploy homeserver (teqo-1313) (push) Has been cancelled
CI / checks (push) Has been cancelled
2026-08-18 10:56:23 +00:00
Francisco Solla
ffab9e97fb
plan(OPS52-media): recuperar arquivos de media de produção (capas dos artigos)
CI / static (push) Successful in 2m0s
CI / int (push) Successful in 2m13s
CI (PR) / typecheck (pull_request) Has been skipped
CI (PR) / knip (pull_request) Has been skipped
CI (PR) / cycles (pull_request) Has been skipped
CI (PR) / unit (pull_request) Has been skipped
CI (PR) / int (pull_request) Has been skipped
CI (PR) / build (pull_request) Has been skipped
Agent PR Ready + auto-merge / ready-automerge (pull_request) Has been skipped
CI (PR) / docs-guards (pull_request) Successful in 7s
CI (PR) / e2e (1) (pull_request) Has been skipped
CI (PR) / e2e (2) (pull_request) Has been skipped
CI (PR) / checks (pull_request) Successful in 2s
CI (PR) / plans-only-closes (pull_request) Successful in 7s
CI / build (push) Successful in 3m45s
CI (PR) / scope (pull_request) Successful in 31s
CI / e2e (1) (push) Successful in 5m26s
CI (PR) / lint (pull_request) Successful in 42s
Main merge flips claimed issues to done + in-prod / issue-done (pull_request) Successful in 14s
CI (PR) / format (pull_request) Successful in 53s
Promote plan-issue Related on main merge / plan-issue-ready (pull_request) Successful in 12s
CI / e2e (2) (push) Successful in 3m58s
CI / deploy homeserver (teqo-1313) (push) Successful in 31s
Agent pool supervisor / tick (pull_request) Successful in 31s
CI / checks (push) Successful in 1s
2026-08-18 07:26:11 -03:00