Ir al contenido

La escalera de decisión

Requiere @openlatch/client 0.11.2 o una versión posterior

Usa esta página para entender lo que hace el cliente cuando le llega una acción y ninguna regla de la zona efectiva la resuelve directamente. Cada acción cubierta sigue recibiendo un veredicto antes de ejecutarse, y cada paso siguiente queda registrado.

El cliente sube la escalera peldaño a peldaño y se detiene en el primero que resuelve la acción.

PeldañoQué ocurreQué resuelve la acción
1 · ReglaLas reglas de las políticas de intención deciden a partir de lo que el cliente observa de la acciónAllow o Block, a partir de una regla explícita
2 · ClasificadorCuando el cliente no reconoce el tipo de acción, un pequeño clasificador en la máquina nombra su tipo probable, y las reglas deciden a partir de ahíLas reglas, nunca el clasificador solo
3 · DeclaraciónCuando una regla necesita un hecho que el cliente no puede leer, se pide al agente que lo declare. En una cuestión de significado, se le pide que evalúe su propia acciónLo que el cliente observó, contrastado con la declaración. En una cuestión de significado, la admisión segura de una infracción por parte del propio agente
4 · RecursoCuando una declaración no se puede comprobar tras dos solicitudes, o una cuestión de significado no obtiene una admisión segura de una infracción tras una solicitudEl recurso de la política de intención: Ask por defecto, o Block cuando el propietario lo eligió. Allow cuando el propietario dejó que las declaraciones de la política de intención decidan

El clasificador solo orienta el tipo de una acción y nunca decide solo. Un Allow cuyo tipo adivinó queda marcado en el registro, para que puedas distinguirlo de una acción que una regla reconoció.

Cuando una regla necesita un hecho, el cliente rechaza la acción y devuelve la frase ratificada con las preguntas que plantea la política de intención. El agente puede responder en su propia respuesta y después reintentar la acción. Cuántas veces rechaza el cliente, y qué lee en el reintento, depende del hecho:

La regla necesitaRechazosQué lee el cliente en el reintento
Un hecho que tiene otro sistema, o que las reglas no saben nombrarDosUna declaración, contrastada con lo que el cliente observó
Una cuestión de significado: un juicio sobre un contenido, por ejemplo si un archivo puede contener secretosUnoLa propia evaluación de su acción por parte del agente, frente a la regla

Una acción que lleva ambos tipos mantiene dos rechazos. El segundo repite solo las preguntas aún abiertas, y la evaluación del agente cuenta en el reintento que la lleve.

DeclaraciónResultado
Verificada: lo que el cliente observó la confirmaAllow
Contradicha: lo que el cliente observó no coincide con ellaBlock, y el registro indica que la declaración fue contradicha
No verificable, inutilizable o ausenteLa acción se rechaza una segunda vez con las mismas preguntas; tras el segundo rechazo, el recurso la resuelve

Una declaración solo se verifica con lo que el cliente observó: la propia acción, o un resultado que el hook vio para el mismo objetivo antes en la sesión. La palabra del agente por sí sola nunca es una prueba. Solo la propia respuesta del agente cuenta como declaración; el texto que aparece dentro de la salida de una herramienta, de la salida de un comando o de un archivo nunca cuenta. OpenLatch no deduce la intención del agente: contrasta los hechos declarados con los observados.

Ninguna observación puede confirmar un juicio sobre un contenido, así que el cliente rechaza la acción una sola vez. Con las preguntas llega una línea fija, que pide al agente que añada su propia lectura de la acción frente a la regla en el mismo bloque openlatch-declare antes de reintentar.

La autoevaluación del agente en su reintentoResultado
Un assessment de violates con una confidence de 80 o másBlock, con esa regla, y el registro indica que la autoevaluación del agente lo resolvió
complies con cualquier confianza, o violates por debajo de 80El recurso la resuelve, y la evaluación queda registrada
Ninguna, o una inutilizable, con un valor ausente o fuera de rangoEl recurso la resuelve

El umbral de 80 está fijado en el cliente, y ningún ajuste de zona o de AIP lo mueve.

Una autoevaluación solo puede restringir lo que el agente puede hacer: nunca produce un Allow por sí sola, y nunca se registra como verificada. OpenLatch no mide si un rechazo llega al modelo del agente. Sin una respuesta utilizable, el recurso resuelve la acción cuando el agente reintenta.

En clientes anteriores a 0.11.2, una cuestión de significado se trata como cualquier otro hecho: dos solicitudes y después el recurso.

En una cuestión de significado, se pide al agente que se evalúe; el Ask se plantea para revisión. El cliente lo plantea en ese primer rechazo solo cuando todo esto es cierto:

  • La política de intención se ejecuta en Enforce.
  • El recurso de la regla es Ask.
  • La ASK delivery de la zona es Platform o Both.
  • Cada pregunta de la acción es una cuestión de significado.

Cualquier otro primer rechazo no plantea ningún Ask y no deja ninguna anomalía: un recurso de Block, una ASK delivery fijada en Agent, o una acción que también lleva otro tipo de pregunta.

La acción no se ejecutó en ese intento, así que tu respuesta decide la próxima acción similar. Si el agente reintenta y el recurso la resuelve, el comportamiento de Ask de más abajo se aplica a ese reintento. Con una ASK delivery fijada en Agent o Both, la solicitud nativa del agente llega en ese reintento, en los agentes que la tienen.

La entrada se cierra sola cuando el reintento de esa misma acción se resuelve con Block, o con un Allow en una política de intención cuyas declaraciones deciden. No se registra ninguna respuesta, y la decisión sigue siendo legible. Revisar anomalías muestra lo que ves.

Cuando un propietario deja que las declaraciones decidan

Sección titulada «Cuando un propietario deja que las declaraciones decidan»

Un propietario puede elegir dejar que las declaraciones de una política de intención decidan, aceptando una propuesta de aprendizaje. Entonces, una declaración que el cliente no puede verificar se acepta por la palabra del agente, y la acción se permite en lugar del recurso; nunca se registra como verificada, y una regla Block que coincida sigue bloqueando. Esto se aplica en los clientes que lo admiten; los clientes más antiguos mantienen el recurso. En una cuestión de significado, un violates seguro sigue bloqueando, y cualquier otra declaración utilizable se resuelve como Allow: la elección del propietario para esa política de intención, nunca la palabra del agente por sí sola. Propuestas de aprendizaje explica cuándo lo propone OpenLatch.

Una excepción que un revisor concedió en un Ask anterior resuelve una acción coincidente como Allow antes de que se pida ninguna declaración.

Cuando la política de intención se ejecuta en Monitor, nada llega al agente. La acción se ejecuta, y el registro recoge lo que habría ocurrido: el veredicto que habría devuelto la política y, donde se habría pedido una declaración, que la habría pedido y lo que habría decidido el recurso. No hay primer rechazo, así que no se plantea ningún Ask en ese momento.

Lo que hace un Ask a continuación sigue el comportamiento de Ask de la zona, que se fija en la zona y se puede anular por AIP:

Comportamiento de AskQué ocurre
Pass and review next time (el valor por defecto)La acción se ejecuta y se marca para revisión. La respuesta se aplica a partir de la siguiente acción similar, así que evita la repetición, no la primera vez
Hold until validated, un ajuste de zona opt-inLa acción espera la respuesta de un revisor, en los agentes que pueden esperar. En Claude Code la acción espera la respuesta. Cline retiene mediante reintento: la acción se rechaza hasta que una persona la aprueba, y el reintento del agente pasa entonces. Codex CLI, Cursor, Devin y OpenCode no tienen solicitud nativa, así que este ajuste opt-in se degrada allí a pass and review, y el registro lo indica

Cuatro caminos dejan que una acción se ejecute por diseño, y cada uno es visible en el registro:

  • Un Allow cuyo tipo adivinó el clasificador queda marcado.
  • Una declaración que no se puede comprobar, o una cuestión de significado sin admisión segura de una infracción, resuelta por el Ask por defecto en pass and review, ejecuta la acción en su reintento y la marca.
  • Una retención opt-in en Codex CLI, Cursor, Devin u OpenCode se degrada a pass and review: la acción se ejecuta, marcada.
  • En una política de intención cuyas declaraciones deciden, por elección del propietario, una declaración que el cliente no puede verificar deja que la acción se ejecute, registrada como no comprobable.

OpenLatch está pensado para un agente que se comporta mal, no para uno malintencionado, y no afirma ninguna resistencia frente a un agente construido para eludirlo. Un veredicto es determinista porque lo produjo una política explícita. Lo que recibe el agente ante un Block explica el propio rechazo.