chore(OPS60): guard SEED_MEDIA_CONFIRM para escrita no bucket via db:seed:posts #66
Loading…
Reference in a new issue
No description provided.
Delete branch "OPS60-ops60-guard-de-intencao-explicita-para-escrita-no-buck"
Deleting a branch is permanent. Although the deleted branch may continue to exist for a short time before it actually gets removed, it CANNOT be undone in most cases. Continue?
Closes #49
OPS60 — Guard de intenção explícita para escrita no bucket via
db:seed:postsAchado do /simplify da #37 (OPS52-media-guard): o sync do
pnpm db:seed:postsescreve covers no bucket S3 das envsS3_*(Garage) sem flag de intenção — um worktree com a cópia all-or-nothing de credenciais de prod (worktree-env.mjs) rodando o seed contra DB local sobrescreve o key determinístico no bucket de prod silenciosamente.Mudança
scripts/seed-posts.mjs: com asS3_*ativas (resolveS3StorageEnv(process.env).enabled), o modo sync exigeSEED_MEDIA_CONFIRM=1(semântica exatatrue|1viaisTruthyEnv, paridade #37) e recusa com exit 1 antes deassertLocalDatabase/getPayload(zero DB, zero rede).--dry-runsegue sem flag (não escreve). Echo do alvo ganhouBucket/Endpointquando S3 ativo (paridademedia:recover).local-database(nota do guard + correção do drift Vercel Blob), changelog2026-08-18-ops60.md.isTruthyEnv(já existente da #37) +resolveS3StorageEnv— sem twin.Validação (fase 1 do impl plan, DB local do worktree)
S3_*fake → exit 1 com a mensagem, zero posts/tags/media criados (contagem antes/depois).--dry-runcomS3_*fake → segue plan-only com exit 0 (echo com Bucket/Endpoint).S3_*→ comportamento dev atual inalterado.Impl plan:
docs/plans/ops60-seed-posts-guard-escrita-s3-impl.md(Status: aprovado, gate humano).