From 1afe2aeed622f3fe0a72ce33410cbd3e0e842ac8 Mon Sep 17 00:00:00 2001 From: Francisco Solla Date: Mon, 10 Aug 2026 08:02:45 -0300 Subject: [PATCH] =?UTF-8?q?fix(D8):=20restaura=20entrada=20D6=20truncada?= =?UTF-8?q?=20pelo=20rebase=20do=20C104=20(revis=C3=A3o=20do=20/simplify)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - D6 (Issue #521) voltou verbatim de a4d7b883 (merge do D6; idêntica a 8c79eddf): o rebase do C104 (ea700e31) tinha cortado o final 'Pendência humana: …' e o prettier (d52d0016) escapou '**Pe' -> '\*\*Pe' literal no markdown - Impl plan: corrige atribuição da re-adição da B183 (7eaa65ce/PR #555, não fab834fc) e classificação do B189 (não mergeada; entrada no tip da branch) --- docs/CHANGELOG-AGENTS.md | 1 + docs/plans/restaurar-entradas-changelog-b183-c102-impl.md | 8 ++++---- 2 files changed, 5 insertions(+), 4 deletions(-) diff --git a/docs/CHANGELOG-AGENTS.md b/docs/CHANGELOG-AGENTS.md index e74aef88..8ebd0e47 100644 --- a/docs/CHANGELOG-AGENTS.md +++ b/docs/CHANGELOG-AGENTS.md @@ -3,6 +3,7 @@ Conteúdo movido do `AGENTS.md` em 2026-07-30 (fatiamento do paradigma de agentes paralelos): "Known Gaps" e todos os blocos "Recently resolved". Histórico — leia só quando precisar do contexto de uma entrega passada; o sempre-presente fica no `AGENTS.md`. Itens novos de "Recently resolved" passam a ser registrados aqui (uma entrada curta), não no AGENTS.md. --- + **Recently resolved (2026-08-10):** **OPS21** (Issue #538) — `REVALIDATE_SECRET` adicionada na **Vercel production** (projeto `solla/jorgesolla`): diagnóstico D6 confirmado (env ausente em `vercel env ls production`; `POST /api/revalidate` respondia `500` "not configured" em prod, quebrando o runbook pós-seed/mudança direta de DB). Segredo gerado com `openssl rand -hex 32` (valor via stdin, nunca argv), `vercel env add REVALIDATE_SECRET production`; **fallback necessário:** o deploy existente congelava as envs em runtime → `vercel redeploy` do último deploy de produção (2×, pois o primeiro `env add` via pipe herdou o `\n` do `openssl` e gravou valor de 66 chars — removido e re-adicionado limpo). Validação real em prod: sem secret → `401`; secret errado → `401`; secret certo → `200 { revalidated: true, tag: 'posts' }`; tag desconhecida → `400`. Preview não adicionada (projeto sem Git conectado — `vercel env add ... preview` exige branch, precedente D6). Sem código/migration/access/UI. Impl [`revalidate-secret-vercel-production-impl.md`](plans/revalidate-secret-vercel-production-impl.md). **Recently resolved (2026-08-10):** **C108** (Issue #522) — sino de notificações: **abrir já lê** — `openCampaignNotifications` (action única) lista + marca tudo como lido em 1 round trip, substituindo `listCampaignNotifications` + `markAllCampaignNotificationsRead`; o badge zera na abertura sem clique e o botão "Marcar todas como lidas" deixa de existir. Painel limpo em qualquer tamanho: sem título "Notificações" visível (sr-only para a11y), sem contador, sem botão "Fechar"; desktop vira **modal central** (Dialog shadcn, X no canto superior direito, clique fora fecha — par responsivo Dialog/Drawer do C94 via `useIsMobile`); mobile segue bottom sheet com handle, safe-area e **skeleton de loading** (o painel não abre mais em branco durante o round trip). `markAllNotificationsRead` extraída para `src/utilities/notification/notificationList.ts` (owner-scoped com bypass documentado, idempotente, cap 200 mantido; int testado: marca só as próprias, deixa as do outro intactas); `readAt` saiu do contrato `NotificationListItem` (sem leitores após a remoção do destaque de não lida); copy de erro unificada em `CAMPAIGN_NOTIFICATION_LOAD_ERROR_MESSAGE`; `router.refresh()` re-sincroniza a instância irmã do outro header só quando algo foi marcado (race cross-tab documentado); foco visível nos itens e `role="alert"` no erro. P4-D atualizado no ledger — o batch sem transação agora dispara a cada abertura (self-healing). Testes: int (owner-scope + idempotência) e unit novos do bell (dialog limpo, refresh condicional, empty/error, sheet mobile). Sem migration, access, Consent ou schema. Intenção [`sino-notificacoes-leitura-auto-modal-desktop.md`](plans/sino-notificacoes-leitura-auto-modal-desktop.md); impl [`sino-notificacoes-leitura-auto-modal-desktop-impl.md`](plans/sino-notificacoes-leitura-auto-modal-desktop-impl.md). diff --git a/docs/plans/restaurar-entradas-changelog-b183-c102-impl.md b/docs/plans/restaurar-entradas-changelog-b183-c102-impl.md index 7c762dfd..69adf436 100644 --- a/docs/plans/restaurar-entradas-changelog-b183-c102-impl.md +++ b/docs/plans/restaurar-entradas-changelog-b183-c102-impl.md @@ -10,7 +10,7 @@ Appetite restante: ~0,25 dia eng (herdado; exploração já consumida, execuçã - **Outcome:** as entradas de entrega perdidas do CHANGELOG voltam ao main, sem duplicar nem alterar texto (fonte: git), na posição cronológica correta; nada mais é tocado; sem Issue nova por entrada. - **O que NÃO negociar:** texto canônico vindo do git (`8c79eddf`); posição relativa de C102 (após C104, antes de B179 — mesma ordem de `8c79eddf`); nenhuma outra **entrada legítima** é editada/removida; sem guarda automatizada de presença. -- **O que reavaliar:** a hipótese da intenção ("só B183 e C102 sumiram") está **desatualizada** — o snapshot da intenção (2026-08-10, pré-merges do B184/C103/C106/B185) não viu o churn do rebase do C106 (PR #555), que (a) **perdeu também a entrada da C108** (escrita em `c3f10cce`, ausente em main) e (b) deixou lixo de resolução de conflito no topo: D6 duplicado, C106 duplicado e 2 linhas de `git log` vazadas no markdown. A B183, que a intenção manda restaurar, **já foi re-adicionada** pelo rebase da B184 (`fab834fc`), byte-idêntica à fonte — restaurá-la de novo criaria duplicata. +- **O que reavaliar:** a hipótese da intenção ("só B183 e C102 sumiram") está **desatualizada** — o snapshot da intenção (2026-08-10, pré-merges do B184/C103/C106/B185) não viu o churn do rebase do C106 (PR #555), que (a) **perdeu também a entrada da C108** (escrita em `c3f10cce`, ausente em main) e (b) deixou lixo de resolução de conflito no topo: D6 duplicado, C106 duplicado e 2 linhas de `git log` vazadas no markdown. A B183, que a intenção manda restaurar, **já foi re-adicionada** pela branch da C106 (`7eaa65ce`, PR #555 — `fab834fc`/B184 não a tocou), byte-idêntica à fonte — restaurá-la de novo criaria duplicata. E o rebase do C104 (`ea700e31`) **truncou a entrada da D6** (perdeu o final "Pendência humana: …"; o prettier `d52d0016` escapou `**Pe` → `\*\*Pe`) — achado dos revisores do /simplify, corrigido na mesma sessão (fase 2). ## Abordagem recomendada @@ -31,7 +31,7 @@ flowchart LR - B — executar a intenção ao pé da letra (restaurar só C102): deixa C108 perdida, D6 duplicado, C106 duplicado e linhas de commit vazadas como defeito permanente num doc que agentes leem para contexto. A intenção não previu o churn posterior; "nenhuma outra entrada é tocada" refere-se a entradas legítimas, não a lixo de conflito. - C — reordenar a seção topo inteira pela ordem de merges: viola o "não reorganizar o arquivo" da intenção e mexe em entradas legítimas (B184/C103/B185…). O custo (diff grande, risco de desordenar o que está aceitável) não compra nada para o aceite. -- D — registrar Issues novas para as entregas que **nunca** escreveram entrada (B187/B188/B189/B190/B191/C107 — verificado: branch tips e merges não tocaram o CHANGELOG): proibido pela intenção ("Sem Issue nova por entrada"); é gap de processo, não perda. Registrado como nota no impl e levado ao capture-review-debts se o humano quiser. +- D — registrar Issues novas para as entregas mergeadas que **nunca** escreveram entrada (B187/B188/B190/B191/C107/C105 — verificado: branch tips e merges não tocaram o CHANGELOG): proibido pela intenção ("Sem Issue nova por entrada"); é gap de processo, não perda. Registrado como nota no impl e levado ao capture-review-debts se o humano quiser. ### Componentes / mudanças @@ -61,7 +61,7 @@ Não se aplica (sem dados/forma). - Não criar guarda automatizada de presença de entradas no CHANGELOG (intenção; processo = revisar diff em merges que o toquem). - Não reordenar a seção nem reorganizar o arquivo. -- Não restaurar C107/B187/B188/B189/B190/B191/C105 (nunca escritas — gap de processo; fora do aceite). +- Não restaurar C107/B187/B188/B190/B191/C105 (nunca escritas — gap de processo; fora do aceite). B186/B189 não mergeadas — entradas vêm com os merges. - Não criar Issue por entrada nem editar outras Issues in-progress. ## Riscos e mitigação @@ -80,4 +80,4 @@ Não se aplica (sem dados/forma). ### Nota de achado (gap de processo, fora do escopo) -Entregas mergeadas sem entrada no CHANGELOG (verificado em branch tips e merges): B187 (#559), B188 (#548), B189, B190 (#560), B191 (#554), C107 (#552). A B186/B189 não mergeadas seguem em branch. Recomendação de processo (não automatizada): revisar o diff do CHANGELOG no rebase de cada branch que o toque — o mesmo processo que a intenção já registra. +Entregas mergeadas sem entrada no CHANGELOG (verificado em branch tips e merges): B187 (#559), B188 (#548), B190 (#560), B191 (#554), C107 (#552), C105 (#536). B186 e B189 seguem **não mergeadas** em branch (a B189 escreveu entrada no tip da branch em 2026-08-10 — virá junto com o merge; a B186 ainda não tem). Recomendação de processo (não automatizada): revisar o diff do CHANGELOG no rebase de cada branch que o toque — o mesmo processo que a intenção já registra.