CI check Só no nosso repositório · não instalável
O diff, conferido de novo no pull request
Três camadas, cada uma pegando a falha da anterior: o contexto aconselha, o hook local nega na hora, e esta recalcula o diff inteiro no pull request. Ela existe pela única falha que as outras duas não conseguem enxergar.
CC-42: add an index on tasks.updated_at
task/CC-42-add-an-index-on-tasks-updated-at → main
- ✓ static, test, evals, apps — typecheck, unit tests, evals, builds
- ◌✓scope — Is this pull request inside what its task declared?
Advisory here: this repository’s plan cannot make a check required.
A camada 3 confere de novo o diff contra o que a task declarou. Hoje roda no próprio CI da CommitCycle, em modo consultivo; nada a instala no seu.
A falha para a qual ela existe
O hook local é o ponto de enforcement, e é honesto sobre o próprio teto: só consegue negar chamadas nas quais está presente. Alguém que nunca rodou cycle init, um agente num harness para o qual o CommitCycle não tem adaptador, uma máquina de onde o plugin foi removido — em todos esses casos o hook não está errado, ele simplesmente não está lá, e ausência é invisível por dentro.
Então a última camada roda no pull request, longe da máquina. Ela lê o mesmo zones.yml, recalcula quais zones o diff realmente tocou, e compara com o que a task declarou. Mesmo modelo, outro ponto de observação.
Os limites dela, na mesma frase. Ela confere o diff contra o que a task declarou, não contra o grant, então aprovações e expiração não são verificadas. Ela lê o mapa de zones do próprio checkout do pull request. Um board que não responde transforma o check num skip que passa mesmo assim. E num pull request de um branch do mesmo repositório, esse branch pode reescrever o workflow que o confere. Um modo de gate mais rígido e um check run do lado do board estão construídos; nenhum dos dois está ligado.
O que ela reporta
- Declarado contra tocado — as zones que a task nomeou, contra as que o diff prova que mudou
- Trabalho que chegou sem task — o caso que só a CI enxerga
- Overrides, com nome — um bypass aqui é legítimo, fica registrado, nunca é silencioso
Status honesto
O check roda hoje neste repositório, e só aqui. Ele não está publicado no GitHub Marketplace — nenhum script ou workflow deste repositório o publica — e nada o instala no seu. Uma página que dissesse "instale a nossa Action" estaria vendendo algo que ninguém consegue instalar.
Mais um limite, na mesma frase: um check só impede um merge onde a proteção de branch o exige, e num plano pessoal privado gratuito a proteção de branch responde 403, então esta camada roda em modo aviso e diz isso em voz alta, em vez de reportar um enforcement que não executou.
Como as três camadas dividem o trabalho está na documentação (em inglês), e o mapa que as três leem é o mapa de zones.
Perguntas que esta página responde
O que o check de CI pega que o hook local não pega?
O caso que o hook não consegue ver: trabalho feito onde ele nunca foi instalado. O check recalcula o diff do pull request a partir do mapa de zones, então um branch produzido sem o hook é medido do mesmo jeito contra o que a sua task declarou. Hoje ele só roda no repositório do CommitCycle.