Las reglas con las que trabajan mis agentes de IA, y qué las hace cumplir
Sin atribución a la IABloqueo con flockCopias de trabajo efímerasRedactor de secretos
Un modelo de lenguaje se equivoca de formas que nadie puede prever, así que lo que mantiene a raya a un agente no es el prompt. Las reglas: cada agente trabaja en su propia copia de Git (un worktree), los secretos se borran de su salida antes de guardar nada, un segundo modelo revisa cada pull request y nada de lo que escribe un agente se fusiona sin que yo lo haya leído.
Despacho de tareas, recuperación de conocimiento vía FastMCP, ejecución aislada en worktrees y revisión adversarial.
Cada operación del agente corre en un Git worktree aislado. Las acciones destructivas activan una puerta HITL sincrónica. Las PRs son auditadas por una familia de modelos independiente antes de la revisión humana.
Generado en el build desde src/diagrams/harness.architecture.json
[ 02 / Cuatro reglas, cada una con un mecanismo detrás ]
Ninguna depende de que el modelo se porte bien: cada una es un cerrojo, un filtro, un límite o una revisión.
Aislamiento
Aislamiento y Concurrencia a Nivel de OS
Worktrees efímeros sobre el pool de objetos .git/objects. Semáforos flock a nivel de kernel previenen colisiones de ramas y condiciones de carrera entre agentes concurrentes.
›Aislamiento por pool de objetos compartidos
›Semáforos flock a nivel de kernel
›Límites de tiempo monótonos anti-bloqueo
Seguridad
Redacción de Secretos en Flujo e Inyección JIT
Filtro en tiempo real que purga stdout/stderr antes de persistir transcripciones. Cero secretos en texto plano: descifrado Age/SOPS inyectado estrictamente en memoria.
›Filtro redactWriter en memoria
›Cifrado asimétrico Age/SOPS
›Parada inmediata ante cualquier fuga
Salvaguardas
Frenos de Seguridad y Cap Atómico de PR
Disyuntor dinámico de bucles en AST para frenar recursiones. Puerta HITL criptográfica sincrónica para comandos destructivos y límite estricto de ~300 LOC ejecutables.
›Disyuntor dinámico de bucles en herramientas
›Puerta de aprobación humana sincrónica
›Presupuesto de ~300 LOC ejecutables por PR
Verificación
Auditoría Adversarial Cruzada y Cero Auto-Merge
Familia de modelos independiente auditando cada diff para eliminar condescendencia. Prohibición estricta de auto-merge: todo cambio se fusiona bajo supervisión humana.
›Revisión de diffs por modelos independientes
›Doctrina estricta de cero auto-merge
›Suites de regresión y mutación en CI
[ 03 / Flota Autónoma y Automatizaciones ]
Los agentes en producción, los protocolos que usan, los enrutadores de eventos y los sumideros de telemetría que funcionan en el clúster. La mayoría opera dentro de la malla — lo que ves aquí es el inventario real y los contratos de acceso.
Cuatro extractos, cada uno citado palabra por palabra de un fichero público y enlazado a la versión de la que se tomó.
Doctrinadotfiles/AGENTS.md
Las reglas que carga cada sesión de agente
Las reglas de trabajo que el arnés de dotfiles compila en las instrucciones de cada agente: sin atribución a la IA, sin fusión automática, y todo cambio de entorno escrito como código y comprobado idempotente.
dotfiles/AGENTS.mdmarkdown
- **No AI attribution** in git history or GitHub messages (commits, PRs, issues).
- No `Co-Authored-By` trailers referencing AI agents.
- No bot-style emojis or "Generated with" footers.
- All artifacts must appear human-authored.
[…]
- **Auto-merge is forbidden in every repository.** Never run `gh pr merge --auto`, never enable "Auto-merge" in the GitHub UI, and keep the repo setting `allow_auto_merge=false`. Auto-merge lands a PR the instant CI goes green — bypassing the human review gate in §1.
[…]
- **Zero manual operations:** Never perform ad-hoc manual changes on remote systems, servers, or cloud environments.
- **Strict IaC & Idempotence:** Every configuration or environment change MUST be codified as reproducible IaC (Ansible, Terraform, K8s manifests, dotfiles) and verified idempotent (`changed=0` on re-run).
Qué modelos pueden firmar una revisión adversarial
Una lista ordenada de los modelos que pueden revisar. Ninguno es de Anthropic, porque Claude escribe casi todos los cambios: quien revisa no puede ser quien implementa.
kubelab/harness/reviewer-pool.jsonjson
"Standing rule: an adversarial review never runs on an Anthropic model. The",
"reviewer must not be the implementer, and Claude implements nearly every",
"change in this repo — BUG-074 was reviewed twice by claude-opus-5 before",
"anyone noticed, which is the incident this file exists to prevent.",
[…]
"pool": [
{
"id": "nan/deepseek-v4-flash",
"runner": "pi",
"provider": "nan",
"model": "deepseek-v4-flash",
"role": "primary",
[…]
{
"id": "agy/gemini-3.1-pro-high",
"runner": "agy",
"model": "gemini-3.1-pro-high",
"role": "fallback",
La puerta que decide si un cambio fue revisado. No pregunta quién lo revisó, y distingue el aviso de un revisor que no pudo revisar de una revisión.
kubelab/harness/review-attestation.jsonjson
"The gate asks ONE question: did a review actually happen? It never asks who",
"performed it or how good it was. A human review attests exactly as well as a",
"bot's.",
[…]
{
"login": "coderabbitai",
"declined_markers": [
"rate limited by coderabbit.ai"
],
"review_markers": [
"No actionable comments were generated in the recent review"
],
El código en un repositorio, el despliegue en otro (ADR-053)
Cada repositorio de producto construye una imagen inmutable etiquetada con su sha y avisa a kubelab con un repository_dispatch; kubelab la promociona. Sondear el registro se valoró y se descartó.
# ADR-053: Platform↔Product Repository Structure & Deployment Topology
[…]
2. **Image promotion is push, event-driven — never polling.**
- Each product's CI publishes an immutable `sha-<short>` image, then fires a **`repository_dispatch`** to kubelab, whose workflow runs `toolkit deployment promote` (ADR-046).
- **Rejected — registry polling** (Argo CD Image Updater *or* an n8n registry poller). It reintroduces exactly what ADR-046 descoped (#692): a pull loop and non-git-honest state; for n8n it would also put a non-critical service on the delivery path (n8n down → no deploys). We control the image producers, so push is strictly better than pull.
Fail-Closed Harnesses for Autonomous Coding Agents
Qué se rompe cuando los LLMs tocan infraestructura real y las fronteras Unix necesarias para contenerlos: aislamiento de worktree, locks en el kernel y colas de triaje mecánico.