teqo-backup/docs/CUTOVER-MAIN-ONLY.md
Francisco Solla ac11afecf3 ops(OPS61): flip de issues pós-merge com PAT + gate do rollup checks + branch protection real no Forgejo
- issue-done/plan-issue-ready: env FORGEJO_API_TOKEN (GITHUB_TOKEN 403 em
  Issues) + fork guard (checkout de fork roda script do fork com o PAT — RCE)
- forgejo-issue-transition: falha de flip vira exit 1 (job vermelho, nunca
  skip silencioso)
- waitForChecks: exige o rollup CI (PR) / checks presente+verde (raça PR #52:
  snapshot com jobs não-agendados parecia verde); mergeable=false só conta
  como conflito após a cascata assentar; timeouts 30→45min (CLI) e 40→55min
  (workflow)
- configure-branch-protection: contexto real CI (PR) / checks* (Forgejo casa
  por glob contra 'CI (PR) / checks (pull_request)'; literal 'checks' nunca
  casaria), idempotente GET→POST/PATCH, verificação pós-aplicação; decisão
  pura em scripts/lib/branch-protection.mjs
- docs honestas (AGENT-OPS, agent-pr-workflow.mdc, CUTOVER-MAIN-ONLY, README)
- testes: raça do rollup/rollup failure/mergeable pré-settle +
  branchProtection create/update/noop + glob real
2026-08-18 17:45:54 -03:00

1.6 KiB

Cutover checklist (main-only + gated deploy) — done

Completed 2026-08-01. Branch stage and GitHub Environment stage are deleted. Production deploys only from ci.yml after the full verifier is green.

  • Code PR opened (main-only cutover) — merged to main
  • pnpm configure:branch-protection applied on main (required: checks (+ migration-lock until 2026-08-12), strict=false, 0 reviews) — GitHub-era; reaplicado no Forgejo em 2026-08-18 (OPS61) com o contexto real CI (PR) / checks (glob CI (PR) / checks*)
  • No open PRs targeting stage at cutover time
  • Repo secrets present (VERCEL_*, POOL_GITHUB_TOKEN)
  • VERCEL_ORG_ID / VERCEL_PROJECT_ID synced from local .vercel/project.json (vercel link)
  • ci.yml deploy job green (vercel@55, Node 24.x, alias https://pt.jorgesolla.com.br)
  • Git auto-deploy OFF (vercel.json git.deploymentEnabled: false + ignore script) — correct for Actions-gated deploys
  • Auto-assign Custom Production Domains ON (Project → Settings → Environments → Production → Branch Tracking). Turning this OFF stages CLI --prod deploys without moving pt.jorgesolla.com.br; CI re-enables it.
  • Domain Git Branch empty for pt.jorgesolla.com.br (Settings → Domains). A branch binding only moves with Git Integration; with Git OFF, CI clears it then promote + alias set. Emergency: Actions → "Vercel promote production".
  • Branch stage deleted
  • GitHub Environment stage (and STAGE_* secrets) deleted
  • Dead stage tooling removed (db:refresh:stage, agent:promote)

Operational reference: AGENT-OPS.md.