Skip to content

Check formatting in CI #35

Closed
Closed

Description

@MendesMat

Contexto

O AGENTS.md exige "formatting check clean" para uma issue estar pronta, mas só o check.ps1, na máquina de quem desenvolve, confere a formatação (decisão 29). Esta issue leva a conferência para o CI. Por decisão do dono em 2026-10-07, o mesmo pull request remove um padrão morto do Dependabot e escreve como regra a ordem executar → revisar → merge, porque o PR #40 foi mesclado antes da revisão.

Escopo

  • Mudança em .github/ (autorizada): em .github/workflows/ci.yml, no trabalho Build and test, o passo Check formatting entre Restore e Build, com dotnet format ${{ env.SOLUTION }} --verify-no-changes --no-restore. Nenhum trabalho novo; a regra Protect main não muda.
  • Mudança em .github/ (autorizada): em .github/dependabot.yml, linha 12, remover "CommunityToolkit.Aspire.*" do grupo aspire, que fica patterns: ["Aspire.*"].
  • docs/decisoes-de-arquitetura.md:
    • decisão 29: trocar o parágrafo "O CI ainda não confere a formatação" por um que diga que o CI confere, com o comando;
    • decisão 34, item 1: incluir a conferência de formatação na descrição do trabalho Build and test;
    • remover a seção "O que ainda reflete o plano antigo" (título, frase e tabela), que só continha esta sobra.
  • AGENTS.md, seção "Workflow: three commands", logo abaixo de "Agents open pull requests; the owner merges them.": "The owner merges after /revisar-issue, not before: a review only protects main if it comes first."
  • docs/agents/workflows/git-and-pull-requests.md, passo 7: "When CI is green, tell the owner in Portuguese: the pull request link, what changed, how you verified it, and anything they should look at closely. End with the next step: /revisar-issue <n> in a new conversation, before the merge. Then stop."
  • .claude/skills/executar-issue/SKILL.md:
    • passo 9: "Deliver the final report and stop. The owner merges after /revisar-issue.";
    • última linha do modelo de relatório: "Próximo passo: /revisar-issue <n>, numa conversa nova, antes do merge."
  • .claude/skills/revisar-issue/SKILL.md, passo 1, acrescentar: "If the pull request is already merged, say so in the first line of the report and review main at the merge commit: in step 4, update main instead of checking out the pull request, and in step 7 the fixes go in a new branch and a new pull request."
  • docs/agents/trabalhando-com-agentes.md, abaixo da tabela dos três comandos: "O merge vem depois da revisão. Com o CI verde, o pull request já parece pronto, mas é a revisão que confere se ele faz o que a issue pede."
  • Título do pull request: ci: check formatting.

Fora do escopo

  • Mudar o check.ps1, o .editorconfig ou o .gitattributes — não é preciso: a conferência já passa com eles.
  • Um trabalho separado no CI ou qualquer mudança na regra Protect main — exige o dono nas configurações do repositório.
  • Conferir a formatação de arquivos que não são .cs (Markdown, YAML, JSON) — recomendação futura.

Dependências

Riscos

  • O CI instala o .NET 10.0.x mais recente, e a máquina local tem o 10.0.401. Uma versão mais nova pode formatar diferente — aparece como falha no passo Check formatting sem que o pull request tenha mexido em código; corrigir rodando o check.ps1 com a mesma versão.
  • A passagem no Linux foi simulada no Windows, com os finais de linha que o Linux recebe (exit 0), e não num Linux de verdade — a confirmação é o T01.
  • O dependabot.yml só é validado pelo GitHub depois do merge — conferir em Insights → Dependency graph → Dependabot que não há erro de configuração.
  • O commit temporário do T02 não pode ficar no branch — o CI precisa terminar verde depois de desfeito, e git diff main não pode mostrar o arquivo usado.

Decisões do levantamento

  • O passo entra no trabalho Build and test, antes do Build — a regra da main não muda, e o erro aparece cedo.
  • O comando é o dotnet format completo, e não só whitespace — é o mesmo que o AGENTS.md e o check.ps1 usam.
  • O vermelho é provado no CI com um commit temporário, desfeito em seguida — um passo que nunca falhou não provou que confere.
  • A frase do revisar-issue ganhou o complemento sobre os passos 4 e 7 — sem ele, a skill se contradiz quando o pull request já foi mesclado.
  • A seção "O que ainda reflete o plano antigo" é removida — ficaria vazia.

Testes

Esta issue não tem código de produção, então não há teste xUnit. As verificações abaixo são observadas no CI do pull request, e a evidência é o link da execução.

ID Teste Camada Regra Resultado esperado
T01 Deve passar a conferência de formatação com o código atual, no Linux do CI CI Decisão 29 Passo Check formatting verde, e o trabalho Build and test verde
T02 Deve reprovar o pull request quando um arquivo .cs está fora do padrão CI Decisão 29 Com um commit temporário que estraga o recuo de um .cs, o trabalho Build and test falha no passo Check formatting, e o Build não roda. Depois do commit que desfaz, o CI volta a ficar verde

Sem teste próprio:

  • dependabot.yml — configuração; conferida pela leitura no /revisar-issue 35 e, depois do merge, na página do Dependabot.
  • Os cinco arquivos de documentação do fluxo e o docs/decisoes-de-arquitetura.md — conferidos pela leitura no /revisar-issue 35.

Critérios de aceite

  • Os testes T01 e T02 passam, com o link de cada execução do CI no relatório.
  • check.ps1 termina sem avisos, com todos os testes do projeto verdes.
  • O ci.yml continua com os mesmos dois trabalhos, com os mesmos nomes.
  • O diff final do pull request não contém o arquivo usado no T02.
  • grep -r "CommunityToolkit" .github não encontra nada.
  • Os textos do fluxo estão nos cinco arquivos, iguais aos do Escopo.
  • docs/ atualizado no mesmo pull request: docs/decisoes-de-arquitetura.md, docs/agents/workflows/git-and-pull-requests.md, docs/agents/trabalhando-com-agentes.md.

Recomendações futuras

  • Conferir a formatação de Markdown, YAML e JSON — hoje nenhum requisito pede.
  • Fixar a versão exata do .NET no CI, se o risco de versões diferentes se concretizar — antes disso é complexidade sem necessidade.

Activity

  1. MendesMat commented on Oct 7, 2026

    @MendesMat
    OwnerAuthor

    Decisão do dono em 2026-10-07, na revisão da #34: incluir no escopo desta issue a remoção do padrão "CommunityToolkit.Aspire.*" do grupo aspire em .github/dependabot.yml (linha 12). O único pacote que casava com ele era o do Mailpit, removido no PR #40. Considerar no /levantar-issue.

  2. MendesMat commented on Oct 7, 2026

    @MendesMat
    OwnerAuthor

    Decisão do dono em 2026-10-07, na revisão da #34: documentar no pull request desta issue a ordem executar → revisar → merge. Motivo: o PR #40 foi mesclado antes do /revisar-issue 34. A ordem já era a intenção, mas nenhum documento a escrevia como regra.

    O texto do item 1 está aprovado, literal. Os demais são a mesma regra levada aos outros lugares que descrevem o fluxo; a redação é conferida no /levantar-issue.

    1. AGENTS.md, seção "Workflow: three commands"

    Logo abaixo de "Agents open pull requests; the owner merges them.":

    The owner merges after /revisar-issue, not before: a review only protects main if it comes first.

    2. docs/agents/workflows/git-and-pull-requests.md, passo 7 ("Hand over to the owner")

    A entrega passa a terminar com o próximo passo:

    When CI is green, tell the owner in Portuguese: the pull request link, what changed, how you verified it, and anything they should look at closely. End with the next step: /revisar-issue <n> in a new conversation, before the merge. Then stop.

    3. .claude/skills/executar-issue/SKILL.md

    • Passo 9: "Deliver the final report and stop. The owner merges after /revisar-issue."
    • Última linha do modelo de relatório: "Próximo passo: /revisar-issue <n>, numa conversa nova, antes do merge."

    4. .claude/skills/revisar-issue/SKILL.md, passo 1

    Acrescentar: "If the pull request is already merged, say so in the first line of the report and review main at the merge commit."

    5. docs/agents/trabalhando-com-agentes.md, abaixo da tabela dos três comandos

    O merge vem depois da revisão. Com o CI verde, o pull request já parece pronto, mas é a revisão que confere se ele faz o que a issue pede.

    Sem teste próprio: é documentação, conferida pela leitura no /revisar-issue 35.

  3. added a commit that references this issue on Oct 7, 2026
    af8ef7c
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    enhancementNew feature or request

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions