---
title: "Un check de pull request para el trabajo de agentes"
description: "La capa 3 recalcula el diff de un pull request contra lo que declaró su task. Sólo corre en el repo de CommitCycle; no hay nada que instalar."
url: https://commitcycle.com/es/ci/
language: es
---

# El diff, comprobado otra vez en el pull request

> La capa 3 recalcula el diff de un pull request contra lo que declaró su task. Sólo corre en el repo de CommitCycle; no hay nada que instalar.

CI check Sólo en nuestro repositorio · no instalable

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.

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

- **Declarado frente a tocado** — las zones que nombró la task, contra las que el diff demuestra que cambió
- **Trabajo que llegó sin task** — el caso que sólo CI ve
- **Overrides, con nombre** — un bypass aquí es legal, queda registrado, nunca es silencioso

## 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](https://commitcycle.com/docs/concepts/three-layers/) (en inglés), y el mapa que leen las tres es [el mapa de zones](https://commitcycle.com/es/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.
