Francisco Solla
71cdd57cf5
test(ops96-audit): mover payloadTransaction int→unit — stub puro de wrapper de transação, sem Payload/DB
2026-08-25 17:09:43 -03:00
Francisco Solla
8199e2ee24
docs(changelog): react-audit run 2026-08-25 — primeira varredura, 6 fixes, follow-ups #915/#916/#917
2026-08-25 13:40:32 -03:00
Francisco Solla
e9441e3ff8
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 13:40:32 -03:00
Francisco Solla
7a450bc814
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 13:40:32 -03:00
Francisco Solla
52ffbcd254
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 13:40:32 -03:00
Francisco Solla
d2aa70f0c5
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 13:40:32 -03:00
Francisco Solla
34c04d6966
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 13:40:32 -03:00
Francisco Solla
e273e9ecfa
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 13:40:32 -03:00
Francisco Solla
101cd5d791
C146 (plano): corrigir guarda de mesma-origem do CSRF em /campanha atras do tunel
...
Related #913
2026-08-25 13:08:46 -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