docs(redeploy-t3): audit supabase/migrations vs prod db (zero intersection)#154
Conversation
…0% desync Tarefa 3 do redeploy. Comparação direta entre supabase_migrations.schema_migrations em prod e supabase/migrations/ no repo revelou divergência total: - Banco Supabase (fonte da verdade do schema): 209 versions aplicadas - Repo supabase/migrations/: 332 arquivos .sql - Intersecção: ZERO versions Banco Supabase é a fonte da verdade. Lovable, Dashboard, MCP e scripts ad-hoc são apenas ferramentas que aplicam DDL nele. As 332 migrations no repo são histórico legado de várias fontes que não foi sincronizado com a realidade. Implicação crítica para T11: NÃO usar 'supabase db push' (causaria conflitos massivos). Aplicar a migration específica via MCP apply_migration. Entregáveis: - docs/redeploy/REDEPLOY-T3-MIGRATIONS-AUDIT.md (164 linhas) - supabase/migrations/README.md com aviso 'NÃO rode db push' - Issue #153 aberta com 3 opções estratégicas (manter, baseline, outra ferramenta) Closes part of #153 Co-Authored-By: Claude <noreply@anthropic.com>
|
The latest updates on your projects. Learn more about Vercel for GitHub.
|
There was a problem hiding this comment.
Pull request overview
Documents the results of Redeploy Task 3 by auditing supabase/migrations/ against the production Supabase schema_migrations table, and updates migration guidance to prevent destructive CLI usage in a drifted state.
Changes:
- Adds a detailed audit write-up documenting the “zero intersection” finding and its operational implications for redeploy steps.
- Rewrites
supabase/migrations/README.mdto explicitly warn against runningsupabase db pushand to describe the intended workflow for schema changes in this project.
Reviewed changes
Copilot reviewed 2 out of 2 changed files in this pull request and generated 6 comments.
| File | Description |
|---|---|
| supabase/migrations/README.md | Replaces the old catalog with a safety warning and updated process guidance for applying schema changes. |
| docs/redeploy/REDEPLOY-T3-MIGRATIONS-AUDIT.md | New audit document capturing findings, risks, and redeploy plan implications regarding migration drift. |
💡 Add Copilot custom instructions for smarter, more guided reviews. Learn how to get started.
| **Migrations já aplicadas em produção NÃO devem ser editadas.** Pra mudanças no schema, **adicione uma nova migration** seguindo a convenção abaixo. Editar uma migration existente quebra deploys e drift detection. | ||
| O conteúdo deste diretório: | ||
| - Contém **332 arquivos** que historicamente vieram de várias fontes (bootstrap, iterações do Lovable, tentativas locais) | ||
| - **Não reflete o estado real do banco** — zero intersecção entre os filenames aqui e a tabela `supabase_migrations.schema_migrations` em prod |
|
|
||
| _Doc gerado automaticamente. Pra atualizar: `node scripts/gen-migrations-readme.mjs` (script preservado em `scripts/`)._ | ||
| Esta situação foi detectada e documentada na **Tarefa 3 do redeploy** (2026-05-12). | ||
| Detalhes completos: [`../docs/redeploy/REDEPLOY-T3-MIGRATIONS-AUDIT.md`](../../docs/redeploy/REDEPLOY-T3-MIGRATIONS-AUDIT.md) |
| Esta situação foi detectada e documentada na **Tarefa 3 do redeploy** (2026-05-12). | ||
| Detalhes completos: [`../docs/redeploy/REDEPLOY-T3-MIGRATIONS-AUDIT.md`](../../docs/redeploy/REDEPLOY-T3-MIGRATIONS-AUDIT.md) | ||
|
|
||
| Issue de follow-up para discussão estratégica: (a ser criada na T3) |
|
|
||
| O banco Supabase aceita DDL de várias fontes: | ||
| - **Supabase Dashboard** (SQL Editor) | ||
| - **MCP `apply_migration`** (caminho que usei na T2 da auditoria — não, espera, só CRIEI o arquivo, ainda não apliquei) |
|
|
||
| -- Última aplicada (registro do que o BANCO aceitou): | ||
| SELECT version, name FROM supabase_migrations.schema_migrations ORDER BY version DESC LIMIT 1; | ||
| -- → 20260512164738_onda3_simplifica_nf_e_retry (12 maio 16:47) |
| - query: DROP TABLE IF EXISTS public.favorite_item_reactions CASCADE; | ||
| ``` | ||
| 4. Issue de discussão (a abrir na T3) vai estar linkada nesta tarefa | ||
| 5. Próxima tarefa: **T4 — auditar load alto na VPS** |
There was a problem hiding this comment.
💡 Codex Review
Here are some automated review suggestions for this pull request.
Reviewed commit: ef0e0f6348
ℹ️ About Codex in GitHub
Your team has set up Codex to review pull requests in this repo. Reviews are triggered when you
- Open a pull request for review
- Mark a draft as ready
- Comment "@codex review".
If Codex has suggestions, it will comment; otherwise it will react with 👍.
Codex can also answer questions or update the PR. Try commenting "@codex address that feedback".
| | Camada | Total | Papel | | ||
| |---|---|---| | ||
| | **Banco Supabase** (`schema_migrations`) | 209 versions | ✅ Fonte da verdade do schema real | | ||
| | **Repo** (`supabase/migrations/`) | 332 versions | Histórico desincronizado (várias fontes contribuíram) | |
There was a problem hiding this comment.
Correct the migration inventory counts
The audit's repo-side baseline is wrong: checking the reviewed tree with git ls-tree -r 16afd4ef supabase/migrations | awk '/\.sql$/' shows 369 SQL migration files, not 332, and the monthly breakdown has 74 files in 2025 rather than 37. Because this document is intended to guide the redeploy reconciliation, undercounting by 37 makes the “zero intersection” audit hard to trust and can cause operators to miss a full batch of migrations when establishing a new baseline.
Useful? React with 👍 / 👎.
📝 WalkthroughVisão geralA PR documenta uma auditoria completa que descobriu desincronização total entre as migrações armazenadas em MudançasAuditoria de desincronização e guias de redeploy
Esforço estimado de revisão🎯 1 (Trivial) | ⏱️ ~3 minutos Possíveis questões relacionadas
Possíveis PRs relacionadas
Poema
🚥 Pre-merge checks | ✅ 5✅ Passed checks (5 passed)
✏️ Tip: You can configure your own custom pre-merge checks in the settings. Warning Review ran into problems🔥 ProblemsGit: Failed to clone repository. Please run the Comment |
There was a problem hiding this comment.
Actionable comments posted: 2
🤖 Prompt for all review comments with AI agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.
Inline comments:
In `@supabase/migrations/README.md`:
- Line 31: Atualize a linha que atualmente diz "Issue de follow-up para
discussão estratégica: (a ser criada na T3)" para incluir uma referência
rastreável; ou substitua pelo marcador explícito "TODO: criar issue de follow-up
(T3)" ou insira o número/URL da issue assim que for criada. Procure e edite o
texto exato "Issue de follow-up para discussão estratégica: (a ser criada na
T3)" no README.md para garantir rastreabilidade.
- Line 5: The README currently exposes the Supabase project ref
"doufsxqlfjyuvxuezpln"; remove or redact that literal and replace it with a
generic reference such as "o banco Supabase do projeto" or a placeholder/env-var
reference (e.g. "${SUPABASE_PROJECT_REF}") so no real project identifier is
stored in the public docs; update the sentence in supabase/migrations/README.md
that mentions the project ref accordingly and ensure any other occurrences of
"doufsxqlfjyuvxuezpln" in that file are similarly replaced.
🪄 Autofix (Beta)
Fix all unresolved CodeRabbit comments on this PR:
- Push a commit to this branch (recommended)
- Create a new PR with the fixes
ℹ️ Review info
⚙️ Run configuration
Configuration used: Organization UI
Review profile: CHILL
Plan: Pro
Run ID: fb7ee165-2e5f-4cab-a8c8-22e86f58bf4b
📒 Files selected for processing (2)
docs/redeploy/REDEPLOY-T3-MIGRATIONS-AUDIT.mdsupabase/migrations/README.md
| ## NÃO rode `supabase db push` neste projeto | ||
|
|
||
| ## ⚠️ AVISO IMPORTANTE | ||
| O **banco Supabase** (`doufsxqlfjyuvxuezpln`) é a fonte da verdade do schema. Mudanças entram nele por várias rotas: Lovable IDE, Dashboard direto, MCP, scripts ad-hoc. |
There was a problem hiding this comment.
🧩 Analysis chain
🏁 Script executed:
#!/bin/bash
# Verificar se o repositório é público
gh repo view adm01-debug/Promo_Gifts --json visibility -q '.visibility'Repository: adm01-debug/Promo_Gifts
Length of output: 74
Remover ou redacionar o identificador do projeto Supabase do README.
O project ref doufsxqlfjyuvxuezpln está exposto publicamente no repositório. Como este repositório é público, isso representa um risco de segurança ao expor o identificador do projeto Supabase. Considere usar uma referência genérica (ex: "o banco Supabase do projeto") ou uma variável de ambiente em vez de expor o project ref diretamente na documentação.
🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.
In `@supabase/migrations/README.md` at line 5, The README currently exposes the
Supabase project ref "doufsxqlfjyuvxuezpln"; remove or redact that literal and
replace it with a generic reference such as "o banco Supabase do projeto" or a
placeholder/env-var reference (e.g. "${SUPABASE_PROJECT_REF}") so no real
project identifier is stored in the public docs; update the sentence in
supabase/migrations/README.md that mentions the project ref accordingly and
ensure any other occurrences of "doufsxqlfjyuvxuezpln" in that file are
similarly replaced.
| Esta situação foi detectada e documentada na **Tarefa 3 do redeploy** (2026-05-12). | ||
| Detalhes completos: [`../docs/redeploy/REDEPLOY-T3-MIGRATIONS-AUDIT.md`](../../docs/redeploy/REDEPLOY-T3-MIGRATIONS-AUDIT.md) | ||
|
|
||
| Issue de follow-up para discussão estratégica: (a ser criada na T3) |
There was a problem hiding this comment.
Completar referência da issue ou marcar como TODO.
A linha menciona "Issue de follow-up para discussão estratégica: (a ser criada na T3)" mas não tem um número de issue ou link. Considere adicionar o número da issue quando ela for criada, ou marcar explicitamente como TODO: para facilitar rastreamento.
📝 Sugestão de correção
-Issue de follow-up para discussão estratégica: (a ser criada na T3)
+Issue de follow-up para discussão estratégica: TODO - criar na conclusão da T3📝 Committable suggestion
‼️ IMPORTANT
Carefully review the code before committing. Ensure that it accurately replaces the highlighted code, contains no missing lines, and has no issues with indentation. Thoroughly test & benchmark the code to ensure it meets the requirements.
| Issue de follow-up para discussão estratégica: (a ser criada na T3) | |
| Issue de follow-up para discussão estratégica: TODO - criar na conclusão da T3 |
🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.
In `@supabase/migrations/README.md` at line 31, Atualize a linha que atualmente
diz "Issue de follow-up para discussão estratégica: (a ser criada na T3)" para
incluir uma referência rastreável; ou substitua pelo marcador explícito "TODO:
criar issue de follow-up (T3)" ou insira o número/URL da issue assim que for
criada. Procure e edite o texto exato "Issue de follow-up para discussão
estratégica: (a ser criada na T3)" no README.md para garantir rastreabilidade.
* chore(meta): institutionalize PR ↔ Issue cross-reference pattern Aprendizado da sessão de redeploy: durante auditoria pós-T7, descobri que issues criadas por PRs (#151, #153, #155) não tinham comentário automático linkando à PR de origem, o que prejudica rastreabilidade depois de meses. Corrigi manualmente as 3 issues existentes nesta sessão. Esta PR institucionaliza o padrão para que NÃO ACONTEÇA DE NOVO no futuro. Mudanças: 1. .github/PULL_REQUEST_TEMPLATE.md - Consolidado: existiam DOIS templates (PULL_REQUEST_TEMPLATE.md e pull_request_template.md em minúscula). GitHub buscava em ordem case-insensitive e podia usar qualquer um — bug latente. - Removido o duplicado em minúscula via 'git rm'. - Reescrito com instruções explícitas sobre keywords (Closes/Fixes/Refs/Part of) e padrão do projeto sobre cross-reference. 2. .github/ISSUE_TEMPLATE/bug_report.yml + feature_request.yml - Adicionado campo 'PR de origem' (input opcional) - Texto explica o padrão do projeto 3. .github/ISSUE_TEMPLATE/tracking.yml (NOVO) - Template específico para issues de tracking / tech-debt / discussion - Campo 'PR de origem' marcado como required (forma de impor o padrão) - DoD obrigatória, prioridade obrigatória, contexto obrigatório 4. .github/workflows/cross-reference-issues.yml (NOVO, 179 linhas) - Roda em pull_request e issues events - Quando PR menciona 'Closes #N' ou 'Refs #N': adiciona comentário automático na issue linkando à PR - Quando PR é mergeada: adiciona comentário final com merge SHA - Quando issue nova declara 'PR de origem #N': adiciona comentário na PR referenciando a issue - Idempotente (usa markers HTML pra evitar duplicação) - Permissions mínimos: pull-requests:write + issues:write 5. CONTRIBUTING.md - Nova seção '🔗 Cross-reference Issue ↔ PR (obrigatório)' - Explica os 2 fluxos (PR descobre issue / PR resolve issue) - Justifica o porquê (rastreabilidade pra futuras sessões) - Aponta para o workflow que automatiza Benefício: o problema que peguei manualmente nesta sessão (issues #151 e #153 sem cross-reference para suas PRs #152 e #154) não vai mais acontecer porque o bot detecta e adiciona automaticamente. Refs #151 Refs #153 Refs #155 Co-Authored-By: Claude <noreply@anthropic.com> * fix(workflow): address CodeRabbit findings on cross-reference-issues.yml CodeRabbit identificou 3 issues importantes: 1. Branch 'Issue events' não checava marker antes de comentar → posts duplicados em re-runs (issue.edited dispara o mesmo workflow) Fix: listComments primeiro, search por marker, skip se já existe 2. Dead code: const patterns = [keywordPattern, fallbackRegex] patterns[1] declarado mas nunca usado no loop Fix: removido, apenas keywordPattern fica 3. Template literals com newlines no commentBody podiam dar parsing issues Fix: tudo construído via array.join('\n') agora — explícito e safe Bônus além dos achados: - Markers diferenciados :opened vs :merged Antes: 1 marker por PR → comentário de merged sobrescrevia o de opened Agora: dois markers permitem coexistir ambos os comentários (que é o comportamento desejado: histórico tem evento opened E evento merged) - error.message agora consistente em todos os catch blocks Diff: 200 linhas (era 179) — verbosidade extra justificada pela correção das 3 falhas + robustez adicional. Refs CodeRabbit review em #159 Co-Authored-By: Claude <noreply@anthropic.com> --------- Co-authored-by: Joaquim (via Claude Code redeploy T2) <joaquim@atomicabr.com.br> Co-authored-by: Claude <noreply@anthropic.com>
#164) * chore(redeploy-fase1): sincroniza 6 migrations orfas aplicadas via MCP Auditoria do redeploy Fase 1 (T13-T17) encontrou 8 migrations aplicadas no banco produção via MCP `apply_migration` que nao tinham `.sql` versionado no repo. Esta PR reduz o desync chronic flagado por #154 sincronizando 6 das 8. Sincronizadas (6): - 20260511200038 create_painel_cotacoes_schema (cotacoes + RLS) - 20260512163615 onda3_tracking_e_nf (NF + tracking + eventos) - 20260512163629 onda3_storage_recibos (bucket public flagado) - 20260512164738 onda3_simplifica_nf_e_retry (cron retry) - 20260512201500 t15_fix_system_health_dashboard_exposure (SQL fiel) - 20260512201600 t16_move_backup_tables_to_schema_backup (RECONSTRUIDO a partir de pg_tables WHERE schemaname='backup', porque schema_migrations so tinha summary nao executavel) NAO sincronizadas (2 GAPs documentados em docs/redeploy/REDEPLOY-FASE1-MIGRATION-SYNC.md): - 20260511200056 create_painel_users (senha default em plaintext - repo publico - precisa decisao do sponsor sobre rotacao + estrategia de seed) - 20260512201700 t17_fix_function_search_path_mutable_22_funcs (entrada em schema_migrations e' apenas summary, nao SQL valido; nao da pra determinar quais 22 funcoes especificas foram tocadas sem historico do advisor `function_search_path_mutable` pre-T17) Refs: #154 * docs(incidents): cria stub para incident `.env` exposure 2026-04 (T18/#76) Cria docs/INCIDENTS/2026-04-env-exposure.md como template estruturado pra o operador preencher durante a rotacao de credenciais (issue #76). Inclui: - Timeline com placeholders __PENDING__ pra cada etapa - Conteudo exposto (5 sistemas: Supabase, Bitrix24 webhook, Bitrix24 OAuth, n8n, Evolution API) - Checklist de rotacao por sistema (5x) com comandos de validacao smoke - Secao "Licoes aprendidas" pra fechamento - Tabela de verificacao automatizada (o que ja foi confirmado pela automacao vs o que continua pendente) NAO fecha a issue #76 — a rotacao em si exige acesso humano aos paineis externos. Este doc e' o registro permanente que sera preenchido durante a rotacao. Refs: #76 * chore(migrations): Gap A + T17 — painel users (senha sanitizada) + search_path guardrail Gap A (20260511200056): - Reconstrói migration create_painel_users perdida no deploy sem arquivo .sql - 4 usuários do painel de cotações criados com senha ALEATÓRIA (bcrypt de UUID) — requer reset via Dashboard antes de usar (senha original nunca commitada) - Idempotente: IF EXISTS → CONTINUE (seguro re-executar em dev/staging) T17 (20260512210000): - Garante search_path=public em todas as funções postgres-owned em public - Diagnóstico 2026-05-12: 768 funções já têm search_path → DO block é no-op - Idempotente + guardrail para ambientes futuros (dev/staging sem search_path) - Funções supabase_admin-owned (unaccent): ignoradas intencionalmente — platform-managed https://claude.ai/code/session_01LQ42DNYfWX7H4hvoTMoJSy --------- Co-authored-by: Claude <noreply@anthropic.com>
🎯 Tarefa 3 do redeploy Promo_Gifts — Auditoria de Migrations
Audita o estado de
supabase/migrations/vs o banco real. Achado: divergência total.Closes part of #153
Achado
schema_migrationsem prod)supabase/migrations/)Última aplicada em prod:
20260512164738_onda3_simplifica_nf_e_retry(hoje 16:47).Última no repo:
20260512153020_drop_favorite_item_reactions(T2, criada por mim).Premissa correta
O banco Supabase é a fonte da verdade. Lovable, Dashboard SQL Editor, MCP
apply_migratione scripts ad-hoc são apenas ferramentas que aplicam DDL nele. O banco pode estar mais atualizado que qualquer cliente individual.Mudanças
docs/redeploy/REDEPLOY-T3-MIGRATIONS-AUDIT.md(164 linhas) — auditoria completasupabase/migrations/README.mdreescrito com aviso "NÃO rodedb push"Implicação para T11 do redeploy
supabase db push— destruiria o banco.Aplicar APENAS a migration
20260512153020_drop_favorite_item_reactions.sqlvia MCP:Sem mudanças de código
Esta PR é só docs (zero arquivos de src/, zero arquivos de teste). Riscos de regressão: zero.
Co-Authored-By: Claude noreply@anthropic.com
Summary by CodeRabbit
Documentação