Skip to content

[P2][chore][ci] PRs do agente de nuvem do Cursor nascem bloqueadas: commit assinado com chave desconhecida (unknown_key) #2009

Open

Description

@FabioLeitao

Sintoma

PRs abertas pelo agente de nuvem do Cursor (app/cursor) nascem com o commit assinado por uma chave que
o GitHub não reconhece. O ruleset do main exige required_signatures, então a PR fica BLOCKED até o
operador re-assinar o commit à mão e dar force-push.

Evidência (via gh api, 2026-09-28)

Item Valor
PR #2008 (branch cursor/technical-documentation-maintenance-36a8)
Commit original 72f19a78 → verified=false, reason=unknown_key (committer FabioLeitão, 2026-09-28T16:07Z)
Depois da re-assinatura manual 47a7b9ef → verified=true, reason=valid (force-push do operador)
Efeito colateral o force-push reinicia o CI inteiro (27 checks no #2008)

Não é regressão nova, é trabalho repetido. As 5 PRs anteriores do app/cursor tiveram pelo menos 1
head_ref_force_pushed cada: #1716 (5), #1764, #1847, #1924, #1955 (1 cada). Todas terminaram com head
verified=true. Isso é consistente com re-assinatura manual em todas. Só confirmei o caso do #2008; nas
outras, é inferência a partir do timeline.

Mesma classe de problema (já resolvida pra outros bots)

Opções (decisão do operador, não minha)

  1. Manter a re-assinatura manual como gate deliberado e documentar o procedimento (recomendado).

    • A assinatura do operador no head é a atestação humana de que ele leu o que o agente fez.
    • Esse é o sentido do required_signatures num repo de mantenedor solo.
    • Hoje o passo existe, mas só na cabeça do operador.
    • Custo: um runbook curto em docs/ops/ com o passo-a-passo:
      • git worktree add isolado;
      • git commit --amend --no-edit -S para 1 commit, ou git rebase --exec 'git commit --amend --no-edit -S' origin/main para vários;
      • git push --force-with-lease;
      • remover o worktree.
    • Opcional: um script wrapper que só executa esse passo declarado.
  2. Registrar a chave do agente de nuvem como signing key na conta do operador.

    • Resolve o bloqueio.
    • Mas o "Verified" passa a significar "o operador ou o agente" sob a mesma identidade.
    • O selo de assinatura deixa de distinguir autoria humana de autoria de agente.
    • Não recomendo, pelo mesmo motivo que o ruleset existe.
  3. Identidade própria de bot pro agente: conta ou app separado, com chave registrada nele.

Critério de aceite (se a opção 1 for escolhida)

  • Runbook em docs/ops/ descrevendo a re-assinatura de PR do agente de nuvem, com o porquê: atestação humana, não burocracia.
  • Link do runbook a partir do doc de branch protection/rulesets existente (confirmar o caminho com git grep -n required_signatures docs/).
  • Nenhuma alteração no ruleset.

Refs #2008

Activity

  1. self-assigned this
    on Sep 29, 2026
  2. added
    P2Medium — important, next sprint
    ciCI/CD pipeline, build matrix, release automation
    on Sep 29, 2026
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

Labels

P2Medium — important, next sprintciCI/CD pipeline, build matrix, release automation

Type

No type

Projects

No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions