Commit graph

2061 commits

Author SHA1 Message Date
Francisco Solla
5360280d39 docs(changelog): react-audit run 2026-08-25 — primeira varredura, 6 fixes, follow-ups #915/#916/#917 2026-08-25 13:13:41 -03:00
Francisco Solla
c917908cd4 react-audit(família 3): mirror props→state via effect no badge — CampaignNotificationBell.tsx:56 reaplicava prop stale sobre o setUnreadCount(0) do open; sync no render com guarda de open 2026-08-25 12:38:02 -03:00
Francisco Solla
26808b46ff react-audit(famílias 1/6): sortable heads eram client sem interatividade — ContactSortableHead.tsx:1, PeopleSortableHead.tsx:1, LeadershipSortableHead.tsx:1, StateDeputySortableHead.tsx:1 importavam *ListUrl por valor; como server components os serializadores de URL ficam fora do bundle (B14) 2026-08-25 12:34:48 -03:00
Francisco Solla
118ea028f3 react-audit(família 7): erro assíncrono do sync sem role=alert — GoogleCalendarSyncDialog.tsx:212,251 não anunciava falha de 'Sincronizar agora'/'Reativar' para leitores de tela 2026-08-25 12:31:31 -03:00
Francisco Solla
63cef265c2 react-audit(família 5): Media.ts sem hooks de revalidação — getCachedDocumentById('media') (documentReads.ts:43) nunca invalidava em edição/deleção no admin; afterChange+afterDelete espelham Post/Petition 2026-08-25 12:23:40 -03:00
Francisco Solla
43a3b21cf4 react-audit(família 2): view model mínimo cruza o fio RSC — PetitionForm.tsx:29 deixa de receber o doc Petition inteiro (richText/consent/tracking ficam no server) 2026-08-25 12:17:12 -03:00
Francisco Solla
03b96d6333 react-audit(família 4): C140 leftover — dispatch manual preserva texto digitado em erro de validação (ActivityUpdateForm.tsx:34, ActivityResultForm.tsx:60, DemandWorkflowCard.tsx:104, MunicipalityUpdateDeliberation.tsx:227) 2026-08-25 12:08:03 -03:00
Francisco Solla
4f5a5a838c docs(audit-pass6): format — prettier normalization of the three artifacts 2026-08-25 11:29:03 -03:00
Francisco Solla
5454ec42a0 docs(audit-pass6): ledger rows prettier-stable (emphasis chars in table code spans) 2026-08-25 11:29:03 -03:00
Francisco Solla
7611790b2d docs(audit-p6-m895): plan-issue intention must record literal decision data (miss #895) 2026-08-25 11:29:03 -03:00
Francisco Solla
cf9b30bfd6 fix(audit-p6-2): keep actor-options inline — exported options type tripped knip types gate 2026-08-25 11:29:03 -03:00
Francisco Solla
e562af76d8 feat(audit-p6-m909): deterministic disarm guard for /testing-audit (miss #909) 2026-08-25 11:29:03 -03:00
Francisco Solla
b7d0dba650 fix(audit-p6-2): perfil page uses requireCampaignPageActor; P3-I guard widened to getCampaignUser* variants 2026-08-25 11:29:03 -03:00
Francisco Solla
3fb1a141ba test(audit-p6-1): bypass ratchet — header comment no longer zeroes a file, P6-1 pins 2026-08-25 11:29:03 -03:00
Francisco Solla
de70ae7e1e docs(audit-pass6): -impl plans P6-1, P6-2, P6-M909, P6-M895 2026-08-25 11:29:03 -03:00
Francisco Solla
8a1aa20ce9 docs(audit-pass6): artefatos — seção Pass 6, ledger truth-up, plano de entrega 2026-08-25 11:29:03 -03:00
Francisco Solla
149cc3943a test(int): retry once — gate flaka sob contenção paralela de DB em high-core (C113/C115) 2026-08-25 08:52:07 -03:00
Francisco Solla
5742180268 docs(ops98): menções vivas (opt-out restrito audit/*), impl plan e changelog 2026-08-25 08:52:07 -03:00
Francisco Solla
8d4af384cf refactor(ops98): skill engineering-audit v2 — autônoma, sub-agentes, método verbatim em reference/ 2026-08-25 08:52:07 -03:00
Francisco Solla
b7ed186237 feat(ops98): veto audit/* no safety-net de auto-merge (PR único do audit fica sem automerge) 2026-08-25 08:52:07 -03:00
Francisco Solla
0cea0b7d8f fix(ops96): changelog append-only — desfecho vira entrada própria 2026-08-25 08:24:58 -03:00
Francisco Solla
a5c656dd92 docs(ops96): errata do desarme — skill corrige sequência (desarmar com CI pendente) + relatório registra o merge automático de #907 2026-08-25 08:24:58 -03:00
Francisco Solla
761da2f4e9 react-audit(família 1): 'use client' desnecessário em MunicipalityPriorityIndicator.tsx:1 2026-08-25 08:21:49 -03:00
Francisco Solla
c9d3ac76aa docs(OPS97): registro de débitos da triage no plano 2026-08-25 02:43:31 -03:00
Francisco Solla
d95f3f575b test(OPS97): parametro nao usado no fetchImpl do teste de convergencia 2026-08-25 02:43:31 -03:00
Francisco Solla
fca5a1c105 refactor(OPS97): fixes do /simplify — fail-closed em PR inexistente, errata do plano, token neutro na skill 2026-08-25 02:43:31 -03:00
Francisco Solla
eec6fd3d49 fix(OPS97): desarme do auto-merge via GraphQL disablePullRequestAutoMerge com laco verificado (licao do dogfood #905) 2026-08-25 02:43:31 -03:00
Francisco Solla
3cfbfeac0e changelog: OPS97 2026-08-25 02:43:31 -03:00
Francisco Solla
6bb3cfa540 feat(OPS97): disableAutoMerge no github-api + auto_merge normalizado (tests unit) 2026-08-25 02:43:31 -03:00
Francisco Solla
e1c4931d54 skill(OPS97): react-audit — ciclo fechado sweep→plan→implement→PR único sem auto-merge 2026-08-25 02:43:31 -03:00
Francisco Solla
41c94b2bdc docs(ops96): relatório da primeira auditoria noturna + changelog 2026-08-25 02:42:40 -03:00
Francisco Solla
a734bd7372 refactor(ops96): simplify — dedup ms/DEFAULT_TOP no core, exit fail-closed sem relatório, precisão no desarme e pins de fallback 2026-08-25 02:42:40 -03:00
Francisco Solla
c48851c427 test(ops96-audit): reforçar assertion de api.int.spec.ts + docblock sem família e2e removida 2026-08-25 02:42:40 -03:00
Francisco Solla
71635b8b3b test(ops96-audit): mover 8 specs de artefatos geográficos (readFileSync+hash, sem Payload/DB) de int para unit 2026-08-25 02:42:40 -03:00
Francisco Solla
1bc10f5cd4 test(ops96-audit): mover 4 specs puras com mock/stub de int para unit (formData, supporterListFilters, siteMetadataFallback, eslintConventions) 2026-08-25 02:42:40 -03:00
Francisco Solla
c2f0c44d15 test(ops96-audit): mover 4 specs puros de int para unit (relationship, schemaPrimitives, assertTestDatabase, petition-page-layout) 2026-08-25 02:42:40 -03:00
Francisco Solla
54fd059d9f feat(ops96): protocolo completo na SKILL.md + ignores do artefato coverage 2026-08-25 02:42:40 -03:00
Francisco Solla
c13174b8aa feat(ops96): motor de métricas baratas + @vitest/coverage-v8 atrás de flag 2026-08-25 02:42:40 -03:00
Francisco Solla
b271d83f6f feat(ops96): tracer — skill testing-audit + comando espelhado + guard de pin 2026-08-25 02:42:40 -03:00
Francisco Solla
6777aa86f8 docs(plans): OPS98 — engineering-audit v2 (autônoma, sub-agentes, PR único) 2026-08-25 00:23:13 -03:00
Francisco Solla
1b82dc45af docs: plano de intenção OPS97 — skill /react-audit 2026-08-25 00:17:58 -03:00
Francisco Solla
24ad75d8d6 plan(OPS96): PR final da noite vira ready (sem automerge) com CI green e mergeable 2026-08-25 00:14:22 -03:00
Francisco Solla
adf0dbaba9 fix(test): S9+ — harness ciente do guard de Consent (CI do #771)
- campaignSupporter: destaca voteIntentionConsent dos supporters antes de
  purgar o consent canônico de intenção de voto — o seed mínimo cria vínculos
  vivos nessa chave, e o delete passou a depender do SET NULL silencioso que
  o guard agora bloqueia (falha determinística em DB fresca de CI).
- campaignInvite: purga da chave lideranca-autopreenchimento na janela
  mutável passa a raw SQL (precedente Onda0/lease) — lifecycle de harness
  nunca deve passar pelo caminho admin/beforeDelete.
2026-08-25 00:13:47 -03:00
Francisco Solla
019cd456cc feat: S9+ (#771) — integridade de consentimento e alinhamento das ações públicas
- Consent.beforeDelete bloqueia delete com referências (APIError 409 composto
  por coleção), fim do 23502 cru no admin (contagens com overrideAccess).
- submitWhatsapp/submitPetitionSignature delegam o ciclo de transação ao dono
  withPayloadTransaction (rollback no commit-falho, AggregateError, after-commit),
  preservando os contratos { ok: true } / { ok: true, signatureNumber }.
- contactStateSchema exportado + contactCitySchema/contactCityFieldSchema
  consolidados; as 4 fichas usam os exports únicos (fim das cópias inline do
  predicate value in CitiesByState). withMutableConsentFixture purga consent
  via raw SQL para bypassar o hook no harness de teste.

Co-Authored-By: opencode <noreply@opencode.ai>
2026-08-25 00:13:47 -03:00
Francisco Solla
428b0e359a plan(OPS96): skill /testing-audit — auditoria autônoma da suíte de testes (intenção) 2026-08-25 00:07:37 -03:00
Francisco Solla
7259193060 S2-FOLLOWUP (#775) — validate do itemId YouTube deixa de ser código morto
O validate de itemId em social-feed-settings lia data.platform (doc inteiro,
sempre undefined) e nunca validava ID de vídeo em produção. Agora lê
siblingData.platform via helper validateExcludedItemId. Stub YouTube ganha
ids de 11 chars e o spec acompanha, destravando o e2e do describe
'Campaign home content section'. Sem migration.
2026-08-24 23:46:57 -03:00
Francisco Solla
d840975eae style: prettier no plano e changelog da C115-F1 2026-08-24 23:34:56 -03:00
Francisco Solla
a658a1025f fix(campaign): C115-F1 — snapshot de eventos do motor Google Calendar com compare-and-swap (Closes #694)
- recordLastSeenSnapshot: update condicional (id + updatedAt) em vez de
  last-writer-wins; miss descarta a visão contaminada (never-throw)
- token CAS capturado no topo de runSyncPass: mesmo doc alimenta as
  decisões D2-D4 e o guard da escrita (fecha a janela basis-vs-token)
- teste int de corrida determinístico (promise gates): passada obsoleta
  não ressuscita remoção permanente (RED confirmado antes do guard)
- convenção de hermeticidade da janela documentada no header da spec
2026-08-24 23:34:56 -03:00
Francisco Solla
d679708c06 fix(worktree): OPS95 — corrige mapa de modelos e remove --variant do launch do TUI (Closes #876) 2026-08-24 23:04:39 -03:00
Francisco Solla
d48914858a fix(campaignInvite): C121 — unifica chave de lock da redenção com contact-ficha (Closes #885) 2026-08-24 22:51:15 -03:00