OPS71-FLIP — Flip pós-merge falhou/silencioso no fluxo GitHub — validar e endurecer issue-done-on-main-merge #119
Loading…
Reference in a new issue
No description provided.
Delete branch "%!s()"
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?
Validação ao vivo (2026-08-20, merge do PR #746)
O item
fora de escopoda #111 ('validar o flip automático pós-merge com Closes') falhou em dois pontos:issue-done-on-main-merge.ymlfalhou —FORGEJO_API_URL: https://git.solla.dev/api/v1(explicita) respondeu 410 Gone (nginx) paraGET /repos/fsolla/teqo/issues/97/labels. Transitório: o endpoint público responde 200 agora (testado 00:3x). A #97 recebeu flip manual (labels) às 23:39 mas ficou aberta.02c1e4f) e o eventoclosedestá no timeline do PR, mas nenhum run foi criado paraissue-done-on-main-merge.ymlnemplan-issue-ready-on-main-merge.yml(0 runs com head 3ac1e243; último run do workflow = 22:18). Flip feito manualmente (script local +PR_BODY).Ações sugeridas
closeddo PR #746 não criou run (entrega de evento do GitHub;types: [closed]não é filtrado por condição — o run nem foi criado, não foi skip).workflow_dispatchaoissue-done-on-main-merge.ymlcomo caminho de recuperação manual (hoje não existe trigger manual).forgejo-issue-transition.mjsnão fecha a Issue (só flipa labels + comenta): na era Forgejo o close era nativo no merge do PR; com PR no GitHub, o script precisaPATCH state=closed— senão toda Issue mergeada fica aberta com done+in-prod.Claimed by agent run at 2026-08-20T00:46:24.952Z. Lock otimista: outro claim deve falhar e re-rodar
pnpm agent:claim.PR #750 (GitHub) pronto — Closes #119
Investigação concluída (root cause): o
closeddo PR #746 não criou run porque o auto-merge armado com oGITHUB_TOKENnativo mergea comogithub-actions[bot]— a anti-recursão do GitHub nunca cria runs para eventos acionados por ações doGITHUB_TOKEN(evidência: timeline do #746merged/closedpor bot + 0 runs de qualquer tipo; contraste com o #742, mergeado porfsolla, cujos runs nasceram 3s após o merge). O 410 do run do #742 é falha separada e transitória do nginx do Forgejo.Endurecimento entregue:
AUTOMERGE_PAT(PAT real) — fail-closed: sem ele o jobagent-pr-ready-automergesai vermelho (validado ao vivo no run 32320488418 deste PR), nunca fallback silencioso pro bot token. Com o PAT, o merge é atribuído a usuário real e oclosedvolta a gerar runs.workflow_dispatchcom inputprnos dois flips (issue-done,plan-issue-ready) — mesmo contrato do evento (merged + main + same-repo, senão skip), body viagh.PATCH state=closed— antes, toda Issue mergeada ficavaOPENcomdone+in-prod.forgejo-api.mjsem qualquer método (proxy respondeu antes da origem — sem efeito duplicado) + marker compacto do corpo nginx no erro.Ação humana necessária (antes do merge do PR #750): criar o secret
AUTOMERGE_PATno repo GitHub (Settings → Secrets): PAT do fsolla com escopospull-requests: write+contents: writeno repofsolla/teqo. Sem ele, o auto-merge não arma (fail-closed intencional); o CI do PR continua verde e o merge pode ser manual.Impl:
docs/plans/ops71-flip-pos-merge-falhou-silencioso-impl.md· changelog:docs/changelog/2026-08-20-ops71-flip.mdMerged em main via PR #750 —
done+in-prod+ Issue fechada. Deploy de produção é manual (workflow_dispatch no GitHub Actions) — ver docs/AGENT-OPS.md.