Contrato de Autoría de LLM
Propósito y Audiencia
Qué: El contrato canónico de un solo documento para la autoría de Decision Gate impulsada por LLM. Por qué: Hacer cumplir verificaciones deterministas respaldadas por evidencia antes de acciones consecuentes. Quién: Equipos que integran agentes LLM con Decision Gate en flujos de trabajo fijos o bucles de autoautoría. Requisitos previos: evidence_flow_and_execution_model.md
Este es el documento principal que se debe entregar a un LLM. Otras guías son opcionales para mayor profundidad. Para un único camino de incorporación humana que cubra la ejecución protegida, la evaluación de DG como habilidad y la composición recursiva, consulte skill_pathways_onboarding.md.
Implementación de Referencia
Para una implementación de reclamación legal concreta de este contrato (operación determinista offline más operación de opt-in en vivo), consulte:
Invariantes No Negociables
- Decision Gate es un límite de ejecución, no un análisis asesor.
- Las afirmaciones fácticas que están marcadas como requeridas deben resolverse mediante evidencia, no mediante la confianza del modelo.
- Las acciones consecuentes deben ser bloqueadas cuando las reclamaciones requeridas no están resueltas.
precheckes solo de iteración; los caminos consecuentes requieren evaluación en vivo.- Las discrepancias de capacidad fallan de manera cerrada.
Secuencia de Herramientas Canónicas
Utiliza esta secuencia para cada flujo de trabajo:
- Capability discovery
providers_listprovider_contract_getprovider_check_schema_get
- Authoring
- Extraer reclamaciones
- Construir
claim_inventory - Compilar
claim_condition_map
- Fast loop
schemas_registerprecheck
- Consequential boundary
scenario_define(si no está ya definido)scenario_startescenario_siguiente
- Audit/debug
runpack_exporty/oevidence_querysegún lo permita la política
Cruce de Habilidades
Este documento sigue siendo el protocolo normativo. Las habilidades son envolturas operativas para utilizar el protocolo de manera consistente.
Habilidades del repositorio canónico:
skills/decision-gate-authoringskills/decision-gate-verificationskills/decision-gate-capability-discovery
Paso de peatones:
| Sección del playbook | Habilidad principal | Secuencia de herramientas concreta |
|---|---|---|
| Secuencia de herramientas canónica | decision-gate-authoring | providers_list -> provider_contract_get -> provider_check_schema_get -> schemas_register -> precheck -> scenario_define -> scenario_start -> scenario_next |
| Apretón de manos de descubrimiento de capacidades | decision-gate-capability-discovery | providers_list -> provider_contract_get -> provider_check_schema_get |
| Contrato de descomposición de reclamaciones | decision-gate-authoring | extracción de reclamaciones + generación de claim_inventory (respaldado por contrato) |
| Contrato de compilación de condiciones | decision-gate-authoring + decision-gate-capability-discovery | verificación de esquemas + validación de comparadores/tipos antes de claim_condition_map |
| Contrato de ejecución + Reglas de parada dura | decision-gate-authoring + decision-gate-verification | bucle rápido de precheck, luego scenario_start en vivo + scenario_next, luego runpack_export + runpack_verify |
| Bloque de aviso de agente canónico | las tres habilidades | instrucciones de habilidad compactas que preservan este contrato (no una segunda fuente de verdad) |
decision_gate_docs_search consultas para apoyar flujos de trabajo de habilidades:
{
"query": "llm authoring capability discovery handshake providers_list provider_check_schema_get",
"max_sections": 4
}
{
"query": "precheck versus live scenario_next hard stop rules enforcement_verdict",
"max_sections": 4
}
{
"query": "runpack_export runpack_verify trust lane verified asserted",
"max_sections": 4
}
Descubrimiento de Capacidades Handshake
El descubrimiento de capacidades es obligatorio antes de la compilación de condiciones en dominios arbitrarios.
1) Listar proveedores
{}
Utilice la carga útil anterior con providers_list.
2) Obtener contrato del proveedor
{
"provider_id": "json"
}
Utilice la carga útil anterior con provider_contract_get.
3) Obtener detalles del esquema de verificación
{
"provider_id": "json",
"check_id": "path"
}
Utilice la carga útil anterior con provider_check_schema_get.
Como mínimo, recopila:
allowed_comparatorsparams_schemaresult_schema
Contrato de Descomposición de Reclamaciones
Cada declaración fáctica de candidato debe estar representada en claim_inventory.
Reglas de clasificación:
gatable = truesolo cuando la reclamación puede ser verificada de manera determinista contra una fuente de evidencia.gating_required = truepara reclamaciones que bloquean acciones consecuentes si no se resuelven.gatable = falserequiere unreasonno vacío.
Se admiten dos modos de operación:
- Flujo de trabajo fijo: los humanos predefinen las clases de reclamaciones requeridas (por ejemplo, citas legales).
- Auto-redacción: el agente extrae reclamaciones en tiempo de ejecución y compila condiciones a partir de capacidades descubiertas.
Se espera que la especificidad del dominio sea: las reclamaciones dependen de las fuentes de datos y el acceso de cada equipo.
Contrato de Compilación de Condiciones
Para cada reclamo gatable = true, compila una o más condiciones utilizando:
provider_idcheck_idparamscomparadoresperadotrust_min_lane
Requisitos de compilación:
- El comparador debe estar en
allowed_comparatorsdeprovider_check_schema_get. paramsdebe conformarse aparams_schema.expecteddebe ser compatible conresult_schemay la semántica del comparador.- Los valores de
condition_iddeben ser únicos dentro del escenario.
Contrato de Ejecución
Bucle de iteración rápida (afirmado)
- Registrar esquema a través de
schemas_register. - Ejecutar
precheckcontra la carga útil afirmada. - Corrija el mapeo de reclamaciones, el esquema o las condiciones hasta que las reclamaciones requeridas se evalúen como estados de aprobación.
Límite consecuente (verificado)
Antes de cualquier acción consecuente:
- Asegúrese de que el escenario esté definido (
scenario_define). - Crear ejecución (
scenario_start). - Ejecutar evaluación en vivo (
scenario_next). - Proceda solo si el resultado de la decisión es aprobar/avanzar/completar para su política de límites.
Reglas de Parada Dura (NO SE DEBE CONTINUAR)
No permitir acción consecuente cuando cualquiera de las condiciones a continuación sea verdadera:
- Una reclamación gatable requerida no tiene mapeo en
claim_condition_map. - Una condición mapeada requerida resuelve
falseounknown. scenario_nextno devuelve un resultado de pase permitido para el límite de liberación.- La política requiere
verificadopero solo se utiliza evidencia afirmada. - La validación del contrato del proveedor/comprobador/comparador/tipo falla.
Bloque de Aviso del Agente Canónico
Pegue esto en el aviso de su sistema de agente, luego vincule la capa de herramienta a las herramientas DG MCP.
You are the Decision Gate Authoring Agent. Follow this protocol exactly.
Inputs:
- draft_output: candidate output text or structured payload
- consequence_boundary: the action that must be blocked unless gates pass
- policy_defaults:
- required_risk_levels: ["high", "critical"]
- required_min_lane: "verified"
Required outputs (all four):
1) claim_inventory
2) capability_matrix
3) claim_condition_map
4) enforcement_verdict
Protocol:
1. Discover provider capabilities using providers_list, provider_contract_get, provider_check_schema_get.
2. Extract factual claims from draft_output.
3. Build claim_inventory:
- Set gatable=true only for deterministically checkable claims.
- Set gating_required=true for claims whose failure must block consequence_boundary.
- Include non-empty reason for every gatable=false claim.
4. Build claim_condition_map for all gatable=true claims.
5. Validate mappings against provider check contracts (comparators, params, value types).
6. Run precheck for fast iteration.
7. Before consequence_boundary, run live scenario_start + scenario_next.
8. Set enforcement_verdict.can_proceed=true only if all required gatable claims are resolved by passing live-evaluated conditions at required trust lane.
Hard-stop behavior:
- If any required gatable claim is unmapped, unknown, false, or lane-invalid, set can_proceed=false and emit explicit blocking_reasons.
- Never treat model confidence or self-verification text as evidence.
Plantillas JSON Integradas
claim_inventory (requerido)
{
"claim_inventory": [
{
"claim_id": "claim_001",
"claim_text": "Case X exists in court records",
"gatable": true,
"gating_required": true,
"reason": "Deterministic external lookup available",
"evidence_source_hint": "court_records_api",
"risk_level": "high"
}
]
}
capability_matrix (requerido)
{
"capability_matrix": [
{
"provider_id": "json",
"check_id": "path",
"allowed_comparators": ["equals", "exists", "not_exists", "in_set"],
"params_schema_ref": "provider_check_schema_get:json:path:params_schema",
"result_schema_ref": "provider_check_schema_get:json:path:result_schema"
}
]
}
claimconditionmap (requerido)
{
"claim_condition_map": [
{
"claim_id": "claim_001",
"condition_id": "case_exists",
"provider_id": "rest",
"check_id": "json_path",
"params": {
"url": "https://api.example.com/cases/lookup?id=925-F3d-1339",
"jsonpath": "$.exists"
},
"comparator": "equals",
"expected": true,
"trust_min_lane": "verified"
}
]
}
enforcement_verdict (requerido)
{
"enforcement_verdict": {
"can_proceed": false,
"blocking_reasons": [
"required claim claim_001 unresolved",
"live evaluation not complete"
],
"required_claims_unresolved": ["claim_001"]
}
}
Camino Dorado Mínimo (Un Flujo de Extremo a Extremo)
Este flujo es intencionalmente mínimo y alineado con el comportamiento actual de las herramientas OSS.
Consejo de Windows: PowerShell/CMD no soportan curl en múltiples líneas al estilo bash. Usa un comando de una sola línea o cadenas de PowerShell aquí. Consejo de preajuste: Comienza con configs/presets/quickstart-dev.toml para uso local.
Paso 1: Definir escenario
curl -s http://127.0.0.1:4000/rpc \
-H 'Content-Type: application/json' \
-d '{
"jsonrpc": "2.0",
"id": 1,
"method": "tools/call",
"params": {
"name": "scenario_define",
"arguments": {
"spec": {
"scenario_id": "llm-precheck",
"namespace_id": 1,
"spec_version": "v1",
"stages": [
{
"stage_id": "main",
"entry_packets": [],
"gates": [
{
"gate_id": "quality",
"requirement": { "Condition": "report_ok" }
}
],
"advance_to": { "kind": "terminal" },
"timeout": null,
"on_timeout": "fail"
}
],
"conditions": [
{
"condition_id": "report_ok",
"query": {
"provider_id": "json",
"check_id": "path",
"params": { "file": "report.json", "jsonpath": "$.summary.failed" }
},
"comparator": "equals",
"expected": 0,
"policy_tags": []
}
],
"policies": [],
"schemas": [],
"default_tenant_id": 1
}
}
}
}'
Paso 2: Registrar el esquema de prechequeo
curl -s http://127.0.0.1:4000/rpc \
-H 'Content-Type: application/json' \
-d '{
"jsonrpc": "2.0",
"id": 2,
"method": "tools/call",
"params": {
"name": "schemas_register",
"arguments": {
"record": {
"tenant_id": 1,
"namespace_id": 1,
"schema_id": "llm-precheck",
"version": "v1",
"schema": {
"type": "object",
"additionalProperties": false,
"properties": {
"report_ok": { "type": "number" }
},
"required": ["report_ok"]
},
"description": "LLM precheck payload schema",
"created_at": { "kind": "logical", "value": 1 },
"signing": null
}
}
}
}'
Paso 3: Preverificación (bucle rápido)
curl -s http://127.0.0.1:4000/rpc \
-H 'Content-Type: application/json' \
-d '{
"jsonrpc": "2.0",
"id": 3,
"method": "tools/call",
"params": {
"name": "precheck",
"arguments": {
"tenant_id": 1,
"namespace_id": 1,
"scenario_id": "llm-precheck",
"spec": null,
"stage_id": "main",
"data_shape": { "schema_id": "llm-precheck", "version": "v1" },
"payload": { "report_ok": 0 }
}
}
}'
Forma de respuesta esperada:
{
"decision": {
"kind": "complete",
"stage_id": "main"
},
"gate_evaluations": [
{
"gate_id": "quality",
"status": "true",
"trace": [
{ "condition_id": "report_ok", "status": "true" }
]
}
]
}
Paso 4: Límite en vivo (requerido antes de la acción consecuente)
# scenario_start
curl -s http://127.0.0.1:4000/rpc \
-H 'Content-Type: application/json' \
-d '{
"jsonrpc": "2.0",
"id": 4,
"method": "tools/call",
"params": {
"name": "scenario_start",
"arguments": {
"scenario_id": "llm-precheck",
"run_config": {
"tenant_id": 1,
"namespace_id": 1,
"run_id": "run-1",
"scenario_id": "llm-precheck",
"dispatch_targets": [],
"policy_tags": []
},
"started_at": { "kind": "unix_millis", "value": 1710000000000 },
"issue_entry_packets": false
}
}
}'
# scenario_next
curl -s http://127.0.0.1:4000/rpc \
-H 'Content-Type: application/json' \
-d '{
"jsonrpc": "2.0",
"id": 5,
"method": "tools/call",
"params": {
"name": "scenario_next",
"arguments": {
"scenario_id": "llm-precheck",
"request": {
"run_id": "run-1",
"tenant_id": 1,
"namespace_id": 1,
"trigger_id": "trigger-1",
"agent_id": "agent-1",
"time": { "kind": "unix_millis", "value": 1710000000000 },
"correlation_id": null
},
"feedback": "trace"
}
}
}'
Proceda solo si la decisión en vivo cumple con su política de aprobación.
Recuperación de Fallos y Escalamiento
Si la validación o evaluación falla:
- Capability mismatch
- Volver a consultar
provider_check_schema_gety corregir la discrepancia entre comparador/parámetros/tipo de resultado.
- Volver a consultar
precheckhold or tool error- Validar la carga útil contra la forma de los datos; asegurar que los IDs de condición se alineen con las claves de la carga útil.
- Live run hold/fail
- Inspeccionar runpack (
runpack_export) o llamar aevidence_query(si la política de divulgación lo permite).
- Inspeccionar runpack (
- Trust lane mismatch
- Si la política requiere
verificado, no apruebe evidencia solo afirmada.
- Si la política requiere
- Unclear claim classification
- Escalar al propietario de la política humana; por defecto
gating_required = truepara reclamaciones de alto riesgo.
- Escalar al propietario de la política humana; por defecto
Profundizaciones específicas del proveedor:
Glosario
Inventario de reclamaciones: Lista legible por máquina de reclamaciones candidatas y clasificación de acceso. Matriz de capacidades: Capacidades de proveedor/verificadas descubiertas a partir de herramientas DG. Mapa de condiciones de reclamación: Mapeo determinista de reclamaciones accesibles a condiciones DG. Preverificación: Simulación de evidencia afirmada, sin mutación del estado de ejecución. Ejecución en vivo: Evaluación obtenida del proveedor que muta el estado de ejecución y apoya la auditoría de ejecución. Acción consecuente: Cualquier acción que cambie el estado externo, libere salida o comprometa una decisión.