CI check Sólo en nuestro repositorio · no instalable

El diff, comprobado otra vez en el pull request

Tres capas, cada una recogiendo el fallo de la anterior: el contexto aconseja, el hook local deniega en el momento, y ésta recalcula el diff entero en el pull request. Existe por el único fallo que las otras dos no pueden ver.

Pull request · commitcycleCommitCycle's own CI

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.

La capa 3 vuelve a comprobar el diff contra lo que declaró la task. Hoy corre en el propio CI de CommitCycle, en modo consultivo; nada la instala en el tuyo.

El fallo para el que existe

El hook local es el punto de enforcement, y es honesto sobre su techo: sólo puede denegar llamadas en las que está presente. Alguien que nunca ejecutó cycle init, un agente en un harness para el que CommitCycle no tiene adaptador, una máquina donde se quitó el plugin — en todos esos casos el hook no se equivoca, simplemente no está, y una ausencia es invisible desde dentro.

Así que la última capa corre en el pull request, lejos de la máquina. Lee el mismo zones.yml, recalcula qué zones toca de verdad el diff, y lo compara con lo que declaró la task. Mismo modelo, otro punto de vista.

Sus límites, en la misma frase. Contrasta el diff con lo que la task declaró, no con el grant, así que las aprobaciones y la caducidad no se comprueban. Lee el mapa de zones del propio checkout del pull request. Un board que no responde convierte el check en un skip que igualmente pasa. Y en un pull request desde una rama del mismo repositorio, esa rama puede reescribir el workflow que la comprueba. Un modo de gate más estricto y un check run del lado del board están construidos; ninguno está activado.

Qué reporta

Estado honesto

El check corre hoy sobre este repositorio, y sólo aquí. No está publicado en GitHub Marketplace — ningún script ni workflow de este repositorio lo publica — y nada lo instala en el tuyo. Una página que dijera «instala nuestra Action» estaría vendiendo algo que nadie puede instalar.

Un límite más, en la misma frase: un check sólo frena un merge donde la protección de ramas lo exige, y en un plan personal privado gratuito la protección de ramas responde 403, así que esta capa corre en modo aviso y lo dice en voz alta, en lugar de reportar un enforcement que no ejecutó.

Cómo se reparten el trabajo las tres capas está en la documentación (en inglés), y el mapa que leen las tres es el mapa de zones.

Preguntas que responde esta página

¿Qué atrapa el check de CI que no atrapa el hook local?

El caso que el hook no puede ver: trabajo hecho donde nunca llegó a instalarse. El check recalcula el diff del pull request a partir del mapa de zones, así que una rama producida sin el hook se mide igualmente contra lo que declaró su task. Hoy sólo corre en el repositorio de CommitCycle.