EN
← Volver al Portafolio
IA Agéntica y Automatización julio de 2026

ADRA — Agente de Revisión de Desarrollo Adversarial

Un motor de validación adversarial, determinista primero, para el ciclo de vida del software. Las herramientas deterministas (git, el comando exacto de CI, validación de bundle, un escaneo de lenguaje/fugas, sondas SQL) corren PRIMERO y se vuelven tanto el fundamento que el modelo no puede contradecir como la evidencia en un registro de procedencia inmutable; un crítico adversarial bloqueante intenta refutar cada artefacto en vez de aprobarlo, un LLM-como-juez puntúa con swap-and-average, y el ciclo escala a una persona donde nada determinista respalda el veredicto. Seis habilidades (revisión de código, evaluación de PR, experimento, mejora, documentar, decidir) corren el mismo ciclo. Funciona offline sin API key; publicado en PyPI como adra.

Habilidades
Seis sobre un ciclo: code_review · pr_eval · experiment · improve · document · decide (decide es de dueño humano)
Herramientas deterministas
git · comando exacto de CI · validación de bundle · escaneo de lenguaje/fuga de secretos · descubrimiento de código · sondas al warehouse SQL
Crítico + juez
Un rubric tipado compartido gobierna una pasada determinista de piso duro + una pasada de ataque semántico con LLM; LLM-como-juez con swap-and-average + anclaje a referencia
Conectores
GitHub (REST v3) · Azure DevOps (REST 7.1) · Databricks (SDK) · Azure (identity + monitor); emulador offline (git/PRs/wiki/tableros/CI sintéticos + SQLite)
Proveedores
Capa pydantic-ai, solo config (ADRA_PROVIDER / ADRA_MODEL / ADRA_MODEL_<ROLE>), ruteo por rol; mock determinista offline; sin framework de agentes
Consola + paquete
pip install adra (PyPI, Python >= 3.11, Apache-2.0); una consola web privada connection-first (FastAPI + web) consume el motor, en vivo en adra.fasl-work.com
ADRA — Agente de Revisión de Desarrollo Adversarial — Arquitectura
#agentic-ai #code-review #adversarial-validation #llm-as-judge #deterministic-first #provenance #devops #pydantic-ai #pypi

Contexto de Negocio

La revisión de código y la validación son donde se cotiza el riesgo de ingeniería. Un revisor que emite un hallazgo confiado pero falso cuesta confianza; un agente autónomo que fusiona sobre una suite verde que no desafió adversarialmente cuesta un incidente. El valor acá es un veredicto defendible: cada bloqueo se rastrea a un resultado de herramienta determinista registrado en un log de procedencia inmutable, el modelo puede sumar hallazgos semánticos pero no puede revocar el piso, y el sistema dice en voz alta cuando no tiene evidencia y entrega la decisión a una persona. Esa es la disciplina que un ingeniero senior ya aplica, hecha explícita y reproducible.

Valor Estratégico

ADRA es un patrón reutilizable para fundamentar un modelo de lenguaje en evidencia determinista en vez de dejar que su prosa sea el veredicto, y para construir un agente que refuta en vez de adular. El motor es agnóstico al cliente: un cliente es una suite de gobernanza (convenciones, ADRs, estándares de CI, glosario, casos de incidentes) sobre la que el motor se fundamenta, entregada con un ejemplo ficticio completo (Northwind Data Platform) y seleccionable por una variable de entorno, así las mismas habilidades corren contra cualquier estándar sin cambiar el código. Un Protocol de conectores permite que el mismo ciclo corra contra GitHub, Azure DevOps, Databricks y Azure o contra un emulador offline autocontenido (repos git sintéticos, PRs, wiki, tableros, CI y un warehouse SQLite). Es deliberadamente libre de frameworks (una máquina de estados hecha a mano, sin LangChain ni LangGraph) y honesto sobre su alcance: los controles de seguridad de la fase de conectores que necesitará están rotulados como planeados, no reclamados como hechos.

El Desafío

El mercado de revisión de código con IA se parte en dos y ambas mitades fallan en el mismo punto. Los revisores (CodeRabbit, Greptile, Qodo y similares) alimentan linters a un modelo de lenguaje, pero la prosa del modelo es el veredicto, así que hallazgos alucinados y "afirmados con consistencia pero falsos" se filtran y las señales deterministas nunca son la compuerta. Los programadores autónomos (Devin, OpenHands, SWE-agent) escriben código y tratan "los tests pasan" como éxito en vez de intentar adversarialmente probar que el cambio está mal. Ambos producen opiniones donde un ingeniero senior querría pruebas, refutaciones, y un honesto "no puedo verificar esto, que decida una persona".

Nuestro Enfoque

ADRA ocupa el hueco con una columna determinista que fundamenta a un crítico adversarial bloqueante. Sus herramientas corren primero, en orden: git y salud del merge-base, el comando exacto de CI, validación de bundle, un escaneo de lenguaje y fuga de secretos, descubrimiento de código, y sondas al warehouse SQL; cada una devuelve un ToolResult tipado que se vuelve tanto el fundamento que el modelo no puede revocar como la evidencia en el registro de la corrida. Sobre ese piso, un crítico de dos pasadas hace red-team a cada artefacto (una pasada determinista de piso duro anclada en un rubric tipado compartido, luego una pasada de ataque semántico con LLM cuyo trabajo es refutar, no aprobar), y un LLM-como-juez puntúa con swap-and-average y anclaje a referencia, de modo que un ganador cuenta solo cuando es estable ante el intercambio de orden. Seis habilidades corren este mismo ciclo, diferenciándose solo por el prompt de dominio y las herramientas: code_review, pr_eval, experiment, improve, document, decide. Como el piso determinista carga el veredicto, el ciclo completo y su suite de tests corren offline sin API key vía un proveedor mock; conectar un proveedor real mediante una capa pydantic-ai (solo config, ruteo por rol) agrega la capa semántica encima. Es de solo lectura por defecto: las escrituras exigen una bandera externa explícita y una compuerta humana, y el ciclo escala a una persona donde nada determinista respalda la decisión.

Indicadores Clave de Rendimiento

KPILínea BaseResultadoImpacto
Qué carga el veredictoLa prosa del modelo es el veredicto (hallazgos falsos se filtran)Un piso determinista (git, CI, bundle, lenguaje/fugas, SQL) fundamenta un crítico bloqueante; cada hallazgo lleva su evidenciaAuditas la compuerta, no confías en una opinión
Postura de autonomíaLos agentes autónomos tratan "los tests pasan" como éxito y escriben librementeEl crítico adversarial intenta refutar cada artefacto; solo lectura por defecto, compuerta humana en crear/push/merge de PRSin escrituras sin supervisión; escala cuando no puede verificar
Corre offlineNecesita una API key y un servicio en la nubeUna vía mock determinista corre el ciclo completo y la suite de tests sin keyReproducible; un proveedor real es solo config vía pydantic-ai
Alcance del fundamentoUn revisor cableado a un solo host4 conectores reales (GitHub, Azure DevOps, Databricks, Azure) + un emulador offline, un solo ProtocolLas mismas habilidades agnósticas al cliente corren en cualquier lado

Arquitectura

adra pipeline

adra pipeline

From an opinion to a proof, a refutation, or an honest escalation

ADRA is a deterministic-first, adversarial-validation engine for the software lifecycle: it reviews diffs and PRs, runs hypothesis-driven validation experiments, proposes minimum-functional improvements, writes documentation back, and routes decisions, all on one loop. It is published on PyPI as adra (pip install adra, Python >= 3.11, Apache-2.0), and a private connection-first web console consumes the same engine live at adra.fasl-work.com.

Deterministic-first, by construction

The tools run first, not last. git and merge-base health, the exact CI command, bundle validate, a language and secret-leak scan, code discovery, and SQL warehouse probes each return a typed result that becomes two things at once: the grounding the model may not contradict, and the evidence written to an immutable provenance log. Because the deterministic floor carries the verdict, the whole loop and its tests run offline with no API key through a mock provider; connecting a real provider adds a semantic layer on top and never replaces the floor.

intake  plan  ground (deterministic tools)  generate  CRITIC
                                                 revise / accepted / escalate
                                                 artifacts + immutable run record

A critic that refutes, a judge that swaps

The critic is two passes: a deterministic hard-floor keyed on a shared typed rubric (so “what we check” never drifts between the check and the prompt), then an LLM semantic-attack pass whose job is to refute an artifact, not bless it. The LLM-as-judge scores with swap-and-average and reference anchoring, so a winner counts only when it stays the winner after the comparison order is reversed. The orchestrator is a hand-rolled, framework-free state machine, no LangChain or LangGraph.

Honest about autonomy and scope

ADRA is read-only by default: writes require an explicit external flag and a human gate, and the loop escalates to a human wherever nothing deterministic backs the verdict, exactly where a senior engineer would stop and ask. It is client-agnostic (a governance suite of conventions, ADRs, CI standards, glossary and incident cases, shipped with a complete fictional example, the Northwind Data Platform, and selectable by environment variable), and its connectors span GitHub, Azure DevOps, Databricks and Azure plus a fully offline emulator. The connector-phase security controls it will still need (dual-LLM capability split, sandboxed egress-filtered execution) are labelled planned, not claimed as done, which is why the package stays on 0.x.

Live console · Source on GitHub · Package on PyPI

Stack Tecnológico

Python pydantic-ai httpx FastAPI React SQLite pytest

En acción

Un recorrido corto por la app en vivo: la interfaz real, grabada desde el sitio desplegado.

ADRA — Agente de Revisión de Desarrollo Adversarial en acción

Capturas de la Aplicación

ADRA — Agente de Revisión de Desarrollo Adversarial
ADRA — Agente de Revisión de Desarrollo Adversarial