chore(ops OPS57): forgejo-pr-automerge — alargar gatilho para todas as PRs same-repo (draft não-cursor/* = veto) #48
Loading…
Reference in a new issue
No description provided.
Delete branch "OPS57-guard-forgejo-pr-automerge-alargar-gatilho-do-workflow"
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 #44
OPS57-guard — forgejo-pr-automerge: alargar gatilho do workflow para branches não-cursor/*
Motivação (débito deferido na OPS56): dos 25 PRs mergeados no repo, zero eram
cursor/*— 9 deplans/*, 11 de worktrees humanos (OPS*/S1/PUB5), 5 derefs/pull/N/head(era da migração). O filtrocursor/*atual nunca cobriu nenhum PR real — o safety net nunca disparou, e o incidente OPS52 (PR #27, humana, merge falhou silenciosamente) era exatamente a classe excluída.Mudanças:
agent-pr-ready-automerge.yml:if:do job →state == 'open' && head.repo.full_name == github.repository(guarda de fork — o repo é público; uma PR de fork mergeada dispararia o deploy de prod em main). Campos já usados no payload, sem dependência deis_draftdo webhook.forgejo-pr-automerge.mjs: política de draft movida para o CLI, com o head ref do re-read da API — draftcursor/*→ Ready (pool inalterado); draft não-cursor/*→ skip exit 0 (draft = veto do ator, PR humana nunca é forçada).cursor/*(humanas/plans) passam a mergear com CI verde — redundante no caminho feliz (o fluxo humano já arma--auto --rebase) e é o que pega a classe OPS52;ready_for_reviewem PR draft re-dispara o job e mergea.docs/AGENT-OPS.md(tabela CI por alvo),.agents/rules/agent-pr-workflow.mdc(seção Safety net).Decisão de ops da Issue (efeito no auto-merge de PRs humanas): toda PR humana já nasce Ready +
--autoarmado pelo fluxo; o alargamento só adiciona redundância no caminho feliz. O humano que quiser vetar mantém a PR em draft — o workflow não toca draft não-cursor/*.Rejeitados:
!is_draftno YAML (nome de campo do payload do webhook não verificado no Forgejo, falha fail-open — forçaria ready+merge de draft humano) e allowlist de prefixos (códigos humanos sem prefixo comum — OPS/S1/PUB5).Verificação: gate:fast (lint/typecheck/2318 unit) + format:check/knip/check:cycles verdes; gate:ci mirror passou no push (scope classifier: code/test/build/e2e = none — diff só workflow/docs/scripts; CI roda docs-guards + plans-only-closes). A própria PR desta entrega ainda usa o workflow de
main(antigo); a próxima PR exercita o gatilho alargado — validação no mundo real.Impl plan:
docs/plans/ops57-forgejo-pr-automerge-alargar-gatilho-impl.md· changelog:docs/changelog/2026-08-18-ops57.md